From f9d3664608ccea9627145c3155dca6711bcb72b0 Mon Sep 17 00:00:00 2001 From: gahusb Date: Sat, 6 Jun 2026 14:50:08 +0900 Subject: [PATCH] =?UTF-8?q?docs(plan):=20Phase=202=20=EC=99=84=EB=A3=8C=20?= =?UTF-8?q?=E2=80=94=20=EB=AC=B4=EC=86=90=EC=8B=A4=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=EC=9D=B4=EC=A0=84(PG17=20=EC=A0=84=ED=99=98=C2=B7?= =?UTF-8?q?=EC=9F=81=EC=8A=B9=EB=A7=8C=C2=B7RLS=20=EA=B2=80=EC=A6=9D)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 멀티앱 공유 DB 발견 → 쟁승 10테이블+auth+storage만 이전 - 클라우드 PG17.6 ↔ NAS PG17 통일, 행수 12개 일치, project_milestones anon 없음 확인 - storage 0(실파일 스킵), subscriptions 클라우드 미존재(후속) - Phase 3: maxDuration 제거 안 함(Vercel 전용 메타, self-host 무시) Co-Authored-By: Claude Opus 4.8 (1M context) --- .../plans/2026-06-02-nas-selfhost-migration.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/docs/superpowers/plans/2026-06-02-nas-selfhost-migration.md b/docs/superpowers/plans/2026-06-02-nas-selfhost-migration.md index 6fe7ad2..b8018a5 100644 --- a/docs/superpowers/plans/2026-06-02-nas-selfhost-migration.md +++ b/docs/superpowers/plans/2026-06-02-nas-selfhost-migration.md @@ -103,7 +103,16 @@ --- -## Phase 2 — 데이터 마이그레이션 (클라우드 → NAS) +## Phase 2 — 데이터 마이그레이션 (클라우드 → NAS) ✅ (2026-06-06 완료) + +> **실행 결과 (2026-06-06):** +> - **발견: 클라우드 DB가 멀티 프로젝트 공유** — public에 쟁승 10개 외 `ebay_search_history·lotto_history·wk_*`(별개 앱) 존재. **박재오 결정: 쟁승메이드 관련만 이전**(ebay/lotto/wk 제외, 클라우드 해지 보류). +> - **발견: PG 버전 불일치** — 클라우드 PG **17.6**, NAS 기본 15.8 → pg_dump 거부. **NAS db를 `docker-compose.pg17.yml`로 PG17(17.6.1)로 전환**(`.env` `COMPOSE_FILE=docker-compose.yml:docker-compose.pg17.yml`, PG15 볼륨 `down -v`+`rm volumes/db/data` 후 재init). +> - **선별 덤프**: public 10개(schema+data) + auth.users/identities·storage(data-only). `PGPASSWORD`로 비번 분리(URL 노출 회피). +> - **무손실 확정**: NAS↔CLOUD 행수 12개 항목 완전 일치 — users4/identities5/profiles4/quotes4/payments4/orders15/products25/project_milestones7/saju_records3, contact_requests0/survey_responses0/pack_files0. +> - **RLS 이전 확인**: project_milestones=authenticated(anon 없음, 2026-06-01 보안수정 반영), quotes=authenticated. +> - **storage 0** → buckets/objects 없음 = pack 실파일은 storage 미사용(packs-lab) → **2-3 실파일 이전 스킵**. +> - **후속 메모**: `subscriptions` 테이블이 클라우드에 미존재(앱 `/api/subscription`이 참조하나 미배포 상태) → 구독 기능 활성화 시 별도 생성 필요. 비번 `Rk..8!`은 채팅 노출됐으므로 클라우드 해지 시 자연 폐기 또는 사전 재설정. **목표:** 클라우드 Supabase의 데이터·인증·스토리지를 NAS Postgres로 무손실 이전. @@ -165,7 +174,7 @@ // ...기존 headers/redirects 유지 }; ``` -- [ ] 3-2. `app/api/saju/analyze/route.ts`에서 `export const maxDuration = 60;` 제거(self-host Node는 자체 타임아웃). `runtime='nodejs'`는 유지. +- [ ] 3-2. ~~`maxDuration` 제거~~ **하지 않음** — `export const maxDuration = 60`은 **Vercel 전용 메타라 self-host(`next start`)에선 무시**된다. 컷오버 전까지 Vercel 운영(saju 60초)을 깨지 않으려면 **그대로 유지**. (양쪽 호환) - [ ] 3-3. `Dockerfile` 생성(멀티스테이지, standalone): ```dockerfile FROM node:20-alpine AS deps