Files
DevFlow/todo.md
绝尘 9c3f27f4ca 修复: workspace_root 编译期常量消除+data_dir 运行期+首次授权引导
- 删除 production 中全部 env!("CARGO_MANIFEST_DIR")引用
- workspace_root() 替换为运行期 data_dir(Tauri app_data_dir)
- 相对路径锚定改为 AllowedDirs.first_persistent_dir(),无授权时引导绑定项目
- .trash 迁到 data_dir/.trash,含自动迁移
- authz_debug → temp_dir,workspace_drive → current_dir
- run_command 默认 working_dir 改为空串
- G1 目标刷新改为每次消息覆盖(含 ai_chat_edit 路径)
- #6 评分关键词拆到独立文件 scoring_keywords.rs
- #7 promote 补偿删除 purge_with_descendants → soft_delete
- #8 关联双向同步: 后端事务 sync_related_ids + IPC + 前端全链路
- 设置面板新增数据目录显示
2026-06-27 21:32:36 +08:00

5.5 KiB
Raw Blame History

DevFlow 待办

灵感模块功能完善(合并推进)

诊断发现的 P0-P2 问题合并为单次任务,逐项推进。
排除项:#3 status 无状态机(暂保留状态可跳跃迁移,不处理)。

P0 — 数据安全 / 正确性

  • #1 软删除机制ideas 表加 deleted_at 列 + 软删除(对标 tasks/projects 的 delete + restore 全套模板)。当前 delete_idea 是硬删除,误删不可恢复。
  • #2 白名单收紧settings.rs ideas 白名单移除 id / created_at,防止主键和创建时间被篡改。(对标 B-260616-16 tasks 白名单修复)
  • #4 priority 值域校验create_idea / update_idea 加 priority 校验(parse::<i32>() ∈ 0..=3,非法返 Err对标 B-260615-15 tasks priority 修复)

P1 — 架构 / 一致性

  • #5 有损转换修复record_to_idea() 不再硬编码 status=Draft / related_ids=空,从 IdeaRecord 读取真实值,评估时不丢失上下文。
  • #6 评分关键词拆文件:将 scoring.rs 硬编码关键词拆到独立 const 文件(最小改动)。启发式是过渡方案,对抗式评估上线后按需升级为 JSON 配置。不做 DB 表配置化(过度工程)。
  • #7 promote 补偿改软删除promote_idea 回写失败时的补偿删除从 purge_with_descendants(不可恢复)改为 soft_delete(软删除,可恢复)。
  • #8 关联双向同步A 关联 B 时自动在 B 的 related_ids 中补入 A解绑时同步移除保持关联关系对称。
  • #9 创建表单补 tags 输入:捕捉灵感表单增加 tags 输入(逗号分隔或 chip 组件),confirmCapture 传 tags JSON 字符串给后端。

P2 — 前端 / UX

  • #10 创建表单补全 priority/source:捕捉模态框增加 priority 下拉(低/中/高/紧急)和 source 输入框。
  • [~] #12 前端 filter 改后端查询hotscore≥80pending(多状态 OR仍保留前端 filter团队决策扩多值属过度设计keyword/order_by 已下沉后端。
  • #14 雷达图正名/替换:将 i18n key 和 CSS class 中的 "radar" 改为 "score-bar"(或引入真正的雷达图组件如 ECharts radar

AI 对话目标丢失(诊断待办)

诊断报告:docs/02-架构设计/专项设计/AI对话目标丢失诊断-2026-06-26.md 实测会话 54c8b5bd480 万 token原始目标消息被压缩出局LLM 尾部盲搜死循环。

  • [~] G1 目标钉扎 代码落地(编译过)PerConvState.pinned_goal + chat.rs 两处提取 + run_agentic_loop 入口拼 system_prompt。核心治 R1。待实测
  • [~] G2 探索熔断 代码落地(编译过)STALL_BREAKER_* 四开关 + stall_count + is_empty_tool_result(对齐 serde_json 紧凑格式)。警示 insert_at(0,system) 经核验安全(convert_request:101/117 把 system 抽顶层合并,无连续 System 1214 风险;G1 评审该论据不成立)。待实测
  • [~] G3 状态机收敛目标 文档衔接:conv_state.rs/mod.rs 注释明示 pinned_goal 内容态与 ConvState 生命周期态正交,不进 enum。
  • [~] G4 话题标记修正 代码落地(编译过)TOPIC_MARKER_GOAL_AWARE guard,pinned_goal 存在时 take 后丢弃跳过 insert。待实测
  • G5 附 bug 已排查(不改代码)dump DB 确认 seq1(thinking 独白)+seq4(tool_result 内容)均 system+早期 timestamp(旧版本遗留脏数据),非当前 compress summary 机制问题(摘要四段式正常)。最新 system(seq0 topic marker)正常。结论:历史脏数据,数据治理项(可选清 DB),非当前 bug。anthropic_compat thinking 隔离你在进行中(M)。
  • G1 目标刷新策略(openQuestion):首版 None 才写,同对话改目标保留旧目标。待观察是否需 drift 刷新。

落地开关(均可单点回退):GOAL_PIN_ENABLED/GOAL_INJECT_BANNER/GOAL_MAX_CHARS=500/STALL_BREAKER_ENABLED/STALL_BREAKER_THRESHOLD=3/STALL_BREAKER_WARN_FIRST/TOPIC_MARKER_GOAL_AWARE。全置 false 等价改动前。 方案源:设计 workflow wf_09a0385f-2ee 综合裁决(system_prompt 字符串注入 > insert_at(0))。

对抗式评估接入(引擎已实现 → IPC + 前端打通)

引擎代码已就绪(df-ideas/src/adversarial.rs + adversarial_helpers.rs 但 IPC 层和前端零引用,用户无法使用。需补接入层。

后端 — IPC 接入

  • A1 evaluate_idea 命令:新增 IPC command按 Provider 配置构造 AdversarialEngine(有 Provider → new(provider),无 → heuristic()),调 evaluate(idea) 返回 AdversarialEval
  • A2 批量评估命令evaluate_ideas_batch,遍历多个 idea 调同一 engine 实例(复用 provider 连接)。
  • A3 评估结果持久化:评估结果写回 ideasscores + evaluated_by + evaluated_at避免每次重新评估。
  • A4 类型导出AdversarialEval / EvaluatedBy / Recommendation 等类型经 IPC serde 暴露给前端(检查 df-types 是否需补充)。

前端 — 结果展示

  • B1 灵感详情页评估面板:展示正方论点 / 反方论点 / 分析师综合评分,evaluated_by 标签区分LLM / 启发式兜底 / 纯启发式)。
  • B2 评估触发按钮:灵感详情页加「深度评估」按钮,调 evaluate_idea IPCloading 状态 + 错误提示。
  • B3 评分维度可视化:可行性 / 影响力 / 紧急度三维度展示(复用现有 score-bar 或引入 radar