"""模型部件重命名:按查看器标签定位 GLB 节点并写回文件。""" from typing import Any from fastapi import APIRouter, HTTPException from pydantic import BaseModel, Field from services import model_edit_service router = APIRouter() class RenamePartInput(BaseModel): model: str = Field(min_length=1) label: str = Field(min_length=1) new_name: str = Field(min_length=1, max_length=100) @router.post("/api/models/rename-part") def rename_part(payload: RenamePartInput) -> dict[str, Any]: try: return model_edit_service.rename_part(payload.model, payload.label, payload.new_name) except FileNotFoundError as exc: raise HTTPException(status_code=404, detail=str(exc)) from exc except LookupError as exc: raise HTTPException(status_code=409, detail=str(exc)) from exc except ValueError as exc: raise HTTPException(status_code=400, detail=str(exc)) from exc