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:
@@ -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 |
|
||||||
|
|||||||
@@ -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 1,parallel)
|
- [x] 02-02-PLAN.md — REALNAME-01~05:实名激活架构重构,原子执行(Wave 1,parallel)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -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 | - |
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
95
.planning/phases/02-perm-fin-realname-poll/02-02-SUMMARY.md
Normal file
95
.planning/phases/02-perm-fin-realname-poll/02-02-SUMMARY.md
Normal 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 ✓
|
||||||
Reference in New Issue
Block a user