docs: align phase 3 review follow-up
This commit is contained in:
+26
@@ -677,3 +677,29 @@
|
||||
- 阻塞:T-305 功能与相关测试无阻塞;完整测试仍被远程 MySQL 连接稳定性阻塞。真实支付生产下单 / 查单仍需要安装 SDK 并提供微信、支付宝商户密钥/证书与公网 notify_url;当前 mock 用于本地/测试联调。
|
||||
- 决策:状态轮询不因本地 `expires_at` 自动把 pending 订单改 expired,避免误挡延迟到达的真实支付回调;二维码过期只作为前端提示,支付结果仍以回调或主动查单入账为准。T-305 只提供服务端 create/status,实际用户端充值页面留给 T-504。
|
||||
- 下一步:领取 T-501 注册 / 登录(allauth)。
|
||||
|
||||
## 2026-07-03 Phase 3 对外 API 与充值审核(Claude Code review,非任务)
|
||||
|
||||
- 状态:DONE(审核完成)
|
||||
- 变更:新增 `docs/phase-3-review.md`;`06-tasks.md` 新增 T-306 安全加固任务;`docs/README.md` 导航登记。
|
||||
- 审核结论:**T-301~305 功能验收全部达标,测试覆盖为四阶段最全**。§8/4.2 逐条核对通过——对外只认 Key 不认 Session(含专测)、回调 @csrf_exempt + 验签前置(mock 用 HMAC-SHA256+compare_digest 真验签、mock/真实 SDK 双路径由 PAYMENT_CALLBACK_MODE 切换、SDK 惰性导入)、入账锁订单行幂等 + 金额校验 + 用订单锁定 points_granted + 锁钱包写 RECHARGE 流水、主动查单兜底复用同一入账、生成编排 4.1 全分支(余额不足不调上游/能力不符不扣点/上游失败先退点)均有测试;Portal 会话接口自动强制 CSRF(含专测);resolve_alias 保留向后兼容未破 smoke。
|
||||
- 发现(详见 `phase-3-review.md`):
|
||||
- P1-1(上线前必修,安全):`download_image_input` 拉取调用方任意 `image_url` = SSRF;且在 precharge **之前**执行,0 点数用户即可无成本触发;无内网/回环/link-local 拦截、无大小上限、无重定向限制(可 30x/DNS rebinding 绕过)。须加协议白名单 + 网段拦截(含重定向后地址)+ 大小上限 + 测试。
|
||||
- P2-1:settings 无全局 REST_FRAMEWORK 默认,DRF 默认认证是 Session+Basic;外部视图都显式覆盖为 ApiKey(当前安全),但将来新增视图忘设置会默默继承默认——建议设 DEFAULT_AUTHENTICATION_CLASSES=[] 强制显式声明。
|
||||
- P2-2:生成/认证端点无限流(刷点/放大上游成本/Key 枚举风险),建议 ScopedRateThrottle。
|
||||
- P2-3:充值金额只有 min 无 max,建议加单笔上限。
|
||||
- P3(登记):充值流水 DB 兜底已存在(T-304 已加 `unique(ref_order_id, change_type)`,并有重复充值流水 `IntegrityError` 测试),非待办;生成图片 /media 公网 URL 无 per-user 访问控制;T-305 后完整套件未再单次全绿(远程 MySQL 不稳,T-302 时有 60 tests 全绿);过期订单不自动置 expired(有意设计)。
|
||||
- 未本地复跑:审核机无 python3.12,结论基于静态审查(api authentication/generation/views/serializers/storage/urls;billing services/payment_gateways/models/migrations;settings;两 app tests)+ codex 执行记录(T-301 52 / T-302 60 tests 单次全绿;T-303~305 分 app 子集通过,完整套件受远程 MySQL 连接稳定性阻塞,失败点为连接超时非断言失败)。
|
||||
- 口径校正:后续核对发现报告 P3 把充值流水 DB 兜底误列为待办;T-304 已在 `billing.0004_rechargeorder_and_more` 落地 `unique(ref_order_id, change_type)`,并有重复充值流水 `IntegrityError` 测试。后续文档已改为“DB 兜底已存在,非待办”。
|
||||
- 下一步:codex 领 T-306 做 P1 SSRF 修复 + P2 加固(P1 属上线前必须)。
|
||||
|
||||
## 2026-07-03 Phase 3 审核报告口径修正(文档)
|
||||
|
||||
- 状态:DONE
|
||||
- 变更:
|
||||
- 修正 `docs/phase-3-review.md`:P3 中充值流水 DB 兜底口径改为“已存在,非待办”,明确 T-306 不应重复增加同类迁移。
|
||||
- 修正 `progress.md` 中同一处错误口径。
|
||||
- 更新 `README.md`、`docs/00-ai-start-here.md`、`docs/current-state.md`:下一步从 T-501 改为 T-306。
|
||||
- 更新 `docs/06-tasks.md`:T-306 验收口径明确 P3 只登记媒体访问控制、完整测试补跑和过期订单口径。
|
||||
- 验证:文档口径修正,无代码变更;执行 `git diff --check` 作为格式检查。
|
||||
- 下一步:领取 T-306 Phase 3 对外 API 安全加固。
|
||||
|
||||
Reference in New Issue
Block a user