36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
from fastapi import APIRouter
|
|
|
|
from backend.database import db
|
|
from backend.schemas import DashboardResponse, RecommendationRequest
|
|
|
|
router = APIRouter(prefix='/api/v1/stats', tags=['stats'])
|
|
|
|
|
|
@router.get('/summary', response_model=DashboardResponse)
|
|
def stats_summary() -> dict:
|
|
return db.stats()
|
|
|
|
|
|
@router.get('/heatmap')
|
|
def stats_heatmap() -> dict:
|
|
return {'items': db.heatmap()}
|
|
|
|
|
|
@router.post('/recommendation')
|
|
def stats_recommendation(payload: RecommendationRequest) -> dict:
|
|
score = 0
|
|
if payload.age is not None and payload.age < 12:
|
|
score += 20
|
|
if payload.elapsed_hours is not None and payload.elapsed_hours >= 12:
|
|
score += 20
|
|
if payload.terrain_primary in {'лес', 'болото', 'вода'}:
|
|
score += 15
|
|
if payload.weather in {'дождь', 'туман', 'снег', 'ночь'}:
|
|
score += 15
|
|
if len(payload.health_flags) >= 2:
|
|
score += 15
|
|
return {
|
|
'recommendation': 'Высокий приоритет на прочёс и дрон' if score >= 40 else 'Стандартный приоритет поиска',
|
|
'score': score,
|
|
}
|