Files

37 lines
1.5 KiB
Python

from tortoise import Model, fields
from app.config import ANALYSIS_PROMPT, ANSWER_PROMPT, GOOD_REVIEWS_THREAD_ID
from app.models import Review
class Settings(Model):
id = fields.IntField(pk=True)
is_good = fields.BooleanField(unique=True)
analysis_prompt = fields.TextField(default=ANALYSIS_PROMPT)
analysis_enabled = fields.BooleanField(default=False)
answer_prompt = fields.TextField(default=ANSWER_PROMPT)
auto_response_enabled = fields.BooleanField(default=False) # автоответ на отзывы с текстом (GPT)
auto_response_empty_enabled = fields.BooleanField(default=False) # автоответ на отзывы без текста (шаблон)
# Шаблоны ответа на отзывы без текста (редактируются из бота)
template_empty_low_rating = fields.TextField(null=True)
template_empty_high_rating = fields.TextField(null=True)
gpt_model = fields.CharField(max_length=20, default="gpt-4o-mini")
max_tokens = fields.IntField(default=100)
@classmethod
async def get_from_context(
cls, *, review: Review | None = None, message_thread_id: int | None = None
) -> "Settings":
if review is not None:
is_good = review.is_good
elif message_thread_id is not None:
is_good = message_thread_id == GOOD_REVIEWS_THREAD_ID
else:
raise ValueError("Either review or message_thread_id must be provided")
return await cls.get(is_good=is_good)