API refactor
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2025-10-07 16:25:52 +09:00
parent 76d0d86211
commit 91c7e04474
1171 changed files with 81940 additions and 44117 deletions

View 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)