You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

4.3 KiB

废除 storyboard_plans 功能 - 执行总结

执行日期: 2026-02-12
执行状态: 已完成


执行清单

数据库层

  • 创建迁移文件 20260212_1800_remove_storyboard_plans.py
  • 删除 storyboard_plans
  • 移除 storyboards.default_plan_id 字段
  • 移除 storyboard_images.plan_id 字段
  • 移除 storyboard_videos.plan_id 字段
  • 删除所有相关索引和触发器
  • 执行迁移:alembic upgrade head
  • 验证数据库变更

Model 层

  • 删除 server/app/models/storyboard_plan.py
  • 更新 server/app/models/__init__.py(移除导入)
  • 更新 server/app/models/storyboard.py(移除 default_plan_id)
  • 更新 server/app/models/storyboard_resource.py(移除 plan_id)

Schema 层

  • 删除 server/app/schemas/storyboard_plan.py

Repository 层

  • 删除 server/app/repositories/storyboard_plan_repository.py

Service 层

  • 删除 server/app/services/storyboard_plan_service.py

API 层

  • 删除 server/app/api/v1/storyboard_plans.py
  • 更新 server/app/api/v1/__init__.py(移除路由注册)

测试层

  • 删除 server/tests/unit/repositories/test_storyboard_plan_repository.py
  • 删除 server/tests/integration/test_storyboard_plans_api.py

文档层

  • 更新 docs/server/adrs/05-storyboard-plans-table.md(标记为已废弃)
  • 创建 docs/server/changelogs/2026-02-12-remove-storyboard-plans.md

数据库验证结果

-- ✅ storyboard_plans 表已删除
SELECT tablename FROM pg_tables WHERE tablename = 'storyboard_plans';
-- 结果: 0 rows

-- ✅ storyboards.default_plan_id 字段已删除
SELECT column_name FROM information_schema.columns 
WHERE table_name = 'storyboards' AND column_name = 'default_plan_id';
-- 结果: 0 rows

-- ✅ storyboard_images.plan_id 字段已删除
SELECT column_name FROM information_schema.columns 
WHERE table_name = 'storyboard_images' AND column_name = 'plan_id';
-- 结果: 0 rows

-- ✅ storyboard_videos.plan_id 字段已删除
SELECT column_name FROM information_schema.columns 
WHERE table_name = 'storyboard_videos' AND column_name = 'plan_id';
-- 结果: 0 rows

代码验证结果

  • 所有 Python 文件编译通过
  • 无语法错误
  • 无导入错误
  • 路由注册正确

删除的文件列表

server/app/models/storyboard_plan.py
server/app/schemas/storyboard_plan.py
server/app/repositories/storyboard_plan_repository.py
server/app/services/storyboard_plan_service.py
server/app/api/v1/storyboard_plans.py
server/tests/unit/repositories/test_storyboard_plan_repository.py
server/tests/integration/test_storyboard_plans_api.py

修改的文件列表

server/app/models/__init__.py
server/app/models/storyboard.py
server/app/models/storyboard_resource.py
server/app/api/v1/__init__.py
docs/server/adrs/05-storyboard-plans-table.md

新增的文件列表

server/alembic/versions/20260212_1800_remove_storyboard_plans.py
docs/server/changelogs/2026-02-12-remove-storyboard-plans.md
docs/server/changelogs/2026-02-12-storyboard-plans-removal-summary.md

当前迁移版本

20260212_1800 (head)

后续工作

前端适配(需要前端团队处理)

  1. 移除 API 调用

    • 删除所有 /storyboards/{id}/plans 相关的 API 调用
    • 移除方案管理相关的 hooks 和 services
  2. 移除 UI 组件

    • 删除方案选择器组件
    • 删除方案列表组件
    • 删除方案创建/编辑表单
  3. 更新数据类型

    • 从 Storyboard 类型中移除 defaultPlanId 字段
    • 从 StoryboardImage/Video 类型中移除 planId 字段

测试验证

建议执行以下测试:

  • 分镜 CRUD 功能测试
  • 分镜资源上传测试
  • 分镜看板功能测试
  • 回归测试确保无影响

回滚方案

如需回滚,执行:

docker exec jointo-server-app alembic downgrade -1

⚠️ 注意:回滚会恢复表结构,但不会恢复已删除的数据。

相关文档