Унифицировать ответ /api/runs и добавить статусы шагов workflow.
Введен единый JSON-контракт для success/failed с общими полями, добавлен трекинг step status (queued/running/success/failed) и output_summary, а сборка run-ответа централизована через общий helper.
This commit is contained in:
@@ -26,7 +26,6 @@ prisma_platform/
|
||||
├── api_routes.py
|
||||
├── agent_os.py
|
||||
├── agent_runner.py
|
||||
├── main.py
|
||||
├── observability.py
|
||||
├── scenario_store.py
|
||||
├── schemas.py
|
||||
@@ -87,7 +86,73 @@ curl -X POST "http://127.0.0.1:7777/api/runs" \
|
||||
}'
|
||||
```
|
||||
|
||||
Endpoint возвращает структурированный ответ со статусом `success` или `failed`.
|
||||
Endpoint возвращает единый JSON-контракт. Поля одинаковые для `success` и `failed`,
|
||||
а в неактуальных полях приходит `null`.
|
||||
|
||||
Пример успешного ответа:
|
||||
|
||||
```json
|
||||
{
|
||||
"scenario_id": "news_source_discovery_v1",
|
||||
"status": "success",
|
||||
"input": {
|
||||
"url": "https://example.com/news"
|
||||
},
|
||||
"steps": [
|
||||
{
|
||||
"node_id": "search_news_sources",
|
||||
"status": "success",
|
||||
"started_at": "2026-04-22T10:00:00+00:00",
|
||||
"finished_at": "2026-04-22T10:00:00+00:00",
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"output_summary": "По заглушечным данным самым ранним источником считается https://news-a.example/article-1",
|
||||
"workflow_name": "news_source_discovery_v1",
|
||||
"scenario_name": "News Source Discovery V1",
|
||||
"result": {
|
||||
"tool_name": "generate_summary",
|
||||
"ok": true,
|
||||
"payload": {
|
||||
"input_count": 3,
|
||||
"summary": "По заглушечным данным самым ранним источником считается https://news-a.example/article-1"
|
||||
},
|
||||
"received_at": "2026-04-22T10:00:00+00:00"
|
||||
},
|
||||
"error": null,
|
||||
"run_id": "run_xxx",
|
||||
"session_id": "session_xxx"
|
||||
}
|
||||
```
|
||||
|
||||
Пример ответа с ошибкой валидации:
|
||||
|
||||
```json
|
||||
{
|
||||
"scenario_id": "news_source_discovery_v1",
|
||||
"status": "failed",
|
||||
"input": {},
|
||||
"steps": [
|
||||
{
|
||||
"node_id": "search_news_sources",
|
||||
"status": "queued",
|
||||
"started_at": null,
|
||||
"finished_at": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"output_summary": null,
|
||||
"workflow_name": null,
|
||||
"scenario_name": "News Source Discovery V1",
|
||||
"result": null,
|
||||
"error": {
|
||||
"code": "invalid_input",
|
||||
"message": "Input does not match scenario input_schema: ..."
|
||||
},
|
||||
"run_id": null,
|
||||
"session_id": null
|
||||
}
|
||||
```
|
||||
|
||||
Проверка, что сервер поднят:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user