docs(02-02): 完成实名激活架构重构计划 REALNAME-01~05

- 新增 02-02-SUMMARY.md
- 更新 STATE.md 进度(plan 2/2)
- 更新 ROADMAP.md 进度
- 标记 REALNAME-01~05 需求完成
This commit is contained in:
2026-03-28 10:42:04 +08:00
parent 8553a46143
commit facc766993
4 changed files with 114 additions and 18 deletions

View File

@@ -32,11 +32,11 @@
### REALNAME — 实名激活架构重构(方案 G ### REALNAME — 实名激活架构重构(方案 G
- [ ] **REALNAME-01**: 移除 `tb_package.enable_realname_activation` 字段,新增 `expiry_base VARCHAR(30)` 字段(`from_activation` / `from_purchase` - [x] **REALNAME-01**: 移除 `tb_package.enable_realname_activation` 字段,新增 `expiry_base VARCHAR(30)` 字段(`from_activation` / `from_purchase`
- [ ] **REALNAME-02**: `activateMainPackage` 改写激活决策逻辑 — 按卡类型industry/normal+ 购买路径C端/后台囤货)+ `expiry_base` 三维决策 - [x] **REALNAME-02**: `activateMainPackage` 改写激活决策逻辑 — 按卡类型industry/normal+ 购买路径C端/后台囤货)+ `expiry_base` 三维决策
- [ ] **REALNAME-03**: `client_order/service.go` 实名检查改为按卡类型判断(`card_category == "normal"`),删除 `packagesNeedRealname()` 函数 - [x] **REALNAME-03**: `client_order/service.go` 实名检查改为按卡类型判断(`card_category == "normal"`),删除 `packagesNeedRealname()` 函数
- [ ] **REALNAME-04**: `ActivateByRealname()``ExpiryBase` 选择激活时间基准(`from_purchase` 用 CreatedAt`from_activation` 用当前时刻) - [x] **REALNAME-04**: `ActivateByRealname()``ExpiryBase` 选择激活时间基准(`from_purchase` 用 CreatedAt`from_activation` 用当前时刻)
- [ ] **REALNAME-05**: 套餐管理 API DTO 更新 — 移除 `enable_realname_activation`,新增 `expiry_base` 枚举字段 - [x] **REALNAME-05**: 套餐管理 API DTO 更新 — 移除 `enable_realname_activation`,新增 `expiry_base` 枚举字段
### POLL — 轮询系统小修(方案 H ### POLL — 轮询系统小修(方案 H
@@ -133,11 +133,11 @@
| FIN-01 | Phase 2 | Pending | | FIN-01 | Phase 2 | Pending |
| FIN-02 | Phase 2 | Pending | | FIN-02 | Phase 2 | Pending |
| FIN-03 | Phase 2 | Pending | | FIN-03 | Phase 2 | Pending |
| REALNAME-01 | Phase 2 | Pending | | REALNAME-01 | Phase 2 | Complete |
| REALNAME-02 | Phase 2 | Pending | | REALNAME-02 | Phase 2 | Complete |
| REALNAME-03 | Phase 2 | Pending | | REALNAME-03 | Phase 2 | Complete |
| REALNAME-04 | Phase 2 | Pending | | REALNAME-04 | Phase 2 | Complete |
| REALNAME-05 | Phase 2 | Pending | | REALNAME-05 | Phase 2 | Complete |
| POLL-01 | Phase 2 | Pending | | POLL-01 | Phase 2 | Pending |
| POLL-02 | Phase 2 | Pending | | POLL-02 | Phase 2 | Pending |
| POLL-03 | Phase 2 | Pending | | POLL-03 | Phase 2 | Pending |

View File

@@ -57,7 +57,7 @@ Plans:
Plans: Plans:
- [ ] 02-01-PLAN.md — PERM-01/02 + FIN-01/02/03 + POLL-01/02/03/04权限/财务/轮询小修合并Wave 1 - [ ] 02-01-PLAN.md — PERM-01/02 + FIN-01/02/03 + POLL-01/02/03/04权限/财务/轮询小修合并Wave 1
- [ ] 02-02-PLAN.md — REALNAME-01~05实名激活架构重构原子执行Wave 1parallel - [x] 02-02-PLAN.md — REALNAME-01~05实名激活架构重构原子执行Wave 1parallel
--- ---
@@ -123,7 +123,7 @@ Plans:
| Phase | Plans Complete | Status | Completed | | Phase | Plans Complete | Status | Completed |
|-------|----------------|--------|-----------| |-------|----------------|--------|-----------|
| 1. P0 紧急修复 | 5/5 | Complete | 2026-03-27 | | 1. P0 紧急修复 | 5/5 | Complete | 2026-03-27 |
| 2. 权限/财务/实名/轮询修复 | 0/2 | Not started | - | | 2. 权限/财务/实名/轮询修复 | 1/2 | In Progress| |
| 3. 设备体系完善 | 0/1 | Not started | - | | 3. 设备体系完善 | 0/1 | Not started | - |
| 4. 退款 + 支付 + 运营修复 | 0/1 | Not started | - | | 4. 退款 + 支付 + 运营修复 | 0/1 | Not started | - |
| 5. 代码质量清理 | 0/1 | Not started | - | | 5. 代码质量清理 | 0/1 | Not started | - |

View File

@@ -3,12 +3,12 @@ gsd_state_version: 1.0
milestone: v1.0 milestone: v1.0
milestone_name: milestone milestone_name: milestone
status: unknown status: unknown
last_updated: "2026-03-28T01:47:47.024Z" last_updated: "2026-03-28T02:41:33.151Z"
progress: progress:
total_phases: 6 total_phases: 6
completed_phases: 1 completed_phases: 1
total_plans: 5 total_plans: 7
completed_plans: 5 completed_plans: 6
--- ---
# Project State — 君鸿卡管系统 # Project State — 君鸿卡管系统
@@ -21,8 +21,8 @@ progress:
## Current Position ## Current Position
Phase: 2 Phase: 02 (perm-fin-realname-poll) — EXECUTING
Plan: Not started Plan: 2 of 2
| Field | Value | | Field | Value |
|-------|-------| |-------|-------|
| **Current Phase** | 1 — P0 紧急修复 | | **Current Phase** | 1 — P0 紧急修复 |
@@ -42,7 +42,7 @@ Progress: [ 1 ]──[ 2 ]──[ 3 ]──[ 4 ]──[ 5 ]──[ 6 ]
**Core Value:** 业务链路完整可用——代理能采购分配卡/设备C端客户能充值购包激活套餐佣金能正确计算并可提现。这条主链路必须端到端跑通。 **Core Value:** 业务链路完整可用——代理能采购分配卡/设备C端客户能充值购包激活套餐佣金能正确计算并可提现。这条主链路必须端到端跑通。
**Current Focus:** Phase 01 — p0 **Current Focus:** Phase 02 — perm-fin-realname-poll
--- ---
@@ -76,6 +76,7 @@ Progress: [ 1 ]──[ 2 ]──[ 3 ]──[ 4 ]──[ 5 ]──[ 6 ]
| Phase 01-p0 P04 | 4min | 1 tasks | 1 files | | Phase 01-p0 P04 | 4min | 1 tasks | 1 files |
| Phase 01-p0 P02 | 3min | 1 tasks | 2 files | | Phase 01-p0 P02 | 3min | 1 tasks | 2 files |
| Phase 01-p0 P03 | 8min | 2 tasks | 4 files | | Phase 01-p0 P03 | 8min | 2 tasks | 4 files |
| Phase 02-perm-fin-realname-poll P02 | 25min | 2 tasks | 8 files |
## Accumulated Context ## Accumulated Context

View File

@@ -0,0 +1,95 @@
---
phase: 02-perm-fin-realname-poll
plan: "02"
subsystem: realname-activation
tags: [realname, package, migration, refactor]
dependency_graph:
requires: []
provides: [REALNAME-01, REALNAME-02, REALNAME-03, REALNAME-04, REALNAME-05]
affects: [package, order, client_order, activation_service]
tech_stack:
added: []
patterns: [three-dimensional-decision, expiry-base-enum]
key_files:
created:
- migrations/000089_realname_expiry_base.up.sql
- migrations/000089_realname_expiry_base.down.sql
modified:
- internal/model/package.go
- internal/model/dto/package_dto.go
- internal/store/postgres/package_store.go
- internal/service/order/service.go
- internal/service/client_order/service.go
- internal/service/package/service.go
- internal/service/package/activation_service.go
- internal/task/auto_purchase.go
decisions:
- "expiry_base 枚举替代 enable_realname_activation 布尔字段,清晰分离等实名语义与计时起点语义"
- "三维决策行业卡永远直接激活C 端购买直接激活,后台囤货按 expiry_base 决定"
- "auto_purchase.go 被认定为 C 端路径,不适用 expiry_base 三维决策"
metrics:
duration: "~25min"
completed_date: "2026-03-28"
tasks: 2
files: 8
---
# Phase 02 Plan 02: 实名激活架构重构 Summary
`enable_realname_activation` 布尔字段替换为 `expiry_base` 枚举from_activation/from_purchase重构激活决策为三维判断卡类型+购买路径+expiry_base全链路原子完成。
## Tasks Completed
| Task | Description | Commits |
|------|-------------|---------|
| 1 | DB 迁移 + Model + Store 清理REALNAME-01 | `344850f` |
| 2a | DTO 更新REALNAME-05 | `244a274` |
| 2b | activateMainPackage 三维决策REALNAME-02 | `7dd5563` |
| 2c | C 端实名检查按卡类型REALNAME-03 | `0ebb3d7` |
| 2d | ActivateByRealname 按 ExpiryBase 选时间基准REALNAME-04 | `60b43bb` |
| 2e | auto_purchase.go 废弃引用清除(偏差修复) | `4be473c` |
## Verification
```
migrate-version: 89, dirty=false ✓
EnableRealnameActivation/enable_realname_activation/packagesNeedRealname 零引用 ✓
ExpiryBase 引用出现在 package.go、package_dto.go、order/service.go、
client_order/service.go、activation_service.go ✓
go build ./internal/... 零错误 ✓
```
## Deviations from Plan
### Auto-fixed Issues
**1. [Rule 1 - Bug] auto_purchase.go 含废弃 EnableRealnameActivation 引用**
- **发现于:** Task 2 完成后编译验证
- **问题:** `internal/task/auto_purchase.go:433` 引用已删除的 `pkg.EnableRealnameActivation` 字段,导致编译失败
- **修复:** 识别 auto_purchase 为 C 端充值触发路径,不适用 expiry_base 三维决策,删除该分支并添加注释说明
- **文件:** `internal/task/auto_purchase.go`
- **Commit** `4be473c`
**2. [Rule 1 - Bug] package/service.go DTO 映射引用 EnableRealnameActivation**
- **发现于:** Task 2 DTO 替换后 LSP 报错
- **问题:** `service.go` 的 Create/Update/toResponse 函数仍映射旧字段
- **修复:** 同步更新三处映射为 `ExpiryBase`
- **文件:** `internal/service/package/service.go`
- **Commit** 含于 `244a274`
## Known Stubs
无已知留桩。全链路变更已完整实现。
## Self-Check: PASSED
- `migrations/000089_realname_expiry_base.up.sql` — FOUND ✓
- `migrations/000089_realname_expiry_base.down.sql` — FOUND ✓
- `internal/model/package.go` ExpiryBase 字段 — FOUND ✓
- `internal/model/dto/package_dto.go` ExpiryBase 三处 — FOUND ✓
- `internal/store/postgres/package_store.go` 直接一步 Create — FOUND ✓
- Commit `344850f` (REALNAME-01) — FOUND ✓
- Commit `244a274` (REALNAME-05) — FOUND ✓
- Commit `7dd5563` (REALNAME-02) — FOUND ✓
- Commit `0ebb3d7` (REALNAME-03) — FOUND ✓
- Commit `60b43bb` (REALNAME-04) — FOUND ✓