📌 Gemini 2.5 flash-lite model with structured output, Thinking mode off

📌 만다라트 이력 관리

[6-2] 수정 - clicked.png

위의 수정하기 뷰에서는 만다라트 생성 완료 후, 하나의 상위 목표에 대해 해당 상위 목표와 하위 목표를 한번에 수정할 수 있습니다.

[4] 할 일.png

[7-1] 히스토리 - hover.png

만다라트를 수정하면, 다음 두 가지 상황을 고려해야 합니다.

  1. (왼쪽 사진) 나의 할 일 뷰에서 수정 전 날짜를 클릭한 경우, 해당 날짜에 맞는 수정 전 만다라트를 보여주어야 합니다.
  2. (오른쪽 사진) 스트릭 트래커에서 수정 전 날짜를 호버한 경우, 해당 날짜에 맞는 수정 전 하위 목표(할 일)을 보여주어야 합니다.

이러한 경우, 상위 목표나 하위 목표의 수정을 단순히 기존 테이블에 저장된 값을 수정해버리면, 이전 기록을 보여주는 뷰에서 잘못된 값이 나올 수 있다고 생각했습니다.

예를 들면, 사용자가 만다라트 수정 전 “밥 먹기” 라는 하위 목표를 완료한 후, 만다라트 수정 후 해당 목표를 “운동하기”로 바꾸면, 스트릭 트래커에서 보여줄 때 “밥 먹기”를 완료한 날에는 “운동하기”가 아닌 “밥 먹기”를 보여주어야 합니다. 즉, 만다라트가 한번 생성된 이후에 목표를 수정, 삭제 할 때에는 모두 POST하여 이력을 쌓아두고, 완료 여부를 체크할 때에도 각 이력에 대한 완료 여부를 체크해야 합니다. 따라서, 수정 전 날짜의 기록을 조회했을 때에도 사용자가 완료한 목표가 온전히 보여질 수 있도록 합니다.

스크린샷 2025-07-16 오후 7.42.34.png

따라서, 기존 Mandalart ← CoreGoal ← SubGoal ← History로 설계했던 테이블 구조를 위 ERD 그림과 같이 바꾸었습니다. 기존의 CoreGoal과 SubGoal은 해당 데이터의 위치만 저장하고, 해당 위치에 대한 이력은 각각의 스냅샷 테이블에 저장합니다. 할 일 완료 여부를 저장하는 할 일 히스토리 또한 하위 목표 스냅샷에 연결하여 어떤 이력에 대한 할 일인지 알 수 있도록 하였습니다.