edit | blame | history | raw

2026-06-11 排序数据 QA

用户目标

为 7.9.0 容器内 App 手动排序准备数据层 QA 和回归入口。要求新增可从 src 目录运行的轻量脚本,覆盖旧 JSON decode、新字段 roundtrip、containerAppOrder 指纹与导入导出相关静态断言;不改 AppGrid UI,不改 DataLayer 实现。

已完成事项

  • 新增 src/Scripts/app_ordering_data_qa.sh
  • docs/7.90/04-QA测试用例集.md 的自动化脚本列表中加入 bash Scripts/app_ordering_data_qa.sh
  • 脚本可从 /Users/ar/Projects/Taglauncher/src 运行,不依赖 GUI。

关键决策

  • 当前数据层实现尚未包含 containerAppOrder,脚本先作为门禁脚本落地,缺失关键符号时返回 FAIL
  • QA 脚本采用 Python 解析 Swift 源码块,避免只用零散字符串搜索造成误判。
  • 不修改 src/Apptag/DataLayer.swift、AppGrid UI 或其他实现文件。

文件变更

  • src/Scripts/app_ordering_data_qa.sh
  • 检查 TagDatabase.Store.containerAppOrder 持久化字段、CodingKeysdecodeIfPresent 默认空字典。
  • 检查自定义 encode(to:) 如存在必须编码 containerAppOrder
  • 检查 CategorySchemeFingerprintcategorySchemeFingerprint(for:) 包含并读取 store.containerAppOrder
  • 检查 exportToimportFrombackuprestore 使用完整 Store 编码/解码。
  • 包含旧 JSON 与新 JSON 的内联轻量 fixture 形状检查。
  • docs/7.90/04-QA测试用例集.md
  • 自动化入口新增 bash Scripts/app_ordering_data_qa.sh

验证结果

  • bash -n src/Scripts/app_ordering_data_qa.sh 通过。
  • cd /Users/ar/Projects/Taglauncher/src && bash Scripts/app_ordering_data_qa.sh 当前按预期失败:
  • FAIL: Store must persist containerAppOrder as [String: [String]] with an empty default

未决问题

  • containerAppOrder 数据层实现尚未完成,脚本仍处于预期失败状态。
  • 脚本当前覆盖静态数据层门禁,不覆盖 GUI 拖拽、真实 App Grid 渲染、拖拽取消、跨容器交互、SmartStart replace 的运行时语义。
  • 工作区存在其他线程/用户改动:docs/index.htmlsrc/Apptag/DataLayer.swiftDocs/KM02-技术/。本轮未回滚、未修改这些无关 dirty 内容。

后续建议

  • DataLayer 实现补齐后重新运行 bash Scripts/app_ordering_data_qa.sh,确保门禁转为 PASS。
  • 后续可增加针对排序 merge/清理策略的轻量 Swift 或 fixture 级测试,覆盖卸载 App、新 App 追加、tag rename/delete/relocalize、reset/SmartStart replace 的语义。