[M-AI-01-03] 分离 AppModule 与 WorkerModule 的 Processor 注册 #247

Closed
opened 2026-06-19 20:06:04 +08:00 by wangdl · 1 comment
Owner

背景

当前 AiAnalysisWorker、DocumentImportWorker、NotificationWorker 在 AppModule 和 WorkerModule 中双重注册。AuditLogProcessor 在 AdminAuditLogModule 中与 Controller 共存。

目标

所有 BullMQ Processor 只在 WorkerModule 中注册。API AppModule 只保留 Queue Producer 和公开业务 Service。

处理 5 个 Processor:

  • 从 AppModule 移除 AiAnalysisWorker、DocumentImportWorker、NotificationWorker
  • AuditLogProcessor 移入 WorkerModule
  • FileCleanupProcessor 在 WorkerModule 显式注册
  • WorkerModule 添加缺失的 Module(FocusItems、EventBus、ReviewModule)

必须保持

  • Controller 路径不变
  • Queue 名称不变
  • Job payload 不变
  • Workflow 不变
  • 数据库写入不变
  • Event 名称不变

非目标

  • 不修改 Prisma
  • 不迁移 AI Job
  • 不删除旧 Worker 类
  • 不修改 Rust

风险等级:P0

依赖:#245, M-AI-01-02

建议执行顺序:3

验收标准

  • API Context:启动 AppModule 不创建任何 WorkerHost
  • Worker Context:启动 WorkerModule 所有 Processor 均被实例化
  • ReviewCardSubscriber 等必要依赖在 WorkerModule 中存在
  • Worker 进程不监听 HTTP 端口
  • npm run build 通过
  • 现有单元测试通过
## 背景 当前 AiAnalysisWorker、DocumentImportWorker、NotificationWorker 在 AppModule 和 WorkerModule 中双重注册。AuditLogProcessor 在 AdminAuditLogModule 中与 Controller 共存。 ## 目标 所有 BullMQ Processor 只在 WorkerModule 中注册。API AppModule 只保留 Queue Producer 和公开业务 Service。 处理 5 个 Processor: - 从 AppModule 移除 AiAnalysisWorker、DocumentImportWorker、NotificationWorker - AuditLogProcessor 移入 WorkerModule - FileCleanupProcessor 在 WorkerModule 显式注册 - WorkerModule 添加缺失的 Module(FocusItems、EventBus、ReviewModule) ## 必须保持 - Controller 路径不变 - Queue 名称不变 - Job payload 不变 - Workflow 不变 - 数据库写入不变 - Event 名称不变 ## 非目标 - 不修改 Prisma - 不迁移 AI Job - 不删除旧 Worker 类 - 不修改 Rust ## 风险等级:P0 ## 依赖:#245, M-AI-01-02 ## 建议执行顺序:3 ## 验收标准 - [ ] API Context:启动 AppModule 不创建任何 WorkerHost - [ ] Worker Context:启动 WorkerModule 所有 Processor 均被实例化 - [ ] ReviewCardSubscriber 等必要依赖在 WorkerModule 中存在 - [ ] Worker 进程不监听 HTTP 端口 - [ ] npm run build 通过 - [ ] 现有单元测试通过
wangdl added this to the M-AI-01 Worker 进程边界与部署收口 milestone 2026-06-19 20:06:04 +08:00
Author
Owner

开发完成评论

完成内容

  • 从 AppModule 移除 AiAnalysisWorker、DocumentImportWorker、NotificationWorker 的 import 和 provider 注册
  • WorkerModule 新增 EventBusModule、FocusItemsModule、ReviewModule(补齐 AiAnalysisWorker 所需依赖)
  • WorkerModule 新增 AuditLogProcessor、FileCleanupProcessor 注册
  • 从 AdminAuditLogModule 移除 AuditLogProcessor(含关联的 BullModule.registerQueue 清理)

修改文件

  • src/app.module.ts
  • src/worker.module.ts
  • src/modules/admin-audit-log/admin-audit-log.module.ts

代码证据

  • src/app.module.ts:82-84,193-195(已删除):3 个 Worker 的 import 和 provider — API 进程不再注册任何 @Processor()
  • src/worker.module.ts:65-67:新增 EventBusModule、FocusItemsModule、ReviewModule — 闭合 AiAnalysisWorker 的完整依赖
  • src/worker.module.ts:68-69:新增 AuditLogProcessor、FileCleanupProcessor — 5 个 Processor 全部收口到 WorkerModule
  • src/modules/admin-audit-log/admin-audit-log.module.ts:3,10,13(已删除):AuditLogProcessor 从 AdminAuditLogModule 剥离 — Controller 路径不变

测试情况

  • 已运行命令:
    • npx tsc --noEmit
    • npx jest --no-coverage
  • 结果:
    • TypeScript 编译:通过(4 个预存错误在 snapshot-builder.service.spec.ts,非本次修改引入)
    • 单元测试:265/265 全部通过,11 suites 全部通过

未完成 / 风险

  • ReviewModuleFocusItemsModule 包含 HTTP Controller,导入 WorkerModule 后 Controller 类会被实例化但不监听端口(worker.main.ts 使用 createApplicationContext)。如需彻底隔离可后续拆出 Worker-only 子模块。

是否建议进入 Review

## 开发完成评论 ### 完成内容 - 从 AppModule 移除 AiAnalysisWorker、DocumentImportWorker、NotificationWorker 的 import 和 provider 注册 - WorkerModule 新增 EventBusModule、FocusItemsModule、ReviewModule(补齐 AiAnalysisWorker 所需依赖) - WorkerModule 新增 AuditLogProcessor、FileCleanupProcessor 注册 - 从 AdminAuditLogModule 移除 AuditLogProcessor(含关联的 BullModule.registerQueue 清理) ### 修改文件 - `src/app.module.ts` - `src/worker.module.ts` - `src/modules/admin-audit-log/admin-audit-log.module.ts` ### 代码证据 - `src/app.module.ts:82-84,193-195`(已删除):3 个 Worker 的 import 和 provider — API 进程不再注册任何 @Processor() - `src/worker.module.ts:65-67`:新增 EventBusModule、FocusItemsModule、ReviewModule — 闭合 AiAnalysisWorker 的完整依赖 - `src/worker.module.ts:68-69`:新增 AuditLogProcessor、FileCleanupProcessor — 5 个 Processor 全部收口到 WorkerModule - `src/modules/admin-audit-log/admin-audit-log.module.ts:3,10,13`(已删除):AuditLogProcessor 从 AdminAuditLogModule 剥离 — Controller 路径不变 ### 测试情况 - 已运行命令: - `npx tsc --noEmit` - `npx jest --no-coverage` - 结果: - TypeScript 编译:通过(4 个预存错误在 snapshot-builder.service.spec.ts,非本次修改引入) - 单元测试:265/265 全部通过,11 suites 全部通过 ### 未完成 / 风险 - `ReviewModule` 和 `FocusItemsModule` 包含 HTTP Controller,导入 WorkerModule 后 Controller 类会被实例化但不监听端口(worker.main.ts 使用 createApplicationContext)。如需彻底隔离可后续拆出 Worker-only 子模块。 ### 是否建议进入 Review - 是
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#247
No description provided.