|
62 | 62 | | app/src/components/GoalDetail.tsx | 427 | 一致性契约——进度信号每次现算(get_goal_progress),动作后局部刷新;毕业仪式/回顾流属 M2(按钮留壳禁用不误导)。(自动摘取,待细化) | 若再增长:按职责拆分 | |
63 | 63 | | app/src-tauri/src/db_note_groups_tests.rs | 426 | v0.11.0 组数据层测试域 + v0.14.1 删除/影响面用例(级联归零/悬空清理/迁移回归)——单模块 #[path] 挂载(video_profile_tests.rs 同款先例),组删除语义变更集中验证 | 若再增长:删除/影响面组拆至 db_note_groups_delete_tests.rs | |
64 | 64 | | app/src-tauri/src/analysis.rs | 423 | v0.5.0 M2 起结构化分析编排域(章节/重点/术语/讲者 + 事件消费 + step_boundaries/practice_segments/player_actions 三字段 + 审查修复按类型判定);各机制输出聚合内聚于单一分析函数 | 若再增长:build_chapter_signals 事件版拆至 analysis_signals.rs | |
65 | | -| app/src-tauri/src/app_setup.rs | 420 | 本模块承载 setup 的 AppState 初始化(数据目录/DB/引擎池/可校准配置/内存态存储)与装配期辅助函数(模型路径构造/捆绑同步/ORT运行时目录注入)——lib.rs 只保留声明与 command 注册,职责单一。(自动摘取,待细化) | 若再增长:按职责拆分 | |
| 65 | +| app/src-tauri/src/app_setup.rs | 419 | 本模块承载 setup 的 AppState 初始化(数据目录/DB/引擎池/可校准配置/内存态存储)与装配期辅助函数(模型路径构造/捆绑同步/ORT运行时目录注入)——lib.rs 只保留声明与 command 注册,职责单一。(自动摘取,待细化)2026-09-13 批 8 T25:移除遗留凭据槽 "default" 的启动迁移读路径(−1 行) | 若再增长:按职责拆分 | |
66 | 66 | | app/src-tauri/src/bin/asr_eval.rs | 418 | 目的——"无人工语料也能测 ASR"(2026-09-03 用户裁决①):批量样本(wav + 同名 .srt 外挂字幕 = 参考信道 L1 ~100% 无损)→ SenseVoice 离线转写(预处理开/关两路,A/B)→ CER + 混淆画像→ 汇总/A/B 对比/画像 top-N → 相对基线回归门(退出码契约)。(自动摘取,待细化) | 若再增长:按职责拆分 | |
67 | 67 | | app/src-tauri/src/vocab.rs | 416 | 词表域(存储/纠错/候选提取/n-gram 分词)内聚;分词纯逻辑与存储同域便于单测 | 若再增长:collect_tokens/split_runs 拆至 vocab_tokens.rs | |
68 | 68 | | app/src-tauri/src/ui_junk.rs | 415 | UI 噪声过滤域(水印/字幕条/角标检测规则 + 窗口过滤启发式)内聚于同一判定管线,规则共享窗口几何上下文 | 若再增长:窗口过滤拆至 ui_junk_window.rs | |
|
120 | 120 | | app/src-tauri/src/engine_worker.rs | 321 | 拆分动机(三维复审 #9 + 豁免登记计划):engine.rs 在接入超时排空机制(三维复审 #5)后逼近 600 行硬拆线,按 line-limit-exemptions登记的拆分计划把 worker 循环与请求处理拆至本文件——engine.rs 保留 EnginePool 句柄与同步 API。(自动摘取,待细化) | 若再增长:按职责拆分 | |
121 | 121 | | app/src-tauri/src/commands_ai_settings.rs | 318 | AI 设置命令域(视图/密钥/授权/目标 AI) + v0.19.1 ai_set_kb_qa 最小面命令(+28)——read-modify-write 同域先例(ai_set_goal_plan)内聚 | 若再增长:kb/goal 最小面命令拆至 commands_ai_settings_extra.rs | |
122 | 122 | | app/src/components/AiConversationDock.tsx | 318 | 全局 AI 对话面板(REQ-274)+ 批 1 终态事件刷新接线——2026-09-09 审查纠偏实测登记(此前漏登),300-600 档 | 若再增长:会话列表段拆至 DockSessionList.tsx | |
123 | | -| app/src-tauri/src/commands_ai_providers.rs | 317 | v0.11.6 M1:Provider 管理命令域(8 命令 + 视图映射 + 密钥解析口 resolve_default_provider_key/default_provider_ready)内聚于命令层;2026-09-11 探活改 chat_plain。`resolve_input`/`to_view` 与命令同域便于契约一致 | 若再增长:默认 Provider 解析与就绪门禁拆至 ai_provider_resolve.rs | |
| 123 | +| app/src-tauri/src/commands_ai_providers.rs | 343 | v0.11.6 M1:Provider 管理命令域(8 命令 + 视图映射 + 密钥解析口 resolve_default_provider_key/default_provider_ready)内聚于命令层;2026-09-11 探活改 chat_plain。`resolve_input`/`to_view` 与命令同域便于契约一致。2026-09-13 批 8 T25:移除遗留凭据槽 "default" 回落读路径 + 解析内核 resolve_default_key 抽出以便单测(+26 行) | 若再增长:默认 Provider 解析与就绪门禁拆至 ai_provider_resolve.rs | |
124 | 124 | | app/src/components/LiveProfileStrip.tsx | 316 | 采集时右栏由 LiveActivityPanel 独占、档案卡(ProfileDetector)被隐藏——但 M2(REQ-189)引入"会话中画面档每 2-3 分钟自动重评"后档位成为采集中动态信息,且降档需用户裁决。本组件在采集态常显档案摘要(形态×画面档×领域),并接线 live:tier-changed /live:tier-downgrade-request → confirm_tier_downgrade,补齐 M2 前端断链(此前降档请求无人应答,降档永不生效)。(自动摘取,待细化) | 若再增长:按职责拆分 | |
125 | 125 | | app/src/components/SessionListPanel.test.tsx | 316 | 覆盖批 4 选择/批量交互矩阵——选择模式进出(按钮+Esc)、单击勾选、Ctrl 加/减、Shift 区间、折叠组全选不含隐藏行(P3-1 修复:全选口径=可见行序 visibleOrder 而非 filtered)、列表变化自动裁剪选集、批量删除 pending 防连点与成功清选集(P3-2)、批量转eligible 过滤。invoke 全 mock;数据为本地 props 零后端往返(面板数据驱动经 props——父层 invoke 不在本组件)。(自动摘取,待细化) | 若再增长:按职责拆分 | |
126 | 126 | | app/src-tauri/src/ffmpeg.rs | 313 | ffmpeg 是文件导入(音轨/关键帧)与内嵌字幕(L2)的唯一外部依赖。(自动摘取,待细化) | 若再增长:按职责拆分 | |
|
242 | 242 | > - **裁定**:**接受「内容正确、提交边界错位」+ 强制登记,不重写历史**(§C16.2;批 5 已有同款先例被接受并逐字登记)。amend / force-push 被批纪律禁止,且其后已有 4 个提交依赖此历史 ⇒ 重写是净损失。 |
243 | 243 | > - 🔴 **顺带的机制结论(本批在提交机制上的两次实质改进,写进本节以备后来者)**:① 共享文件改用 **blob 构造 + `update-index --cacheinfo`**(`git show HEAD:<path>` 取 **LF 规范版本** → 只改自己那几行 → `hash-object -w` → 挂索引 → 提交,**不用 `--only`**);② 真实索引里已有别人暂存内容时改用**私有索引**(`GIT_INDEX_FILE` + `read-tree <HEAD>` + `add -- 只自己的路径` + `write-tree` + `commit-tree -p $(git rev-parse HEAD)` + `update-ref` **带旧值守卫**)—— **比 `--only` 安全**(不碰真实索引、不碰工作树)。**自证要看 `git diff HEAD -- <shared path>`**(`git diff --cached` 防不住 `--only`);**提交前先看 `git status --porcelain` 的「首列」**(出现 `M `/`A ` 且不是你的路径 ⇒ 索引里有别人的东西 ⇒ **必须**改用私有索引,否则 `git commit` 一定连带落库);**私有索引提交后必须 `git add -- <你的路径>` 重新对齐真实索引**,否则下一个人一裸提交就**回退**你的提交(§C41.2 连带回退 / §C54.2)。 |
244 | 244 | > - 🔴 **门禁盲区一例(§C51.7①)**:`app/src-tauri/src/commands_video.rs` 的**末尾换行被吞**(T21 实测 `s.endsWith("\n") === false`,`countLines()` = **356**)而 **`countLines()` 不变** ⇒ **本表与 `line-limits --full` 都看不见**。机理 = `countLines()` 的定义(`s.split("\n").length - (s.endsWith("\n") ? 1 : 0)`)**对「有无末尾换行」不敏感** —— 这是**口径的性质**,不是缺陷;但 🔴 **任何「逐字节一致」的纯搬迁 / 拆件声明都不许只靠行数**(批 7 的判据已升级为 **`Buffer.equals` 逐字节对拍 + `digest` / `sha256`**,§C26.4 / §C29)。**登记为技术债**(批 8 可考虑加一条「末尾换行 / EOF 形态」的机器判据)。 |
245 | | -> - 🔴 **散文对拍探针 = 批 8 的候选闸(§C11.8 ③)**:`scripts/check-exemption-prose.mjs`(批 7 T11 新建,**112 行**;口径 = `countLines()` 同源实现)把**本表的散文数字与 `check-command-registry.mjs` 的门禁读数对拍**(如「散文『311 条』== 门禁『定义 311』」;两态都成立、中途未同步期为**真阳性** `EXIT=1`)。🔴 **已入库,但不入八闸 / CI / husky**(理由:八闸的集合是批 8 治理收口的对账基线,本批扩闸会让逐字对账漂移;散文数字天然易漂 ⇒ 硬门禁会频繁假红)⇒ **手工跑**(`--help` 与头注都自述「非门禁」)。**并进入 `pr-check.yml` 的 paths-filter 缺口名单**(§C41.4 U2;**缺口形态未变、逃逸文件集合 +1** —— 同源事实见 [`performance.md`](performance.md) 的懒侧门禁节)。⚠️ **探针按路径定位、不按死锚行号**(本表的 `:45` 因 T6 删行已下移为 **`:44`**,即 `app_commands.rs` 那行,其散文现为 **「311 条」**、行数值 **478**,T21 实测两者与门禁读数一致)。 |
| 245 | +> - 🔴 **散文对拍探针 = 批 8 的候选闸(§C11.8 ③)**:`scripts/check-exemption-prose.mjs`(批 7 T11 新建,**112 行**;口径 = `countLines()` 同源实现)把**本表的散文数字与 `check-command-registry.mjs` 的门禁读数对拍**(如「散文『311 条』== 门禁『定义 311』」;两态都成立、中途未同步期为**真阳性** `EXIT=1`)。🔴 **批 8 T17 已挂进 CI**:`.github/workflows/pr-check.yml` 的 `line-limits` job 内**单列** step「**Exemption table prose check**」(`:211`,`run: node scripts/check-exemption-prose.mjs`)⇒ **它已经是 CI 门禁**。🔴 **仍不进八闸集合**(理由未变:八闸的集合是批次间治理收口的逐字对账基线,扩闸会让对账漂移)、🔴 **仍不进 husky**;⚠️ **若它在 CI 上频繁假红 ⇒ 回退裁决、改回手工跑,并写明回退理由。****并进入 `pr-check.yml` 的 paths-filter 缺口名单**(§C41.4 U2;**缺口形态未变、逃逸文件集合 +1** —— 同源事实见 [`performance.md`](performance.md) 的懒侧门禁节)。⚠️ **探针按路径定位、不按死锚行号**(本表的 `:45` 因 T6 删行已下移为 **`:44`**,即 `app_commands.rs` 那行,其散文现为 **「311 条」**、行数值 **478**,T21 实测两者与门禁读数一致)。 |
246 | 246 | > - 🔴 **本批的贴边件清单(余量 ≤5,共 10 条)落在 [`v0.22` 批 7 节的「诚实代价」](../versions/v0.22.md)**(母本体例同批 4 的「9 个贴边文件」):**任何后续编辑必须先拆件**。其中 `app/src/components/notes/NotesReadingColumn.tsx` 的路径在批 7 台账(`rulings.md` §C49.5①)与派发语里被写成 `app/src/views/note/NotesReadingColumn.tsx` —— 🔴 **该路径不存在**(实测该文件在 `components/notes/`)⇒ **以 `components/notes/` 为准**。 |
247 | 247 |
|
248 | 248 | --- |
|
0 commit comments