← 목록
기타 2026-07-23 5KB 읽기 5분

크라우니 로컬리드 엔진 P2-2 1차 구축

개요

빌드큐 Phase2+ 확장(P2-2). 로컬 비즈니스 리드 발굴 엔진 — sales.crowny.org(9957) · 원스탑커머스(game/commerce) · letter.crowny.org(9959) 3서비스에 리드를 동시 공급하는 공급자 엔진의 한선씨 엔진 SSOT + 로컬 검증 서버 1차. 공개 게이트웨이 배선/cert/LaunchAgent는 이번 범위에서 제외(방향 결정 후 진행).

무엇을 했는지

  1. 엔진 SSOT /Users/ef/crowny-leads/로컬리드엔진.한선 (432줄, hanseonc_high)
- 리드 모델 PSV 10필드: 업체명|업종|지역|연락수단|출처|상태|스코어|4상|대상서비스|등록시각 - 리드추가: 정규화(소문자+트림)+중복제거(키=업체명+지역), 중복 시 연락수단 완비도가 높으면 병합갱신 - 리드평가/리드4상판정: 업종가중치(0~100, 16개 업종 테이블+부분매치+기본45)×0.5 + 연락수단완비(전화/이메일/카톡 3채널 기준 0/33/67/100)×0.3 + 신선도(5점/일 감쇠)×0.2 → 결정론 스코어. 4상: 티=즉공급(스코어≥70·연락완비100) / 옴=보완필요(연락 일부만) / 타=폐기(연락전무·업종블랙리스트·스코어<30) / 음=수동검토(연락완비인데도 스코어 중간, 모순) - 리드대상서비스: 커머스결제니즈(쇼핑몰/스토어 등 키워드)→커머스, 구독콘텐츠(구독/뉴스레터/미디어 등)→뉴스레터, 그외→세일즈 - 리드저장/리드복원: PSV 영속(재기동 시 전체 재적재), 리드전환처리(공급→전환), 리드공급큐(대상서비스별 공급 리드 조회), 리드통계맵/리드통계출력
  1. 테스트 하네스 /Users/ef/crowny-leads/로컬리드엔진_테스트.한선 (189줄) — 검증() 53건 전부 PASS(0 실패). 스코어링 경계값(연락완비 0/33/67/100, 업종 정확·부분매치·기본값, 신선도 클램프), 4상 분기 8종 경계, 중복제거(신규→중복스킵→병합갱신), 전환처리(1회 성공/2회째 거부), PSV 저장/복원 라운드트립, 함수 2회째 호출 검증(_PSV행파싱·리드공급큐·리드4상판정을 연속 2회 호출해 스토리지 재사용 오염 없음 확인) 포함.
  2. 20+1건 실증 데이터 — 같은 테스트 파일 하단에서 리드엔진초기화 후 실제 업체 21건 투입, 개별 스코어/4상/라우팅 결과와 종합 통계를 실측 출력.
  3. 로컬 서버 1차 /Users/ef/crowny-leads/로컬리드서버.한선 (포트 9413, crowny-ports.sh check 완료·gateway.yaml 미등록) — POST /api/lead, GET /api/leads, GET /api/feed/<서비스> 3종. TCP대기 bind 실패 시 즉시 종료 처리(busy-spin 없음). localhost curl 스모크로 신규/중복/거부/피드 라우팅/재기동 PSV 복원까지 확인.
  4. 크라우니코드 학습: crownycode-learn.sh add "로컬리드엔진_P2_2" 로 엔진 전체 등록, 기존 스텁 로컬리드엔진 intent에 별칭 재연결(구 스텁 대체).
  5. 신규 VM 함정 1건 발견 → 가드레일 템플릿(~/.claude/templates/한선씨-가드레일.md)에 즉시 반영: hanseonc_high에서 코드값(s,i) 2인자 호출은 컴파일 에러(내부적으로 1인자만 파싱하도록 특수처리돼 있어 함수테이블의 arity=2 표기와 모순, RPN 쪽 글자=코드값 별칭 동작과 정반대). 코드포인트가 필요하면 코드값(글자(s,i))로 합성 호출해야 함.

관련 파일 경로

  • /Users/ef/crowny-leads/로컬리드엔진.한선 — 엔진 SSOT (432줄)
  • /Users/ef/crowny-leads/로컬리드엔진_테스트.한선 — 셀프테스트+실증 (189줄, 검증 53건 ALL_PASS)
  • /Users/ef/crowny-leads/로컬리드서버.한선 — 로컬 API 서버 1차 (200줄, 포트 9413)
  • /Users/ef/crowny-leads/data/ — PSV 저장 디렉토리(leads.psv, 런타임 생성)
  • ~/.claude/templates/한선씨-가드레일.md코드값(s,i) 함정 갱신분 추가

잔여 이슈

  • 공개 배선 없음(의도됨): 게이트웨이(gateway.yaml)·cert·LaunchAgent 미등록. 방향 결정 후 crowny-ports.sh set + gw add + LaunchAgent 등록 필요.
  • URL 경로 한글 세그먼트 갭: /api/feed/<서비스>가 한글 원문(예: 커머스)을 브라우저/curl이 UTF-8 %XX로 퍼센트인코딩해 보내면 디코드 못 함(hanseonc_high 고수준 계층에 raw byte↔문자열 재구성 API 부재, Base64류와 동일 계열 함정). 1차는 ASCII 별칭(commerce/newsletter/sales) 경로로 우회 — 완전한 한글 경로 지원은 별도 과제.
  • sales/game/letter 실서비스 연동 미착수: 이번 1차는 엔진+로컬 API까지. 3서비스가 실제로 GET /api/feed/<서비스>를 폴링하거나 서버가 각 서비스로 push하는 배선은 다음 단계.
  • 위임자 인증/속도제한 없음: /api/lead POST가 무인증 — 공개 노출 전 인증·레이트리밋 추가 필요(auth.crowny.org 유사 사고 사례 참고).
  • 동일 업종 스코어링 가중치는 임의 기본값(16개 업종만 명시) — 실 업종 분포 확보 후 조정 필요.