Files
chat/services/calendar_service/mobile_responses.py
Andrew K. Choi 91c7e04474
All checks were successful
continuous-integration/drone/push Build is passing
API refactor
2025-10-07 16:25:52 +09:00

47 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from datetime import date, datetime
from typing import List, Dict, Optional, Any
from uuid import UUID
from pydantic import BaseModel, Field
class MobileCalendarEntryResponse(BaseModel):
"""Формат ответа для мобильного приложения"""
id: int
uuid: str
date: str # ISO формат даты YYYY-MM-DD
type: str # Тип записи в формате мобильного приложения (MENSTRUATION, OVULATION, etc.)
flow_intensity: Optional[int] = None # Шкала интенсивности 1-5
mood: Optional[str] = None
symptoms: List[str] = Field(default_factory=list)
notes: Optional[str] = None
created_at: str # ISO формат даты и времени
is_predicted: bool = False
class MobileCalendarPeriodInfo(BaseModel):
"""Информация о текущем цикле для мобильного приложения"""
current_cycle_start: Optional[str] = None # ISO формат даты YYYY-MM-DD
expected_period_end: Optional[str] = None # ISO формат даты YYYY-MM-DD
cycle_length: Optional[int] = None
period_length: Optional[int] = None
average_cycle_length: Optional[int] = None
fertility_window_start: Optional[str] = None # ISO формат даты YYYY-MM-DD
fertility_window_end: Optional[str] = None # ISO формат даты YYYY-MM-DD
ovulation_date: Optional[str] = None # ISO формат даты YYYY-MM-DD
class MobilePredictionInfo(BaseModel):
"""Информация о прогнозах для мобильного приложения"""
next_period_date: Optional[str] = None # ISO формат даты YYYY-MM-DD
confidence_level: Optional[int] = None # 0-100 уровень уверенности
next_fertile_window_start: Optional[str] = None # ISO формат даты YYYY-MM-DD
next_fertile_window_end: Optional[str] = None # ISO формат даты YYYY-MM-DD
next_ovulation_date: Optional[str] = None # ISO формат даты YYYY-MM-DD
class MobileCalendarResponse(BaseModel):
"""Полный ответ для мобильного приложения"""
entries: List[MobileCalendarEntryResponse]
period_info: MobileCalendarPeriodInfo = Field(default_factory=MobileCalendarPeriodInfo)
prediction: MobilePredictionInfo = Field(default_factory=MobilePredictionInfo)