Commit Graph

159 Commits

Author SHA1 Message Date
11bbd00d88 feat(shell): PublicShell에 카카오 1:1 상담 플로팅 버튼 추가
DashboardShell 사이드바 분기에서 mypage 전용으로만 노출되던 카카오 버튼을
모든 공개 페이지(메인/서비스/외주/사주/결제/legal/mypage 등)에서 노출되도록 이동.
DashboardShell 쪽 원본은 Task 6에서 사이드바 분기 제거와 함께 자연 삭제 예정.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 03:52:10 +09:00
22fe05b4d8 fix(nav): TopNav auth 구독 안정화 + 로그아웃 UX 보강
코드 리뷰 후속:
- (I-1) useMemo로 supabase client 안정화 → 매 렌더 re-subscribe 제거
- (I-2) getUser() → getSession() → first paint flash 거의 제거 (localStorage 동기 읽기)
- (M-1) 로그아웃 router.push → router.replace → 보호 페이지 백스택 잔존 방지
- (M-2) 모바일 로그아웃 button transition-colors 추가 (데스크톱과 일관)

Defer (별도 검토):
- M-3 로그인 시 Try now 사라짐 — marketing 결정 필요
- M-5 잔여 flash — Phase 2 server prop hydration 시 완전 제거

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 03:50:41 +09:00
601bc38a12 feat(nav): TopNav supabase auth 구독 + 로그인 상태 토글
- 로그아웃 시: "로그인" link + "Try now" 버튼 (기존)
- 로그인 시: "마이페이지" link + "로그아웃" 버튼 (신규)
- 데스크톱 + 모바일 오버레이 둘 다 동일 패턴
- Sidebar.tsx:93-103 의 auth 구독 패턴 차용

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 03:46:16 +09:00
2e780f2dcd refactor(packs): TIER_LABEL SSOT + Phase 2 migration note
코드 리뷰 후속 (I1+M2):
- TIER_LABEL: PackTier → 한국어 표시명 single source of truth
- PACK_ASSETS[*].name 백틱 템플릿으로 TIER_LABEL 참조
- extractPackTier if-ladder → LABEL_TO_TIER lookup (자동 derive)
- 마케팅 카피(입문/프로/마스터) 변경 시 한 곳만 수정으로 mypage·music 동기화

추가 코멘트 (M1, I3):
- U+00B7 middle-dot 명시
- Phase 2 PackFile 형태 마이그레이션 가이드 (files: string[] → { label, url? }[])

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 03:44:10 +09:00
a8fea0368e feat(packs): Music 팩 3티어 정적 자료 매핑 + tier 추출 함수
- PACK_ASSETS: starter/pro/master 각 자료 리스트 (Phase 1 placeholder, 실제 파일 URL은 Phase 2)
- extractPackTier(): orders.service "구매 신청: AI 음악 마스터 팩 · {tier}" → tier key
  · "·" 뒤의 마지막 단어로 매칭하여 "마스터 팩" + "프로" 같은 충돌 회피

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 03:39:16 +09:00
d2bdc6a854 docs(plan): mypage Liquid Glass Phase 1 — 8 task implementation plan
Spec docs/superpowers/specs/2026-04-27-mypage-liquidglass-redesign.md 의 7개 섹션
모두 task로 매핑. 검증 인프라 부재 → lint + build + 시각 회귀 3단계 검증.

Task 순서 안전 분석(부록 A): 각 commit 후 mypage 로그아웃 경로 + 카카오 진입 항상 유지.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 03:37:49 +09:00
3c3f1e0298 docs(spec): mypage Liquid Glass 리뉴얼 Phase 1 — PublicShell 통합 + 음악 통합 placeholder
CEO 결정 5개 라인:
- 음악 통합 = B(구매한 팩 자료) + C(스튜디오 링크 — TopNav에 이미 있음)
- 구조 = PublicShell + TopNav 통합, Sidebar 제거
- 톤 = Hybrid Dark Hero + Light Cards (kx-surface + 보라 액센트)
- NAS 호스팅 = Phase 1 디자인/구조만, Phase 2 자료 호스팅 별도
- 신원 표시 = TopNav "마이페이지/로그아웃" link + mypage 축소 hero

변경 범위 (4 파일):
- DashboardShell.tsx: 사이드바 분기 + 카카오 버튼 통째 삭제
- TopNav.tsx: supabase auth 구독 + 로그인 상태 토글 (Sidebar 패턴 차용)
- Sidebar.tsx: 삭제 (사용처 0)
- mypage/page.tsx: 디자인 토큰 마이그레이션 + hero 축소 + "구매한 팩" 탭 신설

신규: lib/pack-assets.ts (3 tier 정적 자료 매핑 + extractPackTier 함수)
이동: 카카오 플로팅 버튼 → PublicShell footer 다음

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 03:30:07 +09:00
3033572ecb polish(home,seo): P0 final review 반영 — 명명 통일 + priceSpec 정리 + 카드 분석
Final code reviewer 후속 3건:
- 명명 통일: Home 카드 "웹사이트" → "웹사이트 제작", "사주 카탈로그" → "AI 사주" /
  JSON-LD "맞춤 개발 외주" → "외주 개발". Footer와 4개 라인 라벨 일치.
- priceSpecification 스텁 제거 (Schema.org price-on-request 관용 표기 아님).
  P1에서 자체 정가 확정 시 Offer.price + priceCurrency 동시 추가 예정.
- 카드별 trackCTAClick("home_v6_custom_build_card_<key>") 5개 추가 — P1 IA
  결정용 라인별 클릭 데이터.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 02:47:36 +09:00
47e2460f8f fix(seo): OfferCatalog 외주·웹사이트 항목 SEO 정합성 보강
- provider @id: #person → #business (기존 5개 항목과 provider 일관성)
- priceSpecification 스텁 추가 (priceCurrency만, price 미정) — Search Console
  incomplete Offer 경고 방지, "price-on-request" 시그널.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 02:34:59 +09:00
0a4d5b70da feat(seo): OfferCatalog에 외주·웹사이트 Service 항목 추가 (가격 미정)
Custom Build 사업부의 두 라인을 JSON-LD에 노출:
- 맞춤 개발 외주 (/freelance)
- 웹사이트 제작 (/services/website)

자체 정가가 미정이라 Offer.price 생략 (P1에서 가격 확정 후 추가).
provider는 기존 Person(@id="...#person") 재사용.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 02:30:29 +09:00
3ce992ab95 fix(home): Custom Build 섹션 grid orphan + 모달 service 컨텍스트화
- 카드 grid: grid-cols-2 md:grid-cols-5 → grid-cols-1 sm:grid-cols-2 lg:grid-cols-5
  (모바일 orphan 방지)
- ContactModal service를 state로 lift (modalService) — Custom Build CTA에서
  "외주 개발 문의" 자동 선택. 모달 close 시 "일반 문의"로 리셋.
- 카드 화살표 span에 aria-hidden 추가 (a11y)
- 카드 Link 의 redundant inline style 제거

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 02:26:56 +09:00
721790e14d feat(home): Final CTA 위에 Custom Build 미니 섹션 추가 (5라인 + 견적 CTA)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 02:21:34 +09:00
ba6d015c4a feat(footer): Company 컬럼을 Custom Build로 재정비 (외주·웹사이트 추가)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 02:18:11 +09:00
0069b1529f feat(nav): TopNav에 외주(/freelance) 진입점 추가
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 02:15:14 +09:00
f2370131ef docs(spec,plan): 홈 재구조 brainstorm + P0 implementation plan
- spec: Music + Custom Build 동등 두 사업부 (A/A-1) IA 재구조
  · /work 사용, /work/saju 통합, 자체 정가, 외주 5건 비공개
  · 메인 안 2 (Brand Hero + 2-up) + 헤더 안 b 추천
  · TODO P0~P3 우선순위
- plan: P0 4 task (TopNav 외주 링크 / 푸터 Custom Build / 메인 미니 섹션 / JSON-LD)
  · 결제는 이미 계좌이체 단일화 상태(Music/Blog) 발견 → P0 결제 task 제외
  · 사주 1,000원 PG는 미해결로 부록 분리

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 02:12:51 +09:00
50163669d6 chore(scripts): 사주 인용구 삽입 스크립트 추가
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 02:12:38 +09:00
d5a26c462d chore(media): hero·feature 영상 자산 추가
홈 hero 배경(hero-bg.mp4)과 Features 섹션의 Prompt·Visual 데모 영상 3종 추가.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 02:12:34 +09:00
32dce9ea1e feat(home): Liquid Glass + Jua 폰트로 헤더·푸터·홈·뮤직 페이지 전환
- layout.tsx: Bagel/Inter/Manrope/SpaceGrotesk → Jua 단일화 + GlassFilter 마운트
- globals.css: 글래스 효과·Jua 폰트 변수
- TopNav: 알약형 글래스 헤더 (스크롤 시 max-w-3xl 축소)
- PublicShell: 푸터 정돈
- 홈 page.tsx: hero 영상 배경 + GlassButton CTA + 트윗 마퀴
- 뮤직 page.tsx: SparklesOverlay + 3D card effect

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 02:12:29 +09:00
7ee75f1511 feat(ui): Liquid Glass + Aceternity 컴포넌트 도입 (clsx·framer-motion·tailwind-merge)
- LiquidGlass: GlassButton·GlassFilter (Apple Liquid Glass 효과)
- 3d-card-effect: 마우스 추적 3D 카드 래퍼
- sparkles-text: SparklesText·SparklesOverlay
- lib/utils.ts: cn() (clsx + tailwind-merge)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 02:12:21 +09:00
ea3ee0bbc4 chore: ignore .worktrees/ directory
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 08:24:38 +09:00
ae3a469cff docs(plan): 사주 서비스 카탈로그 운영화 구현 계획 — 7 task
lib/saju-catalog.ts SSOT, /services/saju-business LP(인쇄 모드 포함),
견적 에디터 카탈로그 모달/프리셋 4종, 결제 안내 페이지까지.
TopNav 노출은 매출 검증 후 옵션 task.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 08:19:00 +09:00
ce2720b562 docs(spec): 사주 서비스 카탈로그 설계 — 코어 49만 + 모듈 11종
A(반복 판매 표준화) + C(LTV 락인) 방향으로 D 듀얼 페르소나(사주집·인스타) 대상
B 단일 코어 + 모듈 카탈로그 구조 확정. 풀세트 사주집 1년 LTV 746만 시나리오 포함.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 08:04:01 +09:00
c7086f3408 style: Bagel Fat One 디스플레이 폰트 도입
- next/font/google로 Bagel_Fat_One (weight 400) 로드
- --font-kx-hero 변수로 주입, .kx-display가 우선 적용
- 한글은 Bagel Fat One(latin-only) → Space Grotesk/CookieRun 자연 폴백
2026-04-16 04:07:17 +09:00
835c154c01 copy(hero): 애플식 카피 — 단언·간결·제품 중심
- 홈/팩 상세 Hero 통일
- Main: '한 줄이면, 노래가 됩니다.' (한 문장)
- Sub: 구성 요약 1문장으로 압축
2026-04-16 04:03:39 +09:00
fc311bbb94 feat(nav): 투명 배경 + 스크롤 시 블러 + JSM 로고 + Try now CTA
- 기본 상태: 배경·경계선 제거 (완전 투명)
- 스크롤 시: 반투명 + backdrop-blur로 영역 표출
- 로고 '쟁승메이드' → 'JSM'
- 샘플 활성 시 팩 상세 동시 활성화 제거 (정확 매칭)
- CTA '시작하기' → 'Try now'
2026-04-16 04:01:14 +09:00
2535ec0dc9 refactor: 홈·팩 상세 섹션 덜어내기 (목적별 재편)
홈 (448→307줄):
- Evidence(DEMO 가짜 수치), Toolkit(상세와 중복), Process 3단계(상세와 중복) 삭제
- 남은 섹션: Hero → Before/After → Other Products + Final CTA

팩 상세 (438→393줄):
- Final CTA 섹션 삭제 (Sticky CTA와 역할 중복)
- Samples 섹션 컴팩트 링크 바로 축약 (Hero 프리뷰와 역할 중복)
- Pricing features 각 티어 4개로 축소 (시선 분산 감소)
2026-04-16 03:57:28 +09:00
21aad98bcc refactor: 팩 상세 반복 규칙·밀도 통일
- 카드 radius 전면 rounded-2xl 통일 (가격·FAQ 3xl→2xl)
- 섹션 H2 스케일 통일 (text-2xl md:text-3xl)
- 4단계 공정: 세로 대형 카드 → 2x2/4열 컴팩트 그리드
- 최종 CTA 카피 정정: '평생 업데이트' → '12개월 무료 업데이트'
2026-04-16 03:53:27 +09:00
70bd09b59a refactor: 팩 상세 AI-티 제거 — 결과 중심 Hero + Sticky CTA + 덜어내기
- Hero: 좌(카피+CTA 2개) / 우(샘플 프리뷰 9:16) 2-column 재구성
- 구성품 6→4로 축소, 반복 규칙(rounded-2xl/p-6) 통일
- 추천대상·B2B 섹션 삭제 (섹션당 역할 1개 원칙)
- Sticky 바텀 CTA: 스크롤 중 항상 ₩39,000 진입점 유지
2026-04-16 03:48:29 +09:00
b8c5a202ce feat: Suno sunoapi.org v1 스펙 적용 + 팩 상세 섹션 재구성
- Suno API: /api/v1/generate (taskId) + record-info 폴링으로 전환
- SUNO_API_URL 기본값 https://api.sunoapi.org, SUNO_API_KEY만 필수
- 모델: V4 / V4_5 / V3_5, customMode·callBackUrl 지원
- 결과 카드: sunoData 배열(오디오·이미지·태그·duration) 렌더
- 팩 상세: 팩 구성품 + 추천 대상 섹션 추가, Before/After 제거
2026-04-15 03:34:44 +09:00
a362f7b387 feat: 스튜디오 페이지 + Suno API 프록시 + 팩 상세 가격 최상단 재구성
- TopNav: 홈/샘플/팩 상세/스튜디오 4개 링크 구조
- /services/music: 컴팩트 헤더 + PRICING 최상단 배치 (상세 포맷)
- /studio: Suno Generate UI (simple/custom 모드, 태그 프리셋, 폴링)
- /api/studio/generate, /api/studio/status: Suno API 프록시
2026-04-15 03:27:17 +09:00
3aeec8b323 feat: 샘플 갤러리 별도 페이지 + 메인은 TOP 1개만
- /services/music/samples 신규: 6개 장르 샘플 갤러리 + 구매 CTA
- 음악 페이지 #samples 섹션: 가장 인기 1개(featured)만 노출 + 갤러리 링크
- TopNav/Hero 보조 CTA '샘플' → /services/music/samples 로 통일

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 03:15:33 +09:00
cf29caa67a fix: Evidence DEMO 뱃지 + JSON-LD price + 모바일 가격 스택 + 샘플 앵커 통일
- Evidence 섹션에 '예시' 배지/면책 문구 (실샘플 전 법적 리스크 정리)
- JSON-LD Offer에 price/priceCurrency/availability 추가 (39k/99k/149k/29k/무료)
- 모바일에서 3-tier 가격 칩 세로 스택 (🔥프로 강조 유지)
- Hero '샘플 결과 보기' 앵커 /services/music#samples로 통일

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 03:11:27 +09:00
4f42ed68a5 feat: 마케팅 평가 반영 — 카피·메타·CTA 음악 중심 정렬
- TopNav 한국어화 (홈/샘플/가격/팩 상세), API 제거
- Hero 배지: 상품 형태 명시 "프롬프트·템플릿 팩 (PDF + 에셋)"
- Hero CTA: "₩39,000 팩 자세히 보기" (기대↔페이지 정렬)
- Hero 하단 3-tier 가격 요약 + 프로 티어 "가장 많이 팔림" 강조
- Final CTA 음악 단일화 ("오늘 밤 첫 AI 뮤비"), 문의는 서브 링크로 격하
- Other Products 헤더 "박재오가 만든 다른 도구" + 운영자 1줄
- layout 메타데이터·OG·Twitter·keywords 전면 음악 중심 재편

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 03:08:24 +09:00
339cbbc47a feat: TopNav 뮤직 중심 재편 (Home/Showcase/Pricing/API)
블로그 팩·AI 사주 제거 — 홈 '다른 도구들' 카드로 유지
음악 메인 상품 포커스 강화

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 02:58:42 +09:00
5d8b74bb39 feat: Hero 배경 이미지 추가 (hero_back.webp)
- 원본 9.1MB PNG → 216KB WebP (1920x1047, quality 80)
- next/image + priority로 LCP 최적화
- opacity 0.35 + 다크 오버레이로 텍스트 가독성 확보

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 02:55:15 +09:00
26cd7c9835 fix: proxy.ts export 이름 middleware → proxy
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 02:34:47 +09:00
18cd244600 chore: middleware.ts → proxy.ts (Next.js 16 컨벤션)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 02:33:55 +09:00
97851e68a0 fix: 홈 waveform SVG hydration mismatch + smooth scroll 경고
- Math.sin 부동소수점 값을 toFixed(3)로 정규화 (서버/클라 직렬화 차이 제거)
- html에 data-scroll-behavior="smooth" 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 02:27:44 +09:00
6d0c3c4bcf fix: TopNav 모바일 오버레이 body scroll lock + 푸터 연도 2026 통일
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 02:25:38 +09:00
a9b53a3327 feat: PublicShell + TopNav + 홈 v6 (ai_music_creator 참조)
- 사이드바 대시보드는 /admin, /mypage 에서만 사용
- 공개 페이지는 상단 TopNav + 다크 footer(PublicShell)
- 홈 v6: Hero + Evidence + Before/After + Toolkit + 3-Step + Other Products

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 02:18:30 +09:00
6c74b2cc93 feat: Kinetic Ether 디자인 시스템 + 홈 대시보드형 재구성
- globals.css: --kx-* 토큰(서피스 4단계, 네온 퍼플/시안), Space Grotesk/Inter/Manrope
  도입(next/font), 글래스·글로우·폴더 컨테이너·버튼 유틸 클래스
- app/page.tsx v5: 워크스페이스형 대시보드(헤더+Engine Status 패널+Launch Pads
  그리드+Credibility Monitor+Final CTA), Stitch "Kinetic Ether" 참조
- "7년차 대기업 백엔드" 카피 전역 교체(현직 엔지니어/실무 엔지니어)
- /services/music 히어로 레이블·디스플레이 폰트 토큰 정합

참조: Downloads/stitch_ai_mv/{sonicai_main_landing_page, aether_forge, ...}

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 02:08:54 +09:00
2c8a0f1c37 chore: Resend 발신 도메인을 자체 검증 도메인으로 교체
onboarding@resend.dev (샌드박스) → noreply@jaengseung-made.com (검증 완료).
스팸 판정 위험 감소 + 브랜드 일관성.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 01:44:58 +09:00
91c0073f23 feat: 구매 신청 모달에 이름 필드 추가 (입금자명 매칭용)
이메일 로컬파트 대신 사용자 입력 이름을 /api/contact name 필드 및 메시지 본문에 포함 — 입금 확인 시 계좌이체 입금자명과 대조 용이.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 01:16:10 +09:00
8da844bb40 fix: 배포 전 보강 — HMAC 타이밍 안전 비교 + 계좌 업데이트 + 고아 정리
- lib/admin-auth: createHmac 비교를 timingSafeEqual로 교체 (타이밍 공격 방어)
- PurchaseAgreementModal: 입금 계좌 케이뱅크 100-116-337157 박재오
- /legal/refund: 구독 서비스 설명에서 삭제된 로또/주식 언급 제거
- app/landing/: 삭제된 서비스 참조만 남은 고아 디렉토리 제거

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 01:13:00 +09:00
03340c64a6 feat: /portfolio/[token] 공유 URL + /admin/hidden 관리자 대시보드
- lib/admin-auth: HMAC 서명 포트폴리오 토큰 발급/검증 (1~365일)
- /api/admin/portfolio-token: 관리자 쿠키 인증 후 토큰 발급
- /portfolio/[token]: 위시캣 제출용 게이트웨이 (noindex, 만료 시 404)
- /admin/hidden: 숨김 페이지 바로가기 + 토큰 발급 UI

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 01:01:24 +09:00
5cc224a743 refactor: AI 음악 메인 개편 — 로또/프롬프트/자동화 삭제, 음악/블로그 팩 신규
- 삭제: services/{lotto,prompt,automation,ai-kit,stock,tools} + api/{lotto,tools}
- 노출 제거: /freelance, /services/website (noindex + robots/sitemap 제외, 외부 지원서 링크 유지)
- 신규: /services/music (3-tier 39k/99k/149k, 4단계 프로세스)
- 신규: /services/blog (블로그 자동화 팩 29k 1회성)
- 신규: PurchaseAgreementModal (전자상거래법 17조 동의 + 계좌이체)
- 개편: 홈 대시보드 (음악 Hero + 사주/블로그팩/일반문의 서브카드)
- 사이드바 재구성, sitemap/robots/JSON-LD 갱신
- 환불정책 신규 상품 반영 + 법적 근거 명시

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 00:56:34 +09:00
441bf00b95 fix: PDF 전체 페이지 출력 + 필수 항목 40% 할인 표시
- @media print CSS 보강: html/body height auto, overflow visible, fixed 요소 숨김
- 하단 고정바에 no-print 클래스 추가
- afterprint 이벤트 리스너로 isPrinting 상태 안정적 해제
- 필수 항목 헤더에 40% 할인 배지, 소계에 정가 취소선/할인액 표시
- 합계 박스에 정가→할인가 비교 표시

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 09:14:41 +09:00
f962a04468 fix: 견적서 PDF 저장 시 전체 섹션 출력 (개요+WBS+견적+관리)
- isPrinting 상태로 인쇄 모드 전환 시 모든 탭 섹션 동시 렌더링
- 각 섹션에 인쇄용 제목 구분선 추가
- 탭 바 인쇄 시 숨김
- 테이블 행 페이지 분리 방지 (page-break-inside: avoid)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 08:56:57 +09:00
fae92940e5 feat: 하이브로지스틱스 견적서 + 컨셉 시안 + 견적 UI 개선
- 하이브로지스틱스코리아 홈페이지 리뉴얼 견적서(docs) + 컨셉 시안(HTML)
- 관리자 견적항목: grid→flex 레이아웃, 수량/선택 축소, 설명 확대
- 고객용 견적서: table-layout fixed, 카테고리 줄바꿈 방지, WBS 너비 통일
- PUT API wbs 필드 허용 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 08:47:41 +09:00
5515a6b48b hide: 로또 서비스 전면 비공개 (PG 심사 정책 대응)
- 홈페이지: FREE_TOOLS, LIVE_SERVICES에서 로또 제거
- 사이드바: 로또 번호 추천 메뉴 제거
- SEO: 키워드, JSON-LD에서 로또 제거
- lib/products.ts: lotto_gold/platinum/diamond 상품 삭제
- 결제 테스트: 로또 상품 제거
- 로또 페이지: redirect('/') 복원
- DB 마이그레이션 005: lotto 카테고리 DELETE 추가 + saju_detail 1000원 반영

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 01:40:35 +09:00