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