MukeshKapoor25's picture
chart and table widgets
7288c34
"""Constants for KPI cache module."""
from app.kpi_cache.widget_groups import (
OPERATIONS_WIDGETS,
INVENTORY_WIDGETS,
FINANCIAL_WIDGETS,
SALES_WIDGETS,
CUSTOMERS_WIDGETS,
CATALOGUE_WIDGETS,
SPA_BOOKINGS_WIDGETS,
TRADE_NETWORK_WIDGETS,
SALES_CHART_WIDGETS,
OPERATIONS_CHART_WIDGETS,
STAFF_CHART_WIDGETS,
CUSTOMERS_CHART_WIDGETS,
CATALOGUE_CHART_WIDGETS,
SALES_TABLE_WIDGETS,
OPERATIONS_TABLE_WIDGETS,
STAFF_TABLE_WIDGETS,
CUSTOMERS_TABLE_WIDGETS,
CATALOGUE_TABLE_WIDGETS,
)
# MongoDB collection name for durable KPI snapshots
KPI_CACHE_COLLECTION = "kpi_cache"
# Redis key prefix for hot L1 cache
REDIS_KPI_PREFIX = "kpi"
# Redis TTLs (seconds) β€” L1 hot cache, shorter than MongoDB snapshots
REDIS_TTL_FINANCIAL = 1800 # 30 min
REDIS_TTL_INVENTORY = 600 # 10 min
REDIS_TTL_OPERATIONS = 600 # 10 min
REDIS_TTL_SALES = 900 # 15 min
REDIS_TTL_CUSTOMERS = 600 # 10 min
REDIS_TTL_CATALOGUE = 600 # 10 min
REDIS_TTL_SPA_BOOKINGS = 300 # 5 min β€” booking state changes frequently
REDIS_TTL_TRADE_NETWORK = 900 # 15 min
# Widget category β†’ Redis TTL mapping
WIDGET_REDIS_TTL: dict = {
"financial": REDIS_TTL_FINANCIAL,
"inventory": REDIS_TTL_INVENTORY,
"operations": REDIS_TTL_OPERATIONS,
"sales": REDIS_TTL_SALES,
"customers": REDIS_TTL_CUSTOMERS,
"catalogue": REDIS_TTL_CATALOGUE,
"spa_bookings": REDIS_TTL_SPA_BOOKINGS,
"trade_network": REDIS_TTL_TRADE_NETWORK,
# Chart widget categories share TTLs with their scalar counterparts
"sales_charts": REDIS_TTL_SALES,
"operations_charts": REDIS_TTL_OPERATIONS,
"staff_charts": REDIS_TTL_OPERATIONS,
"customers_charts": REDIS_TTL_CUSTOMERS,
"catalogue_charts": REDIS_TTL_CATALOGUE,
# Table widget categories
"sales_tables": 300,
"operations_tables": 120,
"staff_tables": 300,
"customers_tables": 600,
"catalogue_tables": 600,
}
# Merged registry β€” assembled from per-category widget group files
KPI_WIDGET_REGISTRY: dict = {
**OPERATIONS_WIDGETS,
**INVENTORY_WIDGETS,
**FINANCIAL_WIDGETS,
**SALES_WIDGETS,
**CUSTOMERS_WIDGETS,
**CATALOGUE_WIDGETS,
**SPA_BOOKINGS_WIDGETS,
**TRADE_NETWORK_WIDGETS,
# Chart widgets
**SALES_CHART_WIDGETS,
**OPERATIONS_CHART_WIDGETS,
**STAFF_CHART_WIDGETS,
**CUSTOMERS_CHART_WIDGETS,
**CATALOGUE_CHART_WIDGETS,
# Table widgets
**SALES_TABLE_WIDGETS,
**OPERATIONS_TABLE_WIDGETS,
**STAFF_TABLE_WIDGETS,
**CUSTOMERS_TABLE_WIDGETS,
**CATALOGUE_TABLE_WIDGETS,
}