← 목록
기타 2026-05-22 3KB 읽기 3분

크라우니메신저 v3 — 초대링크 + QR 디바이스 페어링

개요

카카오톡 대체를 위한 초대 시스템과 QR 디바이스 페어링 기능을 한선씨로 구현. 친구 초대, 그룹/채널/서버 초대 링크 생성, 새 기기 QR 로그인을 지원.

무엇을 했는지

파일 1: 초대링크.한선 (367줄)

/Users/ef/CrownyOS/apps/메신저/v3/초대링크.한선

  • 초대 타입 4종: user(1:1 친구), group(그룹), channel(채널), server(서버)
  • Base32 8자 코드 생성 — 읽기 쉬운 형태
  • URL 2종: crowny://join?code=XXXX (앱 딥링크) + https://talk.crowny.org/i/XXXX (웹)
  • 만료/사용횟수 관리: TTL 기본 7일, 무제한(-1) 옵션
  • 초대수신처리: 타입별 관계/멤버DB 자동 추가
  • QR이미지데이터: CROWNY_INVITE:v1:<코드>:<web>:<app> 형식
주요 함수: 초대코드생성, 초대조회, 초대유효, 초대사용, 초대수신처리, 초대링크생성, 초대링크파싱, 사용자초대취소, 초대만료정리, QR이미지데이터

파일 2: QR페어링.한선 (461줄)

/Users/ef/CrownyOS/apps/메신저/v3/QR페어링.한선

  • 카카오톡 PC QR 로그인과 동일한 흐름
  • 4단계 상태 머신: init → pending → approved/rejected/expired
  • 2분 타임아웃 — 만료 자동 감지 + 정리
  • JWT 세션토큰 발급 — 승인 시 새 기기에 토큰 전달
  • 디바이스 관리: 등록/삭제/이름변경, 분실 기기 제거
  • 페어링 이력 기록
주요 함수: 페어링세션시작, 페어링QR데이터, 페어링QR스캔처리, 페어링승인, 페어링거부, 페어링상태조회, 페어링세션만료, 디바이스목록, 디바이스삭제, 디바이스이름변경, 페어링이력

관련 파일 경로

  • /Users/ef/CrownyOS/apps/메신저/v3/초대링크.한선 — 신규
  • /Users/ef/CrownyOS/apps/메신저/v3/QR페어링.한선 — 신규
  • /Users/ef/CrownyOS/apps/메신저/v3/그룹관리.한선 — 기존 그룹 내부 초대 (참고)
  • /Users/ef/CrownyOS/apps/메신저/v3/인증관리.한선 — 기존 QR 챌린지 (참고)
  • /Users/ef/CrownyOS/apps/메신저/v3/도구.한선 — DB/UUID/JWT 유틸

설계 결정

  • DB 파라미터 전달 패턴: 기존 그룹관리.한선 스타일. DB를 파라미터로 받아 수정 후 반환.
  • _더미 = 0 워크어라운드: 첫 전역변수 버그(VM 버그 2) 방지.
  • 프로토콜.한선 import 제외: 초대링크/페어링은 프로토콜 상수 불필요.
  • 해시.한선 import: QR페어링의 세션토큰 SHA256 서명용.

잔여 이슈

  • VM 버그 4 (배열에서 맵 조회): DB조회설정(결과, 0, 0) 패턴이 테스트 함수에서 -1 반환. 기존 메신저 v3 전체가 같은 이슈를 공유함. 서버 런타임에서는 패킷별 직접 처리로 우회. 단독 테스트 함수에서는 재현 불가 회피 방법 필요.
  • 서버코어.한선에 두 모듈 통합 (가져오기 추가) 필요
  • 웹 프론트엔드 (QR 렌더링) 연동 미구현