# Phase 2: 权限/财务/实名/轮询修复 - Discussion Log

> **Audit trail only.** Do not use as input to planning, research, or execution agents.
> Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.

**Date:** 2026-03-28
**Phase:** 02-perm-fin-realname-poll
**Areas discussed:** 执行分组策略, REALNAME 数据迁移风险

---

## 执行分组策略

| Option | Description | Selected |
|--------|-------------|----------|
| B+C+H 合一、G 独立 | 2 个 Plan：小修删掉合成一个，REALNAME 单独一个。风险隔离好，G 可以独立回滚 | ✓ |
| B、C、G、H 各独立 | 4 个 Plan：最细粒度，但总费用较高（尤其 B 和 H 都很小） | |
| 全部合并成一个 | 1 个 Plan：最快完成，但如果 G 失败就不知道是哪个需求的问题 | |

**User's choice:** B+C+H 合一、G 独立
**Notes:** Plan 1 内部执行顺序确认为 B → H → C

---

## 执行顺序（Plan 1 内部）

| Option | Description | Selected |
|--------|-------------|----------|
| B → H → C | 先权限修复（最小化验证），然后轮询小修，最后收尾财务流程。财务类改动放最后更安全 | ✓ |
| H → B → C | 先轮询，再权限，最后财务 | |
| Agent 自行决定 | 顺序不重要，由 agent 按依赖关系安排 | |

**User's choice:** B → H → C

---

## REALNAME 数据迁移风险

| Option | Description | Selected |
|--------|-------------|----------|
| 直接默认 from_activation | 新字段 DEFAULT 'from_activation'。旧的 false 记录不做映射。expiry_base 控制计时基准，语义与旧字段不同，无法直接映射 | ✓ |
| 脚本映射 false → from_purchase | UPDATE tb_package SET expiry_base='from_purchase' WHERE enable_realname_activation=false。但实际上旧字段的语义与新字段不完全对应 | |

**User's choice:** 直接默认 from_activation，旧字段清理掉
**Notes:** "如果旧的字段没有用了就清理掉吧"

---

## Agent's Discretion

- FIN-03 GORM v2 行锁语法（`clause.Locking`）
- `isCEndPurchase` 的具体推断字段
- 每个子修复独立 commit 粒度
- POLL-03 Handler 层分页参数传入方式

## Deferred Ideas

None mentioned during discussion.
