2026-05-18 11:10:52 +08:00

72 lines
3.7 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.

## 1. Spec And Project Baseline
- [x] 1.1 评审本次 OpenSpec 的 proposal、design、specs、tasks 是否覆盖需求
- [x] 1.2 用 `npx openspec validate build-sms-code-receiver-app` 校验方案结构
- [x] 1.3 检查 Weather 项目的 Gradle、AGP、Kotlin/Java、compileSdk 配置,作为后续实现参考
- [x] 1.4 确认本次不处理 Android Studio、Gradle、JDK 重新安装
- [ ] 1.5 后续提交或 push 前检查 diff避免引入非预期 EOF newline 变化
## 2. Android Skeleton
- [x] 2.1 基于 Weather 项目环境建立最小 Android app 工程骨架
- [x] 2.2 设置包名、minSdk、targetSdk、compileSdk并保持与现有可用环境兼容
- [x] 2.3 创建单 Activity 工具型界面,用于权限申请、状态展示和最近验证码展示
- [x] 2.4 建立基础日志标签和 debug 开关
## 3. Permission And Diagnostics
- [x] 3.1 在 Manifest 声明 `android.permission.RECEIVE_SMS`
- [x] 3.2 实现 Android 运行时短信权限申请和权限状态刷新
- [x] 3.3 在 UI 展示权限状态、receiver 状态、最近接收时间和失败原因
- [x] 3.4 增加跳转应用详情页的入口,用于处理 HyperOS 权限或受限权限设置
- [x] 3.5 检测 Google Play services 可用性,为 SMS User Consent / Retriever 备选路径提供诊断
## 4. System SMS Broadcast Path
- [x] 4.1 实现 `SMS_RECEIVED_ACTION` BroadcastReceiver
- [x] 4.2 使用 `Telephony.Sms.Intents.getMessagesFromIntent(Intent)` 解析短信消息
- [x] 4.3 处理多段短信 body 合并、sender、timestamp 和 subscription id
- [x] 4.4 将 receiver 结果分发到应用状态层,避免在 receiver 内执行重任务
- [x] 4.5 在无权限、body 为空、解析失败时输出结构化失败原因
## 5. Verification Code Parser
- [x] 5.1 实现关键词邻近匹配支持验证码、校验码、动态码、code、verification、OTP
- [x] 5.2 实现 4-8 位数字或字母数字候选提取
- [x] 5.3 支持空格和短横线归一化,例如 `12 34 56``123-456`
- [x] 5.4 增加误判排除规则,降低手机号、日期、金额、订单号误识别概率
- [x] 5.5 为多候选短信输出命中策略和置信度
## 6. Optional Google SMS APIs
- [x] 6.1 评估目标设备 Google Play services 是否可用
- [ ] 6.2 预留或实现 SMS User Consent API 前台读取单条短信路径
- [ ] 6.3 预留或实现 SMS Retriever API 获取 app hash 与受控短信模板验证
- [ ] 6.4 在 UI 中区分系统广播、User Consent、Retriever 三种来源
- [ ] 6.5 为 Google API 超时、不可用、用户拒绝授权输出明确诊断
## 7. Tests
- [x] 7.1 为验证码解析器添加中文验证码样本测试
- [x] 7.2 为验证码解析器添加英文 OTP/code 样本测试
- [x] 7.3 为验证码解析器添加空格、短横线、多候选样本测试
- [x] 7.4 为验证码解析器添加无验证码、手机号、日期、金额误判样本测试
- [ ] 7.5 为短信接收状态层添加权限状态和失败原因测试
## 8. Xiaomi 12S / HyperOS 3 Device Validation
- [ ] 8.1 前台打开应用时发送测试短信并验证接收结果
- [ ] 8.2 应用退到后台时发送测试短信并验证接收结果
- [ ] 8.3 锁屏状态发送测试短信,解锁后验证最近结果
- [ ] 8.4 验证权限被拒绝、权限重新授予后的状态恢复
- [ ] 8.5 如后台接收失败,记录 HyperOS 省电、后台运行、受限权限相关设置
- [ ] 8.6 如 Google Play services 可用,验证 SMS User Consent API 前台授权读取
## 9. Delivery Criteria
- [x] 9.1 相关上下文逻辑分析通过
- [x] 9.2 OpenSpec validate 通过
- [x] 9.3 单元测试通过
- [ ] 9.4 目标真机至少完成一条验证码短信接收和解析
- [x] 9.5 诊断 UI 能解释无权限、未收到广播、未解析到验证码三类失败