EFcard Phase 5 — 라이선스 시스템 + SQLite 영속화
개요
EFcard 라이선스 결제 시스템 완성 + 기존 라이선스 버그 수정.
작업 내용
1. 라이선스 SQLite 영속화 (버그 수정)
- 문제:
db.licenses = {}+saveDb()(no-op) → 라이선스가 메모리에만 존재, 서버 재시작 시 소실 - 수정:
licensesSQLite 테이블 +saveLicense()/getLicense()함수 - JSON→SQLite 마이그레이션에 licenses 포함
2. Nonce 마이그레이션 수정
- WebAuthn challenge nonce가 객체(
{wallet_id, purpose, ts})인데INTEGER컬럼에 직접 삽입 시도 →RangeError typeof v === 'object' ? JSON.stringify(v) : v로 안전 처리
3. 결제로직.한선 확장 (125줄 → 195줄)
기존 담보/한선코드/결제시뮬에 추가:사기검사()— velocity(5분/1시간), spike(10배), scatter 탐지승급판정()— T0→T1→T2 자동 승급 조건 판정일일한도()/일일한도체크()— Tier별 한도라이선스서명()/라이선스검증()— HMAC 서명 생성/검증라이선스가격()— SKU별 맘 단위 가격
4. 에이전트 학습 (+3 패턴)
사기탐지_velocity_spike라이선스_서명_검증tier_승급_판정
5. 로드맵 갱신
Phase 1~3, 5 완료 표시. Phase 4(솔루션·컨설팅)만 남음.테스트 결과
카드 발급 → EF-BUYER-01 ✅
담보 50000맘 부여 ✅
CROWNYC-DEV 구매 (300맘, 담보 사용) ✅
라이선스 SQLite 영속 ✅
토큰 HMAC 검증 → valid=True sku=CROWNYC-DEV ✅
관련 파일
/Users/ef/crowny-card/server.js— licenses 테이블 + saveLicense + nonce 마이그레이션 수정/Users/ef/crowny-card/src/결제로직.한선— 사기탐지/Tier/라이선스 한선씨 동반/Users/ef/crowny-card/CLAUDE.md— 로드맵 Phase 1~5 갱신
잔여 이슈
- Phase 4 (솔루션·컨설팅 재결제) 미구현
- market 주문 스키마에 buyerWallet/sellerWallet 필드 추가 필요
- 한선씨 결제로직.한선 → 실제 컴파일 체인 연결 (시뮬레이션만)