Files
leaudit-platform-backend/docs/接口/旧规则绑定表下线观察与删表草案.md
T

1.6 KiB

旧规则绑定表下线观察与删表草案

当前策略

  • 新主链路:leaudit_rule_group_bindings
  • 旧兼容表:leaudit_rule_type_bindings
  • 当前仅保留 UpdateBinding / DeleteBinding 对历史 BindingId 的 fallback

已完成

  • 文档类型保存不再双写旧表
  • CreateBinding 不再 fallback 写旧表
  • 规则绑定主读链路优先读取新分组绑定

观察期要看什么

1. 后端日志

当前已经在以下场景增加明确日志:

  • rule binding legacy fallback hit on update
  • rule binding legacy fallback hit on delete

如果观察期内不再出现以上日志,说明已经基本没有历史旧 BindingId 命中。

2. 数据检查

执行:

psql ... -f scripts/precheck_drop_legacy_rule_type_bindings.sql

重点看:

  • doc_types_legacy_only = 0
  • 新链路绑定明细完整
  • 旧表活动绑定仅剩历史冗余数据

建议收口顺序

  1. 保持现状进入观察期
  2. 连续一段时间无 fallback 日志
  3. 删除 UpdateBinding / DeleteBinding 的旧表 fallback
  4. 再执行删表 SQL

删表前条件

  • 前端主链路全部走评查点分组绑定接口
  • 不再有外部脚本调用旧 /api/rule-sets/bindings/{bindingId} 历史 ID
  • 观察期日志为 0
  • doc_types_legacy_only = 0

删表 SQL 草案

BEGIN;

DROP TABLE IF EXISTS leaudit_rule_type_bindings;

COMMIT;

回滚草案

如果只是删 fallback 代码但还没删表,直接回滚代码即可。

如果已经删表,必须依赖:

  • 事先数据库备份
  • 或按历史 DDL 重建表结构后再回灌数据

因此删表动作必须放在数据库备份之后执行。