Initial working translator implementation
This commit is contained in:
commit
9439858b11
35 changed files with 5365 additions and 0 deletions
99
backend/models.py
Normal file
99
backend/models.py
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
"""Pydantic request/response models for the API."""
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
# ── Auth ───────────────────────────────────────────────
|
||||
|
||||
class LoginRequest(BaseModel):
|
||||
id: str
|
||||
password: str
|
||||
|
||||
|
||||
class TokenResponse(BaseModel):
|
||||
access_token: str
|
||||
token_type: str = "bearer"
|
||||
|
||||
|
||||
class UserInfo(BaseModel):
|
||||
user_id: str
|
||||
|
||||
|
||||
# ── LLM Config ───────────────────────────────────────
|
||||
|
||||
class LLMConfig(BaseModel):
|
||||
alias: str
|
||||
base_url: str
|
||||
api_key: str
|
||||
model: str
|
||||
context_size: int
|
||||
|
||||
|
||||
# ── Translation Session ────────────────────────────────
|
||||
|
||||
class ProperNoun(BaseModel):
|
||||
original: str # 원문 고유명사
|
||||
suggested: str # 제안 번역
|
||||
final: str = "" # 사용자 최종 결정 (Phase 2)
|
||||
|
||||
|
||||
class Phase1Result(BaseModel):
|
||||
translated: str # 초벌 번역 결과
|
||||
proper_nouns: list[ProperNoun] # 추출된 고유명사 리스트
|
||||
summary: str # 내용 요약
|
||||
style: str # 문체 분석 결과
|
||||
|
||||
|
||||
class TranslationSession(BaseModel):
|
||||
"""Full translation session state."""
|
||||
|
||||
source_text: str = "" # 원문
|
||||
source_language: str = "auto" # 출발어 (auto = 자동판단)
|
||||
target_language: str = "한국어" # 도착어
|
||||
model_phase1: str = "" # Phase 1 LLM 모델 alias
|
||||
model_phase2: str = "" # Phase 2 LLM 모델 alias
|
||||
model_phase3: str = "" # Phase 3 LLM 모델 alias
|
||||
model_phase4: str = "" # Phase 4 LLM 모델 alias
|
||||
phase1_result: Phase1Result | None = None # 초벌 번역 결과
|
||||
phase2_proper_nouns: list[ProperNoun] = [] # Phase 2에서 최종 확정된 고유명사
|
||||
phase2_style: str = "" # Phase 2에서 최종 확정된 문체
|
||||
phase3_result: str = "" # 재번역 결과
|
||||
phase4_result: str = "" # 마무리 다듬기 결과
|
||||
|
||||
|
||||
# ── API Requests ───────────────────────────────────────
|
||||
|
||||
class CreateSessionRequest(BaseModel):
|
||||
source_text: str
|
||||
source_language: str = "auto"
|
||||
target_language: str = "한국어"
|
||||
model_phase1: str = ""
|
||||
model_phase2: str = ""
|
||||
model_phase3: str = ""
|
||||
model_phase4: str = ""
|
||||
|
||||
|
||||
class PhaseUpdateRequest(BaseModel):
|
||||
"""Partial update for a specific phase."""
|
||||
|
||||
source_text: str | None = None
|
||||
source_language: str | None = None
|
||||
target_language: str | None = None
|
||||
model_phase1: str | None = None
|
||||
model_phase2: str | None = None
|
||||
model_phase3: str | None = None
|
||||
model_phase4: str | None = None
|
||||
|
||||
|
||||
class Phase2ConfirmRequest(BaseModel):
|
||||
"""User confirms or edits proper nouns and style for Phase 2."""
|
||||
|
||||
proper_nouns: list[ProperNoun]
|
||||
style: str
|
||||
|
||||
|
||||
# ── API Responses ──────────────────────────────────────
|
||||
|
||||
class SessionResponse(BaseModel):
|
||||
session_id: str
|
||||
data: TranslationSession
|
||||
Loading…
Add table
Add a link
Reference in a new issue