-- 清理 e2e 测试账号产生的模板数据(#1900 模板管理页下线后一并清理历史脏数据) -- -- 使用方法:连接到 staging / production 数据库后执行,例如: -- psql "$DATABASE_URL" -f scripts/cleanup_e2e_test_data.sql -- -- 删除范围: -- 1. 用户账号 email 以 'e2e-gen-' 或 'asset-create_' 开头 -- 2. 这些用户创建的 templates / template_segments / template_categories 记录 -- 本脚本使用事务 + CTE,对生产数据无副作用。 BEGIN; -- 1. 先收集要清理的测试账号 user_id WITH test_users AS ( SELECT id AS user_id FROM users WHERE email LIKE 'e2e-gen-%' OR email LIKE 'asset-create_%' OR email LIKE 'e2e_%' ), -- 2. 这些账号创建的模板 tpl_ids AS ( SELECT id AS template_id FROM templates WHERE user_id IN (SELECT user_id FROM test_users) ), -- 3. 连带清理片段配置 del_segs AS ( DELETE FROM template_segments WHERE template_id IN (SELECT template_id FROM tpl_ids) RETURNING id ), del_tpls AS ( DELETE FROM templates WHERE id IN (SELECT template_id FROM tpl_ids) RETURNING id ), del_cats AS ( DELETE FROM template_categories WHERE user_id IN (SELECT user_id FROM test_users) RETURNING id ) SELECT (SELECT count(*) FROM test_users) AS users_matched, (SELECT count(*) FROM del_segs) AS segments_deleted, (SELECT count(*) FROM del_tpls) AS templates_deleted, (SELECT count(*) FROM del_cats) AS categories_deleted; -- 如需同时删除测试账号本身,取消下面的注释(默认保留账号只删模板数据): -- DELETE FROM users WHERE id IN (SELECT user_id FROM test_users); COMMIT;