From 8ace7592002abc5930cbf78a4460c6ac44c5956a Mon Sep 17 00:00:00 2001 From: huang Date: Sat, 28 Mar 2026 10:53:37 +0800 Subject: [PATCH] =?UTF-8?q?docs(phase-02):=20evolve=20PROJECT.md=20after?= =?UTF-8?q?=20phase=20completion=20=E2=80=94=20B/C/G/H=20=E6=96=B9?= =?UTF-8?q?=E6=A1=88=E5=85=A8=E9=83=A8=E6=A0=87=E8=AE=B0=20Validated?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .planning/PROJECT.md | 41 ++++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/.planning/PROJECT.md b/.planning/PROJECT.md index 4b9743a..06d9f0b 100644 --- a/.planning/PROJECT.md +++ b/.planning/PROJECT.md @@ -14,6 +14,17 @@ *以下功能已在代码库中实现,视为已验证的基础能力:* +**Validated in Phase 2: PERM/FIN/REALNAME/POLL 修复** +- ✓ 企业账号 Resolve 接口移除错误拦截,Refresh 接口新增拦截(只读)— PERM-01/02 +- ✓ 提现审批人字段补全(approved_by/approved_at)— FIN-01 +- ✓ 提现拒绝 remark 必填校验(Reject 补 Validate 调用)— FIN-02 +- ✓ 激活配置并发行锁保护(clause.Locking FOR UPDATE)— FIN-03 +- ✓ enable_realname_activation → expiry_base 全链路重构,三维激活决策(卡类型+购买路径+expiry_base)— REALNAME-01~05 +- ✓ polling:protect 接入调度器(processManualQueue + processTimedQueue)— POLL-01 +- ✓ gatewayClient=nil 时停复机返回业务错误而非 nil — POLL-02 +- ✓ GetPackages 接口支持分页(page/pageSize/total)— POLL-03 +- ✓ PackageSeries 删除前检查关联套餐(CountBySeriesID)— POLL-04 + **Validated in Phase 1: P0 紧急修复** - ✓ 实名状态常量统一(DB 写入值统一为 constants.RealNameStatusVerified=1)— CRITICAL-01 - ✓ C 端实名校验修复(依赖常量统一)— CRITICAL-02 @@ -57,14 +68,14 @@ - [x] A-6:设备导入补充 IMEI 字段(DeviceRow 缺 IMEI,导入后 Gateway 无法调用) - [x] A-7:提现冻结并发校验(只检查 Error 不检查 RowsAffected,并发创建重复提现单) -**方案 B — 企业端权限完善** -- [ ] B-1:Resolve 接口错误拦截企业账号(应可查,需移除拦截) -- [ ] B-2:Refresh 接口缺少企业账号拦截(应只读) +**方案 B — 企业端权限完善** ✅ *Validated in Phase 2* +- [x] B-1:Resolve 接口错误拦截企业账号(应可查,需移除拦截) +- [x] B-2:Refresh 接口缺少企业账号拦截(应只读) -**方案 C — 提现/佣金流程完善** -- [ ] C-1:审批人字段补全(approved_by/approved_at 永远为空) -- [ ] C-2:提现拒绝 remark 必填校验(Reject 缺少 Validate 调用) -- [ ] C-3:激活配置并发保护(两步 UPDATE 无锁,可出现两条 active=true) +**方案 C — 提现/佣金流程完善** ✅ *Validated in Phase 2* +- [x] C-1:审批人字段补全(approved_by/approved_at 永远为空) +- [x] C-2:提现拒绝 remark 必填校验(Reject 缺少 Validate 调用) +- [x] C-3:激活配置并发保护(两步 UPDATE 无锁,可出现两条 active=true) **方案 D — 设备体系完善** - [ ] D-0:设备模型字段扩展(online_status / last_online_time / software_version 等) @@ -85,14 +96,14 @@ - [ ] F-5:Handler/Service 权限不一致修复 - [ ] F-6:StopResumeCallback / ResumeCallback 注入(bootstrap 未调用) -**方案 G — 实名激活架构重构** -- [ ] G:enable_realname_activation 字段拆分为 expiry_base(from_activation/from_purchase) +**方案 G — 实名激活架构重构** ✅ *Validated in Phase 2* +- [x] G:enable_realname_activation 字段拆分为 expiry_base(from_activation/from_purchase) -**方案 H — 轮询系统小修** -- [ ] H-1:polling:protect 接入调度(已注册未调度) -- [ ] H-2:gatewayClient=nil 时停复机应返回错误(而非假装成功) -- [ ] H-3:packages 接口加分页 -- [ ] H-4:Series 删除前检查关联套餐 +**方案 H — 轮询系统小修** ✅ *Validated in Phase 2* +- [x] H-1:polling:protect 接入调度(已注册未调度) +- [x] H-2:gatewayClient=nil 时停复机应返回错误(而非假装成功) +- [x] H-3:packages 接口加分页 +- [x] H-4:Series 删除前检查关联套餐 **方案 I — 退款完整功能(新功能)** - [ ] I-1:新建 tb_refund_request 数据模型 @@ -146,7 +157,7 @@ | 流量体系改革独立发布 | 破坏性变更(DB 迁移 + Redis 架构),风险隔离 | — Pending | --- -*Last updated: 2026-03-28 after Phase 1 (P0 紧急修复) completion — CRITICAL-01~08 all validated* +*Last updated: 2026-03-28 after Phase 2 (perm-fin-realname-poll) completion — PERM-01/02, FIN-01/02/03, REALNAME-01~05, POLL-01~04 all validated* ## Evolution