# R2.3 任务报告 ## 结论 已完成 PK01 Sub2API 原生 system-log 策略事件索引缺口的只读调查,完整证据见 [Issue #2027 调查结论](https://github.com/pikasTech/unidesk/issues/2027#issuecomment-4968617404)。调查以当前真实运行面 `v0.1.147` 为主证据,`v0.1.155` 仅用于源码差异参考;未修改代码、runtime、YAML、账号、proxy、调度,未发探针、未部署。 ## 根因分层 - `openai.upstream_failover_switching`、`openai.account_select_failed`、`openai.forward_failed` 是 warning/error 事件,已真实写入 v0.1.147 的 `ops_system_logs`,并可按 request ID 从原生 admin/ops API 查询。 - `account_temp_unschedulable` 在 v0.1.147 中以 INFO 发出;`OpsSystemLogSink.shouldIndex` 只接收 warning/error/fatal 等级或特定组件,因此该事件在进入 sink 队列前被过滤。 - 临时不可调度事件还缺少 `request_id`、`client_request_id`、用户、API key、分组、模型等上下文字段,即使单纯纳入索引,也不能稳定完成逐请求归因。 - v0.1.155 仍以 INFO 发出该事件,sink 等级过滤规则未改变,因此升级不能直接解决。 - 当前容器在回退 v0.1.147 时重建,容器日志只能覆盖重建后窗口;当前无 `max-size/max-file`,但容器替换后没有稳定历史保留合同,不能替代数据库索引。 ## CLI 现状与候选 - `codex-pool feedback --user ... --request-id ...` 已是近期 request-scoped 原生 system-log 的可靠入口。 - `runtime errors` 能读取 host-Docker 容器日志,但当前主要输出账号级聚合。 - `codex-pool trace` 在 PK01 host-Docker 上仍硬编码 `kubectl logs`,会产生 false not-found;应独立修复为复用 `runtime_logs()`。 - 可独立增加只读 `platform-infra sub2api ops system-logs`,封装 v0.1.147 已有 `q`、request ID、账号、时间范围和固定分页合同。 - 若要求临时不可调度稳定入库和逐请求关联,需要 Sub2API 上游源码增加策略事件 allowlist,并补齐请求上下文字段;不建议仅把 INFO 粗暴升为 WARN。 ## 裁决 PK01 可继续保持 v0.1.147。failover、账号选择失败和 forward failure 的可见性优化不需要上游源码变更;临时不可调度的稳定数据库索引和逐请求关联需要上游源码变更,但不属于本只读任务实现范围。Issue #2027 已关闭。