member_message 테이블에 parent_srl이 없는 문제
CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 7.4 |
쪽지를 카톡처럼 꾸미던 중 답글을 추적하는 동작을 해보려 했는데요.(링크 누르면 답글 쪽으로 이동)
이게 불가능하다는 걸 알았습니다.
쪽지 쪽 테이블(member_message)에 parent_srl이라든가 그에 준하는 컬럼이 없어서 원본/부모 메시지에 관한 정보를 알아낼 수 없더라구요.
원본에 관한 정보는 그냥 답장 보낼 때 원본 메시지 긁어다가 내용만 붙여주는 것으로 잠깐 등장한 뒤 끝납니다.
답장을 보내고 난 다음에는 원본/부모 메시지를 추적할 기반이 하나도 없어요(적어도 제가 파악한 바로는요).
이런 거는 서드파티 모듈에서 따로 테이블 만들어서 parent_srl을 넣어주는 게 나을까요?
근데 그렇게 하면 각 message_srl마다 parent_srl을 기록해줘야 해서 데이터가 누적량이 늘어날 것 같은 노파심도 듭니다.
그렇다고 원래 있는 member_message 테이블에다 parent_srl 컬럼만 넣어주면 기존 데이터에 parent_srl에 준하는 값을 기록해둘 수가 없고...

윤삼
Lv. 19
아무래도 중급 초반 수준의 코딩 오타쿠인 것 같습니다.
댓글 6
댓글과 달리, 쪽지는 원래부터 부모/자식 관계가 아니지요.
메일과 비슷한 개념으로 설계되었다고 가정하면 In-Reply-To: 에 해당하는 데이터라도 기록해 두었다면 좋았겠지만, 이제 와서 제목의 Re: 이후 부분이나 내용에 포함된 인용문으로 추측하는 것도 무리고요.
원본 메시지에 대한 정보가 있더라도 댓글의 comments_list 테이블처럼 정렬 순서 및 depth 정보를 함께 기록하지 않으면 목록에서 트리 구조를 재현하기가 무척 난감합니다. 같은 상대방과 꾸준히 메시지를 주고받다 보면 depth가 무한정 깊어지기만 할 테니, 트리 구조가 그다지 쓸모있는 UI인지도 의문이 들고요.
현재로서는 대화 상대방의 member_srl (+ 제목이 Re:로 시작하는지)만을 기준으로 분류해서, 각각의 쓰레드를 해외 포럼처럼 1차원적으로 나열하는 것이 최선일 것 같네요. 지메일도 1차원적으로 나열할 뿐, 메일링 리스트처럼 트리 구조로 표현하지는 않아요. 여기서 디자인만 바꾸면 그냥 채팅이 되고요.
현재 추진하고 있는 방식도 말씀하신 것처럼 대화 상대 중심으로 그냥 나열하는 방식이에요.
참고로 메시지 content 가져올 때 원본 content 부분(<div style="padding~~" 이하 부분)은 필터링해서 안 보여주고 있는데 채팅 형식에서는 이게 더 깔끔하더군요ㅎㅎ
그나저나 앞으로 새로 발생하는 쪽지에 한해 parent_srl 컬럼을 추가 적용하더라도 운영상 예상되는 문제는 없겠죠?
member_srl 기준으로 한 사람 당 한 개의 채팅방을 가지는 게 구조 변경 없이 그나마 채팅과 유사하게 구현할 수 있겠네요.
채팅방 목록에서 회원 프로필 클릭하면, 이때까지 서로 주고 받은 쪽지를 순차적으로 모두 뿌려줘도 되고요.
다만 그런 방식으로 코드를 짜보고는 있는데 제가 UI/UX쪽은 더 모르다보니 여기서 시간을 많이 잡아먹고 있습니다 XD