Files
Neo-ZQYY/scripts/ops/_tmp_execution_logs.json
Neo b25308c3f4 feat: P1-P3 全栈集成 — 数据库基础 + DWS 扩展 + 小程序鉴权 + 工程化体系
## P1 数据库基础
- zqyy_app: 创建 auth/biz schema、FDW 连接 etl_feiqiu
- etl_feiqiu: 创建 app schema RLS 视图、商品库存预警表
- 清理 assistant_abolish 残留数据

## P2 ETL/DWS 扩展
- 新增 DWS 助教订单贡献度表 (dws.assistant_order_contribution)
- 新增 assistant_order_contribution_task 任务及 RLS 视图
- member_consumption 增加充值字段、assistant_daily 增加处罚字段
- 更新 ODS/DWD/DWS 任务文档及业务规则文档
- 更新 consistency_checker、flow_runner、task_registry 等核心模块

## P3 小程序鉴权系统
- 新增 xcx_auth 路由/schema(微信登录 + JWT)
- 新增 wechat/role/matching/application 服务层
- zqyy_app 鉴权表迁移 + 角色权限种子数据
- auth/dependencies.py 支持小程序 JWT 鉴权

## 文档与审计
- 新增 DOCUMENTATION-MAP 文档导航
- 新增 7 份 BD_Manual 数据库变更文档
- 更新 DDL 基线快照(etl_feiqiu 6 schema + zqyy_app auth)
- 新增全栈集成审计记录、部署检查清单更新
- 新增 BACKLOG 路线图、FDW→Core 迁移计划

## Kiro 工程化
- 新增 5 个 Spec(P1/P2/P3/全栈集成/核心业务)
- 新增审计自动化脚本(agent_on_stop/build_audit_context/compliance_prescan)
- 新增 6 个 Hook(合规检查/会话日志/提交审计等)
- 新增 doc-map steering 文件

## 运维与测试
- 新增 ops 脚本:迁移验证/API 健康检查/ETL 监控/集成报告
- 新增属性测试:test_dws_contribution / test_auth_system
- 清理过期 export 报告文件
- 更新 .gitignore 排除规则
2026-02-26 08:03:53 +08:00

6 lines
122 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"execution_id": "41574845-de7d-4315-8cb8-20e6f5485bf6",
"output_log": "",
"error_log": "[2026-02-24 06:24:14] INFO | etl_billiards | 配置加载完成\n[2026-02-24 06:24:14] INFO | etl_billiards | 门店ID: 2790685415443269\n[2026-02-24 06:24:14] INFO | etl_billiards | 执行模式: Flow 模式\n[2026-02-24 06:24:14] INFO | etl_billiards | Flow 类型: api_full\n[2026-02-24 06:24:14] INFO | etl_billiards | 处理模式: full_window\n[2026-02-24 06:24:14] INFO | etl_billiards | FLOW_API_FULL | 开始执行 Flow: api_full | 开始时间: 2026-02-24 06:24:14\n[2026-02-24 06:24:14] INFO | etl_billiards | Flow api_full: 执行增量 ETL层=['ODS', 'DWD', 'DWS', 'INDEX']\n[2026-02-24 06:24:14] INFO | etl_billiards | 开始运行任务: ['ODS_ASSISTANT_ACCOUNT', 'ODS_ASSISTANT_LEDGER', 'ODS_ASSISTANT_ABOLISH', 'ODS_SETTLEMENT_RECORDS', 'ODS_PAYMENT', 'ODS_REFUND', 'ODS_TABLE_USE', 'ODS_TABLE_FEE_DISCOUNT', 'ODS_TABLES', 'ODS_MEMBER', 'ODS_MEMBER_CARD', 'ODS_MEMBER_BALANCE', 'ODS_RECHARGE_SETTLE', 'ODS_GOODS_CATEGORY', 'ODS_STORE_GOODS', 'ODS_STORE_GOODS_SALES', 'ODS_TENANT_GOODS', 'ODS_PLATFORM_COUPON', 'ODS_GROUP_PACKAGE', 'ODS_GROUP_BUY_REDEMPTION', 'ODS_INVENTORY_STOCK', 'ODS_INVENTORY_CHANGE', 'DWD_LOAD_FROM_ODS', 'DWS_GOODS_STOCK_DAILY', 'DWS_GOODS_STOCK_WEEKLY', 'DWS_GOODS_STOCK_MONTHLY', 'DWS_ASSISTANT_DAILY', 'DWS_ASSISTANT_CUSTOMER', 'DWS_ASSISTANT_SALARY', 'DWS_BUILD_ORDER_SUMMARY', 'DWS_MEMBER_CONSUMPTION', 'DWS_MEMBER_VISIT', 'DWS_FINANCE_DAILY', 'DWS_FINANCE_RECHARGE', 'DWS_FINANCE_INCOME_STRUCTURE', 'DWS_FINANCE_DISCOUNT_DETAIL', 'DWS_ASSISTANT_MONTHLY', 'DWS_ASSISTANT_FINANCE', 'DWS_WINBACK_INDEX', 'DWS_NEWCONV_INDEX', 'DWS_RELATION_INDEX'], run_uuid=0af5c41826e14728adbf974283f438bb\n[2026-02-24 06:24:14] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_ASSISTANT_ACCOUNT\\ODS_ASSISTANT_ACCOUNT-8983-20260224-062414\n[2026-02-24 06:24:14] INFO | etl_billiards | 开始执行ODS_ASSISTANT_ACCOUNT (ODS)\n[2026-02-24 06:24:14] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:24:15] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:24:16] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:24:16] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:24:17] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:24:17] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:24:18] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:24:18] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:24:20] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:24:20] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT ODS 任务完成: {'fetched': 276, 'inserted': 0, 'updated': 276, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:24:20] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_ASSISTANT_LEDGER\\ODS_ASSISTANT_LEDGER-8984-20260224-062420\n[2026-02-24 06:24:20] INFO | etl_billiards | 开始执行ODS_ASSISTANT_LEDGER (ODS)\n[2026-02-24 06:24:20] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:24:20] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:24:23] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: early-cutoff 保护生效,软删除窗口起点从 2025-10-31 22:00:00+08:00 收窄至 2025-10-31 22:23:40+08:00\n[2026-02-24 06:24:23] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: late-cutoff 保护生效,软删除窗口终点从 2025-11-30 22:00:00+08:00 收窄至 2025-11-30 21:01:55+08:00\n[2026-02-24 06:24:24] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:24:24] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:24:33] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: early-cutoff 保护生效,软删除窗口起点从 2025-11-30 22:00:00+08:00 收窄至 2025-11-30 22:29:58+08:00\n[2026-02-24 06:24:33] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: late-cutoff 保护生效,软删除窗口终点从 2025-12-30 22:00:00+08:00 收窄至 2025-12-30 21:26:01+08:00\n[2026-02-24 06:24:33] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:24:33] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:24:41] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: early-cutoff 保护生效,软删除窗口起点从 2025-12-30 22:00:00+08:00 收窄至 2025-12-30 22:48:21+08:00\n[2026-02-24 06:24:41] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: late-cutoff 保护生效,软删除窗口终点从 2026-01-29 22:00:00+08:00 收窄至 2026-01-29 21:58:25+08:00\n[2026-02-24 06:24:41] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:24:41] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:24:44] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: early-cutoff 保护生效,软删除窗口起点从 2026-01-29 22:00:00+08:00 收窄至 2026-01-29 22:07:25+08:00\n[2026-02-24 06:24:44] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: late-cutoff 保护生效,软删除窗口终点从 2026-02-20 02:00:00+08:00 收窄至 2026-02-13 04:49:48+08:00\n[2026-02-24 06:24:44] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:24:44] INFO | etl_billiards | ODS_ASSISTANT_LEDGER ODS 任务完成: {'fetched': 2210, 'inserted': 148, 'updated': 2210, 'skipped': 0, 'errors': 0, 'deleted': 148}\n[2026-02-24 06:24:44] WARNING | etl_billiards | 任务 ODS_ASSISTANT_ABOLISH 未启用或不存在\n[2026-02-24 06:24:45] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_SETTLEMENT_RECORDS\\ODS_SETTLEMENT_RECORDS-8985-20260224-062445\n[2026-02-24 06:24:45] INFO | etl_billiards | 开始执行ODS_SETTLEMENT_RECORDS (ODS)\n[2026-02-24 06:24:45] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:24:45] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:24:54] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:24:54] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:25:33] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:25:33] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:26:09] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:26:09] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:26:23] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:26:23] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS ODS 任务完成: {'fetched': 10051, 'inserted': 0, 'updated': 10051, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:26:24] INFO | etl_billiards | ODS_PAYMENT: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_PAYMENT\\ODS_PAYMENT-8986-20260224-062624\n[2026-02-24 06:26:24] INFO | etl_billiards | 开始执行ODS_PAYMENT (ODS)\n[2026-02-24 06:26:24] INFO | etl_billiards | ODS_PAYMENT: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:26:24] INFO | etl_billiards | ODS_PAYMENT: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:27:23] INFO | etl_billiards | ODS_PAYMENT: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:27:23] INFO | etl_billiards | ODS_PAYMENT: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:28:21] INFO | etl_billiards | ODS_PAYMENT: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:28:21] INFO | etl_billiards | ODS_PAYMENT: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:29:19] INFO | etl_billiards | ODS_PAYMENT: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:29:19] INFO | etl_billiards | ODS_PAYMENT: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:30:14] INFO | etl_billiards | ODS_PAYMENT: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:30:14] INFO | etl_billiards | ODS_PAYMENT ODS 任务完成: {'fetched': 41172, 'inserted': 0, 'updated': 41172, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:30:15] INFO | etl_billiards | ODS_REFUND: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_REFUND\\ODS_REFUND-8987-20260224-063015\n[2026-02-24 06:30:15] INFO | etl_billiards | 开始执行ODS_REFUND (ODS)\n[2026-02-24 06:30:15] INFO | etl_billiards | ODS_REFUND: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:30:15] INFO | etl_billiards | ODS_REFUND: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:30:16] INFO | etl_billiards | ODS_REFUND: early-cutoff 保护生效,软删除窗口起点从 2025-10-31 22:00:00+08:00 收窄至 2025-11-23 15:59:24+08:00\n[2026-02-24 06:30:16] INFO | etl_billiards | ODS_REFUND: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:30:16] INFO | etl_billiards | ODS_REFUND: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:30:16] INFO | etl_billiards | ODS_REFUND: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:30:16] INFO | etl_billiards | ODS_REFUND: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:30:17] INFO | etl_billiards | ODS_REFUND: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:30:17] INFO | etl_billiards | ODS_REFUND: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:30:17] INFO | etl_billiards | ODS_REFUND: late-cutoff 保护生效,软删除窗口终点从 2026-02-20 02:00:00+08:00 收窄至 2026-02-10 23:41:06+08:00\n[2026-02-24 06:30:17] INFO | etl_billiards | ODS_REFUND: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:30:17] INFO | etl_billiards | ODS_REFUND ODS 任务完成: {'fetched': 112, 'inserted': 0, 'updated': 112, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:30:18] INFO | etl_billiards | ODS_TABLE_USE: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_TABLE_USE\\ODS_TABLE_USE-8988-20260224-063018\n[2026-02-24 06:30:18] INFO | etl_billiards | 开始执行ODS_TABLE_USE (ODS)\n[2026-02-24 06:30:18] INFO | etl_billiards | ODS_TABLE_USE: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:30:18] INFO | etl_billiards | ODS_TABLE_USE: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:31:27] INFO | etl_billiards | ODS_TABLE_USE: early-cutoff 保护生效,软删除窗口起点从 2025-10-31 22:00:00+08:00 收窄至 2025-11-23 11:36:36+08:00\n[2026-02-24 06:31:27] INFO | etl_billiards | ODS_TABLE_USE: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:31:27] INFO | etl_billiards | ODS_TABLE_USE: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:32:37] INFO | etl_billiards | ODS_TABLE_USE: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:32:37] INFO | etl_billiards | ODS_TABLE_USE: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:33:49] INFO | etl_billiards | ODS_TABLE_USE: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:33:49] INFO | etl_billiards | ODS_TABLE_USE: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:34:53] INFO | etl_billiards | ODS_TABLE_USE: late-cutoff 保护生效,软删除窗口终点从 2026-02-20 02:00:00+08:00 收窄至 2026-02-14 00:16:27+08:00\n[2026-02-24 06:34:53] INFO | etl_billiards | ODS_TABLE_USE: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:34:53] INFO | etl_billiards | ODS_TABLE_USE ODS 任务完成: {'fetched': 35304, 'inserted': 0, 'updated': 35304, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:34:53] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_TABLE_FEE_DISCOUNT\\ODS_TABLE_FEE_DISCOUNT-8989-20260224-063453\n[2026-02-24 06:34:53] INFO | etl_billiards | 开始执行ODS_TABLE_FEE_DISCOUNT (ODS)\n[2026-02-24 06:34:53] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:34:54] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:35:07] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: early-cutoff 保护生效,软删除窗口起点从 2025-10-31 22:00:00+08:00 收窄至 2025-11-23 17:48:17+08:00\n[2026-02-24 06:35:08] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:35:08] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:35:21] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:35:21] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:35:34] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:35:34] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:35:48] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: late-cutoff 保护生效,软删除窗口终点从 2026-02-20 02:00:00+08:00 收窄至 2026-02-13 21:56:07+08:00\n[2026-02-24 06:35:48] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:35:48] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT ODS 任务完成: {'fetched': 6212, 'inserted': 0, 'updated': 6212, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:35:48] INFO | etl_billiards | ODS_TABLES: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_TABLES\\ODS_TABLES-8990-20260224-063548\n[2026-02-24 06:35:48] INFO | etl_billiards | 开始执行ODS_TABLES (ODS)\n[2026-02-24 06:35:48] INFO | etl_billiards | ODS_TABLES: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:35:49] INFO | etl_billiards | ODS_TABLES: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:35:49] INFO | etl_billiards | ODS_TABLES: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:35:49] INFO | etl_billiards | ODS_TABLES: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:35:50] INFO | etl_billiards | ODS_TABLES: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:35:50] INFO | etl_billiards | ODS_TABLES: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:35:50] INFO | etl_billiards | ODS_TABLES: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:35:50] INFO | etl_billiards | ODS_TABLES: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:35:51] INFO | etl_billiards | ODS_TABLES: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:35:51] INFO | etl_billiards | ODS_TABLES ODS 任务完成: {'fetched': 296, 'inserted': 0, 'updated': 296, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:35:52] INFO | etl_billiards | ODS_MEMBER: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_MEMBER\\ODS_MEMBER-8991-20260224-063552\n[2026-02-24 06:35:52] INFO | etl_billiards | 开始执行ODS_MEMBER (ODS)\n[2026-02-24 06:35:52] INFO | etl_billiards | ODS_MEMBER: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:35:52] INFO | etl_billiards | ODS_MEMBER: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:35:55] INFO | etl_billiards | ODS_MEMBER: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:35:55] INFO | etl_billiards | ODS_MEMBER: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:35:58] INFO | etl_billiards | ODS_MEMBER: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:35:58] INFO | etl_billiards | ODS_MEMBER: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:36:01] INFO | etl_billiards | ODS_MEMBER: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:36:01] INFO | etl_billiards | ODS_MEMBER: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:36:03] INFO | etl_billiards | ODS_MEMBER: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:36:03] INFO | etl_billiards | ODS_MEMBER ODS 任务完成: {'fetched': 2228, 'inserted': 0, 'updated': 2228, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:36:04] INFO | etl_billiards | ODS_MEMBER_CARD: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_MEMBER_CARD\\ODS_MEMBER_CARD-8992-20260224-063604\n[2026-02-24 06:36:04] INFO | etl_billiards | 开始执行ODS_MEMBER_CARD (ODS)\n[2026-02-24 06:36:04] INFO | etl_billiards | ODS_MEMBER_CARD: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:36:04] INFO | etl_billiards | ODS_MEMBER_CARD: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:36:11] INFO | etl_billiards | ODS_MEMBER_CARD: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:36:11] INFO | etl_billiards | ODS_MEMBER_CARD: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:36:17] INFO | etl_billiards | ODS_MEMBER_CARD: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:36:17] INFO | etl_billiards | ODS_MEMBER_CARD: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:36:24] INFO | etl_billiards | ODS_MEMBER_CARD: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:36:24] INFO | etl_billiards | ODS_MEMBER_CARD: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:36:31] INFO | etl_billiards | ODS_MEMBER_CARD: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:36:31] INFO | etl_billiards | ODS_MEMBER_CARD ODS 任务完成: {'fetched': 3784, 'inserted': 0, 'updated': 3784, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:36:31] INFO | etl_billiards | ODS_MEMBER_BALANCE: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_MEMBER_BALANCE\\ODS_MEMBER_BALANCE-8993-20260224-063631\n[2026-02-24 06:36:31] INFO | etl_billiards | 开始执行ODS_MEMBER_BALANCE (ODS)\n[2026-02-24 06:36:31] INFO | etl_billiards | ODS_MEMBER_BALANCE: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:36:31] INFO | etl_billiards | ODS_MEMBER_BALANCE: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:37:00] INFO | etl_billiards | ODS_MEMBER_BALANCE: early-cutoff 保护生效,软删除窗口起点从 2025-10-31 22:00:00+08:00 收窄至 2025-11-23 15:18:37+08:00\n[2026-02-24 06:37:00] INFO | etl_billiards | ODS_MEMBER_BALANCE: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:37:00] INFO | etl_billiards | ODS_MEMBER_BALANCE: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:37:27] INFO | etl_billiards | ODS_MEMBER_BALANCE: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:37:27] INFO | etl_billiards | ODS_MEMBER_BALANCE: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:37:52] INFO | etl_billiards | ODS_MEMBER_BALANCE: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:37:52] INFO | etl_billiards | ODS_MEMBER_BALANCE: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:38:18] INFO | etl_billiards | ODS_MEMBER_BALANCE: late-cutoff 保护生效,软删除窗口终点从 2026-02-20 02:00:00+08:00 收窄至 2026-02-14 00:01:01+08:00\n[2026-02-24 06:38:18] INFO | etl_billiards | ODS_MEMBER_BALANCE: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:38:18] INFO | etl_billiards | ODS_MEMBER_BALANCE ODS 任务完成: {'fetched': 8360, 'inserted': 0, 'updated': 8360, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:38:19] INFO | etl_billiards | ODS_RECHARGE_SETTLE: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_RECHARGE_SETTLE\\ODS_RECHARGE_SETTLE-8994-20260224-063819\n[2026-02-24 06:38:19] INFO | etl_billiards | 开始执行ODS_RECHARGE_SETTLE (ODS)\n[2026-02-24 06:38:19] INFO | etl_billiards | ODS_RECHARGE_SETTLE: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:38:19] INFO | etl_billiards | ODS_RECHARGE_SETTLE: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:38:20] INFO | etl_billiards | ODS_RECHARGE_SETTLE: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:38:20] INFO | etl_billiards | ODS_RECHARGE_SETTLE: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:38:21] INFO | etl_billiards | ODS_RECHARGE_SETTLE: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:38:21] INFO | etl_billiards | ODS_RECHARGE_SETTLE: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:38:22] INFO | etl_billiards | ODS_RECHARGE_SETTLE: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:38:22] INFO | etl_billiards | ODS_RECHARGE_SETTLE: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:38:22] INFO | etl_billiards | ODS_RECHARGE_SETTLE: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:38:22] INFO | etl_billiards | ODS_RECHARGE_SETTLE ODS 任务完成: {'fetched': 177, 'inserted': 0, 'updated': 177, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:38:23] INFO | etl_billiards | ODS_GOODS_CATEGORY: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_GOODS_CATEGORY\\ODS_GOODS_CATEGORY-8995-20260224-063823\n[2026-02-24 06:38:23] INFO | etl_billiards | 开始执行ODS_GOODS_CATEGORY (ODS)\n[2026-02-24 06:38:23] INFO | etl_billiards | ODS_GOODS_CATEGORY: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:38:23] INFO | etl_billiards | ODS_GOODS_CATEGORY: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:38:23] INFO | etl_billiards | ODS_GOODS_CATEGORY: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:38:23] INFO | etl_billiards | ODS_GOODS_CATEGORY: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:38:23] INFO | etl_billiards | ODS_GOODS_CATEGORY: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:38:23] INFO | etl_billiards | ODS_GOODS_CATEGORY: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:38:24] INFO | etl_billiards | ODS_GOODS_CATEGORY: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:38:24] INFO | etl_billiards | ODS_GOODS_CATEGORY: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:38:24] INFO | etl_billiards | ODS_GOODS_CATEGORY: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:38:24] INFO | etl_billiards | ODS_GOODS_CATEGORY ODS 任务完成: {'fetched': 36, 'inserted': 0, 'updated': 36, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:38:25] INFO | etl_billiards | ODS_STORE_GOODS: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_STORE_GOODS\\ODS_STORE_GOODS-8996-20260224-063825\n[2026-02-24 06:38:25] INFO | etl_billiards | 开始执行ODS_STORE_GOODS (ODS)\n[2026-02-24 06:38:25] INFO | etl_billiards | ODS_STORE_GOODS: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:38:25] INFO | etl_billiards | ODS_STORE_GOODS: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:38:26] INFO | etl_billiards | ODS_STORE_GOODS: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:38:26] INFO | etl_billiards | ODS_STORE_GOODS: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:38:27] INFO | etl_billiards | ODS_STORE_GOODS: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:38:27] INFO | etl_billiards | ODS_STORE_GOODS: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:38:28] INFO | etl_billiards | ODS_STORE_GOODS: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:38:28] INFO | etl_billiards | ODS_STORE_GOODS: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:38:29] INFO | etl_billiards | ODS_STORE_GOODS: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:38:29] INFO | etl_billiards | ODS_STORE_GOODS ODS 任务完成: {'fetched': 692, 'inserted': 173, 'updated': 519, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:38:29] INFO | etl_billiards | ODS_STORE_GOODS_SALES: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_STORE_GOODS_SALES\\ODS_STORE_GOODS_SALES-8997-20260224-063829\n[2026-02-24 06:38:29] INFO | etl_billiards | 开始执行ODS_STORE_GOODS_SALES (ODS)\n[2026-02-24 06:38:29] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:38:29] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_STORE_GOODS_SALES ODS 任务完成: {'fetched': 0, 'inserted': 0, 'updated': 0, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_TENANT_GOODS: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_TENANT_GOODS\\ODS_TENANT_GOODS-8998-20260224-063830\n[2026-02-24 06:38:30] INFO | etl_billiards | 开始执行ODS_TENANT_GOODS (ODS)\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_TENANT_GOODS: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_TENANT_GOODS: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:38:32] INFO | etl_billiards | ODS_TENANT_GOODS: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:38:32] INFO | etl_billiards | ODS_TENANT_GOODS: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:38:33] INFO | etl_billiards | ODS_TENANT_GOODS: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:38:33] INFO | etl_billiards | ODS_TENANT_GOODS: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:38:34] INFO | etl_billiards | ODS_TENANT_GOODS: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:38:34] INFO | etl_billiards | ODS_TENANT_GOODS: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:38:34] INFO | etl_billiards | ODS_TENANT_GOODS: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:38:34] INFO | etl_billiards | ODS_TENANT_GOODS ODS 任务完成: {'fetched': 696, 'inserted': 0, 'updated': 696, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:38:35] INFO | etl_billiards | ODS_PLATFORM_COUPON: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_PLATFORM_COUPON\\ODS_PLATFORM_COUPON-8999-20260224-063835\n[2026-02-24 06:38:35] INFO | etl_billiards | 开始执行ODS_PLATFORM_COUPON (ODS)\n[2026-02-24 06:38:35] INFO | etl_billiards | ODS_PLATFORM_COUPON: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:38:35] INFO | etl_billiards | ODS_PLATFORM_COUPON: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:40:40] INFO | etl_billiards | ODS_PLATFORM_COUPON: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:40:40] INFO | etl_billiards | ODS_PLATFORM_COUPON: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:42:44] INFO | etl_billiards | ODS_PLATFORM_COUPON: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:42:44] INFO | etl_billiards | ODS_PLATFORM_COUPON: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:44:51] INFO | etl_billiards | ODS_PLATFORM_COUPON: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:44:51] INFO | etl_billiards | ODS_PLATFORM_COUPON: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:46:54] INFO | etl_billiards | ODS_PLATFORM_COUPON: late-cutoff 保护生效,软删除窗口终点从 2026-02-20 02:00:00+08:00 收窄至 2026-02-13 22:59:56+08:00\n[2026-02-24 06:46:54] INFO | etl_billiards | ODS_PLATFORM_COUPON: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:46:54] INFO | etl_billiards | ODS_PLATFORM_COUPON ODS 任务完成: {'fetched': 73244, 'inserted': 0, 'updated': 73244, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:46:54] INFO | etl_billiards | ODS_GROUP_PACKAGE: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_GROUP_PACKAGE\\ODS_GROUP_PACKAGE-9000-20260224-064654\n[2026-02-24 06:46:54] INFO | etl_billiards | 开始执行ODS_GROUP_PACKAGE (ODS)\n[2026-02-24 06:46:54] INFO | etl_billiards | ODS_GROUP_PACKAGE: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:46:55] INFO | etl_billiards | ODS_GROUP_PACKAGE: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:46:55] INFO | etl_billiards | ODS_GROUP_PACKAGE: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:46:55] INFO | etl_billiards | ODS_GROUP_PACKAGE: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:46:56] INFO | etl_billiards | ODS_GROUP_PACKAGE: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:46:56] INFO | etl_billiards | ODS_GROUP_PACKAGE: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:46:56] INFO | etl_billiards | ODS_GROUP_PACKAGE: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:46:56] INFO | etl_billiards | ODS_GROUP_PACKAGE: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:46:57] INFO | etl_billiards | ODS_GROUP_PACKAGE: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:46:57] INFO | etl_billiards | ODS_GROUP_PACKAGE ODS 任务完成: {'fetched': 72, 'inserted': 0, 'updated': 72, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:46:57] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_GROUP_BUY_REDEMPTION\\ODS_GROUP_BUY_REDEMPTION-9001-20260224-064657\n[2026-02-24 06:46:57] INFO | etl_billiards | 开始执行ODS_GROUP_BUY_REDEMPTION (ODS)\n[2026-02-24 06:46:57] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:46:57] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:47:57] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: early-cutoff 保护生效,软删除窗口起点从 2025-10-31 22:00:00+08:00 收窄至 2025-11-23 11:36:36+08:00\n[2026-02-24 06:47:57] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:47:57] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:48:58] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:48:58] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:49:52] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:49:52] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:50:46] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: late-cutoff 保护生效,软删除窗口终点从 2026-02-20 02:00:00+08:00 收窄至 2026-02-14 00:16:27+08:00\n[2026-02-24 06:50:46] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:50:46] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION ODS 任务完成: {'fetched': 28188, 'inserted': 0, 'updated': 28188, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:50:46] INFO | etl_billiards | ODS_INVENTORY_STOCK: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_INVENTORY_STOCK\\ODS_INVENTORY_STOCK-9002-20260224-065046\n[2026-02-24 06:50:46] INFO | etl_billiards | 开始执行ODS_INVENTORY_STOCK (ODS)\n[2026-02-24 06:50:46] INFO | etl_billiards | ODS_INVENTORY_STOCK: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:50:47] INFO | etl_billiards | ODS_INVENTORY_STOCK: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:50:50] INFO | etl_billiards | ODS_INVENTORY_STOCK: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:50:50] INFO | etl_billiards | ODS_INVENTORY_STOCK: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:50:51] INFO | etl_billiards | ODS_INVENTORY_STOCK: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:50:51] INFO | etl_billiards | ODS_INVENTORY_STOCK: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:50:53] INFO | etl_billiards | ODS_INVENTORY_STOCK: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:50:53] INFO | etl_billiards | ODS_INVENTORY_STOCK: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:50:54] INFO | etl_billiards | ODS_INVENTORY_STOCK: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:50:54] INFO | etl_billiards | ODS_INVENTORY_STOCK ODS 任务完成: {'fetched': 865, 'inserted': 0, 'updated': 865, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:50:54] INFO | etl_billiards | ODS_INVENTORY_CHANGE: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_INVENTORY_CHANGE\\ODS_INVENTORY_CHANGE-9003-20260224-065054\n[2026-02-24 06:50:54] INFO | etl_billiards | 开始执行ODS_INVENTORY_CHANGE (ODS)\n[2026-02-24 06:50:54] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:50:54] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:51:01] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:51:01] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:51:17] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:51:17] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:51:32] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:51:32] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:51:39] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:51:39] INFO | etl_billiards | ODS_INVENTORY_CHANGE ODS 任务完成: {'fetched': 13867, 'inserted': 0, 'updated': 13867, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:51:40] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWD_LOAD_FROM_ODS\\DWD_LOAD_FROM_ODS-9004-20260224-065140\n[2026-02-24 06:51:40] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 抓取完成,文件=None记录数=0\n[2026-02-24 06:51:40] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWD_LOAD_FROM_ODS\\DWD_LOAD_FROM_ODS-9004-20260224-065140\n[2026-02-24 06:51:40] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:51:40] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:51:40] INFO | etl_billiards | DWD 装载开始dwd.dim_site <= ods.table_fee_transactions\n[2026-02-24 06:51:41] INFO | etl_billiards | DWD 装载完成dwd.dim_site用时 0.92s\n[2026-02-24 06:51:41] INFO | etl_billiards | DWD 装载开始dwd.dim_site_ex <= ods.table_fee_transactions\n[2026-02-24 06:51:42] INFO | etl_billiards | DWD 装载完成dwd.dim_site_ex用时 1.46s\n[2026-02-24 06:51:42] INFO | etl_billiards | DWD 装载开始dwd.dim_table <= ods.site_tables_master\n[2026-02-24 06:51:43] INFO | etl_billiards | DWD 装载完成dwd.dim_table用时 0.70s\n[2026-02-24 06:51:43] INFO | etl_billiards | DWD 装载开始dwd.dim_table_ex <= ods.site_tables_master\n[2026-02-24 06:51:44] INFO | etl_billiards | DWD 装载完成dwd.dim_table_ex用时 0.71s\n[2026-02-24 06:51:44] INFO | etl_billiards | DWD 装载开始dwd.dim_assistant <= ods.assistant_accounts_master\n[2026-02-24 06:51:44] INFO | etl_billiards | DWD 装载完成dwd.dim_assistant用时 0.69s\n[2026-02-24 06:51:44] INFO | etl_billiards | DWD 装载开始dwd.dim_assistant_ex <= ods.assistant_accounts_master\n[2026-02-24 06:51:45] INFO | etl_billiards | DWD 装载完成dwd.dim_assistant_ex用时 0.71s\n[2026-02-24 06:51:45] INFO | etl_billiards | DWD 装载开始dwd.dim_member <= ods.member_profiles\n[2026-02-24 06:51:46] INFO | etl_billiards | DWD 装载完成dwd.dim_member用时 1.37s\n[2026-02-24 06:51:46] INFO | etl_billiards | DWD 装载开始dwd.dim_member_ex <= ods.member_profiles\n[2026-02-24 06:51:47] INFO | etl_billiards | DWD 装载完成dwd.dim_member_ex用时 0.90s\n[2026-02-24 06:51:47] INFO | etl_billiards | DWD 装载开始dwd.dim_member_card_account <= ods.member_stored_value_cards\n[2026-02-24 06:51:49] INFO | etl_billiards | DWD 装载完成dwd.dim_member_card_account用时 1.30s\n[2026-02-24 06:51:49] INFO | etl_billiards | DWD 装载开始dwd.dim_member_card_account_ex <= ods.member_stored_value_cards\n[2026-02-24 06:51:50] INFO | etl_billiards | DWD 装载完成dwd.dim_member_card_account_ex用时 1.81s\n[2026-02-24 06:51:50] INFO | etl_billiards | DWD 装载开始dwd.dim_tenant_goods <= ods.tenant_goods_master\n[2026-02-24 06:51:51] INFO | etl_billiards | DWD 装载完成dwd.dim_tenant_goods用时 0.74s\n[2026-02-24 06:51:51] INFO | etl_billiards | DWD 装载开始dwd.dim_tenant_goods_ex <= ods.tenant_goods_master\n[2026-02-24 06:51:52] INFO | etl_billiards | DWD 装载完成dwd.dim_tenant_goods_ex用时 0.76s\n[2026-02-24 06:51:52] INFO | etl_billiards | DWD 装载开始dwd.dim_store_goods <= ods.store_goods_master\n[2026-02-24 06:51:53] INFO | etl_billiards | DWD 装载完成dwd.dim_store_goods用时 0.77s\n[2026-02-24 06:51:53] INFO | etl_billiards | DWD 装载开始dwd.dim_store_goods_ex <= ods.store_goods_master\n[2026-02-24 06:51:53] INFO | etl_billiards | DWD 装载完成dwd.dim_store_goods_ex用时 0.76s\n[2026-02-24 06:51:53] INFO | etl_billiards | DWD 装载开始dwd.dim_goods_category <= ods.stock_goods_category_tree\n[2026-02-24 06:51:54] INFO | etl_billiards | DWD 装载完成dwd.dim_goods_category用时 0.69s\n[2026-02-24 06:51:54] INFO | etl_billiards | DWD 装载开始dwd.dim_groupbuy_package <= ods.group_buy_packages\n[2026-02-24 06:51:56] INFO | etl_billiards | DWD 装载完成dwd.dim_groupbuy_package用时 1.66s\n[2026-02-24 06:51:56] INFO | etl_billiards | DWD 装载开始dwd.dim_groupbuy_package_ex <= ods.group_buy_packages\n[2026-02-24 06:51:57] INFO | etl_billiards | DWD 装载完成dwd.dim_groupbuy_package_ex用时 0.76s\n[2026-02-24 06:51:57] INFO | etl_billiards | DWD 装载开始dwd.dwd_settlement_head <= ods.settlement_records\n[2026-02-24 06:51:57] INFO | etl_billiards | DWD 装载完成dwd.dwd_settlement_head用时 0.53s\n[2026-02-24 06:51:57] INFO | etl_billiards | DWD 装载开始dwd.dwd_settlement_head_ex <= ods.settlement_records\n[2026-02-24 06:51:58] INFO | etl_billiards | DWD 装载完成dwd.dwd_settlement_head_ex用时 0.52s\n[2026-02-24 06:51:58] INFO | etl_billiards | DWD 装载开始dwd.dwd_table_fee_log <= ods.table_fee_transactions\n[2026-02-24 06:51:58] INFO | etl_billiards | DWD 装载完成dwd.dwd_table_fee_log用时 0.52s\n[2026-02-24 06:51:58] INFO | etl_billiards | DWD 装载开始dwd.dwd_table_fee_log_ex <= ods.table_fee_transactions\n[2026-02-24 06:51:59] INFO | etl_billiards | DWD 装载完成dwd.dwd_table_fee_log_ex用时 0.71s\n[2026-02-24 06:51:59] INFO | etl_billiards | DWD 装载开始dwd.dwd_table_fee_adjust <= ods.table_fee_discount_records\n[2026-02-24 06:51:59] INFO | etl_billiards | DWD 装载完成dwd.dwd_table_fee_adjust用时 0.54s\n[2026-02-24 06:51:59] INFO | etl_billiards | DWD 装载开始dwd.dwd_table_fee_adjust_ex <= ods.table_fee_discount_records\n[2026-02-24 06:52:00] INFO | etl_billiards | DWD 装载完成dwd.dwd_table_fee_adjust_ex用时 0.51s\n[2026-02-24 06:52:00] INFO | etl_billiards | DWD 装载开始dwd.dwd_store_goods_sale <= ods.store_goods_sales_records\n[2026-02-24 06:52:00] INFO | etl_billiards | DWD 装载完成dwd.dwd_store_goods_sale用时 0.51s\n[2026-02-24 06:52:00] INFO | etl_billiards | DWD 装载开始dwd.dwd_store_goods_sale_ex <= ods.store_goods_sales_records\n[2026-02-24 06:52:01] INFO | etl_billiards | DWD 装载完成dwd.dwd_store_goods_sale_ex用时 0.51s\n[2026-02-24 06:52:01] INFO | etl_billiards | DWD 装载开始dwd.dwd_assistant_service_log <= ods.assistant_service_records\n[2026-02-24 06:52:01] INFO | etl_billiards | DWD 装载完成dwd.dwd_assistant_service_log用时 0.52s\n[2026-02-24 06:52:01] INFO | etl_billiards | DWD 装载开始dwd.dwd_assistant_service_log_ex <= ods.assistant_service_records\n[2026-02-24 06:52:02] INFO | etl_billiards | DWD 装载完成dwd.dwd_assistant_service_log_ex用时 0.52s\n[2026-02-24 06:52:02] INFO | etl_billiards | DWD 装载开始dwd.dwd_member_balance_change <= ods.member_balance_changes\n[2026-02-24 06:52:02] INFO | etl_billiards | DWD 装载完成dwd.dwd_member_balance_change用时 0.52s\n[2026-02-24 06:52:02] INFO | etl_billiards | DWD 装载开始dwd.dwd_member_balance_change_ex <= ods.member_balance_changes\n[2026-02-24 06:52:03] INFO | etl_billiards | DWD 装载完成dwd.dwd_member_balance_change_ex用时 0.52s\n[2026-02-24 06:52:03] INFO | etl_billiards | DWD 装载开始dwd.dwd_groupbuy_redemption <= ods.group_buy_redemption_records\n[2026-02-24 06:52:03] INFO | etl_billiards | DWD 装载完成dwd.dwd_groupbuy_redemption用时 0.53s\n[2026-02-24 06:52:03] INFO | etl_billiards | DWD 装载开始dwd.dwd_groupbuy_redemption_ex <= ods.group_buy_redemption_records\n[2026-02-24 06:52:04] INFO | etl_billiards | DWD 装载完成dwd.dwd_groupbuy_redemption_ex用时 0.51s\n[2026-02-24 06:52:04] INFO | etl_billiards | DWD 装载开始dwd.dwd_platform_coupon_redemption <= ods.platform_coupon_redemption_records\n[2026-02-24 06:52:05] INFO | etl_billiards | DWD 装载完成dwd.dwd_platform_coupon_redemption用时 0.52s\n[2026-02-24 06:52:05] INFO | etl_billiards | DWD 装载开始dwd.dwd_platform_coupon_redemption_ex <= ods.platform_coupon_redemption_records\n[2026-02-24 06:52:05] INFO | etl_billiards | DWD 装载完成dwd.dwd_platform_coupon_redemption_ex用时 0.51s\n[2026-02-24 06:52:05] INFO | etl_billiards | DWD 装载开始dwd.dwd_recharge_order <= ods.recharge_settlements\n[2026-02-24 06:52:06] INFO | etl_billiards | DWD 装载完成dwd.dwd_recharge_order用时 0.52s\n[2026-02-24 06:52:06] INFO | etl_billiards | DWD 装载开始dwd.dwd_recharge_order_ex <= ods.recharge_settlements\n[2026-02-24 06:52:06] INFO | etl_billiards | DWD 装载完成dwd.dwd_recharge_order_ex用时 0.54s\n[2026-02-24 06:52:06] INFO | etl_billiards | DWD 装载开始dwd.dwd_payment <= ods.payment_transactions\n[2026-02-24 06:52:07] INFO | etl_billiards | DWD 装载完成dwd.dwd_payment用时 0.51s\n[2026-02-24 06:52:07] INFO | etl_billiards | DWD 装载开始dwd.dwd_refund <= ods.refund_transactions\n[2026-02-24 06:52:07] INFO | etl_billiards | DWD 装载完成dwd.dwd_refund用时 0.59s\n[2026-02-24 06:52:07] INFO | etl_billiards | DWD 装载开始dwd.dwd_refund_ex <= ods.refund_transactions\n[2026-02-24 06:52:08] INFO | etl_billiards | DWD 装载完成dwd.dwd_refund_ex用时 0.56s\n[2026-02-24 06:52:08] INFO | etl_billiards | DWD 装载开始dwd.dwd_goods_stock_summary <= ods.goods_stock_summary\n[2026-02-24 06:52:08] INFO | etl_billiards | DWD 装载完成dwd.dwd_goods_stock_summary用时 0.52s\n[2026-02-24 06:52:08] INFO | etl_billiards | DWD 装载开始dwd.dwd_goods_stock_movement <= ods.goods_stock_movements\n[2026-02-24 06:52:09] INFO | etl_billiards | DWD 装载完成dwd.dwd_goods_stock_movement用时 0.51s\n[2026-02-24 06:52:09] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:52:09] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:52:09] INFO | etl_billiards | DWD 装载开始dwd.dim_site <= ods.table_fee_transactions\n[2026-02-24 06:52:10] INFO | etl_billiards | DWD 装载完成dwd.dim_site用时 0.94s\n[2026-02-24 06:52:10] INFO | etl_billiards | DWD 装载开始dwd.dim_site_ex <= ods.table_fee_transactions\n[2026-02-24 06:52:11] INFO | etl_billiards | DWD 装载完成dwd.dim_site_ex用时 1.05s\n[2026-02-24 06:52:11] INFO | etl_billiards | DWD 装载开始dwd.dim_table <= ods.site_tables_master\n[2026-02-24 06:52:11] INFO | etl_billiards | DWD 装载完成dwd.dim_table用时 0.68s\n[2026-02-24 06:52:11] INFO | etl_billiards | DWD 装载开始dwd.dim_table_ex <= ods.site_tables_master\n[2026-02-24 06:52:12] INFO | etl_billiards | DWD 装载完成dwd.dim_table_ex用时 0.68s\n[2026-02-24 06:52:12] INFO | etl_billiards | DWD 装载开始dwd.dim_assistant <= ods.assistant_accounts_master\n[2026-02-24 06:52:13] INFO | etl_billiards | DWD 装载完成dwd.dim_assistant用时 0.68s\n[2026-02-24 06:52:13] INFO | etl_billiards | DWD 装载开始dwd.dim_assistant_ex <= ods.assistant_accounts_master\n[2026-02-24 06:52:14] INFO | etl_billiards | DWD 装载完成dwd.dim_assistant_ex用时 0.71s\n[2026-02-24 06:52:14] INFO | etl_billiards | DWD 装载开始dwd.dim_member <= ods.member_profiles\n[2026-02-24 06:52:14] INFO | etl_billiards | DWD 装载完成dwd.dim_member用时 0.91s\n[2026-02-24 06:52:14] INFO | etl_billiards | DWD 装载开始dwd.dim_member_ex <= ods.member_profiles\n[2026-02-24 06:52:15] INFO | etl_billiards | DWD 装载完成dwd.dim_member_ex用时 0.85s\n[2026-02-24 06:52:15] INFO | etl_billiards | DWD 装载开始dwd.dim_member_card_account <= ods.member_stored_value_cards\n[2026-02-24 06:52:17] INFO | etl_billiards | DWD 装载完成dwd.dim_member_card_account用时 1.69s\n[2026-02-24 06:52:17] INFO | etl_billiards | DWD 装载开始dwd.dim_member_card_account_ex <= ods.member_stored_value_cards\n[2026-02-24 06:52:19] INFO | etl_billiards | DWD 装载完成dwd.dim_member_card_account_ex用时 1.99s\n[2026-02-24 06:52:19] INFO | etl_billiards | DWD 装载开始dwd.dim_tenant_goods <= ods.tenant_goods_master\n[2026-02-24 06:52:20] INFO | etl_billiards | DWD 装载完成dwd.dim_tenant_goods用时 0.74s\n[2026-02-24 06:52:20] INFO | etl_billiards | DWD 装载开始dwd.dim_tenant_goods_ex <= ods.tenant_goods_master\n[2026-02-24 06:52:20] INFO | etl_billiards | DWD 装载完成dwd.dim_tenant_goods_ex用时 0.73s\n[2026-02-24 06:52:20] INFO | etl_billiards | DWD 装载开始dwd.dim_store_goods <= ods.store_goods_master\n[2026-02-24 06:52:21] INFO | etl_billiards | DWD 装载完成dwd.dim_store_goods用时 0.76s\n[2026-02-24 06:52:21] INFO | etl_billiards | DWD 装载开始dwd.dim_store_goods_ex <= ods.store_goods_master\n[2026-02-24 06:52:22] INFO | etl_billiards | DWD 装载完成dwd.dim_store_goods_ex用时 0.76s\n[2026-02-24 06:52:22] INFO | etl_billiards | DWD 装载开始dwd.dim_goods_category <= ods.stock_goods_category_tree\n[2026-02-24 06:52:23] INFO | etl_billiards | DWD 装载完成dwd.dim_goods_category用时 0.67s\n[2026-02-24 06:52:23] INFO | etl_billiards | DWD 装载开始dwd.dim_groupbuy_package <= ods.group_buy_packages\n[2026-02-24 06:52:23] INFO | etl_billiards | DWD 装载完成dwd.dim_groupbuy_package用时 0.66s\n[2026-02-24 06:52:23] INFO | etl_billiards | DWD 装载开始dwd.dim_groupbuy_package_ex <= ods.group_buy_packages\n[2026-02-24 06:52:24] INFO | etl_billiards | DWD 装载完成dwd.dim_groupbuy_package_ex用时 0.67s\n[2026-02-24 06:52:24] INFO | etl_billiards | DWD 装载开始dwd.dwd_settlement_head <= ods.settlement_records\n[2026-02-24 06:52:25] INFO | etl_billiards | DWD 装载完成dwd.dwd_settlement_head用时 0.61s\n[2026-02-24 06:52:25] INFO | etl_billiards | DWD 装载开始dwd.dwd_settlement_head_ex <= ods.settlement_records\n[2026-02-24 06:52:25] INFO | etl_billiards | DWD 装载完成dwd.dwd_settlement_head_ex用时 0.53s\n[2026-02-24 06:52:25] INFO | etl_billiards | DWD 装载开始dwd.dwd_table_fee_log <= ods.table_fee_transactions\n[2026-02-24 06:52:26] INFO | etl_billiards | DWD 装载完成dwd.dwd_table_fee_log用时 1.04s\n[2026-02-24 06:52:26] INFO | etl_billiards | DWD 装载开始dwd.dwd_table_fee_log_ex <= ods.table_fee_transactions\n[2026-02-24 06:52:27] INFO | etl_billiards | DWD 装载完成dwd.dwd_table_fee_log_ex用时 0.75s\n[2026-02-24 06:52:27] INFO | etl_billiards | DWD 装载开始dwd.dwd_table_fee_adjust <= ods.table_fee_discount_records\n[2026-02-24 06:52:27] INFO | etl_billiards | DWD 装载完成dwd.dwd_table_fee_adjust用时 0.58s\n[2026-02-24 06:52:27] INFO | etl_billiards | DWD 装载开始dwd.dwd_table_fee_adjust_ex <= ods.table_fee_discount_records\n[2026-02-24 06:52:28] INFO | etl_billiards | DWD 装载完成dwd.dwd_table_fee_adjust_ex用时 0.54s\n[2026-02-24 06:52:28] INFO | etl_billiards | DWD 装载开始dwd.dwd_store_goods_sale <= ods.store_goods_sales_records\n[2026-02-24 06:52:29] INFO | etl_billiards | DWD 装载完成dwd.dwd_store_goods_sale用时 1.12s\n[2026-02-24 06:52:29] INFO | etl_billiards | DWD 装载开始dwd.dwd_store_goods_sale_ex <= ods.store_goods_sales_records\n[2026-02-24 06:52:30] INFO | etl_billiards | DWD 装载完成dwd.dwd_store_goods_sale_ex用时 1.23s\n[2026-02-24 06:52:30] INFO | etl_billiards | DWD 装载开始dwd.dwd_assistant_service_log <= ods.assistant_service_records\n[2026-02-24 06:52:31] INFO | etl_billiards | DWD 装载完成dwd.dwd_assistant_service_log用时 0.60s\n[2026-02-24 06:52:31] INFO | etl_billiards | DWD 装载开始dwd.dwd_assistant_service_log_ex <= ods.assistant_service_records\n[2026-02-24 06:52:32] INFO | etl_billiards | DWD 装载完成dwd.dwd_assistant_service_log_ex用时 0.58s\n[2026-02-24 06:52:32] INFO | etl_billiards | DWD 装载开始dwd.dwd_member_balance_change <= ods.member_balance_changes\n[2026-02-24 06:52:32] INFO | etl_billiards | DWD 装载完成dwd.dwd_member_balance_change用时 0.62s\n[2026-02-24 06:52:32] INFO | etl_billiards | DWD 装载开始dwd.dwd_member_balance_change_ex <= ods.member_balance_changes\n[2026-02-24 06:52:33] INFO | etl_billiards | DWD 装载完成dwd.dwd_member_balance_change_ex用时 0.55s\n[2026-02-24 06:52:33] INFO | etl_billiards | DWD 装载开始dwd.dwd_groupbuy_redemption <= ods.group_buy_redemption_records\n[2026-02-24 06:52:34] INFO | etl_billiards | DWD 装载完成dwd.dwd_groupbuy_redemption用时 1.02s\n[2026-02-24 06:52:34] INFO | etl_billiards | DWD 装载开始dwd.dwd_groupbuy_redemption_ex <= ods.group_buy_redemption_records\n[2026-02-24 06:52:34] INFO | etl_billiards | DWD 装载完成dwd.dwd_groupbuy_redemption_ex用时 0.64s\n[2026-02-24 06:52:34] INFO | etl_billiards | DWD 装载开始dwd.dwd_platform_coupon_redemption <= ods.platform_coupon_redemption_records\n[2026-02-24 06:52:36] INFO | etl_billiards | DWD 装载完成dwd.dwd_platform_coupon_redemption用时 1.24s\n[2026-02-24 06:52:36] INFO | etl_billiards | DWD 装载开始dwd.dwd_platform_coupon_redemption_ex <= ods.platform_coupon_redemption_records\n[2026-02-24 06:52:37] INFO | etl_billiards | DWD 装载完成dwd.dwd_platform_coupon_redemption_ex用时 0.99s\n[2026-02-24 06:52:37] INFO | etl_billiards | DWD 装载开始dwd.dwd_recharge_order <= ods.recharge_settlements\n[2026-02-24 06:52:37] INFO | etl_billiards | DWD 装载完成dwd.dwd_recharge_order用时 0.61s\n[2026-02-24 06:52:37] INFO | etl_billiards | DWD 装载开始dwd.dwd_recharge_order_ex <= ods.recharge_settlements\n[2026-02-24 06:52:38] INFO | etl_billiards | DWD 装载完成dwd.dwd_recharge_order_ex用时 0.52s\n[2026-02-24 06:52:38] INFO | etl_billiards | DWD 装载开始dwd.dwd_payment <= ods.payment_transactions\n[2026-02-24 06:52:39] INFO | etl_billiards | DWD 装载完成dwd.dwd_payment用时 1.31s\n[2026-02-24 06:52:39] INFO | etl_billiards | DWD 装载开始dwd.dwd_refund <= ods.refund_transactions\n[2026-02-24 06:52:40] INFO | etl_billiards | DWD 装载完成dwd.dwd_refund用时 0.52s\n[2026-02-24 06:52:40] INFO | etl_billiards | DWD 装载开始dwd.dwd_refund_ex <= ods.refund_transactions\n[2026-02-24 06:52:40] INFO | etl_billiards | DWD 装载完成dwd.dwd_refund_ex用时 0.52s\n[2026-02-24 06:52:40] INFO | etl_billiards | DWD 装载开始dwd.dwd_goods_stock_summary <= ods.goods_stock_summary\n[2026-02-24 06:52:41] INFO | etl_billiards | DWD 装载完成dwd.dwd_goods_stock_summary用时 0.55s\n[2026-02-24 06:52:41] INFO | etl_billiards | DWD 装载开始dwd.dwd_goods_stock_movement <= ods.goods_stock_movements\n[2026-02-24 06:52:42] INFO | etl_billiards | DWD 装载完成dwd.dwd_goods_stock_movement用时 1.33s\n[2026-02-24 06:52:42] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:52:42] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:52:42] INFO | etl_billiards | DWD 装载开始dwd.dim_site <= ods.table_fee_transactions\n[2026-02-24 06:52:43] INFO | etl_billiards | DWD 装载完成dwd.dim_site用时 1.00s\n[2026-02-24 06:52:43] INFO | etl_billiards | DWD 装载开始dwd.dim_site_ex <= ods.table_fee_transactions\n[2026-02-24 06:52:44] INFO | etl_billiards | DWD 装载完成dwd.dim_site_ex用时 1.08s\n[2026-02-24 06:52:44] INFO | etl_billiards | DWD 装载开始dwd.dim_table <= ods.site_tables_master\n[2026-02-24 06:52:45] INFO | etl_billiards | DWD 装载完成dwd.dim_table用时 0.69s\n[2026-02-24 06:52:45] INFO | etl_billiards | DWD 装载开始dwd.dim_table_ex <= ods.site_tables_master\n[2026-02-24 06:52:46] INFO | etl_billiards | DWD 装载完成dwd.dim_table_ex用时 0.84s\n[2026-02-24 06:52:46] INFO | etl_billiards | DWD 装载开始dwd.dim_assistant <= ods.assistant_accounts_master\n[2026-02-24 06:52:46] INFO | etl_billiards | DWD 装载完成dwd.dim_assistant用时 0.68s\n[2026-02-24 06:52:46] INFO | etl_billiards | DWD 装载开始dwd.dim_assistant_ex <= ods.assistant_accounts_master\n[2026-02-24 06:52:47] INFO | etl_billiards | DWD 装载完成dwd.dim_assistant_ex用时 0.72s\n[2026-02-24 06:52:47] INFO | etl_billiards | DWD 装载开始dwd.dim_member <= ods.member_profiles\n[2026-02-24 06:52:48] INFO | etl_billiards | DWD 装载完成dwd.dim_member用时 0.90s\n[2026-02-24 06:52:48] INFO | etl_billiards | DWD 装载开始dwd.dim_member_ex <= ods.member_profiles\n[2026-02-24 06:52:49] INFO | etl_billiards | DWD 装载完成dwd.dim_member_ex用时 0.84s\n[2026-02-24 06:52:49] INFO | etl_billiards | DWD 装载开始dwd.dim_member_card_account <= ods.member_stored_value_cards\n[2026-02-24 06:52:50] INFO | etl_billiards | DWD 装载完成dwd.dim_member_card_account用时 1.68s\n[2026-02-24 06:52:50] INFO | etl_billiards | DWD 装载开始dwd.dim_member_card_account_ex <= ods.member_stored_value_cards\n[2026-02-24 06:52:53] INFO | etl_billiards | DWD 装载完成dwd.dim_member_card_account_ex用时 2.44s\n[2026-02-24 06:52:53] INFO | etl_billiards | DWD 装载开始dwd.dim_tenant_goods <= ods.tenant_goods_master\n[2026-02-24 06:52:54] INFO | etl_billiards | DWD 装载完成dwd.dim_tenant_goods用时 0.69s\n[2026-02-24 06:52:54] INFO | etl_billiards | DWD 装载开始dwd.dim_tenant_goods_ex <= ods.tenant_goods_master\n[2026-02-24 06:52:54] INFO | etl_billiards | DWD 装载完成dwd.dim_tenant_goods_ex用时 0.71s\n[2026-02-24 06:52:54] INFO | etl_billiards | DWD 装载开始dwd.dim_store_goods <= ods.store_goods_master\n[2026-02-24 06:52:55] INFO | etl_billiards | DWD 装载完成dwd.dim_store_goods用时 0.87s\n[2026-02-24 06:52:55] INFO | etl_billiards | DWD 装载开始dwd.dim_store_goods_ex <= ods.store_goods_master\n[2026-02-24 06:52:56] INFO | etl_billiards | DWD 装载完成dwd.dim_store_goods_ex用时 0.84s\n[2026-02-24 06:52:56] INFO | etl_billiards | DWD 装载开始dwd.dim_goods_category <= ods.stock_goods_category_tree\n[2026-02-24 06:52:57] INFO | etl_billiards | DWD 装载完成dwd.dim_goods_category用时 0.69s\n[2026-02-24 06:52:57] INFO | etl_billiards | DWD 装载开始dwd.dim_groupbuy_package <= ods.group_buy_packages\n[2026-02-24 06:52:58] INFO | etl_billiards | DWD 装载完成dwd.dim_groupbuy_package用时 1.08s\n[2026-02-24 06:52:58] INFO | etl_billiards | DWD 装载开始dwd.dim_groupbuy_package_ex <= ods.group_buy_packages\n[2026-02-24 06:52:58] INFO | etl_billiards | DWD 装载完成dwd.dim_groupbuy_package_ex用时 0.67s\n[2026-02-24 06:52:58] INFO | etl_billiards | DWD 装载开始dwd.dwd_settlement_head <= ods.settlement_records\n[2026-02-24 06:53:00] INFO | etl_billiards | DWD 装载完成dwd.dwd_settlement_head用时 2.01s\n[2026-02-24 06:53:00] INFO | etl_billiards | DWD 装载开始dwd.dwd_settlement_head_ex <= ods.settlement_records\n[2026-02-24 06:53:02] INFO | etl_billiards | DWD 装载完成dwd.dwd_settlement_head_ex用时 1.19s\n[2026-02-24 06:53:02] INFO | etl_billiards | DWD 装载开始dwd.dwd_table_fee_log <= ods.table_fee_transactions\n[2026-02-24 06:53:02] INFO | etl_billiards | DWD 装载完成dwd.dwd_table_fee_log用时 0.73s\n[2026-02-24 06:53:02] INFO | etl_billiards | DWD 装载开始dwd.dwd_table_fee_log_ex <= ods.table_fee_transactions\n[2026-02-24 06:53:03] INFO | etl_billiards | DWD 装载完成dwd.dwd_table_fee_log_ex用时 0.62s\n[2026-02-24 06:53:03] INFO | etl_billiards | DWD 装载开始dwd.dwd_table_fee_adjust <= ods.table_fee_discount_records\n[2026-02-24 06:53:04] INFO | etl_billiards | DWD 装载完成dwd.dwd_table_fee_adjust用时 0.60s\n[2026-02-24 06:53:04] INFO | etl_billiards | DWD 装载开始dwd.dwd_table_fee_adjust_ex <= ods.table_fee_discount_records\n[2026-02-24 06:53:04] INFO | etl_billiards | DWD 装载完成dwd.dwd_table_fee_adjust_ex用时 0.74s\n[2026-02-24 06:53:04] INFO | etl_billiards | DWD 装载开始dwd.dwd_store_goods_sale <= ods.store_goods_sales_records\n[2026-02-24 06:53:05] INFO | etl_billiards | DWD 装载完成dwd.dwd_store_goods_sale用时 0.54s\n[2026-02-24 06:53:05] INFO | etl_billiards | DWD 装载开始dwd.dwd_store_goods_sale_ex <= ods.store_goods_sales_records\n[2026-02-24 06:53:05] INFO | etl_billiards | DWD 装载完成dwd.dwd_store_goods_sale_ex用时 0.51s\n[2026-02-24 06:53:05] INFO | etl_billiards | DWD 装载开始dwd.dwd_assistant_service_log <= ods.assistant_service_records\n[2026-02-24 06:53:06] INFO | etl_billiards | DWD 装载完成dwd.dwd_assistant_service_log用时 0.54s\n[2026-02-24 06:53:06] INFO | etl_billiards | DWD 装载开始dwd.dwd_assistant_service_log_ex <= ods.assistant_service_records\n[2026-02-24 06:53:06] INFO | etl_billiards | DWD 装载完成dwd.dwd_assistant_service_log_ex用时 0.54s\n[2026-02-24 06:53:06] INFO | etl_billiards | DWD 装载开始dwd.dwd_member_balance_change <= ods.member_balance_changes\n[2026-02-24 06:53:07] INFO | etl_billiards | DWD 装载完成dwd.dwd_member_balance_change用时 0.55s\n[2026-02-24 06:53:07] INFO | etl_billiards | DWD 装载开始dwd.dwd_member_balance_change_ex <= ods.member_balance_changes\n[2026-02-24 06:53:07] INFO | etl_billiards | DWD 装载完成dwd.dwd_member_balance_change_ex用时 0.51s\n[2026-02-24 06:53:07] INFO | etl_billiards | DWD 装载开始dwd.dwd_groupbuy_redemption <= ods.group_buy_redemption_records\n[2026-02-24 06:53:08] INFO | etl_billiards | DWD 装载完成dwd.dwd_groupbuy_redemption用时 0.56s\n[2026-02-24 06:53:08] INFO | etl_billiards | DWD 装载开始dwd.dwd_groupbuy_redemption_ex <= ods.group_buy_redemption_records\n[2026-02-24 06:53:09] INFO | etl_billiards | DWD 装载完成dwd.dwd_groupbuy_redemption_ex用时 0.56s\n[2026-02-24 06:53:09] INFO | etl_billiards | DWD 装载开始dwd.dwd_platform_coupon_redemption <= ods.platform_coupon_redemption_records\n[2026-02-24 06:53:09] INFO | etl_billiards | DWD 装载完成dwd.dwd_platform_coupon_redemption用时 0.58s\n[2026-02-24 06:53:09] INFO | etl_billiards | DWD 装载开始dwd.dwd_platform_coupon_redemption_ex <= ods.platform_coupon_redemption_records\n[2026-02-24 06:53:10] INFO | etl_billiards | DWD 装载完成dwd.dwd_platform_coupon_redemption_ex用时 0.53s\n[2026-02-24 06:53:10] INFO | etl_billiards | DWD 装载开始dwd.dwd_recharge_order <= ods.recharge_settlements\n[2026-02-24 06:53:10] INFO | etl_billiards | DWD 装载完成dwd.dwd_recharge_order用时 0.52s\n[2026-02-24 06:53:10] INFO | etl_billiards | DWD 装载开始dwd.dwd_recharge_order_ex <= ods.recharge_settlements\n[2026-02-24 06:53:11] INFO | etl_billiards | DWD 装载完成dwd.dwd_recharge_order_ex用时 0.54s\n[2026-02-24 06:53:11] INFO | etl_billiards | DWD 装载开始dwd.dwd_payment <= ods.payment_transactions\n[2026-02-24 06:53:11] INFO | etl_billiards | DWD 装载完成dwd.dwd_payment用时 0.63s\n[2026-02-24 06:53:11] INFO | etl_billiards | DWD 装载开始dwd.dwd_refund <= ods.refund_transactions\n[2026-02-24 06:53:12] INFO | etl_billiards | DWD 装载完成dwd.dwd_refund用时 0.52s\n[2026-02-24 06:53:12] INFO | etl_billiards | DWD 装载开始dwd.dwd_refund_ex <= ods.refund_transactions\n[2026-02-24 06:53:12] INFO | etl_billiards | DWD 装载完成dwd.dwd_refund_ex用时 0.51s\n[2026-02-24 06:53:12] INFO | etl_billiards | DWD 装载开始dwd.dwd_goods_stock_summary <= ods.goods_stock_summary\n[2026-02-24 06:53:13] INFO | etl_billiards | DWD 装载完成dwd.dwd_goods_stock_summary用时 0.51s\n[2026-02-24 06:53:13] INFO | etl_billiards | DWD 装载开始dwd.dwd_goods_stock_movement <= ods.goods_stock_movements\n[2026-02-24 06:53:14] INFO | etl_billiards | DWD 装载完成dwd.dwd_goods_stock_movement用时 0.66s\n[2026-02-24 06:53:14] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:53:14] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:53:14] INFO | etl_billiards | DWD 装载开始dwd.dim_site <= ods.table_fee_transactions\n[2026-02-24 06:53:15] INFO | etl_billiards | DWD 装载完成dwd.dim_site用时 0.92s\n[2026-02-24 06:53:15] INFO | etl_billiards | DWD 装载开始dwd.dim_site_ex <= ods.table_fee_transactions\n[2026-02-24 06:53:16] INFO | etl_billiards | DWD 装载完成dwd.dim_site_ex用时 1.09s\n[2026-02-24 06:53:16] INFO | etl_billiards | DWD 装载开始dwd.dim_table <= ods.site_tables_master\n[2026-02-24 06:53:16] INFO | etl_billiards | DWD 装载完成dwd.dim_table用时 0.67s\n[2026-02-24 06:53:16] INFO | etl_billiards | DWD 装载开始dwd.dim_table_ex <= ods.site_tables_master\n[2026-02-24 06:53:17] INFO | etl_billiards | DWD 装载完成dwd.dim_table_ex用时 0.67s\n[2026-02-24 06:53:17] INFO | etl_billiards | DWD 装载开始dwd.dim_assistant <= ods.assistant_accounts_master\n[2026-02-24 06:53:18] INFO | etl_billiards | DWD 装载完成dwd.dim_assistant用时 0.67s\n[2026-02-24 06:53:18] INFO | etl_billiards | DWD 装载开始dwd.dim_assistant_ex <= ods.assistant_accounts_master\n[2026-02-24 06:53:18] INFO | etl_billiards | DWD 装载完成dwd.dim_assistant_ex用时 0.71s\n[2026-02-24 06:53:18] INFO | etl_billiards | DWD 装载开始dwd.dim_member <= ods.member_profiles\n[2026-02-24 06:53:20] INFO | etl_billiards | DWD 装载完成dwd.dim_member用时 1.35s\n[2026-02-24 06:53:20] INFO | etl_billiards | DWD 装载开始dwd.dim_member_ex <= ods.member_profiles\n[2026-02-24 06:53:21] INFO | etl_billiards | DWD 装载完成dwd.dim_member_ex用时 0.84s\n[2026-02-24 06:53:21] INFO | etl_billiards | DWD 装载开始dwd.dim_member_card_account <= ods.member_stored_value_cards\n[2026-02-24 06:53:22] INFO | etl_billiards | DWD 装载完成dwd.dim_member_card_account用时 1.73s\n[2026-02-24 06:53:22] INFO | etl_billiards | DWD 装载开始dwd.dim_member_card_account_ex <= ods.member_stored_value_cards\n[2026-02-24 06:53:24] INFO | etl_billiards | DWD 装载完成dwd.dim_member_card_account_ex用时 1.71s\n[2026-02-24 06:53:24] INFO | etl_billiards | DWD 装载开始dwd.dim_tenant_goods <= ods.tenant_goods_master\n[2026-02-24 06:53:25] INFO | etl_billiards | DWD 装载完成dwd.dim_tenant_goods用时 0.75s\n[2026-02-24 06:53:25] INFO | etl_billiards | DWD 装载开始dwd.dim_tenant_goods_ex <= ods.tenant_goods_master\n[2026-02-24 06:53:25] INFO | etl_billiards | DWD 装载完成dwd.dim_tenant_goods_ex用时 0.76s\n[2026-02-24 06:53:25] INFO | etl_billiards | DWD 装载开始dwd.dim_store_goods <= ods.store_goods_master\n[2026-02-24 06:53:26] INFO | etl_billiards | DWD 装载完成dwd.dim_store_goods用时 0.80s\n[2026-02-24 06:53:26] INFO | etl_billiards | DWD 装载开始dwd.dim_store_goods_ex <= ods.store_goods_master\n[2026-02-24 06:53:27] INFO | etl_billiards | DWD 装载完成dwd.dim_store_goods_ex用时 0.78s\n[2026-02-24 06:53:27] INFO | etl_billiards | DWD 装载开始dwd.dim_goods_category <= ods.stock_goods_category_tree\n[2026-02-24 06:53:28] INFO | etl_billiards | DWD 装载完成dwd.dim_goods_category用时 0.67s\n[2026-02-24 06:53:28] INFO | etl_billiards | DWD 装载开始dwd.dim_groupbuy_package <= ods.group_buy_packages\n[2026-02-24 06:53:28] INFO | etl_billiards | DWD 装载完成dwd.dim_groupbuy_package用时 0.69s\n[2026-02-24 06:53:28] INFO | etl_billiards | DWD 装载开始dwd.dim_groupbuy_package_ex <= ods.group_buy_packages\n[2026-02-24 06:53:29] INFO | etl_billiards | DWD 装载完成dwd.dim_groupbuy_package_ex用时 0.69s\n[2026-02-24 06:53:29] INFO | etl_billiards | DWD 装载开始dwd.dwd_settlement_head <= ods.settlement_records\n[2026-02-24 06:53:30] INFO | etl_billiards | DWD 装载完成dwd.dwd_settlement_head用时 1.12s\n[2026-02-24 06:53:30] INFO | etl_billiards | DWD 装载开始dwd.dwd_settlement_head_ex <= ods.settlement_records\n[2026-02-24 06:53:31] INFO | etl_billiards | DWD 装载完成dwd.dwd_settlement_head_ex用时 1.20s\n[2026-02-24 06:53:31] INFO | etl_billiards | DWD 装载开始dwd.dwd_table_fee_log <= ods.table_fee_transactions\n[2026-02-24 06:53:32] INFO | etl_billiards | DWD 装载完成dwd.dwd_table_fee_log用时 0.80s\n[2026-02-24 06:53:32] INFO | etl_billiards | DWD 装载开始dwd.dwd_table_fee_log_ex <= ods.table_fee_transactions\n[2026-02-24 06:53:33] INFO | etl_billiards | DWD 装载完成dwd.dwd_table_fee_log_ex用时 0.66s\n[2026-02-24 06:53:33] INFO | etl_billiards | DWD 装载开始dwd.dwd_table_fee_adjust <= ods.table_fee_discount_records\n[2026-02-24 06:53:33] INFO | etl_billiards | DWD 装载完成dwd.dwd_table_fee_adjust用时 0.52s\n[2026-02-24 06:53:33] INFO | etl_billiards | DWD 装载开始dwd.dwd_table_fee_adjust_ex <= ods.table_fee_discount_records\n[2026-02-24 06:53:34] INFO | etl_billiards | DWD 装载完成dwd.dwd_table_fee_adjust_ex用时 0.51s\n[2026-02-24 06:53:34] INFO | etl_billiards | DWD 装载开始dwd.dwd_store_goods_sale <= ods.store_goods_sales_records\n[2026-02-24 06:53:35] INFO | etl_billiards | DWD 装载完成dwd.dwd_store_goods_sale用时 0.60s\n[2026-02-24 06:53:35] INFO | etl_billiards | DWD 装载开始dwd.dwd_store_goods_sale_ex <= ods.store_goods_sales_records\n[2026-02-24 06:53:35] INFO | etl_billiards | DWD 装载完成dwd.dwd_store_goods_sale_ex用时 0.58s\n[2026-02-24 06:53:35] INFO | etl_billiards | DWD 装载开始dwd.dwd_assistant_service_log <= ods.assistant_service_records\n[2026-02-24 06:53:36] INFO | etl_billiards | DWD 装载完成dwd.dwd_assistant_service_log用时 0.65s\n[2026-02-24 06:53:36] INFO | etl_billiards | DWD 装载开始dwd.dwd_assistant_service_log_ex <= ods.assistant_service_records\n[2026-02-24 06:53:36] INFO | etl_billiards | DWD 装载完成dwd.dwd_assistant_service_log_ex用时 0.58s\n[2026-02-24 06:53:36] INFO | etl_billiards | DWD 装载开始dwd.dwd_member_balance_change <= ods.member_balance_changes\n[2026-02-24 06:53:37] INFO | etl_billiards | DWD 装载完成dwd.dwd_member_balance_change用时 0.54s\n[2026-02-24 06:53:37] INFO | etl_billiards | DWD 装载开始dwd.dwd_member_balance_change_ex <= ods.member_balance_changes\n[2026-02-24 06:53:37] INFO | etl_billiards | DWD 装载完成dwd.dwd_member_balance_change_ex用时 0.54s\n[2026-02-24 06:53:37] INFO | etl_billiards | DWD 装载开始dwd.dwd_groupbuy_redemption <= ods.group_buy_redemption_records\n[2026-02-24 06:53:38] INFO | etl_billiards | DWD 装载完成dwd.dwd_groupbuy_redemption用时 0.72s\n[2026-02-24 06:53:38] INFO | etl_billiards | DWD 装载开始dwd.dwd_groupbuy_redemption_ex <= ods.group_buy_redemption_records\n[2026-02-24 06:53:39] INFO | etl_billiards | DWD 装载完成dwd.dwd_groupbuy_redemption_ex用时 0.63s\n[2026-02-24 06:53:39] INFO | etl_billiards | DWD 装载开始dwd.dwd_platform_coupon_redemption <= ods.platform_coupon_redemption_records\n[2026-02-24 06:53:39] INFO | etl_billiards | DWD 装载完成dwd.dwd_platform_coupon_redemption用时 0.53s\n[2026-02-24 06:53:39] INFO | etl_billiards | DWD 装载开始dwd.dwd_platform_coupon_redemption_ex <= ods.platform_coupon_redemption_records\n[2026-02-24 06:53:40] INFO | etl_billiards | DWD 装载完成dwd.dwd_platform_coupon_redemption_ex用时 0.52s\n[2026-02-24 06:53:40] INFO | etl_billiards | DWD 装载开始dwd.dwd_recharge_order <= ods.recharge_settlements\n[2026-02-24 06:53:40] INFO | etl_billiards | DWD 装载完成dwd.dwd_recharge_order用时 0.52s\n[2026-02-24 06:53:40] INFO | etl_billiards | DWD 装载开始dwd.dwd_recharge_order_ex <= ods.recharge_settlements\n[2026-02-24 06:53:41] INFO | etl_billiards | DWD 装载完成dwd.dwd_recharge_order_ex用时 0.52s\n[2026-02-24 06:53:41] INFO | etl_billiards | DWD 装载开始dwd.dwd_payment <= ods.payment_transactions\n[2026-02-24 06:53:41] INFO | etl_billiards | DWD 装载完成dwd.dwd_payment用时 0.59s\n[2026-02-24 06:53:41] INFO | etl_billiards | DWD 装载开始dwd.dwd_refund <= ods.refund_transactions\n[2026-02-24 06:53:42] INFO | etl_billiards | DWD 装载完成dwd.dwd_refund用时 0.59s\n[2026-02-24 06:53:42] INFO | etl_billiards | DWD 装载开始dwd.dwd_refund_ex <= ods.refund_transactions\n[2026-02-24 06:53:43] INFO | etl_billiards | DWD 装载完成dwd.dwd_refund_ex用时 0.56s\n[2026-02-24 06:53:43] INFO | etl_billiards | DWD 装载开始dwd.dwd_goods_stock_summary <= ods.goods_stock_summary\n[2026-02-24 06:53:43] INFO | etl_billiards | DWD 装载完成dwd.dwd_goods_stock_summary用时 0.52s\n[2026-02-24 06:53:43] INFO | etl_billiards | DWD 装载开始dwd.dwd_goods_stock_movement <= ods.goods_stock_movements\n[2026-02-24 06:53:44] INFO | etl_billiards | DWD 装载完成dwd.dwd_goods_stock_movement用时 0.57s\n[2026-02-24 06:53:44] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:53:44] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 完成,统计={'tables': 160, 'errors': 0, 'error_details': 0}\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_GOODS_STOCK_DAILY\\DWS_GOODS_STOCK_DAILY-9005-20260224-065344\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取数据,门店=2790685415443269日期范围 2025-11-01 ~ 2026-02-20\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 抓取完成,文件=None记录数=0\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_GOODS_STOCK_DAILY\\DWS_GOODS_STOCK_DAILY-9005-20260224-065344\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取数据,门店=2790685415443269日期范围 2025-10-31 ~ 2025-11-30\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 无数据需要汇总\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取数据,门店=2790685415443269日期范围 2025-11-30 ~ 2025-12-30\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 无数据需要汇总\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取数据,门店=2790685415443269日期范围 2025-12-30 ~ 2026-01-29\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 无数据需要汇总\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取数据,门店=2790685415443269日期范围 2026-01-29 ~ 2026-02-20\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 无数据需要汇总\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 完成,统计={'counts': {'fetched': 0, 'inserted': 0, 'updated': 0, 'skipped': 0, 'errors': 0}}\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_GOODS_STOCK_WEEKLY\\DWS_GOODS_STOCK_WEEKLY-9006-20260224-065346\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取数据,门店=2790685415443269日期范围 2025-11-01 ~ 2026-02-20\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 抓取完成,文件=None记录数=0\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_GOODS_STOCK_WEEKLY\\DWS_GOODS_STOCK_WEEKLY-9006-20260224-065346\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取数据,门店=2790685415443269日期范围 2025-10-31 ~ 2025-11-30\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 无数据需要汇总\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取数据,门店=2790685415443269日期范围 2025-11-30 ~ 2025-12-30\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 无数据需要汇总\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取数据,门店=2790685415443269日期范围 2025-12-30 ~ 2026-01-29\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 无数据需要汇总\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取数据,门店=2790685415443269日期范围 2026-01-29 ~ 2026-02-20\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 无数据需要汇总\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 完成,统计={'counts': {'fetched': 0, 'inserted': 0, 'updated': 0, 'skipped': 0, 'errors': 0}}\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_GOODS_STOCK_MONTHLY\\DWS_GOODS_STOCK_MONTHLY-9007-20260224-065347\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取数据,门店=2790685415443269日期范围 2025-11-01 ~ 2026-02-20\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 抓取完成,文件=None记录数=0\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_GOODS_STOCK_MONTHLY\\DWS_GOODS_STOCK_MONTHLY-9007-20260224-065347\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取数据,门店=2790685415443269日期范围 2025-10-31 ~ 2025-11-30\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 无数据需要汇总\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取数据,门店=2790685415443269日期范围 2025-11-30 ~ 2025-12-30\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 无数据需要汇总\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取数据,门店=2790685415443269日期范围 2025-12-30 ~ 2026-01-29\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 无数据需要汇总\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取数据,门店=2790685415443269日期范围 2026-01-29 ~ 2026-02-20\n[2026-02-24 06:53:48] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:48] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 无数据需要汇总\n[2026-02-24 06:53:48] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:53:48] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 完成,统计={'counts': {'fetched': 0, 'inserted': 0, 'updated': 0, 'skipped': 0, 'errors': 0}}\n[2026-02-24 06:53:48] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_DAILY\\DWS_ASSISTANT_DAILY-9008-20260224-065348\n[2026-02-24 06:53:48] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 提取数据,日期范围 2025-11-01 ~ 2026-02-20\n[2026-02-24 06:53:49] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 抓取完成,文件=None记录数=0\n[2026-02-24 06:53:49] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_DAILY\\DWS_ASSISTANT_DAILY-9008-20260224-065348\n[2026-02-24 06:53:49] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:53:49] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:53:49] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 提取数据,日期范围 2025-10-31 ~ 2025-11-30\n[2026-02-24 06:53:49] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 转换数据,服务记录 715 条\n[2026-02-24 06:54:26] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:54:26] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:54:26] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 提取数据,日期范围 2025-11-30 ~ 2025-12-30\n[2026-02-24 06:54:26] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 转换数据,服务记录 959 条\n[2026-02-24 06:55:16] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:55:16] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:55:16] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 提取数据,日期范围 2025-12-30 ~ 2026-01-29\n[2026-02-24 06:55:16] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 转换数据,服务记录 838 条\n[2026-02-24 06:55:53] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:55:53] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:55:53] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 提取数据,日期范围 2026-01-29 ~ 2026-02-20\n[2026-02-24 06:55:53] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 转换数据,服务记录 216 条\n[2026-02-24 06:56:02] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:56:02] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 完成,统计={'counts': {'fetched': 367, 'inserted': 367, 'updated': 0, 'skipped': 0, 'errors': 0}, 'extra': {'deleted': 367}}\n[2026-02-24 06:56:03] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_CUSTOMER\\DWS_ASSISTANT_CUSTOMER-9009-20260224-065603\n[2026-02-24 06:56:03] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 提取数据,统计日期 2026-02-20\n[2026-02-24 06:56:03] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 抓取完成,文件=None记录数=0\n[2026-02-24 06:56:03] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_CUSTOMER\\DWS_ASSISTANT_CUSTOMER-9009-20260224-065603\n[2026-02-24 06:56:03] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:56:03] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:56:03] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 提取数据,统计日期 2025-11-30\n[2026-02-24 06:56:03] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 转换数据486 条服务关系记录\n[2026-02-24 06:56:28] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:56:28] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:56:28] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 提取数据,统计日期 2025-12-30\n[2026-02-24 06:56:28] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 转换数据410 条服务关系记录\n[2026-02-24 06:56:49] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:56:49] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:56:49] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 提取数据,统计日期 2026-01-29\n[2026-02-24 06:56:49] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 转换数据334 条服务关系记录\n[2026-02-24 06:57:06] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:57:06] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:57:06] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 提取数据,统计日期 2026-02-20\n[2026-02-24 06:57:06] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 转换数据289 条服务关系记录\n[2026-02-24 06:57:21] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:57:21] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 完成,统计={'counts': {'fetched': 486, 'inserted': 486, 'updated': 0, 'skipped': 0, 'errors': 0}, 'extra': {'deleted': 0}}\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_SALARY\\DWS_ASSISTANT_SALARY-9010-20260224-065722\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 非工资结算期,跳过\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 抓取完成,文件=None记录数=0\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_SALARY\\DWS_ASSISTANT_SALARY-9010-20260224-065722\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 非工资结算期,跳过\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 无数据需要写入\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 非工资结算期,跳过\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 无数据需要写入\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 非工资结算期,跳过\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 无数据需要写入\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 非工资结算期,跳过\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 无数据需要写入\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 完成,统计={'counts': {'fetched': 0, 'inserted': 0, 'updated': 0, 'skipped': 0, 'errors': 0}}\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 开始执行工具类任务\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 分段执行 共4段\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 开始执行(1/4), 窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS订单汇总: 删除=4005 语句=DELETE FROM dws.dws_order_summary WHERE 1=1 AND site_id = %s AND order_date >= %s AND order_date <= %s\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 开始执行(2/4), 窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:57:23] INFO | etl_billiards | DWS订单汇总: 删除=4029 语句=DELETE FROM dws.dws_order_summary WHERE 1=1 AND site_id = %s AND order_date >= %s AND order_date <= %s\n[2026-02-24 06:57:23] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 开始执行(3/4), 窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:57:23] INFO | etl_billiards | DWS订单汇总: 删除=3602 语句=DELETE FROM dws.dws_order_summary WHERE 1=1 AND site_id = %s AND order_date >= %s AND order_date <= %s\n[2026-02-24 06:57:23] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 开始执行(4/4), 窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:57:23] INFO | etl_billiards | DWS订单汇总: 删除=1660 语句=DELETE FROM dws.dws_order_summary WHERE 1=1 AND site_id = %s AND order_date >= %s AND order_date <= %s\n[2026-02-24 06:57:23] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 完成, 统计={'fetched': 0, 'inserted': 13296, 'updated': 0, 'skipped': 0, 'errors': 0}\n[2026-02-24 06:57:23] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 工具类任务执行成功\n[2026-02-24 06:57:23] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 结果统计: {'fetched': 0, 'inserted': 13296, 'updated': 0, 'skipped': 0, 'errors': 0}\n[2026-02-24 06:57:24] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_MEMBER_CONSUMPTION\\DWS_MEMBER_CONSUMPTION-9011-20260224-065724\n[2026-02-24 06:57:24] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 提取数据,统计日期 2026-02-20\n[2026-02-24 06:57:24] WARNING | etl_billiards | DWS_MEMBER_CONSUMPTION: FDW 读取 member_birthday_manual 失败,降级为 dim_member.birthday — 错误: 关系 \"fdw_app.member_birthday_manual\" 不存在\nLINE 11: FROM fdw_app.member_birthday_manual\n ^\n\n[2026-02-24 06:57:24] ERROR | etl_billiards | 任务 DWS_MEMBER_CONSUMPTION 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\member_consumption_task.py\", line 288, in _extract_member_info\n rows = self.db.query(sql_with_fdw, (site_id,))\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.UndefinedTable: 错误: 关系 \"fdw_app.member_birthday_manual\" 不存在\nLINE 11: FROM fdw_app.member_birthday_manual\n ^\n\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 215, in run_single_task\n fetch_stats = self._execute_fetch(task_code, cursor_data, fetch_dir, run_id)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 289, in _execute_fetch\n extracted = task.extract(context)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\member_consumption_task.py\", line 83, in extract\n member_info = self._extract_member_info(site_id)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\member_consumption_task.py\", line 297, in _extract_member_info\n rows = self.db.query(sql_fallback, (site_id,))\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.UndefinedColumn: 错误: 字段 \"tenant_member_id\" 不存在\nLINE 12: SELECT DISTINCT tenant_member_id\n ^\n\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 255, in run_single_task\n self.run_tracker.update_run(\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~^\n run_id=run_id,\n ^^^^^^^^^^^^^^\n ...<3 lines>...\n error_message=str(exc),\n ^^^^^^^^^^^^^^^^^^^^^^^\n )\n ^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\run_tracker.py\", line 105, in update_run\n self.db.execute(\n ~~~~~~~~~~~~~~~^\n sql,\n ^^^^\n ...<18 lines>...\n ),\n ^^\n )\n ^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 56, in execute\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:24] ERROR | etl_billiards | 任务 DWS_MEMBER_VISIT 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 152, in run_single_task\n task_cfg = self._load_task_config(task_code, store_id)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 429, in _load_task_config\n rows = self.db_ops.query(sql, (store_id, task_code))\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:24] ERROR | etl_billiards | 任务 DWS_FINANCE_DAILY 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 152, in run_single_task\n task_cfg = self._load_task_config(task_code, store_id)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 429, in _load_task_config\n rows = self.db_ops.query(sql, (store_id, task_code))\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:24] ERROR | etl_billiards | 任务 DWS_FINANCE_RECHARGE 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 152, in run_single_task\n task_cfg = self._load_task_config(task_code, store_id)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 429, in _load_task_config\n rows = self.db_ops.query(sql, (store_id, task_code))\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:24] ERROR | etl_billiards | 任务 DWS_FINANCE_INCOME_STRUCTURE 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 152, in run_single_task\n task_cfg = self._load_task_config(task_code, store_id)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 429, in _load_task_config\n rows = self.db_ops.query(sql, (store_id, task_code))\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:24] ERROR | etl_billiards | 任务 DWS_FINANCE_DISCOUNT_DETAIL 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 152, in run_single_task\n task_cfg = self._load_task_config(task_code, store_id)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 429, in _load_task_config\n rows = self.db_ops.query(sql, (store_id, task_code))\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:24] ERROR | etl_billiards | 任务 DWS_ASSISTANT_MONTHLY 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 152, in run_single_task\n task_cfg = self._load_task_config(task_code, store_id)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 429, in _load_task_config\n rows = self.db_ops.query(sql, (store_id, task_code))\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:24] ERROR | etl_billiards | 任务 DWS_ASSISTANT_FINANCE 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 152, in run_single_task\n task_cfg = self._load_task_config(task_code, store_id)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 429, in _load_task_config\n rows = self.db_ops.query(sql, (store_id, task_code))\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:24] INFO | etl_billiards | DWS_WINBACK_INDEX: 开始执行工具类任务\n[2026-02-24 06:57:24] INFO | etl_billiards | 开始计算 DWS_WINBACK_INDEX\n[2026-02-24 06:57:24] ERROR | etl_billiards | DWS_WINBACK_INDEX: 工具类任务执行失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 403, in _run_utility_task\n result = task.execute(None)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\member_index_base.py\", line 84, in execute\n tenant_id = self._get_tenant_id()\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\member_index_base.py\", line 169, in _get_tenant_id\n rows = self.db.query(sql)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:24] ERROR | etl_billiards | 任务 DWS_WINBACK_INDEX 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 150, in run_single_task\n return self._run_utility_task(task_code_upper, store_id)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 403, in _run_utility_task\n result = task.execute(None)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\member_index_base.py\", line 84, in execute\n tenant_id = self._get_tenant_id()\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\member_index_base.py\", line 169, in _get_tenant_id\n rows = self.db.query(sql)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:24] INFO | etl_billiards | DWS_NEWCONV_INDEX: 开始执行工具类任务\n[2026-02-24 06:57:24] INFO | etl_billiards | 开始计算 DWS_NEWCONV_INDEX\n[2026-02-24 06:57:25] ERROR | etl_billiards | DWS_NEWCONV_INDEX: 工具类任务执行失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 403, in _run_utility_task\n result = task.execute(None)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\member_index_base.py\", line 84, in execute\n tenant_id = self._get_tenant_id()\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\member_index_base.py\", line 169, in _get_tenant_id\n rows = self.db.query(sql)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:25] ERROR | etl_billiards | 任务 DWS_NEWCONV_INDEX 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 150, in run_single_task\n return self._run_utility_task(task_code_upper, store_id)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 403, in _run_utility_task\n result = task.execute(None)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\member_index_base.py\", line 84, in execute\n tenant_id = self._get_tenant_id()\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\member_index_base.py\", line 169, in _get_tenant_id\n rows = self.db.query(sql)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:25] INFO | etl_billiards | DWS_RELATION_INDEX: 开始执行工具类任务\n[2026-02-24 06:57:25] INFO | etl_billiards | 开始计算关系指数RS/OS/MS/ML\n[2026-02-24 06:57:25] ERROR | etl_billiards | DWS_RELATION_INDEX: 工具类任务执行失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 403, in _run_utility_task\n result = task.execute(None)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\relation_index_task.py\", line 145, in execute\n tenant_id = self._get_tenant_id()\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\relation_index_task.py\", line 688, in _get_tenant_id\n rows = self.db.query(sql)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:25] ERROR | etl_billiards | 任务 DWS_RELATION_INDEX 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 150, in run_single_task\n return self._run_utility_task(task_code_upper, store_id)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 403, in _run_utility_task\n result = task.execute(None)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\relation_index_task.py\", line 145, in execute\n tenant_id = self._get_tenant_id()\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\relation_index_task.py\", line 688, in _get_tenant_id\n rows = self.db.query(sql)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:25] INFO | etl_billiards | 所有任务执行完成\n[2026-02-24 06:57:27] INFO | etl_billiards | 一致性检查报告已生成: C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\REPORTS\\consistency_report_20260224_065727.md\n[2026-02-24 06:57:27] INFO | etl_billiards | 计时报告已生成\n[2026-02-24 06:57:27] INFO | etl_billiards | \n╔══════════════════════════════════════════════════════════════╗\n║ 任务执行总结 ║\n╠══════════════════════════════════════════════════════════════╣\n║ 任务代码: FLOW_API_FULL ║\n║ 执行状态: 成功 ║\n║ 执行时间: 2026-02-24 06:24:14 ~ 06:57:27 (33分13秒) ║\n╠══════════════════════════════════════════════════════════════╣\n║ 数据统计 ║\n║ - 获取记录: 227,842 ║\n║ - 新增记录: 13,617 ║\n║ - 更新记录: 227,669 ║\n║ - 跳过记录: 0 ║\n║ - 错误记录: 0 ║\n╚══════════════════════════════════════════════════════════════╝\n[2026-02-24 06:57:27] INFO | etl_billiards | \n╔══════════════════════════════════════════════════════════════╗\n║ 任务执行总结 ║\n╠══════════════════════════════════════════════════════════════╣\n║ 任务代码: FLOW_API_FULL ║\n║ 执行状态: 成功 ║\n║ 执行时间: 2026-02-24 06:24:14 ~ 06:57:27 (33分13秒) ║\n╠══════════════════════════════════════════════════════════════╣\n║ 数据统计 ║\n║ - 获取记录: 227,842 ║\n║ - 新增记录: 13,617 ║\n║ - 更新记录: 227,669 ║\n║ - 跳过记录: 0 ║\n║ - 错误记录: 0 ║\n╚══════════════════════════════════════════════════════════════╝\n[2026-02-24 06:57:27] INFO | etl_billiards | Flow 执行完成: SUCCESS\n[2026-02-24 06:57:27] INFO | etl_billiards | ETL运行完成"
}