diff --git a/docs/architecture/m-ai-04-gate-audit.md b/docs/architecture/m-ai-04-gate-audit.md index 39bf7f6..ce58b45 100644 --- a/docs/architecture/m-ai-04-gate-audit.md +++ b/docs/architecture/m-ai-04-gate-audit.md @@ -270,20 +270,26 @@ E2E 场景 12 验证通过。 ### P1 -| ID | 问题 | 证据 | 影响 | -|----|------|------|------| -| **P1-01** | **WorkerModule 未导入 AiJobModule** | commit `4447569` 撤下了 `b952f5e` 添加的 `AiJobModule` import。当前 `worker.module.ts` 仅注入 `OutboxRepository`,无 `AiJobModule`。`AiInteractiveJobWorker` 的 `@Optional() AI_JOB_EXECUTION_ENGINE` 解析为 `undefined`,Worker 静默跳过所有 Unified Job(`:43-49`) | **Worker 不执行任何 Unified Job。Job 创建后卡在 `queued` 状态永不完成。** 测试环境/白名单验证前必须修复。 | -| **P1-02** | **Engine 执行层观测计数器未集成** | `ActiveRecallObservabilityService` 中 `incrementUnifiedExecuteSuccess/Failed/Retry`、`incrementProjectorFailed`、`logExecutionCompleted/Failed` 从未被 Engine 调用(grep 返回空) | 执行层完全盲区:无法观测 Worker 是否正常执行、成功率、平均耗时。白名单验证期间无法判断 Unified 健康状况。 | +**无。** P1-01 和 P1-02 已在 BATCH-02(`f8bd950`)修复。 ### P2 -| ID | 问题 | -|----|------| -| P2-01 | E2E `beforeAll` 中 `fail()` 未从 `@jest/globals` 导入 → `ReferenceError` | -| P2-02 | `knowledgeItemContent` 仍为空字符串(M-AI-04-01 遗留 #5) | -| P2-03 | FocusItem `knowledgeBaseId` 恒为 `unknown`(M-AI-04-01 遗留 #3) | -| P2-04 | ModelRouter preferred/fallback 相同(M-AI-04-01 遗留 #7) | -| P2-05 | ReviewCard 无 `jobId` 关联字段(表结构限制) | +| ID | 问题 | 来源 | 计划 | +|----|------|------|------| +| **P2-04** | **`@Optional()` 静默吞任务**:`AiInteractiveJobWorker` 使用 `@Optional() @Inject(AI_JOB_EXECUTION_ENGINE)` + `if (!this.engine) return`。若模块依赖再次出错,Worker 静默跳过所有 Unified Job 而非启动失败。 | BATCH-03 审查 | **生产 Unified 前移除 `@Optional()` 和静默 return**,Engine 缺失时 Worker 必须 `throw` 阻止启动 | +| **P2-05** | **Engine 硬编码 `active_recall`**:`ai-job-execution-engine.ts` 中 4 处 `if (job.jobType === 'active_recall')` 分支(EXECUTE 分派、成功观测、失败观测、Projector 观测),违反通用 Engine 不应感知具体 jobType 的原则 | BATCH-03 审查 | 重构为 Definition 生命周期 Hook 或 Job Event/Observer 模式。不阻塞 M-AI-05 | + +### P2(遗留 + 新增) + +| ID | 问题 | 阻塞 M-AI-05? | +|----|------|:---:| +| P2-01 | E2E `fail()` → `throw new Error()` 已修复 | 否 | +| P2-02 | `knowledgeItemContent` 仍为空字符串(M-AI-04-01 #5) | 否 | +| P2-03 | FocusItem `knowledgeBaseId` 恒为 `unknown`(M-AI-04-01 #3) | 否 | +| P2-04 | ModelRouter preferred/fallback 相同(M-AI-04-01 #7) | 否 | +| P2-05 | ReviewCard 无 `jobId` 关联字段(表结构限制) | 否 | +| **P2-06** | **`@Optional()` 静默吞任务** — `AiInteractiveJobWorker` 中 `if (!this.engine) return` 会在模块依赖再次出错时静默跳过 Unified Job,而非启动失败 | **生产 Unified 前移除** | +| **P2-07** | **Engine 硬编码 `active_recall`** — 通用 Engine 中 4 处 `if (job.jobType === 'active_recall')` 分支,应重构为 Definition Hook 或 Observer 模式 | 否(不阻塞 M-AI-05) | ### P3 @@ -293,8 +299,8 @@ Worker SIGKILL、多 Dispatcher 压力、性能优化、旧代码清理。**不 ## 11. 无法确认项 -1. **CI Docker MySQL/Redis 就绪状态**:本地无 infra,E2E 未真实执行。需运维确认 CI 环境。 -2. **P1-01 撤下 AiJobModule 的根因**:commit `4447569` 标注 "pre-existing M-AI-01-09 issue"。需确认是否存在模块循环依赖或其他阻塞性技术问题。 +1. **CI Docker MySQL/Redis 就绪状态**:本地无 infra,E2E 未真实执行。BATCH-03 CI run 的 `current-integration` 被 "Blocked by required conditions" 阻塞,需运维确认 prod runner 状态。 +2. **P1-01/P1-02 已修复**:BATCH-02 (`f8bd950`) 已修复 WorkerModule AiJobModule 导入和 Engine 观测集成。 3. **FeatureFlag Redis 30s 缓存在生产的表现**:灰度切换时 30s 延迟可接受,需生产确认。 ---