跳转至

04-04~05:Topics Tab + React Flow 工作流地图

04-04:从"任务提取器"到"对话主题分析器"

Dad 的目标: 不是只提取 task,而是整理所有进行中/停滞/搁置的项目。区分"事件(一次性)"和"主题(持续跨天)"。

架构判断: 当前 Pipeline 更像 task extractor,Dad 需要的是 conversation topic analyzer。推荐模型 Project > Topic > Event/Task/Output,Topic 作为 Project 子级。

Dad 决策: 先试"方案 2" — bot 实时自报 topic。

04-04~05:Topics 功能落地

第一轮: PortalBot 多次超时,Codex CLI 补完 Topics Tab / BotDetailPage / ProjectDetailPage。API 返回 67 个 topics。

问题: 67 个 topics "都不知道是什么东西" — 大部分来自旧数据迁移,噪音多。

数据清洗: 1. 从 backup 表、tasks_backup、AP_daily_digest 重建 → 325 条 2. 清理噪音 → 301 条 3. 按 bot 分组,LLM 聚合相近事件 → 254 条 4. 进一步归并 → 108 条主题(16 个 bot)

关键经验: 主题分析不能直接迁移旧 task 数据,必须经过噪音过滤 → 历史重建 → LLM 归并 → 项目映射修正。

04-05:展示从列表到流程图

展示方式经历 5 轮迭代:

轮次 方案 Dad 反馈
1 平铺卡片 300+ 条太乱
2 三层树 Bot→Category→Topic 健康检查不应混入,仍难看
3 两列:左项目,右主题 方向对,但不够直观
4 横向展开 Category→Topic 需要连接线和折叠
5 React Flow ✅ 最终方案

选 React Flow 的理由: React 生态成熟,适合节点/边/折叠/拖拽/缩放,比手写流程图可维护。

React Flow 落地踩的坑

节点全部堆叠在一起: - 根因:getNodeSize 返回共享对象引用,dagre setNode 需要独立 { width, height } 对象 - 共享引用导致布局计算全部指向同一坐标 - 解决:每个节点传入独立尺寸对象

其他修复: - 容器高度不足 → React Flow 需要明确高度 - fitView 不生效 → 加 ReactFlowProvider + 自动 fit 逻辑 - dagre 间距过大 → 调整 nodesep,让图更紧凑 - TopicNode 冗余 summary → 去掉 - 默认筛选改为"进行中"

最终状态

流程图可渲染、可拖拽、结构 Category→Project→Topic 三层。Dad 对 Codex 产出质量不满意,后续交还 PortalBot 继续迭代。