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

68 lines
3.0 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 Context Validation
- [x] 1.1 阅读 Python 参考实现确认签名、请求体、URL、超时和成功判定
- [x] 1.2 阅读当前 Android 工程结构,确认 Java、Gradle、权限和短信接收链路现状
- [x] 1.3 生成飞书 webhook 推送 OpenSpec proposal、design、tasks 和 capability spec
- [x] 1.4 用 `npx openspec validate add-feishu-webhook-push` 校验规格结构
- [x] 1.5 后续提交或 push 前检查 diff避免引入非预期 EOF newline 变化
## 2. Dependencies And Manifest
- [x] 2.1 在 `app/build.gradle` 新增 OkHttp 依赖
- [x] 2.2 在 `AndroidManifest.xml` 新增 `android.permission.INTERNET`
- [x] 2.3 不引入 Retrofit、RxJava、协程或 WorkManager
## 3. Signing And Request Model
- [x] 3.1 新增签名方法,使用 `timestamp + "\n" + secret` 作为 HMAC key空消息体HmacSHA256Base64 NO_WRAP
- [x] 3.2 新增请求体构造方法,输出与 Python 参考实现一致的 interactive markdown JSON
- [x] 3.3 新增 webhook URL 拼接方法,处理空 id 和首尾空格
- [x] 3.4 避免在日志中输出 secret、sign 和完整 webhook URL
## 4. Network Client
- [x] 4.1 新增 `FeishuWebhookClient`
- [x] 4.2 使用 OkHttp POST JSON
- [x] 4.3 设置 10 秒请求超时
- [x] 4.4 HTTP 200 且响应 JSON `code == 0` 时返回成功
- [x] 4.5 分类返回配置缺失、签名失败、网络异常、超时、HTTP 错误、JSON 解析失败和飞书业务错误
- [x] 4.6 网络请求只在后台线程执行
## 5. Config And State
- [x] 5.1 新增 `FeishuWebhookConfigStore`,通过 `/sdcard/Android/data/{applicationId}/config/feishu.json` 保存 enabled、webhook id 和 secret
- [x] 5.2 新增最近推送状态,包含时间、成功状态、错误类型和错误摘要
- [x] 5.3 UI 展示 secret 时使用掩码
- [x] 5.4 默认推送完整短信原文,便于远端调试
- [x] 5.5 `feishu.json` 不存在时生成默认模板 `def_config_feishu.json`
## 6. UI And Manual Test
- [x] 6.1 在 `MainActivity` 增加飞书推送配置区域
- [x] 6.2 增加 webhook id 和 secret 输入入口
- [x] 6.3 增加启用/停用远端推送开关
- [x] 6.4 增加“测试推送”按钮,发送固定 markdown 测试内容
- [x] 6.5 展示最近一次推送结果,并与短信接收结果分开
## 7. SMS Flow Integration
- [x] 7.1 短信原文读取成功后构造默认 markdown 摘要
- [x] 7.2 `SmsReceiver` 保存本地结果后触发异步推送
- [x] 7.3 推送失败不影响本地短信捕获、解析和 UI 刷新
- [x] 7.4 默认推送内容包含短信原文、来源、发送方掩码和时间
## 8. Tests
- [x] 8.1 增加签名单元测试,固定输入输出对齐 Python 实现
- [x] 8.2 增加请求体构造测试
- [x] 8.3 增加响应解析测试,覆盖成功、业务错误和非法 JSON
- [x] 8.4 增加配置缺失测试
- [x] 8.5 不要求本轮编译;代码完成后通知用户
## 9. Delivery Criteria
- [x] 9.1 OpenSpec validate 通过
- [x] 9.2 相关上下文逻辑分析通过
- [x] 9.3 相关测试通过
- [x] 9.4 代码实现完成后通知用户,不强制编译