minlog
article thumbnail

 

팀 프로젝트로 아트마켓이라는 플랫폼을 제작했다. 아트마켓은 아트가 필요한 고객과 아티스트의 중계 사이트로 팀원들과 프로젝트를 기획하고 어떤 기술들을 사용할지에 대해 정하며,  이전 부터 구현해보고 싶었던 채팅 기능을 추가 하였다. 

해당 플랫폼은 가격을 구매자와 판매자가 함께 견적을 내고 합의하에 구매까지 가능하다.

때문에 서로 어떻게 연락을 주고 받는지가 중요한데, 게시판 대신 채팅으로 서로 견적 문의를 할 수 있고 이후 작품을 작업하면서, 작업에 필요한 파일과 컨펌, 완성된 작업물 전달을 까지 가능 할 수 있도록 제작 하였다.

 

 

1. 채팅 기능 분석

 

1-1. 기본기능

  • 유저는 여러 작가와 대화할 수 있다. ( 여러 대화방 있다. )
  • 하나의 대화방에는 여러 ‘문자’들이 오고갈 수 있다. 
  • 하나의 대화방에서는 상대방의 닉네임, 마지막 메시지, 마지막 메시지 시간을 알 수 있다.
  • 하나의 ‘문자’ 에서는 상대방이 보낸 메시지, 파일 , 전송 시간, 방을 들어온 순간, 방을 나간 순간을 알 수 있다. 

 

1-2.  추가기능

  • 유저는 자신의 대화 리스트에서 안읽은 메시지만 확인 가능하다.
  • 유저는 대화방 리스트에서 보고싶지 않은 방을 제거할 수 있다. 

 

1-3. 필요한 내용

  • 채팅 방에 필요한 내용 : 작가 (닉네임) / 문의자 (닉네임)  / 채팅방 생성 날짜와 시간 / 마지막 전송 메시지 / 마지막 전송 메시지 날짜와  시간 / 문의한 상품페이지 바로 연동
  • 채팅 방에 포함된 각 유저 필요한 내용 :  마지막 접속 시간 날짜 /   채팅방 보임 안보임 여부 
  • 메시지에 필요한 내용 :  보낸사람(닉네임) / 메시지 / 메시지 전송 날짜와 시간  / 전달한 파일 

 

 


 

 

2. DB 설계

 

2-1.  chatRoom  - 대화방

실제 대화가 이루어지는 공간의 정보 

명칭 값  명칭 이름  기타
chat_room_id  bigint 고유값 pk
product_id  bigint 주문 상품 페이지 고유 번호 fk
chat_from_id bigint 보내는사람  
chat_to_id bigint 받는사람(작가)  
chat_room_date  datetime 생성 날짜  
chat_room_last_date  datetime 마지막 메시지 날짜  
chat_room_msg  varchar(250) 마지막 메시지   

 

 

2-2. Chat - 대화방 참여 

참여한 각 유저의 상태 정보 저장

명칭 값  명칭 이름  기타
chat_id  bigint  고유 번호  pk
chat_room_id  bigint  대화방번호  fk
product_id bigint  상품아이디  
member_id  bigint  회원번호   
chat_date  datetime 처음 입장 날짜 (시간)  
chat_leave_date  datetime 마지막 나간 날짜(시간)  
chat_status  Tinyint() / default 0(faluse) 목록 리스트에서 숨김 처리 방에 속하는 사용자 모두가 해당 필드 값이 false 가 되면 실제로 데이터 제거 
chat_identity varchar(10) 사용자의 권한값 enum  : AUTHOR, GENERAL,ADMIN,AUTHORPREMIUM

 

 

2-3. ChatMessage - 대화방 메시지

전송하는 대화 저장

명칭 값  명칭 이름  기타
chat_message_id  bigint  고유 번호  pk
chat_room_id  bigint 대화방번호  fk
member_id  bigint 보내는 사람 번호  
chat_message_date  datetime 생성날짜   
message varchar(250) 메시지   
chat_message_type  varchar(5) 메시지 타입 enum : ENTER, TALK, FILE



 


 

 

3 . 디자인 및 기능 레퍼런스

플랫폼과 비슷한 기능을 가지고 있는 당근마켓의 구조를 레퍼런스 하였다. 

 

 

3-1 . 프로젝트에 적용할 화면설계서

1) 상품페이지에서 일대일 문의 버튼을 통해 작가와 대화 할 수 있다.

2) 마이페이지에서 문의 했던 내역들을 확인이 가능하고 대화를 이어 할 수가 있다.

 

프로젝트를 시작하면서 2주에 한번씩 토요일 실무를 하고 계신 멘토님들과 멘토링이 있다. 

기획안 부터 요구사항 정의서 화면설계까지 꼼꼼하게 작업물들을 체크 해주시고 피드백을 받을 수 있는 시간이다. 

 

아래 화면설계서에서 입장과 퇴장을 확인하는 내용은 불필요하며 지저분해 보일 수 있다는 의견으로 제거 하기로 하였다.

또한 채팅 방에 상대방이 입장이 되어 있지 않을 시, 사이트 내에 알림으로 확인 가능 하도록 기획이 되어 있었는데

사이트에 접속 하지 않은 고객이 메시지가 온 사실을 알 수 있으면 좋겠다는 피드백과 메일이나 문자 등의 방법으로 알림을 추가 하면 어떤지 의견을 주셨다. 

현제 프로젝트에서 회원가입, 회원 확인 시 이메일을 사용하고 있었는데, 카카오톡이나 문자등은 일정 비용이 발생할 수 있기 때문이였다. 하여 알림 내역들 또한  고객이 회원가입 시 기입한 메일로 내역을 전송하기로 하였다. 

 

 

 

 

profile

minlog

@jimin-log

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!