from __future__ import annotations from typing import List from fastapi import APIRouter, HTTPException, Request from app.ha.models import HaEntitySummary from app.ha.reader import HaReader from app.rules.recommender import Recommender router = APIRouter(prefix="/v1", tags=["entities"]) def _state_ha_reader(request: Request) -> HaReader: try: return request.app.state.ha_reader except AttributeError as exc: raise HTTPException(status_code=503, detail="HA-Reader nicht initialisiert.") from exc def _state_recommender(request: Request) -> Recommender: try: return request.app.state.recommender except AttributeError as exc: raise HTTPException(status_code=503, detail="Recommender nicht initialisiert.") from exc @router.get( "/entities", summary="Home-Assistant-Entities auflisten", description="Gibt eine kompakte Zusammenfassung aller erreichbaren HA-Entitäten zurück.", response_model=List[HaEntitySummary], ) def list_entities(request: Request) -> List[HaEntitySummary]: ha_reader = _state_ha_reader(request) recommender = _state_recommender(request) entities = ha_reader.read_entities() recommender.run(entities) return entities