235 lines
6.2 KiB
Markdown
235 lines
6.2 KiB
Markdown
|
|
# 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` 配置
|