SuperAPI AI 工具集

migration-guard

部署与运维

查看项目

更新于 10-15 22:37

技能介绍

用途:对数据库 schema 迁移做只读的结构性安全分析,覆盖锁风险、向后兼容、回滚路径和数据保留四类检查。

主要能力:先检测项目所用迁移框架,依据项目根目录特征识别 goose/golang-migrate/atlas(go.mod)、Drizzle(drizzle.config.)、Alembic(alembic.ini 或 alembic/)、Knex(knexfile.)以及原始 .sql 文件;无法匹配时按原始 SQL 分析。随后确定分析范围:使用 $ARGUMENTS 指定的文件,或自上次提交以来变更的迁移文件,命令为 git diff --name-only HEAD | grep -iE '(migrat|schema|.sql)',无结果时回退到 HEAD~1 并应用相同过滤。分析前会读取范围内每个文件。

检查清单:锁风险方面关注大表上的 ALTER TABLE(增删改列、增删索引)、对已有行使用 DEFAULT 的 ADD COLUMN(Postgres 11 之前会重写表)、未使用 CONCURRENTLY 的 CREATE INDEX、强制表重写的列类型变更。向后兼容方面关注无 DEFAULT 的 NOT NULL(破坏旧应用插入)、无弃用期的列或表删除、列重命名(旧查询立即失效)、拒绝旧应用仍会写入数据的新约束。回滚路径方面关注是否存在 down/rollback 迁移、回滚是否数据安全、仅前向迁移是否在注释中说明理由。数据保留方面关注类型放宽是否安全(INT 到 BIGINT)、收窄是否危险(VARCHAR(255) 到 VARCHAR(50))、ENUM 新增是否安全、删除是否可能产生孤立行、DROP COLUMN 是否永久丢失数据(除非先前迁移已复制)。

输出方式:先打印汇总表,列为 Check、Status、Detail,状态取 PASS、WARN 或 FAIL;对每个 WARN/FAIL 在表下给出风险说明与具体修复建议。

限制:该技能为只读,不创建或修改文件,可安全重复运行。锁风险预测需要实时表大小、行数和引擎元数据,而该技能无法访问这些信息,因此锁评估仅为方向性参考,并非确定性结论。