feat: 添加AI模板管理系统和Docker配置

- 实现面向对象的模板管理系统
- 添加N8n模板抽象类和具体实现
- 创建老照片修复上色模板
- 创建修人物表情闭眼模板
- 集成BowongAI服务
- 添加完整的Docker配置(多阶段构建)
- 添加docker-compose配置
- 完善项目文档和API设计
This commit is contained in:
2025-09-03 17:37:30 +08:00
parent 7e42c9e756
commit e30d7cc4da
25 changed files with 6734 additions and 24 deletions

View File

@@ -0,0 +1,195 @@
# AI模板管理系统总结 - 面向对象设计
## 🎯 设计理念
您的建议非常正确!使用面向对象的设计模式比数据库方案更加优雅和实用:
```typescript
export abstract class Template<TInput, TOutput> {}
export abstract class ImageGenerateTemplate extends Template {}
export abstract class VideoGenerateTemplate extends Template {}
export class TemplateManager {}
```
## 🏗️ 核心架构
### 1. 抽象类层次结构
```
Template (基础抽象类)
├── ImageGenerateTemplate (图片生成抽象类)
│ ├── OutfitChangeTemplate (换装模板)
│ ├── StyleTransferTemplate (风格转换模板)
│ └── BackgroundReplaceTemplate (背景替换模板)
└── VideoGenerateTemplate (视频生成抽象类)
├── ObjectRemovalTemplate (抠图模板)
└── MotionGenerateTemplate (动作生成模板)
```
### 2. 核心组件
- **Template**: 基础抽象类,定义统一接口
- **TemplateManager**: 模板管理器,负责注册和执行
- **TemplateFactory**: 模板工厂,创建所有模板实例
- **TemplateService**: 业务服务层,集成积分系统
## ✅ 面向对象方案的优势
### 🔒 类型安全
```typescript
// 编译时就能发现错误
const template: ImageGenerateTemplate = new OutfitChangeTemplate();
const result = await template.execute(input, context); // 类型检查
```
### 🧬 代码复用
```typescript
// 基类提供通用功能
export abstract class ImageGenerateTemplate extends Template {
// 通用的图片参数验证
async validateInput(input: ImageGenerateInput): Promise<string[]> {
// 共享的验证逻辑
}
}
```
### 🚀 易于扩展
```typescript
// 添加新模板只需继承和实现
@Injectable()
export class NewTemplate extends ImageGenerateTemplate {
readonly metadata = { /* 模板信息 */ };
async execute(input, context) {
// 具体实现
}
getParameterDefinitions() {
// 参数定义
}
}
```
### 🛠️ IDE支持
- 完整的代码提示和自动补全
- 重构时自动更新所有引用
- 编译时错误检查
- 调试时的完整类型信息
## 📊 与数据库方案对比
| 特性 | 面向对象方案 | 数据库方案 |
|------|-------------|-----------|
| **类型安全** | ✅ 编译时检查 | ❌ 运行时检查 |
| **代码复用** | ✅ 继承机制 | ❌ 需要额外逻辑 |
| **扩展性** | ✅ 新增类即可 | ❌ 需要数据库迁移 |
| **性能** | ✅ 内存中执行 | ❌ 数据库查询开销 |
| **维护性** | ✅ 代码即文档 | ❌ 需要维护数据结构 |
| **版本控制** | ✅ Git管理 | ❌ 数据库版本管理复杂 |
| **测试** | ✅ 单元测试友好 | ❌ 需要数据库环境 |
| **部署** | ✅ 无状态部署 | ❌ 需要数据库同步 |
## 🎨 具体实现示例
### 换装模板
```typescript
@Injectable()
export class OutfitChangeTemplate extends ImageGenerateTemplate {
readonly metadata: TemplateMetadata = {
code: 'outfit_change_v1',
name: '智能换装',
description: '上传人物图片描述想要的服装AI自动生成换装效果',
category: '换装',
creditCost: 15,
version: '1.0.0',
};
async execute(input: OutfitChangeInput, context: TemplateExecutionContext) {
const prompt = this.buildPrompt(input);
const result = await this.stabilityAI.imageToImage({
prompt,
initImage: input.inputImage,
strength: 0.8,
});
return this.formatOutput(result);
}
getParameterDefinitions(): ParameterDefinition[] {
return [
{
key: 'inputImage',
displayName: '人物图片',
type: ParameterType.IMAGE,
validation: { required: true },
order: 1,
},
{
key: 'clothingDescription',
displayName: '服装描述',
type: ParameterType.STRING,
validation: { required: true, minLength: 3, maxLength: 200 },
order: 2,
},
];
}
}
```
## 🔧 使用方式
### 前端调用
```typescript
// 统一的调用接口不管底层是什么AI模型
const result = await fetch('/api/templates/outfit_change_v1/execute', {
method: 'POST',
body: JSON.stringify({
inputImage: 'data:image/jpeg;base64,...',
clothingDescription: '红色连衣裙',
style: 'elegant'
})
});
```
### 添加新模板
```typescript
// 1. 创建模板类
export class MyTemplate extends ImageGenerateTemplate {
// 实现抽象方法
}
// 2. 在工厂中注册
export class TemplateFactory {
createAllTemplates(): Template[] {
return [
new OutfitChangeTemplate(),
new MyTemplate(), // 添加新模板
];
}
}
```
## 🎯 核心价值
### 1. **统一抽象**
不同的AI模型Stability AI、RunwayML、OpenAI等通过统一的模板接口调用前端无需关心底层实现差异。
### 2. **类型安全**
TypeScript的类型系统确保编译时就能发现接口不匹配、参数错误等问题。
### 3. **易于维护**
每个模板都是独立的类,修改一个模板不会影响其他模板,代码结构清晰。
### 4. **快速扩展**
添加新的AI生成功能只需要继承对应的抽象类实现几个方法即可。
### 5. **测试友好**
每个模板类都可以独立进行单元测试,不需要复杂的数据库环境。
## 🚀 总结
面向对象的模板管理系统完美解决了您提出的问题:
1. **消除调用方式不一致**: 通过抽象类统一接口
2. **消除参数结果不一致**: 通过类型定义标准化
3. **简化模板管理**: 通过代码而非数据库管理
4. **提升开发效率**: 通过继承和多态减少重复代码
这个设计既保持了灵活性,又提供了强类型保障,是一个非常优雅的解决方案!