This commit is contained in:
47
services/calendar_service/mobile_responses.py
Normal file
47
services/calendar_service/mobile_responses.py
Normal file
@@ -0,0 +1,47 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user