edit | blame | history | raw

Taglauncher QA 审查记录 - 2026-06-08

用户目标

用户要求以 QA 视角审查 /Users/ar/Projects/Taglauncher-7.8.15-source 中 Apple 系统自带 App 默认备注本地化方案,只做方案审查和测试设计,不改代码。关注文件:DataLayer.swiftSmartStartService.swiftL10n.swiftContentView.swiftAppleDefaultAppNotes.swift

已完成事项

  • 读取项目规则与 QA/交付门禁规则,确认本轮只做审查与测试设计。
  • 审查默认备注数据模型:AppNoteOrigin 包含 catalogDefaultappleDefaultmanualappNoteMetadata 保存 provenance 与 fingerprint。
  • 审查语言切换路径:L10n.switchTo / switchToAutomatic 发送 .appLanguageDidChangeContentView 收到后异步调用 SmartStartService.relocalizeDefaultNotesForCurrentLanguage(apps:) 并刷新 UI。
  • 审查保护逻辑:relocalizeDefaultNotesForCurrentLanguage 只覆盖 origin == .catalogDefault 且当前文本 fingerprint 与旧 catalog provenance 匹配的备注;手写编辑通过 TagEditor.setAppNote 写为 manual
  • 审查 SmartStart catalog 资源:base catalog 有 29 种语言、77 个 com.apple.* 条目;所有 Apple 条目在 29 种 notes JSON 中均有非空备注。

关键结论

  • 新 catalog 默认备注的语言切换保护机制方向正确:catalog 默认可跟随语言切换,manual 不应被覆盖。
  • 主要风险是旧路径仍存在:DataLayer.reconcileScannedApps 初次扫描仍调用 seedDefaultAppleAppNotes,该函数从 AppleDefaultAppNotes.swift 写入中文硬编码备注并标记 origin: appleDefault;当前语言切换刷新函数不处理 appleDefault,老数据或首次扫描路径可能不会随语言切换。
  • SmartStartService.applyDraft 允许覆盖 “knownDefaultNotes” 或 catalog default,但其候选集当前只包含当前语言的默认备注,不能天然识别旧中文 appleDefault 是否应迁移为 catalog default。
  • 需要补自动化覆盖 store 迁移、manual 保护、catalog 完整性、构建资源完整性和真实 UI smoke。

文件变更

未改项目源码。仅新增本轮会话记录文件:

  • /Users/ar/Projects/X-sessionhistory/Taglauncher/2026-06-08-02.md

未决问题

  • 是否计划移除或迁移 AppleDefaultAppNotes.swift 的中文默认备注来源,尚未从代码中看到完整迁移实现。
  • 是否已有外部 QA 脚本未放在源码目录内,当前源码目录未发现针对 app note 本地化的测试脚本。

后续建议

  • 发布前补 appNoteMetadata 迁移/保护单测或脚本测试。
  • 补构建产物资源校验,确保 .app/Contents/Resources 含 29 个 SmartStartUltimateDefaultCatalog.notes.*.json.deflate
  • 真机 smoke 必须覆盖旧中文默认备注、手写备注、删除备注、语言快速切换、自动语言模式。