包含多个会话的累积代码变更: - backend: AI 聊天服务、触发器调度、认证增强、WebSocket、调度器最小间隔 - admin-web: ETL 状态页、任务管理、调度配置、登录优化 - miniprogram: 看板页面、聊天集成、UI 组件、导航更新 - etl: DWS 新任务(finance_area_daily/board_cache)、连接器增强 - tenant-admin: 项目初始化 - db: 19 个迁移脚本(etl_feiqiu 11 + zqyy_app 8) - packages/shared: 枚举和工具函数更新 - tools: 数据库工具、报表生成、健康检查 - docs: PRD/架构/部署/合约文档更新 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
57 lines
2.3 KiB
Python
57 lines
2.3 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""区域映射配置 — ETL 和后端共用。
|
||
|
||
将 dim_table.site_table_area_name(物理区域名称)映射到标准 area_code。
|
||
|
||
区域编码体系(9 个值):
|
||
- 7 个具体区域:hallA / hallB / hallC / vip / snooker / mahjong / ktv
|
||
- hall = 台球大厅(hallA + hallB + hallC)
|
||
- all = 所有区域之和
|
||
"""
|
||
from __future__ import annotations
|
||
|
||
# ── 核心映射:area_code → 物理区域名称列表 ──────────────────────────
|
||
AREA_LABEL_MAP: dict[str, list[str]] = {
|
||
"hallA": ["A区"],
|
||
"hallB": ["B区"],
|
||
"hallC": ["C区", "TV台", "美洲豹赛台"],
|
||
"vip": ["VIP包厢"],
|
||
"snooker": ["斯诺克区"],
|
||
"mahjong": ["麻将房", "M7", "M8", "666", "发财"],
|
||
"ktv": ["K包", "k包活动区", "幸会158"],
|
||
}
|
||
|
||
# ── 派生常量 ────────────────────────────────────────────────────────
|
||
SPECIFIC_AREA_CODES: list[str] = list(AREA_LABEL_MAP.keys())
|
||
"""7 个具体区域编码(不含 all / hall)。"""
|
||
|
||
ALL_AREA_CODES: list[str] = ["all", "hall"] + SPECIFIC_AREA_CODES
|
||
"""全部 9 个区域编码。"""
|
||
|
||
# ── 反向映射:物理区域名称 → area_code ──────────────────────────────
|
||
_REVERSE_MAP: dict[str, str] = {
|
||
label: code
|
||
for code, labels in AREA_LABEL_MAP.items()
|
||
for label in labels
|
||
}
|
||
|
||
|
||
# ── 公开函数 ────────────────────────────────────────────────────────
|
||
def resolve_area_code(area_name: str | None) -> str | None:
|
||
"""输入 site_table_area_name,返回对应的 area_code。
|
||
|
||
未匹配返回 None,由调用方(ETL)决定是否记录警告。
|
||
"""
|
||
if area_name is None:
|
||
return None
|
||
return _REVERSE_MAP.get(area_name)
|
||
|
||
|
||
def get_area_labels(area_code: str) -> list[str] | None:
|
||
"""输入 area_code,返回对应的物理区域名称列表。
|
||
|
||
all / hall 不对应具体物理区域,返回 None。
|
||
未知 area_code 同样返回 None。
|
||
"""
|
||
return AREA_LABEL_MAP.get(area_code)
|