# 日常发布与首次 seed 初始化分离 ## Goal 规划 existing 发布不自动执行 seed,保留 initialize 初始化能力、缺配置停止和数据库生命周期隔离 ## Requirements - 日常 existing 发布不再自动运行 seed:config / seed:trialrun,不重写管理员维护的开关、工作流、日历等配置。 - initialize 保留首次建库和初始化能力;非法模式失败关闭,不以补配置为由自动切入初始化模式。 - 保留既有迁移门禁、数据库生命周期隔离、健康等待、日志及应用切换门禁。 - 缺少必需配置时,在应用切换前停止并给出脱敏缺项类别与维护路径;不自动补齐生产数据。 - 未来必要的数据升级采用明确版本化步骤,不把 seed 当作通用升级器;本轮不搭建新的迁移平台。 ## Scope 先核对 deploy.sh、Compose init 默认命令及受支持的调用入口,设计初始化/升级分流和最小只读配置前置检查;实施候选为部署入口、必要的配置检查脚本、定向回归、原部署规约与本 task。 ## Out of Scope 用户已批准独立工作树实施与本地验证;不部署,不改业务权限、真实账号、银行卡、审批链,不回填生产数据,不运行生产 seed/migrate,不启用 R1/阶段 B,不重构全部 seed 函数或安装新运行器。真实 PostgreSQL 合成空库允许用于本地验证,不使用生产备份。 ## Acceptance Criteria - [x] 已批准的最终方案覆盖部署脚本与 Compose init 默认路径,不留无条件 seed 旁路。 - [x] initialize 在合成空库初始化成功;existing 对刻意修改过的关键配置不重写、不递增 seed 版本;重复执行稳定。 - [x] 只读缺项检查不把“与默认值不同”误判为缺配置;缺项/查询失败在切应用前停止,不自动 seed。 - [x] 原数据库生命周期隔离回归不退步,existing 不启动或重建数据库。 - [x] 测试覆盖非法模式、初始化失败、迁移失败、配置缺失及直接 init 入口;不能因提前退出得到零写入假通过。 - [x] 独立复核能力、剩余发布风险和生产授权分别标明;本地通过不表示公网已生效。 ## Test Plan 先复用现有本地合成部署测试,截获外部命令;配置检查增加定向单测及隔离合成库测试。空库验证 initialize,预置自定义开关/工作流/日历的已有库验证 existing 保持原值和版本,migration 对比单列,不将“无 seed”说成“无数据库写入”。具体必需配置清单和测试入口在方案收敛前完成源码核实。 ## Notes - 用户在明确列明统一入口、显式模式及三类非空硬门禁后回复“是”,批准独立工作树实施和本地验证;已通过官方 start 激活。提交、推送和生产部署不在授权内。 - 关联 09-05-existing-deploy-db-lifecycle-isolation,其“不改 seed 内容和顺序”是旧任务范围约束,不在旧任务内偷偷扩大改动。本任务单独定义新的分流合同。