콘텐츠로 이동

기존 2:2 그룹미팅 시스템

문서 역할

  • 역할: 설명
  • 문서 종류: architecture
  • 충돌 시 우선 문서: 이 문서
  • 기준 성격: as-is

기존에 구현·배포된 2:2 그룹미팅 아키텍처를 정리한 문서이다. 신규 그룹미팅의 DB/API는 그룹미팅 시스템을 따르며, 이 문서의 t_meeting*, /meeting/*, MEET_*는 호환성을 위해 유지하는 기존 계약이다. 현재 범위에서는 미팅의 구조와 흐름 설명에 집중하며, 별도 규범 문서는 두지 않는다.

논리 데이터 모델

  • 도메인 ID: legacy-meeting

먼저 보는 그림

이 그림은 데이터가 어디에 속하고 무엇을 참고하는지 먼저 보여준다. 정확한 이름과 조건은 아래 상세 표를 따른다.

flowchart LR
    entity_legacy_dash_meeting_dot_meeting["기존 2:2 미팅<br/>legacy-meeting.meeting"]
    entity_legacy_dash_meeting_dot_participation["기존 미팅 참가<br/>legacy-meeting.participation"]
    entity_legacy_dash_meeting_dot_rating["기존 미팅 별점<br/>legacy-meeting.rating"]
    entity_legacy_dash_meeting_dot_review["기존 미팅 후기<br/>legacy-meeting.review"]
    entity_member_dot_member["회원 계정 · 다른 영역<br/>member.member"]
    entity_legacy_dash_meeting_dot_meeting -->|"참고"| entity_member_dot_member
    entity_legacy_dash_meeting_dot_meeting -->|"같이 관리"| entity_legacy_dash_meeting_dot_participation
    entity_legacy_dash_meeting_dot_participation -->|"참고"| entity_member_dot_member
    entity_legacy_dash_meeting_dot_meeting -->|"같이 관리"| entity_legacy_dash_meeting_dot_review
    entity_legacy_dash_meeting_dot_review -->|"참고"| entity_member_dot_member
    entity_legacy_dash_meeting_dot_meeting -->|"같이 관리"| entity_legacy_dash_meeting_dot_rating
    entity_legacy_dash_meeting_dot_rating -->|"참고"| entity_member_dot_member

꼭 지킬 규칙:

  • 기존 2:2와 신규 그룹미팅의 상태·데이터 계약을 혼용하지 않는다
  • 채팅 개설에 사용하는 확정 참가자는 서로 다른 네 회원이어야 한다
  • 별점 작성자와 대상자는 같은 행사에 참여한 서로 다른 회원이어야 한다
정확한 값과 조건 보기

논리 엔티티

논리 ID 표시명 생명주기 역할 엔티티 형태 기록 역할 책임 최고 데이터 분류 생명주기
legacy-meeting.meeting 기존 2:2 미팅 root entity state 행사 모집·확정·종료와 현재 표시 정보 민감 기존 호환 계약으로 보존하며 종료·삭제 이력 유지
legacy-meeting.participation 기존 미팅 참가 child association state 회원의 신청·승인·퇴장과 행사 당시 별칭 민감 행사 종료 뒤 참가 이력으로 보존
legacy-meeting.review 기존 미팅 후기 child entity history 행사 결과와 후기 내용 민감 개인정보 정리 뒤 비식별 보존 가능
legacy-meeting.rating 기존 미팅 별점 child association history 작성 회원과 대상 회원 사이의 별점 민감 운영·신고 확인 기간 동안 보존

관계

출발 논리 ID 관계 역할 관계 유형 도착 논리 ID 카디널리티 소유·삭제 규칙
legacy-meeting.meeting host references member.member N:1 주최 회원 개인정보 정리 뒤 행사 이력은 보존
legacy-meeting.meeting participations owns legacy-meeting.participation 1:N 참가 이력은 행사와 함께 보존
legacy-meeting.participation member references member.member N:1 한 회원은 같은 행사에 하나의 현재 참가 상태만 가짐
legacy-meeting.meeting reviews owns legacy-meeting.review 1:N 후기 중복 기준을 유지하고 원문은 정책에 따라 정리
legacy-meeting.review author references member.member N:1 종료 행사에 유효하게 참여한 회원만 작성 가능
legacy-meeting.meeting ratings owns legacy-meeting.rating 1:N 별점은 행사 문맥 없이 존재할 수 없음
legacy-meeting.rating author references member.member N:1 작성자는 해당 행사 참여자여야 함
legacy-meeting.rating subject references member.member N:1 대상자는 작성자와 다른 해당 행사 참여자여야 함

불변조건

규칙 ID 관련 논리 ID 불변조건 기준 문서
LEGACY-MEETING-INV-001 legacy-meeting.meeting 기존 2:2와 신규 그룹미팅의 상태·데이터 계약을 혼용하지 않는다 논리 데이터 모델 정책
LEGACY-MEETING-INV-002 legacy-meeting.participation 채팅 개설에 사용하는 확정 참가자는 서로 다른 네 회원이어야 한다 이 문서
LEGACY-MEETING-INV-003 legacy-meeting.rating 별점 작성자와 대상자는 같은 행사에 참여한 서로 다른 회원이어야 한다 이 문서

미팅 상태

모임 상태 (t_meeting.status)

상수 의미
0 PENDING 대기
1 NORMAL 진행중
2 FINISH 완료
-1 DELETED 삭제

채팅방 상태 (t_meeting.chat_open)

상수 의미
0 PENDING 미개설 (4명 미만)
1 NORMAL 개설됨 (4명 확정)
2 FINISH 종료 (후기 완료)

멤버 상태 (t_meeting_member.status)

상수 의미
0 PENDING 승인 대기
1 NORMAL 참여 확정
2 CANCEL 탈퇴/취소

미팅 흐름

stateDiagram-v2
    [*] --> 모임생성 : 주최자 생성
    모임생성 --> 참가신청 : 회원 신청
    참가신청 --> 참가승인 : 주최자 승인
    참가승인 --> 채팅방개설 : 4명 확정
    채팅방개설 --> 만남 : D-day
    만남 --> 후기작성 : 2시간 경과
    후기작성 --> [*] : 완료

참가 조건

  • 진행중인 모임 최대 2개
  • 같은 날 다른 모임 참가 불가
  • 지인 필터:

    • 전화번호 중복
    • 1:1 매칭 진행자
    • 추천인 관계
    • 이전 2:2 동반 참여자

API 엔드포인트

메서드 엔드포인트 설명
GET /meeting/list 모임 목록
GET /meeting/myList 내 모임 목록
GET /meeting/detail 모임 상세
POST /meeting/add 모임 생성
POST /meeting/delete 모임 삭제
POST /meeting/attend 참가 신청
POST /meeting/allow 참가 승인
POST /meeting/createChatRoom 채팅방 생성
GET /meeting/chatList 채팅 목록
POST /meeting/sendChat 채팅 전송
POST /meeting/leaveChat 채팅방 나가기
POST /meeting/review 후기 작성
POST /meeting/blame 모임 신고
POST /meeting/blameUser 회원 신고

키 소진

액션 비고
사진미공개방 참여 -10
사진공개방 참여 -10
미니프로필 보기 -10
사진프로필 보기 -25
후기 작성 +5 보상

Admin 운영 화면

  • 역할별 최대 범위와 직접 URL/API 허용 기준은 보안/접근통제 정책을 단일 기준으로 사용한다. 아래는 그 정책을 적용한 현재 Admin 화면 구조다.
  • 기존 2:2 그룹미팅 관리 상위 메뉴와 미팅 내역, 채팅 내역, 후기 내역, 신고 내역, 패널티 내역 하위 메뉴는 Super Admin에게만 노출한다. 일반 클럽매니저 사이드바에서는 상위 메뉴 전체를 숨긴다.
  • /meeting/list, /meeting/chat, /meeting/review, /meeting/blame, /meeting/penalty 라우트와 기존 2:2 API 계약은 호환을 위해 유지한다.
  • 메뉴 비노출은 서버 인가를 대신하지 않는다. 직접 URL과 API 요청은 보안/접근통제 정책에 따라 서버 operation별로 판정한다.

회비/분위기

회비 (MEET_MONEY)

코드 금액
3 3만원
5 5만원
10 10만원
0 미정
  • MEET_MONEY 상수, Swagger, DB 주석은 0미정으로 정의한다.
  • 모바일 모임 생성 화면의 미선택 내부값은 -1이고, 선택 완료 기준은 money > -1이다.
  • 앱 생성 API는 현재 truthy 검증(!money)을 사용하므로 money=0을 빈값으로 거부한다.
  • 관리자 편집 화면은 0을 기본 선택값으로 사용한다.
  • 따라서 0의 운영 의미는 상수/Swagger/Admin 표시와 앱 생성 API 검증이 일치하지 않는 as-is 상태다. 후속 정리는 기술 부채 정리의 미팅 회비 코드 계약 항목에서 추적한다.

분위기 (MEET_MOOD)

코드 분위기
1 정중한 분위기
2 편안한 분위기
3 재밌는 분위기
4 맛집팀방
5 뭐든!
6 텐션좋은 파티

FCM 알림

타입 상수 의미
31 MEET_ATTEND_REQUEST 참가 신청
32 MEET_ACCEPT_ATTEND 참가 승인
33 MEET_MEMBER_OK_OWNER 4명 확정 (주최자)
34 MEET_MEMBER_OK_MEMBER 4명 확정 (멤버)
35-36 MEET2_HOUR_PASSED* 2시간 경과
37 MEET_SEND_CHAT 채팅 전송
58 MEET_DELETED 모임 삭제