채팅 Spec

화면 경로 /mainPages/chatRoom · 작성일 2026-10-12

1:1 채팅·단체 채팅 화면의 기능·데이터·권한을 정리한 원본 문서입니다. 도움말(chat-help.html)의 상세 링크가 이 문서의 각 항목으로 연결됩니다. 오픈채팅 방도 입장한 뒤에는 이 화면에서 대화합니다.

A1. 업무 흐름

  1. 사용자① 방 만들기이 화면 · 친구 관리에서 1:1 채팅
  2. 사용자② 초대 · 초대링크이 화면 (방 메뉴)
  3. 초대받은 사람③ 참여 또는 거절초대 알림
  4. 참여자④ 대화이 화면
  5. 시스템⑤ 새 메시지 알림푸시 · 앱 배지

사용 지점 · 사용 주체 · 목적

단계사용 지점사용 주체목적
① ②친구와 대화를 시작할 때로그인 사용자방을 열고 대화 상대를 부름
④대화 중방 참여자메시지·파일 주고받기, 반응, 검색

A2. 화면 Meta data

항목내용
화면명채팅 (1:1 채팅, 단체 채팅)
화면 경로/mainPages/chatRoom?roomType=DIRECT, /mainPages/chatRoom?roomType=GROUP
메뉴 키directChat (홈 카드 표시), groupChat
화면 목적실시간으로 메시지와 파일을 주고받는다
프로그램components/core/client/wsChatClient.js, chatArea/, server.js (Socket.IO)
API 모듈pages/api/biz/chatroom.js (CHATROOM_*), Socket.IO 이벤트 join · chat · loadMore · readReceipt
주요 테이블TB_COR_CHATROOM_MST, TB_COR_CHATROOM_USERS, TB_COR_CHAT_MSG, TB_COR_CHAT_READ_RECEIPT
도움말 파일public/help/chat-help.html, chat-spec.html

A3. 화면 구성 상세

영역영역명사용자가 하는 일화면 동작backend 동작
①채팅방 목록방 선택, + 방 만들기방별 안 읽은 수, 접기·펼치기CHATROOM_LIST, CHATROOM_CREATE
②대화 영역메시지 읽기, 위로 스크롤해 이전 대화 보기, 리액션입장하면 최근 20개를 바로 표시, 위로 올리면 이전 메시지 추가join → history, loadMore → olderMessages
③입력창 · 채팅 도구메시지·사진·동영상·음성·이모티콘 보내기, 받아쓰기, 글자 강조입력 중이면 상대에게 "입력 중…" 표시chat 이벤트
④방 메뉴초대, 초대링크, 참여자 목록, 방 이름 변경, 음소거, 내보내기, 나가기방 상단에서 열림CHATROOM_INVITE 등
⑤메시지 검색검색어 입력, 원문으로 이동결과를 누르면 해당 메시지로 스크롤/api/chat/search

A4. 방 종류

종류뜻비고
1:1 채팅 (DIRECT)두 사람의 방참여자가 3명 이상이 되면 단체 채팅으로 바뀜
단체 채팅 (GROUP)세 사람 이상의 방2명으로 줄면 1:1 채팅으로 바뀜
비밀채팅종단간 암호화 방, 이름 앞에 🔒상대가 아직 암호화 키를 등록하지 않았으면 만들 수 없음
오픈채팅 (OPEN)공개 방오픈채팅 화면에서 참여

A5. 메시지 항목 정의

항목의미형식
내용보낸 글문자, 글자 굵게·형광·빨간색 강조 가능
첨부사진, 동영상, 음성, 파일동영상은 500MB 이하
리액션메시지에 남긴 이모지이모지별 누른 사람 목록
안 읽은 수아직 안 읽은 참여자 수모두 읽으면 사라짐

A6. 버튼 동작

버튼 (영역)확인·검증결과backend 처리
+ 방 만들기 (①)방 이름 입력, 비밀방 여부새 방으로 이동CHATROOM_CREATE
전송 (③)없음모든 참여자에게 즉시 표시chat 이벤트, DB 저장
사진 · 동영상 · 음성 녹음 (③)파일 형식·크기, 마이크 권한첨부 메시지 전송파일 업로드 후 chat 이벤트
받아쓰기 (③)마이크 권한말한 내용을 글로 바꿔 입력창에 넣음음성 인식
초대 (④)친구 선택상대에게 초대 알림, 참여·거절 선택CHATROOM_INVITE, ACCEPT_INVITE, REJECT_INVITE
초대링크 (④)없음링크 복사CHATROOM_CREATE_INVITE_TOKEN
방 이름 변경 (④)이름 입력모든 참여자에게 새 이름 표시CHATROOM_RENAME
이 방 음소거 (④)없음이 기기에서 이 방의 알림을 끔이 기기에만 저장
내보내기 (④)확인 창선택한 참여자를 방에서 제외CHATROOM_KICK
나가기 (④)확인 창방 목록에서 사라짐CHATROOM_LEAVE

A7. 권한

역할대화초대 · 이름 변경내보내기
방 참여자OOO (오픈채팅은 방장만)
참여하지 않은 사용자XXX

A8. 상태 변화

초대됨참여참여 중나가기 · 내보내기나감

A9. 데이터 연계

처리바뀌는 데이터함께 일어나는 일
메시지 전송TB_COR_CHAT_MSG방에 없는 참여자 기기로 푸시, 앱 아이콘 배지 갱신
방 입장TB_COR_CHAT_READ_RECEIPT그 방의 메시지를 모두 읽음 처리
참여자 수 변경ROOM_TYPE2명이면 1:1, 3명 이상이면 단체로 자동 변경
마지막 참여자가 나감방·메시지·읽음 정보 삭제되돌릴 수 없음

개정 이력

버전수정일수정 내용
1.02026-10-12최초 작성