Три бага, найденные при аудите прода:
- search и documents диспатчили Celery-задачу ДО commit() — быстрый воркер
читал задачу раньше, чем транзакция закоммичена, и падал «задача не найдена»
(поиск не работал вовсе; плагиат спасала латентность скачивания из MinIO).
Теперь коммитим до диспатча.
- notify.send_task_done обращался к user.email/name и task.type ПОСЛЕ закрытия
сессии → DetachedInstanceError, письма о завершении уходили в ретраи.
Значения достаются внутри сессии.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
send_task_done падал с AttributeError: минимальная модель Task в notifier
не мапила колонку input_data (она есть в БД и в полной модели API), а
_build_summary читал task.input_data для search/plagiarism. Задача уходила
в бесконечные ретраи. Добавлен маппинг колонки + защита от NULL.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>