|
1 | 1 | # v0.13 大目标版本系列:知识体系层(方案 B) |
2 | 2 |
|
3 | | -> 状态:**v0.13.0 已交付;v0.13.1 代码已交付(2026-08-23,M1-M3,真机验收待执行);v0.13.2~4 已立项(仅系列规划与 REQ 登记,设计规格未写、开发未启动);v0.13.5 已立项(规划);v0.13.6 已交付(2026-08-23,全量 M1-M5,设计规格 + 代码;真机验收待执行);v0.13.7 代码已交付(2026-08-24,上手路径:入口补全 + 具象化,设计规格已批准;真机验收待执行);v0.13.8 已立项(2026-08-24,画布可视化:React Flow 节点式无限画布,设计规格已批准)**;发布门控:REQ-146 真机验收(组级学习循环通过) |
| 3 | +> 状态:**v0.13.0 已交付;v0.13.1 代码已交付(2026-08-23,M1-M3,真机验收待执行);v0.13.2~4 已立项(仅系列规划与 REQ 登记,设计规格未写、开发未启动);v0.13.5 已立项(规划);v0.13.6 已交付(2026-08-23,全量 M1-M5,设计规格 + 代码;真机验收待执行);v0.13.7 代码已交付(2026-08-24,上手路径:入口补全 + 具象化,设计规格已批准;真机验收待执行);v0.13.8 代码已交付(2026-08-24,画布可视化:React Flow 节点式无限画布,设计规格已批准;真机验收待执行)**;发布门控:REQ-146 真机验收(组级学习循环通过) |
4 | 4 | > 依据:[整合分析·方案 B](../Foresight/personal-knowledge-system-layer-integration.md)(已裁决:B 模块新增型+全局/领域双层+保持定位局部修订理念)· |
5 | 5 | > [竞品调研](../Foresight/competitive-analysis-knowledge-system-layer.md)(零竞品带=应用/决策层)· [品类深化调研](../Foresight/competitive-analysis-knowledge-system-software.md) · |
6 | 6 | > [指南原文](../Foresight/source-personal-knowledge-system-guide-v2.md)(源文档)· |
|
23 | 23 | | **v0.13.5**(立项 2026-08-23) | 书籍笔记组+知识树附加(方案 C) | `books` 元数据壳(group_id UNIQUE——一本书=一个组;不存书内容)+`note_groups.kind='book'`+书籍组卡片(书名/作者/状态/评分)+体会模板(含"应用"字段)+体会→应用记录/升卡接线(复用)+知识树节点/概念"附加书籍"区(link 复用,树侧零 schema)+阅读状态生命周期与 `book_stale` 审计联动;REQ-213~218;[规划 §](#v0135-规划书籍笔记组与知识树附加方案-c2026-08-23-立项) | |
24 | 24 | | **v0.13.6**(✅ 已交付 2026-08-23,全量 M1-M5;[设计规格](../archive/2026-08-24/2026-08-23-v0.13.6-video-profile-classification-refinement-design.md)([ ] 已归档)) | 视频档案分类细化+修复批 | 形态 7→10(新增会议/直播/影视——挂既有模板)+领域两层(粗 15→20:美食/摄影视频/历史人文/写作阅读/数码硬件;细目 curated 84 项多选 chips)+检测链升级(平台分区映射表+词表扩展+细目种子 hotwords 细分+领域记忆)+修复批(add_knowledge_node 契约 type→nodeType;笔记编辑完成即时刷新);REQ-219~223;用户裁决"是 全量" | |
25 | 25 | | **v0.13.7**(✅ 代码已交付 2026-08-24,真机验收待执行;[设计规格](../archive/2026-08-24/2026-08-24-v0.13.7-knowledge-system-onboarding-design.md)([ ] 已归档)) | 体系上手路径 | **入口补全三触点**:组行体系徽标(GroupSidebar + SystemBadge)/ 笔记详情「挂到体系」(NoteLinkToSystem,修复手工输 id 断点)/ 结算体系简报(RouteInfoPopover 两行只读提示);**具象化**:摄影示例体系(knowledgeSample 浏览 + 一键复制,全局前置检查)/ 向导内嵌「例如」参照行;纪律裁决:示例≠预填(假燃料纪律局部修订);全部前端零新命令;M1→M3 | |
26 | | -| **v0.13.8**(📋 已立项 2026-08-24;[设计规格](../superpowers/specs/2026-08-24-v0.13.8-knowledge-canvas-design.md)([ ] 已批准)) | 画布可视化 | **React Flow 节点式无限画布**(@xyflow/react):问题/概念/模型三类自定义节点 + 父子连线 + MiniMap/Controls;辐射布局初始位置(BFS 算法,用户拖拽后不再自动排布);canvas_x/y 两列 + knowledge_canvas_states 表;3 条新命令(update_node_canvas_position/batch_initialize_canvas_positions/save_canvas_viewport);树视图↔画布浮钮切换;REQ-029 力导向图仍 P3 维持(画布=手动画布非自动图);M1→M3 |
| 26 | +| **v0.13.8**(✅ 代码已交付 2026-08-24,真机验收待执行;[设计规格](../superpowers/specs/2026-08-24-v0.13.8-knowledge-canvas-design.md)([ ] 已批准)) | 画布可视化 | **React Flow 节点式无限画布**(@xyflow/react):问题/概念/模型三类自定义节点 + 父子连线 + MiniMap/Controls;辐射布局初始位置(BFS 算法,用户拖拽后不再自动排布);canvas_x/y 两列 + knowledge_canvas_states 表;4 条新命令(update_node_canvas_position/batch_initialize_canvas_positions/save_canvas_viewport/**get_canvas_viewport**——规格列 3 条但视口恢复需读路径,复盘补第 4 条闭环,见交付记录);树视图↔画布浮钮切换;REQ-029 力导向图仍 P3 维持(画布=手动画布非自动图);M1→M3 |
27 | 27 |
|
28 | 28 | ## 关键决策与纪律 |
29 | 29 |
|
@@ -141,3 +141,35 @@ CREATE TABLE IF NOT EXISTS books ( -- 元数据壳,不存内容 |
141 | 141 | ## 四、需求登记 |
142 | 142 |
|
143 | 143 | REQ-213 books 表+note_groups.kind='book' 扩展 · REQ-214 书籍组 CRUD 命令+组卡片(元数据/状态徽标)· REQ-215 知识树"附加书籍"(节点/概念面板+挂接)· REQ-216 体会模板(应用字段)+应用记录接线 · REQ-217 阅读状态生命周期+`book_stale` 审计联动 · REQ-218 体会升卡与复习(复用接线+书组徽标) |
| 144 | + |
| 145 | +--- |
| 146 | + |
| 147 | +# v0.13.8 交付记录(2026-08-24) |
| 148 | + |
| 149 | +> 交付范围=设计规格全部 M1→M3(画布可视化);详细测试口径见根目录 [CHANGELOG](../../CHANGELOG.md)。 |
| 150 | +
|
| 151 | +## 一、与规格的差异登记(实现裁决) |
| 152 | + |
| 153 | +| 差异 | 内容 | 理由 | |
| 154 | +|------|------|------| |
| 155 | +| 命令数 3 → 4 | 增补 `get_canvas_viewport`(只读) | 规格 §4.5 要求"切回画布时视口恢复",§4.6 只列 save——恢复需要读路径,无读命令则 `knowledge_canvas_states` 无法生效(写死数据)。第 4 条为规格遗漏的闭环补全,非新需求 | |
| 156 | +| 概念/模型位置不持久 | 仅 knowledge_nodes 有 canvas_x/y;概念/模型每次打开按辐射布局重排并置 `draggable:false` | 规格 DB 变更只给 nodes 两列(§4.6);浮动参照无存储列,拖了不持久——禁拖防"拖了没反应"困惑 | |
| 157 | +| 核心问题虚拟节点 | coreQuestion 存在时圆心渲染不可拖/不可选的核心卡(非 DB 实体) | 规格 §4.4 步骤 2 允许"coreQuestion 虚拟节点在圆心";渲染侧实现,不落库(零破坏) | |
| 158 | +| 自动排列按钮语义 | 触发全量重算 + 批量覆盖 + fitView | 规格 §4.4 明确"用户想重置布局可点自动排列(覆盖已存位置)" | |
| 159 | +| 缩放分级边界 | >0.7 全文 / 0.4~0.7 仅标题 / <0.4 缩略卡 | 规格 §七(React Flow zoom 量纲 1=100%) | |
| 160 | + |
| 161 | +## 二、交付清单 |
| 162 | + |
| 163 | +- **M1 数据层**:db_migrations 幂等——knowledge_nodes 补 `canvas_x/canvas_y`(新库建表内联 + 旧库 ensure_column,零破坏 §二.3)+ 新表 `knowledge_canvas_states`(system_id 1:1,upsert 覆盖);`db_knowledge_canvas.rs`(单写/批量事务写入/视口读写)+ `types.rs` 扩 `KnowledgeNode.canvas_x/y`(serde default 兼容旧 JSON) |
| 164 | +- **M1 命令层**:`commands_knowledge_canvas.rs` 4 命令——坐标有限值(拒 NaN/Infinity)、zoom (0,10]、batch 全量预校验(体系归属/重复/缺失→原子拒绝,零部分写入) |
| 165 | +- **M2 纯函数(TDD,8 golden)**:`layoutRadial`(BFS 辐射:核心问题虚拟圆心/首根圆心;ring1=220px 每环+200px;环≥2 父角度扇区 spread=60°/(子数+1);碰撞沿角度+50px 最多 2 次后下一环;孤儿/概念/模型 golden angle 确定性兜底——零随机零 React 可复现) |
| 166 | +- **M2 前端**:`canvasElements`(实体→RF 元素纯转换:q/c/m 前缀 key、parent_id→smoothstep 边、links→概念/模型徽标+引用计数);三自定义节点(缩放分级 §七);`KnowledgeCanvasView`(ReactFlow+MiniMap+Controls+工具栏;拖拽防抖保存/视口防抖保存/切回 setViewport 恢复/未存 fitView 兜底/首次缺位批量初始化);KnowledgePage「🗺 画布」标签 + 树视图「🎨 画布」浮钮双入口(§4.5)——树常驻 display 切换(折叠展开保持),画布激活才挂载(首次切换语义精确;视口恢复走持久化) |
| 167 | +- **不做**(§九 全守):画布新建/编辑节点、手动连线、节点颜色自定义、导出图片、框选批量移动、移动端、AI 建议布局、力导向图(REQ-029 P3 维持) |
| 168 | + |
| 169 | +## 三、验证 |
| 170 | + |
| 171 | +- `cargo test --test app_lib_tests knowledge`:**151/151 全绿**(本版新增 11:命令 8 + 数据层 3) |
| 172 | +- 全量 `cargo test --test app_lib_tests`:1721 passed / **3 failed(预存基线**:ai_client 默认 Provider 断言旧 SiliconFlow、note_filter 两条黄金用例——v0.12.4/v0.13.1 已登记,与本版无关)/ 6 ignored |
| 173 | +- clippy:本版新增文件零警告(预存警告 3 条与本版无关) |
| 174 | +- `tsc --noEmit` 零错误;vitest **34 文件 188 用例全绿**(新增 layoutRadial 8 / canvasElements 7 / CanvasNodes 6 / KnowledgeCanvasView 9 / KnowledgePage 画布入口 2);vite build 通过 |
| 175 | +- 真机走查(REQ-146 批):创建体系 → 点「画布」→ 辐射布局出现 → 拖拽节点 → 切树/切回视口恢复 → 自动排列 全链路待执行 |
0 commit comments