SwiftData 기반으로 설계되었으며, Retrospect 모델과 Category 열거형으로 구성되어 있습니다.
사용자가 하루 회고를 작성할 때 사용하는 주요 데이터 모델입니다.
| 필드명 | 타입 | 설명 | 제약조건 |
|---|---|---|---|
id |
UUID | 고유 식별자 | Primary Key |
date |
Date | 회고 작성 날짜 | Not Null, 하루 시작 시각으로 정규화됨 |
content |
String? | 회고 내용 (선택사항) | Nullable |
category |
Category? | 회고 카테고리 (선택사항) | Enum 참조 |
회고에 사용할 수 있는 카테고리 목록입니다. UI에서 한글로 표시되며, Enum의 raw value는 한글입니다.
| Enum 값 | Raw Value | 설명 |
|---|---|---|
workout |
"운동" | 운동 관련 활동 기록 |
study |
"공부" | 학습 및 공부 기록 |
work |
"업무" | 일 및 생산 활동 기록 |
rest |
"휴식" | 여가 및 휴식 기록 |
etc |
"기타" | 기타 활동 기록 |
| 개선 방향 | 설명 |
|---|---|
| 감정 추가 | 감정 상태 (행복/슬픔 등) Enum으로 확장 가능 |
| 태그(Tag) 기능 | 여러 키워드를 Set<String> 또는 별도 Tag 모델로 연결 가능 |
| 사용자 모델 연동 | 다중 사용자 회고 지원을 위한 User ↔ Retrospect 관계 도입 가능 |
| 파일 첨부 기능 | 사진, 음성 등 미디어를 Retrospect에 연결 가능 |
- SwiftData의
@Model은 내부적으로 자동으로 id와 저장소를 관리합니다. Calendar.current.startOfDay(for:)를 통해date를 하루 기준으로 정규화하여 중복 기록 방지에 활용합니다.