123 lines
4.8 KiB
Python
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.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
海报API模型定义 - 简化版本
只保留核心功能重点优化图片ID使用追踪
"""
from typing import List, Dict, Any, Optional
from pydantic import BaseModel, Field
class PosterGenerateRequest(BaseModel):
"""海报生成请求模型"""
content_id: Optional[int] = Field(None, description="内容ID")
product_id: Optional[int] = Field(None, description="产品ID")
scenic_spot_id: Optional[int] = Field(None, description="景区ID")
image_ids: Optional[List[int]] = Field(None, description="图像ID列表")
generate_collage: bool = Field(False, description="是否生成拼图")
class Config:
schema_extra = {
"example": {
"content_id": 1,
"product_id": 2,
"scenic_spot_id": 3,
"image_ids": [1, 2, 3],
"generate_collage": True
}
}
class ImageUsageInfo(BaseModel):
"""图像使用信息模型 - 重点追踪图片使用情况"""
image_id: int = Field(..., description="图像ID")
usage_count: int = Field(..., description="使用次数")
first_used_at: str = Field(..., description="首次使用时间")
last_used_at: str = Field(..., description="最后使用时间")
usage_context: List[str] = Field(default_factory=list, description="使用场景列表")
class PosterGenerateResponse(BaseModel):
"""海报生成响应模型"""
request_id: str = Field(..., description="请求ID")
poster_base64: str = Field(..., description="海报图像的base64编码")
content_info: Optional[Dict[str, Any]] = Field(None, description="内容信息")
product_info: Optional[Dict[str, Any]] = Field(None, description="产品信息")
scenic_spot_info: Optional[Dict[str, Any]] = Field(None, description="景区信息")
used_image_ids: List[int] = Field(default_factory=list, description="使用的图像ID列表")
image_usage_info: List[ImageUsageInfo] = Field(default_factory=list, description="图像使用详情")
collage_base64: Optional[str] = Field(None, description="拼图的base64编码")
metadata: Dict[str, Any] = Field(default_factory=dict, description="处理元数据")
class Config:
schema_extra = {
"example": {
"request_id": "poster-20240715-123456-a1b2c3d4",
"poster_base64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...",
"content_info": {
"id": 1,
"title": "【北京故宫】避开人潮的秘密路线",
"content": "故宫,作为中国最著名的文化遗产之一...",
"tag": "北京旅游,故宫,旅游攻略"
},
"used_image_ids": [1, 2, 3],
"image_usage_info": [
{
"image_id": 1,
"usage_count": 5,
"first_used_at": "2024-07-15 10:30:00",
"last_used_at": "2024-07-15 10:30:00",
"usage_context": ["poster_generation", "collage_creation"]
}
],
"collage_base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ...",
"metadata": {
"total_images_used": 3,
"has_collage": True,
"processing_time": "2.5s"
}
}
}
class ImageUsageRequest(BaseModel):
"""图像使用查询请求模型"""
image_ids: List[int] = Field(..., description="要查询的图像ID列表")
class Config:
schema_extra = {
"example": {
"image_ids": [1, 2, 3, 4, 5]
}
}
class ImageUsageResponse(BaseModel):
"""图像使用情况响应模型"""
request_id: str = Field(..., description="请求ID")
image_usage_info: List[ImageUsageInfo] = Field(..., description="图像使用详情")
summary: Dict[str, Any] = Field(..., description="使用情况汇总")
class Config:
schema_extra = {
"example": {
"request_id": "usage-20240715-123456-a1b2c3d4",
"image_usage_info": [
{
"image_id": 1,
"usage_count": 5,
"first_used_at": "2024-07-15 10:30:00",
"last_used_at": "2024-07-15 10:30:00",
"usage_context": ["poster_generation", "collage_creation"]
}
],
"summary": {
"total_images": 5,
"total_usage_count": 15,
"most_used_image_id": 1,
"least_used_image_id": 5
}
}
}