Commit Graph

131 Commits

Author SHA1 Message Date
Haewon Kam
3888e0b60b fix: 다크 섹션 내 카드 h3가 전역 .text-white h3 규칙에 덮여 흰색으로 렌더되던 문제 (카테고리 한글명, 하지 않을 것, 측정 조건)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-28 10:44:31 +09:00
Haewon Kam
f86cf26cc0 style: 카테고리 설명문 +2pt, #4F1DA1
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-28 10:43:17 +09:00
Haewon Kam
f6168fe63a style: 카테고리 아이콘과 영문 헤딩 수직 가운데 정렬, 한글명은 아래 줄로
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-28 10:41:18 +09:00
Haewon Kam
d73538acad style: 카테고리 영문 헤딩 색상 #1D0024 (haewon 지정 인디고)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-28 10:40:28 +09:00
Haewon Kam
0cbfb9fe42 style: 카테고리 영문 헤딩 28px(원본 2배), 인디고 네이비 #0A1128 볼드
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-28 10:39:22 +09:00
Haewon Kam
62c86af128 style: 카테고리 영문 헤딩 42px 볼드, INFINITH 퍼플(#6C5CE7), Playfair 적용
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-28 10:38:05 +09:00
Haewon Kam
ef4d8218e9 feat: AI Discovery AEO/GEO 채점 기준표 v1.0 + /discovery/:id 리포트 (뷰성형외과 44점)
- 채점 기준표: 6 카테고리 36 항목 100점, 항목별 근거등급/통제/채점방식/howToCheck
- 집계: 미검증 항목 분모 제외, llms.txt 항목 제외
- 뷰성형외과 실측 결과 + 핵심 발견 5 + 액션 7 + 하지 않을 것 5
- DiscoveryReportPage: INFINITH 디자인 토큰, 본문 +2pt, 판정 배지/우선순위 +4pt 볼드, keep-all
- SeverityBadge className prop 추가
- Badge.tsx 복원 (PricingPage import 누락으로 빌드 깨져 있던 것)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-28 10:26:29 +09:00
Haewon Kam
7251c6d153 fix: Pricing 기본 토글을 월간 결제로 변경 (미팅 자료 명료화)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-28 11:41:41 +09:00
Haewon Kam
c020540085 fix: 잔존 옛 수치/가격 코멘트 정리 (블로그 550→551, 플레이스 777→776, 코멘트 149→29)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-28 11:36:27 +09:00
Haewon Kam
dc8a1db3f2 feat: 뷰성형외과 미팅 대비 — 데이터 갱신(2026-04-28) + URL 7분할 + 가격 개편
- mockReport.ts (view-clinic): 8채널 실측 갱신
  · YouTube · 강남언니 · 네이버 플레이스 · 네이버 블로그 → Firecrawl
  · Instagram (KR · EN) · Facebook (KR · EN) → Apify
  · createdAt 2026-04-13 → 2026-04-28
- mockPlan.ts (view-clinic): KPI 베이스라인 동기화 + scheduledDate 5월로 이동
- MultiChannelInput: 단일 textarea → 7-필드 분할 (홈페이지 · YT · IG · FB · 네이버플레이스 · 블로그 · 강남언니), 채널별 실시간 검증 아이콘
- PricingPage / FeatureComparisonTable: 49만/149만/399만 → 9만/29만/99만, 월 리포트 수 1회/4회/10회, 경쟁사 추적 1/3/5

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-28 11:25:45 +09:00
Haewon Kam
938ebacbf9 feat: PART III 랜딩 피봇 — 다채널 URL 입력 + Strategic Planner 포지셔닝
- MultiChannelInput: URL 뭉치 붙여넣기 → classifyUrls로 7개 채널 자동 분류
  (homepage·YouTube·Instagram·Facebook·네이버플레이스·블로그·강남언니)
  · "Analyze" pill 버튼 복원 + variant별 색 분기 (hero=dark brand,
    cta=#fff3eb→#e4cfff→#f5f9ff warm 3-stop)
  · placeholder 중앙 정렬 + "한 줄씩" 규칙 제거 (유연 파싱 노출)

- Navbar: Free Report CTA 제거 → Login + 문의하기 (contact@o2o.kr) duo
- LoginPage: 계약 고객용 스캐폴딩 페이지 신규 추가
- PricingPage: 계약 기반 영업 반영, FAQ에서 해지·환불 항목 제거
  (세부 정책 미확정 → 후속 추가)

- Landing 카피 Strategic Planner 포지셔닝 피봇:
  · Hero sub: "10분 진단 → 12개월 전략 설계"
  · Solution AGDP: Audit / Generation / Direction / Planning 재해석
  · Modules: Intelligence + Planning Available, 나머지 Coming Soon 정직화
  · TargetAudience: 전략 파트너 / 전략 자문 + Partner Program 신청 waitlist
  · Problems: 콘텐츠 소진 / 경쟁사 분석 부재 / 데이터 부족 3축
  · UseCases: 진단·전략·KPI(Medical) · 수주·자문·포트폴리오(Agency)

- discover-channels Edge Function: manualChannels 수용 — 사용자 붙여넣은
  URL이 Firecrawl 스크래핑보다 우선, naverPlace/gangnamUnni 직접 주입

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-17 09:01:41 +09:00
Haewon Kam
517075b3ef fix: PageNavigator(하단 도트 네비) 비활성화 — 캡처·데모 시 화면 가림
컴포넌트 파일은 보존하고 App.tsx 의 import + render 만 주석처리.
향후 재활성화 시 두 줄만 해제.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 14:29:03 +09:00
Haewon Kam
dc6e2f0504 fix: Production Workflow 카드 크기·위치 균일화
- Flexbox + items-center → CSS Grid 전환 (모든 컬럼 동일 너비)
- 카드 h-full + flex flex-col 로 높이 균등 (description 길이 무관)
- description flex-1 + 태그 mt-auto 로 하단 칩 정렬 통일
- 화살표 absolute -right-3 분리 (카드 너비에 영향 없음)
- step 수 4·5·6·7·8 모두 grid-cols 명시 (Tailwind purge 안전)

7개 데모 (view/banobagi/grand/wonjin/ts/irum/o2o) 모두 적용
- step 4: irum  / step 5: view  / step 6: 나머지 5개

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 14:22:20 +09:00
Haewon Kam
a9de4ecc3c feat: O2O Clinic 가상 데모 리포트·플랜 추가 (광고 소재용)
블러 처리 없이 외부 노출 가능한 가상 클리닉 데모 자산.
6개 실제 병원 분석 패턴의 베스트 프랙티스를 종합·재구성.

설정:
- 이름: O2O Clinic / 원장 오투오 / 개원 2017년 (9년차)
- 시술: 눈·코·윤곽 전문
- 컬러: Indigo Deep (#1E1B4B) + Cyan (#06B6D4)
- 포지셔닝: 균형 잡힌 운영 (Score 78) + 글로벌 확장 강점

라우팅:
- /report/o2o → mockReportO2O (overallScore 78)
- /plan/o2o → mockPlanO2O (8 채널전략·4 pillar·4주 캘린더)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 14:15:27 +09:00
Haewon Kam
9fc9d5cc71 fix: 원진성형외과 35년 → 25년 통일 (홈페이지 공식 표기 기준)
원진성형외과 공식 홈페이지(k-wonjin.co.kr) 의 '25년 헤리티지'
표기에 맞춰 모든 35년/1991년 표기를 25년/2001년으로 수정.

- mockReport_wonjin.ts: established 1991→2001, yearsInBusiness 35→25,
  transformation 포지셔닝 카피
- mockPlan_wonjin.ts: 폰트 sample text, toneOfVoice 예시, 5개 채널
  bioTemplate, content pillar, calendar 타이틀, workflow video script
  등 30+ 곳

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 13:51:01 +09:00
Haewon Kam
bde1627dda fix: 원진성형외과 도메인 wonjin.com → k-wonjin.co.kr 통일
원진성형외과 공식 홈페이지가 k-wonjin.co.kr 인데,
mockReport·mockPlan 의 다수 위치에 잘못된 wonjin.com 이
들어가 링크가 깨져있던 문제 수정.

- mockReport_wonjin.ts: domain, channelScores, linkedUrls,
  profileLink, FB link/linkedDomain, 카카오톡 url, primaryDomain,
  additionalDomains, screenshots caption/sourceUrl 모두 정정
- mockPlan_wonjin.ts: targetUrl, channelBranding bioTemplate 5개

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 13:46:25 +09:00
Haewon Kam
7dff2b7244 fix: Pretendard self-host + 한글 시스템 폰트 fallback 체인 강화
데모 환경에서 CDN(jsdelivr)·Google Fonts 차단된 망에서 Pretendard 가
로드되지 않아 명조체로 렌더링되는 문제 해결.

- public/fonts/PretendardVariable.woff2 self-hosting (~2MB, weight 45-920)
- @font-face 직접 정의 + <link rel="preload"> 로 첫 페인트 가속
- fallback 체인에 Apple SD Gothic Neo / Malgun Gothic / Noto Sans KR 추가
  → 어떤 OS에서도 한글이 명조체로 떨어지지 않음
- 기존 jsdelivr CDN 은 백업 경로로 유지 (3중 안전망)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 11:03:04 +09:00
Haewon Kam
105e8288e0 fix: Facebook 페이지 URL 중복 prepend + YouTube linkedUrl 상대경로 버그
- FacebookAudit: 'facebook.com/...' 형식 데이터에 'https://www.facebook.com/' 가
  중복 prepend 되어 'https://www.facebook.com/facebook.com/...' 깨진 URL 생성
- YouTubeAudit: linkedUrls 의 url 이 protocol 없이 그대로 href 에 들어가
  상대 경로로 인식되던 버그
- 6개 병원 (view/banobagi/grand/wonjin/ts/irum) 모두 영향

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 09:06:13 +09:00
Haewon Kam
99d72f81d6 fix: Instagram 핸들 클릭 시 항상 인스타그램 프로필로 이동
profileLink (병원 홈페이지 도메인) 이 우선되어 핸들 클릭 시
인스타그램이 아닌 홈페이지로 이동하던 버그 수정.
5개 병원 (banobagi/grand/wonjin/ts/irum) 모두 영향.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 08:59:49 +09:00
Haewon Kam
41577391d5 feat: 5개 병원 마케팅 플랜 전 섹션 병원별 맞춤화
각 mockPlan_{clinic}.ts에서 ...mockPlan (뷰성형외과) 스프레드를 완전 제거하고,
각 병원의 mockReport_{clinic}.ts 실측 데이터를 근거로 전 섹션 재구성:

- mockPlan_banobagi: 26년·6,853 리뷰·Black+Gold, 8개 채널전략
- mockPlan_grand: 이세환 원장·안면거상 전문·Navy Blue, 6개 채널전략
- mockPlan_wonjin: 35년·코성형·글로벌 3계정·Deep Purple, 6개 채널전략
- mockPlan_ts: 리얼모델·12,509 리뷰·Dark Navy+Crimson, 7개 채널전략
- mockPlan_irum: 다국어 KR/TH/JP·LINE 신규·Forest Green, 8개 채널전략

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 17:25:19 +09:00
Haewon Kam
f2441de0bf fix: 리포트 '마케팅 기획' 버튼 → 브랜딩 가이드 섹션으로 이동
- KPIDashboard의 CTA 버튼이 /plan/:id 로만 이동 → 스크롤 위치 불확정
- 수정: /plan/:id#branding-guide 로 해시 포함 이동
- MarketingPlanPage에 useEffect 추가: location.hash 감지 시
  sticky Navbar(80px) + ReportNav(48px) = 128px 오프셋 적용하여
  해당 섹션 상단이 nav 바로 아래에 정렬되도록 scrollTo

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 16:48:44 +09:00
Haewon Kam
d816bb2d13 fix: 콘텐츠 캘린더 뿌연 현상 근본 해결 — isDragging bug fix
세션 내내 추적하던 'opacity 20-30% 흐림' 인상의 진짜 원인:
  const isDragging = draggedEntry?.entry.id === entry.id;
→ mock entry에 id가 없어 undefined === undefined → true
→ 모든 entry에 opacity-40 상시 적용됨

수정:
- isDragging: 오브젝트 참조 비교로 전환 (id 의존 제거)
- entry 배경/border: 더 진한 파스텔로 대비 강화
  (#F3F0FF → #EDE5FF, border #D5CDF5 → #B8A8E8 등)
- entry 제목: text-slate-700 → font-medium text-[#0A1128]
- 아이콘 opacity-60 제거 (100% 불투명)
- shadow-sm + hover:shadow-lg
- 섹션 dark 테마 복원 (Dark/White 섹션 교차 규칙 유지)
- 일자 셀 bg-slate-50/50 제거, 빈 셀 border 불투명화

6개 병원 데모(view-clinic/banobagi/grand/wonjin/ts/irum) 모두
ContentCalendar 컴포넌트를 공유하므로 한 번에 반영.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 16:40:43 +09:00
Haewon Kam
281efac932 fix: 콘텐츠 캘린더 뿌연 레이어 제거 — 셀 배경 제거 + entry shadow 강화
- 일자 셀 bg-slate-50/50(50% 투명) 제거 → entry 카드가 주간 카드 위 직접 노출
- 빈 셀 border-slate-200/60 → border-slate-200 (불투명)
- entry 카드에 contentTypeColors.shadow 추가 → 색상별 soft glow로 떠있는 느낌
- dark 테마 유지 (ChannelStrategy와 동일한 dark 섹션 + 흰 카드 패턴)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 16:23:09 +09:00
Haewon Kam
6b3b950ad0 fix: 플랜 페이지 전체 섹션 투명 현상 완전 해결 — initial opacity:0 전수 제거
- PlanHeader: motion.div/h1/p의 initial opacity:0 → plain HTML로 교체
  (배경 blob 애니메이션은 opacity 무관하여 유지)
- RepurposingProposal: 카드 motion.div → plain div, 확장 accordion도 plain div
- ChannelStrategy, ContentStrategy, AssetCollection, PlanCTA,
  BrandingGuide, WorkflowTracker, StrategyAdjustmentSection:
  initial={{ opacity: 0, ... }} 라인 전수 제거
- 이 환경의 framer-motion이 animate prop 완료 실패 → opacity:0에서 멈춤

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 16:06:21 +09:00
Haewon Kam
eaf215ea6d fix: 콘텐츠 캘린더 흐림 현상 근본 해결 — nav backdrop-blur 제거
- Navbar/ReportNav의 backdrop-blur-lg가 스크롤 시 섹션을 덮는
  GPU 합성 블러 레이어를 만들어 콘텐츠 캘린더가 흐려 보임
- bg-white/95 단색으로 교체 (시각적 차이 미미, 블러 부작용 제거)
- 이전 커밋(5f7d58c, aac1367)의 motion/whileInView 제거는
  원인이 아니었음 — 조상 nav의 backdrop-filter가 진범

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 15:59:10 +09:00
Haewon Kam
aac1367808 fix: 콘텐츠 캘린더 흐림 현상 완전 해결 — motion 제거
framer-motion animate가 프로덕션 빌드에서 완료되지 않는 문제로
SectionWrapper/ContentCalendar의 opacity:0 initial 상태가 유지됨.
motion.div/motion.button/motion.section을 일반 태그로 교체하고
모든 opacity 진입 애니메이션 제거.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 15:42:31 +09:00
Haewon Kam
5f7d58c490 fix: 콘텐츠 캘린더 흐림 현상 수정 — whileInView 제거
SectionWrapper의 motion.section이 opacity:0 initial 상태에서
framer-motion animate가 발동하지 않아 전체 섹션이 투명하게 보이는
문제를 수정. SectionWrapper를 일반 <section>으로 교체하고,
plan 컴포넌트들의 whileInView/viewport 애니메이션 제거.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 15:33:34 +09:00
Haewon Kam
7dfa416089 fix: P1/P2 실측 데이터 반영 — 강남언니/IG/FB 팔로워 수치 교체
- 강남언니 URL 실측 ID 반영 (grand/62, wonjin/2500, ts/116, irum/839)
- Instagram 팔로워 실측: 바노바기 4,183 / 그랜드 4,013 / 원진 23,400 / 티에스 2,626 / 이룸 826
- Facebook 팔로워 실측: 바노바기 16,000 / 그랜드 26,000 / 원진 19,000 / 티에스 3,900 / 이룸 비공개(0)
- 이룸 FB 페이지 비공개/삭제 상태 명시, 신규 개설 권고로 전략 수정
- 전 파일 "(실측 진행 중)", "(추정)" 마커 제거

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 15:15:05 +09:00
Haewon Kam
d66bc7b8f8 feat: 5개 병원 데모 추가 (바노바기/그랜드/원진/티에스/이룸)
- 각 병원 mockReport + mockPlan 파일 생성 (YouTube 실측치 기반)
- YouTube 실측: 바노바기 13K/925개, 원진 14.1K, 티에스 8K/715개,
  그랜드 2.37K/332개, 이룸(서울아이) 322/155개
- 채널별 스크린샷 PNG 30개 캡처 (Playwright headless)
- useReport + useMarketingPlan Hook에 5개 병원 DEMO_REPORTS/DEMO_PLANS 확장

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 14:49:46 +09:00
Haewon Kam
6b2cc7ef79 Merge: 닥터나우 제거 2026-04-13 14:00:04 +09:00
Haewon Kam
92600f3ae7 fix: 기타 채널에서 닥터나우 제거
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 14:00:04 +09:00
Haewon Kam
274fca48ea Merge: 퍼플 배경 heading 흰색 수정 2026-04-13 13:56:19 +09:00
Haewon Kam
2d1de59347 fix: 퍼플/다크 배경 내 heading 텍스트 흰색으로 수정
전역 CSS h1~h6 { text-primary-900 } 규칙이 부모의 text-white 상속을
덮어쓰는 문제 수정. .text-white 컨테이너 내 모든 heading에
text-white 강제 적용 (통합 권장 사항 등 퍼플 배경 섹션 전체 적용).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 13:56:14 +09:00
Haewon Kam
d03f3fe9c9 Merge: view-clinic demo 최우선 처리 버그 수정 2026-04-13 13:51:18 +09:00
Haewon Kam
4633560140 fix: view-clinic demo 데이터 최우선 처리 — location.state 오염 방지
id === 'view-clinic' 체크를 useEffect 최상단으로 이동.
기존에는 location.state에 이전 분석 데이터가 남아있으면
transformApiReport를 통해 엉뚱한 병원 데이터가 렌더링되는 버그 수정.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 13:51:12 +09:00
Haewon Kam
b079aec0be Merge claude/bold-hawking: URL fix + real screenshots 2026-04-13 13:43:29 +09:00
Haewon Kam
0d209ef953 fix: otherChannels URL https prefix 추가 + 실제 채널 스크린샷 7개 추가
- otherChannels 모든 URL에 https:// prefix 추가 (카카오톡, 네이버 블로그/플레이스, 강남언니, 네이버 카페, Threads, Facebook TH)
- 강남언니 URL https://www.gangnamunni.com/hospitals/189 로 수정
- 닥터나우 URL https://www.doctornow.co.kr 추가
- Playwright로 7개 채널 실제 스크린샷 캡처 (YouTube, Instagram KR/EN, Facebook KR, 강남언니, 웹사이트, 네이버 블로그)
- screenshots 배열 SVG placeholder → 실제 PNG 파일 경로로 업데이트
- capturedAt 날짜 2026-04-13으로 업데이트

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 13:43:21 +09:00
Haewon Kam
56f98b717c Merge branch 'claude/bold-hawking' 2026-04-13 13:23:28 +09:00
Haewon Kam
273221727c fix: Website SNS 링크 5개 발견 + 네이버 카페 5,984명 분석 추가
- websiteAudit: snsLinksOnSite false→true, Footer SNS 5개 링크 상세 추가
  (Blog, Facebook, Instagram, YouTube, Naver Cafe)
- Website 점수 52→65 상향, tracking 6개로 보강
- 네이버 카페 "뷰성형외과 성형의 모든것" 회원 5,984명 otherChannels 추가
- mockPlan: Naver Cafe 채널 전략 추가 (20개 게시판 구조 기반)
- WebsiteAudit 타입에 snsLinksDetail 옵셔널 필드 추가
- problemDiagnosis SNS 단절 진단 수정 (Footer 있으나 Header에는 없음)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 13:23:18 +09:00
Haewon Kam
be240f721b Merge branch 'claude/bold-hawking' 2026-04-13 13:11:37 +09:00
Haewon Kam
15099e8e1a feat: 뷰성형외과 실제 데이터 기반 세일즈 프로토타입 완성
- 9개 채널 실제 데이터 수집 (Firecrawl + Chrome MCP)
- mockReport.ts: 강남언니 9.5점/19,030리뷰 (TODO 해결), 채널 점수 갱신,
  Instagram 70K/14K 실제 수치, Facebook TH 페이지 발견, Naver Blog 활성화
- mockPlan.ts: Naver Blog 미확인→활성 550개, YouTube 104K 반영
- useReport: id='view-clinic' demo fallback 추가
- useMarketingPlan: id='view-clinic' demo fallback 추가
- Viewclinic Plan.md: 수집 데이터 전체 기록

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 13:11:18 +09:00
Haewon Kam
2a1a6f20fb fix: URL 파싱 에러 방어 처리 (transformReport, ClinicProfilePage)
metadata.url 또는 row.url이 null/빈 문자열일 때
new URL() 호출이 throw하던 문제를 try/catch로 방어.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 15:31:56 +09:00
Haewon Kam
f0bf3bb9b0 fix: import-registry 스크립트 수정 + npm sync-registry 추가
- .env + .env.local 모두 로드 (service role key 인식)
- is_active, verified_by 컬럼 제거 (테이블에 없음)
- package.json: npm run sync-registry 스크립트 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 14:25:00 +09:00
Haewon Kam
cd2463fb2d fix: clinic_registry CSV 임포트 + NaverPlace 검색 개선
- VerifiedChannels에 naverPlace 필드 추가 (registry URL → placeId 전달)
- registryToVerifiedChannels: naver_place_url → placeId 추출하여 포함
- collect-channel-data NaverPlace 매칭 완화: exact match → contains match, 의원/병원 suffix 제거 shortName 사용, placeId 힌트로 검색 보강
- clinic_registry에 73개 병원 CSV 데이터 임포트 (올바른 YouTube/Blog/GangnamUnni/NaverPlace URL)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 14:22:59 +09:00
Haewon Kam
e81c4cfee9 Merge branch 'claude/bold-hawking': 파이프라인 3대 버그 수정 + CLAUDE.md 업데이트 2026-04-10 13:52:40 +09:00
Haewon Kam
742c0f1bcc docs: CLAUDE.md 백엔드 파이프라인 실제 구현 반영
mock 데이터 기반이라는 잘못된 설명을 제거하고 실제 구현 상태로 업데이트:
- 4단계 Edge Functions 파이프라인 (discover→collect→generate-report→generate-content-plan)
- 실제 연동 API 목록 (YouTube/Apify/Naver/Firecrawl/Perplexity)
- DB 테이블 구조, _shared 유틸리티, 환경변수 정리
- 배포 방법 (Vercel 수동 + Supabase Functions)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 13:41:53 +09:00
Haewon Kam
c753d8593f fix: 파이프라인 3대 핵심 버그 수정
- generate-report: Harness 4 groundTruth 주입 레이어 추가 (IG/YT/FB/NaverBlog/NaverPlace/GangnamUnni 필드 강제 주입, diagnosis 폴백, qualityReport DB 저장)
- discover-channels: CLINIC_NOT_REGISTERED 조기 종료 제거 + clinics 캐시 fast-path 추가 (14일 TTL, Firecrawl fallback 재활성화)
- collect-channel-data: silent skip → {status, reason, attemptedAt} 구조적 기록 (naverBlog/naverPlace/googleMaps/gangnamUnni)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 13:41:05 +09:00
Haewon Kam
aabba1534b fix: 로딩 화면 분석 프로세스 텍스트 영어 통일
- planning 단계 'AI 콘텐츠 전략 생성 중...' → 'Generating AI content strategy...'
- labelDone '콘텐츠 플랜 생성 완료' → 'Content plan generated'

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 17:24:13 +09:00
Haewon Kam
c0c37b84de fix: naverBlog RSS 전환 + naverPlace DB-first 패턴 + 핵심문제진단 JSON 렌더링 버그 수정
- collect-channel-data: naverBlog 실시간 검색 제거 → verified handle 기반 RSS 직접 fetch
- collect-channel-data: naverPlace DB-first 패턴 (verified_channels에 저장된 데이터 우선 사용, 없을 때만 URL도메인 매칭 검색 후 DB에 저장)
- transformReport: ch.issues 배열 항목이 {issue, severity} 객체일 때 JSON.stringify 대신 .issue 문자열 추출
- ProblemDiagnosis: Lucide 아이콘 제거 → FilledIcons(ShieldFilled, FileTextFilled, LinkExternalFilled), 항목 구분자 ' ' → ' — '

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 17:17:22 +09:00
Haewon Kam
5ed35bc4cd fix: naverPlace 오매핑 수정 + naverBlog RSS 공식 블로그 스크래핑
- naverPlace: 매칭 우선순위 재정의 — 전체 클리닉명 정확 매칭 > 짧은명+성형 카테고리 > 성형 카테고리 순으로 변경 (기존 로직은 피부과까지 매칭되어 데이뷰의원 오매핑 발생)
- naverBlog: Firecrawl 공식 블로그 스크래핑 → Naver RSS 피드로 교체 (blog.naver.com은 Firecrawl 차단, RSS는 공개 엔드포인트)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 17:03:36 +09:00