1
This commit is contained in:
@@ -223,9 +223,12 @@ class AssistantOrderContributionTask(BaseDwsTask):
|
||||
def _extract_settlements(
|
||||
self, site_id: int, start_date: date, end_date: date
|
||||
) -> List[Dict[str, Any]]:
|
||||
"""提取台桌结账订单的结算主表
|
||||
"""提取消费结算订单的结算主表
|
||||
|
||||
settle_type=1 为台桌结账,包含台费、酒水食品等金额。
|
||||
settle_type IN (1, 3):
|
||||
- 1 = 台桌结账(含台费、商品、陪打、超休)
|
||||
- 3 = 商城订单(含纯超休/激励课 477 笔、商品、超休+商品混合)
|
||||
settle_type=3 中陪打(pd)为 0、台费为 0,但超休(cx)占全口径 85%+。
|
||||
"""
|
||||
# CHANGE 2026-03-01 | business-day-cutoff 6.2: DATE(pay_time) → 营业日归属表达式
|
||||
cutoff = self.config.get("app.business_day_start_hour", 8)
|
||||
@@ -240,7 +243,7 @@ class AssistantOrderContributionTask(BaseDwsTask):
|
||||
{biz_expr} AS stat_date
|
||||
FROM dwd.dwd_settlement_head
|
||||
WHERE site_id = %s
|
||||
AND settle_type = 1
|
||||
AND settle_type IN (1, 3)
|
||||
AND {biz_expr} >= %s
|
||||
AND {biz_expr} <= %s
|
||||
"""
|
||||
|
||||
@@ -207,8 +207,7 @@ class AssistantProjectTagTask(BaseDwsTask):
|
||||
|
||||
# 全量删除该门店的标签数据后重建
|
||||
delete_sql = "DELETE FROM dws.dws_assistant_project_tag WHERE site_id = %s"
|
||||
self.db.execute(delete_sql, (site_id,))
|
||||
deleted = self.db.cursor.rowcount if hasattr(self.db, "cursor") else 0
|
||||
deleted = self.db.execute(delete_sql, (site_id,))
|
||||
|
||||
insert_sql = """
|
||||
INSERT INTO dws.dws_assistant_project_tag (
|
||||
|
||||
@@ -735,11 +735,14 @@ class BaseDwsTask(BaseTask):
|
||||
|
||||
def get_area_category(self, area_name: Optional[str], table_name: Optional[str] = None) -> Dict[str, str]:
|
||||
"""
|
||||
获取区域分类(支持台桌级精确 > 区域精确 > 模糊 > 兜底)
|
||||
获取区域分类(纯台桌级精确匹配 + 兜底)
|
||||
|
||||
2026-03-09 改为纯台桌级精确映射,去掉 LIKE 模糊匹配和区域级映射。
|
||||
每台桌一行 (area_name, table_name) → category_code。
|
||||
|
||||
Args:
|
||||
area_name: 原始区域名称(dim_table.site_table_area_name)
|
||||
table_name: 台桌名称(dim_table.table_name),用于台桌级细分映射
|
||||
table_name: 台桌名称(dim_table.table_name),必须提供以精确匹配
|
||||
|
||||
Returns:
|
||||
包含 category_code, category_name, display_name, short_name 的字典
|
||||
@@ -766,19 +769,7 @@ class BaseDwsTask(BaseTask):
|
||||
if key in cats and cats[key].get('match_type') == 'EXACT':
|
||||
return _pick(cats[key])
|
||||
|
||||
# 2. 区域级精确匹配(area_name + 空 table_name)
|
||||
key = f"{area_name}\x00"
|
||||
if key in cats and cats[key].get('match_type') == 'EXACT':
|
||||
return _pick(cats[key])
|
||||
|
||||
# 3. 模糊匹配(按优先级,已排序)
|
||||
for k, cat in cats.items():
|
||||
if cat.get('match_type') == 'LIKE':
|
||||
pattern = cat['source_area_name'].replace('%', '')
|
||||
if pattern and pattern in area_name:
|
||||
return _pick(cat)
|
||||
|
||||
# 4. 兜底
|
||||
# 2. 兜底
|
||||
fallback_key = f"DEFAULT\x00"
|
||||
if fallback_key in cats:
|
||||
return _pick(cats[fallback_key])
|
||||
|
||||
@@ -195,8 +195,7 @@ class MemberProjectTagTask(BaseDwsTask):
|
||||
site_id = transformed[0]["site_id"]
|
||||
|
||||
delete_sql = "DELETE FROM dws.dws_member_project_tag WHERE site_id = %s"
|
||||
self.db.execute(delete_sql, (site_id,))
|
||||
deleted = self.db.cursor.rowcount if hasattr(self.db, "cursor") else 0
|
||||
deleted = self.db.execute(delete_sql, (site_id,))
|
||||
|
||||
insert_sql = """
|
||||
INSERT INTO dws.dws_member_project_tag (
|
||||
|
||||
Reference in New Issue
Block a user