## Feature Issue 📌 * 기존 : 구글 캘린더 일정은 조회 시 제목만 내려주고 DB에 저장하지 않아, 티모의 투두처럼 타이머 실행/순서 변경/통계 반영을 할 수 없음 * 변경 : 구글 일정을 투두로 저장해서 다른 투두처럼 타이머 실행, 순서 변경, 통계, AI 추천에 반영되게 함 * 구글 일정을 가져와 저장하는 동작은 조회(GET)와 분리해 새 API(`POST`)로 추가 * 프론트는 새로고침 때 동기화 API를 먼저 호출하고, 이후 투두 조회 API로 화면을 그림 * 새로운 API만 추가하고, 기존 조회 API는 변경하지 않음 ### 기획과 논의 내용 **공통 정책** * 구글 캘린더에서 가져오는 것 : 제목, 날짜 * 구글 일정은 한 번에 전부 가져오지 않고, 사용자가 조회한 기간(렌더링되는 날짜 범위)의 일정만 그때그때 투두로 저장 * 조회하지 않은 기간의 일정은 티모에 저장되지 않음 * 반복 일정은 티모의 반복 일정 정책으로 들어오지 않고 매번 별개의 투두로 들어옴 * 월요일 매주 반복 일정이면 월요일마다 투두를 개별 생성해놓은 것처럼. * 티모 내에서 소요 시간을 설정해야 타이머 실행 가능 (소요 시간 없이도 완료 처리는 가능) * 구글 일정 투두는 연동 해제 후에도 항상 구글 일정 투두로 취급 **결정된 정책** 1. 티모에서 구글 일정 투두의 수정/삭제 1차 스프린트 내에서는 불가능 * 소요시간, 순서, 태그, 아이콘, 메모, 서브태스크, 완료 체크는 티모에서 자유롭게 사용 가능 * 구글에서의 수정/삭제는 티모에 반영 * 단, 구글에서 삭제되었지만 타이머 기록이 있어 남아 있는 일정(`구글에서 삭제된 일정`)은 사용자가 직접 삭제 가능 2. 구글에서의 일정 수정/삭제 시 티모에 있던 투두 처리 * 타이머 기록 없는 투두 : 티모에서도 같이 삭제 * 타이머 기록 있는 투두 : 통계, 타임박스에 쓰이므로 삭제하지 않고 구글에서 삭제된 일정으로 표시 후 유지 3. 캘린더 연동 해제, 재연동 시 투두 처리 * 중도 연동 해제 시 : 오늘 이후(내일부터)의 연동 투두만 삭제, 이전 투두는 유지 * 재연동 시 : 현재처럼 렌더링되는 부분만큼씩 가져오기 (구글 일정 ID로 매칭해 중복 방지) **1차 스프린트에서 제외 (잘 발생하지 않을 것 같은 예외 상황이라 이후 논의)** 4. 하루 투두 최대 20개 제한 * 구글 일정까지 가져올 때 합산 20개가 넘어갔을 때의 처리 방법 * (1차 스프린트 임시 처리 방법) 구글 일정은 모두 가져오되, 하루 20개 초과 시 사용자가 직접 새로운 투두는 생성 불가 5. 투두 제목 30자 제한 * 구글 일정 제목이 30자를 넘겼을 때의 처리 방법 * (1차 스프린트 임시 처리 방법) 제목 30자까지만 잘라서 저장 <br> ## Todo ✔️ - [x] 관련 API 명세서 작성+수정 - [x] Todo에 구글 일정 구분(출처, 구글 일정 ID) 컬럼 추가, `(user, 구글 일정 ID)` 유니크 제약으로 중복 방지 - [x] 구글 일정 동기화 API 추가 (`POST /api/v1/users/calendar/events/sync`) - 요청한 기간의 구글 일정을 가져와 투두로 신규 저장 - 동시 요청 시에도 중복 투두가 생기지 않도록 처리 - [x] 구글 일정 투두의 제목/날짜 수정, 삭제 불가 처리 - [x] 구글에서 삭제된 일정의 타이머 기록 유무별 처리, 구글에서 삭제된 일정 명시적 표시 - [x] 연동 해제 시 오늘 이후 구글 일정 투두 삭제 - [x] 홈 조회(`GET /api/v1/home`, `GET /api/v1/home/today`) 응답에 구글 일정 구분 필드 추가
Activity
14 remaining items