콘텐츠로 이동

매칭 상태 머신 (Matching FSM)

문서 역할

  • 역할: 시각화
  • 문서 종류: fsm
  • 충돌 시 우선 문서: 매칭 운영 정책
  • 기준 성격: as-is

매칭의 전체 상태 흐름을 정리한 문서이다. 상태 값과 환불 기준의 원문 SoT는 매칭 운영 정책을 따른다.

매칭 상태 (MATCH_STATUS)

진행 상태

상수 의미 다음 액션
0 PENDING 카드 전달됨 여성 응답 대기
1 FEMALE_WANT_SEE 여성 만남희망 남성 응답 대기
2 MALE_WANT_SEE 남성 만남희망 여성 최종컨펌 대기
3 FINAL_CONFIRM 여성 최종컨펌 선호정보 전달
4 SEND_FAVOR_INFO 선호정보 전달됨 남성 일정 제안
5 SUGGEST_SCHEDULE 일정 제안됨 상대방 수락/역제안
6 OK_SCHEDULE 일정 확정 장소 결정
7 SUGGEST_LOCATION 장소 결정됨 채팅 활성화
8 CHAT_OPEN 채팅 활성화 3일간 채팅
9 REVIEW_REQUIRE 후기 작성 필요 후기 작성
10 SHARE_CONTRACT 연락처 공개 완료
11 DIRECT_MEET 직진만남 진지한 만남 진행

취소 상태

상수 의미 정산 기준
-1 FEMALE_PASS 여성 패스 정책 참조
-2 MALE_PASS 남성 패스 정책 참조
-10 CANCELED 무응답 취소 정책 참조
-100 FINAL_CONFIRM_CANCEL 여성 최종컨펌 취소 정책 참조
-101 CONFIRM_NO_REPLY 최종컨펌 무응답 정책 참조
-102 FAVOR_INFO_NO_REPLY 선호정보 무응답 정책 참조
-103 SCHEDULE_NO_REPLY 일정제안 무응답 정책 참조
-104 SCHEDULE_ACCEPT_NO_REPLY 일정수락 무응답 정책 참조
-105 SCHEDULE_NOT_SELECTED 일정 불합의 정책 참조
-106 LOCATION_NO_REPLY 장소결정 무응답 정책 참조
-107 CHAT_ROOM_LEAVE 채팅방 나가기 정책 참조
-108 USER_BLAME 회원 신고 정책 참조
-109 CHAT_SCHEDULE_CANCEL 일정변경 취소 정책 참조
-110 CHAT_3_DAYS_OVER 3일 채팅 종료 정책 참조

상태 전환 FSM

stateDiagram-v2
    [*] --> PENDING : 관리자 카드 전달

    state "카드 전달\nPENDING (0)" as PENDING
    state "여성 만남희망\nFEMALE_WANT_SEE (1)" as F_WANT
    state "남성 만남희망\nMALE_WANT_SEE (2)" as M_WANT
    state "최종컨펌\nFINAL_CONFIRM (3)" as CONFIRM
    state "선호정보 전달\nSEND_FAVOR_INFO (4)" as FAVOR
    state "일정 제안\nSUGGEST_SCHEDULE (5)" as SCHEDULE
    state "일정 확정\nOK_SCHEDULE (6)" as OK
    state "장소 결정\nSUGGEST_LOCATION (7)" as LOCATION
    state "채팅 활성화\nCHAT_OPEN (8)" as CHAT
    state "후기 작성\nREVIEW_REQUIRE (9)" as REVIEW
    state "취소" as CANCEL

    PENDING --> F_WANT : 여성 만남희망
    PENDING --> CANCEL : 여성 패스 / CMS 전달 3일 만료

    F_WANT --> M_WANT : 남성 만남희망
    F_WANT --> CANCEL : 남성 패스 / 3일 만료

    M_WANT --> CONFIRM : 여성 수락
    M_WANT --> CANCEL : 여성 취소 / 다음날 자정 만료

    CONFIRM --> FAVOR : 선호정보 전달

    FAVOR --> SCHEDULE : 남성 일정 제안
    FAVOR --> CANCEL : 다음날 자정 만료

    SCHEDULE --> OK : 일정 수락
    SCHEDULE --> SCHEDULE : 역제안 (최대 4회)
    SCHEDULE --> CANCEL : 무응답 / 4회 불합의

    OK --> LOCATION : 장소 결정
    OK --> CHAT : 채팅 활성화

    LOCATION --> CHAT : 채팅 활성화

    CHAT --> REVIEW : 만남 후 3시간
    CHAT --> CANCEL : 채팅방 나가기 / 3일 종료

    REVIEW --> [*] : 후기 작성 완료

단계별 만료 시간

아래 표는 일반 1:1 매칭의 기본값이다. 인연찾기 카드의 최초 만료는 특수 경로의 방향별 기준을 따른다.

상태 만료 시간 만료 시 상태
PENDING CMS 여성 수신 3일 CANCELED (-10), 로그인 0회이면 낭비 카드 분류
FEMALE_WANT_SEE 3일 CANCELED (-10)
MALE_WANT_SEE 다음날 자정 CONFIRM_NO_REPLY (-101)
SEND_FAVOR_INFO 다음날 자정 FAVOR_INFO_NO_REPLY (-102)
SUGGEST_SCHEDULE 다음날 자정 SCHEDULE_NO_REPLY (-103)
OK_SCHEDULE 만남일 or 다음날 자정 SCHEDULE_ACCEPT_NO_REPLY (-104)
CHAT_OPEN 3일 CHAT_3_DAYS_OVER (-110)

특수 경로

신규 CMS 여성 수신 PENDING 카드는 전달 시점 login_cnt와 3일 만료 시점 값을 비교한다. 증가가 없으면 is_wasted=1로 분류하고, Admin의 기존 낭비된 카드 전체삭제에서 물리 삭제한다. 한 번이라도 증가했으면 일반 무응답 취소로만 처리한다.

인연찾기 카드

stateDiagram-v2
    [*] --> PENDING : 남성 → 여성 카드 전달 (3일)
    PENDING --> FEMALE_WANT_SEE : 여성 수락
    [*] --> FEMALE_WANT_SEE : 여성 → 남성 카드 전달 (3일)
    FEMALE_WANT_SEE --> MALE_WANT_SEE : 남성 수락
    MALE_WANT_SEE --> FINAL_CONFIRM : 여성 최종수락
  • 남성 → 여성은 PENDING, 여성 → 남성은 FEMALE_WANT_SEE를 최초 상태로 사용한다.
  • Admin 방향 표시와 방향별 환불처럼 기원 판정이 필요한 경로는 최초 매칭 로그 상태를 사용한다.
  • 여성 → 남성 경로는 취소 뒤 아래 조회자에게 비활성 카드를 2일간 보여 준다.
취소 상태 2일 잔존 조회자
남성 응답 단계의 MALE_PASS, CANCELED 카드를 보낸 여성
여성 최종컨펌 단계의 FEMALE_PASS, CONFIRM_NO_REPLY 먼저 수락한 남성

현행 남성 On:Going 조회 조건 때문에 남성 → 여성 카드에서 여성이 최초 3일 안에 직접 FEMALE_PASS하면 카드를 보낸 남성에게도 최초 만료시각까지 비활성 카드가 남는다. PENDING 무응답으로 만료된 CANCELED는 남지 않는다.

상태·Key·환불·노출의 정확한 판정은 매칭 운영 정책을 따른다.

3일 채팅 (남성 전용)

stateDiagram-v2
    PENDING --> CHAT_OPEN : 3일 채팅 선택
    CHAT_OPEN --> CHAT_3_DAYS_OVER : 3일 후
  • 정규 매칭 과정을 건너뛰고 바로 채팅
  • 별도 키 소진 기준은 매칭 운영 정책을 따른다.

직진만남

stateDiagram-v2
    REVIEW_REQUIRE --> DIRECT_MEET : 직진만남 신청 + 수락

채팅방 재활성화

stateDiagram-v2
    CHAT_3_DAYS_OVER --> CHAT_OPEN : 재활성화 요청 + 수락

큐레이터 제안 상태 (CURATOR_STATUS)

상수 의미
0 NONE CMS 전달 카드
1 PENDING 큐레이터 제안
2 MALE_WANT_SEE 남성 수락
3 FROM_CURATOR 큐레이터 제안으로 시작된 매칭
-1 MALE_PASS 남성 패스
-2 ADMIN_DENY 관리자 거절