diff --git a/config.py b/config.py index 5cf58b3..d6735bf 100644 --- a/config.py +++ b/config.py @@ -10,3 +10,6 @@ DRAFT_URL = os.getenv("DRAFT_URL", "https://cm.jcaigc.cn/openapi/v1/get_draft") # 将容器内的文件路径转成一个下载路径,执行替换操作,即将/app/ -> https://cm.jcaigc.cn/ DOWNLOAD_URL = os.getenv("DOWNLOAD_URL", "https://cm.jcaigc.cn/") + +# 草稿提示URL +TIP_URL = os.getenv("TIP_URL", "https://docs.jcaigc.cn/") \ No newline at end of file diff --git a/exceptions.py b/exceptions.py index 67f11dd..a6f2e33 100644 --- a/exceptions.py +++ b/exceptions.py @@ -12,7 +12,8 @@ class CustomError(Enum): AUTHENTICATION_FAILED = (1004, "认证失败") # ===== 业务错误码 (2000-2999) ===== - DRAFT_CREATE_FAILED = (2001, "草稿创建失败") + INVALID_DRAFT_URL = (2001, "无效的草稿URL") + DRAFT_CREATE_FAILED = (2002, "草稿创建失败") # ===== 系统错误码 (9000-9999) ===== INTERNAL_SERVER_ERROR = (9998, "系统内部错误") diff --git a/src/router/v1.py b/src/router/v1.py index 98749f5..085f26d 100644 --- a/src/router/v1.py +++ b/src/router/v1.py @@ -1,4 +1,3 @@ -from email import message from fastapi import APIRouter, Request, Depends from src.schemas.create_draft import CreateDraftRequest, CreateDraftResponse from src.schemas.add_videos import AddVideosRequest, AddVideosResponse @@ -7,6 +6,7 @@ from src.schemas.gen_video import GenVideoRequest, GenVideoResponse from src.schemas.get_draft import GetDraftRequest, GetDraftResponse from src import service from typing import Annotated +import config router = APIRouter(prefix="/v1", tags=["v1"]) @@ -23,7 +23,7 @@ def create_draft(request: Request, cdr: CreateDraftRequest): height=cdr.height ) - return CreateDraftResponse(draft_url=draft_url) + return CreateDraftResponse(draft_url=draft_url, tip_url=config.TIP_URL) @router.post("/save_draft", response_model=SaveDraftResponse) def save_draft(request: Request, sdr: SaveDraftRequest): @@ -31,11 +31,11 @@ def save_draft(request: Request, sdr: SaveDraftRequest): 保存剪映草稿 (v1版本) """ # 调用service层处理业务逻辑 - draft_url, message = service.save_draft( + draft_url = service.save_draft( draft_url=sdr.draft_url, ) - return SaveDraftResponse(message=message, draft_url=draft_url) + return SaveDraftResponse(draft_url=draft_url) @router.post("/add_videos", response_model=AddVideosResponse) def add_videos(request: Request, avr: AddVideosRequest): diff --git a/src/schemas/create_draft.py b/src/schemas/create_draft.py index 35cf31e..ef94df6 100644 --- a/src/schemas/create_draft.py +++ b/src/schemas/create_draft.py @@ -10,3 +10,4 @@ class CreateDraftRequest(BaseModel): class CreateDraftResponse(BaseModel): """创建草稿响应参数""" draft_url: str = Field(default="", description="草稿URL") + tip_url: str = Field(default="", description="草稿提示URL,获取帮助文档") diff --git a/src/schemas/save_draft.py b/src/schemas/save_draft.py index 5af6e69..81f1971 100644 --- a/src/schemas/save_draft.py +++ b/src/schemas/save_draft.py @@ -8,5 +8,4 @@ class SaveDraftRequest(BaseModel): class SaveDraftResponse(BaseModel): """创建草稿响应参数""" - message: str = Field(default="", description="响应消息") draft_url: str = Field(default="", description="草稿URL") diff --git a/src/service/save_draft.py b/src/service/save_draft.py index 417674c..6ad578e 100644 --- a/src/service/save_draft.py +++ b/src/service/save_draft.py @@ -2,11 +2,12 @@ from src.utils.logger import logger import src.pyJianYingDraft as draft from src.utils.draft_cache import DRAFT_CACHE from src.utils import helper +from exceptions import CustomException, CustomError import config import os -def save_draft(draft_url: str) -> (str, str): +def save_draft(draft_url: str) -> str: """ 保存剪映草稿的业务逻辑 @@ -21,7 +22,8 @@ def save_draft(draft_url: str) -> (str, str): # 从URL中提取草稿ID draft_id = helper.get_url_param(draft_url, "draft_id") if (not draft_id) or (draft_id not in DRAFT_CACHE): - return "", "无效的草稿URL" + logger.info("invalid draft url: %s", draft_url) + raise CustomException(CustomError.INVALID_DRAFT_URL) # 从缓存中获取草稿 script = DRAFT_CACHE[draft_id] @@ -30,5 +32,4 @@ def save_draft(draft_url: str) -> (str, str): script.save() logger.info(f"save draft success: %s", os.path.join(config.DRAFT_DIR, draft_id)) - return draft_url, "草稿保存成功" - + return draft_url