1. 로그인 후, 두 사람이 각자 인증코드 발급받음

2. 한 명이 상대방의 코드를 입력해 연결 요청 보냄

3.
요청받은 유저는 ㅇㅇㅇ로부터 커플 요청이 왔습니다 메세지 띄우기
요청한 유저는 <코드> 연결 중, 응답 대기중입니다 메세지 띄우기

4.1 거절하면 요청자에게 거절됨 메세지 표시

4.2 수락하면 두 사람은 커플로 연결됨

4.3 요청자가 취소하면 요청자에게 요청을 취소했다는 알림 표시 -> 1로 돌아감


1. 로그인 후, 두 사람이 각자 인증코드 발급받음
프론트
GET /couple/connect/code (인증코드 발급/ 이미 유효한 인증코드가 있다면 불러오기)
GET /couple/connect/status/send (보낸 요청에 대한 정보)
GET /couple/connect/status/receive (받은 요청에 대한 정보)
(앱이 종료되거나 백그라운드로 넘어갔을 때 알림을 받지 못할 것을 대비)
백엔드 Response
요청자 (왼쪽)
GET /couple/connect/code -> 200 OK String code
GET /couple/connect/status/send -> 200 OK status = (null, Pending, Accept, Reject)
## 내가 보낸것에 대한 응답
null -> 아무 요청 안보냈을 때
Pending -> 요청 대기중일 때
Accept -> 요청 수락됐을 때
Reject -> 요청 거절됐을 때
GET /couple/connect/status/receive -> 200 OK status = (null, Pending, Cancel)
## 내가 받은것에 대한 응답
null -> 아무 요청 안왔을 때
Pending -> 요청 받았을 때
Cancel -> 요청이 취소됐을 때
응답자 (오른쪽)
GET /couple/request/code -> 200 OK String code
GET /couple/connect/status/send -> 200 OK (null, Pending, Accept, Reject)
GET /couple/connect/status/receive -> 200 OK status = (null, Pending, Cancel)
# 위와 동일

2. 한 명이 상대방의 코드를 입력해 연결 요청 보냄
프론트
요청자 (왼쪽)
POST /couple/connect (상대방의 코드를 입력)

3.
요청받은 유저(오른쪽)는 ㅇㅇㅇ로부터 커플 요청이 왔습니다 메세지 띄우기
요청한 유저(왼쪽)는 <코드> 연결 중, 응답 대기중입니다 메세지 띄우기
백엔드 Response
요청자(왼쪽)
2 에서 보낸 POST /couple/connect (요청자가 상대방의 코드를 입력)
-> 200 OK status = Pending
응답자(오른쪽)
-> WebSocket 이용해서 요청자로부터 커플 연결 요청이 왔다는 모달 띄우기 status = Pending
-> FCM 이용해서 푸시 알람 생성

4.1 거절하면 요청자에게 거절됨 메세지 표시
프론트
응답자(오른쪽)
POST /couple/connect/reject (요청 거절)
-> 200 OK
백엔드 Response
요청자(왼쪽)
-> WebSocket 이용해서 응답자로부터 요청이 거절됐다는 모달 띄우기
-> FCM 이용해서 푸시 알람 생성
응답자(오른쪽)
POST /couple/connect/reject -> 200 OK

4.2 수락하면 두 사람은 커플로 연결됨
프론트
응답자(오른쪽)
POST /couple/connect/accept (요청 수락)
백엔드 Response
요청자(왼쪽)
-> WebSocket 이용해서 메인페이지로 redirect 되도록 응답
-> FCM 이용해서 푸시 알람 생성
응답자(오른쪽)
POST /couple/connect/accept -> 200 OK -> 프론트 redirect to 메인페이지("/")

4.3 요청자가 취소하면 요청자에게 요청을 취소했다는 알림 표시 -> 1로 돌아감
프론트
요청자(왼쪽)
POST /couple/connect/cancel (요청 취소)
백엔드 Response
요청자(왼쪽)
POST /couple/connect/cancel -> 200 OK
-> WebSocket 이용해서 메인페이지로 redirect 되도록 응답
응답자(오른쪽)
case 1. 앱에 접속 중이었다면
-> WebSocket 이용해서 수락 대기 창 끄기, 알림 생성 (상대방이 요청을 취소했습니다)
case 2. 접속중이 아니었다면 -> FCM 이용해서 푸시 알람 생성 (요청 취소)