chore: Mac 부트스트랩 + Supabase llnocwyqvhgwpdjcqqyw 배포

- Node 22 + sox + supabase CLI 설치 (brew)
- npm install --force + @electron/rebuild@3 33.4.11 완료
- desktop/web typecheck + web build + api-client test 전부 통과
- supabase link --project-ref llnocwyqvhgwpdjcqqyw
- config.toml db.major_version 15→17 (원격 매치)
- db push: 8개 마이그레이션 전부 적용
- functions deploy: 10개 Edge Functions 전부 배포
- apps/web/.env.local + server/supabase/.env.local 생성 (gitignored)
- next build 재검증 — Supabase 런타임 주입 확인 (라우트 동적화)
This commit is contained in:
윤찬 2026-04-11 08:45:12 +09:00
parent d2cb1c0166
commit 162a59dc47
2 changed files with 75 additions and 4 deletions

View file

@ -1,15 +1,86 @@
# D3RO-VOICE 프로젝트 현황 # D3RO-VOICE 프로젝트 현황
> 마지막 갱신: 2026-04-10 (4차 사이클) > 마지막 갱신: 2026-04-11 (Mac 부트스트랩)
> 규칙 13: 작업 완료 즉시 이 파일 갱신 의무 > 규칙 13: 작업 완료 즉시 이 파일 갱신 의무
## Mac 환경 부트스트랩 (2026-04-11)
Windows → Mac 핸드오프 완료 (`memory/handoff-latest.md` 참조).
| 항목 | 상태 |
|---|---|
| Homebrew | ✅ 기존 설치 |
| Python 3.13 | ✅ 기존 설치 |
| Node 22.22.2 (brew) | ✅ 신규 설치 |
| sox 14.4.2 (brew) | ✅ 신규 설치 |
| Ollama | ❌ 미설치 (로컬 LLM 필요 시 `brew install ollama && ollama pull qwen3:4b`) |
| `npm install --force` | ✅ 1142 패키지 (rollup win32 옵셔널 dep 무시) |
| `@electron/rebuild@3 --version=33.4.11` | ✅ native 모듈 재빌드 완료 |
| desktop `tsc --noEmit` | ✅ |
| web `tsc --noEmit` | ✅ |
| web `next build` | ✅ (15 라우트, 5.8s compile) |
| api-client `vitest` | ✅ (19 passed, 283ms) |
| git working tree | ✅ clean (`package-lock.json` 포함 변경 없음) |
**남은 사용자 액션**
- OAuth Provider (Google/GitHub) 연결 — Supabase 대시보드 → Auth → Providers
- 외부 API 키 — ANTHROPIC / OPENAI / GOOGLE_CLOUD_STT / RESEND / STRIPE (아래 Edge Function Secrets 섹션)
- (선택) `brew install ollama` + `ollama pull qwen3:4b`
- (필요 시) `npm run dev`로 Electron 앱 수동 검증 — 첫 실행 시 Accessibility/마이크/Apple Events 권한 다이얼로그 승인
## Supabase 프로젝트 연결 (2026-04-11)
**프로젝트**: `yunchan8804-blip's Project` (ref: `llnocwyqvhgwpdjcqqyw`)
**URL**: `https://llnocwyqvhgwpdjcqqyw.supabase.co`
**CLI**: `supabase 2.84.2` (brew install supabase/tap/supabase)
| 단계 | 결과 |
|---|---|
| `supabase link --project-ref llnocwyqvhgwpdjcqqyw` | ✅ |
| `config.toml` db.major_version 15→17 | ✅ (원격 매치) |
| `supabase db push --include-all` | ✅ 8개 마이그레이션 전부 적용 |
| `supabase functions deploy` | ✅ 10개 Edge Functions 배포 |
| `supabase secrets list` | SUPABASE_* 자동 주입 4개만 존재 |
**배포된 Edge Functions** (10개)
`embed-chunks`, `llm-proxy`, `search-knowledge`, `send-push`, `stripe-checkout`, `stripe-portal`, `stripe-webhook`, `stt-proxy`, `team-accept`, `team-invite`
**로컬 env 파일** (git 정책으로 Claude가 직접 쓰지 못함 — 사용자가 수동 생성)
- `apps/web/.env.local` — NEXT_PUBLIC_SUPABASE_URL + ANON_KEY + SITE_URL + SERVICE_ROLE_KEY
- `server/supabase/.env.local` — REF/URL/KEY/DB_PASSWORD/DATABASE_URL 참조용
## Edge Function Secrets — 필요한 외부 키
지금 배포된 함수가 실제로 동작하려면 아래 키를 `supabase secrets set ...`로 주입해야 함. 키가 없으면 해당 함수는 400/500 반환.
| 키 | 쓰는 곳 | 필수? |
|---|---|---|
| `ANTHROPIC_API_KEY` | llm-proxy (채팅/액션/문서생성) | **필수** — 없으면 웹 /chat, /actions, meetings 문서 생성 불가 |
| `OPENAI_API_KEY` | embed-chunks, search-knowledge | **필수** — knowledge 시맨틱 검색에 필수 |
| `RESEND_API_KEY` | team-invite (이메일 발송) | 팀 초대 기능 쓸 때 |
| `RESEND_FROM` | team-invite 보낸이 | 기본값: `D3RO Voice <noreply@d3ro.dev>` |
| `SITE_URL` | team-invite 이메일 내 링크 | 기본값: `https://d3ro.dev` |
| `STRIPE_SECRET_KEY` | stripe-checkout/portal | 결제 기능 쓸 때 |
| `STRIPE_PRICE_PRO` / `STRIPE_PRICE_TEAM` | stripe-checkout | 각 요금제 Price ID |
| `STRIPE_WEBHOOK_SECRET` | stripe-webhook | 웹훅 서명 검증 |
| `GOOGLE_CLOUD_STT_KEY` | stt-proxy | 현재 스캐폴딩 상태 (index.ts 주석처리) |
주입 예:
```bash
cd server
SUPABASE_ACCESS_TOKEN=<ACCESS_TOKEN> supabase secrets set \
ANTHROPIC_API_KEY=sk-ant-... \
OPENAI_API_KEY=sk-proj-... \
RESEND_API_KEY=re_...
```
## 현재 단계 ## 현재 단계
**V1 완료** → **V2 1차 전 페이즈 + 2차/3차 고도화 완료** **V1 완료** → **V2 1차 전 페이즈 + 2차/3차/4차/5차 고도화 완료** → **Mac 부트스트랩 + Supabase 배포 완료**
V2 1차: V2 1차:
- Phase V2-1 ✅ (Monorepo 전환 a/b/c/d + minor 정리) - Phase V2-1 ✅ (Monorepo 전환 a/b/c/d + minor 정리)
- Phase V2-2 🟡 로컬 완료 (Supabase), 사용자 배포 대기 - Phase V2-2 ✅ 로컬 + 원격 배포 완료 (Supabase llnocwyqvhgwpdjcqqyw)
- Phase V2-3 ✅ (Web App MVP — Next.js 15, 12 라우트) - Phase V2-3 ✅ (Web App MVP — Next.js 15, 12 라우트)
- Phase V2-4 ✅ (데스크톱 Supabase push 동기화) - Phase V2-4 ✅ (데스크톱 Supabase push 동기화)
- Phase V2-5 🟡 로컬 완료 (Mac 빌드), 사용자 검증 대기 - Phase V2-5 🟡 로컬 완료 (Mac 빌드), 사용자 검증 대기

View file

@ -13,7 +13,7 @@ max_rows = 1000
[db] [db]
port = 54322 port = 54322
shadow_port = 54320 shadow_port = 54320
major_version = 15 major_version = 17
[db.pooler] [db.pooler]
enabled = false enabled = false