diff --git a/services/worker-notifier/app/models/__init__.py b/services/worker-notifier/app/models/__init__.py index bf916d4..63382d1 100644 --- a/services/worker-notifier/app/models/__init__.py +++ b/services/worker-notifier/app/models/__init__.py @@ -25,6 +25,7 @@ class Task(Base): user_id: Mapped[int] = mapped_column(ForeignKey("users.id")) type: Mapped[str] = mapped_column(String(20)) status: Mapped[str] = mapped_column(String(20)) + input_data: Mapped[dict | None] = mapped_column(JSON, nullable=True) result: Mapped[dict | None] = mapped_column(JSON, nullable=True) error: Mapped[str | None] = mapped_column(Text, nullable=True) created_at: Mapped[datetime] = mapped_column(server_default=func.now()) diff --git a/services/worker-notifier/app/tasks/notify.py b/services/worker-notifier/app/tasks/notify.py index 1d3a56d..c664426 100644 --- a/services/worker-notifier/app/tasks/notify.py +++ b/services/worker-notifier/app/tasks/notify.py @@ -68,10 +68,11 @@ def send_task_done(self, task_id: str) -> dict: def _build_summary(task) -> str: """Сформировать краткое описание результата для email.""" result = task.result or {} + input_data = task.input_data or {} if task.type == "search": count = len(result.get("sources", [])) - query = task.input_data.get("query", "") + query = input_data.get("query", "") return ( f'Найдено {count} источников по запросу "{query[:80]}".' f' Откройте результат, чтобы просмотреть список с ГОСТ-цитатами.' @@ -81,7 +82,7 @@ def _build_summary(task) -> str: similarity = result.get("overall_similarity", 0) total = result.get("total_fragments", 0) flagged = result.get("flagged_fragments", 0) - filename = task.input_data.get("filename", "") + filename = input_data.get("filename", "") color = "#dc2626" if similarity > 30 else "#d97706" if similarity > 10 else "#16a34a" label = "Высокий" if similarity > 30 else "Средний" if similarity > 10 else "Низкий"