Add persistent multi-user sessions and Docker deployment
This commit is contained in:
parent
51a6e845d1
commit
104577c826
24 changed files with 2094 additions and 468 deletions
|
|
@ -17,6 +17,27 @@ class TokenResponse(BaseModel):
|
|||
|
||||
class UserInfo(BaseModel):
|
||||
user_id: str
|
||||
is_admin: bool = False
|
||||
|
||||
|
||||
class CreateUserRequest(BaseModel):
|
||||
id: str = Field(min_length=1, max_length=50, pattern=r"^[A-Za-z0-9_.-]+$")
|
||||
password: str = Field(min_length=8, max_length=200)
|
||||
is_admin: bool = False
|
||||
|
||||
|
||||
class UpdateUserRequest(BaseModel):
|
||||
password: str | None = Field(default=None, min_length=8, max_length=200)
|
||||
is_admin: bool | None = None
|
||||
is_active: bool | None = None
|
||||
|
||||
|
||||
class UserSummary(BaseModel):
|
||||
id: str
|
||||
is_admin: bool
|
||||
is_active: bool
|
||||
created_at: str
|
||||
updated_at: str
|
||||
|
||||
|
||||
# ── LLM Config ───────────────────────────────────────
|
||||
|
|
@ -42,7 +63,7 @@ class Phase1Result(BaseModel):
|
|||
proper_nouns: list[ProperNoun] # 추출된 고유명사 리스트
|
||||
summary: str # 내용 요약
|
||||
style: str # 문체 분석 결과
|
||||
warnings: list[str] = [] # JSON 복구/폴백 등 품질 관련 알림
|
||||
warnings: list[str] = Field(default_factory=list)
|
||||
|
||||
|
||||
class TranslationChunk(BaseModel):
|
||||
|
|
@ -69,11 +90,12 @@ class TranslationSession(BaseModel):
|
|||
model_phase3: str = "" # Phase 3 LLM 모델 alias
|
||||
model_phase4: str = "" # Phase 4 LLM 모델 alias
|
||||
phase1_result: Phase1Result | None = None # 초벌 번역 결과
|
||||
phase1_chunks: list[TranslationChunk] = [] # 장문 분할 시 원문/초벌 번역 쌍
|
||||
phase2_proper_nouns: list[ProperNoun] = [] # Phase 2에서 최종 확정된 고유명사
|
||||
phase1_chunks: list[TranslationChunk] = Field(default_factory=list)
|
||||
phase2_proper_nouns: list[ProperNoun] = Field(default_factory=list)
|
||||
phase2_style: str = "" # Phase 2에서 최종 확정된 문체
|
||||
phase2_confirmed: bool = False
|
||||
phase3_result: str = "" # 재번역 결과
|
||||
phase3_chunks: list[str] = [] # 장문 분할 재번역 결과
|
||||
phase3_chunks: list[str] = Field(default_factory=list)
|
||||
phase4_result: str = "" # 마무리 다듬기 결과
|
||||
progress: PhaseProgress | None = None # 장기 작업 진행 상태
|
||||
|
||||
|
|
@ -88,6 +110,7 @@ class CreateSessionRequest(BaseModel):
|
|||
model_phase2: str = ""
|
||||
model_phase3: str = ""
|
||||
model_phase4: str = ""
|
||||
title: str | None = Field(default=None, max_length=120)
|
||||
|
||||
|
||||
class PhaseUpdateRequest(BaseModel):
|
||||
|
|
@ -100,6 +123,8 @@ class PhaseUpdateRequest(BaseModel):
|
|||
model_phase2: str | None = None
|
||||
model_phase3: str | None = None
|
||||
model_phase4: str | None = None
|
||||
title: str | None = Field(default=None, max_length=120)
|
||||
expected_version: int
|
||||
|
||||
|
||||
class Phase2ConfirmRequest(BaseModel):
|
||||
|
|
@ -107,6 +132,7 @@ class Phase2ConfirmRequest(BaseModel):
|
|||
|
||||
proper_nouns: list[ProperNoun]
|
||||
style: str
|
||||
expected_version: int
|
||||
|
||||
|
||||
# ── API Responses ──────────────────────────────────────
|
||||
|
|
@ -114,3 +140,29 @@ class Phase2ConfirmRequest(BaseModel):
|
|||
class SessionResponse(BaseModel):
|
||||
session_id: str
|
||||
data: TranslationSession
|
||||
title: str = ""
|
||||
status: str = "draft"
|
||||
current_phase: int = 0
|
||||
version: int = 0
|
||||
created_at: str = ""
|
||||
updated_at: str = ""
|
||||
archived_at: str | None = None
|
||||
|
||||
|
||||
class SessionSummary(BaseModel):
|
||||
session_id: str
|
||||
title: str
|
||||
source_preview: str
|
||||
target_language: str
|
||||
status: str
|
||||
current_phase: int
|
||||
version: int
|
||||
created_at: str
|
||||
updated_at: str
|
||||
archived_at: str | None = None
|
||||
|
||||
|
||||
class RevisionResponse(BaseModel):
|
||||
data: TranslationSession
|
||||
reason: str
|
||||
created_at: str
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue