# abacus.springboot.example — 实施路线图（ROADMAP）

> 由 `PRD.md` + `ARCHITECTURE.md` 推导。按依赖图拓扑顺序排开发节奏。每完成一个复选框，在**同一个 commit**里打勾；每完成一个 milestone，按 `.project.agents/log/` 模板写日志。

## 0. 排序原则

- 先基础设施（config/dao/repository 等底层）后接口（esb/api）。
- 本仓库为**后端模板**：里程碑以"验证模板可复制性 + 治理可持续性"为主线，而非业务功能交付。

## 1. 里程碑总览

| Milestone | 目标 | 验收（能演示什么） |
|---|---|---|
| M0 | 治理落地（本次）：git 单一仓库、docs/ 文档中心、.project.agents 全套、共享规范 | 克隆仓库 → `mvn package -Pdev -DskipTests` 可出包；治理文档无残留 token |
| M1 | 模板可复制性验证：按 `docs/coding-standards.md §7` 用第一个业务模块（界面→代码）跑通全链路 | 新业务接口可调用（springdoc 可见）、SQL 可在 MySQL/SQL Server 执行 |
| M2 | 沉淀与回写：业务中发现的共性需求回写模板/规范 | 模板与规范有增量，升级日志有记录 |

## 2. 里程碑详细

### M0 — 治理与规范落地（已完成）
- [x] 版本控制 + ignore + 骨架提交（工作区单一仓库 `D:\workBuddySpace\member`）
- [x] docs/ 文档中心（README / architecture / coding-standards / agent-guide）
- [x] 本仓库 .project.agents 治理文件（CLAUDE / AGENTS / SELF_CONSTRAINTS / VIBECODING_GUIDE / settings / context 四文档）
- [x] 完成门禁（治理文档无残留模板 token / FILL 标记）
- **验收**：克隆仓库 → `mvn package -Pdev -DskipTests` 可出包；治理文档无残留 token。

### M1 — 模板可复制性验证（首个业务模块）
- **依赖**：M0
- [ ] 按 `docs/coding-standards.md §7` 从界面需求生成：Controller（api 或 controller）→ esb/wsi → pi/impl 或 repository → dao/DTO → SQL（table 双份 + upgrade.xml）
- [ ] 扫描配置核对（`springdoc.packages-to-scan` / `abacus.entitypackages` / `abacus.controllerPackages` 覆盖新包）
- [ ] APP_NAME 四联检 + 前后端 URL 逐字对齐
- [ ] 多库验证：DDL 在 MySQL 与 SQL Server 均可执行；接口冒烟通
- **验收**：新业务接口 springdoc 可见、可调用，SQL 双库可执行。

### M2 — 沉淀与回写
- **依赖**：M1
- [ ] 收集业务开发中的共性需求（分层盲点/框架 jar 能力/规范补缺）
- [ ] 规范盲点回写 `docs/coding-standards.md`（先改 docs/ 再同步各仓库指针）
- [ ] `doc/升级日志.md` 记录模板演进
- **验收**：模板与规范有可见增量，新业务直接复用。

## 3. 并行轨道（与代码 milestone 解耦）

- 无（CI 等暂不纳入；如团队需要可补充构建门禁脚本到 `.project.agents/scripts/`）。

## 4. 完成定义（DoD）

- 构建通过（`mvn package -Pdev -DskipTests` 无错）；涉及多库场景需真机验证。
- 触及的架构变更已回写 `ARCHITECTURE.md`；共享约束变更先改 `docs/coding-standards.md`。
- 已写执行日志（`.project.agents/log/YYYY-MM-DD-<slug>.md`）并追加 `doc/升级日志.md`。

## 5. 跨 milestone 不变量

- I1~I4（ARCHITECTURE §1.3）：主键走 DaoIdGenerator、SQL 参数化、依赖单向、Controller 不拼响应体。
- 任何新增包/依赖方向先登记 `ARCHITECTURE.md` 再写代码。
