#!/usr/bin/env python # -*- coding: utf-8 -*- """ 地图格式转换API路由 提供SMAP到Scene、华睿地图等格式转换的API接口 """ from fastapi import APIRouter, UploadFile, File, Request import os import time from routes.common_api import format_response, error_response from utils.logger import get_logger from services import interactive_converter # 创建路由 router = APIRouter(prefix="/api/vwed-map-converter", tags=["地图格式转换"]) # 设置日志 logger = get_logger("app.map_converter_api") @router.post("/smap-to-scene") async def smap_to_scene( smap_file: UploadFile = File(..., description="上传的smap地图文件"), scene_file: UploadFile = File(None, description="可选,参考scene文件") ): """ SMAP地图转Scene格式 支持可选参考scene文件,自动完成场景丰富化 """ try: # 保存上传的文件到临时目录 temp_dir = "temp_uploads" os.makedirs(temp_dir, exist_ok=True) smap_path = os.path.join(temp_dir, f"{int(time.time())}_{smap_file.filename}") with open(smap_path, "wb") as f: f.write(await smap_file.read()) scene_path = None if scene_file: scene_path = os.path.join(temp_dir, f"{int(time.time())}_{scene_file.filename}") with open(scene_path, "wb") as f: f.write(await scene_file.read()) # 执行转换 result = interactive_converter.convert_smap_to_scene(smap_path, scene_path) return format_response(data=result, message="SMAP地图转换成功") except Exception as e: logger.error(f"SMAP地图转换失败: {str(e)}") return error_response(f"SMAP地图转换失败: {str(e)}", 500)