# 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() }