feat: Fix nutrition service and add location-based alerts
All checks were successful
continuous-integration/drone/push Build is passing

Changes:
- Fix nutrition service: add is_active column and Pydantic validation for UUID/datetime
- Add location-based alerts feature: users can now see alerts within 1km radius
- Fix CORS and response serialization in nutrition service
- Add getCurrentLocation() and loadAlertsNearby() functions
- Improve UI for nearby alerts display with distance and response count
This commit is contained in:
2025-12-13 16:34:50 +09:00
parent 3050e084fa
commit cfc93cb99a
34 changed files with 7016 additions and 17 deletions

View File

@@ -190,7 +190,27 @@ async def create_nutrition_entry(
await db.commit()
await db.refresh(nutrition_entry)
return UserNutritionEntryResponse.model_validate(nutrition_entry)
# Преобразуем типы для Pydantic validation
response_data = {
'id': nutrition_entry.id,
'uuid': str(nutrition_entry.uuid),
'user_id': nutrition_entry.user_id,
'entry_date': nutrition_entry.entry_date,
'meal_type': nutrition_entry.meal_type,
'food_item_id': nutrition_entry.food_item_id,
'custom_food_name': nutrition_entry.custom_food_name,
'quantity': nutrition_entry.quantity,
'unit': nutrition_entry.unit,
'calories': nutrition_entry.calories,
'protein_grams': nutrition_entry.protein_grams,
'fat_grams': nutrition_entry.fat_grams,
'carbs_grams': nutrition_entry.carbs_grams,
'notes': nutrition_entry.notes,
'created_at': nutrition_entry.created_at.isoformat() if hasattr(nutrition_entry.created_at, 'isoformat') else str(nutrition_entry.created_at),
'updated_at': nutrition_entry.updated_at.isoformat() if hasattr(nutrition_entry.updated_at, 'isoformat') else str(nutrition_entry.updated_at),
}
return UserNutritionEntryResponse(**response_data)
@app.get("/api/v1/nutrition/entries", response_model=List[UserNutritionEntryResponse])

View File

@@ -1,8 +1,9 @@
from datetime import date
from enum import Enum
from typing import List, Optional
from uuid import UUID
from pydantic import BaseModel, Field, root_validator
from pydantic import BaseModel, Field, root_validator, field_serializer
class MealType(str, Enum):
@@ -99,6 +100,7 @@ class UserNutritionEntryResponse(UserNutritionEntryBase):
fat_grams: Optional[float] = None
carbs_grams: Optional[float] = None
created_at: str
updated_at: Optional[str] = None
class Config:
from_attributes = True