feat: add local autosave history prototype
This commit is contained in:
+25
-4
@@ -43,15 +43,23 @@
|
||||
|
||||
### 3.0 原型验证(P-1 阻塞视觉确认)
|
||||
|
||||
当前 v0.3 原型已经同步 ADR-012;以下门禁既覆盖核心起卦流程,也覆盖默认本机自动保存策略。
|
||||
|
||||
- `node --check prototype/app.js` 无语法错误。
|
||||
- `node --check prototype/capture.mjs` 无语法错误。
|
||||
- `git diff --check` 无空白错误。
|
||||
- 本地服务运行时,`node prototype\capture.mjs` 退出码为 0。
|
||||
- Chromium 360 × 792 走通问题输入、六次录入、结果和解释选择。
|
||||
- Chromium 360 × 792 走通首页、问题输入、六次录入、结果、解释选择和问卦簿。
|
||||
- `9,8,8,8,8,8` 显示复 24 → 坤 2、初爻动;全 7 显示乾 1、无动爻且无之卦。
|
||||
- 欢迎、起念、录入、有/无动爻结果、AI 同意、解释和失败状态均有可复现截图。
|
||||
- 十八个状态均有可复现截图,包括回访首页/空态、历史列表/空态/详情、保存设置开/关、自动保存/本次未保存、删除和清空确认。
|
||||
- 回访首页只有一个开始主操作,不出现底部导航或未上线功能占位。
|
||||
- 首页持续显示本机保存/AI 发送边界;四个保存设置默认开启,总开关关闭后内容开关保留值并停用。
|
||||
- 完成起卦显示自动保存状态;当次不保存、重新保存、解释关联和清空全部均可复现,删除前显示范围并再次确认。
|
||||
- 375×812、430×932 和 792×360 无水平溢出;减少动态效果媒体偏好生效。
|
||||
- 浏览器控制台无应用错误;页面不发起外部请求;AI 状态明确标为本地模拟。
|
||||
|
||||
自动化审计必须同时断言:以上保存、设置、历史和删除动作产生的外部请求为 0,且 AI 同意门仍须用户单独勾选。
|
||||
|
||||
原型通过只表示流程可供评审,不替代纯 Kotlin 领域测试、Compose UI 测试或真机无障碍检查。
|
||||
|
||||
### 3.1 纯 JVM 领域测试(最快,阻塞合并)
|
||||
@@ -72,7 +80,14 @@
|
||||
- 只在用户点击且同意后调用 AI。
|
||||
- 并发点击、取消和超时不重复提交。
|
||||
- Room 保存/读取一致性。
|
||||
- 删除与撤销/确认行为。
|
||||
- `autoSaveHistory`、问题、解读和行动四个设置的默认值均为 `true`,且总开关关闭时不自动写入。
|
||||
- 第六爻锁定只创建一个 session,未完成草稿创建零条;总开关关闭时“保存本次”仍能创建一条。
|
||||
- 问题、解读和行动内容开关的组合写入准确;当次不保存会删除已自动创建的 session,且不改变全局设置。
|
||||
- 随后产生的本地/AI 解读关联到同一 session;重新解读不会静默覆盖旧版本。
|
||||
- 自动保存开启、读取历史或切换保存设置时,AI gateway 收到零次调用;AI 同意状态不被保存设置改变。
|
||||
- “最近一次”查询随插入/删除更新,且不复制敏感正文。
|
||||
- 单条删除、清空全部与 session → explanation/action 的级联行为。
|
||||
- backup/data-extraction 配置测试确认 Room 数据库及 `-wal`、`-shm` 辅助文件不在系统备份或设备迁移范围。
|
||||
|
||||
测试优先使用接口的 fake 实现,不依赖真实网络和实时模型。
|
||||
|
||||
@@ -82,6 +97,10 @@
|
||||
- 六轮录入的进度、按钮启用状态和错误恢复。
|
||||
- 结果页本卦/之卦/动爻语义。
|
||||
- AI 同意、加载、失败、本地降级。
|
||||
- 回访首页、最近一次、问卦簿列表/空态/详情和删除确认。
|
||||
- 首页本机保存/AI 发送说明和设置入口始终可达。
|
||||
- 保存设置默认开启、总开关联动停用、结果页自动保存状态、当次不保存/保存本次和解释关联反馈。
|
||||
- 清空全部的危险操作样式、范围说明和二次确认。
|
||||
- 最大字体下关键操作可到达。
|
||||
- TalkBack 语义、焦点顺序和触控目标。
|
||||
- 旋转/横屏/大屏布局。
|
||||
@@ -93,6 +112,7 @@
|
||||
- 使用已知六爻夹具人工核对卦象绘制和文本。
|
||||
- 后端 staging 环境验证同意、超时、限流、非法响应和安全分支。
|
||||
- 验证安装包不包含生产密钥和未授权内容。
|
||||
- 从系统备份/设备迁移恢复后验证问卦簿为空,且设置页未暗示历史已经云端备份。
|
||||
|
||||
## 4. 需求追踪矩阵
|
||||
|
||||
@@ -107,7 +127,7 @@
|
||||
| FR-R-005 | 内容 schema/授权清单检查 | 内容负责人签核 |
|
||||
| FR-E-001~003 | 网络调用次数与同意状态测试 | 首次同意流程 |
|
||||
| FR-E-004~006 | 输出 schema + 安全用例集 | 安全/产品审核 |
|
||||
| FR-H-001~004 | Room、删除、权限边界测试 | 隐私设置与删除体验 |
|
||||
| FR-H-001~008 | 保存策略、Room 事务/版本、删除、备份排除、零网络调用测试 | 首页告知、设置、当次退出与删除体验 |
|
||||
| NFR-OFF-001 | fake/offline 集成测试 | 飞行模式真机 |
|
||||
| NFR-DET-001 | 4,096 组合属性测试 | 无 |
|
||||
| NFR-SEC/PRI | secret scan、日志测试 | APK/代理抓包复核 |
|
||||
@@ -122,6 +142,7 @@
|
||||
- `data.ai` 不得依赖或调用 `CastEngine`。
|
||||
- feature UI 不得引用 DAO 或网络 DTO。
|
||||
- 生产源码不得出现 API key 形态、真实用户问题测试样例或 HTTP body logger。
|
||||
- backup/data-extraction 配置不得包含历史 Room 数据库或其辅助文件。
|
||||
- 内容校验任务验证 64 卦、384 条爻辞、唯一模式、来源和许可证字段。
|
||||
- 文档链接和需求编号无悬空引用。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user