Skip to content

Core Features

HamSik edited this page Dec 23, 2025 · 1 revision

2.1

데이터 스키마

  • Entity: 목표
Property Type Optional Note
id UUID X PK (고유 식별자)
title String X 사용자 표시용 명칭
normalizedTitle String X 검색/대조용 (공백 제거 버전)
sessions [Session] O 1:N 관계 (Cascade 삭제 권장)
  • Entity: 메인기록
Property Type Optional Note
id UUID X PK (고유 식별자)
goalID UUID X 어떤 Goal에 속하는지 식별 (FK)
action String X 실행할 구체적 행동
vision String X 완수했을 때의 상상된 모습
totalWorkTime Double X 작업 누적 시간 (초 단위)
totalRestTime Double X 휴식 누적 시간 (초 단위)
outcome Int (Enum) X 0:진행중, 1:성공, 2:실패
createdAt Date X 생성 및 정렬 기준 시점

핵심 기능 명세 및 기술 전략

P0: 지능형 목표 입력 (Smart Input)

  • Description: 목표 입력 시 실시간으로 기존 Goal 데이터를 검색하여 추천 리스트 제공.
  • Technical Strategy: SwiftUI.searchable 혹은 커스텀 TextField와 Predicate 필터링을 활용해 입력값 변화(onChange)에 따른 실시간 데이터 매칭.
P1: 행동-비전 동시 입력 UI
  • Description: "무엇을 할 것인가"와 "끝난 모습은 어떠한가"를 한 흐름에 배치.
  • Technical Strategy: FocusState를 활용하여 행동 입력 완료 시 자동으로 완수 모습 입력칸으로 포커스 이동, UX 흐름 최적화.
P2: 듀얼 타이머 엔진 (Ver 1.0 계승)
  • Description: 상단(작업)과 하단(휴식)의 현재/누적 시간을 동시에 제어.
  • Technical Strategy: Combine을 이용한 Timer.publish를 전역적으로 관리하고, 앱 종료 시에도 시간을 복구할 수 있도록 ScenePhase에 맞춰 현재 시각(lastStartedAt)을 저장하는 로직 구현.

향후 과제(BackLog)

  • 실패 데이터 분석: 사용자가 실패를 기록했을 때, 그 원인을 파악하거나 다시 시도할 수 있는 유도 로직 개발.
  • 데이터 필터링: Goal 기반으로 과거 기록들을 대시보드 형태로 시각화.

Clone this wiki locally