Prompt file imported from caojiafeng76/jjg-admin-react-github (
.github/prompts/db-change.prompt.md). Fill in{{arguments}}before use. Copyright stays with the author.
按数据库变更流程处理这个任务:{{arguments}}
执行要求:
- 先说明本次变更属于哪一类:表结构、索引、约束、RLS、函数、视图、数据修复、查询优化,或其组合。
- 所有数据库任务开始前,必须先调用 Sequential Thinking MCP;即使任务很小,也至少要用它明确变更类型、目标和执行路径。随后必须进一步用它拆解变更目标、影响范围、兼容性风险和回滚思路,再进入检索和实现。
- 建立上下文时必须先调用 Serena MCP 检查相关服务层调用、类型、引用关系和受影响模块;若 Serena 当前不可用或返回
No active project,仍需明确说明已降级,再退回常规搜索。 - 根据任务类型主动使用相关 skill:
- RLS / Auth 绑定 / 员工隔离 ->
.github/skills/supabase-rls-patterns/ - Excel 导入 / 批量 upsert / 数据修复 ->
.github/skills/supabase-bulk-operations/ - 涉及状态规则、领域校验、计算逻辑 ->
.github/skills/business-rules-engine/
- RLS / Auth 绑定 / 员工隔离 ->
- 先阅读相关 schema、迁移、服务层调用、类型定义和现有文档,再决定实施方案;不要在未建立上下文时直接写 SQL。
- 优先评估影响范围:受影响表、现有查询、前端调用、权限模型、历史数据兼容性、回滚难度。
- 如果任务涉及 DDL 或权限策略,优先使用迁移文件表达变更;不要把结构变更混进随意执行的临时 SQL。
- 涉及 Supabase 数据库操作时,优先使用 Supabase MCP;如果 MCP 能力不足、执行失败,或需要复用仓库既有脚本与文件流程,再结合远程 linked CLI。执行前必须明确说明本次为什么选择
apply_migration、execute_sql或 CLI 补充路径。若本地supabase start或其他本地 CLI 容器命令失败,不要停在本地环境问题上:
- DDL / RLS / 约束 / 索引 / 函数 -> 优先 MCP
apply_migration,需要补充仓库流程时再用 migration +bun run db:push - 一次性数据修复 / 临时核对 SQL -> 优先 MCP
execute_sql,需要补充仓库流程时再用bun run db:query -- --file <sql-file>
- 默认禁止手动修改
src/services/database.types.ts;如变更依赖类型更新,应明确提示通过既有生成流程处理。 - 如果任务涉及数据修复或批量更新,先区分一次性修复脚本与长期逻辑修复,避免把临时补丁写进业务代码。
- 如果任务涉及 RLS、鉴权或员工数据隔离,必须显式检查:
- 谁可以读
- 谁可以写
- 是否存在越权路径
- 服务端角色和前端用户态是否混用
- 生成方案时尽量包含:
- 变更目标
- 受影响对象
- 迁移或 SQL 草案
- 应同步调整的服务层或调用层
- 验证与回滚思路
- 除非用户明确要求直接执行,否则优先产出安全的迁移文件、SQL 草案或实现代码,不要假设可以直接改线上数据。
- 如果任务已经执行了数据库改动,必须验证受影响对象、查询结果、策略行为或历史记录,不要只给出“SQL 执行成功”。
- 如果数据库变更会影响前端、服务层、类型或权限链路,必须明确检查并说明这些联动项是否已同步。
- 任何涉及数据库删除、清空或重置的危险操作(如
DELETE、DROP、TRUNCATE、db reset、批量清理)在真正执行前,必须由用户本人明确确认至少 3 次;未达到 3 次确认前,禁止执行。 - 执行了任何代码、迁移、SQL 或文档改动后,必须在根目录
CHANGELOG.MD顶部追加一条记录(日期、类别、范围、摘要、验证),与本次改动在同一工作区变更中完成。 - 最终输出固定包含以下内容:
- 变更类型与目标
- 关键数据库改动
- 关联代码改动
- 是否已更新
CHANGELOG.MD - 验证方案或已完成验证
- 风险、兼容性与回滚说明
额外约束:
- 对生产数据有破坏性的语句要先明确风险,不要默认执行。
- 涉及 RLS、约束或索引时,优先修复根因,不要只为绕过当前报错而放宽权限或删除约束。
- 如果只是查询慢,先评估索引、过滤条件、分页方式和返回字段,不要先做大范围表结构改造。