docs: 고객사 첫 배포 기록 — stage-2, 배포 트러블슈팅, FabriX 모델 속도 실측, 오늘 order
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
435952f25c
commit
2b8c2d7742
@@ -0,0 +1,19 @@
|
||||
# 2026-09-17
|
||||
|
||||
진행 중 feature: **`specs/006-opencode-django-backend/`** — stage-2 까지. 고객사 -12 에 배포됨.
|
||||
|
||||
## 오늘 한 것
|
||||
|
||||
- [x] 로컬 실행 환경(OpenRouter) 구성, 실제 LLM 스트림 확인
|
||||
- [x] UX — 버튼 커서, 가운데 스피너, 스니펫→챗 버튼, 스니펫 창 높이
|
||||
- [x] 캡쳐 — 활성 창 통째 캡쳐, 캡쳐 후 창 앞으로, 목적지 새/마지막 대화, 드래그 번쩍임(복사본에서 이식)
|
||||
- [x] 단축키 Ctrl+Alt+Q/W/A/S/Z/X (Eclipse·SAP GUI 목록 대조)
|
||||
- [x] FabriX 게이트웨이 `apps/gateway` + 고객사 배포 + 설치본 빌드
|
||||
- [x] 모델 3종 속도 실측
|
||||
|
||||
## 다음
|
||||
|
||||
- [ ] 이미지 있을 때만 Gemma4(605), 아니면 339 — 게이트웨이 자동 분기
|
||||
- [ ] 고객사에서 캡쳐→vision 수동 확인
|
||||
- [ ] 고객사 서버 자동 기동 스크립트
|
||||
- [ ] `.gitattributes` 로 줄바꿈 통일 (prettier 가 CRLF 167개 파일 뒤집던 것)
|
||||
@@ -0,0 +1,12 @@
|
||||
# FabriX 모델 성능 실측 (고객사 -12, 2026-09-17)
|
||||
|
||||
같은 질문("Explain ABAP LOOP AT in 3 sentences.") 스트림, CodeAssist 게이트웨이 우회해서 FabriX 직접 호출.
|
||||
|
||||
| id | 모델 | 첫 토큰 | 전체 | 청크 |
|
||||
|---|---|---|---|---|
|
||||
| 605 | Gemma4 | 1.8s | 33.9s | 304 |
|
||||
| 339 | GaussO Flash | 0.2s | 1.9s | 149 |
|
||||
| 581 | GaussO Think | 0.5s | 8.0s | 158 |
|
||||
|
||||
- 세 모델 다 같은 client key 로 열려 있음. 토큰은 `Bearer ` 접두 필수(날것은 401), 클라이언트 헤더는 `x-generative-ai-client`·`x-fabrix-client` 둘 다 됨.
|
||||
- Gemma4 는 토큰당 속도가 눈에 띄게 느림 → 텍스트 기본은 339, 이미지 있을 때만 605 로 보내는 게 맞음.
|
||||
@@ -0,0 +1,35 @@
|
||||
# 고객사 첫 배포에서 걸린 것들 (2026-09-17, -12 컨테이너)
|
||||
|
||||
한 번에 안 되고 순서대로 다섯 군데 걸림. 다음에 다른 컨테이너 갈 때 그대로 밟을 것.
|
||||
|
||||
| 증상 | 원인 | 조치 |
|
||||
|---|---|---|
|
||||
| `pip install` 실패 — pytest 없음 | 컨테이너 인터넷 없음. -13 의 offline wheels 에 테스트 패키지는 없음 | `grep -v pytest requirements.txt > req-run.txt` 로 설치 |
|
||||
| OpenCode "cannot connect to API" | `render_opencode.py` 기본 `BACKEND_PORT=8001` 인데 Django 를 8080 에 띄움 | `.env` 에 `BACKEND_PORT=8080` 넣고 다시 렌더 |
|
||||
| Django `UnicodeEncodeError: 'ascii'` | 컨테이너 로케일 ASCII | `PYTHONUTF8=1` 붙여서 uvicorn 기동 (ABAP_OPENCODE run.sh 도 같음) |
|
||||
| FabriX 호출 시 httpx `_normalize_header_key` 에서 UnicodeEncodeError | `.env.example` 줄 끝 한글 주석을 파서가 값으로 읽어 HTTP 헤더에 실림 | 파서에서 ` #` 뒤 제거(`config/settings.py`), `.env.example` 주석 삭제 |
|
||||
| FabriX 전부 401 | `.env` 에 붙여넣은 토큰 앞에 `'` 하나가 딸려 들어감(짝 안 맞아 파서가 못 뗌) + 토큰은 `Bearer ` 접두 필수 | 따옴표 sed 로 제거, `AAF_FABRIX_TOKEN_PREFIX=bearer` |
|
||||
| 설치 exe 메일 반입 시 잘림(3,148KB→2,699KB) | 메일 시스템이 exe 를 자름. 압축·이름변경 무관 | msi 를 4조각 `.txt` 로 쪼개 보내고 `copy /b` 로 합침, MD5 대조 |
|
||||
|
||||
## 배포 절차 (정리본)
|
||||
|
||||
```bash
|
||||
# PC: -13 부품 꺼내서 -12 로
|
||||
scp -P 8916 -r root@10.196.81.34:/www/abap-ito/offline/wheels ./wheels
|
||||
scp -P 8916 root@10.196.81.34:/www/abap-ito/bin/opencode ./opencode-bin
|
||||
scp -P 8912 -r ABAP_CODE_ASSISTANT wheels opencode-bin root@10.196.81.34:/www/
|
||||
# -12
|
||||
cd /www/ABAP_CODE_ASSISTANT && python3 _*.py # 메일 zip 이면 이름 복원
|
||||
cd 5_django_backend && python3 -m venv .venv
|
||||
grep -v pytest requirements.txt > req-run.txt
|
||||
.venv/bin/pip install --no-index --find-links /www/wheels -r req-run.txt
|
||||
cp .env.example .env && vi .env # AAF_FABRIX_* 4개, BACKEND_PORT=8080. 따옴표·주석 없이
|
||||
.venv/bin/python manage.py migrate
|
||||
.venv/bin/python opencode/render_opencode.py
|
||||
chmod +x /www/opencode-bin; mkdir -p logs
|
||||
(cd opencode && nohup /www/opencode-bin serve --hostname 127.0.0.1 --port 4096 > ../logs/opencode.log 2>&1 &)
|
||||
PYTHONUTF8=1 nohup .venv/bin/uvicorn config.asgi:application --host 0.0.0.0 --port 8080 > logs/django.log 2>&1 &
|
||||
curl -s http://127.0.0.1:8080/api/ito/models
|
||||
```
|
||||
|
||||
포트: -12 안 8080 → 바깥 8914. 앱은 `http://10.196.81.34:8914/api/v1` 로 빌드됨.
|
||||
Reference in New Issue
Block a user