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