expand.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. """标书扩写相关 API 路由。"""
  2. import json
  3. import logging
  4. from fastapi import APIRouter, File, UploadFile
  5. from ..models.schemas import FileUploadResponse
  6. from ..services.expand_service import ExpandService
  7. from ..services.file_service import FileService
  8. from ..utils.errors import AppError
  9. logger = logging.getLogger(__name__)
  10. router = APIRouter(prefix="/api/expand", tags=["标书扩写"])
  11. @router.post("/upload", response_model=FileUploadResponse)
  12. async def upload_file(file: UploadFile = File(...)):
  13. """上传扩写参考文档并提取旧目录。"""
  14. try:
  15. if not FileService.is_supported_document(file.content_type):
  16. return FileUploadResponse(
  17. success=False, message="不支持的文件类型,请上传PDF或Word文档"
  18. )
  19. file_content = await FileService.process_uploaded_file(file)
  20. expand_service = ExpandService()
  21. outline = await expand_service.generate_expand_outline(file_content)
  22. return FileUploadResponse(
  23. success=True,
  24. message=f"文件 {file.filename} 上传成功",
  25. file_content=file_content,
  26. old_outline=json.dumps(outline, ensure_ascii=False),
  27. )
  28. except AppError as exc:
  29. return FileUploadResponse(success=False, message=exc.message)
  30. except Exception as exc:
  31. logger.exception("方案扩写文件处理失败")
  32. return FileUploadResponse(success=False, message=f"文件处理失败: {exc}")