feat: 배포 파이프라인 — Ollama/sidecar 번들 + NSIS 자동 VC++ + GitLab CI + 온보딩 모달

- sidecar 슬림화: torch/pyannote 제거, ctranslate2 GPU 감지, /diarize 삭제
- Ollama 번들: resources/ollama/에 포터블 바이너리 배치, LocalLLMService 1순위 탐색
- installer.nsh: VC++ 재배포 x64 자동 다운로드(aka.ms 경유) + 사일런트 설치
- electron-builder: extraResources에 ollama 추가, nsis.include로 installer.nsh 연결
- scripts: download-ollama.ps1/sh 신규
- LLM.PULL_MODEL IPC 핸들러 + LocalLLMService.pullModel() 구현 (api/pull 스트리밍)
- 온보딩 모달: gemma4:e4b 미설치 감지 시 자동 표시, 진행률 UI, i18n(ko/en) 키 추가
- .gitlab-ci.yml: Windows 러너에서 sidecar/sox/ollama 준비 후 NSIS 패키징, 태그 시 Release 자동 생성
This commit is contained in:
yunchan8804 2026-04-15 19:47:27 +09:00
parent d1edad6727
commit aa65e710ec
16 changed files with 725 additions and 500 deletions

View file

@ -1,6 +1,40 @@
# D3RO-VOICE 프로젝트 현황
> 마지막 갱신: 2026-04-13 (RN CLI 전환 + 안드로이드 빌드 성공)
> 마지막 갱신: 2026-04-15 (배포 파이프라인 기반 구축 — 번들 설치러너 + GitLab CI)
## 배포 파이프라인 기반 구축 (2026-04-15) ✅
### 결정 사항
- **기본 LLM 모델**: `gemma4:e4b` (9.6GB, 텍스트+이미지+오디오 멀티모달)
- **Ollama 배포 방식**: 바이너리 **번들** (포터블 zip을 `resources/ollama/`에 동봉)
- **Whisper 기본 모델**: `large-v3` (3GB, 첫 실행 시 자동 다운로드)
- **Sidecar 슬림화**: `torch`, `pyannote.audio` 제거 → GPU 감지는 `ctranslate2` 사용. `/diarize` 엔드포인트 삭제. 화자 구분은 LLM 추정 경로로 폴백(기존 MeetingModeService가 자동 처리).
- **SaaS 지향**: 고정밀 화자 구분은 추후 서버 사이드 API로 제공 예정.
### 변경된 파일
- `apps/desktop/sidecar/main.py`: torch/pyannote 의존 제거, `/diarize` 삭제, ctranslate2 GPU 감지
- `apps/desktop/sidecar/requirements.txt`: torch/pyannote 제거 (faster-whisper + fastapi + uvicorn + numpy만)
- `apps/desktop/src/main/utils/paths.ts`: `getBundledOllamaPath()` 추가
- `apps/desktop/src/main/services/LocalLLMService.ts`: `_findOllamaBinary()`가 번들 ollama를 1순위로 탐색
- `apps/desktop/electron-builder.yml`: `resources/ollama/` extraResources + `nsis.include: build/installer.nsh`
- `apps/desktop/scripts/download-ollama.ps1` (Windows), `download-ollama.sh` (mac/linux) 신규
- `apps/desktop/build/installer.nsh` 신규 — VC++ 재배포 확인 + 언인스톨 시 번들 ollama 종료
- `.gitlab-ci.yml`: Windows self-hosted runner에서 `sidecar 빌드 → sox 다운로드 → ollama 다운로드 → electron-builder` 파이프라인. 태그 푸시 시 GitLab Release 자동 생성.
- `.gitignore`: `resources/ollama/` 빌드 산출물 무시
### 다음 작업
1. Windows self-hosted GitLab runner 등록 (tags: `windows`, `shell`)
2. 첫 실행 bootstrap UI — `gemma4:e4b` + Whisper `large-v3` 다운로드 진행률 모달
- 위치: `Dashboard` 진입 전 게이트
- IPC 채널: 설계서 02의 `ipc-channels.ts``setup:pull-model`, `setup:download-whisper`, `setup:progress` 추가 필요
3. VC++ 재배포 자동 다운로드(inetc plugin 검증 필요) 또는 번들화(25MB 추가)
4. 첫 태그 푸시(예: `v0.1.0-alpha`)로 CI 검증
### 차단 이슈 (기존)
- `@nut-tree-fork/nut-js` 포크 사용 (변경 없음)
---
## RN CLI 전환 (2026-04-13) ✅