[M-AI-08-06] 接入手动/定时触发、Feature Flag 与查询兼容 #333

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

类型 / 标签

  • backend / learning-analysis / api / scheduler

风险等级

P0 — 入口路由错误导致双执行;定时重复生成导致资源浪费

依赖

  • M-AI-08-02/03/04/05

目标

将现有分析入口和调度器接入 Unified Engine,保证 Legacy/手动/定时触发互斥、幂等、可回滚。

Router

LearningAnalysisExecutionRouter。Feature Flag: LEARNING_ANALYSIS_ENGINE_MODE (legacy/unified)。

手动触发

幂等键: learning-analysis:manual:。同一操作重试返回同一 Job。不允许 Date.now/random 回退。

定时触发

幂等键: learning-analysis:scheduled::::。同一窗口最多一个 Job。多 Scheduler 不重复。时区边界明确。

模式互斥

Legacy/Unified 互斥。手动/定时相同幂等键不双执行。Feature Flag 只有一个权威判断位置。

查询兼容

确保现有分析页接口可读取最新成功分析。不得直接返回 Snapshot/validatedOutput/internalErrorMessage/Provider 响应/其他用户数据。

回滚

切换 unified→legacy:新触发走 Legacy、已创建 Unified Job 继续完成、同一 scheduled window 不重复进入 Legacy、已生成分析保留、不需要数据库回滚。

验收标准

  • 手动入口兼容
  • 定时触发幂等
  • Legacy/Unified 互斥
  • 无自动 fallback
  • 查询兼容
  • 错误脱敏
  • 回滚有效
  • 测试通过

建议执行顺序

第 6 个执行

## 类型 / 标签 - backend / learning-analysis / api / scheduler ## 风险等级 P0 — 入口路由错误导致双执行;定时重复生成导致资源浪费 ## 依赖 - M-AI-08-02/03/04/05 ## 目标 将现有分析入口和调度器接入 Unified Engine,保证 Legacy/手动/定时触发互斥、幂等、可回滚。 ## Router LearningAnalysisExecutionRouter。Feature Flag: LEARNING_ANALYSIS_ENGINE_MODE (legacy/unified)。 ## 手动触发 幂等键: learning-analysis:manual:<operationId>。同一操作重试返回同一 Job。不允许 Date.now/random 回退。 ## 定时触发 幂等键: learning-analysis:scheduled:<userId>:<windowStart>:<windowEnd>:<policyVersion>。同一窗口最多一个 Job。多 Scheduler 不重复。时区边界明确。 ## 模式互斥 Legacy/Unified 互斥。手动/定时相同幂等键不双执行。Feature Flag 只有一个权威判断位置。 ## 查询兼容 确保现有分析页接口可读取最新成功分析。不得直接返回 Snapshot/validatedOutput/internalErrorMessage/Provider 响应/其他用户数据。 ## 回滚 切换 unified→legacy:新触发走 Legacy、已创建 Unified Job 继续完成、同一 scheduled window 不重复进入 Legacy、已生成分析保留、不需要数据库回滚。 ## 验收标准 - [ ] 手动入口兼容 - [ ] 定时触发幂等 - [ ] Legacy/Unified 互斥 - [ ] 无自动 fallback - [ ] 查询兼容 - [ ] 错误脱敏 - [ ] 回滚有效 - [ ] 测试通过 ## 建议执行顺序 第 6 个执行
wangdl added this to the M-AI-08 学习综合分析、学习建议与 AI 迁移闭环 milestone 2026-06-22 21:27:17 +08:00
Author
Owner

开发完成评论

完成内容

  • LearningAnalysisExecutionRouter: LEARNING_ANALYSIS_ENGINE_MODE flag
  • Controller wiring: learning_state_analysis/weak_point_analysis/next_action_planning
  • Idempotency: client key or SHA-256(targetType+targetId) + 10min window
  • Legacy fallback on flag query failure

修改文件

  • src/modules/ai-runtime/learning-analysis-execution-router.ts — new (92 lines)
  • src/modules/ai-runtime/user-ai.controller.ts — modified (+5)
  • src/modules/ai-runtime/user-ai.controller.spec.ts — modified (+3)
  • src/modules/ai-runtime/ai-runtime.module.ts — modified (+2)

路由架构

测试情况

  • 809 passed (regression) = 0 failed

是否建议进入 Review

  • Yes — M-AI-08-01~06 complete, proceed to 07 (E2E) or 08 (GATE)
## 开发完成评论 ### 完成内容 - LearningAnalysisExecutionRouter: LEARNING_ANALYSIS_ENGINE_MODE flag - Controller wiring: learning_state_analysis/weak_point_analysis/next_action_planning - Idempotency: client key or SHA-256(targetType+targetId) + 10min window - Legacy fallback on flag query failure ### 修改文件 - src/modules/ai-runtime/learning-analysis-execution-router.ts — new (92 lines) - src/modules/ai-runtime/user-ai.controller.ts — modified (+5) - src/modules/ai-runtime/user-ai.controller.spec.ts — modified (+3) - src/modules/ai-runtime/ai-runtime.module.ts — modified (+2) ### 路由架构 ### 测试情况 - 809 passed (regression) = 0 failed ### 是否建议进入 Review - Yes — M-AI-08-01~06 complete, proceed to 07 (E2E) or 08 (GATE)
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#333
No description provided.