Files
DevFlow/docs/05-代码审查/定时走查-2026-06-15-第4轮.md
绝尘 f30df333b3 docs: 巡检简报+todo 回写(2026-06-15 第2轮)
巡检发现:
- 2196c77 workflow 整文件替换回退破坏(AiChat+Ideas 12项功能)
- B-260615-03 truncated 标志已落地
- AR-8-scroll scrollToBottom smooth 已补
- CR-260615-09 .ai-md 残余:4详情页各21处 scoped .ai-md
  (全局 ai-md.css 75行已建,旧副本待清理但非阻塞)
2026-06-15 17:23:57 +08:00

90 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 定时代码走查 — 第 4 轮2026-06-15
> 触发:定时走查 cron每 30 分钟)。范围 = 自第3轮起 1 新提交(`94cdcdc` CR-21 修复)+ **i18n 垂直切片走查**src/i18n 26 文件此前从未深查,最大未审区域)。
> 方法:主代理地面 git show 核 CR-21 + 1 路后台代理走查 i18n 完整性/硬编码遗漏45 tool_uses 全量扫)。
> 性质:核对记录,不改产品代码(本会话 session-role-diagnose-only。todo 待修项见 `docs/todo.md`。
> 关联:[第1轮](./定时走查-2026-06-15-P0复核.md)/[第2轮](./定时走查-2026-06-15-第2轮.md)/[第3轮](./定时走查-2026-06-15-第3轮.md)。
---
## 一、CR-21 修复确认(价值第 4 次闭环)
`94cdcdc` App.vue:218-222 `try { await startDataChangedListener() } catch(e){ console.error(...) }`。提交说明「cron 巡检捕获另一会话走查第3轮 CR-21」。✅ 已修。
---
## 二、i18n key 树质量 — 优秀 ✅
**466 key 全对齐**12 命名空间 × 2 语言):
| 维度 | 结果 |
|---|---|
| zh vs en key 树 | **0 缺 key / 0 多余 / 0 结构不一致** |
| 翻译质量 | 0 TODO/占位符0 复制中文漏译(仅 `aiLanguageZh=🇨🇳 简体中文` 1 处合理) |
| 插值参数 | `{var}` 占位符 zh/en 逐一匹配0 mismatch |
| 命名/嵌套 | 顶层=文件名camelCase嵌套≤2 层,一致 |
> i18n 文件本身无需改动。问题全在 **src/ 硬编码遗漏**。
---
## 三、硬编码遗漏 — 40+ 处CR-08 扩展,真实问题)
CR-260615-08 原记 3 处i18n 代理全量扫发现 **40+ 处**,按严重度分三档:
### 🔴 P1 — 直接破坏 i18n已有 key 却硬编码)
**P1-1 `useAiEvents.ts:182`(最高优先,改一行)**`tc.result = '用户拒绝了此操作'` 硬编码,绕过已有 `aiTool.rejectedHint`en=`User rejected this action`。ToolCard.vue:54 渲染 `tc.result || $t('aiTool.rejectedHint')``||` 短路致 **en locale 拒绝提示恒中文**,已有 en 翻译被一行废掉。修:删该赋值(让 ToolCard 走 t())或改 `t('aiTool.rejectedHint')`
**P1-2 `TaskDetail.vue` 整页 13 处未接 i18n**L6/12/17/24 + 11 个 label span + L144 errorMsg。i18n 无 taskDetail namespace只有 tasks需新建。en locale 全中文。
**P1-3 `ProjectDetail.vue` 审批/导入 5 处**L12 导入目录 / L201 确认(N) / L220 取消 / L392 confirmDialog / L399 Message.success / L404 Message.error / L381 未知错误 fallback。
**P1-4 `Dashboard.vue:76`** `暂无项目,去创建一个`
**P1-5 `AiChat.vue` 3 处**L107 title=清空 / L471 confirmDialog / L687 showToast 发送失败。
### 🟡 P2 — JS 字符串赋 UI/Toast
**P2-1 `ToolCard.vue:152-164` ARG_LABEL_MAP**11 个审批参数标签硬编码ID/项目 ID/名称/标题/描述/字段/新值/路径/优先级/标签/来源aiTool.ts 无对应 key需新增 `aiTool.argLabels.*`
**P2-2 store error fallback 11 处全中文**knowledge.ts:53/64/74/105 + ideas.ts:10/20/38 + projects.ts:13/25/37/63/71/81/90 + tasks.ts:10/20/38 + workflow.ts:19。en locale 下所有加载/CRUD 失败 toast 中文。
**P2-3 `useAiStream.ts:52-53`**CR-08 行号偏差,原记 39-41看门狗超时两文案 `⚠ 工具已执行完成...` / `⚠ 响应中断...` 直接 push messages。
**P2-4 `useAiSend.ts:49/65/130`**:队列满 throw + 审批未送达 tc.result。
### ⚪ P3 — 边界/低优先
**P3-1 `utils/time.ts:46-51`(隐蔽)**`formatRelative` 相对时间硬编码(刚刚/X 分钟前...。i18n 已有 `common.justNow/minutesAgo/hoursAgo/dayAgo` key 却没用 → en locale 所有时间戳中文。
**P3-2 `router/index.ts:18-60`**8 个 `meta.title` 中文,但 **0 消费方**grep meta.title/document.title 无匹配),死代码/潜伏隐患。
**P3-4 `i18n/index.ts:20` `fallbackLocale: 'en'`**zh-CN 用户缺 key 回退英文,反直觉(当前 key 全对齐不触发,设计气味)。
---
## 四、亮点
- **i18n key 树工程化扎实**466 key 双语全对齐、插值参数一致、命名规范、无占位符 — 国际化基础设施质量高。
- **i18n index 初帧渲染处理合理**appSettings 异步,`getInitialLocale()` 默认 zh-CNloadAll 后回填,已知短暂态有注释。
- **TaskDetail.vue 单文件 XSS/响应式到位**第1轮已肯定i18n 是唯一短板。
---
## 📊 本轮摘要
| 类别 | 数 | 代表 |
|---|---|---|
| 价值闭环 | 1 | CR-21 → 94cdcdc ✅ |
| i18n key 树肯定 | 466 | 全对齐 0 缺 key优秀|
| 硬编码新发现 | 40+ | P1-1 useAiEvents:182改一行最高 ROI/ TaskDetail 整页 / ToolCard ARG_LABEL_MAP / store fallback 11 处 / time.ts 隐蔽 |
| P1 i18n 破坏 | 5 | useAiEvents:182 / TaskDetail / ProjectDetail / Dashboard / AiChat |
| P2/P3 | 6 | ARG_LABEL_MAP / store fallback / useAiSend / time.ts / router meta / fallbackLocale |
**本轮价值**i18n 垂直切片暴露真实问题 — key 树优秀但 src/ 硬编码 40+ 处CR-08 严重低估)。**P1-1 useAiEvents:182 是明确 i18n 破坏 bug**(一行废掉 en 翻译),改一行最高 ROI应优先。TaskDetail 整页未接 i18n13 处)是新页面 i18n 债。
**方法论**换垂直切片角度i18n 维度)有效突破前几轮按提交/改动的横切盲区,发现 40+ 处硬编码 — 印证 task2/3「功能/模块垂直走查」的价值(换角度有新发现)。
todo 映射CR-260615-08 扩展3→40+ 子项,标 P1-1 最高优先)+ CR-21 标 ✅。