docs: 고객사 첫 배포 기록 — stage-2, 배포 트러블슈팅, FabriX 모델 속도 실측, 오늘 order

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
lee-hyeon-cheol
2026-09-17 16:34:59 +09:00
co-authored by Claude Fable 5.1
parent 435952f25c
commit 2b8c2d7742
5 changed files with 114 additions and 0 deletions
@@ -0,0 +1,24 @@
# stage-2 — 사내 LLM(FabriX) 게이트웨이 + 고객사 첫 배포 (2026-09-17)
## 한 일
- `5_django_backend/apps/gateway/` 신설 — OpenCode 가 OpenAI 호환으로 `/api/ito` 에 붙으면 FabriX 로 통과 중계. ABAP_OPENCODE `apps_ito` 를 통째 복사하지 않고 필요한 규칙만 200줄로(헤더 3종 인증, `x-llm-model-id` 로 모델 선택, 401 시 Bearer/날것×클라이언트 헤더 조합 재시도, 모델 허용 목록).
- `opencode/opencode.fabrix.json.tmpl` + `render_opencode.py``.env` 의 AAF_* 로 OpenCode 설정 렌더. 개발용 OpenRouter 설정은 git 에 그대로.
- `.env.example` 에 AAF_* 블록. 기본 모델 605 Gemma4, 목록 605/339/581, `TOKEN_PREFIX=bearer`.
- `.env` 파서가 줄 끝 `#` 주석을 값으로 읽던 것 수정(고객사에서 한글 주석이 HTTP 헤더에 실려 httpx 가 죽음).
- 고객사 -12 컨테이너에 배포 완료(인터넷 없음 → -13 의 wheels·opencode 바이너리 재활용). Django :8080(바깥 8914), OpenCode :4096.
- 고객사용 Tauri 설치본(exe/msi) 빌드 — `2_frontend/.env.production``VITE_API_BASE_URL=http://10.196.81.34:8914/api/v1`. 메일 반입은 exe 가 잘려서 msi 4조각 `.txt` + `copy /b` 로 합침.
- FabriX 실측: 세 모델 다 같은 키로 200. 토큰은 Bearer 필수. 속도는 `docs/tech/fabrix-model-perf.md`.
## 검증
- `tests/test_gateway.py` 9개(상류 MockTransport) 통과. 백엔드 전체 40/41 — 실패 1개(`test_sessions` 정렬)는 이전부터.
- 고객사 앱에서 로그인·텍스트 채팅 답변 확인(605).
## 남은 것 / 다음
- [ ] 이미지 있을 때만 605, 텍스트는 339 로 자동 분기(게이트웨이에서 body 의 `image_url` 보고). Gemma 가 느려서.
- [ ] 캡쳐→vision 응답 고객사에서 수동 확인.
- [ ] 고객사 서버 자동 기동(지금은 nohup 손기동). ABAP_OPENCODE bare/run.sh 식 스크립트.
- [ ] 스트림 모드에서 첫 시도 401 → 재시도 흐름이 "생각 중" 으로 멈추는 듯한 현상 — `TOKEN_PREFIX=bearer` 로 우회 중. 원인 확인 필요.
- [ ] `test_sessions` 정렬 실패 원인.