текущая версия (рабочая)
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user