TellmeStpToGlb/api/schemas.py
root 5102bd57e8 feat: 服务化改造STP到GLB转换器
- 🚀 新增FastAPI Web服务支持
-  实现异步任务处理和并发转换
- 📊 添加实时进度追踪(0-100%)
- 🏗️ 重构为模块化架构:core/api/services/utils
- 🔧 完整的任务管理系统和状态追踪
- 📖 自动生成API文档(Swagger/ReDoc)
- 🔄 保持CLI模式100%向后兼容
- 🛡️ 增强错误处理和文件验证
- 📝 更新完整文档(README/CLAUDE.md)

技术栈: FastAPI + uvicorn + pydantic + asyncio
API端点: /health, /api/v1/convert, /api/v1/status, /api/v1/tasks

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-02 09:44:43 +08:00

47 lines
1.9 KiB
Python

#!/usr/bin/env python3
"""
API数据模式定义
"""
from pydantic import BaseModel, Field
from typing import Optional
from datetime import datetime
class ConvertOptionsSchema(BaseModel):
"""转换选项模式"""
auto_scale: bool = Field(default=True, description="是否自动缩放")
auto_center: bool = Field(default=True, description="是否自动居中")
class ConvertRequestSchema(BaseModel):
"""转换请求模式"""
input_path: str = Field(..., description="输入STP文件路径")
output_path: str = Field(..., description="输出GLB文件路径")
options: ConvertOptionsSchema = Field(default_factory=ConvertOptionsSchema, description="转换选项")
class ConvertResponseSchema(BaseModel):
"""转换响应模式"""
task_id: str = Field(..., description="任务ID")
status: str = Field(..., description="任务状态")
message: str = Field(default="", description="状态消息")
class TaskStatusSchema(BaseModel):
"""任务状态模式"""
task_id: str = Field(..., description="任务ID")
status: str = Field(..., description="任务状态")
progress: int = Field(..., description="进度百分比(0-100)")
message: str = Field(default="", description="状态消息")
created_at: datetime = Field(..., description="创建时间")
started_at: Optional[datetime] = Field(default=None, description="开始时间")
completed_at: Optional[datetime] = Field(default=None, description="完成时间")
error_message: Optional[str] = Field(default=None, description="错误信息")
class HealthResponseSchema(BaseModel):
"""健康检查响应模式"""
status: str = Field(default="healthy", description="服务状态")
timestamp: datetime = Field(default_factory=datetime.now, description="检查时间")
version: str = Field(default="1.0.0", description="服务版本")