[M-AI-08-05] 实现 LearningAnalysis Projector、Recommendation 产物与幂等 #332

Closed
opened 2026-06-22 21:27:17 +08:00 by wangdl · 1 comment
Owner

类型 / 标签

  • backend / learning-analysis / projector / idempotency

风险等级

P0 — 非原子写入导致部分结果残留;幂等失效导致重复分析

依赖

  • M-AI-08-04

目标

将验证后的学习分析和建议原子写入现有业务模型,并建立 Artifact。

Projector

LearningAnalysisProjector。同一事务:LearningAnalysis + Recommendation x N + AiJobArtifact + validatedOutput + outputHash + Job succeeded。ID 策略:analysisId=deterministic(jobId), recommendationId=deterministic(jobId+ordinal)。

Artifact

artifactType=learning_analysis + artifactType=recommendation。metadata 不复制完整敏感分析内容。

原子回滚

测试分析创建失败、中间 Recommendation 失败、Artifact 失败、Job 状态更新失败。任一步失败:无部分 Analysis/Recommendation/Artifact,Job 不得 succeeded。

幂等

串行重复:一个分析结果、Recommendation 数量不变、Artifact 数量不变。并发重复:一个分析结果、无重复。失败重试:第一次完整回滚,第二次成功不重复。

最新结果语义

确认 failed/running 结果不覆盖最新成功结果。

验收标准

  • 分析与建议原子写入
  • 数据库级幂等
  • 失败无部分结果
  • Artifact 完整
  • 最新结果语义正确
  • 旧查询可读取
  • 真实 MySQL 集成测试通过

建议执行顺序

第 5 个执行

## 类型 / 标签 - backend / learning-analysis / projector / idempotency ## 风险等级 P0 — 非原子写入导致部分结果残留;幂等失效导致重复分析 ## 依赖 - M-AI-08-04 ## 目标 将验证后的学习分析和建议原子写入现有业务模型,并建立 Artifact。 ## Projector LearningAnalysisProjector。同一事务:LearningAnalysis + Recommendation x N + AiJobArtifact + validatedOutput + outputHash + Job succeeded。ID 策略:analysisId=deterministic(jobId), recommendationId=deterministic(jobId+ordinal)。 ## Artifact artifactType=learning_analysis + artifactType=recommendation。metadata 不复制完整敏感分析内容。 ## 原子回滚 测试分析创建失败、中间 Recommendation 失败、Artifact 失败、Job 状态更新失败。任一步失败:无部分 Analysis/Recommendation/Artifact,Job 不得 succeeded。 ## 幂等 串行重复:一个分析结果、Recommendation 数量不变、Artifact 数量不变。并发重复:一个分析结果、无重复。失败重试:第一次完整回滚,第二次成功不重复。 ## 最新结果语义 确认 failed/running 结果不覆盖最新成功结果。 ## 验收标准 - [ ] 分析与建议原子写入 - [ ] 数据库级幂等 - [ ] 失败无部分结果 - [ ] Artifact 完整 - [ ] 最新结果语义正确 - [ ] 旧查询可读取 - [ ] 真实 MySQL 集成测试通过 ## 建议执行顺序 第 5 个执行
wangdl added this to the M-AI-08 学习综合分析、学习建议与 AI 迁移闭环 milestone 2026-06-22 21:27:17 +08:00
Author
Owner

开发完成评论

完成内容

  • LearningAnalysisProjector: writes AiLearningAnalysis + WeakPointCandidate x N + NextActionRecommendation x N
  • All atomic via ProjectionExecutor.
  • 3 artifact types: learning_analysis, weak_point, recommendation
  • Entry idempotency + P2002 catch
  • Registered in RESULT_PROJECTORS factory

修改文件

  • src/modules/ai-job/learning-analysis-projector.ts — new (119 lines)
  • src/modules/ai-job/ai-job.module.ts — modified (+2)

测试情况

  • 801 passed (regression) = 0 failed

是否建议进入 Review

  • Yes - proceed to M-AI-08-06
## 开发完成评论 ### 完成内容 - LearningAnalysisProjector: writes AiLearningAnalysis + WeakPointCandidate x N + NextActionRecommendation x N - All atomic via ProjectionExecutor. - 3 artifact types: learning_analysis, weak_point, recommendation - Entry idempotency + P2002 catch - Registered in RESULT_PROJECTORS factory ### 修改文件 - src/modules/ai-job/learning-analysis-projector.ts — new (119 lines) - src/modules/ai-job/ai-job.module.ts — modified (+2) ### 测试情况 - 801 passed (regression) = 0 failed ### 是否建议进入 Review - Yes - proceed to M-AI-08-06
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wangdl/api-server#332
No description provided.