Files
mp-answer-bot/app/models/review.py
KirillandClaude Fable 5.1 4534ab2683 Добавить поддержку Яндекс Маркета (goods-feedback API)
- app/services/ym.py: клиент Partner API — getGoodsFeedbacks с пагинацией и
  фильтром по дате, updateGoodsFeedbackComment (ответ), deleteGoodsFeedbackComment
  (удаление), обработка новых отзывов по аналогии с WB/Ozon
- воркер ym_worker, включается при заданных YM_API_KEY и YM_BUSINESS_ID
- кнопки отправки/удаления ответа, платформа в сообщении и в таблице,
  статистика /stat и /allstat
- переменные YM_API_KEY, YM_BUSINESS_ID, YM_CHECK_INTERVAL, PRODUCTS_YM_SHEET_LINK
- README и .env.example

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 20:13:38 +03:00

31 lines
1.1 KiB
Python

from tortoise import Model, fields
class Review(Model):
id = fields.IntField(pk=True)
external_id = fields.TextField()
platform = fields.TextField() # "ozon", "wb" or "ym" (Яндекс Маркет)
rating = fields.IntField()
is_good = fields.BooleanField()
text = fields.TextField()
published_at = fields.DatetimeField()
product_id = fields.TextField()
product_name = fields.TextField()
product_category = fields.TextField()
product_subcategory = fields.TextField()
tone = fields.TextField(null=True) # positive, neutral, negative
tone_reason = fields.TextField(null=True)
is_critical = fields.BooleanField(null=True)
response_text = fields.TextField(null=True)
response_id = fields.TextField(null=True)
responded_at = fields.DatetimeField(null=True)
chat_id = fields.IntField(null=True)
message_id = fields.IntField(null=True)
images = fields.JSONField(null=True) # Store image URLs as JSON array
# WB: теги отзыва из API (bables), например ["цена"]
bables = fields.JSONField(null=True)