57 lines
1.6 KiB
Markdown
57 lines
1.6 KiB
Markdown
# ops_doctor_decision_contract
|
||
|
||
## Purpose
|
||
|
||
冻结 `doctor-decision` 主决策 contract,让页面、CLI、Codex 都消费同一份“当前先看哪一面、先执行什么动作、为什么”的正式结论。
|
||
|
||
## Producer
|
||
|
||
- backend service `app.services.ops_service.get_ops_doctor_decision`
|
||
- API `GET /api/v1/ops/doctor-decision`
|
||
|
||
## Primary Consumers
|
||
|
||
- `domain-web` Ops Center 顶部总检入口与主决策详情面板
|
||
- `domain-api/deploy/multi-region/drive_ops_center.sh doctor-decision`
|
||
- 海外 Codex 驾驶员 / 自动驾驶策略层
|
||
|
||
## Required Payload
|
||
|
||
- `status`
|
||
- `status_label`
|
||
- `headline`
|
||
- `detail`
|
||
- `decision`
|
||
- `summary`
|
||
- `recommended_commands`
|
||
- `contract_navigation`
|
||
|
||
## Decision Shape
|
||
|
||
- `decision.status`
|
||
- `decision.reason_code`
|
||
- `decision.headline`
|
||
- `decision.detail`
|
||
- `decision.preferred_surface`
|
||
- `decision.next_action_code`
|
||
- `decision.recommended_commands`
|
||
|
||
## Summary Shape
|
||
|
||
- `summary.required_failures`
|
||
- `summary.optional_unavailable`
|
||
- `summary.scene_log_reports_total`
|
||
- `summary.scene_log_reports_ok`
|
||
- `summary.scene_log_status_counts`
|
||
- `summary.scene_log_problem_node_codes`
|
||
- `summary.contract_surface_gaps`
|
||
- `summary.launchpad_recommended_target_node_code`
|
||
- `summary.launchpad_recommended_recovery_label`
|
||
- `summary.launchpad_recommended_recovery_summary`
|
||
|
||
## Notes
|
||
|
||
- 优先读取最新 `go-live bundle` 中的 `doctor_decision` 产物。
|
||
- 如果 bundle 尚未导出,后端必须回落到 live `stack-diagnosis + go-live-summary` 兜底,而不是直接返回空。
|
||
- `preferred_surface` 必须稳定可消费,不能把面板跳转逻辑继续留给前端猜测。
|