Spaces:
Configuration error
Configuration error
File size: 2,592 Bytes
b143975 1519172 7288c34 1519172 b143975 1519172 b143975 1519172 7288c34 b143975 1519172 b143975 1519172 7288c34 b143975 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | """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,
}
|