TravelContentCreator/docs/MIGRATION_PROGRESS.md

235 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# TravelContentCreator 架构迁移进度
## 迁移状态
| Phase | 状态 | 完成日期 |
|-------|------|---------|
| Phase 1: 基础结构创建 | ✅ 完成 | 2024-12-08 |
| Phase 2: 引擎封装 | ✅ 完成 | 2024-12-08 |
| Phase 3: API 集成 | ✅ 完成 | 2024-12-08 |
| Phase 4: 基础设施层 | ✅ 完成 | 2024-12-08 |
| Phase 5: ppid 支持 | ✅ 完成 | 2024-12-08 |
| Phase 6: 旧代码拆分 | ✅ 完成 | 2024-12-08 |
| Phase 7: 清理优化 | 🔲 待开始 | - |
---
## Phase 1: 基础结构创建 ✅
### 已完成
1. **路径配置** (`config/paths.json`)
- 项目路径配置化,避免硬编码
2. **领域层结构** (`domain/`)
```
domain/
├── __init__.py
└── aigc/
├── __init__.py
├── engine_registry.py # 引擎注册表
├── engine_executor.py # 引擎执行器
├── engines/
│ ├── __init__.py
│ ├── base.py # 引擎基类
│ ├── poster_generate.py # 海报生成引擎
│ ├── content_generate.py # 内容生成引擎
│ └── topic_generate.py # 选题生成引擎
└── shared/
├── __init__.py
├── component_factory.py # 组件工厂
├── llm_client.py # LLM 客户端
├── prompt_builder.py # 提示词构建器
├── image_processor.py # 图片处理器
├── database_accessor.py # 数据库访问器
└── file_storage.py # 文件存储
```
---
## Phase 2: 引擎封装 ✅
### 已完成
1. **PosterGenerateEngine** - 封装现有 PosterService
2. **ContentGenerateEngine** - 封装现有 TweetService 内容生成
3. **TopicGenerateEngine** - 封装现有 TweetService 选题生成
### 引擎特性
- 统一的参数 Schema 定义
- 自动参数验证
- 进度追踪
- 执行时间预估
---
## Phase 3: API 集成 ✅
### 已完成
1. **AIGC 统一路由** (`api/routers/aigc.py`)
- `POST /api/v2/aigc/execute` - 执行引擎
- `GET /api/v2/aigc/task/{task_id}/status` - 查询任务状态
- `POST /api/v2/aigc/task/{task_id}/cancel` - 取消任务
- `GET /api/v2/aigc/engines` - 列出所有引擎
- `GET /api/v2/aigc/engines/{engine_id}` - 获取引擎详情
- `GET /api/v2/aigc/tasks` - 列出任务
- `POST /api/v2/aigc/tasks/cleanup` - 清理任务
2. **主应用集成** (`api/main.py`)
- V1 API 保持不变
- V2 API 新增 AIGC 统一入口
---
## Phase 4: 基础设施层 ✅
### 已完成
1. **数据库连接管理** (`infrastructure/database/connection.py`)
- 连接池管理
- 配置加载(支持环境变量)
- 上下文管理器
2. **Repository 基类** (`infrastructure/database/base_repository.py`)
- 通用 CRUD 操作
- 软删除支持
- 批量查询
3. **具体 Repository** (`infrastructure/database/repositories/`)
- `ScenicSpotRepository` - 景区
- `ProductRepository` - 产品
- `ProductPackageRepository` - 套餐 (ppid)
- `StyleRepository` - 风格
- `AudienceRepository` - 受众
- `TemplateRepository` - 模板
---
## Phase 5: ppid 支持 ✅
### 已完成
1. **所有引擎支持 ppid 参数**
- `poster_generate` - 海报生成
- `content_generate` - 内容生成
- `topic_generate` - 选题生成
2. **ppid 解析逻辑**
- `ProductPackageRepository.resolve_ids(ppid)` - 解析为 scenic_spot_id + product_id
- `DatabaseAccessor.resolve_ppid(ppid)` - 便捷方法
3. **与 Java 端对齐**
- 参考 `AigcCompatibilityService.getOriginalIdsByPackageId()`
- 统一使用 ppid 作为入口
---
## Phase 6: 旧代码拆分 ✅
### 已完成
1. **海报领域模块** (`domain/poster/`)
- `TemplateManager` - 模板加载和管理
- `FabricGenerator` - Fabric.js JSON 生成
- `PosterRenderer` - 海报渲染和输出
2. **内容领域模块** (`domain/content/`)
- `TopicEngine` - 选题生成引擎
- `ContentEngine` - 内容生成引擎
- `JudgeEngine` - 内容审核引擎
- `TopicIDMappingManager` - ID 映射管理
3. **引擎集成**
- `PosterGenerateEngine` 可使用新的 `TemplateManager`, `FabricGenerator`, `PosterRenderer`
- `TopicGenerateEngine` 可使用新的 `TopicEngine`
- `ContentGenerateEngine` 可使用新的 `ContentEngine`, `JudgeEngine`
### 迁移策略
当前采用**渐进式迁移**
- 新引擎同时保留旧服务调用和新模块调用
- 可通过配置切换使用哪个实现
- 验证新模块功能后,逐步移除旧服务依赖
---
## Phase 7: 清理优化 (待开始)
### 计划
1. 删除冗余代码
2. 更新 import 路径
3. 添加单元测试
4. 性能优化
---
## 使用指南
### 新增 AIGC 功能
只需创建一个引擎文件:
```python
# domain/aigc/engines/new_feature.py
from .base import BaseAIGCEngine, EngineResult
class NewFeatureEngine(BaseAIGCEngine):
engine_id = "new_feature"
engine_name = "新功能"
version = "1.0.0"
description = "功能描述"
def get_param_schema(self):
return {
"param1": {"type": "str", "required": True, "desc": "参数1"},
}
async def execute(self, params):
# 实现逻辑
return EngineResult(success=True, data={...})
```
引擎会被自动发现和注册。
### 调用 API
```bash
# 执行引擎 (同步)
curl -X POST http://localhost:8000/api/v2/aigc/execute \
-H "Content-Type: application/json" \
-d '{"engine": "poster_generate", "params": {"template_id": "vibrant", "images": [...]}}'
# 执行引擎 (异步)
curl -X POST http://localhost:8000/api/v2/aigc/execute \
-H "Content-Type: application/json" \
-d '{"engine": "poster_generate", "params": {...}, "async_mode": true}'
# 查询任务状态
curl http://localhost:8000/api/v2/aigc/task/{task_id}/status
# 列出所有引擎
curl http://localhost:8000/api/v2/aigc/engines
```
---
## 测试
```bash
# 运行测试
cd /root/TravelContentCreator
python3 tests/test_aigc_engines.py
```
---
## 注意事项
1. **V1 API 保持兼容** - 现有调用不受影响
2. **渐进式迁移** - 新引擎封装旧服务,逐步替换
3. **路径配置化** - 所有路径通过 `config/paths.json` 配置