8.5 KiB
tb_system_config 调研结论
结论
tb_system_config 确实是已确认的七月迭代公共基础需求,不是 UR#48 临时假定或需要重新发明的能力;但它在当前工作区仍是已规划、已拆票、未实现状态。
UR#48 应依赖公共基础的第 07、08 号票,不应复制系统配置表、注册表、缓存、超管权限、通用列表/更新 API 或审计壳层。UR#48 自己负责注册两个支付 Key、其值域与钱包不可移除规则,以及资产展示、下单、支付、充值等支付业务校验。
已确认的七月迭代设计
- 标准评审稿将系统配置列为“跨需求基础设施”,目标是把支付方式等受控配置从代码迁移到数据库;数据模型和首批两个支付 Key 均已明确:7月迭代技术方案-标准评审稿.md:162、同文件:170、同文件:184。
- 该稿冻结了更新后删缓存、默认缓存五分钟、未知 Key 不可写、异常回退安全默认值,以及“受控控件而非 JSON 文本框”的规则:同文件:201、同文件:209。管理接口也已约定为
GET /api/admin/system/config?module=和PUT /api/admin/system/config/{config_key}:同文件:215。 - 需求 09 明确卡/设备支付方式读取系统配置、钱包恒定允许、C 端仅展示接口返回集合、订单创建固化方式且支付时再次校验:同文件:761。
- 独立系统配置方案提供了
tb_system_configDDL、两个c2b.payment初始化值和唯一 Key 约束:系统配置.md:35、同文件:54。它还定义了 Model、Store、五分钟 Redis 读取辅助能力和管理 API 形态:同文件:65、同文件:90、同文件:107、同文件:138。 - 原始需求 09 也显式声明依赖系统配置,并规定 C 端消费
allowed_payment_methods、后台用钱包不可取消的复选框:需求09-C端支付限制配置化.md:1、同文件:116、同文件:133。
已有公共基础 PRD 与票据
公共基础 PRD 已将“受控系统配置壳层”纳入交付范围,并明确当前 tb_system_config 尚未落地:tech-public-foundation/PRD.md:7、同文件:25。
- 公共基础是
tb_system_config和其公共索引、约束、必要初始化数据的唯一迁移所有者:tech-public-foundation/PRD.md:84。 - 公共壳层的责任包括受控注册表、超级管理员查询/更新、GORM 事务、Audit 接缝、五分钟 Redis 缓存与安全回退:同文件:154。其中明确划分:UR#48 负责具体支付 Key、支付值域和启停校验;公共基础只负责存储、注册、权限、缓存、API 和审计壳层:同文件:165。
- 当前仓库“没有公共 Outbox 和受控系统配置实现”的状态被 PRD 再次明确记录:同文件:259。
- 下游依赖表将 UR#48 明确列为受
tb_system_config、受控 Key 注册、缓存、权限、API 和审计壳层阻塞;并禁止下游复制临时配置中心:同文件:267、同文件:283、同文件:285。
对应票据已存在、均为 ready-for-agent,但尚未勾选完成:
- 07 — 交付受控系统配置注册与查询闭环:被 01 号公共迁移门禁阻塞;只交付系统配置表、注册、缓存读取和超级管理员列表 API,明确不注册支付具体 Key。07-controlled-system-config-read.md:1、同文件:5、同文件:11。
- 08 — 交付系统配置更新、权限和审计闭环:被 07 号票阻塞;交付单 Key 更新、授权、校验、事务、缓存失效和审计接缝。08-controlled-system-config-update.md:1、同文件:5、同文件: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、同文件:23。
迁移目录中也没有包含 tb_system_config 或 c2b.payment 的 SQL 文件;清理脚本列出的现有“系统配置表”保留集合同样未包含 tb_system_config: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,并交付支付许可读取/安全默认/资产展示契约”;后续再按订单创建、固定方式支付与取消等完整业务纵向切片拆分。