72 lines
3.7 KiB
Markdown
72 lines
3.7 KiB
Markdown
## 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 能解释无权限、未收到广播、未解析到验证码三类失败
|