o2o-infinith-demo/docs/NEXT_SESSION_2026-09-11_ORACLE.md
2026-09-11 14:14:46 +09:00

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. 다음 순서

  1. §3 결정 회수 (haewon).
  2. 오라클 사람 확인: (a) 의료진 67명 OCR 후보 확정(같은 이름 중복: 김승면 광주점·광주수완점), (b) 본사 시설 사진 요청(지금은 검단점 로비 1장), (c) 갤러리 육안 확인, (d) 푸터 표기 변경 확인(오라클랜드 주식회사 314-81-85931 대표 노영우 → 청담 오라클피부과의원 307-04-97234 대표 이영숙, 작업 중 사이트가 바뀜).
  3. 뷰·원진 회귀: 이번 변경(수집기·게이트·생성기·워커)이 두 병원에서 깨지지 않는지 npm run gate:test(41/41 확인됨) + 뷰 정답지 회귀 npm run generate:regress(비용 약 $2, 미실행) + 원진 run.mjs --from data --skip-generate.
  4. 구조 기준선: 오라클 첫 빌드라 LAYOUT_NO_BASELINE 경고. haewon 이 룩앤필을 승인하면 node scripts/check.mjs --update-layout.
  5. 질문뱅크 러너 인자화 → 오라클 120문항 2엔진 실측(약 $2~4) → Before/After 페이지의 "환자 질문에 답할 수 있나" 카드에 실측값. 감성(기준표 v0.3) 판정 포함.
  6. 커밋: Productize(워커·스크립트·핸드오버)와 메인(PRD·뱅크·진단·Before/After·스크립트) 각각. 프론트 변경 없음이라 vercel --prod 불필요.
  7. 톡스앤필·차앤박도 같은 워커로 빌드하면 세일즈 자료 3세트(각각 개별 Before/After). 한 화면 비교는 만들지 않는다.

3. haewon 결정 대기

  1. 세일즈 사용 범위: 오라클은 고객이 아니다. Before/After 페이지와 미리보기를 영업에 쓰려면 병원 자산(로고·사진·OCR 원문 재구성) 사용 범위를 정해야 한다. 미리보기는 noindex 이며 검색·AI 에 노출되지 않는다.
  2. 지원 관계 고지 문구(site.sponsorNotice): 비어 있어 글마다 DISCLOSURE_TOP_MISSING 경고. 고객이 아니므로 "지원 없음" 문안을 쓸지, 비워 둘지.
  3. 주변 안내 사진: TourAPI 사진이 없는 곳은 네이버 이미지 검색 폴백(제3자 저작물)을 쓴다. 공개 배포 시 --no-naver-images 로 끌지.
  4. 의료진 OCR 후보 67명 노출: 지금은 "OCR · 확인 대기"로 authors.json 에 있고 홈에는 안 나온다. 지점 안내 글의 담당 원장 표기에 쓸지.
  5. 기존 미결: 도메인, 서포터즈 실명, 워커 상시 실행(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자 텍스트 영역은 규칙을 의료 맥락으로 좁혀야 한다.