크라우니메신저 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 렌더링) 연동 미구현