This commit is contained in:
Neo
2026-03-15 10:15:02 +08:00
parent 2dd217522c
commit 72bb11b34f
916 changed files with 65306 additions and 16102803 deletions

View File

@@ -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
"""

View File

@@ -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 (

View File

@@ -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])

View File

@@ -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 (