- viewclinic/01_readiness_report (진단 덱 v1.0·v2_표준캔버스·v1.1 + 빌더) / 02_poc_proposal (POC 정본·v3 + 빌더) / 03_question_bank (QB 120문항·실측·엑셀) / 04_supporters (GEO 계획·콘텐츠 기획·감사 엑셀) - taeha/ (태하 리포트 + 빌더), ibk/ (기업은행 블로그 감사), landing/ (랜딩 시안·스크린샷·HTML 내보내기) - README.md에 구조·정본/파생본·빌드 명령 안내 - 경로 참조 갱신: 핸드오버 문서 4개, QB 스크립트 3개, 빌더 docstring, discovery 페이지 주석 - 이전에 삭제된 POC v2_표준캔버스 2파일 삭제 반영 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
6.6 KiB
6.6 KiB
AI Discovery · Frontend Handover
2026-08-31 세션 산출물을 INFINITH 프로덕트(React)에 반영하기 위한 인수인계 문서. 시안은 HTML로 확정됐고, 이 문서는 그것을 실제 라우트로 옮기는 데 필요한 전부를 담는다.
0. 다음 세션 실행 프롬프트 (복붙용)
docs/AI_DISCOVERY_FRONTEND_HANDOVER.md 를 읽고 AI Discovery 랜딩 페이지를 프로덕트에 구현해줘.
- 시안: docs/reports/landing/ai_discovery_landing.html (픽셀 기준, 이 파일이 정답)
- 라우트: /discovery (index) 신규, 기존 /discovery/:id 리포트 페이지와 공존
- 재사용: Navbar/Footer(BI 워드마크), ScoreRing, Solution.tsx의 루프 다이어그램 구조(AGDP → ABMR 워딩)
- 데이터: src/data/discovery_viewclinic.ts + src/lib/discoveryScore.ts 실측값만 사용, 수치 하드코딩 금지
- 카피 규칙: 존댓말 문장형 타이틀, 엠대시 금지, break-keep, AI 답변 목업에 "구축 후 목표 상태 예시" 라벨 유지, 연락처는 o2oteam@o2o.kr만
- 완료 기준: npm run lint 통과, /discovery가 시안과 시각적으로 일치, 모바일 1열 폴백
끝나면 git push + vercel --prod 까지.
1. 이번 세션에서 만든 것
| 산출물 | 경로 | 상태 |
|---|---|---|
| 랜딩 시안 (단일 HTML, 픽셀 정답) | docs/reports/landing/ai_discovery_landing.html |
확정 |
| 랜딩 스크린샷 (덱 삽입용) | docs/reports/landing/shots/land_hero.png, land_report.png |
확정 |
| POC 제안서 덱 (10장) | docs/reports/viewclinic/02_poc_proposal/Viewclinic_POC_Proposal.pptx / .pdf |
확정 |
| 덱 빌드 스크립트 | docs/reports/viewclinic/02_poc_proposal/build_viewclinic_poc_deck.py |
재실행 가능 |
시안 HTML은 외부 의존성이 Google Fonts(Playfair Display, Noto Sans KR) 하나뿐인 단일 파일이다. 랜딩을 수정하면 스크린샷 재캡처 → 덱 리빌드 순서로 갱신한다 (스크린샷 크롭 좌표는 배경색 감지로 잡았다: 히어로 0–1384px, 리포트 밴드는 #F4F6FB 행 범위).
2. 구현 대상: 라우트와 페이지
- 신규 라우트:
/discovery→DiscoveryLandingPage.tsx(src/main.tsx에 추가) - 기존 라우트:
/discovery/:id→DiscoveryReportPage.tsx(수정 불필요, 랜딩의 "샘플 리포트 보기"가/discovery/viewclinic으로 연결) - Navbar/Footer는 전역 레이아웃이 이미 감싼다. 랜딩 시안의 자체 네비·푸터 마크업은 옮기지 말 것.
3. 섹션 → 컴포넌트 매핑 (시안 위에서 아래 순서)
| 시안 섹션 | 컴포넌트 제안 | 재사용/참조 |
|---|---|---|
| 히어로 (72px 헤드라인 + 배지 + CTA 2개) | discovery/DiscoveryHero.tsx |
Hero.tsx 구조, .text-gradient |
| ABMR 루프 카드 (다크) | discovery/AbmrLoop.tsx |
Solution.tsx 46–130행 다이어그램을 복제 후 워딩만 교체 |
| AI 답변 목업 카드 | discovery/AiAnswerMock.tsx |
glass-card |
| Why Now 다크 밴드 (12종 / 0건 / 35~70%) | discovery/WhyNow.tsx |
|
| How It Works (Audit·Build·Prove) | discovery/HowItWorks.tsx |
glass-card + EFE6FF 아이콘 스퀘어 |
| 샘플 리포트 (48점 링 + A~F 바 + 칩 3장) | discovery/SampleReport.tsx |
ScoreRing.tsx 그대로, 바 색상은 getScoreColor() 로직 재사용 |
| 8주 로드맵 타임라인 | discovery/Roadmap.tsx |
|
| 정직성 인용문 + 3필 | discovery/HonestyStrip.tsx |
|
| 최종 CTA (다크) | discovery/DiscoveryCta.tsx |
4. 디자인 실측값 (시안에 이미 적용된 프로덕션 토큰)
- BI 워드마크: Playfair Display Black(900) 30px, tracking 0.05em,
linear-gradient(to right, #4F1DA1, #021341)텍스트 클립. Navbar/Footer 컴포넌트에 이미 있으므로 재사용. - DS Primary pill 버튼:
px-10 py-4 text-lg font-medium rounded-full shadow-xl, hero 변형은from-[#4F1DA1] to-[#021341]+ ArrowRight.MultiChannelInput.tsx195행 참조. - text-gradient:
#0A1128 → #3b5998클립 (index.css.text-gradient). - 히어로 배경: radial
#e0e7ff → #faf5ff → #fdf2f8+ 블롭 (Hero.tsx와 동일 계열). - ScoreRing: strokeWidth 8, 트랙
#f1f5f9, 점수 구간색 ≤40#C084CF/ ≤60#8B9CF7/ ≤80#7C6DD8/ 80+#6C5CE7. 48점은#8B9CF7. - 상태 칩: index.css의 status-critical/warning/good/info 파스텔 토큰 (치명/보완/강점 칩).
- 다크 카드:
#0F1B45bg +#2A3A6Bborder (Why Now 통계 카드). - 루프 회전 애니메이션:
animate-[spin_20s_linear_infinite](Solution.tsx와 동일).
5. 데이터 연결
- 수치는 전부
src/data/discovery_viewclinic.ts(DISCOVERY_VIEWCLINIC)와src/lib/discoveryScore.ts계산 결과에서 가져온다. 48, 92%, 20% 등을 JSX에 하드코딩하지 말 것 (재진단 시 점수가 바뀐다). - 카테고리 바 6개(A~F)는 discoveryScore의 카테고리별 pct를 순회 렌더.
- 시안의 고정 수치는 2026-08-28 실측 스냅샷이다. 값이 다르게 나오면 데이터 쪽이 정답.
6. 카피·정직성 규칙 (이번 세션에서 확정된 것)
- 타이틀은 존댓말 문장형으로 통일 ("~없습니다", "~올립니다"). 반말 종결·명사구 타이틀 금지.
- 엠대시 금지, 은유 금지,
break-keep적용 (기존 텍스트 스타일 규칙과 동일). - AI 답변 목업에는 "AEO / GEO 구축 후 목표 상태 예시" 라벨을 반드시 유지한다. 현재 상태로 오인되게 만들지 않는다.
- 허위 도메인·이메일 금지. 연락처는
o2oteam@o2o.kr(Navbar 문의 mailto는 기존contact@o2o.kr유지). - 시장 통계를 새로 만들어 넣지 않는다. 시안의 3개 수치(12종 크롤러 / 네이버 기여 0건 / Direct 유실 35~70%)는 근거 있는 실측·문헌 값이며, 이 밖의 수치 추가는 근거 확인 후에만.
- 순위·노출 보장형 문구 금지. "언급률과 신뢰구간으로 보고" 프레임 유지.
7. 완료 기준·배포
npm run lint(tsc --noEmit) 통과.- 1440px에서
/discovery가docs/reports/landing/ai_discovery_landing.html과 시각적으로 일치. - 390px에서 2열 그리드가 1열로 접히고 헤드라인이 줄바꿈 깨짐 없이 표시.
- 배포:
git push후vercel --prod수동 실행 (Gitea 자동 트리거 없음).
8. 이후 백로그 (이번 구현 범위 아님)
- 랜딩 CTA를 실제 진단 신청 폼/파이프라인(
discover-channelsEdge Function)에 연결. - 태하(법무법인, 68점 B) 케이스를 두 번째 샘플로 노출할지 결정.
- 덱 스크린샷 자동 갱신 스크립트화 (랜딩 변경 → 캡처 → 크롭 → 덱 리빌드).