You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Todo·Category 기능이 현재 SharedPreferences 기반 로컬 전용으로 동작하고 있어 디바이스 간 동기화·서버 백업이 되지 않는다.
백엔드에서는 8개 엔드포인트(/api/todos 4개, /api/todo-categories 4개)가 이미 배포 완료되었으나, 프론트엔드에서는 Retrofit 클라이언트·Remote DataSource·통합 Repository 모두 미구현 상태.
TodoModel 의 JSON 직렬화가 snake_case (scheduled_dates, category_ids) 인 반면, 실제 API 계약은 camelCase (scheduledDates, categoryIds) 라서 바로 연결해도 동작하지 않는다.
docs/api-specs/02_todo.md 의 오류 코드(INVALID_TITLE, INVALID_DATE_FORMAT, 403 FORBIDDEN)가 실제 API (INVALID_INPUT_VALUE, TODO_NOT_FOUND 404 통일) 와 불일치 — Auth alignment 사이클과 같은 문서 정합화 필요.
🛠️ 해결 방안 / 제안 기능
Retrofit 기반 TodoRemoteDataSource 신설 — /api/todos 4개 + /api/todo-categories 4개 엔드포인트 매핑.
TodoModel·TodoCategoryModel 의 JSON 키를 camelCase 로 정렬해 서버 계약과 일치시킴.
기존 LocalTodoDataSource 는 캐시 레이어로 재활용, TodoRepositoryImpl 합성 클래스를 신설해 Remote+Local 합성. 동기화 전략은 별도 spec 사이클에서 확정.
api_endpoints.dart 에 /api/todos, /api/todo-categories 상수 추가.
서버 응답 오류 코드(TODO_NOT_FOUND, CATEGORY_NOT_FOUND, TODO_ALREADY_EXISTS, CATEGORY_ALREADY_EXISTS, INVALID_INPUT_VALUE) 를 도메인 예외 또는 사용자 메시지로 매핑.
docs/api-specs/02_todo.md 를 api-docs.json 최신 계약 기준으로 갱신 (Auth alignment 와 동일 패턴).
TDD 사이클로 진행 — 단위 테스트(매핑·예외) + 위젯 테스트(로딩·에러 상태) 동반.
⚙️ 작업 내용
백엔드 API 명세 확인 및 api-docs.json 기준 도메인 계약 정리
Retrofit TodoRemoteDataSource 인터페이스 정의 + .g.dart 생성
TodoModel / TodoCategoryModel JSON 키 camelCase 정렬, 마이그레이션 코드 유지·검증
TodoRepositoryImpl 신설, LocalTodoRepositoryImpl 는 게스트/오프라인 폴백으로 분기
📝 현재 문제점
SharedPreferences기반 로컬 전용으로 동작하고 있어 디바이스 간 동기화·서버 백업이 되지 않는다./api/todos4개,/api/todo-categories4개)가 이미 배포 완료되었으나, 프론트엔드에서는 Retrofit 클라이언트·Remote DataSource·통합 Repository 모두 미구현 상태.TodoModel의 JSON 직렬화가 snake_case (scheduled_dates,category_ids) 인 반면, 실제 API 계약은 camelCase (scheduledDates,categoryIds) 라서 바로 연결해도 동작하지 않는다.docs/api-specs/02_todo.md의 오류 코드(INVALID_TITLE,INVALID_DATE_FORMAT,403 FORBIDDEN)가 실제 API (INVALID_INPUT_VALUE,TODO_NOT_FOUND404 통일) 와 불일치 — Auth alignment 사이클과 같은 문서 정합화 필요.🛠️ 해결 방안 / 제안 기능
TodoRemoteDataSource신설 —/api/todos4개 +/api/todo-categories4개 엔드포인트 매핑.TodoModel·TodoCategoryModel의 JSON 키를 camelCase 로 정렬해 서버 계약과 일치시킴.LocalTodoDataSource는 캐시 레이어로 재활용,TodoRepositoryImpl합성 클래스를 신설해 Remote+Local 합성. 동기화 전략은 별도 spec 사이클에서 확정.api_endpoints.dart에/api/todos,/api/todo-categories상수 추가.TODO_NOT_FOUND,CATEGORY_NOT_FOUND,TODO_ALREADY_EXISTS,CATEGORY_ALREADY_EXISTS,INVALID_INPUT_VALUE) 를 도메인 예외 또는 사용자 메시지로 매핑.docs/api-specs/02_todo.md를api-docs.json최신 계약 기준으로 갱신 (Auth alignment 와 동일 패턴).⚙️ 작업 내용
api-docs.json기준 도메인 계약 정리TodoRemoteDataSource인터페이스 정의 +.g.dart생성TodoModel/TodoCategoryModelJSON 키 camelCase 정렬, 마이그레이션 코드 유지·검증TodoRepositoryImpl신설,LocalTodoRepositoryImpl는 게스트/오프라인 폴백으로 분기todo_provider.dartProvider 체인 갱신 (Remote DataSource → Repository → UseCase → Notifier)ApiErrorResponse) → 사용자 메시지 매핑 (SpaceSnackBar 연동)02_todo.md문서 최신 API 계약으로 갱신category_map_screen,todo_add_bottom_sheet,category_add_bottom_sheet흐름 그대로 동작 확인🙋♂️ 담당자