# 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` 持久化字段、`CodingKeys`、`decodeIfPresent` 默认空字典。 - 检查自定义 `encode(to:)` 如存在必须编码 `containerAppOrder`。 - 检查 `CategorySchemeFingerprint` 和 `categorySchemeFingerprint(for:)` 包含并读取 `store.containerAppOrder`。 - 检查 `exportTo`、`importFrom`、`backup`、`restore` 使用完整 `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.html`、`src/Apptag/DataLayer.swift`、`Docs/KM02-技术/`。本轮未回滚、未修改这些无关 dirty 内容。 ## 后续建议 - DataLayer 实现补齐后重新运行 `bash Scripts/app_ordering_data_qa.sh`,确保门禁转为 PASS。 - 后续可增加针对排序 merge/清理策略的轻量 Swift 或 fixture 级测试,覆盖卸载 App、新 App 追加、tag rename/delete/relocalize、reset/SmartStart replace 的语义。