2 Commits

Author SHA1 Message Date
wangdl
e89c0fbd6b fix: B1 — 无 Projector 路径调用 markSucceeded 防止 Job 卡在 running
Some checks failed
Deploy API Server / build-and-unit (push) Failing after 28s
Deploy API Server / current-integration (push) Has been skipped
Deploy API Server / backward-compat (push) Has been skipped
Deploy API Server / deploy (push) Has been skipped
projectorKey 为 undefined 或 Projector 未注册时,
ProjectionExecutor 调用 markSucceeded 后再返回空 Artifact 列表。
避免 Engine 的 AI 调用成功后 Job 永远停留在 running 状态。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-21 09:51:10 +08:00
wangdl
4cfcb7afe5 feat: M-AI-03 Result Projector 与 Artifact 原子提交框架
Some checks failed
Deploy API Server / build-and-unit (push) Failing after 29s
Deploy API Server / current-integration (push) Has been skipped
Deploy API Server / backward-compat (push) Has been skipped
Deploy API Server / deploy (push) Has been skipped
- result-projector.interface.ts: ResultProjector 接口冻结(ADR-003 §6.1)
  project(tx, context) → ArtifactReference[]
- synthetic-result-projector.ts: 测试用 Synthetic Projector
  幂等:已有 Artifact 时直接返回
- projection-executor.service.ts: ProjectionExecutor
  事务内:projector.project(tx) + markSucceeded(tx) 原子提交
  幂等检查:Job 已终态 → 跳过
  NestJS multi-provider 注入 RESULT_PROJECTORS
- ai-job-execution-engine.ts: PROJECT 阶段改为调用 ProjectionExecutor
- ai-job.module.ts: 注册 ProjectionExecutor + SyntheticResultProjector

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-21 09:49:25 +08:00