Files
mp-answer-bot/app/config.py
T

92 lines
6.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from datetime import timedelta, timezone
from envparse import env
env.read_envfile()
BOT_TOKEN = env.str("BOT_TOKEN", default="")
TG_PROXY = env.str("TG_PROXY", default="")
TG_CHAT_ID = env.int("TG_CHAT_ID", default=0)
GOOD_REVIEWS_THREAD_ID = env.int("GOOD_REVIEWS_THREAD_ID", default=0)
BAD_REVIEWS_THREAD_ID = env.int("BAD_REVIEWS_THREAD_ID", default=0)
# Топики для отзывов без текста (только оценка): 1–3 звезды и 4–5 звезд
EMPTY_LOW_RATING_THREAD_ID = env.int("EMPTY_LOW_RATING_THREAD_ID", default=0)
EMPTY_HIGH_RATING_THREAD_ID = env.int("EMPTY_HIGH_RATING_THREAD_ID", default=0)
NEGATIVE_RATING = env.int("NEGATIVE_RATING", default=3)
REVIEWS_SHEET_LINK = env.str("REVIEWS_SHEET_LINK", default="")
PRODUCTS_WB_SHEET_LINK = env.str("PRODUCTS_WB_SHEET_LINK", default="")
PRODUCTS_OZON_SHEET_LINK = env.str("PRODUCTS_OZON_SHEET_LINK", default="")
PRODUCTS_CACHE_TTL = env.int("PRODUCTS_CACHE_TTL", default=60 * 5)
OZON_API_KEY = env.str("OZON_API_KEY", default="")
OZON_CLIENT_ID = env.str("OZON_CLIENT_ID", default="")
WB_API_KEY = env.str("WB_API_KEY", default="")
GPTUNNEL_API_KEY = env.str("GPTUNNEL_API_KEY", default="")
OZON_BASE_URL = "https://api-seller.ozon.ru"
WB_BASE_URL = "https://feedbacks-api.wildberries.ru"
GPT_API_URL = "https://gptunnel.ru/v1/chat/completions"
OZON_CHECK_INTERVAL = env.int("OZON_CHECK_INTERVAL", default=60)
WB_CHECK_INTERVAL = env.int("WB_CHECK_INTERVAL", default=300)
ANALYSIS_PROMPT = """
Вы - представитель бренда Magic Stories и анализируете отзывы клиентов.
Классифицируйте отзыв по следующим критериям:
1. Тональность отзыва (позитивная, нейтральная, негативная).
2. Причина тональности:
- Для негативных отзывов одна из категорий: Эргонолептика, Качество, Повреждённая упаковка, Недокомплект, Маркировка, Цена, Недовес, Проблемы со здоровьем, Жалобы на ЖКТ, Инородное тело, Жалобы на эффект, Жалобы на доставку, Общее, Эффект.
- Для позитивных отзывов одна из категорий: Эргонолептика, Качество товара, Упаковка, Комплектация, Цена, Польза для здоровья, Эффективность, Доставка, Общее, Эффект.
- Для нейтральных отзывов причина не требуется.
3. Критичность
Отзыв считается критичным, если он классифицируется как любой тип из списка:
- Здоровье, Жалобы на Жкт, Недокомплект(Недовес), Поврежденная упаковка, Инородное тело, Маркировка
Ответ должен быть СТРОГО в формате JSON:
```json
{
"tone": "positive|negative|neutral",
"reason": "причина тональности из списка или пустая строка для нейтральных отзывов",
"is_critical": false // true если отзыв критичный
}
```
ОБЯЗАТЕЛЬНО используйте ТОЛЬКО указанные категории из списка. Никаких других категорий или вариантов.
""".strip()
ANSWER_PROMPT = """
Вы — профессиональный работник службы поддержки с многолетним опытом и чутким пониманием психологии человека,
официальный представитель бренда Magic Stories. Ваша задача — вежливо и профессионально отвечать на отзывы клиентов.
Ответ должен быть коротким, информативным и соответствовать тональности отзыва:
- Негативный отзыв: выразите сожаление за произошедшее, предложите решение или помощь, объясните, как можно исправить ситуацию.
- Позитивный отзыв: искренне поблагодарите за выбор бренда и положительный опыт, подтвердив, что вам важна обратная связь.
- Нейтральный отзыв: подтвердите получение обратной связи и предложите дополнительную помощь, если это нужно.
Не забывайте, что лесть перед клиентом люди хорошо считывают, поэтому избегайте чрезмерных похвал и канцеляризмов.
Опишите решение проблемы или благодарность за положительный отзыв простым и понятным языком, который будет одинаково понятен любому клиенту. Также не отправляй почту
В конец отзыва всегда добавляйте "С уважением, команда Magic Stories." с новой строки.
""".strip()
# Шаблоны автоответа на отзывы без текста (только оценка)
# 1–3 звезды — низкий рейтинг, 4–5 — высокий
TEMPLATE_EMPTY_LOW_RATING = "Спасибо за отзыв, извините"
TEMPLATE_EMPTY_HIGH_RATING = "Спасибо за отзыв, рады что вам понравилось"
DB_PATH = env.str("DB_PATH", default="db.sqlite3")
TORTOISE_ORM = {
"connections": {"default": f"sqlite://{DB_PATH}"},
"apps": {
"models": {
"models": ["app.models"],
"default_connection": "default",
},
},
}
TIMEZONE = timezone(timedelta(hours=3))