from fastapi import APIRouter, Depends, File, Form, HTTPException, UploadFile from sqlalchemy.orm import Session from ..database import get_db from ..services.template_service import create_template_record, store_template_file router = APIRouter(prefix="/api/templates", tags=["templates"]) @router.post("/upload") def upload_template( file: UploadFile = File(...), name: str = Form(...), type: str = Form("report"), db: Session = Depends(get_db), ): """上传 Word 模板并创建模板记录。""" try: stored_path, _ = store_template_file(file) template = create_template_record(db, name=name, file_path=stored_path, type=type) except ValueError as exc: raise HTTPException(status_code=400, detail=str(exc)) from exc except Exception as exc: db.rollback() raise HTTPException(status_code=500, detail="模板上传失败") from exc return { "data": { "template_id": template.id, "name": template.name, "status": "uploaded", }, "message": "ok", }