from pydantic import BaseModel, Field from typing import Optional class TranslationRequest(BaseModel): """번역 요청 모델""" text: str = Field(..., description="번역할 텍스트", min_length=1) source_lang: str = Field(..., description="소스 언어 코드 (예: ko, en, ja)") target_lang: str = Field(..., description="타겟 언어 코드 (예: en, ko, ja)") class Config: json_schema_extra = { "example": { "text": "안녕하세요, 반갑습니다.", "source_lang": "ko", "target_lang": "en", } } class TranslationResponse(BaseModel): """번역 응답 모델""" translated_text: str = Field(..., description="번역된 텍스트") source_lang: str = Field(..., description="소스 언어 코드") target_lang: str = Field(..., description="타겟 언어 코드") original_text: str = Field(..., description="원본 텍스트") class Config: json_schema_extra = { "example": { "translated_text": "Hello, nice to meet you.", "source_lang": "ko", "target_lang": "en", "original_text": "안녕하세요, 반갑습니다.", } } class HealthResponse(BaseModel): """헬스 체크 응답 모델""" status: str = Field(..., description="서비스 상태") model_loaded: bool = Field(..., description="모델 로드 여부") device: str = Field(..., description="사용 중인 디바이스 (cpu/cuda)") class LanguagesResponse(BaseModel): """지원 언어 목록 응답 모델""" supported_languages: dict = Field(..., description="지원하는 언어 코드 목록")