feat: Phase 1 - 核心重构(去Project层/标题库API/配音库API/清理废弃代码) #74

Merged
xiaoxia merged 4 commits from feat/phase1-core-refactor into develop 2026-06-28 15:50:11 +08:00
Owner

概述

Phase 1 后端核心重构,完成以下四个主要任务:

1. 清理废弃代码

  • 删除 TaskModel/MilestoneModel/TaskIssueModel 及相关文件
  • 删除 ProjectTitleModel/EditPlanModel/EditPlanClipModel 及相关文件
  • 清理 domain/ports/adapters/application/api 各层引用
  • 从 GenerationTaskModel 移除 edit_plan_id 字段
  • 共删除 18 个文件,修改 10+ 个文件

2. 新建标题库 API (/api/v1/titles)

  • 完整的六边形架构实现(Domain → Ports → Adapters → Application → API)
  • CRUD 端点:GET/POST/PUT/DELETE
  • 配额检查:free=50, basic=500, premium=500
  • 软删除机制(is_active=False)

3. 新建配音库 API (/api/v1/voices)

  • 完整的六边形架构实现
  • CRUD 端点:GET/POST/PUT/DELETE
  • 配额检查:free=10, basic=100, premium=100
  • 软删除机制(status="deleted")
  • 支持可选的 project_id 关联

4. 去掉 Project 层依赖

  • 修复 authenticated_user.idauthenticated_user.user.id bug
  • asset_libraries.py: project_id 改为可选查询参数
  • generated_videos.py: project_id 改为可选查询参数
  • 无 project_id 时通过 find_accessible_projects 获取用户可访问的所有项目

5. 数据库迁移

  • 创建 011_phase1_core_refactor.py
  • 删除 6 个废弃表:tasks, milestones, task_issues, project_titles, edit_plans, edit_plan_clips
  • 从 generation_tasks 表删除 edit_plan_id 列

6. 其他改进

  • 迁移 EditingMode 到独立模块 packages/domain/editing_mode.py
  • 注册 titles_router 和 voices_router
  • 添加 get_title_library_repository 和 get_voice_library_repository 依赖
  • 更新 domain/ports __init__.py 导出新实体和仓储接口

技术细节

  • 遵循六边形架构模式(Domain → Ports → Adapters → Application → API)
  • 配额检查通过 QuotaRegistry 实现(Phase 0 建立的基础设施)
  • 软删除:标题库用 is_active=False,配音库用 status="deleted"
  • 配音库支持可选的 project_id 关联(为未来跨项目复用预留)

破坏性变更

⚠️ 注意:此 PR 包含破坏性变更

  • 删除 6 个废弃表(需先备份数据)
  • 删除 /api/v1/edit-plans, /api/v1/project-titles, /api/v1/project-management 端点
  • generation_tasks API 不再包含 edit_plan_id 字段

测试建议

  1. 运行数据库迁移 011_phase1_core_refactor.py
  2. 测试标题库 CRUD API:/api/v1/titles
  3. 测试配音库 CRUD API:/api/v1/voices
  4. 验证配额检查逻辑
  5. 测试 asset_libraries 和 generated_videos 的 project_id 可选功能
  6. 验证现有功能未受影响

相关文件

  • 迁移文件:alembic/versions/011_phase1_core_refactor.py
  • 标题库:packages/domain/title_library.py, apps/api/app/api/routes/titles.py
  • 配音库:packages/domain/voice_library.py, apps/api/app/api/routes/voices.py
  • 路由注册:apps/api/app/api/router.py
  • 依赖注入:apps/api/app/dependencies.py

🤖 Generated with Claude Code

## 概述 Phase 1 后端核心重构,完成以下四个主要任务: ### 1. 清理废弃代码 - 删除 TaskModel/MilestoneModel/TaskIssueModel 及相关文件 - 删除 ProjectTitleModel/EditPlanModel/EditPlanClipModel 及相关文件 - 清理 domain/ports/adapters/application/api 各层引用 - 从 GenerationTaskModel 移除 edit_plan_id 字段 - **共删除 18 个文件,修改 10+ 个文件** ### 2. 新建标题库 API (`/api/v1/titles`) - 完整的六边形架构实现(Domain → Ports → Adapters → Application → API) - CRUD 端点:GET/POST/PUT/DELETE - 配额检查:free=50, basic=500, premium=500 - 软删除机制(is_active=False) ### 3. 新建配音库 API (`/api/v1/voices`) - 完整的六边形架构实现 - CRUD 端点:GET/POST/PUT/DELETE - 配额检查:free=10, basic=100, premium=100 - 软删除机制(status="deleted") - 支持可选的 project_id 关联 ### 4. 去掉 Project 层依赖 - 修复 `authenticated_user.id` → `authenticated_user.user.id` bug - asset_libraries.py: project_id 改为可选查询参数 - generated_videos.py: project_id 改为可选查询参数 - 无 project_id 时通过 `find_accessible_projects` 获取用户可访问的所有项目 ### 5. 数据库迁移 - 创建 `011_phase1_core_refactor.py` - 删除 6 个废弃表:tasks, milestones, task_issues, project_titles, edit_plans, edit_plan_clips - 从 generation_tasks 表删除 edit_plan_id 列 ### 6. 其他改进 - 迁移 EditingMode 到独立模块 `packages/domain/editing_mode.py` - 注册 titles_router 和 voices_router - 添加 get_title_library_repository 和 get_voice_library_repository 依赖 - 更新 domain/ports __init__.py 导出新实体和仓储接口 ## 技术细节 - 遵循六边形架构模式(Domain → Ports → Adapters → Application → API) - 配额检查通过 QuotaRegistry 实现(Phase 0 建立的基础设施) - 软删除:标题库用 `is_active=False`,配音库用 `status="deleted"` - 配音库支持可选的 project_id 关联(为未来跨项目复用预留) ## 破坏性变更 ⚠️ **注意:此 PR 包含破坏性变更** - 删除 6 个废弃表(需先备份数据) - 删除 `/api/v1/edit-plans`, `/api/v1/project-titles`, `/api/v1/project-management` 端点 - `generation_tasks` API 不再包含 `edit_plan_id` 字段 ## 测试建议 1. 运行数据库迁移 `011_phase1_core_refactor.py` 2. 测试标题库 CRUD API:`/api/v1/titles` 3. 测试配音库 CRUD API:`/api/v1/voices` 4. 验证配额检查逻辑 5. 测试 asset_libraries 和 generated_videos 的 project_id 可选功能 6. 验证现有功能未受影响 ## 相关文件 - 迁移文件:`alembic/versions/011_phase1_core_refactor.py` - 标题库:`packages/domain/title_library.py`, `apps/api/app/api/routes/titles.py` - 配音库:`packages/domain/voice_library.py`, `apps/api/app/api/routes/voices.py` - 路由注册:`apps/api/app/api/router.py` - 依赖注入:`apps/api/app/dependencies.py` 🤖 Generated with [Claude Code](https://claude.com/claude-code)
xiaoxia added 1 commit 2026-06-28 15:02:36 +08:00
feat: Phase 1 - 核心重构(去Project层/标题库API/配音库API/清理废弃代码)
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
a43ddb4b63
## 主要变更

### 1. 清理废弃代码(18个文件删除)
- 删除 TaskModel/MilestoneModel/TaskIssueModel 及相关文件
- 删除 ProjectTitleModel/EditPlanModel/EditPlanClipModel 及相关文件
- 清理 domain/ports/adapters/application/api 各层引用
- 从 GenerationTaskModel 移除 edit_plan_id 字段

### 2. 新建标题库 API(/api/v1/titles)
- Domain: TitleLibraryItem 数据类
- Ports: TitleLibraryRepository 接口
- Adapters: SQLAlchemy 实现(软删除)
- Application: CRUD Use Cases + 配额检查(max_titles: free=50, basic=500, premium=500)
- API: GET/POST/PUT/DELETE 端点
- Schema: Pydantic 请求/响应模型

### 3. 新建配音库 API(/api/v1/voices)
- Domain: VoiceLibraryItem 数据类
- Ports: VoiceLibraryRepository 接口
- Adapters: SQLAlchemy 实现(软删除)
- Application: CRUD Use Cases + 配额检查(max_voiceovers: free=10, basic=100, premium=100)
- API: GET/POST/PUT/DELETE 端点
- Schema: Pydantic 请求/响应模型

### 4. 去掉 Project 层依赖
- 修复 authenticated_user.id → authenticated_user.user.id bug
- asset_libraries.py: project_id 改为可选查询参数
- generated_videos.py: project_id 改为可选查询参数
- 无 project_id 时通过 find_accessible_projects 获取用户可访问的所有项目

### 5. 数据库迁移
- 创建 011_phase1_core_refactor.py
- 删除 6 个废弃表:tasks, milestones, task_issues, project_titles, edit_plans, edit_plan_clips
- 从 generation_tasks 表删除 edit_plan_id 列

### 6. 其他改进
- 迁移 EditingMode 到独立模块 packages/domain/editing_mode.py
- 注册 titles_router 和 voices_router
- 添加 get_title_library_repository 和 get_voice_library_repository 依赖
- 更新 domain/ports __init__.py 导出新实体和仓储接口

## 技术细节
- 遵循六边形架构模式
- 配额检查通过 QuotaRegistry 实现
- 软删除:标题库用 is_active=False,配音库用 status='deleted'
- 配音库支持可选的 project_id 关联

## 破坏性变更
- 删除 6 个废弃表(需先备份数据)
- 删除 /api/v1/edit-plans, /api/v1/project-titles, /api/v1/project-management 端点
- generation_tasks API 不再包含 edit_plan_id 字段
xiaoxia added 1 commit 2026-06-28 15:33:05 +08:00
fix: resolve P0 bugs in voice library use cases and clean up obsolete tests
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
abe2bfab63
- Fix voice_id field mapping in CreateVoiceLibraryUseCase (line 60)
- Fix voice_id field mapping in UpdateVoiceLibraryUseCase (lines 88-89)
- Delete obsolete test files for removed ProjectTitle modules
- Remove edit_plans.py reference from architecture boundaries test
Author
Owner

P0 Bug 修复完成

已修复代码审查中发现的 2 个 P0 bug:

Bug 修复

  1. packages/application/voice_library/use_cases.py:60voice_id=command.idvoice_id=command.voice_id
  2. packages/application/voice_library/use_cases.py:88-89if command.id is not None: existing.voice_id = command.idif command.voice_id is not None: existing.voice_id = command.voice_id

测试文件清理

  • 删除 tests/unit/test_project_title_repository.py(引用已删除的 ProjectTitleModel)
  • 删除 tests/unit/test_project_title_generation.py(引用已删除的模块)
  • 更新 tests/unit/test_architecture_boundaries.py(移除 edit_plans.py 引用)

提交信息

  • Commit: abe2bfa
  • 分支: feat/phase1-core-refactor

请复审 🙏

## ✅ P0 Bug 修复完成 已修复代码审查中发现的 2 个 P0 bug: ### Bug 修复 1. **`packages/application/voice_library/use_cases.py:60`** — `voice_id=command.id` → `voice_id=command.voice_id` 2. **`packages/application/voice_library/use_cases.py:88-89`** — `if command.id is not None: existing.voice_id = command.id` → `if command.voice_id is not None: existing.voice_id = command.voice_id` ### 测试文件清理 - 删除 `tests/unit/test_project_title_repository.py`(引用已删除的 ProjectTitleModel) - 删除 `tests/unit/test_project_title_generation.py`(引用已删除的模块) - 更新 `tests/unit/test_architecture_boundaries.py`(移除 `edit_plans.py` 引用) ### 提交信息 - Commit: `abe2bfa` - 分支: `feat/phase1-core-refactor` 请复审 🙏
xiaoxia added 1 commit 2026-06-28 15:43:51 +08:00
test: 添加配音库 UseCase 回归测试(PR#74 P0 bug 修复验证 + 配额逻辑覆盖)
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
6b819678d6
xiaoxia added 1 commit 2026-06-28 15:43:58 +08:00
test: 添加标题库 UseCase 回归测试(配额逻辑 free=50/basic=500/premium=500 覆盖)
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
2f7e50bff9
xiaoxia merged commit 8409c82928 into develop 2026-06-28 15:50:11 +08:00
Sign in to join this conversation.