2025-06-20 05:51:38 +00:00

40 lines
1.8 KiB
Python

# app/models/goal.py
"""
HealthSync Motivator Batch 목표 관련 모델 (goal_service)
"""
from pydantic import BaseModel, Field
from datetime import datetime, date
from typing import Optional
class UserMissionGoal(BaseModel):
"""사용자 미션 목표 (goal_service.user_mission_goal 테이블)"""
mission_id: int = Field(..., description="미션 ID")
member_serial_number: int = Field(..., description="회원 일련번호")
performance_date: date = Field(..., description="수행 날짜")
mission_name: str = Field(..., max_length=100, description="미션명")
mission_description: Optional[str] = Field(None, max_length=200, description="미션 설명")
daily_target_count: int = Field(..., description="일일 목표 횟수")
is_active: bool = Field(..., description="활성 상태")
created_at: datetime = Field(..., description="생성일시")
class Config:
json_encoders = {
datetime: lambda v: v.isoformat(),
date: lambda v: v.isoformat()
}
class MissionCompletionHistory(BaseModel):
"""미션 완료 이력 (goal_service.mission_completion_history 테이블)"""
completion_id: int = Field(..., description="완료 ID")
mission_id: int = Field(..., description="미션 ID")
member_serial_number: int = Field(..., description="회원 일련번호")
completion_date: date = Field(..., description="완료 날짜")
daily_target_count: int = Field(..., description="일일 목표 횟수")
daily_completed_count: int = Field(..., description="일일 완료 횟수")
created_at: datetime = Field(..., description="생성일시")
class Config:
json_encoders = {
datetime: lambda v: v.isoformat(),
date: lambda v: v.isoformat()
}