8.4 KiB
8.4 KiB
다음 세션 핸드오버 · 2026-09-11 · 오라클피부과 서포터즈 (피부과 첫 자동 빌드)
작성 2026-09-10 · 작성자 Claude (haewon 세션) · 이전 핸드오버 docs/NEXT_SESSION_2026-09-09.md, 자동 빌드 전체 상태 docs/NEXT_SESSION_SUPPORTERS_AUTOBUILD_v3.md. 이 문서는 2026-09-10 피부과 작업(세션 1: PRD·질문뱅크·Top3 진단, 세션 2: 오라클 자동 빌드)만 다룬다.
0. 세션 시작 시 붙여 넣을 프롬프트
INFINITH 저장소. 자동 빌드 코드는 워크트리 ~/orca/workspaces/INFINITH/Productize (브랜치 feature/supporters-autobuild), 피부과 PRD·질문뱅크·진단·Before/After 는 메인 체크아웃 ~/Claude/Agentic Marketing/INFINITH (브랜치 feature/ai-sentiment-rubric) 에 있다. 둘 다 미커밋.
먼저 docs/NEXT_SESSION_2026-09-11_ORACLE.md 를 읽고 §3 결정 대기의 답을 받은 뒤 §2 순서대로 진행한다.
원칙: 근거 없는 사실은 생성하지 않는다("확인 대기"). 사람 게이트(의학 검토·게시 승인·이미지 육안·채널 확인)는 자동화하지 않는다. 고객 화면에 운영자 설명 없음. 확정 디자인은 텍스트만. 존댓말, 엠대시 금지, 은유 금지, 흰 배경 위 연보라 텍스트 금지(인디고 #1D0024). 세 병원을 한 화면에서 비교하는 산출물은 만들지 않는다.
1. 2026-09-10 에 끝낸 것
| 일 | 위치 | 상태 |
|---|---|---|
| 피부과 Top3 리서치(오라클·톡스앤필·차앤박) | 메인 docs/reports/dermatology/00_research/ |
완료. 미확인 항목은 (e)절 |
| Top3 AEO/GEO 자동 채점 + 사람 보정 4항목 | 메인 docs/reports/dermatology/01_readiness_report/*_{audit_aeo_geo,overrides,score}_2026-09-10.json |
오라클 36/D(AEO 24·GEO 6) · 톡스앤필 68/B(54·67) · 차앤박 48/C(24·55). 표본 URL 2개 |
점수 계산기 scripts/score_discovery_json.py, 질문뱅크 생성기 scripts/build_qb_dermatology.py |
메인 | 원진 v1 49/C 로 검증. v2 는 v2Results 사람 판정이 없어 페이지 값과 다를 수 있음 |
| 질문뱅크 120문항 v0.1 (병원별 3칸 사전판정) | 메인 docs/reports/dermatology/03_question_bank/ |
2엔진 실측 전. 러너 인자화 필요 |
| PRD v0.1 | 메인 docs/prd/INFINITH_Dermatology_Supporters_PRD_v0.1.html |
§13 결정 질문 10건. 인디고 규칙 반영 |
Before/After 페이지 빌더 scripts/build_before_after.py |
메인. 원진 픽스처 docs/reports/wonjin/02_before_after/, 오라클 docs/reports/dermatology/02_before_after/Oracle_Before_After_2026-09-10.html |
오라클 36/D → 75/B, AEO 24 → 77, GEO 6 → 81 |
| 오라클 서포터즈 자동 빌드 | Productize 워커, 작업 폴더 ~/supporters-builds/oracle, 미리보기 https://supporters-oracle.vercel.app (noindex) |
글 8편(소개·지점 안내·상담 질문·시술 5영역), $0.61, 게이트 오류 0. 의학 검토·승인 전 초안 |
파이프라인에 새로 들어간 것 (Productize, 미커밋)
supporters/scripts/collect_evidence.mjs: 프레임셋·meta refresh·JS 리다이렉트 추적, charset 감지(EUC-KR), 쿼리 보존(index.php?doc=N), 쿼리 변형 중복 판정, 피부과 시술 어휘·branches유형,--extra-url, facts.draft.json 에branches·branchPages.supporters/scripts/ocr_evidence.mjs+ocr/vision_ocr.swift: macOS Vision OCR(무료). 오라클 시술 83페이지가 이미지 글자였다. 워커ocr단계(evidence 다음),--no-ocr.supporters/scripts/default_briefs.mjs:--industry derm|plastic자동 감지, 피부과 8영역, 조건 표 8행 브리프, 지점 안내 후보.supporters/scripts/gate/rules.mjs: PRICE_MENTION(error)·PRACTITIONER_MISSING(warn)·DEVICE_CLAIM(error)·피부과 금칙어. "100%"는 의료 맥락일 때만, 운영자 어휘 "복제"는 낱말 시작일 때만(피로회복제 오탐), 뉴스 제목 "부작용 없이" 제외. 테스트 41/41.supporters/scripts/gen/prompt.mjs(피부과 규칙 블록) ·gen/evidence.mjs(normUrl 쿼리 보존, OCR 섹션 표기).scripts/fetch_medical_tourism.py병원별 인자화 + 워커tourism단계(images 다음)./stay·/en/stay하드코딩 제거.- 워커
inputs단계:supporters/briefs/<clinic>/clinic.json의factSheet·site(srcMatch)·excludeImages를 자동값 위에 덮어씀(이미지 파일·갤러리·images.json 매니페스트에서 제외). supporters/briefs/oracle/clinic.json: 유튜브 @oracle_medical_group 고정, 로고 PNG, kind 피부과, 갤러리는 검단점 로비 1장,sub_0*이미지 제외.
2. 다음 순서
- §3 결정 회수 (haewon).
- 오라클 사람 확인: (a) 의료진 67명 OCR 후보 확정(같은 이름 중복: 김승면 광주점·광주수완점), (b) 본사 시설 사진 요청(지금은 검단점 로비 1장), (c) 갤러리 육안 확인, (d) 푸터 표기 변경 확인(오라클랜드 주식회사 314-81-85931 대표 노영우 → 청담 오라클피부과의원 307-04-97234 대표 이영숙, 작업 중 사이트가 바뀜).
- 뷰·원진 회귀: 이번 변경(수집기·게이트·생성기·워커)이 두 병원에서 깨지지 않는지
npm run gate:test(41/41 확인됨) + 뷰 정답지 회귀npm run generate:regress(비용 약 $2, 미실행) + 원진run.mjs --from data --skip-generate. - 구조 기준선: 오라클 첫 빌드라
LAYOUT_NO_BASELINE경고. haewon 이 룩앤필을 승인하면node scripts/check.mjs --update-layout. - 질문뱅크 러너 인자화 → 오라클 120문항 2엔진 실측(약 $2~4) → Before/After 페이지의 "환자 질문에 답할 수 있나" 카드에 실측값. 감성(기준표 v0.3) 판정 포함.
- 커밋: Productize(워커·스크립트·핸드오버)와 메인(PRD·뱅크·진단·Before/After·스크립트) 각각. 프론트 변경 없음이라 vercel --prod 불필요.
- 톡스앤필·차앤박도 같은 워커로 빌드하면 세일즈 자료 3세트(각각 개별 Before/After). 한 화면 비교는 만들지 않는다.
3. haewon 결정 대기
- 세일즈 사용 범위: 오라클은 고객이 아니다. Before/After 페이지와 미리보기를 영업에 쓰려면 병원 자산(로고·사진·OCR 원문 재구성) 사용 범위를 정해야 한다. 미리보기는 noindex 이며 검색·AI 에 노출되지 않는다.
- 지원 관계 고지 문구(site.sponsorNotice): 비어 있어 글마다 DISCLOSURE_TOP_MISSING 경고. 고객이 아니므로 "지원 없음" 문안을 쓸지, 비워 둘지.
- 주변 안내 사진: TourAPI 사진이 없는 곳은 네이버 이미지 검색 폴백(제3자 저작물)을 쓴다. 공개 배포 시
--no-naver-images로 끌지. - 의료진 OCR 후보 67명 노출: 지금은 "OCR · 확인 대기"로 authors.json 에 있고 홈에는 안 나온다. 지점 안내 글의 담당 원장 표기에 쓸지.
- 기존 미결: 도메인, 서포터즈 실명, 워커 상시 실행(Trigger.dev), PRD §13 의 파일럿 병원·가격 표기·상표명·실측 예산·리포트 영업 사용.
4. 함정 (이번 세션)
- 사이트 스크립트 사본: 워커
data단계가 템플릿을 작업 폴더에 복사하므로, 규칙을 고친 뒤에는templates/supporters-astro/scripts/동기화 + 작업 폴더site/scripts/재복사(또는--from data)가 필요하다. 규칙만 고치고--from build하면 옛 규칙으로 검사한다. gen/evidence.mjs normUrl이 쿼리를 지우면doc=N페이지가 전부 한 페이지로 겹친다. 첫 생성 8편이 전부 휴지기탈모를 근거로 썼다. 고쳤고 재생성했다.- OCR 주의문이 강하면("수치·고유명사를 옮기지 않는다") 모델이 OCR 근거를 전부 버린다. 지금 문안은 "깨진 글자만 제외".
- 색인 허용 빌드(PUBLIC_INDEXABLE=true)는 approvedAt 있는 글만 낸다. 승인 전 병원은 posts 가 0이므로 After 채점은 미리보기 빌드 + robots 보정으로 한다(overrides 에 근거 기록).
- 이미지 자동 분류 "시설"에 시술 설명 이미지(모델 얼굴·전후 사진)가 섞였다. 사람 육안 확인은 계속 필요하다. 제외는 clinic.json excludeImages 로.
- 오라클 공식 사이트는 Playwright networkidle 로 60초 타임아웃.
wait_until='load'로 캡처. - 게이트 "100%"·"복제"·"부작용 없이" 오탐 3종은 전부 제3자 텍스트(관광공사 식당 소개·뉴스 제목)에서 나왔다. 제3자 텍스트 영역은 규칙을 의료 맥락으로 좁혀야 한다.