pypi.org с этой сети отдаёт данные с таймаутами (TCP есть, пакеты почти не
качаются) → CI-сборки падали. pypi.tuna.tsinghua.edu.cn — полное зеркало,
отдаёт стабильно (celery за 13с). Прописал -i зеркало во все 5 Dockerfile.
Сборки перестанут зависеть от флоки-канала до pypi.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Три бага, найденные при аудите прода:
- 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>
- Резенд письма верификации (/auth/resend-verification), модалка на
фронте с поллингом статуса, страница /verify-email/:token
- SMTP переведён на собственный Postfix (mail.jze9mail.ru, STARTTLS,
SMTP_TLS_VERIFY) вместо Yandex-заглушки в дефолтах и .env.example
- OLLAMA_URL и модель в worker-gpu синхронизированы с новым GPU-хостом
(llama3:8b -> qwen2.5:7b, которой раньше не было на сервере)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>