# 03 — 新建店铺原子复制角色信用模板

**What to build:** 创建代理店铺时，系统在一个 PostgreSQL 事务中重新读取唯一默认客户角色，并把当时的信用模板一次性复制到新主钱包。店铺、初始账号、角色关系和两个钱包任一步失败都不会留下半成品。

**Blocked by:** `.scratch/ur38-agent-main-wallet-credit/issues/02-role-default-credit-template.md` — 02 — 配置客户角色的新建代理默认信用模板

**Status:** ready-for-agent

**架构通道:** 主通道为简单写 Application 事务脚本，辅助通道为 Infrastructure。

**完整业务边界:** 本票收口现有店铺创建完整用例及信用模板快照。明确不迁移店铺编辑、查询、禁用和其他 CRUD，不允许创建请求直接覆盖信用字段，也不改变创建后的角色维护语义。

- [ ] 创建用例在事务内重新读取并校验请求中的唯一默认角色是启用的客户角色，不能使用事务外过期快照决定钱包信用。
- [ ] 店铺、初始主账号、账号角色、店铺角色、主钱包、佣金钱包和信用模板复制在同一 PostgreSQL 事务内全成全败。
- [ ] 主钱包复制角色当时的模板，佣金钱包固定关闭/0；创建请求中的未知或显式信用字段不能改变快照结果。
- [ ] 模板更新与并发创建的事务快照语义稳定可验证，创建完成后的角色模板或店铺角色变化均不影响钱包。
- [ ] 故障注入集成测试逐步覆盖每个写入点，证明任一步失败均不残留店铺、账号、关系或钱包半成品。
- [ ] 现有店铺创建权限、校验、响应和非信用字段行为保持兼容，并更新相关中文功能文档。
