Document AI Inference architecture and freeze current baseline

This commit is contained in:
DCCONSTRUCTIONS
2026-09-05 10:05:01 +03:00
parent e56eb42507
commit 57f2537af3
19 changed files with 5280 additions and 53 deletions
+1 -1
View File
@@ -148,7 +148,7 @@ class LaboratorySetup:
]
if compatible and ready_result_ids:
action = "open-existing"
action_reason = "Точный запечатанный результат уже опубликован в Обсерватории."
action_reason = "Точный запечатанный результат уже опубликован в AI Inference."
elif compatible and any(
result.access == "legacy-lab" for result in self.preserved_results
):
+3 -3
View File
@@ -174,7 +174,7 @@ def build_modular_observatory_router(
try:
source = store.get_session(request.source_session_id).summary
except SessionNotFoundError as exc:
raise HTTPException(status_code=404, detail="Запись Обсерватории не найдена.") from exc
raise HTTPException(status_code=404, detail="Запись AI Inference не найдена.") from exc
if source.lab is not None:
raise HTTPException(
status_code=409,
@@ -412,7 +412,7 @@ def build_modular_observatory_router(
try:
display_name = composition_runs.rename_projection(run_id, request.display_name)
except CompositionRunError as exc:
raise HTTPException(404, "Результат AI inference не найден.") from exc
raise HTTPException(404, "Результат AI Inference не найден.") from exc
return {
"schema_version": "missioncore.observatory-ai-composition-run-projection/v1",
"run_id": run_id,
@@ -429,7 +429,7 @@ def build_modular_observatory_router(
try:
composition_runs.delete_projection(run_id)
except CompositionRunError as exc:
raise HTTPException(404, "Результат AI inference не найден.") from exc
raise HTTPException(404, "Результат AI Inference не найден.") from exc
return Response(status_code=204)
@router.get("/api/v1/observatory/ai-runs")
+22 -22
View File
@@ -456,7 +456,7 @@ def build_observatory_router(
if setup_registry is None:
raise HTTPException(
status_code=503,
detail="Каталог legacy-сетапов Обсерватории недоступен.",
detail="Каталог legacy-сетапов AI Inference недоступен.",
)
source = source_summary(source_session_id)
return setup_registry.catalog(
@@ -623,7 +623,7 @@ def build_observatory_router(
del source_session_id
raise HTTPException(
status_code=503,
detail="Каталог сетапов Обсерватории не прошёл проверку целостности.",
detail="Каталог сетапов AI Inference не прошёл проверку целостности.",
)
@router.post("/api/v1/observatory/run-preflights")
@@ -633,7 +633,7 @@ def build_observatory_router(
del request
raise HTTPException(
status_code=503,
detail="Каталог сетапов Обсерватории не прошёл проверку целостности.",
detail="Каталог сетапов AI Inference не прошёл проверку целостности.",
)
if setup_registry is not None and run_preparation_ledger is not None:
@@ -688,7 +688,7 @@ def build_observatory_router(
if not isinstance(setups, list):
raise HTTPException(
status_code=503,
detail="Каталог сетапов Обсерватории нарушил контракт.",
detail="Каталог сетапов AI Inference нарушил контракт.",
)
projected = next(
(
@@ -701,7 +701,7 @@ def build_observatory_router(
if projected is None:
raise HTTPException(
status_code=503,
detail="Каталог сетапов Обсерватории нарушил контракт.",
detail="Каталог сетапов AI Inference нарушил контракт.",
)
definition = projected.get("run_definition")
if not isinstance(definition, dict):
@@ -725,7 +725,7 @@ def build_observatory_router(
):
raise HTTPException(
status_code=503,
detail="Каталог сетапов Обсерватории нарушил контракт.",
detail="Каталог сетапов AI Inference нарушил контракт.",
)
if compatibility.get("compatible") is not True:
raise HTTPException(
@@ -743,7 +743,7 @@ def build_observatory_router(
):
raise HTTPException(
status_code=503,
detail="Dispatch-контракт Обсерватории не установлен.",
detail="Dispatch-контракт AI Inference не установлен.",
)
definition_id = definition.get("definition_id")
definition_version = definition.get("version")
@@ -759,7 +759,7 @@ def build_observatory_router(
):
raise HTTPException(
status_code=503,
detail="Каталог сетапов Обсерватории нарушил контракт.",
detail="Каталог сетапов AI Inference нарушил контракт.",
)
try:
intent = ObservatoryRunPreparationIntent(
@@ -826,7 +826,7 @@ def build_observatory_router(
del request
raise HTTPException(
status_code=503,
detail="Подготовка расчётов Обсерватории недоступна.",
detail="Подготовка расчётов AI Inference недоступна.",
)
@router.get("/api/v1/observatory/run-preparations/{preparation_id}")
@@ -840,7 +840,7 @@ def build_observatory_router(
del preparation_id
raise HTTPException(
status_code=503,
detail="Подготовка расчётов Обсерватории недоступна.",
detail="Подготовка расчётов AI Inference недоступна.",
)
if recorded_job_queue is not None and (
@@ -1022,7 +1022,7 @@ def build_observatory_router(
if not isinstance(setups, list):
raise HTTPException(
status_code=503,
detail="Каталог сетапов Обсерватории нарушил контракт.",
detail="Каталог сетапов AI Inference нарушил контракт.",
)
projected = next(
(
@@ -1035,7 +1035,7 @@ def build_observatory_router(
if projected is None:
raise HTTPException(
status_code=503,
detail="Каталог сетапов Обсерватории нарушил контракт.",
detail="Каталог сетапов AI Inference нарушил контракт.",
)
compatibility = projected.get("compatibility")
preflight = projected.get("preflight")
@@ -1043,7 +1043,7 @@ def build_observatory_router(
if not isinstance(compatibility, dict) or not isinstance(preflight, dict):
raise HTTPException(
status_code=503,
detail="Каталог сетапов Обсерватории нарушил контракт.",
detail="Каталог сетапов AI Inference нарушил контракт.",
)
if compatibility.get("compatible") is not True:
raise HTTPException(
@@ -1064,7 +1064,7 @@ def build_observatory_router(
if not isinstance(definition_sha256, str):
raise HTTPException(
status_code=503,
detail="Каталог сетапов Обсерватории нарушил контракт.",
detail="Каталог сетапов AI Inference нарушил контракт.",
)
try:
admission = recorded_binding_service.admit(
@@ -1175,7 +1175,7 @@ def build_observatory_router(
except ObservatoryRecordedQueueNotFoundError as exc:
raise HTTPException(
status_code=404,
detail="Расчёт Обсерватории не найден.",
detail="Расчёт AI Inference не найден.",
) from exc
except (ObservatoryRecordedQueueError, ValueError) as exc:
raise HTTPException(
@@ -1206,7 +1206,7 @@ def build_observatory_router(
except ObservatoryRecordedQueueNotFoundError as exc:
raise HTTPException(
status_code=404,
detail="Расчёт Обсерватории не найден.",
detail="Расчёт AI Inference не найден.",
) from exc
except (ObservatoryRecordedQueueError, ValueError) as exc:
raise HTTPException(
@@ -1305,17 +1305,17 @@ def build_observatory_router(
except SessionNotFoundError as exc:
raise HTTPException(
status_code=404,
detail="Проекция Обсерватории не найдена.",
detail="Проекция AI Inference не найдена.",
) from exc
except SessionIntegrityError as exc:
raise HTTPException(
status_code=409,
detail="Запись не является управляемой проекцией Обсерватории.",
detail="Запись не является управляемой проекцией AI Inference.",
) from exc
except ValueError as exc:
raise HTTPException(
status_code=422,
detail="Некорректные параметры проекции Обсерватории.",
detail="Некорректные параметры проекции AI Inference.",
) from exc
return ObservatoryProjectionDocument(
schema_version=OBSERVATORY_PROJECTION_SCHEMA,
@@ -1333,17 +1333,17 @@ def build_observatory_router(
except SessionNotFoundError as exc:
raise HTTPException(
status_code=404,
detail="Проекция Обсерватории не найдена.",
detail="Проекция AI Inference не найдена.",
) from exc
except SessionIntegrityError as exc:
raise HTTPException(
status_code=409,
detail="Запись не является управляемой проекцией Обсерватории.",
detail="Запись не является управляемой проекцией AI Inference.",
) from exc
except ValueError as exc:
raise HTTPException(
status_code=422,
detail="Некорректный идентификатор проекции Обсерватории.",
detail="Некорректный идентификатор проекции AI Inference.",
) from exc
return Response(status_code=204)