diff --git a/backend/app/api/upload.py b/backend/app/api/upload.py index f3f2571..3e19e54 100644 --- a/backend/app/api/upload.py +++ b/backend/app/api/upload.py @@ -59,6 +59,15 @@ def _user_designer_aliases(user: User) -> list[str]: return aliases +def _generate_fallback_title(category: str, designer_name: str, unique_id: str) -> str: + category_name = str(category or "设计素材").strip() or "设计素材" + designer = str(designer_name or "").strip() + suffix = unique_id.replace("-", "")[:6] + if designer: + return f"{category_name}_{designer}_{suffix}" + return f"{category_name}_自动生成_{suffix}" + + def generate_thumbnail(image_path: str, thumb_path: str, size=(400, 400)): """生成缩略图 - 修复透明 PNG 问题""" with Image.open(image_path) as img: @@ -115,7 +124,7 @@ def add_watermark(image_path: str, watermarked_path: str, watermark_text: str = @router.post("", summary="上传作品") async def upload_work( file: UploadFile = File(..., description="作品图片文件"), - title: str = Form(..., description="作品标题"), + title: Optional[str] = Form(None, description="作品标题"), description: Optional[str] = Form(None, description="作品描述"), category: str = Form(..., description="作品分类"), tags: Optional[str] = Form(None, description="标签,逗号分隔"), @@ -191,10 +200,11 @@ async def upload_work( else: tags_str = None resolved_designer = str(designer_name or "").strip() or current_user.nickname or current_user.phone + resolved_title = str(title or "").strip() or _generate_fallback_title(category, resolved_designer, unique_id) # 创建数据库记录 - 修复所有字段问题 work = Work( - title=title, + title=resolved_title, description=description or "", category=category, tags=tags_str, # 修复:使用字符串而不是列表