taskgenius_taskgenius-plugin/docs/taskindexer-migration-plan.md
Quorafind 8c256a94c4 refactor(dataflow): reorganize workers and fix import paths
- Move worker managers from utils to dataflow/workers directory
- Fix all import paths to use correct relative references
- Add storage API fixes documentation
- Add TaskIndexer migration plan documentation
- Create bridge classes for MCP server integration
- Extract shared utilities to utils directory (filterUtils, projectFilter, etc.)
- Fix type issues in QueryAPI and Augmentor
- Ensure all worker imports use correct paths
- Improve separation between dataflow and legacy code

This completes the dataflow architecture reorganization to have
cleaner boundaries between the new dataflow system and legacy code.
2025-08-19 07:35:59 +08:00

3.6 KiB
Raw Blame History

TaskIndexer 迁移动计划

1. 目标

  • 将 TaskIndexer 从 src/utils/import/TaskIndexer.ts 迁移至 src/dataflow/indexer/TaskIndexer.ts
  • 统一“索引层”的所有权到 dataflow 命名空间,减少新旧架构交叉依赖。
  • 保持功能零回归、提供兼容过渡re-export并具备可快速回滚能力。

2. 现状与依赖

  • 现有引用(至少):
    • dataflow: src/dataflow/indexer/Repository.ts../../utils/import/TaskIndexer
    • legacy: src/utils/TaskManager.ts./import/TaskIndexer
  • 说明Repository 属于 dataflow却反向引用 utils 的 TaskIndexer迁移后应改为本地引用 ./TaskIndexer

3. 分阶段迁移步骤

阶段 A平滑迁移与适配兼容期

  1. 移动实现
  • src/utils/import/TaskIndexer.ts 的实现移动到 src/dataflow/indexer/TaskIndexer.ts
  • 修正文件内部的相对导入路径(若有)。
  1. 更新 dataflow 内部引用
  • 修改 src/dataflow/indexer/Repository.ts 导入:
    • import { TaskIndexer } from "./TaskIndexer";
  1. 旧路径提供 re-export保持旧架构可用
  • src/utils/import/TaskIndexer.ts 改为仅转发:
    export { TaskIndexer } from "../../dataflow/indexer/TaskIndexer";
    
  1. (可选)在 src/dataflow/index.ts 导出 TaskIndexer仅当需要对外暴露

阶段 B去耦旧架构依赖

  1. 旧 TaskManager 改用新路径
  • src/utils/TaskManager.ts 将导入改为:
    • import { TaskIndexer } from "../dataflow/indexer/TaskIndexer";(或继续依赖上一步 re-export推荐直接走 dataflow
  1. 全仓替换引用
  • 搜索引用旧路径的地方(包含相对路径与别名路径),替换为 dataflow 新路径或保留通过 re-export 过渡。
  1. 校验环依赖
  • 确认 utils → dataflow 的依赖不会引入 dataflow ↔ utils 的循环(若存在,则保持 TaskManager 通过 re-export 访问)。

阶段 C收尾与清理

  1. 文档更新
  • 更新架构文档中 TaskIndexer 所有权,归属 src/dataflow/indexer
  1. 清理 re-export下个版本周期
  • 保留 src/utils/import/TaskIndexer.ts re-export 一个版本周期后,删除该文件。
  1. 守护措施(可选)
  • src/utils/import/ 目录添加 README 或 lint 规则,禁止新增 dataflow 相关实现,仅允许过渡性 re-export。

4. 任务清单(派工用)

  • A1 移动实现并修正内部导入
  • A2 更新 Repository 导入路径
  • A3 添加 re-export 兼容层
  • B1 更新 TaskManager 导入为 dataflow 新路径
  • B2 全仓替换其他引用(如有)
  • B3 编译/类型检查 + 本地运行验证
  • C1 更新 docsdataflow-architecture 等)
  • C2 移除 re-export一个版本周期后

5. 验收标准DoD

  • 构建与类型检查通过,无循环依赖警告
  • dataflow 默认路径正常:
    • 冷启动从 Storage 快照恢复成功Repository.initialize
    • 事件广播与视图刷新正常CACHE_READY/TASK_CACHE_UPDATED
  • 旧 TaskManager 路径仍可回退使用(过渡期)
  • 全仓再无对 utils/import/TaskIndexer 的直接实现引用(仅允许 re-export 在过渡期存在)

6. 风险与回滚

  • 风险:隐性引用遗漏
    • 缓解grep 全仓 from "./import/TaskIndexer"from "../../utils/import/TaskIndexer"
  • 风险:环依赖
    • 缓解TaskManager 如引入环,则继续通过 re-export 访问;确认后再做进一步解耦。
  • 回滚:保留 re-export 不删即可回滚Repository 可临时指回旧路径)。

7. 预估工作量

  • AB0.51 天(含全仓引用更新与验证)
  • C合并后 1 个版本周期内清理0.5 天)