D3RO Voice — 멀티플랫폼 AI 음성 어시스턴트 (Monorepo & CI/CD)
Find a file
yunchan8804 c167737198 feat(V2-3차): pull 확장 + invite flow + Realtime + 테스트 + mobile UI 교체
묶음 E — V2-4b pull 확장:
- CloudSyncService.pullAll()에 meetings/meeting_memos/meeting_documents 추가
- meetings: LWW, 모든 컬럼 매핑 (minutes_json JSON 직렬화)
- meeting_memos: immutable INSERT-only 전략
- meeting_documents: LWW UPDATE

묶음 F — api-client types:
- interface -> type alias 전환 (11개)
- Database 타입에 TypedTable<Row, Insert, Update> 유틸 도입
  (Row & Record<string, unknown> 교차로 GenericTable 제약 만족)
- @supabase/ssr 2.102는 supabase-js 버전 불일치로 제네릭 주입 불가 -
  다음 사이클로 이월, api-client index.ts는 types만 재수출

묶음 G — apps/mobile UI 교체:
- login.tsx: MetalCard + PhosphorText(hero/label) + PhysicalButton
- meetings.tsx: MetalCard + Led(status) + PhosphorText(body/meta)
- record.tsx: Led + PhosphorText + PhysicalButton
- profile.tsx: MetalCard + PhysicalButton(danger) + d3roNativePalette

묶음 H — V2-7b 이메일 invite flow:
- migrations/20260410000001_team_invites.sql
  - team_invites 테이블 (token, email, role, expires_at 7일)
  - RLS: 같은 팀 멤버 + 초대 이메일 소유자 SELECT,
    owner/admin만 INSERT/DELETE
  - generate_invite_token() SECURITY DEFINER RPC (service_role)
- functions/team-invite: 권한 체크 -> 토큰 생성 -> 초대 URL 반환
- functions/team-accept: 토큰 검증 -> expires_at/accepted_at/이메일 일치 ->
  team_members upsert -> 초대 accepted 표시
- config.toml에 team-invite/team-accept 함수 등록
- InviteMemberForm 재작성: 이메일 입력 + 역할 선택 -> URL 복사 UI
- /accept-invite 페이지 신규 (Suspense 내 useSearchParams + token 수락)

묶음 I — Realtime transcripts:
- apps/web/components/meetings/live-transcript-list.tsx (client)
  - supabase.channel('transcripts:meeting:${id}').on('postgres_changes')
  - INSERT -> 세그먼트 추가, UPDATE -> row 교체
  - 중복 방지 segment_index 기준
  - edited 배지 표시
- meetings/[id]/page.tsx의 transcript 섹션을 LiveTranscriptList로 교체

묶음 J — 테스트:
- packages/api-client/__tests__/client.test.ts (9 tests)
  - createD3roSupabaseClient, isClientConfigured 팩토리 검증
- packages/api-client/__tests__/types.test.ts (10 tests)
  - 모든 Row 타입 + 리터럴 union + Database keyof
- vitest.config.ts 신규
- apps/web/playwright.config.ts 신규 (baseURL, webServer dev 서버)
- apps/web/e2e/smoke.spec.ts 신규 (6 스모크 테스트)
- apps/web tsconfig exclude에 e2e/playwright.config.ts 추가
- package.json scripts: test, test:e2e, test:e2e:ui

검증:
- desktop typecheck OK
- web typecheck OK
- web next build OK (12 라우트, /accept-invite Suspense 적용)
- desktop build OK
- api-client test 19 passed
2026-04-10 08:34:52 +09:00
.claude skill updated 2026-04-08 13:23:51 +09:00
.github/workflows feat(V2-5): macOS 빌드 지원 — 플랫폼 분기 + electron-builder mac 타겟 + CI 2026-04-08 15:57:16 +09:00
apps feat(V2-3차): pull 확장 + invite flow + Realtime + 테스트 + mobile UI 교체 2026-04-10 08:34:52 +09:00
docs feat(V2-4): 데스크톱 ↔ Supabase 동기화 (push only MVP) 2026-04-09 16:28:19 +09:00
memory feat(V2-3차): pull 확장 + invite flow + Realtime + 테스트 + mobile UI 교체 2026-04-10 08:34:52 +09:00
packages feat(V2-3차): pull 확장 + invite flow + Realtime + 테스트 + mobile UI 교체 2026-04-10 08:34:52 +09:00
server/supabase feat(V2-3차): pull 확장 + invite flow + Realtime + 테스트 + mobile UI 교체 2026-04-10 08:34:52 +09:00
site 랜딩 페이지: D3RO 브랜드 프로모션 사이트 + GitHub Pages 배포 2026-04-05 23:55:13 +09:00
.editorconfig v1.0.0 배포 준비: CHANGELOG, LICENSE, 프로젝트 메타 파일 추가 2026-04-06 09:29:27 +09:00
.eslintignore fix(V2-1): minor 이슈 정리 [M4][M5] 2026-04-09 02:32:37 +09:00
.eslintrc.cjs Phase 1+2 구현: Electron 뼈대 + STT/핫키/오케스트레이터 2026-04-05 02:01:37 +09:00
.gitattributes v1.0.0 배포 준비: CHANGELOG, LICENSE, 프로젝트 메타 파일 추가 2026-04-06 09:29:27 +09:00
.gitignore chore: .next/.expo gitignore + 이전 커밋의 .next 산출물 제거 2026-04-09 16:40:26 +09:00
.gitlab-ci.yml Phase 7~8 구현: 테스트 + 빌드 + CI/CD + SoundEffect + AutoLaunch + UI 리디자인 2026-04-05 09:12:56 +09:00
.nvmrc v1.0.0 배포 준비: CHANGELOG, LICENSE, 프로젝트 메타 파일 추가 2026-04-06 09:29:27 +09:00
.prettierrc Phase 1+2 구현: Electron 뼈대 + STT/핫키/오케스트레이터 2026-04-05 02:01:37 +09:00
CHANGELOG.md v1.0.0 배포 준비: CHANGELOG, LICENSE, 프로젝트 메타 파일 추가 2026-04-06 09:29:27 +09:00
CLAUDE.md feat: Phase 15.5-2 — 오디오 보존 + pyannote 실제 화자 구분 2026-04-08 12:17:37 +09:00
CONTRIBUTING.md v1.0.0 배포 준비: CHANGELOG, LICENSE, 프로젝트 메타 파일 추가 2026-04-06 09:29:27 +09:00
LICENSE v1.0.0 배포 준비: CHANGELOG, LICENSE, 프로젝트 메타 파일 추가 2026-04-06 09:29:27 +09:00
package-lock.json feat(V2-X-b): UI 정리 + pull 동기화 + Stripe 서명 검증 + ui-native 패키지 2026-04-09 21:36:38 +09:00
package.json feat(V2-6/V2-7/V2-8): Mobile MVP + Teams + Billing 스캐폴딩 2026-04-09 16:39:54 +09:00
SECURITY.md v1.0.0 배포 준비: CHANGELOG, LICENSE, 프로젝트 메타 파일 추가 2026-04-06 09:29:27 +09:00
tsconfig.base.json feat(V2-1a): Monorepo 구조 전환 — apps/desktop으로 V1 이동 2026-04-08 14:04:41 +09:00
tsconfig.json fix(V2-1a): 루트 workspace 설정 3파일 보충 2026-04-08 14:29:40 +09:00
turbo.json feat(V2-1a): Monorepo 구조 전환 — apps/desktop으로 V1 이동 2026-04-08 14:04:41 +09:00