Skip to content

Commit 1243641

Browse files
committed
docs(versions): v0.20.11 批 6 交付记录(REQ-315 排序/置顶 + 行数豁免更新)
1 parent a790458 commit 1243641

3 files changed

Lines changed: 24 additions & 0 deletions

File tree

‎docs/product/requirements-pool.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -595,6 +595,7 @@
595595
| REQ-312 | AI 精修工作台差异化显示:行级染色(左栏 base removed 删除线红 / 右栏 refined added 新增绿,按流序对齐,未变行原样)+ 顶栏「并排/差异」单栏切换(灰/删除线红/绿 + ± 前缀);章节徽标与行统计保留;后端新增 `diff_markdown_ops` 薄命令(复用 note_diff 纯函数输出整篇有序 DiffOp 流);取数失败/空侧降级不染色不破坏渲染;采纳/重新生成/放弃与存储路径零改动;范围=会话级+笔记级+只读版本对比 | P1 | 已实施(2026-09-09 批 3:commands_notes_version diff_markdown_ops(3 例单测)+ utils/refineDiff.ts(12 例)+ RefineWorkbench 染色与视图切换(3 例),提交见 v0.20.md v0.20.8 交付记录) | v0.20 系列 | 用户 11 项问题 11;不采用 taskResult.diff 因基线含锚点草稿可能与剥离锚点展示文本错位 |
596596
| REQ-313 | 会话页交互矩阵完善:①会话行右键菜单(打开详情/重命名/复制标题/转为笔记(可转化行才显)/删除红字);②去勾选框改笔记同款**选择模式**(工具栏「选择」入口+模式 chip、单击勾选、Ctrl/⌘ 加减、Shift 区间、Esc 三级退出、列表变化自动裁剪选集——复用 utils/noteSelection 既有纯函数);③后端新增原子 `batch_delete_sessions`(单事务全删、语义与单条 delete_session 全等:子表 FK 级联 + notes.session_id SET NULL、Sessions+Notes 双域广播、空参/超 200/非法 id 报错、重复去重);④行内改名补齐(全 kind 含 web 会话,Enter/Esc/失焦,busy 防连点,改名打开中详情同步重拉);批量转笔记按钮/三态全选/可转化过滤语义不变 | P1 | 已实施(2026-09-09 批 4:commands_session_delete+单测 5 例 + SessionListPanel/SessionListRow/SessionRowContextMenu/SessionsPage,提交见 v0.20.md v0.20.9 交付记录) | v0.20 系列 | 用户 11 项问题 4;课程分组=派生视图非实体,移至组/合并/导出/归档已与用户确认排除;右键删除走单条动线、批量删除走新命令 |
597597
| REQ-314 | 复习功能独立为顶层页(用户裁决:独立顶层页——新增第 9 个 Tab「🔄 复习」):ReviewSessionOverlay 全页化(去 fixed 遮罩渲染页面主体区,front→reveal→四档评分流与后端命令不变,一轮上限 200=后端 DUE_LIST_LIMIT_MAX)+ 组过滤器(全部+各组含到期数,纯归约 utils/reviewStats)+ 到期感知=仅顶层 Tab 自身(**无被动提醒**沿用行动域裁决——组侧栏「🎴 复习 N」按钮与徽标移除、导航/侧栏不放徽标);笔记域 ⓘ「复习本组」改**跨页深链**(App 转页+组预选 focusReviewGroupId,消费即清空、同组可重复触发);空态引导文案(含 ⓘ「⚙ 生成闪卡」卡源指引,页内一键生成入口登记开放项);刷新走 active 门控切回重载(TD-004——闪卡域不在五域事件总线,ADR-018 零耦合);后端零改动(list_due_cards/count_due_cards/review_card 既有命令面全复用) | P1 | 已实施(2026-09-09 批 5:pages/ReviewPage + components/review/ReviewSessionPanel(git mv 迁移)+ App 第 9 Tab/深链 + 笔记域拆件(NotesPage 575→540 / GroupSidebar 455→418),提交见 v0.20.md v0.20.10 交付记录) | v0.20 系列 | 用户 11 项问题 6;顶层 Tab=9 收纳观察启动(spec §9,只登记不做);设计见 [2026-09-09 spec](../superpowers/specs/2026-09-09-review-page-design.md);v0.20.5 spec §9 二期预留兑现 |
598+
| REQ-315 | 笔记与笔记组排序/置顶(用户裁决:彻底方案):**组侧**——note_groups 补 `pin` 列 + 新独立表 `note_group_orders`(group_id 主键、seq=kind 分区内相对序号;FK CASCADE 随组删清理,改判换分区同事务清行)→ 命令 update_note_group_pin / note_group_order_list / note_group_order_save(分区快照先删后插,空 ids=分区回自动)/ note_group_order_clear(单组回自动)+ 组行右键菜单(置顶/取消置顶、上移、下移、回自动、打开信息——替代右键直开 ⓘ;ⓘ 按钮不变)+ 分区头「手排 ↺」徽标(有手动位才显)+ 行内 📌 置顶标记;**渲染规则(纯函数 orderBuckets,组侧栏分区/笔记树组头/过滤平铺三面共用)**=置顶区(pin=1,区内按更新时间降序)→ 手动 seq 区 → 自动区(更新时间降序),**LRU 最近使用不作用于置顶/手排组**(recency 现状不重排分区,取最小一致改法);**笔记侧**——右键菜单补显式 上移/下移(树视图 scope 内;自动组首移=以可见序快照转手排,补"必须拖一次"发现性缺口)+ 树视图/手排组内 pin 置顶区生效(gap③:此前只在平铺「固定优先」消费)+ **措辞统一「置顶」**(REQ-287 的「固定/固定优先」UI 文案全改,数据字段 pin 不变;置顶项移动禁用并提示——置顶区按更新时间定序,取消置顶后可移动) | P1 | 已实施(2026-09-09 批 6:Rust 命令族 + db 单测 10 例、排序纯函数三件套(orderBuckets/groupOrder/noteOrder)+ 20 例单测、组右键菜单与笔记移动接线,提交见 v0.20.md v0.20.11 交付记录) | v0.20 系列 | 用户 11 项问题 7;**与 REQ-287 关系**:note_orders 独立表/快照/scope 基建原样扩展至组(note_group_orders),其「固定优先」下拉语义不变(平铺置顶优先=后端排序),仅措辞统一;平铺 updated-desc 模式不置顶=模式语义(后端排序负责) |
598599

599600
## 优先级定义
600601

‎docs/standards/line-limit-exemptions.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
| app/src-tauri/src/commands_goals.rs | 525 | v0.18.0(REQ-248~250):学习目标命令域(15 命令 + inner 纯编排 + 访谈校验/埋点/宣言组装/进度收集)——命令薄壳与 inner 同域(commands_knowledge_core 先例);列表/详情/进度三视图共用 collect_signals/goal_card_metrics;v0.18.1 生命周期命令已拆至 commands_goals_lifecycle.rs | 若再增长:里程碑命令组拆至 commands_goals_milestones.rs |
6666
| app/src-tauri/src/db_goals.rs | 431 | v0.18.0(REQ-248~250):goals 三表 DDL + 实体 CRUD/绑定/结算钩子内聚;行映射与事务建目标共享 add_milestone 族;v0.18.1(REQ-255/256)毕业报告快照表与报告取数(结算快照/复习统计/成果物清单)再增 | 若再增长:毕业报告取数拆至 db_goals_graduation.rs |
6767
| app/src-tauri/src/db_migrations.rs | 492 | v0.19.0(REQ-258)kb 三表 DDL 接入后实测 492(登记值 204 为拆分当年过期快照——含全部既有 schema 建表/ensure_column 迁移,属 pre-0.19 未登记存量);schema 单点收敛保证新库/旧库迁移幂等一致 | 若再增长:kb_* 与 chat_* 表 DDL 拆至 db_migrations_kb.rs(v0.19 系列内如再增即执行) |
68+
| app/src-tauri/src/db_migrations.rs | 573 | v0.20.11 批 6(REQ-315)再增:note_groups.pin ensure_column + note_group_orders 建表(+21,实测 573——登记值 492 过期;schema 单点收敛理由同左) | 若再增长:kb_* 与 chat_* 表 DDL 拆至 db_migrations_kb.rs |
6869
| app/src-tauri/src/commands_ai_chat.rs | 317 | v0.16 对话命令域 + v0.19.1(REQ-260)检索分支薄壳(纯聊链路零改动;kb 编排已拆至 commands_ai_chat_kb.rs 267 行)——检索分流点与 run_stream 共用会话编排上下文 | 若再增长:run_stream 与纯聊发送拆至 commands_ai_chat_plain.rs |
6970
| app/src-tauri/src/commands_ai_settings.rs | 330 | AI 设置命令域(视图/密钥/授权/目标 AI) + v0.19.1 ai_set_kb_qa 最小面命令(+28)——read-modify-write 同域先例(ai_set_goal_plan)内聚 | 若再增长:kb/goal 最小面命令拆至 commands_ai_settings_extra.rs |
7071
| app/src-tauri/src/db_ai_chat.rs | 309 | AI 对话双表仓储 + v0.19.1(REQ-260)retrieval/meta_json 补列与行映射(+42)——SQL/行映射内聚(db_* 文件先例) | 若再增长:消息侧读写拆至 db_ai_chat_messages.rs |
@@ -119,6 +120,8 @@
119120
| app/src/pages/NotesPage.tsx | 571 | v0.20.10 批 5 复习剥离:review state/Overlay 宿主/onOpenReview 本地实现删除,ⓘ「复习本组」改跨页深链透传(f702d876)——登记值 575 过期,实测回落;仍处 300-600 档编排层内聚(数据/选中态/快捷键/辅助面板插槽) | 若再增长:封存过滤族拆至 useNotesSealedFilter.ts / useNotesPageEditing.ts |
120121
| app/src/components/GroupSidebar.tsx | 444 | v0.20.10 批 5 复习入口移除:「🎴 复习 N」按钮与 dueTotal 拉取下线(无被动提醒裁决,同 v0.20.5 行动先例;f702d876)——登记值 455 过期,实测回落 | 若再增长:体系引用拉取与徽标聚合拆至 useGroupSystemLinks.ts hook |
121122
| app/src/App.tsx | 439 | 根装配(页面切换/焦点跨页直达状态机/全局事件监听)+ v0.20.5 行动页 + v0.20.10 批 5 复习页 Tab/深链/保活挂载(f702d876)——登记值 363 过期,实测纠偏 | 若再增长:焦点跨页直达 state 族拆至 useFocusRouting.ts |
123+
| app/src/components/NoteListView.tsx | 591 | v0.20.11 批 6(REQ-315)排序/置顶接线:scope 内 置顶→手排→自动 排序消费(orderScopeNotes)、组头排序行装载(note_group_order_list + orderGroups)、右键上移/下移与置顶拖拽底序重写(manualBaseOf/dropNotesIntoOrder)——编排内聚持续(登记值 524 过期,实测纠偏;排序纯函数已拆 orderBuckets/groupOrder/noteOrder 配单测) | 若再增长:拖拽/移动接线拆至 useNoteOrders.ts(既有登记计划兑现) |
124+
| app/src/components/GroupSidebar.tsx | 509 | v0.20.11 批 6(REQ-315)排序/置顶接线:组行右键菜单替代直开弹层、分区 置顶→手排→自动 渲染(orderGroups)、分区头「手排 ↺」复位、置顶 📌 标记(登记值 444 过期,实测纠偏)——排序操作域已拆 useGroupOrders.ts(123 行 hook),菜单 UI 拆 GroupRowContextMenu.tsx(131 行),本文件保留编排 | 若再增长:体系引用拉取与徽标聚合拆至 useGroupSystemLinks.ts hook |
122125

123126
## 已拆分 / 登记移除记录
124127

‎docs/versions/v0.20.md‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,3 +397,23 @@
397397
**真机走查建议(登记)**:9 Tab 渲染与 nav 宽度(13px 字号);复习页打开即见到期总数与各组 chips;切组过滤→开始复习按钮范围数字变化→全量/单组两路会话(出卡顺序=到期先后);卡片回忆→答案→四档评分→下一张推进;评完末张→完成收尾→回到总览→到期数已减;ⓘ「复习本组」深链(跳复习页且该组预选;同组重复深链两次均生效);组侧栏确认无「🎴 复习」按钮、导航无到期徽标(无被动提醒回归);会话中切走再切回=会话与统计状态保活且统计重载;全零到期空态文案与生成指引;ESC 退出本轮。
398398

399399
**开放项滚动**:**顶层 Tab=9——spec §9 导航分组收纳观察启动(本批只登记不做收纳设计)**;复习页内一键生成闪卡入口(现指引到组 ⓘ「⚙ 生成闪卡」,如需页内入口需裁决组上下文形态);feed 组 chip 口径真机观察;会话中切走保活语义真机确认(与旧模态差异已登记);用户 11 项问题 7(排序置顶)、8(空组清理)、10(选中右键菜单)待后续批。
400+
401+
---
402+
403+
# v0.20.11 交付记录(批 6:笔记与笔记组排序/置顶,2026-09-09 完成)
404+
405+
> 状态:**用户 11 项问题 7 交付**(REQ-315 → 需求池已备注);范围 = 组排序/置顶(note_groups.pin + note_group_orders 分区快照 + 组行右键菜单 + 分区「手排 ↺」复位 + 📌 行标记)+ 笔记显式上移/下移(补"必须拖一次"发现性缺口)+ 树视图置顶生效(gap③)+「固定→置顶」措辞统一(REQ-287 记录在案)。
406+
> 关联:REQ-287(note_orders 独立表/快照基建原样扩展至组)· REQ-314(批 5)开放项滚动 · v0.20.10 交付记录
407+
408+
| 变更 | 内容 | 提交 |
409+
|---|---|---|
410+
| 后端排序域 | db_migrations:note_groups.pin(NOT NULL DEFAULT 0,ensure_column 幂等)+ note_group_orders(group_id 主键、FK ON DELETE CASCADE——组即排序 scope 本体,删除即消亡,无笔记式跨 scope 复用故用级联而非 purge);types.rs NoteGroup.pin(serde default);db_note_groups:GROUP_COLUMNS 列序扩展(行映射索引同步)+ create 默认 0 + override_group_route 改显式事务(kind 变更=换分区——同事务清旧分区 seq 行,边界注释);新 db_note_group_orders.rs(104 行):pin 更新(updated_at 同步刷新=置顶区按时间定序动因)/load/save(分区快照先删后插,空 ids=分区回自动)/clear(单组回自动)/verify(归属+pin=0 守卫)+ 新 commands_group_orders.rs(107 行):update_note_group_pin / note_group_order_list / note_group_order_save / note_group_order_clear(kind 白名单/2000 上限/重复拒绝/归属校验/NoteGroups 域广播);lib.rs 注册;db 层单测 10 例(空表幂等/跨 kind 隔离快照覆盖/空 ids 复位/置顶与跨 kind 拒绝/删组级联/改判清行/pin 往返) | 2c20d435 |
411+
| 排序纯函数 + 笔记侧 | 新 utils/orderBuckets.ts(82 行核心三桶:置顶区 pin=1 按时间降序 → 手动 seq → 自动按时间降序;桶内**稳定排序**=并列保持输入序零摆动;shift/drop 原语)+ groupOrder.ts(49 行组包装)+ noteOrder.ts(43 行笔记包装)+ 20 例单测;NoteListView:scope 展示序替换 applyManual(树/未分组 pin 生效、手排组内 pin 也生效)、组头排序行装载(note_group_order_list + orderGroups 同侧栏规则)、右键上移/下移(自动组首移=可见序快照转手排,置顶/边界禁用)、拖拽落点重写(底序=置顶区外子序列;落置顶行=置顶区下沿;与既有序一致跳过保存;仅置顶拖拽不造快照)、moveToGroup 追加只写未置顶成员;NoteRowContextMenu:置顶/取消置顶措辞 + ↑↓ 上移/下移(树上下文才渲染)+ 置顶移动禁用提示;下拉「固定优先→置顶优先」;NoteReadingView/NotesPage 文案统一;前端用例 +14 | 5b61400f |
412+
| 组侧 UI | 新 GroupRowContextMenu.tsx(131 行:置顶/取消置顶、上移、下移、回自动排序[仅该组有手动位时显]、打开信息——右键由直开 ⓘ 弹层改为操作菜单,ⓘ 按钮与弹层入口保留)+ 新 hooks/useGroupOrders.ts(123 行:序行装载+三操作+菜单可用性,纯函数在 utils 配单测,hook 只接线);GroupSidebar:分区行/过滤平铺改 orderGroups 渲染、分区头「手排 ↺」徽标(有手动位才显;点击=空快照整分区回自动)、右键菜单态与「打开信息」锚点合成、菜单动作经 useGroupOrders 落库(成功 onChanged 全量刷新);GroupSidebarRow 📌 置顶标记(行内最小视觉);GroupSidebar.test +7 例(菜单/置顶调用/移动快照/徽标复位/回自动/无徽标与 ESC) | a7904585 |
413+
| 测试与回归 | Rust 全量隔离 2305 通过/0 失败/6 ignored(批 6 新增 10 例;未与 vitest 并行);前端全量 vitest 666/666(630 → +36:orderBuckets 9 + groupOrder 5 + noteOrder 6 + ctx 菜单 3 + 树视图 5 + 侧栏 7 + 文案 1);tsc --noEmit 0 错误;cargo clippy 无新增告警(新文件零告警) | 2c20d435 + 5b61400f + a7904585 |
414+
415+
**偏差登记(实施备案)**:① clear 授权口径=单组(group_id);分区整体回自动经 note_group_order_save(kind, []) 空快照表达(未另开命令——快照通道显式化,两入口均有 UI:菜单「回自动排序」/分区头「手排 ↺」);② LRU「最近使用自动置顶只作用于自动区」取最小一致改法:排序函数不含 recency 浮顶(现状 recency 从不重排分区内组序——置顶/手排组天然不被顶走),「最近使用」区保持快捷层原语义;规则与取舍注释在 orderBuckets.ts 文件头;③ 置顶项(笔记与组)上移/下移=**禁用+title 提示**(授权语义退路项,代价最小且可测:置顶区按更新时间定序,取消置顶后可移动);拖拽落置顶行=置顶区下沿插入;④ 三面共用排序规则的分区边界:组侧栏=精确 kind 分区调用;树组头/过滤平铺=跨 kind 单遍调用(seq 撞值稳定回落输入序);平铺 updated-desc 模式不置顶=排序模式语义保留(后端「置顶优先」消费面不变),树=置顶恒顶;其他组列表(复习页 chips/聊天页下拉)保留各自排序口径(到期数/最近),未接入——登记观察项;⑤ 快照只写「置顶区外」成员:存量手排行中的置顶 id 在下次整表覆写时清出(置顶区由 pin 列表达);封存(#树洞)隐藏笔记不在可见集,下次快照会清其旧手动位(REQ-287 快照=可见集覆写的既有边界,登记不修,恢复可见后回自动区尾部);⑥ 桶内稳定排序(同刻/同 seq 并列保持输入序)替代 id 决胜——树/平铺输入序来自后端时间序,稳定排序零额外摆动(纯函数注释 Why);⑦ 命令广播无可达性测试基建(AppHandle 不在命令测试面——与 note_orders 先例同),广播=结构式同款(成功落库后 emit NoteGroups),语义由 db 层 10 例 + 纯函数层 20 例覆盖。
416+
417+
**真机走查建议(登记)**:组行右键菜单五项(置顶↔取消置顶、上移/下移边界与置顶禁用灰态+提示、回自动仅手动位组出现、打开信息弹层);分区头「手排 ↺」出现与一键复位(行序回时间序);LRU 与置顶共存(反复访问置顶/手排组不改变分区内位置;最近区照常显示);侧栏/树组头 📌 标记与置顶组段最前;树视图置顶区(各组内与未分组区——此前置顶仅平铺「置顶优先」生效);自动排序组内笔记右键下移→手排徽标出现且刷新后位置保持;置顶笔记右键=取消置顶+移动禁用提示;跨页刷新/重启后组置顶与手排保持;改判组类别(ⓘ)后该组落入新分区自动区(旧序位清零);全仓措辞 grep「固定」仅剩布局/窗口置顶等非笔记语义(置顶优先/取消置顶/置顶操作失败)。
418+
419+
**开放项滚动**:用户 11 项问题 8(空组清理——组删除语义批 6 未动)、10(选中右键菜单)待后续批;「其他组列表」组序消费面(复习页 chips 到期数序/聊天页下拉)真机观察是否需接排序规则;组侧栏「最近使用」区与置顶区的重复呈现密度观察。

0 commit comments

Comments
 (0)