slide voda v1 spec에서 논의된 스펙을 정리합니다.
계정에 대한 정책을 정리합니다.
- 이용약관, 개인정보처리방침 동의 페이지 필요
- 약관 CRUD API 필요
- 로그인(Login)
- JWT (HttpOnly-Cookie)
- accessToken: 3d
- refreshToken: 30d
- 회원가입(Register)
- 다중 디바이스 로그인 지원해야함.
- 같은 이메일로 등록된 여러 oauth의 경우, 회원가입 불가함
- 이 경우
다른 sns로 이미 회원가입이 되셨습니다.
모달 팝업 - email을 unique key로 관리한다.
- 이 경우
- 탈퇴 정책(Withdraw)
- 탈퇴가 불가능한 상황은 존재하지 않는다.
- 탈퇴시 회원이 활동했던 모든 데이터들은 cascade되어 제거된다.
- 마스터 탈퇴시
- 소유한 다이어리방에 가장 먼저 초대된(
createdAt
) 멤버에게 자동 위임된다. - 만약 마스터가 다이어리방의 유일한 멤버인 경우, 다이어리방은 삭제된다.
- 소유한 다이어리방에 가장 먼저 초대된(
- 탈퇴 후 재가입은 탈퇴기간에 상관없이 가능하다.
마스터 탈퇴시 데이터 process (on delete cascade)
DiaryRoom 삭제 - DiaryRoom에 속한 Diary 삭제 - DiaryOrder 삭제 - 예약된 Alarm 삭제 - 계정 삭제
교환일기방에 대한 정책을 정리합니다.
- 리스트
List
- 교환일기방은 페이지네이션이 존재하지 않는다.
- 교환일기방 생성시 사용한 테마는 해시태그(
#
)로 추후 보여져야 하며,필터링
(카테고리) 역할을 한다.
- 상세화면
Read
- 해시태그는 교환일기방의
테마-배경
이며, 각 배경마다 미리 정해진 네이밍이 있다. (i.g "고영희자랑하는일기") OOO님이 이야기를 쓰고있어요
에서 OOO은 현재 턴에서 작성해야 하는 사람을 나타낸다.- 교환일기방의 상세화면에 나타나는 프로필 리스트는 작성순서에 따라 보여지며, 작성해야하는 프로필을 UI적(
Blue Circle
)으로 표현한다. - 또한 작성순서(
DiaryOrder
)는교환일기방
에참여한 순서
를 디폴트로한다. - 교환일기방의 상세화면에 보여질 교환일기들
- 교환일기들은 페이지네이션 처리된다.(10ea)
- 요약텍스트가 보여져야 한다. (디자인 변경예정)
- 음성 첨부 파일이 있을 경우 표현된다.
- 해시태그는 교환일기방의
- 수정 (
Update
)- 교환일기방은 수정 불가(Immutable)하다.
- 삭제 (
Delete
)- 교환일기방의 삭제는 마스터 단독으로 존재하는 방에서 회원 탈퇴 할경우 진행된다.
- !! 탈퇴할 때만 교환일기방이 제거되는건 어색하다. 무조건
다이어리방 나가기
기능이 필요할 것으로 보임.
- 기타
- 다이어리방에 초대된 회원들은 쫒아낼 수 없다.
교환일기방에서 일정주기로 작성되는 다이어리에 대한 정책을 정리합니다.
- Create
교환일기
는현재 작성해야 하는 멤버
만 작성할 수 있다.현재 작성해야 하는 멤버
는교환일기방
에서마스터
가 설정한주기
에 따라 정해지며,작성순서(DiaryOrder)
는 마스터가 수정할 수 있다.- 수정된
DiaryOrder
다음턴에 적용된다. - 교환일기를 생성하는 과정은
서버캐시
없이 진행된다.
- Update / Delete
- 한번 작성된 교환일기는 수정과 삭제를 할 수없다.
- 이는 글 안에 포함된 사진/음성녹음에도 적용된다.
교환일기에 첨부될 음성 일기에 대한 정책을 정리합니다.
음성을 녹음할 수 있는 페이지
는교환일기 생성 폼
에서만 접근 할 수 있다.- 음성 녹음은 최종적으로 교환일기에 저장요청할 파일기준으로 서버에 저장되며, 그 전까지 음성변조 preview는 클라이언트에서 처리한다.
- 음성 녹음에 필요한 데이터는 아래와 같다.
{
"UUID": // 안드로이드
"title": // i.g. 고영희 풀 뜯어 먹는 소리.mp4
"data": // 포맷은 mp4통일
// https://developer.apple.com/documentation/corehaptics/representing_haptic_patterns_in_ahap_files
"audioPitch": // -1 and 1 float
}
교환일기 멤버들이 작성할 시점에 알려주는 알람에 대한 정책을 정리합니다.
HTTP/2 Server Push
로 서버에서 일정 주기로 클라에 전달한다.- IOS는
APNS
, AOS는GCM
. - 회원이 탈퇴한 경우, 예약된 알람은 제거되어야한다. (TODO: 정확한 스펙)