# `tb_system_config` 调研结论 ## 结论 `tb_system_config` **确实是已确认的七月迭代公共基础需求**,不是 UR#48 临时假定或需要重新发明的能力;但它在当前工作区仍是**已规划、已拆票、未实现**状态。 UR#48 应依赖公共基础的第 07、08 号票,不应复制系统配置表、注册表、缓存、超管权限、通用列表/更新 API 或审计壳层。UR#48 自己负责注册两个支付 Key、其值域与钱包不可移除规则,以及资产展示、下单、支付、充值等支付业务校验。 ## 已确认的七月迭代设计 - 标准评审稿将系统配置列为“跨需求基础设施”,目标是把支付方式等受控配置从代码迁移到数据库;数据模型和首批两个支付 Key 均已明确:[7月迭代技术方案-标准评审稿.md:162](/data/zoujin/xj02/junhong_cmp_fiber/docs/7月迭代/7月迭代技术方案-标准评审稿.md:162)、[同文件:170](/data/zoujin/xj02/junhong_cmp_fiber/docs/7月迭代/7月迭代技术方案-标准评审稿.md:170)、[同文件:184](/data/zoujin/xj02/junhong_cmp_fiber/docs/7月迭代/7月迭代技术方案-标准评审稿.md:184)。 - 该稿冻结了更新后删缓存、默认缓存五分钟、未知 Key 不可写、异常回退安全默认值,以及“受控控件而非 JSON 文本框”的规则:[同文件:201](/data/zoujin/xj02/junhong_cmp_fiber/docs/7月迭代/7月迭代技术方案-标准评审稿.md:201)、[同文件:209](/data/zoujin/xj02/junhong_cmp_fiber/docs/7月迭代/7月迭代技术方案-标准评审稿.md:209)。管理接口也已约定为 `GET /api/admin/system/config?module=` 和 `PUT /api/admin/system/config/{config_key}`:[同文件:215](/data/zoujin/xj02/junhong_cmp_fiber/docs/7月迭代/7月迭代技术方案-标准评审稿.md:215)。 - 需求 09 明确卡/设备支付方式读取系统配置、钱包恒定允许、C 端仅展示接口返回集合、订单创建固化方式且支付时再次校验:[同文件:761](/data/zoujin/xj02/junhong_cmp_fiber/docs/7月迭代/7月迭代技术方案-标准评审稿.md:761)。 - 独立系统配置方案提供了 `tb_system_config` DDL、两个 `c2b.payment` 初始化值和唯一 Key 约束:[系统配置.md:35](/data/zoujin/xj02/junhong_cmp_fiber/docs/7月迭代/独立方案/基础规范/系统配置.md:35)、[同文件:54](/data/zoujin/xj02/junhong_cmp_fiber/docs/7月迭代/独立方案/基础规范/系统配置.md:54)。它还定义了 Model、Store、五分钟 Redis 读取辅助能力和管理 API 形态:[同文件:65](/data/zoujin/xj02/junhong_cmp_fiber/docs/7月迭代/独立方案/基础规范/系统配置.md:65)、[同文件:90](/data/zoujin/xj02/junhong_cmp_fiber/docs/7月迭代/独立方案/基础规范/系统配置.md:90)、[同文件:107](/data/zoujin/xj02/junhong_cmp_fiber/docs/7月迭代/独立方案/基础规范/系统配置.md:107)、[同文件:138](/data/zoujin/xj02/junhong_cmp_fiber/docs/7月迭代/独立方案/基础规范/系统配置.md:138)。 - 原始需求 09 也显式声明依赖系统配置,并规定 C 端消费 `allowed_payment_methods`、后台用钱包不可取消的复选框:[需求09-C端支付限制配置化.md:1](/data/zoujin/xj02/junhong_cmp_fiber/docs/7月迭代/独立方案/原需求/需求09-C端支付限制配置化.md:1)、[同文件:116](/data/zoujin/xj02/junhong_cmp_fiber/docs/7月迭代/独立方案/原需求/需求09-C端支付限制配置化.md:116)、[同文件:133](/data/zoujin/xj02/junhong_cmp_fiber/docs/7月迭代/独立方案/原需求/需求09-C端支付限制配置化.md:133)。 ## 已有公共基础 PRD 与票据 公共基础 PRD 已将“受控系统配置壳层”纳入交付范围,并明确当前 `tb_system_config` 尚未落地:[tech-public-foundation/PRD.md:7](/data/zoujin/xj02/junhong_cmp_fiber/.scratch/tech-public-foundation/PRD.md:7)、[同文件:25](/data/zoujin/xj02/junhong_cmp_fiber/.scratch/tech-public-foundation/PRD.md:25)。 - 公共基础是 `tb_system_config` 和其公共索引、约束、必要初始化数据的唯一迁移所有者:[tech-public-foundation/PRD.md:84](/data/zoujin/xj02/junhong_cmp_fiber/.scratch/tech-public-foundation/PRD.md:84)。 - 公共壳层的责任包括受控注册表、超级管理员查询/更新、GORM 事务、Audit 接缝、五分钟 Redis 缓存与安全回退:[同文件:154](/data/zoujin/xj02/junhong_cmp_fiber/.scratch/tech-public-foundation/PRD.md:154)。其中明确划分:UR#48 负责具体支付 Key、支付值域和启停校验;公共基础只负责存储、注册、权限、缓存、API 和审计壳层:[同文件:165](/data/zoujin/xj02/junhong_cmp_fiber/.scratch/tech-public-foundation/PRD.md:165)。 - 当前仓库“没有公共 Outbox 和受控系统配置实现”的状态被 PRD 再次明确记录:[同文件:259](/data/zoujin/xj02/junhong_cmp_fiber/.scratch/tech-public-foundation/PRD.md:259)。 - 下游依赖表将 UR#48 明确列为受 `tb_system_config`、受控 Key 注册、缓存、权限、API 和审计壳层阻塞;并禁止下游复制临时配置中心:[同文件:267](/data/zoujin/xj02/junhong_cmp_fiber/.scratch/tech-public-foundation/PRD.md:267)、[同文件:283](/data/zoujin/xj02/junhong_cmp_fiber/.scratch/tech-public-foundation/PRD.md:283)、[同文件:285](/data/zoujin/xj02/junhong_cmp_fiber/.scratch/tech-public-foundation/PRD.md:285)。 对应票据已存在、均为 `ready-for-agent`,但尚未勾选完成: 1. **07 — 交付受控系统配置注册与查询闭环**:被 01 号公共迁移门禁阻塞;只交付系统配置表、注册、缓存读取和超级管理员列表 API,明确不注册支付具体 Key。[07-controlled-system-config-read.md:1](/data/zoujin/xj02/junhong_cmp_fiber/.scratch/tech-public-foundation/issues/07-controlled-system-config-read.md:1)、[同文件:5](/data/zoujin/xj02/junhong_cmp_fiber/.scratch/tech-public-foundation/issues/07-controlled-system-config-read.md:5)、[同文件:11](/data/zoujin/xj02/junhong_cmp_fiber/.scratch/tech-public-foundation/issues/07-controlled-system-config-read.md:11)。 2. **08 — 交付系统配置更新、权限和审计闭环**:被 07 号票阻塞;交付单 Key 更新、授权、校验、事务、缓存失效和审计接缝。[08-controlled-system-config-update.md:1](/data/zoujin/xj02/junhong_cmp_fiber/.scratch/tech-public-foundation/issues/08-controlled-system-config-update.md:1)、[同文件:5](/data/zoujin/xj02/junhong_cmp_fiber/.scratch/tech-public-foundation/issues/08-controlled-system-config-update.md:5)、[同文件:11](/data/zoujin/xj02/junhong_cmp_fiber/.scratch/tech-public-foundation/issues/08-controlled-system-config-update.md:11)。 因此,UR#48 在真实执行顺序上至少依赖:**公共基础 01 → 07 → 08**;UR#48 可在公共契约稳定后并行实现其支付领域部分,但不可先行落一套替代基础设施。 ## 当前实现核查 截至当前 `HEAD`,仓库没有 `SystemConfig` 模型、`tb_system_config` 迁移、对应 PostgreSQL Store、通用系统配置 Handler/Route 或 `pkg/sysconfig` 读取包。作为对照,现存 `internal/model/system.go` 只定义 `DevCapabilityConfig` 等旧模型,其表名是 `tb_dev_capability_config`,不是 `tb_system_config`:[internal/model/system.go:9](/data/zoujin/xj02/junhong_cmp_fiber/internal/model/system.go:9)、[同文件:23](/data/zoujin/xj02/junhong_cmp_fiber/internal/model/system.go:23)。 迁移目录中也没有包含 `tb_system_config` 或 `c2b.payment` 的 SQL 文件;清理脚本列出的现有“系统配置表”保留集合同样未包含 `tb_system_config`:[scripts/cleanup/main.go:38](/data/zoujin/xj02/junhong_cmp_fiber/scripts/cleanup/main.go:38)。这与公共 PRD 的“尚未落地”状态一致。 ## Git 历史 - 七月迭代标准方案在提交 `d022cc8788999c9e5426063907d6fe3c569bd22c`(2026-07-17,`迭代方案确认`)中确认。 - 公共基础 PRD 与票据在提交 `21702da413979970989a0026ee0e5cbba248e47b`(2026-07-22,`创建相关issues`)中加入;该提交新增第 07、08 号系统配置票据。 - 对所有分支的 Git 历史及当前 Go、迁移、路由和 Store 路径检索,未发现将 `tb_system_config` 实现提交到仓库的证据;命中均为上述规划/票据/文档,或与通用系统配置无关的旧模型。 ## 对 UR#48 拆票的影响 UR#48 不应再包含“建立公共系统配置能力”票。其首张业务票应改为“在公共基础 07、08 完成后,注册 `c2b.payment.card_allowed_methods` 和 `c2b.payment.device_allowed_methods`,并交付支付许可读取/安全默认/资产展示契约”;后续再按订单创建、固定方式支付与取消等完整业务纵向切片拆分。