fathersproj

개발 진행상황

완료31/70 (44%)
phasePhase 1
배포production
commit
Phase 1 — Foundation & MVP Skeleton현재
0/120%
Phase 2 — Core Commerce
0/140%
Phase 3 — Multi-Marketplace + Scale
0/130%
WBS업데이트: 2018-10-20 01:46:40 UTC

Bootstrapped (Done)

  • Next.js(App Router) + Payload(ecommerce) 템플릿 부트스트랩
  • 로컬 DB: SQLite(file)로 전환해서 개발 서버 안정화
  • Stripe 결제 모듈 optional 처리(Phase 1 placeholder) + Toss env placeholder 추가
  • Vercel Postgres 어댑터 추가(POSTGRES_URL 있으면 자동 사용)
  • 진행상황 페이지 `/progress` 추가 (WBS/목표 문서 실시간 표시)
  • MVP 검수 허브 `/mvp` 추가 (핵심 화면 목록/조건 명시)
  • Ops 콘솔 `/ops` 스켈레톤 + Preview 더미 모드 기본 ON
  • Ops 하위 페이지 확장: `/ops/orders`, `/ops/inventory`, `/ops/fulfillment`, `/ops/cs`, `/ops/settings`
  • Ops “매출/금액” 신호 추가: 채널 주문 금액(원) + 우선순위 정렬 반영
  • Ops “매출/정산” 페이지(`/ops/revenue`) + CSV(`GET /api/ops/revenue-report`) (prod 배포 완료)
  • 더미 데이터 fallback: `/shop`, `/products/demo` (DB가 비어도 확인 가능, prod 배포 완료)
  • 서체 교체: IBM Plex Sans KR + JetBrains Mono (storefront/ops, prod 배포 완료)
  • 디스플레이 서체 추가: Nanum Myeongjo (storefront/ops, prod 배포 완료)
  • 사진 placeholder 준비: Unsplash allowlist + `getLightingPlaceholderMedia()` (prod 배포 완료)
  • 홈 Hero 상향(highImpact) + hero 이미지(placeholder) 연결 (prod 배포 완료)
  • 데모 상품 확장(사진 포함) + PLP/PDP 이미지 fallback(깨짐 방지) (prod 배포 완료)
  • 상점 정렬/재고 표기 한글화 + 로그인 비밀번호 재설정 링크 수정 (prod 배포 완료)
  • 설치 가능 여부 30초 진단(`/install-check`) + 더미 추천/추적 이벤트 (prod 배포 완료)
  • Vercel + managed Postgres TLS 이슈 대응: `POSTGRES_SSL=true` 지원
  • 공식문서 기반 준비 문서화: 마켓플레이스/소셜로그인/카카오비즈니스 (docs/)
  • Ops 부트스트랩/시드 엔드포인트 추가: `/api/ops/bootstrap-admin`, `/api/ops/seed-lighting`
  • Production 더미 데이터 시드 완료(조명 도메인): 상품/채널주문/자사몰주문/배송/CS/재고 (검증: `2026-02-08T15:11:08Z` / `POST /api/ops/seed-lighting` 200)
  • Storefront 헤더 투명/글래스 강화 + Hero 대비(화이트 텍스트) 연결 (검증: `pnpm build` PASS)
  • 로그인 딥링크(redirect) 보존 개선: `/orders`, `/account/addresses` (검증: `pnpm typecheck` PASS)
  • 정책 페이지 템플릿 구축: `/policies/shipping`, `/policies/terms`, `/policies/privacy` (검증: `pnpm build` PASS)
  • 에이전트 리포트 최신화(Claude Code): Ops 플로우(1~2), 소셜 로그인 계획 (생성: `2026-02-09`)
  • GA4 계측 준비(측정 ID는 환경변수로 주입)
  • 소셜 로그인 “세션 생성(로그인 완료)”까지 연결(Kakao/Naver/Google, Provider 키는 환경변수로 주입)
  • 보안 헤더(기본) 적용: `next.config.js`
  • 홈 카피/섹션을 “구매 불안 제거(배송/설치/반품)” 중심으로 전환(내부 문서 링크 노출 제거)
  • Ops 운영 준비도 검사에서 “약한 시크릿”은 production에서 fail 처리(Go-live 가드)

Phase 1 — Foundation & MVP Skeleton

  • P1-001 Project kickoff + scope boundary
  • P1-002 Domain model + event/state definitions (products→orders→fulfillment)
  • P1-003 Architecture decision + repo setup
  • P1-004 GCP baseline infrastructure (dev/stage/prod)
  • P1-005 CI/CD pipeline
  • P1-006 Auth & account framework (customer + admin)
  • P1-007 CMS selection + integration spike
  • P1-008 UI/UX system + page skeletons
  • P1-009 Product catalog MVP (read-only)
  • P1-010 Observability baseline
  • P1-011 Security + compliance baseline (KR context)
  • P1-012 Phase 1 gate (MVP skeleton ready)

Phase 2 — Core Commerce

  • P2-001 Product management (admin) + inventory primitives
  • P2-002 Cart + pricing engine
  • P2-003 Address + region classification (routing key)
  • P2-004 Order service (create/order states)
  • P2-005 TossPayments integration (web checkout)
  • P2-006 TossPayments webhook + reconciliation
  • P2-007 Refund/cancel flows
  • P2-008 Fulfillment: inhouse pick/pack/ship MVP
  • P2-009 Fulfillment: 3PL integration MVP
  • P2-010 Unified fulfillment orchestration (inhouse ↔ 3PL)
  • P2-011 Notifications (transactional)
  • P2-012 Admin console MVP (ops-ready)
  • P2-013 QA test plan + automated tests
  • P2-014 Phase 2 gate (sell & ship on own site)

Phase 3 — Multi-Marketplace + Scale

  • P3-001 Marketplace access readiness
  • P3-002 Canonical SKU mapping + listing model
  • P3-003 Inventory synchronization service
  • P3-004 Naver SmartStore integration
  • P3-005 Coupang integration
  • P3-006 Toss Shopping integration
  • P3-007 Order ingestion pipeline + deduplication
  • P3-008 Returns/RMA workflow (cross-channel)
  • P3-009 Financial reconciliation (payments + channels)
  • P3-010 Performance + scalability hardening
  • P3-011 Security hardening
  • P3-012 Operational excellence (runbooks + on-call readiness)
  • P3-013 Phase 3 gate (multi-channel live)
현재 목표업데이트: 2018-10-20 01:46:40 UTC
# fathersproj — Status

## Current goal (Phase 1)
- Stand up a working baseline that never breaks (staging-first), with: **auth + CMS + catalog + order skeleton + payment placeholder**, plus SEO basics.

## What’s done (2026-02-04)
- Bootstrapped codebase using **Payload 3 ecommerce template** (Next.js App Router).
- Dependency install stabilized (pnpm install completed).
- Switched local DB adapter to **SQLite (file-based)** to remove MongoDB local dependency.
  - Config: `src/payload.config.ts`
  - Env: `.env` uses `DATABASE_URL=file:./.db/payload.db`
- Dev server starts successfully.
- Stripe adapter/client made **conditional** so the app boots even without payment keys (Phase 1 payment placeholder).

## What’s done (2026-02-07)
- Deployed production: `https://fathersweb.vercel.app`
- Added MVP review hub: `/mvp` (핵심 화면을 “더미 데이터로도” 바로 확인)
- Added Ops console skeleton: `/ops`
  - Preview 환경은 더미 모드 기본 ON (`VERCEL_ENV=preview` 또는 `OPS_DEMO_MODE=true`)
- Expanded Ops console pages (MVP 검수용)
  - `/ops/orders`, `/ops/inventory`, `/ops/fulfillment`, `/ops/cs`, `/ops/settings`
- Added revenue/amount signals to Ops dashboard
  - 채널 주문 금액(원) 표시 + 작업 큐 정렬에 금액 가중치 추가
- Ensured “DB 비어있음/초기화 실패”에도 MVP 화면이 깨지지 않게 fallback 적용
  - `/shop` (PLP): DB가 비어있어도 데모 상품 표시
  - `/products/demo` (PDP): 데모 상품 항상 확인 가능
- Fixed Payload init error on managed Postgres (e.g. Supabase) with self-signed TLS chain
  - Symptom: `SELF_SIGNED_CERT_IN_CHAIN` → Payload init 실패 → `/api/*`, `/admin` 500
  - Resolution: `POSTGRES_SSL=true` 시 connection string에 `sslmode=require&uselibpqcompat=true` 주입
  - Vercel env: `POSTGRES_SSL=true` (production/preview) 반영
- Added Ops bootstrap + lighting seed endpoints (Payload custom endpoints)
  - `POST /api/ops/bootstrap-admin` (admin or `READINESS_API_KEY`)
  - `POST /api/ops/seed-lighting` (admin or `READINESS_API_KEY`)
- Bootstrapped production admin account for Ops
  - `2mooroolt@gmail.com` / `OPS_ADMIN_PASSWORD` (환경변수로 설정, 커밋 금지)
- Seeded production dummy data for lighting domain
  - Products/Categories + Channel Orders + Direct Orders + Shipments + CS queues + SKU mappings + Inventory sync logs

## What’s done (2026-02-08)
- Added Ops revenue/settlement page: `/ops/revenue`
  - 기간 탭(today/week/month) + 채널(KRW) / 자사몰(USD) 분리 표기
  - Primary CTA: 정산 CSV 내려받기
- Added Ops CSV endpoint (Payload custom endpoint)
  - `GET /api/ops/revenue-report?range=today|week|month`
  - 인증: admin 또는 `READINESS_API_KEY`
- Switched fonts (storefront + ops)
  - `IBM Plex Sans KR` + `JetBrains Mono` (CSS var 호환 유지)
  - Display: `Nanum Myeongjo` 추가
- Prepared placeholder photography
  - Next remotePatterns: Unsplash 허용
  - Placeholder media util: `src/demo/lightingMedia.ts`
- Improved home fallback VP/USP copy
  - 적용 조건: DB에 `pages/home`가 없을 때만 fallback으로 노출
- Storefront polish (visual + dummy)
  - Home hero: `highImpact` + hero 이미지(placeholder) 연결
  - Demo products: 12개(사진 포함)으로 확장
  - PLP/PDP: 갤러리/메타 이미지가 없어도 placeholder로 UI가 “절대 안 깨지게” 보강
  - 정렬/재고 표기 한글화 + 로그인 비밀번호 재설정 링크 수정

- Storefront dummy 강화(추가)
  - Demo products: 37개로 확장 + 카피(조건 먼저) 확장
  - PLP 데모 모드에서도 `q` 검색이 실제로 필터링되도록 보강
  - 카테고리 사이드바: DB 실패/빈 상태에서도 탐색 가능한 “검색 칩” 폴백 제공
  - PDP: description이 없을 때 `meta.description`을 요약 문구로 폴백
- Git push + Vercel production deploy 완료
  - commit: `62df36f` (main)
  - alias: `https://fathersweb.vercel.app`
- GitHub Actions 워크플로는 템플릿으로 보관
  - 이유: OAuth 토큰에 `workflow` scope가 없으면 `.github/workflows/*` 푸시가 거부됨
  - 위치: `docs/workflows/` (추후 실제 CI 적용 시 `.github/workflows/`로 이동)

## What’s done (2026-02-09)
- Storefront 헤더 UX 개선(투명/글래스 + 스크롤 상태)
  - 홈(Hero) 대비를 위해 헤더 텍스트 컬러가 자동 전환되도록 연결
  - 파일: `src/components/Header/index.client.tsx`, `src/heros/HighImpact/index.tsx`
- Home “구매 불안 제거” 섹션 카피 전환(고객 관점)
  - `/progress` 링크(내부 문서) 노출 제거 → 정책/조건 우선 안내로 변경
  - 파일: `src/components/home/HomeSections.tsx`, `src/endpoints/seed/home-static.ts`
- 로그인 딥링크(redirect) 보존 개선
  - `/orders`, `/account/addresses` → 로그인 후 원래 페이지로 복귀
  - 파일: `src/app/(app)/(account)/orders/page.tsx`, `src/app/(app)/(account)/account/addresses/page.tsx`
- Ops 로그인 딥링크(redirect) 보존 개선
  - `/ops/*` 진입 시 “항상 /ops로만” 가던 redirect를 제거하고, 각 페이지가 자기 경로로 복귀하도록 정리
  - 파일: `src/app/(ops)/layout.tsx`, `src/app/(ops)/ops/*/page.tsx`
- GA4 계측 준비(페이지뷰 + 주요 이벤트)
  - GA4 스크립트/페이지뷰: `src/components/analytics/*`
  - 이벤트 포워딩: `src/utilities/track.ts`
  - 적용: `src/app/(app)/layout.tsx`, `src/app/(ops)/layout.tsx`
- 소셜 로그인 “세션 생성”까지 연결(Kakao/Naver/Google)
  - 엔드포인트: `src/integrations/social/endpoints/index.ts`
  - 토큰/프로필/업서트/세션: `src/integrations/social/{tokenExchange,profileFetch,userUpsert,session}.ts`
- 보안 헤더 기본 적용(프레이밍/스니핑/리퍼러/퍼미션)
  - 파일: `next.config.js`
- 정책 페이지 템플릿 구축(실판매 준비용)
  - `/policies/shipping`, `/policies/terms`, `/policies/privacy`
  - 공통 셸: `src/components/policies/PolicyShell.tsx`
- 에이전트 리포트 최신화(Claude Code)
  - `docs/agent-reports/claude-ops-flow-review-2026-02-09.md`
  - `docs/agent-reports/claude-social-login-plan-2026-02-09.md`
- 프로토타입(정적 HTML) 헤더 투명도 강화 + Next에서 접근 가능하게 노출
  - 원본: `html-prototypes/*`
  - 노출: `public/prototypes/*` → `/prototypes/index.html` 등
  - MVP 허브(`/mvp`)에 링크 추가: `src/app/(app)/mvp/page.tsx`
- 운영 준비도 검사(readiness)에서 “약한 시크릿(예: 1234)”은 production에서 fail 처리
  - 파일: `src/ops/endpoints/readiness.ts` (`isWeakReadinessKey`, `isWeakOpsAdminPassword`)
- 문서 추가(운영자가 바로 붙일 수 있게 준비)
  - GA4: `docs/ANALYTICS_GA4_SETUP.md`
  - 소셜 로그인: `docs/SOCIAL_LOGIN_SETUP.md`
- Ops 매출/금액 집계 기준을 `channel-orders.orderedAt`로 전환(없으면 `createdAt` 폴백)
  - 목적: “적재 시각(createdAt) 때문에 과거 주문이 오늘 매출로 잡히는 문제” 방지
  - 파일: `src/marketplace/collections/ChannelOrders.ts`, `src/app/(ops)/ops/revenue/page.tsx`, `src/ops/endpoints/revenueReport.ts`
- Ops “총 주문금액” 지표 추가(채널 + 자사몰 합산)
  - `/ops`: 오늘 총 주문금액 + 총 미처리 금액 + 채널/자사몰 분리 금액
  - `/ops/orders`: 오늘 총 주문금액 + 총 미처리 금액
  - `/ops/revenue`: 기간 내 총 주문금액(기존 통합 매출 카드 라벨 정리)
  - commit: `68129b9` (main)
- `/progress`에서 Phase 진행률 카드 노출(Phase 1~3)
  - 근거: `WBS_PHASES.md` 체크박스(`[x]`) 기준으로 % 계산
  - “현재 Phase” 표기: `PROJECT_STATUS.md`의 `## Current goal (Phase N)`에서 파싱
  - 파일: `src/app/(app)/progress/page.tsx`

## Current state (as of 2026-02-09)
- Production checks
  - `/` 200
  - `/mvp` 200
  - `/shop` 200
  - `/products/demo` 200
  - `/login` 200
  - `/account` 200
  - `/api/users/me` 200
  - `/admin` 200
  - `/ops` 307 → `/login?redirect=%2Fops` (미로그인)
  - `/ops` 200 (관리자 로그인 후)
  - `/ops/orders` 307 → `/login?redirect=%2Fops%2Forders` (미로그인)
  - `/ops/inventory` 307 → `/login?redirect=%2Fops%2Finventory` (미로그인)
  - `/ops/fulfillment` 307 → `/login?redirect=%2Fops%2Ffulfillment` (미로그인)
  - `/ops/cs` 307 → `/login?redirect=%2Fops%2Fcs` (미로그인)
  - `/ops/settings` 307 → `/login?redirect=%2Fops%2Fsettings` (미로그인)
  - `/ops/revenue` 307 → `/login?redirect=%2Fops%2Frevenue` (미로그인)
  - `/ops/revenue` 200 (관리자 로그인 후)
  - `/api/ops/revenue-report?range=today` 200 (admin 또는 `READINESS_API_KEY`)
- Preview
  - Vercel Preview protection enabled → 브라우저에서는 정상 확인 가능, `curl`은 401 응답

## How to run (local)
```bash
cd fathersweb
pnpm install
pnpm dev
# default: http://localhost:3000 (or set PORT=3005)
```

## Important notes / next decisions
- Production DB target: **Postgres (Supabase 등)** 권장. (로컬은 SQLite 유지 가능)
- Payments: template includes Stripe; fathersproj needs **TossPayments** → replace payment flow and webhook handlers.
- Fulfillment: implement **routing engine** (INHOUSE ↔ 3PL by region) and start with CSV exporter.
- Vercel + Postgres: managed DB에서 TLS chain 이슈가 있으면 `POSTGRES_SSL=true`를 기본값으로 둔다.

## Next steps (execution order)
1. Confirm baseline pages + admin login works end-to-end on local.
2. Add feature-flag framework + environment split (dev/staging/prod).
3. Replace Stripe checkout with TossPayments (Phase 1: placeholder, Phase 2: full).
4. Define canonical domain model (SKU/Order/PaymentAttempt/Fulfillment) and lock state machines.

<!-- trigger 2026-02-05T07:03:55Z -->

이 페이지는 배포될 때마다 자동 업데이트 됩니다. (Vercel Preview/Production 모두 동일)