Архитектура ансамбля LLM срочно
Что нужно сделать
Определить входные/выходные контракты JSON для пайплайна НИР, ввести статусы шагов и разработать основные API-эндпоинты для управления пайплайном.
Требования
Входной контракт: PipelineInput extends OrderRequest — все поля базовой модели обязательны, включая order_type: enum { ai, verified }.
Выходной контракт: Определить PipelineOutput — результаты шагов, статус, artifacts (search_ids, hypotheses, report_path).
Статусы шагов: Ввести enum с переходами init → prepare → lit_review → pat_search → evidence → hypotheses → novelty → feasibility → gost→ final_report → done/failed.
API-эндпоинты:
POST /orders/{order_id}/pipeline/generate — запуск пайплайна для существующего заказа, возврат pipeline_id.
GET /pipeline/{id}/status — текущий статус, прогресс по шагам.
GET /pipeline/{id}/result — финальный результат при завершении.
POST /pipeline/{id}/cancel— отмена выполнения.
POST /pipeline/{id}/resume— возобновление с чекпоинта.
Модели: Создать Pydantic-модели для PipelineInput, PipelineOutput, PipelineStatusс валидацией.
Документация: Добавить примеры JSON в FastAPI docs с кодами ошибок (400/404/409).
Критерии готовности
Определены и документированы контракты PipelineInput и PipelineOutput.
PipelineActor корректно извлекает данные заказа из БД по order_id.
Статусы шагов реализованы с корректными переходами.
API-эндпоинты /orders/{order_id}/pipeline/generate работают по контракту.
Модели Pydantic валидируют входные данные.
FastAPI docs содержат примеры JSON и обработку ошибок.