Skip to content

[EPIC] Supabase 프로젝트 분리: assets + prod #333

@cocoyoon

Description

@cocoyoon

목표

decoded의 데이터 파이프라인을 단일 Supabase(prod)에서 assets(신규, 파이프라인 스테이징)와 prod(검증본 전용) 두 프로젝트로 분리한다.

핵심 설계 결정

  • 두 프로젝트 완전 독립 — cross-ID 참조 없음 (prod.posts에 raw 참조 X)
  • "검증(verify)" 이 최종 액션 — admin이 COMPLETED raw_post 승인 시 assets.status=VERIFIED + prod.posts INSERT 한 번에. "승격(promote)" 개념 없음
  • 중복 방지는 admin 운영 책임 (DB UNIQUE 없음)
  • 상태머신 5개: NOT_STARTED / IN_PROGRESS / COMPLETED / VERIFIED / ERROR
  • 로컬 개발: 로컬 Supabase = prod 역할, cloud assets는 공유. APP_ENV=local 시 assets write skip
  • prod warehouse 완전 드롭, entity 테이블은 public으로 rename
  • R2 버킷은 그대로 공유

Child 이슈 체크리스트

머지 전략

브랜치 feature/assets-project-split 단일 — 위 이슈 순서대로 커밋 단위로 쌓고, 단일 메가 PR 로 머지. PR 본문에 Closes #334 ... Closes #343 나열 → 일괄 close.

배포 순서 (prod downtime ~60-90s)

  1. assets 프로젝트 생성 + 초기 스키마
  2. ai-server ARQ 워커/스케줄러 중단 (writer freeze)
  3. prod drop 마이그레이션 적용 (PITR 스냅샷 후)
  4. api-server 배포 (신규 코드 + ASSETS_* env)
  5. ai-server 배포 (신규 env)
  6. web 배포

리스크

  • cloud assets 장애 → raw_posts 엔드포인트 503, posts CRUD는 영향 없음 (pool 분리)
  • drop 마이그레이션 오류 → 단일 트랜잭션 + PITR 7일 보관 (수동 snapshot 권장)
  • 이전 api-server 롤백 불가 → warehouse.raw_posts 없어서 500. 앞으로만 수정 원칙

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions