Improve translation reliability and progress feedback

This commit is contained in:
burnintuna 2026-07-30 17:07:02 +09:00
parent 9439858b11
commit 51a6e845d1
20 changed files with 1194 additions and 216 deletions

View file

@ -5,7 +5,7 @@
## 특징
- **4단계 번역 파이프라인**: 초벌번역 → 고유명사/문체 분석 → 재번역 → 마무리 다듬기
- **Phase별 별도 LLM 모델 선택**: 각 단계마다 다른 모델을 지정 가능
- **LLM 단계별 모델 선택**: Phase 1, 3, 4에 서로 다른 모델 지정 가능
- **고유명사 관리**: 추출된 고유명사를 사용자가 검토·수정 가능
- **세로 3열 비교 UI**: Phase 1 / Phase 3 / Phase 4 결과를 한눈에 비교
- **다크모드 지원**: 시스템 설정 자동 감지 + 수동 토글 (localStorage 지속화)
@ -20,7 +20,7 @@ pip install -r requirements.txt
cd frontend && npm install && cd ..
# 2. 프론트엔드 빌드 (프로덕션 모드)
npx vite build --prefix-links=false
cd frontend && npm run build && cd ..
# 3. 서버 실행
uvicorn backend.main:app --host 0.0.0.0 --port 8000
@ -58,11 +58,14 @@ uvicorn backend.main:app --host 0.0.0.0 --port 8000
| 변수 | 설명 | 기본값 |
|------|------|--------|
| `JWT_SECRET_KEY` | JWT 서명 키 | `dev-secret-key-change-in-production` |
| `JWT_SECRET_KEY` | JWT 서명 키 | 미설정 시 키 파일 자동 생성 |
| `JWT_SECRET_FILE` | 서명 키 자동 생성 파일 | `config/.jwt-secret` |
| `JWT_EXPIRE_HOURS` | 토큰 만료 시간(시간) | `24` |
| `LLMS_CONFIG_PATH` | LLM 설정 파일 경로 | `config/llms.json` |
| `USERS_CONFIG_PATH` | 사용자 설정 파일 경로 | `config/users.json` |
| `PORT` | 서버 포트 | `8000` |
| `LLM_TIMEOUT_SECONDS` | 개별 LLM 호출 제한 시간 | `180` |
| `TRANSLATION_CHUNK_CHARS` | 장문 분할 목표 크기 | `1500` |
## 프로젝트 구조
@ -92,7 +95,7 @@ cd frontend && npx vite # http://localhost:5173
|--------|------|------|------|
| `POST` | `/api/auth/login` | 로그인 → JWT 토큰 발급 | × |
| `GET` | `/api/auth/me` | 현재 사용자 정보 | ○ (JWT) |
| `GET` | `/api/models` | 사용 가능한 LLM 모델 목록 | × |
| `GET` | `/api/models` | 사용 가능한 LLM 모델 목록 | |
| `POST` | `/api/translate/create` | 새 번역 세션 생성 | ○ |
| `GET` | `/api/sessions/{id}` | 세션 상태 조회 | ○ |
| `PATCH`| `/api/sessions/{id}` | 세션 필드 부분 업데이트 | ○ |
@ -105,7 +108,7 @@ cd frontend && npx vite # http://localhost:5173
```bash
# 1. 프론트엔드 빌드
cd frontend && npx vite build && cd ..
cd frontend && npm run build && cd ..
# 2. 백엔드 서빙 (dist 정적 파일 포함)
uvicorn backend.main:app --host 0.0.0.0 --port 8000
@ -113,7 +116,17 @@ uvicorn backend.main:app --host 0.0.0.0 --port 8000
`backend/main.py``frontend/dist/` 폴더를 정적 파일로 마운트하므로, 빌드 후 백엔드 서버 하나만 실행하면 됩니다.
## 테스트 (LLM 서버 연결 확인)
장문은 문장 또는 줄 경계를 우선하여 기본 1,500자 단위로 나누고 Phase 1, 3, 4에서 순차 처리합니다. 공개 LLM 서버가 혼잡하면 `.env`에서 `LLM_TIMEOUT_SECONDS`를 늘리거나 `TRANSLATION_CHUNK_CHARS`를 줄일 수 있습니다.
LLM 처리 중에는 현재 chunk 번호와 스트리밍으로 수신 중인 최근 내용이 화면에 임시 표시됩니다. Phase 1 JSON이 불완전하면 코드 블록·주변 문구·후행 쉼표를 먼저 보정하고, 실패 시 LLM JSON 복구를 거쳐 일반 번역 결과로 폴백합니다.
## 자동 테스트
```bash
python -m unittest discover -v
```
## LLM 서버 연결 확인
```bash
curl -s http://btuna.net:45455/v1/chat/completions \