bangbang-aigc-server/api/interfaces/poster_interfaces.py

76 lines
1.8 KiB
Python
Raw Normal View History

2025-07-31 15:35:23 +08:00
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
海报生成相关接口定义
"""
from abc import ABC, abstractmethod
from typing import Dict, List, Any, Optional, Union
from dataclasses import dataclass
from pathlib import Path
@dataclass
class PosterRequest:
"""海报生成请求"""
content: str
template_name: str = "vibrant"
size: str = "1080x1080"
style_params: Optional[Dict[str, Any]] = None
@dataclass
class PosterResult:
"""海报生成结果"""
image_path: str
thumbnail_path: Optional[str] = None
metadata: Dict[str, Any] = None
success: bool = True
error_message: Optional[str] = None
class IPosterGenerator(ABC):
"""海报生成器接口"""
@abstractmethod
async def generate_poster(self, request: PosterRequest) -> PosterResult:
"""生成海报"""
pass
@abstractmethod
def get_available_templates(self) -> List[str]:
"""获取可用模板列表"""
pass
class ITextGenerator(ABC):
"""海报文案生成器接口"""
@abstractmethod
async def generate_poster_text(self, content: str, style: str = "default") -> str:
"""为海报生成文案"""
pass
class IPosterService(ABC):
"""海报服务接口 - 应用服务层"""
@abstractmethod
async def create_poster_with_content(
self,
content: str,
template_name: str = "vibrant",
generate_text: bool = True
) -> PosterResult:
"""根据内容创建海报(可选生成专用文案)"""
pass
@abstractmethod
async def batch_generate_posters(
self,
contents: List[str],
template_name: str = "vibrant"
) -> List[PosterResult]:
"""批量生成海报"""
pass