# 废除 storyboard_plans 功能 - 执行总结 **执行日期**: 2026-02-12 **执行状态**: ✅ 已完成 --- ## 执行清单 ### ✅ 数据库层 - [x] 创建迁移文件 `20260212_1800_remove_storyboard_plans.py` - [x] 删除 `storyboard_plans` 表 - [x] 移除 `storyboards.default_plan_id` 字段 - [x] 移除 `storyboard_images.plan_id` 字段 - [x] 移除 `storyboard_videos.plan_id` 字段 - [x] 删除所有相关索引和触发器 - [x] 执行迁移:`alembic upgrade head` - [x] 验证数据库变更 ### ✅ Model 层 - [x] 删除 `server/app/models/storyboard_plan.py` - [x] 更新 `server/app/models/__init__.py`(移除导入) - [x] 更新 `server/app/models/storyboard.py`(移除 default_plan_id) - [x] 更新 `server/app/models/storyboard_resource.py`(移除 plan_id) ### ✅ Schema 层 - [x] 删除 `server/app/schemas/storyboard_plan.py` ### ✅ Repository 层 - [x] 删除 `server/app/repositories/storyboard_plan_repository.py` ### ✅ Service 层 - [x] 删除 `server/app/services/storyboard_plan_service.py` ### ✅ API 层 - [x] 删除 `server/app/api/v1/storyboard_plans.py` - [x] 更新 `server/app/api/v1/__init__.py`(移除路由注册) ### ✅ 测试层 - [x] 删除 `server/tests/unit/repositories/test_storyboard_plan_repository.py` - [x] 删除 `server/tests/integration/test_storyboard_plans_api.py` ### ✅ 文档层 - [x] 更新 `docs/server/adrs/05-storyboard-plans-table.md`(标记为已废弃) - [x] 创建 `docs/server/changelogs/2026-02-12-remove-storyboard-plans.md` ## 数据库验证结果 ```sql -- ✅ 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 功能测试 - [ ] 分镜资源上传测试 - [ ] 分镜看板功能测试 - [ ] 回归测试确保无影响 ## 回滚方案 如需回滚,执行: ```bash docker exec jointo-server-app alembic downgrade -1 ``` ⚠️ 注意:回滚会恢复表结构,但不会恢复已删除的数据。 ## 相关文档 - [ADR 05: 分镜方案表设计](../adrs/05-storyboard-plans-table.md) - 已标记为废弃 - [Changelog: 移除 storyboard_plans 功能](./2026-02-12-remove-storyboard-plans.md) - [迁移脚本](../../alembic/versions/20260212_1800_remove_storyboard_plans.py)