Необходимо реализовать в **services/api-service** (FastAPI + PostgreSQL + Redis) MVP чат-платформы с несколькими ассистентами по модели **REST + polling**, без WebSocket и streaming.
Система должна поддерживать:
* создание и управление диалогами (threads);
* отправку сообщений пользователем;
* асинхронную обработку сообщений через существующую инфраструктуру **jobs + Redis queue**;
* получение статуса ответа ассистента через **GET /runs/{run_id}** (polling);
* синхронизацию статуса чата с существующими jobs через **PATCH /internal/v1/jobs/{job_uid}**;
* идемпотентность сообщений, защиту от параллельных запросов и обработку зависших задач.
Архитектурно чат хранится в отдельной схеме **chat** (`threads`, `messages`, `runs`), а выполнение запросов использует существующие таблицы **jobs** и Redis-очереди по аналогии с SEO/Graph Jobs.
Основной пользовательский сценарий:
1. Клиент создаёт диалог.
2. Отправляет сообщение → создаются `message`, `run`, `job`, задача ставится в Redis.
3. Клиент опрашивает `GET /runs/{run_id}`.
4. Воркер (или тестовая эмуляция через internal PATCH) обновляет job.
5. Статус run синхронизируется, а ответ ассистента сохраняется в историю сообщений.
В рамках задачи необходимо реализовать:
* Alembic-миграции и SQLAlchemy-модели;
* репозитории и ChatService;
* REST API для threads/messages/runs;
* интеграцию с jobs и Redis;
* reconcile зависших run;
* unit и integration тесты с mock-воркером через internal PATCH.
Более подробное описание в ТЗ во вложении.
Опубликован 29.05.2026 в 11:56