灌糖包子 c5ef726134
移除验证码解析功能,简化为纯短信转发
- 删除 VerificationCodeParser 及相关测试,短信捕获和推送不再解析验证码
- 飞书推送改为只发送短信原文,时间戳格式化为可读日期
- 移除主界面"只推送验证码"开关和"调试时上传完整短信正文"选项
- 移除"保存轮询间隔"按钮,开启轮询时自动保存间隔(未输入默认1秒)
- 按钮文字从"开始1秒轮询验证码"改为"开始短信轮询"
- 删除"打印最近30条短信"功能及相关 SmsInboxReader.logRecentMessages
- SmsInboxReader 用 RecentSmsResult 替换 RecentCodeResult
- FeishuWebhookConfigStore.Config 移除 filterVerificationCode/sendFullBodyDebug
- 修复代码缩进不一致问题
2026-05-18 22:38:06 +08:00

72 lines
3.6 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. SMS Content Result Handling
- [x] 5.1 保存最近一次短信原文、时间、sender 摘要和来源
- [x] 5.2 支持多段短信 body 合并后的完整结果展示
- [x] 5.3 对最近结果提供失败原因和正文摘要
- [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 为短信广播读取链路添加多段正文样本测试
- [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 能解释无权限、未收到广播、未读取到短信正文三类失败