Bug fixes of training
This commit is contained in:
21
services/external/README.md
vendored
21
services/external/README.md
vendored
@@ -100,14 +100,19 @@ The **External Service** integrates real-world data from Spanish sources to enha
|
||||
## API Endpoints (Key Routes)
|
||||
|
||||
### POI Detection & Context
|
||||
- `POST /poi-context/{tenant_id}/detect` - Detect POIs for tenant location (lat, long, force_refresh params)
|
||||
- `GET /poi-context/{tenant_id}` - Get cached POI context for tenant
|
||||
- `POST /poi-context/{tenant_id}/refresh` - Force refresh POI detection
|
||||
- `DELETE /poi-context/{tenant_id}` - Delete POI context for tenant
|
||||
- `GET /poi-context/{tenant_id}/feature-importance` - Get POI feature importance summary
|
||||
- `GET /poi-context/{tenant_id}/competitor-analysis` - Get competitive analysis
|
||||
- `GET /poi-context/health` - Check POI service and Overpass API health
|
||||
- `GET /poi-context/cache/stats` - Get POI cache statistics
|
||||
- `POST /api/v1/tenants/{tenant_id}/poi-context/detect` - Detect POIs for tenant location (lat, long, force_refresh params) - Direct access (bypasses gateway authentication)
|
||||
- `GET /api/v1/tenants/{tenant_id}/poi-context` - Get cached POI context for tenant - Direct access (bypasses gateway authentication)
|
||||
- `POST /api/v1/tenants/{tenant_id}/poi-context/refresh` - Force refresh POI detection - Direct access (bypasses gateway authentication)
|
||||
- `DELETE /api/v1/tenants/{tenant_id}/poi-context` - Delete POI context for tenant - Direct access (bypasses gateway authentication)
|
||||
- `GET /api/v1/tenants/{tenant_id}/poi-context/feature-importance` - Get POI feature importance summary - Direct access (bypasses gateway authentication)
|
||||
- `GET /api/v1/tenants/{tenant_id}/poi-context/competitor-analysis` - Get competitive analysis - Direct access (bypasses gateway authentication)
|
||||
- `GET /api/v1/tenants/poi-context/health` - Check POI service and Overpass API health - Direct access (bypasses gateway authentication)
|
||||
- `GET /api/v1/tenants/poi-context/cache/stats` - Get POI cache statistics - Direct access (bypasses gateway authentication)
|
||||
|
||||
### Recommended Access Pattern:
|
||||
- Services should use `/api/v1/tenants/{tenant_id}/external/poi-context` (detected POIs) and `/api/v1/tenants/{tenant_id}/external/poi-context/detect` (detection) via shared ExternalServiceClient through the API gateway for proper authentication and authorization.
|
||||
|
||||
**Note**: When using ExternalServiceClient through shared client, provide relative paths like `poi-context` and `poi-context/detect` - the client automatically constructs the full tenant-scoped path.
|
||||
|
||||
### Weather Data (AEMET)
|
||||
- `GET /api/v1/external/weather/current` - Current weather for location
|
||||
|
||||
28
services/external/app/api/poi_context.py
vendored
28
services/external/app/api/poi_context.py
vendored
@@ -18,13 +18,17 @@ from app.services.poi_refresh_service import POIRefreshService
|
||||
from app.repositories.poi_context_repository import POIContextRepository
|
||||
from app.cache.poi_cache_service import POICacheService
|
||||
from app.core.redis_client import get_redis_client
|
||||
from shared.routing.route_builder import RouteBuilder
|
||||
|
||||
logger = structlog.get_logger()
|
||||
|
||||
router = APIRouter(prefix="/tenants", tags=["POI Context"])
|
||||
route_builder = RouteBuilder('external')
|
||||
router = APIRouter(tags=["POI Context"])
|
||||
|
||||
|
||||
@router.post("/{tenant_id}/poi-context/detect")
|
||||
@router.post(
|
||||
route_builder.build_base_route("poi-context/detect")
|
||||
)
|
||||
async def detect_pois_for_tenant(
|
||||
tenant_id: str,
|
||||
latitude: float = Query(..., description="Bakery latitude"),
|
||||
@@ -297,7 +301,9 @@ async def detect_pois_for_tenant(
|
||||
)
|
||||
|
||||
|
||||
@router.get("/{tenant_id}/poi-context")
|
||||
@router.get(
|
||||
route_builder.build_base_route("poi-context")
|
||||
)
|
||||
async def get_poi_context(
|
||||
tenant_id: str,
|
||||
db: AsyncSession = Depends(get_db)
|
||||
@@ -331,7 +337,9 @@ async def get_poi_context(
|
||||
}
|
||||
|
||||
|
||||
@router.post("/{tenant_id}/poi-context/refresh")
|
||||
@router.post(
|
||||
route_builder.build_base_route("poi-context/refresh")
|
||||
)
|
||||
async def refresh_poi_context(
|
||||
tenant_id: str,
|
||||
db: AsyncSession = Depends(get_db)
|
||||
@@ -365,7 +373,9 @@ async def refresh_poi_context(
|
||||
)
|
||||
|
||||
|
||||
@router.delete("/{tenant_id}/poi-context")
|
||||
@router.delete(
|
||||
route_builder.build_base_route("poi-context")
|
||||
)
|
||||
async def delete_poi_context(
|
||||
tenant_id: str,
|
||||
db: AsyncSession = Depends(get_db)
|
||||
@@ -393,7 +403,9 @@ async def delete_poi_context(
|
||||
}
|
||||
|
||||
|
||||
@router.get("/{tenant_id}/poi-context/feature-importance")
|
||||
@router.get(
|
||||
route_builder.build_base_route("poi-context/feature-importance")
|
||||
)
|
||||
async def get_feature_importance(
|
||||
tenant_id: str,
|
||||
db: AsyncSession = Depends(get_db)
|
||||
@@ -430,7 +442,9 @@ async def get_feature_importance(
|
||||
}
|
||||
|
||||
|
||||
@router.get("/{tenant_id}/poi-context/competitor-analysis")
|
||||
@router.get(
|
||||
route_builder.build_base_route("poi-context/competitor-analysis")
|
||||
)
|
||||
async def get_competitor_analysis(
|
||||
tenant_id: str,
|
||||
db: AsyncSession = Depends(get_db)
|
||||
|
||||
Reference in New Issue
Block a user