New alert service
This commit is contained in:
@@ -25,6 +25,7 @@ from app.schemas.production import (
|
||||
ProductionStatusEnum
|
||||
)
|
||||
from app.core.config import settings
|
||||
from app.utils.cache import get_cached, set_cached, make_cache_key
|
||||
|
||||
logger = structlog.get_logger()
|
||||
route_builder = RouteBuilder('production')
|
||||
@@ -56,8 +57,23 @@ async def list_production_batches(
|
||||
current_user: dict = Depends(get_current_user_dep),
|
||||
production_service: ProductionService = Depends(get_production_service)
|
||||
):
|
||||
"""List batches with filters: date, status, product, order_id"""
|
||||
"""List batches with filters: date, status, product, order_id (with Redis caching - 20s TTL)"""
|
||||
try:
|
||||
# PERFORMANCE OPTIMIZATION: Cache frequently accessed queries (status filter, first page)
|
||||
cache_key = None
|
||||
if page == 1 and product_id is None and order_id is None and start_date is None and end_date is None:
|
||||
# Cache simple status-filtered queries (common for dashboards)
|
||||
cache_key = make_cache_key(
|
||||
"production_batches",
|
||||
str(tenant_id),
|
||||
status=status.value if status else None,
|
||||
page_size=page_size
|
||||
)
|
||||
cached_result = await get_cached(cache_key)
|
||||
if cached_result is not None:
|
||||
logger.debug("Cache hit for production batches", cache_key=cache_key, tenant_id=str(tenant_id), status=status)
|
||||
return ProductionBatchListResponse(**cached_result)
|
||||
|
||||
filters = {
|
||||
"status": status,
|
||||
"product_id": str(product_id) if product_id else None,
|
||||
@@ -68,6 +84,11 @@ async def list_production_batches(
|
||||
|
||||
batch_list = await production_service.get_production_batches_list(tenant_id, filters, page, page_size)
|
||||
|
||||
# Cache the result if applicable (20s TTL for production batches)
|
||||
if cache_key:
|
||||
await set_cached(cache_key, batch_list.model_dump(), ttl=20)
|
||||
logger.debug("Cached production batches", cache_key=cache_key, ttl=20, tenant_id=str(tenant_id), status=status)
|
||||
|
||||
logger.info("Retrieved production batches list",
|
||||
tenant_id=str(tenant_id), filters=filters)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user