Crowny Finance 초대 바이럴 + 칩 앵커링 검증
개요
finance.crowny.org(:9754 프록시 → :9750 한선씨 백엔드)의 초대 바이럴 서비스
(전화번호부 동기화 + 가입 알림 broadcast + 1맘≈25.5원 보상)를 검증하고,
프론트 칩 앵커링/화면 밀도를 개선했다.
무엇을 했는지
백엔드 컴파일 검증 (hanseonc_high, exit 0, 2.97MB toau) + :9750 기동
초대 API 엔드투엔드 검증 (모두 PASS):
/api/invite/sync — 연락처 해시(SHA-256) 등록, 쌍 dedup, 자가등록 거부
/api/invite/join — 해시매칭→1맘 지급(멱등: 첫가입=보상+알림, 이후=알림만), 자가가입 보상 제외
/api/invite/feed/:user, /rewards/:user, /stats — 정상
정산: 1맘=25.5원=floor(mom255/10) → krw=25, 2맘=51원 검증
대화 상태기계 풀플로우 검증: greet→need→recommend→collect(이름/연락처/이메일 3건 서버캡처)
→received(접수트리거 #11 생성)→track. 슬롯13 단일 진실원 게이팅 정합.
- 프론트 칩 앵커링 개선 (chat.js setChips): 하단 고정 트레이 중복·가로클리핑 제거,
최신 봇 메시지 바로 아래 인라인 앵커만 표시. 봇 메시지 부재 시에만 트레이 폴백.
- chat.css .chips max-width: calc(100% - 36px) 추가 (가로 오버플로 방지)
- 모바일 검증: overflow=false 확인(docScrollW==docClientW). 베이지+골드, ◇ TOAU,
Claude 스타일 일치. 가입 토스트 "홍동님이 크라우니에 가입하셨습니다! +1맘" 마스킹 정상.
관련 파일
- /Users/ef/crowny-finance/src/크라우니파이낸스.한선 (백엔드, 1737줄 — 초대 로직 1021~1320)
- /Users/ef/crowny-finance/web/assets/chat.js (setChips 칩 앵커링)
- /Users/ef/crowny-finance/web/assets/chat.css (.chips max-width)
- 스크린샷: /tmp/invite-final.png, /tmp/finance-invite-before/after.png
잔여 이슈
- 초대DB(연락처/보상)는 in-memory — 재시작 시 보상 누적 소실. receipts.dat처럼 파일 영속화 필요시 별도.
(실제 정산은 reward9738 배치가 담당 — 원장 적립 지시만 표현하므로 현 설계상 허용)
- 채팅 collect 생성 접수의 category가 source로 폴백됨(rental) — 추후 카탈로그 선택 반영 여지.