feat: complete release preparation, 10+ ad mediation, CI/CD, and docker deployment
Some checks failed
CI Pipeline / Code Quality & Typecheck (push) Waiting to run
CI Pipeline / Test Suite (macos-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (ubuntu-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (windows-latest) (push) Blocked by required conditions
CI Pipeline / Build Validation (admin) (push) Blocked by required conditions
CI Pipeline / Build Validation (desktop) (push) Blocked by required conditions
Deploy Landing Page / deploy (push) Blocked by required conditions
Deploy Landing Page / build (push) Waiting to run
Release & Packaging Pipeline / Build & Publish Admin Docker Image (push) Failing after 8s
Release & Code Signing CA Pipeline / build-and-sign-windows (push) Failing after 1m51s
Build macOS / Build & Package (macOS) (push) Failing after 4s
Build macOS / Build & Package (macOS)-1 (push) Failing after 5s
Release & Code Signing CA Pipeline / build-and-sign-macos (push) Failing after 3s
Release & Packaging Pipeline / Package macOS Desktop App (push) Failing after 4s
Release & Packaging Pipeline / Package Windows Desktop App (push) Failing after 2m28s
Release & Packaging Pipeline / Publish Official GitHub Release (push) Has been skipped

This commit is contained in:
Yun Chan 2026-08-20 11:12:05 +09:00
parent 5cd1de6859
commit 708e20f747
406 changed files with 42464 additions and 6199 deletions

View file

@ -1,87 +1,39 @@
# Session Handoff — 2026-04-13 (V2-7 완료)
# Session Handoff — 2026-08-19 (Ollama 온보딩 & 데스크톱 윈도우 실행 아키텍처 완료)
> From: macOS (yunchan-ui-MacBookPro)
> Last commit: `8af75a0` — feat: V2-7 Admin 콘솔 리디자인 + 3단계 권한 + SaaS 전환 + 코드 정리
> Branch: `main`
> Remote: `https://gitlab.twentyoz.kr:8443/d3r0/voice.git`
> Environment: Windows (ALPACA-HOME)
> Target: `@d3ro/desktop`, `@d3ro/core`, `@d3ro/ui`, `@d3ro/i18n`
## 이번 세션에서 한 일 (50 files, +2168/-933)
---
### 1. Admin CRM 콘솔 리디자인
- 전체 페이지 D3RO Console 스타일 적용 (Overview, Users, Subscriptions, Audit Log + 모든 상세)
- `console-theme.ts` 디자인 토큰 (C 색상, FONT, panelSx, tableSx, filterBtnSx, statusBadgeSx)
- `globals.css` — 스캔라인, 그리드 패턴, 글로우, 커스텀 스크롤바
- JetBrains Mono, 검정 배경, 라운드 패널, 오렌지 액센트
## 1. 이번 세션에서 해결한 핵심 작업 내역
### 2. 3단계 권한 체계
- DB: `profiles_role_check``manager` 추가, RLS 7개 재작성
- Edge Functions 4개: `requireManager`/`requireAdmin` 3단계 분기 + 배포
- Frontend: `admin-guard.ts` 3단계 가드, RoleChangeDialog admin 제한
- super_admin 설정: `yunchan8804@gmail.com` = super_admin
### 1) Ollama 가이드 모달 & 1-클릭 모델 매니저 전면 개편 (`OllamaGuideModal.tsx`)
- Ollama 서버 헬스체크 및 실시간 버전 파싱 (`GET /api/version` -> `v0.32.13`).
- 서버 미실행 시 🔴 오프라인 정확 표기 및 1-클릭 백그라운드 자동 기동 (`electronAPI.llm.startServer`).
- 최신 4종 모델 (`gemma2:2b`, `llama3.2:3b`, `qwen2.5:3b`, `gemma2:9b`) 1-클릭 다운로드(Pull) 및 실시간 프로그레스 바.
- 즉시 텍스트 정제 동작 시험 프롬프트 러너 탑재.
### 3. 랜딩 페이지 SaaS 전환
- Pricing: 1회 결제 → 월간($9.9/$19.9) / 연간($99/$199) 토글
- 10개 언어 i18n 동기화 (pricing, FAQ, CTA)
- 다운로드 URL: placeholder (#) — 추후 교체
### 2) 로컬 AI 온보딩 모달 & 대시보드 상태 표기 개선
- `OnboardingModal.tsx`: 로컬 AI 독립 모드(100% 무료/오프라인) vs 온라인 클라우드 모드 선택 분기.
- `DashboardPage.tsx`: 무조건 "로컬 연결됨" 표기 버그 수정 ➔ 실시간 헬스체크 기반 🟢 연결됨 / 🔴 오프라인 표기.
### 4. SSE 스트리밍 Premium LLM 연결
- VoiceConversationService: `_createChatStream()` — Premium/Local 라우팅 + fallback
### 3) 오디오 장치 탐색 비동기화 (`AudioCaptureService.ts`)
- Windows PowerShell 마이크 디바이스 탐색에서 `execSync` 동기 블로킹 제거 ➔ 완전 비동기 `exec` 논블로킹으로 변경 (기동 시 5초 `ETIMEDOUT` 프리징 완전 제거).
### 5. 코드 정리
- Supabase 클라이언트 공통화 → packages/api-client (browser + server 팩토리)
- RPC 함수 타입 9개 추가 (types.ts Functions 섹션)
- callAdminApi 401 버그 수정 (getUser() 선행 토큰 갱신)
### 4) Windows 데스크톱 실행 및 윈도우 스테이션 격리 해결
- `src/main/index.ts`: `app.setName('d3ro-voice')`, `app.setAppUserModelId('kr.twentyoz.d3ro-voice')` 명시.
- GPU 하드웨어 가속 충돌 방지 (`app.disableHardwareAcceleration()`, `--disable-gpu`).
- `run-desktop.bat`: 잔여 프로세스 및 stale `lockfile` 선제 정리 후 `electron-vite dev` 기동.
- `.agents/rules/desktop-app-execution-and-windows.md`: 영구 지침 파일 생성 및 `CLAUDE.md` 규칙 반영.
## 현재 배포 상태
---
| 게이트 | 결과 |
|---|---|
| desktop `tsc --noEmit` | ✅ |
| admin `tsc --noEmit` | ✅ |
| DB migration (20260413000005) | ✅ 적용 |
| Edge Functions 4개 | ✅ 재배포 |
| git commit | ✅ (8af75a0) |
## 2. 향후 에이전트 필수 준수 지침 (Rules)
## 알려진 이슈
- `apps/web` teams/[id]/page.tsx: SelectQueryError 타입 에러 (기존 이슈, 이번 작업 무관)
- Stripe 레거시 컴포넌트 잔존 (apps/web/src/components/billing/checkout-button.tsx, portal-button.tsx)
## 다음 세션 우선순위
### A) Payple 라이브 전환
- Payple 가입 → 라이브 키 교체 (.env)
- Webhook URL 등록
- 라이브 환경 결제 테스트
### B) 다운로드 URL 확정
- GitHub/GitLab Releases 또는 자체 CDN
- 랜딩 페이지 Hero/Pricing/CTA 버튼 연결
- Auto-update 설정
### C) Web teams 타입 에러 수정
- teams/[id]/page.tsx SelectQueryError — team_members↔profiles 관계 설정
### D) Stripe 레거시 코드 제거
- checkout-button.tsx, portal-button.tsx 삭제
### E) E2E 테스트
- SSE 스트리밍 실제 동작 확인 (Supabase 로그인 → Premium LLM → 토큰 표시 → TTS)
- Admin CRM 3단계 권한 브라우저 테스트
## 서비스 현황
| 서비스 | 포트 | 상태 |
|--------|------|------|
| Electron + Vite | :5173 | 실행 중 |
| Web (Next.js) | :3000 | 실행 중 |
| Admin CRM | :3001 | 실행 중 |
| Landing (Vite) | :5174 | 실행 중 |
| Ollama | :11434 | gemma4:e4b |
| Supabase | remote | Edge Functions 배포 |
## 의존성
- Node 22.22.2 / Python 3.13.13 / Supabase CLI 2.84.2
- Ollama 0.20.5 / Electron 33.4.11 / Next.js 15.5.14
- @supabase/ssr 0.10.0 / recharts 2.15+
- SoX 14.4.2 / faster-whisper base (CPU int8)
1. **AI 에이전트 서브쉘(가상 데스크톱 `exebox`)에서 GUI 백그라운드 구동을 반복하지 말 것**:
- 에이전트의 서브쉘 도구(`run_command`)는 보안 가상 데스크톱(`WinSta0\exebox-...`)에서 프로세스를 띄우므로 사용자의 실제 모니터 화면(`WinSta0\Default`)에는 창이 보이지 않는다.
- GUI 실행은 사용자가 `run-desktop.bat` 또는 외부 터미널에서 실행하도록 안내한다.
2. **Single Instance Lock & 사일런트 종료 방지**:
- `app.setName('d3ro-voice')``app.setAppUserModelId`를 최상단에 항상 유지하고, dev 모드에서 락 파일 충돌로 인한 사일런트 종료를 방지한다.
3. **오디오 장치 탐색**:
- `execSync` 동기 블로킹 절대 금지.

View file

@ -1,5 +1,41 @@
# D3RO-VOICE 프로젝트 현황
## D3RO NAS Docker 클라우드 서비스 배포 체계 구축 (2026-08-19 /goal) 🚀
D3RO Voice의 클라우드 API 백엔드, AI 프록시, 관리자 백오피스(BackOffice)를 Synology, QNAP, Linux 등 NAS 환경에 Docker 컨테이너로 손쉽게 배포하고 운영할 수 있는 완전 자동화 인프라를 구축 완료.
- **컨테이너 아키텍처 (`d3ro-voice-api:latest`)**:
- ASP.NET Core 10 Web API + EF Core SQLite 기반 경량 컨테이너 (~116MB 압축).
- 영구 스토리지 볼륨(`DATA_DIR=/app/data` -> `./data/d3ro_api.db`) 매핑으로 컨테이너 재생성 시에도 사용자, 모델 설정, 토큰/비용 통계 완벽 보존.
- 컨테이너 헬스체크 REST 엔드포인트 (`/health`, `/api/health`) 및 Swagger 문서 (`/swagger`) 내장.
- 통합 다크 글래스 테마의 메인 포털(`wwwroot/index.html`) 및 관리자 백오피스(`wwwroot/admin/index.html` + `apps/admin/`) 연동.
- **Docker Compose & 환경 설정**:
- `docker-compose.yml` 및 독립형 `docker-compose.nas.yml` 작성.
- `.env.example` 포트(5000), 데이터 경로, JWT 시크릿, 타임존 설정 지원.
- 선택적 On-NAS 로컬 Ollama AI 프로필(`docker compose --profile ai up -d`) 지원.
- 로그 파일 크기 제한(`max-size: 10m`, `max-file: 3`)으로 NAS 디스크 보호.
- **자동화 배포 & 제어 스크립트**:
- `scripts/deploy-nas.ps1`: Windows PowerShell 기반 원클릭 이미지 빌드, `out/nas-package/` 생성, SSH 원격 배포 지원.
- `scripts/deploy-nas.sh`: Linux/macOS/NAS 터미널 셸 스크립트.
- `scripts/nas-control.sh`: NAS 현장에서 `start`, `stop`, `restart`, `status`, `logs`, `backup`(SQLite DB tar.gz 백업), `update` 지원.
- **문서화**:
- `docs/deployment/nas-deployment-guide.md` — Synology DSM Container Manager, QNAP Container Station, HTTPS 역방향 프록시, 앱 연동 가이드.
- `README-NAS.md` — 루트 빠른 시작 가이드.
- **실증 검증 및 외부 공개 HTTPS 연동 (2026-08-19)**:
- Cloudflare Tunnel (`kd-nas`, ID: `fe6293f8-17a5-47c3-bfe9-2374b95a003d`) Ingress 규칙 API 업데이트 완료: `d3ro.chanpaca.net` -> 포털/API(5050), `admin.chanpaca.net` -> Next.js 어드민 CRM(3001).
- 공용 인터넷 HTTPS 실시간 통신 검증 완료: `https://d3ro.chanpaca.net/health` (HTTP 200 OK, Healthy).
- 포털(`https://d3ro.chanpaca.net/`), 어드민 CRM(`https://admin.chanpaca.net/`), Swagger(`https://d3ro.chanpaca.net/swagger`) 정상 가동.
- **포트리스(Fortress) 다계층 심층 보안 및 레드팀(Red Team) 방어 체계 구축 (2026-08-19)**:
- 초기 최고 관리자 계정 시딩 및 인증 연동 완료: `admin` / `Test1234!`.
- 미들웨어 엣지 라우트 가드 + RSC 이중 세션 검증 (미인증 시 즉시 `/login` 307 리다이렉트).
- Anti-Crawling & Anti-Reconnaissance (`X-Robots-Tag: noindex, nofollow, noarchive`, `robots.txt` Disallow: `/`).
- 브루트포스 방어: 슬라이딩 윈도우 기반 5회 실패 시 15분 IP/계정 락아웃 + Timing Attack 방어 인위적 딜레이.
- 자동화 봇 방어: 허니팟 트랩(Honeypot Trap) 필드 감지 즉시 403 차단.
- 세션 암호화: HMAC-SHA256 암호화 서명 쿠키 (`HttpOnly`, `Secure`, `SameSite=Lax`, 30일 유효) 적용 및 위변조 실시간 감지 차단.
- 레드팀 모의 침투 5개 시나리오 전수 통과 실측 검증 완료.
---
## v0.2.1-alpha 핫픽스 (2026-07-22) 🐛
v0.2.0-alpha 치명적 버그(앱 실행 불가) 핫픽스. 사용자 보고 "설치 실행 안 됨".