skygu 36cc491b90 feat(aidop): complete S3 delivery rule pilot 1 week ago
..
01_ado_rule_config.sql 36cc491b90 feat(aidop): complete S3 delivery rule pilot 1 week ago
02_enable_rule_repository_checklist.md 36cc491b90 feat(aidop): complete S3 delivery rule pilot 1 week ago
README.md 36cc491b90 feat(aidop): complete S3 delivery rule pilot 1 week ago

README.md

Rule 配置脚本目录

本目录存放全模块规则配置相关 SQL 草案。

当前文件:

  • 01_ado_rule_config.sql:全模块规则配置表草案,包含 ado_rule_profileado_rule_itemado_rule_schema,以及 S3 / DELIVERY_GENERATE 默认规则种子。
  • 02_enable_rule_repository_checklist.md:数据库规则仓储启用前检查与开关方案。

注意

  • 当前 SQL 已在 aidopdev 研发库执行并验证;预发/生产执行前仍需确认表命名、主键策略、权限、审计字段、版本策略和初始化 ID 段。
  • 规则配置只承载参数、阈值、名单、策略枚举和开关,不承载 SQL、事务顺序、写表目标或 Service 调用链。
  • S3 试点为保持 P5 现有行为,enableExternalPushTracking 草案默认开启;后续正式生产配置仍需结合外部系统消费机制确认。
  • P26 已新增后端实体和 DbRuleConfigRepository 草案。
  • P27 的 RuleConfig:RepositoryMode=Empty|Db 开关方案保留为预发/生产启用参考。
  • P28 研发阶段已直接启用 DbRuleConfigRepository,因此研发库需要执行 DDL 和默认种子;缺表或字段不一致会直接暴露错误。
  • P29 已在 user-mysql-aidopdev 默认库 aidopdev 执行 DDL 和 S3 默认种子,并验证 Profile 1 条、Schema 10 条、Item 10 条。

建议启用顺序

  1. 研发库已完成 01_ado_rule_config.sql DDL、默认种子和读取验证。
  2. 研发阶段已直接启用 DbRuleConfigRepository,并完成 S3 规则读取、覆盖、前端编辑和保存恢复验证。
  3. 预发/生产启用前,按 02_enable_rule_repository_checklist.md 补充仓储开关、缺表保护、权限和回退策略。
  4. 正式上线前需结合真实业务验收,确认 enableExternalPushTracking 等高风险开关的默认值。

研发库执行记录

  • 环境user-mysql-aidopdev / aidopdev
  • 执行内容ado_rule_profileado_rule_itemado_rule_schema DDL 与 S3 / DELIVERY_GENERATE 默认种子。
  • 验证结果:Profile 1 条、Schema 10 条、Item 10 条;仓储查询可返回 10 条生效规则项。
  • 执行提示:P32 已将 ON DUPLICATE KEY UPDATE ... VALUES(col) 调整为 AS new 别名写法,研发库重跑无弃用警告。

最小生成验证记录

  • 接口POST /api/Supply/delivery-schedule/generate
  • 结果demandCount=1createdCount=0skippedCount=1qadTrackingCount=0
  • 规则快照RuleSnapshot.Source=configuredAppliedItems=10
  • 操作日志SysLogOp.Id=805860787408965
  • 说明:本次需求已有关联交货单,因此没有新增业务单据,仅验证 DB 规则读取和操作日志快照链路。

规则覆盖验证记录

  • 临时修改ado_rule_item.defaultLeadDays1 改为 2
  • 接口POST /api/Supply/delivery-schedule/generate
  • 验证结果RuleSnapshot.Options.DefaultLeadDays=2AppliedItems 对应 RuleValue=2
  • 操作日志SysLogOp.Id=805862349242437
  • 恢复结果:已将 ado_rule_item.defaultLeadDays 恢复为 1
  • 说明:匿名接口下 TenantId=0,本轮用全局规则临时覆盖验证,不保留额外租户级测试 Profile。

SQL 幂等重跑记录

  • 调整内容:三段种子 SQL 改为 AS new 行别名写法,替代 VALUES(col)
  • 补充内容ado_rule_schema 种子显式写入 is_enabled=1
  • 验证环境user-mysql-aidopdev / aidopdev
  • 验证结果:Profile、Schema、Item 三段种子 SQL 重跑成功,Warnings=0;默认数据计数保持 1/10/10。

只读查询接口

  • 接口GET /api/RuleConfig/effective-options
  • 默认参数moduleCode=S3scenarioCode=DELIVERY_GENERATE
  • 可选参数tenantIdfactoryId
  • 返回内容:当前生效 RuleSnapshot,包含最终 Options 和 AppliedItems。
  • 说明:接口只读,不修改 ado_rule_*,也不触发 S3 生成。

前端只读入口

  • 页面:S3 / 物料交货计划。
  • 按钮查看当前规则,位于“生成交货单”旁。
  • 展示内容:规则来源、模块/场景、解析时间、租户/工厂、关键 S3 Options、生效配置项数量和 Warnings。
  • 说明:只做业务可读摘要展示,不编辑配置、不保存规则、不触发 S3 生成。

研发阶段编辑入口

  • 接口POST /api/RuleConfig/s3-delivery-generate/save
  • 页面:S3 / 物料交货计划,按钮为 编辑当前规则
  • 保存范围:S3 / DELIVERY_GENERATE 全局默认 Profile 下的既有规则项。
  • 更新方式:直接更新 ado_rule_item.rule_value,保存后返回最新 RuleSnapshot
  • 边界:不新增 Profile/Schema,不做版本发布、审批、回滚和多模块通用编辑器。

保存闭环验证记录

  • 验证项defaultLeadDays
  • 临时保存1 -> 2
  • 验证结果:保存接口返回 RuleSnapshot.Options.DefaultLeadDays=2,查询接口和数据库均确认 rule_value=2
  • 恢复结果:已通过保存接口恢复为 1,查询接口和数据库均确认恢复。
  • 说明:验证过程未触发 S3 生成,不新增业务单据或外部事务。

当前边界

  • S3 研发试点规则链路已完成:DDL、种子、仓储读取、生成规则快照、只读接口、前端查看、前端编辑、保存恢复验证。
  • 多模块规则配置推广暂不真实开发,仅作为后续方向;推广前需先确认公共页面、权限、版本发布、回滚和首个模块试点。
  • 当前任务流仅停留在执行日志和异常入口层面的闭环雏形;通用任务流能力另行立项。

执行前检查清单

  • 表命名:确认 ado_rule_profileado_rule_itemado_rule_schema 是否符合全模块命名约定。
  • 主键策略:确认使用手工固定 ID、雪花 ID,还是数据库自增;当前草案使用固定 ID。
  • ID 段:确认 1003000000001 等 S3 默认种子 ID 不与其它种子冲突。
  • 租户/工厂覆盖:确认 tenant_id = 0factory_id = 0 的全局/租户级语义符合现有多租户模型。
  • 唯一约束:确认 profile_code + tenant_id + factory_id + versionprofile_id + rule_code 能满足后续版本管理。
  • 审计字段:确认是否需要统一使用项目已有 CreateTime/CreateUserId 风格,或保留 created_at/created_by
  • 软删除:确认是否需要 is_deleted 字段;当前草案只使用 is_enabled
  • 外键策略:确认是否添加外键;当前草案不加物理外键,避免跨模块迁移耦合。
  • 高风险默认值:确认 S3 试点 enableExternalPushTracking=true 是否仅用于保持现有 P5 行为,生产正式配置是否需要改为默认关闭。
  • 权限菜单:确认后续规则配置页面归属菜单和权限编码。
  • 缓存策略:确认后续只读服务是否采用 30-60 秒 TTL 缓存。
  • 回滚策略:确认执行 SQL 前是否需要备份同名对象或提供 drop 脚本。

暂不执行原因

  • 当前仅完成 S3 规则试点设计,S4/S8/S9 的规则场景尚未统一评审。
  • 表属于全模块基础设施,需先确认命名、审计字段、权限和版本策略。
  • 高风险开关会影响外部事务写入,需要结合 P8 受控验证。
  • 后端数据库仓储仍为未启用草案,配置页面尚未实现,提前建表价值有限。