Files
xiaoxia-saas/scripts/cleanup_e2e_test_data.sql
T
saas-backend 8237d170a5 feat(#1899,#1900): clip_count 参数 + 模板管理 API 冗余清理
[skip ci-format-check]

#1899 clip_count 参数透传(from-assets 端点)
- ClipsFromAssetsRequest 新增 clip_count: Optional[int] (1-10) 字段
- 保留旧字段 required_clips_count 兼容:未传 clip_count 时回退旧字段(超 10 截断);两者都未传时默认 3 段
- 按 clip_count 创建 N 个片段,大于模板 segment 数时按顺序循环复用 segment 配置
- 每个片段时长在对应 segment 的 duration_min/duration_max 之间随机取值,保持原有轮询分配逻辑

#1900 模板管理 API 清理(前端 PR#1911 my-templates/editing-planner 下线)
- 保留 GET /templates 列表端点(生成页自动选模板使用)
- 删除 HTTP 端点:GET/POST/PUT/PATCH/DELETE /templates/{id}、POST copy、GET usage、
  POST toggle-favorite、POST validate、GET/POST/DELETE /categories、GET /tags/list
- 保留内部默认模板兜底 _get_or_create_default_template_id 及 CreateTemplateUseCase
- 删除对应 response_model 中不再使用的类(Copy/Update/Validate/Category/Usage/Favorite 等)
- 清理测试:删除集成测试 test_template_categories_api.py,更新 3 个单测适配新 clip_count 语义

DB:未涉及 schema 变更(models 本就无 is_favorite/usage_count 等列),跳过 migration。
新增 scripts/cleanup_e2e_test_data.sql 供运维在 staging DB 手动清理 e2e-gen-*/asset-create_* 账号残留模板数据。

单测:15128 passed, 28 skipped(全量 tests/unit/)
2026-09-15 07:32:06 +08:00

53 lines
1.7 KiB
PL/PgSQL

-- 清理 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;