Skip to content

Latest commit

 

History

History
93 lines (75 loc) · 4.76 KB

fixed_policy.md

File metadata and controls

93 lines (75 loc) · 4.76 KB

Fixed Policies

slide voda v1 spec에서 논의된 스펙을 정리합니다.

1. Login / Register / Withdraw

계정에 대한 정책을 정리합니다.

  1. 이용약관, 개인정보처리방침 동의 페이지 필요
  2. 약관 CRUD API 필요
  3. 로그인(Login)
    1. JWT (HttpOnly-Cookie)
    2. accessToken: 3d
    3. refreshToken: 30d
  4. 회원가입(Register)
    1. 다중 디바이스 로그인 지원해야함.
    2. 같은 이메일로 등록된 여러 oauth의 경우, 회원가입 불가함
      1. 이 경우 다른 sns로 이미 회원가입이 되셨습니다. 모달 팝업
      2. email을 unique key로 관리한다.
  5. 탈퇴 정책(Withdraw)
    1. 탈퇴가 불가능한 상황은 존재하지 않는다.
    2. 탈퇴시 회원이 활동했던 모든 데이터들은 cascade되어 제거된다.
    3. 마스터 탈퇴시
      1. 소유한 다이어리방에 가장 먼저 초대된(createdAt) 멤버에게 자동 위임된다.
      2. 만약 마스터가 다이어리방의 유일한 멤버인 경우, 다이어리방은 삭제된다.
    4. 탈퇴 후 재가입은 탈퇴기간에 상관없이 가능하다.

마스터 탈퇴시 데이터 process (on delete cascade)

DiaryRoom 삭제 - DiaryRoom에 속한 Diary 삭제 - DiaryOrder 삭제 - 예약된 Alarm 삭제 - 계정 삭제

2. DiaryRoom (교환일기 방)

교환일기방에 대한 정책을 정리합니다.

  • 리스트 List
    1. 교환일기방은 페이지네이션이 존재하지 않는다.
    2. 교환일기방 생성시 사용한 테마는 해시태그(#)로 추후 보여져야 하며, 필터링(카테고리) 역할을 한다.
  • 상세화면 Read
    1. 해시태그는 교환일기방의 테마-배경이며, 각 배경마다 미리 정해진 네이밍이 있다. (i.g "고영희자랑하는일기")
    2. OOO님이 이야기를 쓰고있어요에서 OOO은 현재 턴에서 작성해야 하는 사람을 나타낸다.
    3. 교환일기방의 상세화면에 나타나는 프로필 리스트는 작성순서에 따라 보여지며, 작성해야하는 프로필을 UI적(Blue Circle)으로 표현한다.
    4. 또한 작성순서(DiaryOrder)는 교환일기방참여한 순서를 디폴트로한다.
    5. 교환일기방의 상세화면에 보여질 교환일기들
      1. 교환일기들은 페이지네이션 처리된다.(10ea)
      2. 요약텍스트가 보여져야 한다. (디자인 변경예정)
      3. 음성 첨부 파일이 있을 경우 표현된다.
  • 수정 (Update)
    • 교환일기방은 수정 불가(Immutable)하다.
  • 삭제 (Delete)
    • 교환일기방의 삭제는 마스터 단독으로 존재하는 방에서 회원 탈퇴 할경우 진행된다.
    • !! 탈퇴할 때만 교환일기방이 제거되는건 어색하다. 무조건 다이어리방 나가기기능이 필요할 것으로 보임.
  • 기타
    • 다이어리방에 초대된 회원들은 쫒아낼 수 없다.

3. Diary (교환일기)

교환일기방에서 일정주기로 작성되는 다이어리에 대한 정책을 정리합니다.

  1. Create
    1. 교환일기현재 작성해야 하는 멤버만 작성할 수 있다.
    2. 현재 작성해야 하는 멤버교환일기방에서 마스터가 설정한 주기에 따라 정해지며, 작성순서(DiaryOrder)는 마스터가 수정할 수 있다.
    3. 수정된 DiaryOrder 다음턴에 적용된다.
    4. 교환일기를 생성하는 과정은 서버캐시없이 진행된다.
  2. Update / Delete
    • 한번 작성된 교환일기는 수정과 삭제를 할 수없다.
    • 이는 글 안에 포함된 사진/음성녹음에도 적용된다.

4. Audio (음성녹음)

교환일기에 첨부될 음성 일기에 대한 정책을 정리합니다.

  1. 음성을 녹음할 수 있는 페이지교환일기 생성 폼에서만 접근 할 수 있다.
  2. 음성 녹음은 최종적으로 교환일기에 저장요청할 파일기준으로 서버에 저장되며, 그 전까지 음성변조 preview는 클라이언트에서 처리한다.
  3. 음성 녹음에 필요한 데이터는 아래와 같다.
{
  "UUID":  // 안드로이드
  "title": // i.g. 고영희 풀 뜯어 먹는 소리.mp4
  "data":  // 포맷은 mp4통일
  // https://developer.apple.com/documentation/corehaptics/representing_haptic_patterns_in_ahap_files
  "audioPitch": // -1 and 1 float
}

5. Alarm (알람)

교환일기 멤버들이 작성할 시점에 알려주는 알람에 대한 정책을 정리합니다.

  1. HTTP/2 Server Push로 서버에서 일정 주기로 클라에 전달한다.
  2. IOS는 APNS, AOS는 GCM.
  3. 회원이 탈퇴한 경우, 예약된 알람은 제거되어야한다. (TODO: 정확한 스펙)