125 lines
4.2 KiB
Python
125 lines
4.2 KiB
Python
"""
|
|
Tool_OCR - Translation Schemas (RESERVED)
|
|
Request/response models for translation endpoints
|
|
"""
|
|
|
|
from typing import Optional, Dict, List, Any
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class TranslationRequest(BaseModel):
|
|
"""
|
|
Translation request schema (RESERVED)
|
|
|
|
Expected format for document translation requests
|
|
"""
|
|
file_id: int = Field(..., description="File ID to translate")
|
|
source_lang: str = Field(..., description="Source language code (zh, en, ja, ko)")
|
|
target_lang: str = Field(..., description="Target language code (zh, en, ja, ko)")
|
|
engine_type: Optional[str] = Field("offline", description="Translation engine (offline, ernie, google, deepl)")
|
|
preserve_structure: bool = Field(True, description="Preserve markdown structure")
|
|
engine_config: Optional[Dict[str, Any]] = Field(None, description="Engine-specific configuration")
|
|
|
|
class Config:
|
|
json_schema_extra = {
|
|
"example": {
|
|
"file_id": 1,
|
|
"source_lang": "zh",
|
|
"target_lang": "en",
|
|
"engine_type": "offline",
|
|
"preserve_structure": True,
|
|
"engine_config": {}
|
|
}
|
|
}
|
|
|
|
|
|
class TranslationResponse(BaseModel):
|
|
"""
|
|
Translation response schema (RESERVED)
|
|
|
|
Expected format for translation results
|
|
"""
|
|
task_id: int = Field(..., description="Translation task ID")
|
|
file_id: int
|
|
source_lang: str
|
|
target_lang: str
|
|
engine_type: str
|
|
status: str = Field(..., description="Translation status (pending, processing, completed, failed)")
|
|
translated_file_path: Optional[str] = Field(None, description="Path to translated markdown file")
|
|
progress: float = Field(0.0, description="Translation progress (0.0-1.0)")
|
|
error_message: Optional[str] = None
|
|
|
|
class Config:
|
|
json_schema_extra = {
|
|
"example": {
|
|
"task_id": 1,
|
|
"file_id": 1,
|
|
"source_lang": "zh",
|
|
"target_lang": "en",
|
|
"engine_type": "offline",
|
|
"status": "processing",
|
|
"translated_file_path": None,
|
|
"progress": 0.5,
|
|
"error_message": None
|
|
}
|
|
}
|
|
|
|
|
|
class TranslationStatusResponse(BaseModel):
|
|
"""Translation task status response (RESERVED)"""
|
|
task_id: int
|
|
status: str
|
|
progress: float
|
|
created_at: str
|
|
completed_at: Optional[str] = None
|
|
error_message: Optional[str] = None
|
|
|
|
|
|
class TranslationConfigRequest(BaseModel):
|
|
"""Translation configuration request (RESERVED)"""
|
|
source_lang: str = Field(..., max_length=20)
|
|
target_lang: str = Field(..., max_length=20)
|
|
engine_type: str = Field(..., max_length=50)
|
|
engine_config: Optional[Dict[str, Any]] = None
|
|
|
|
class Config:
|
|
json_schema_extra = {
|
|
"example": {
|
|
"source_lang": "zh",
|
|
"target_lang": "en",
|
|
"engine_type": "offline",
|
|
"engine_config": {
|
|
"model_path": "/path/to/model"
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
class TranslationConfigResponse(BaseModel):
|
|
"""Translation configuration response (RESERVED)"""
|
|
id: int
|
|
user_id: int
|
|
source_lang: str
|
|
target_lang: str
|
|
engine_type: str
|
|
engine_config: Optional[Dict[str, Any]] = None
|
|
created_at: str
|
|
updated_at: str
|
|
|
|
|
|
class TranslationFeatureStatus(BaseModel):
|
|
"""Translation feature status response"""
|
|
available: bool = Field(..., description="Whether translation is available")
|
|
status: str = Field(..., description="Feature status (reserved, planned, implemented)")
|
|
message: str = Field(..., description="Status message")
|
|
supported_engines: List[str] = Field(default_factory=list, description="Currently supported engines")
|
|
planned_engines: List[Dict[str, str]] = Field(default_factory=list, description="Planned engines")
|
|
roadmap: Dict[str, Any] = Field(default_factory=dict, description="Implementation roadmap")
|
|
|
|
|
|
class LanguageInfo(BaseModel):
|
|
"""Language information"""
|
|
code: str = Field(..., description="Language code (ISO 639-1)")
|
|
name: str = Field(..., description="Language name")
|
|
status: str = Field(..., description="Support status (planned, supported)")
|