콘텐츠로 이동

매칭 플로우

문서 역할

  • 역할: 시나리오
  • 문서 종류: flow
  • 충돌 시 우선 문서: 매칭 운영 정책
  • 기준 성격: as-is

사용자가 매칭 카드를 받고 만남까지 진행하는 전체 플로우를 정리한 문서이다. 상태값, 키 차감/환불, 일정 검증의 원문 SoT는 매칭 운영 정책을 따른다. 단계별 입력은 흐름 이해에 필요한 의미만 설명한다. 실제 wire field는 coupler-api/swagger/app/v1/match.yamlcoupler-api/controller/app/v1/match.ts를 기준으로 본다.

참여 시스템

  • coupler-mobile-app: 사용자 인터페이스
  • coupler-api: 비즈니스 로직, 상태 관리
  • coupler-admin-web: 카드 전달, 큐레이터 제안

전체 플로우 다이어그램

sequenceDiagram
    participant Admin as Admin Web
    participant API as coupler-api
    participant F as 여성 앱
    participant M as 남성 앱

    Admin->>API: 카드 전달
    API->>API: 여성 login_cnt 발송 스냅샷 저장
    API->>F: 푸시 알림

    rect rgb(240, 248, 255)
        Note over F,M: 1단계: 카드 응답
        F->>API: 만남희망 (wantSee)
        API->>M: 푸시 알림
        M->>API: 만남희망 (wantSee)
        API->>F: 푸시 알림
    end

    rect rgb(255, 248, 240)
        Note over F,M: 2단계: 최종컨펌
        F->>API: 수락 (confirm)
        F->>API: 선호정보 전달 (sendInfo)
        API->>M: 푸시 알림
    end

    rect rgb(240, 255, 240)
        Note over F,M: 3단계: 일정 조율
        M->>API: 일정 제안 (addSchedule)
        API->>F: 푸시 알림
        F->>API: 일정 수락 (acceptSchedule)
        API->>M: 푸시 알림
    end

    rect rgb(255, 240, 255)
        Note over F,M: 4단계: 만남 준비
        M->>API: 장소 결정 (setLocation)
        API->>F: 푸시 알림
        Note over F,M: 채팅방 활성화 (3일간)
    end

    rect rgb(255, 255, 240)
        Note over F,M: 5단계: 만남 후
        Note over F,M: 만남 3시간 후 후기 요청
        F->>API: 후기 작성 (writeReview)
        M->>API: 후기 작성 (writeReview)
    end

단계별 상세

CMS가 여성에게 전달한 신규 카드는 발송 시점 login_cnt를 저장한다. 응답 없이 3일이 만료될 때 증가가 0회이면 CANCELED, is_wasted=1로 분류하고, 한 번이라도 증가했으면 일반 무응답 취소로 처리한다. 낭비 카드는 Admin의 기존 전체삭제로 물리 삭제하며 배포 전 카드와 과거 알람·열람 이력은 복원하지 않는다.

1단계: 카드 응답

여성 액션

액션 API 흐름 결과 비고
만남희망 POST /match/wantSee 남성 응답 단계로 진행 키 차감 기준은 정책 문서 참조
패스 POST /match/pass 현재 매칭 종료 키 차감/환불 기준은 정책 문서 참조
천천히 결정 POST /match/postpone 카드 응답 단계 유지 키 차감 기준은 정책 문서 참조

남성 액션

액션 API 흐름 결과 비고
만남희망 POST /match/wantSee 여성 최종컨펌 단계로 진행 등급별 키 차감 기준은 정책 문서 참조
패스 POST /match/pass 현재 매칭 종료 환불 기준은 정책 문서 참조
3일 채팅 POST /match/chat 채팅 단계로 바로 진행 키 차감 기준은 정책 문서 참조

2단계: 최종컨펌

여성 최종컨펌

flowchart LR
    A[남성 응답 완료] -->|수락| B[여성 최종컨펌 완료]
    A -->|취소| C[현재 매칭 종료]
    B -->|선호정보 전달| D[일정 조율 준비]

선호정보 전달

  • 입력 의미: 대상 매칭, 선호 지역, 선호 음식
  • API: POST /match/sendInfo

3단계: 일정 조율

일정 제안

일정 수락

  • 입력 의미: 선택한 일정
  • API: POST /match/acceptSchedule

4단계: 만남 준비

장소 결정

  • 입력 의미: 대상 매칭과 만남 장소
  • API: POST /match/setLocation
  • 카카오맵 API 활용: GET /match/searchLocation

채팅

API 설명
GET /match/chat/detail 채팅방 정보
GET /match/chat/messages 읽기 전용 cursor 메시지 목록
POST /match/chat/read 상대방 발신 메시지의 명시적 읽음 경계 갱신
POST /match/chat/send 메시지 전송
POST /match/chat/leave 채팅방 나가기
POST /match/chat/changeSchedule 일정 변경

5단계: 만남 후

후기 작성

  • 입력 의미: 대상 매칭, 만남 여부와 후기
  • API: POST /match/writeReview
  • 보상 기준은 매칭 운영 정책을 따른다.

후기 작성 후 옵션

액션 API 비고
연락처 공개 POST /match/sendContract 추가 조건/보상은 정책 문서 참조
직진만남 POST /match/sendDirect 키 차감 기준은 정책 문서 참조

모바일 앱 화면 구조

MatchingScreen
├── MatchingFragmentYou (맞춤 카드)
│   └── 카드 목록, 패스/만남희망
├── MatchingFragmentGoing (진행중)
│   └── 진행중인 매칭 목록
└── FinalMatchingScreen (최종 단계)
    ├── Fragment1: 선호정보 입력
    ├── Fragment2: 일정 제안/수락
    ├── Fragment3: 장소 결정
    └── Fragment4: 채팅

통화 기능

API 설명
POST /match/call/request 통화 요청
POST /match/call/accept 통화 수락
POST /match/call/reject 통화 거절
POST /match/call/cancel 요청 취소
POST /match/call/end 통화 종료
GET /match/generateAgoraToken Agora 토큰

관련 문서