2848 lines
206 KiB
Markdown
2848 lines
206 KiB
Markdown
[stderr] [2026-03-19 01:22:45] INFO | etl_billiards | 配置加载完成
|
||
[stderr] [2026-03-19 01:22:45] INFO | etl_billiards | 门店ID: 2790685415443269
|
||
[stderr] [2026-03-19 01:22:46] INFO | etl_billiards | 执行模式: Flow 模式
|
||
[stderr] [2026-03-19 01:22:46] INFO | etl_billiards | Flow 类型: api_full
|
||
[stderr] [2026-03-19 01:22:46] INFO | etl_billiards | 处理模式: full_window
|
||
[stderr] [2026-03-19 01:22:46] INFO | etl_billiards | 使用回溯时间窗口: 2026-03-18 21:22:46.318958+08:00 ~ 2026-03-19 01:22:46.318958+08:00
|
||
[stderr] [2026-03-19 01:22:46] INFO | etl_billiards | FLOW_API_FULL | 开始执行 Flow: api_full | 开始时间: 2026-03-19 01:22:46
|
||
[stderr] [2026-03-19 01:22:46] INFO | etl_billiards | Flow api_full: 执行增量 ETL,层=['ODS', 'DWD', 'DWS', 'INDEX']
|
||
[stderr] [2026-03-19 01:22:46] INFO | etl_billiards | 开始运行任务: ['ODS_ASSISTANT_ACCOUNT', 'ODS_ASSISTANT_LEDGER', 'ODS_STAFF_INFO', '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_ASSISTANT_PROJECT_TAG', 'DWS_MEMBER_PROJECT_TAG', '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', 'DWS_SPENDING_POWER_INDEX'], run_uuid=772de6b68e78441cb6f052e274e777c5
|
||
[stderr] [2026-03-19 01:22:46] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: ODS fetch+load start, dir=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\ODS_ASSISTANT_ACCOUNT\ODS_ASSISTANT_ACCOUNT-14505-20260319-012246
|
||
[stderr] [2026-03-19 01:22:46] INFO | etl_billiards | 开始执行ODS_ASSISTANT_ACCOUNT (ODS)
|
||
[stderr] [2026-03-19 01:22:46] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:47] ERROR | etl_billiards | ODS_ASSISTANT_ACCOUNT ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/PersonnelManagement/SearchAssistantInfo
|
||
[stderr] [2026-03-19 01:22:47] INFO | etl_billiards | [ODS_ASSISTANT_ACCOUNT] 开始执行ODS_ASSISTANT_ACCOUNT (ODS)
|
||
[stderr] [2026-03-19 01:22:47] INFO | etl_billiards | [ODS_ASSISTANT_ACCOUNT] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:47] ERROR | etl_billiards | [ODS_ASSISTANT_ACCOUNT] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:47] ERROR | etl_billiards | 任务 ODS_ASSISTANT_ACCOUNT 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/PersonnelManagement/SearchAssistantInfo
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/PersonnelManagement/SearchAssistantInfo
|
||
[stderr] [2026-03-19 01:22:47] ERROR | etl_billiards | [ODS_ASSISTANT_ACCOUNT] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/PersonnelManagement/SearchAssistantInfo
|
||
[stderr] [2026-03-19 01:22:47] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: ODS fetch+load start, dir=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\ODS_ASSISTANT_LEDGER\ODS_ASSISTANT_LEDGER-14506-20260319-012247
|
||
[stderr] [2026-03-19 01:22:47] INFO | etl_billiards | 开始执行ODS_ASSISTANT_LEDGER (ODS)
|
||
[stderr] [2026-03-19 01:22:47] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:47] ERROR | etl_billiards | ODS_ASSISTANT_LEDGER ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/AssistantPerformance/GetOrderAssistantDetails
|
||
[stderr] [2026-03-19 01:22:47] INFO | etl_billiards | [ODS_ASSISTANT_LEDGER] 开始执行ODS_ASSISTANT_LEDGER (ODS)
|
||
[stderr] [2026-03-19 01:22:47] INFO | etl_billiards | [ODS_ASSISTANT_LEDGER] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:47] ERROR | etl_billiards | [ODS_ASSISTANT_LEDGER] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:47] ERROR | etl_billiards | 任务 ODS_ASSISTANT_LEDGER 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/AssistantPerformance/GetOrderAssistantDetails
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/AssistantPerformance/GetOrderAssistantDetails
|
||
[stderr] [2026-03-19 01:22:47] ERROR | etl_billiards | [ODS_ASSISTANT_LEDGER] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/AssistantPerformance/GetOrderAssistantDetails
|
||
[stderr] [2026-03-19 01:22:48] INFO | etl_billiards | ODS_STAFF_INFO: ODS fetch+load start, dir=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\ODS_STAFF_INFO\ODS_STAFF_INFO-14507-20260319-012248
|
||
[stderr] [2026-03-19 01:22:48] INFO | etl_billiards | 开始执行ODS_STAFF_INFO (ODS)
|
||
[stderr] [2026-03-19 01:22:48] INFO | etl_billiards | ODS_STAFF_INFO: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:48] ERROR | etl_billiards | ODS_STAFF_INFO ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/PersonnelManagement/SearchSystemStaffInfo
|
||
[stderr] [2026-03-19 01:22:48] INFO | etl_billiards | [ODS_STAFF_INFO] 开始执行ODS_STAFF_INFO (ODS)
|
||
[stderr] [2026-03-19 01:22:48] INFO | etl_billiards | [ODS_STAFF_INFO] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:48] ERROR | etl_billiards | [ODS_STAFF_INFO] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:48] ERROR | etl_billiards | 任务 ODS_STAFF_INFO 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/PersonnelManagement/SearchSystemStaffInfo
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/PersonnelManagement/SearchSystemStaffInfo
|
||
[stderr] [2026-03-19 01:22:48] ERROR | etl_billiards | [ODS_STAFF_INFO] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/PersonnelManagement/SearchSystemStaffInfo
|
||
[stderr] [2026-03-19 01:22:48] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: ODS fetch+load start, dir=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\ODS_SETTLEMENT_RECORDS\ODS_SETTLEMENT_RECORDS-14508-20260319-012248
|
||
[stderr] [2026-03-19 01:22:48] INFO | etl_billiards | 开始执行ODS_SETTLEMENT_RECORDS (ODS)
|
||
[stderr] [2026-03-19 01:22:48] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:48] ERROR | etl_billiards | ODS_SETTLEMENT_RECORDS ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetAllOrderSettleList
|
||
[stderr] [2026-03-19 01:22:48] INFO | etl_billiards | [ODS_SETTLEMENT_RECORDS] 开始执行ODS_SETTLEMENT_RECORDS (ODS)
|
||
[stderr] [2026-03-19 01:22:48] INFO | etl_billiards | [ODS_SETTLEMENT_RECORDS] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:48] ERROR | etl_billiards | [ODS_SETTLEMENT_RECORDS] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:48] ERROR | etl_billiards | 任务 ODS_SETTLEMENT_RECORDS 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetAllOrderSettleList
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetAllOrderSettleList
|
||
[stderr] [2026-03-19 01:22:48] ERROR | etl_billiards | [ODS_SETTLEMENT_RECORDS] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetAllOrderSettleList
|
||
[stderr] [2026-03-19 01:22:48] INFO | etl_billiards | ODS_PAYMENT: ODS fetch+load start, dir=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\ODS_PAYMENT\ODS_PAYMENT-14509-20260319-012248
|
||
[stderr] [2026-03-19 01:22:48] INFO | etl_billiards | 开始执行ODS_PAYMENT (ODS)
|
||
[stderr] [2026-03-19 01:22:48] INFO | etl_billiards | ODS_PAYMENT: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:48] ERROR | etl_billiards | ODS_PAYMENT ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/PayLog/GetPayLogListPage
|
||
[stderr] [2026-03-19 01:22:48] INFO | etl_billiards | [ODS_PAYMENT] 开始执行ODS_PAYMENT (ODS)
|
||
[stderr] [2026-03-19 01:22:48] INFO | etl_billiards | [ODS_PAYMENT] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:48] ERROR | etl_billiards | [ODS_PAYMENT] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:48] ERROR | etl_billiards | 任务 ODS_PAYMENT 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/PayLog/GetPayLogListPage
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/PayLog/GetPayLogListPage
|
||
[stderr] [2026-03-19 01:22:48] ERROR | etl_billiards | [ODS_PAYMENT] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/PayLog/GetPayLogListPage
|
||
[stderr] [2026-03-19 01:22:48] INFO | etl_billiards | ODS_REFUND: ODS fetch+load start, dir=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\ODS_REFUND\ODS_REFUND-14510-20260319-012248
|
||
[stderr] [2026-03-19 01:22:48] INFO | etl_billiards | 开始执行ODS_REFUND (ODS)
|
||
[stderr] [2026-03-19 01:22:49] INFO | etl_billiards | ODS_REFUND: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:49] ERROR | etl_billiards | ODS_REFUND ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Order/GetRefundPayLogList
|
||
[stderr] [2026-03-19 01:22:49] INFO | etl_billiards | [ODS_REFUND] 开始执行ODS_REFUND (ODS)
|
||
[stderr] [2026-03-19 01:22:49] INFO | etl_billiards | [ODS_REFUND] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:49] ERROR | etl_billiards | [ODS_REFUND] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:49] ERROR | etl_billiards | 任务 ODS_REFUND 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Order/GetRefundPayLogList
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Order/GetRefundPayLogList
|
||
[stderr] [2026-03-19 01:22:49] ERROR | etl_billiards | [ODS_REFUND] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Order/GetRefundPayLogList
|
||
[stderr] [2026-03-19 01:22:49] INFO | etl_billiards | ODS_TABLE_USE: ODS fetch+load start, dir=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\ODS_TABLE_USE\ODS_TABLE_USE-14511-20260319-012249
|
||
[stderr] [2026-03-19 01:22:49] INFO | etl_billiards | 开始执行ODS_TABLE_USE (ODS)
|
||
[stderr] [2026-03-19 01:22:49] INFO | etl_billiards | ODS_TABLE_USE: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:49] ERROR | etl_billiards | ODS_TABLE_USE ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetSiteTableOrderDetails
|
||
[stderr] [2026-03-19 01:22:49] INFO | etl_billiards | [ODS_TABLE_USE] 开始执行ODS_TABLE_USE (ODS)
|
||
[stderr] [2026-03-19 01:22:49] INFO | etl_billiards | [ODS_TABLE_USE] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:49] ERROR | etl_billiards | [ODS_TABLE_USE] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:49] ERROR | etl_billiards | 任务 ODS_TABLE_USE 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetSiteTableOrderDetails
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetSiteTableOrderDetails
|
||
[stderr] [2026-03-19 01:22:49] ERROR | etl_billiards | [ODS_TABLE_USE] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetSiteTableOrderDetails
|
||
[stderr] [2026-03-19 01:22:49] 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-14512-20260319-012249
|
||
[stderr] [2026-03-19 01:22:49] INFO | etl_billiards | 开始执行ODS_TABLE_FEE_DISCOUNT (ODS)
|
||
[stderr] [2026-03-19 01:22:49] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:49] ERROR | etl_billiards | ODS_TABLE_FEE_DISCOUNT ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetTaiFeeAdjustList
|
||
[stderr] [2026-03-19 01:22:49] INFO | etl_billiards | [ODS_TABLE_FEE_DISCOUNT] 开始执行ODS_TABLE_FEE_DISCOUNT (ODS)
|
||
[stderr] [2026-03-19 01:22:49] INFO | etl_billiards | [ODS_TABLE_FEE_DISCOUNT] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:49] ERROR | etl_billiards | [ODS_TABLE_FEE_DISCOUNT] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:49] ERROR | etl_billiards | 任务 ODS_TABLE_FEE_DISCOUNT 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetTaiFeeAdjustList
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetTaiFeeAdjustList
|
||
[stderr] [2026-03-19 01:22:49] ERROR | etl_billiards | [ODS_TABLE_FEE_DISCOUNT] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetTaiFeeAdjustList
|
||
[stderr] [2026-03-19 01:22:50] INFO | etl_billiards | ODS_TABLES: ODS fetch+load start, dir=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\ODS_TABLES\ODS_TABLES-14513-20260319-012250
|
||
[stderr] [2026-03-19 01:22:50] INFO | etl_billiards | 开始执行ODS_TABLES (ODS)
|
||
[stderr] [2026-03-19 01:22:50] INFO | etl_billiards | ODS_TABLES: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:50] ERROR | etl_billiards | ODS_TABLES ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Table/GetSiteTables
|
||
[stderr] [2026-03-19 01:22:50] INFO | etl_billiards | [ODS_TABLES] 开始执行ODS_TABLES (ODS)
|
||
[stderr] [2026-03-19 01:22:50] INFO | etl_billiards | [ODS_TABLES] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:50] ERROR | etl_billiards | [ODS_TABLES] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:50] ERROR | etl_billiards | 任务 ODS_TABLES 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Table/GetSiteTables
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Table/GetSiteTables
|
||
[stderr] [2026-03-19 01:22:50] ERROR | etl_billiards | [ODS_TABLES] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Table/GetSiteTables
|
||
[stderr] [2026-03-19 01:22:50] INFO | etl_billiards | ODS_MEMBER: ODS fetch+load start, dir=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\ODS_MEMBER\ODS_MEMBER-14514-20260319-012250
|
||
[stderr] [2026-03-19 01:22:50] INFO | etl_billiards | 开始执行ODS_MEMBER (ODS)
|
||
[stderr] [2026-03-19 01:22:50] INFO | etl_billiards | ODS_MEMBER: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:50] ERROR | etl_billiards | ODS_MEMBER ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/MemberProfile/GetTenantMemberList
|
||
[stderr] [2026-03-19 01:22:50] INFO | etl_billiards | [ODS_MEMBER] 开始执行ODS_MEMBER (ODS)
|
||
[stderr] [2026-03-19 01:22:50] INFO | etl_billiards | [ODS_MEMBER] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:50] ERROR | etl_billiards | [ODS_MEMBER] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:50] ERROR | etl_billiards | 任务 ODS_MEMBER 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/MemberProfile/GetTenantMemberList
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/MemberProfile/GetTenantMemberList
|
||
[stderr] [2026-03-19 01:22:50] ERROR | etl_billiards | [ODS_MEMBER] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/MemberProfile/GetTenantMemberList
|
||
[stderr] [2026-03-19 01:22:50] INFO | etl_billiards | ODS_MEMBER_CARD: ODS fetch+load start, dir=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\ODS_MEMBER_CARD\ODS_MEMBER_CARD-14515-20260319-012250
|
||
[stderr] [2026-03-19 01:22:50] INFO | etl_billiards | 开始执行ODS_MEMBER_CARD (ODS)
|
||
[stderr] [2026-03-19 01:22:50] INFO | etl_billiards | ODS_MEMBER_CARD: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:51] ERROR | etl_billiards | ODS_MEMBER_CARD ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/MemberProfile/GetTenantMemberCardList
|
||
[stderr] [2026-03-19 01:22:51] INFO | etl_billiards | [ODS_MEMBER_CARD] 开始执行ODS_MEMBER_CARD (ODS)
|
||
[stderr] [2026-03-19 01:22:51] INFO | etl_billiards | [ODS_MEMBER_CARD] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:51] ERROR | etl_billiards | [ODS_MEMBER_CARD] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:51] ERROR | etl_billiards | 任务 ODS_MEMBER_CARD 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/MemberProfile/GetTenantMemberCardList
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/MemberProfile/GetTenantMemberCardList
|
||
[stderr] [2026-03-19 01:22:51] ERROR | etl_billiards | [ODS_MEMBER_CARD] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/MemberProfile/GetTenantMemberCardList
|
||
[stderr] [2026-03-19 01:22:51] INFO | etl_billiards | ODS_MEMBER_BALANCE: ODS fetch+load start, dir=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\ODS_MEMBER_BALANCE\ODS_MEMBER_BALANCE-14516-20260319-012251
|
||
[stderr] [2026-03-19 01:22:51] INFO | etl_billiards | 开始执行ODS_MEMBER_BALANCE (ODS)
|
||
[stderr] [2026-03-19 01:22:51] INFO | etl_billiards | ODS_MEMBER_BALANCE: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:51] ERROR | etl_billiards | ODS_MEMBER_BALANCE ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/MemberProfile/GetMemberCardBalanceChange
|
||
[stderr] [2026-03-19 01:22:51] INFO | etl_billiards | [ODS_MEMBER_BALANCE] 开始执行ODS_MEMBER_BALANCE (ODS)
|
||
[stderr] [2026-03-19 01:22:51] INFO | etl_billiards | [ODS_MEMBER_BALANCE] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:51] ERROR | etl_billiards | [ODS_MEMBER_BALANCE] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:51] ERROR | etl_billiards | 任务 ODS_MEMBER_BALANCE 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/MemberProfile/GetMemberCardBalanceChange
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/MemberProfile/GetMemberCardBalanceChange
|
||
[stderr] [2026-03-19 01:22:51] ERROR | etl_billiards | [ODS_MEMBER_BALANCE] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/MemberProfile/GetMemberCardBalanceChange
|
||
[stderr] [2026-03-19 01:22:51] INFO | etl_billiards | ODS_RECHARGE_SETTLE: ODS fetch+load start, dir=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\ODS_RECHARGE_SETTLE\ODS_RECHARGE_SETTLE-14517-20260319-012251
|
||
[stderr] [2026-03-19 01:22:51] INFO | etl_billiards | 开始执行ODS_RECHARGE_SETTLE (ODS)
|
||
[stderr] [2026-03-19 01:22:51] INFO | etl_billiards | ODS_RECHARGE_SETTLE: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:51] ERROR | etl_billiards | ODS_RECHARGE_SETTLE ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetRechargeSettleList
|
||
[stderr] [2026-03-19 01:22:51] INFO | etl_billiards | [ODS_RECHARGE_SETTLE] 开始执行ODS_RECHARGE_SETTLE (ODS)
|
||
[stderr] [2026-03-19 01:22:51] INFO | etl_billiards | [ODS_RECHARGE_SETTLE] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:51] ERROR | etl_billiards | [ODS_RECHARGE_SETTLE] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:51] ERROR | etl_billiards | 任务 ODS_RECHARGE_SETTLE 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetRechargeSettleList
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetRechargeSettleList
|
||
[stderr] [2026-03-19 01:22:51] ERROR | etl_billiards | [ODS_RECHARGE_SETTLE] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetRechargeSettleList
|
||
[stderr] [2026-03-19 01:22:51] INFO | etl_billiards | ODS_GOODS_CATEGORY: ODS fetch+load start, dir=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\ODS_GOODS_CATEGORY\ODS_GOODS_CATEGORY-14518-20260319-012251
|
||
[stderr] [2026-03-19 01:22:51] INFO | etl_billiards | 开始执行ODS_GOODS_CATEGORY (ODS)
|
||
[stderr] [2026-03-19 01:22:51] INFO | etl_billiards | ODS_GOODS_CATEGORY: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:51] ERROR | etl_billiards | ODS_GOODS_CATEGORY ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoodsCategory/QueryPrimarySecondaryCategory
|
||
[stderr] [2026-03-19 01:22:51] INFO | etl_billiards | [ODS_GOODS_CATEGORY] 开始执行ODS_GOODS_CATEGORY (ODS)
|
||
[stderr] [2026-03-19 01:22:51] INFO | etl_billiards | [ODS_GOODS_CATEGORY] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:51] ERROR | etl_billiards | [ODS_GOODS_CATEGORY] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:52] ERROR | etl_billiards | 任务 ODS_GOODS_CATEGORY 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoodsCategory/QueryPrimarySecondaryCategory
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoodsCategory/QueryPrimarySecondaryCategory
|
||
[stderr] [2026-03-19 01:22:52] ERROR | etl_billiards | [ODS_GOODS_CATEGORY] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoodsCategory/QueryPrimarySecondaryCategory
|
||
[stderr] [2026-03-19 01:22:52] INFO | etl_billiards | ODS_STORE_GOODS: ODS fetch+load start, dir=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\ODS_STORE_GOODS\ODS_STORE_GOODS-14519-20260319-012252
|
||
[stderr] [2026-03-19 01:22:52] INFO | etl_billiards | 开始执行ODS_STORE_GOODS (ODS)
|
||
[stderr] [2026-03-19 01:22:52] INFO | etl_billiards | ODS_STORE_GOODS: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:52] ERROR | etl_billiards | ODS_STORE_GOODS ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoods/GetGoodsInventoryList
|
||
[stderr] [2026-03-19 01:22:52] INFO | etl_billiards | [ODS_STORE_GOODS] 开始执行ODS_STORE_GOODS (ODS)
|
||
[stderr] [2026-03-19 01:22:52] INFO | etl_billiards | [ODS_STORE_GOODS] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:52] ERROR | etl_billiards | [ODS_STORE_GOODS] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:52] ERROR | etl_billiards | 任务 ODS_STORE_GOODS 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoods/GetGoodsInventoryList
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoods/GetGoodsInventoryList
|
||
[stderr] [2026-03-19 01:22:52] ERROR | etl_billiards | [ODS_STORE_GOODS] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoods/GetGoodsInventoryList
|
||
[stderr] [2026-03-19 01:22:52] 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-14520-20260319-012252
|
||
[stderr] [2026-03-19 01:22:52] INFO | etl_billiards | 开始执行ODS_STORE_GOODS_SALES (ODS)
|
||
[stderr] [2026-03-19 01:22:52] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:52] ERROR | etl_billiards | ODS_STORE_GOODS_SALES ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoods/GetGoodsSalesList
|
||
[stderr] [2026-03-19 01:22:52] INFO | etl_billiards | [ODS_STORE_GOODS_SALES] 开始执行ODS_STORE_GOODS_SALES (ODS)
|
||
[stderr] [2026-03-19 01:22:52] INFO | etl_billiards | [ODS_STORE_GOODS_SALES] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:52] ERROR | etl_billiards | [ODS_STORE_GOODS_SALES] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:52] ERROR | etl_billiards | 任务 ODS_STORE_GOODS_SALES 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoods/GetGoodsSalesList
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoods/GetGoodsSalesList
|
||
[stderr] [2026-03-19 01:22:52] ERROR | etl_billiards | [ODS_STORE_GOODS_SALES] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoods/GetGoodsSalesList
|
||
[stderr] [2026-03-19 01:22:52] INFO | etl_billiards | ODS_TENANT_GOODS: ODS fetch+load start, dir=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\ODS_TENANT_GOODS\ODS_TENANT_GOODS-14521-20260319-012252
|
||
[stderr] [2026-03-19 01:22:52] INFO | etl_billiards | 开始执行ODS_TENANT_GOODS (ODS)
|
||
[stderr] [2026-03-19 01:22:53] INFO | etl_billiards | ODS_TENANT_GOODS: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:53] ERROR | etl_billiards | ODS_TENANT_GOODS ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoods/QueryTenantGoods
|
||
[stderr] [2026-03-19 01:22:53] INFO | etl_billiards | [ODS_TENANT_GOODS] 开始执行ODS_TENANT_GOODS (ODS)
|
||
[stderr] [2026-03-19 01:22:53] INFO | etl_billiards | [ODS_TENANT_GOODS] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:53] ERROR | etl_billiards | [ODS_TENANT_GOODS] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:53] ERROR | etl_billiards | 任务 ODS_TENANT_GOODS 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoods/QueryTenantGoods
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoods/QueryTenantGoods
|
||
[stderr] [2026-03-19 01:22:53] ERROR | etl_billiards | [ODS_TENANT_GOODS] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoods/QueryTenantGoods
|
||
[stderr] [2026-03-19 01:22:53] INFO | etl_billiards | ODS_PLATFORM_COUPON: ODS fetch+load start, dir=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\ODS_PLATFORM_COUPON\ODS_PLATFORM_COUPON-14522-20260319-012253
|
||
[stderr] [2026-03-19 01:22:53] INFO | etl_billiards | 开始执行ODS_PLATFORM_COUPON (ODS)
|
||
[stderr] [2026-03-19 01:22:53] INFO | etl_billiards | ODS_PLATFORM_COUPON: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:53] ERROR | etl_billiards | ODS_PLATFORM_COUPON ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Promotion/GetOfflineCouponConsumePageList
|
||
[stderr] [2026-03-19 01:22:53] INFO | etl_billiards | [ODS_PLATFORM_COUPON] 开始执行ODS_PLATFORM_COUPON (ODS)
|
||
[stderr] [2026-03-19 01:22:53] INFO | etl_billiards | [ODS_PLATFORM_COUPON] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:53] ERROR | etl_billiards | [ODS_PLATFORM_COUPON] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:53] ERROR | etl_billiards | 任务 ODS_PLATFORM_COUPON 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Promotion/GetOfflineCouponConsumePageList
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Promotion/GetOfflineCouponConsumePageList
|
||
[stderr] [2026-03-19 01:22:53] ERROR | etl_billiards | [ODS_PLATFORM_COUPON] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Promotion/GetOfflineCouponConsumePageList
|
||
[stderr] [2026-03-19 01:22:53] INFO | etl_billiards | ODS_GROUP_PACKAGE: ODS fetch+load start, dir=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\ODS_GROUP_PACKAGE\ODS_GROUP_PACKAGE-14523-20260319-012253
|
||
[stderr] [2026-03-19 01:22:53] INFO | etl_billiards | 开始执行ODS_GROUP_PACKAGE (ODS)
|
||
[stderr] [2026-03-19 01:22:53] INFO | etl_billiards | ODS_GROUP_PACKAGE: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:53] ERROR | etl_billiards | ODS_GROUP_PACKAGE ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/PackageCoupon/QueryPackageCouponList
|
||
[stderr] [2026-03-19 01:22:53] INFO | etl_billiards | [ODS_GROUP_PACKAGE] 开始执行ODS_GROUP_PACKAGE (ODS)
|
||
[stderr] [2026-03-19 01:22:53] INFO | etl_billiards | [ODS_GROUP_PACKAGE] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:53] ERROR | etl_billiards | [ODS_GROUP_PACKAGE] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:53] ERROR | etl_billiards | 任务 ODS_GROUP_PACKAGE 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/PackageCoupon/QueryPackageCouponList
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/PackageCoupon/QueryPackageCouponList
|
||
[stderr] [2026-03-19 01:22:53] ERROR | etl_billiards | [ODS_GROUP_PACKAGE] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/PackageCoupon/QueryPackageCouponList
|
||
[stderr] [2026-03-19 01:22:54] 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-14524-20260319-012254
|
||
[stderr] [2026-03-19 01:22:54] INFO | etl_billiards | 开始执行ODS_GROUP_BUY_REDEMPTION (ODS)
|
||
[stderr] [2026-03-19 01:22:54] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:54] ERROR | etl_billiards | ODS_GROUP_BUY_REDEMPTION ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetSiteTableUseDetails
|
||
[stderr] [2026-03-19 01:22:54] INFO | etl_billiards | [ODS_GROUP_BUY_REDEMPTION] 开始执行ODS_GROUP_BUY_REDEMPTION (ODS)
|
||
[stderr] [2026-03-19 01:22:54] INFO | etl_billiards | [ODS_GROUP_BUY_REDEMPTION] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:54] ERROR | etl_billiards | [ODS_GROUP_BUY_REDEMPTION] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:54] ERROR | etl_billiards | 任务 ODS_GROUP_BUY_REDEMPTION 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetSiteTableUseDetails
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetSiteTableUseDetails
|
||
[stderr] [2026-03-19 01:22:54] ERROR | etl_billiards | [ODS_GROUP_BUY_REDEMPTION] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/Site/GetSiteTableUseDetails
|
||
[stderr] [2026-03-19 01:22:54] INFO | etl_billiards | ODS_INVENTORY_STOCK: ODS fetch+load start, dir=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\ODS_INVENTORY_STOCK\ODS_INVENTORY_STOCK-14525-20260319-012254
|
||
[stderr] [2026-03-19 01:22:54] INFO | etl_billiards | 开始执行ODS_INVENTORY_STOCK (ODS)
|
||
[stderr] [2026-03-19 01:22:54] INFO | etl_billiards | ODS_INVENTORY_STOCK: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:54] ERROR | etl_billiards | ODS_INVENTORY_STOCK ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoods/GetGoodsStockReport
|
||
[stderr] [2026-03-19 01:22:54] INFO | etl_billiards | [ODS_INVENTORY_STOCK] 开始执行ODS_INVENTORY_STOCK (ODS)
|
||
[stderr] [2026-03-19 01:22:54] INFO | etl_billiards | [ODS_INVENTORY_STOCK] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:54] ERROR | etl_billiards | [ODS_INVENTORY_STOCK] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:54] ERROR | etl_billiards | 任务 ODS_INVENTORY_STOCK 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoods/GetGoodsStockReport
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoods/GetGoodsStockReport
|
||
[stderr] [2026-03-19 01:22:54] ERROR | etl_billiards | [ODS_INVENTORY_STOCK] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/TenantGoods/GetGoodsStockReport
|
||
[stderr] [2026-03-19 01:22: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-14526-20260319-012254
|
||
[stderr] [2026-03-19 01:22:54] INFO | etl_billiards | 开始执行ODS_INVENTORY_CHANGE (ODS)
|
||
[stderr] [2026-03-19 01:22:54] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:55] ERROR | etl_billiards | ODS_INVENTORY_CHANGE ODS 任务失败
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/GoodsStockManage/QueryGoodsOutboundReceipt
|
||
[stderr] [2026-03-19 01:22:55] INFO | etl_billiards | [ODS_INVENTORY_CHANGE] 开始执行ODS_INVENTORY_CHANGE (ODS)
|
||
[stderr] [2026-03-19 01:22:55] INFO | etl_billiards | [ODS_INVENTORY_CHANGE] 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:55] ERROR | etl_billiards | [ODS_INVENTORY_CHANGE] ODS 任务失败
|
||
[stderr] [2026-03-19 01:22:55] ERROR | etl_billiards | 任务 ODS_INVENTORY_CHANGE 失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/GoodsStockManage/QueryGoodsOutboundReceipt
|
||
[stderr] Traceback (most recent call last):
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 97, in run_tasks
|
||
[stderr] task_result = self.run_single_task(
|
||
[stderr] task_code, run_uuid, store_id, data_source=data_source,
|
||
[stderr] )
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 191, in run_single_task
|
||
[stderr] result, last_dump = self._execute_ods_record_and_load(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] task_code, cursor_data, fetch_dir, run_id,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] )
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\orchestration\task_executor.py", line 340, in _execute_ods_record_and_load
|
||
[stderr] result = task.execute(cursor_data)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 233, in execute
|
||
[stderr] pipe_result = pipeline.run(requests, process_fn, write_fn)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 134, in run
|
||
[stderr] self._request_loop(requests, processing_queue, result)
|
||
[stderr] ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\pipeline\unified_pipeline.py", line 245, in _request_loop
|
||
[stderr] for req in requests:
|
||
[stderr] ^^^^^^^^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\tasks\ods\ods_tasks.py", line 444, in _build_requests
|
||
[stderr] for page_num, page_records, total, response_payload in self.api.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=spec.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<3 lines>...
|
||
[stderr] list_key=spec.list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\recording_client.py", line 61, in iter_paginated
|
||
[stderr] for page_no, records, request_params, response in self.base.iter_paginated(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<5 lines>...
|
||
[stderr] list_key=list_key,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 215, in iter_paginated
|
||
[stderr] for _, records, request_params, payload in self._iter_paginated_single(
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||
[stderr] endpoint=call.endpoint,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^^^^^^
|
||
[stderr] ...<7 lines>...
|
||
[stderr] page_end=page_end,
|
||
[stderr] ^^^^^^^^^^^^^^^^^^
|
||
[stderr] ):
|
||
[stderr] ^
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 177, in _iter_paginated_single
|
||
[stderr] payload = self._post_json(endpoint, page_params)
|
||
[stderr] File "C:\NeoZQYY\apps\etl\connectors\feiqiu\api\client.py", line 122, in _post_json
|
||
[stderr] resp.raise_for_status()
|
||
[stderr] ~~~~~~~~~~~~~~~~~~~~~^^
|
||
[stderr] File "C:\NeoZQYY\.venv\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
|
||
[stderr] raise HTTPError(http_error_msg, response=self)
|
||
[stderr] requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/GoodsStockManage/QueryGoodsOutboundReceipt
|
||
[stderr] [2026-03-19 01:22:55] ERROR | etl_billiards | [ODS_INVENTORY_CHANGE] 任务失败: 401 Client Error: Unauthorized for url: https://pc.ficoo.vip/apiprod/admin/v1/GoodsStockManage/QueryGoodsOutboundReceipt
|
||
[stderr] [2026-03-19 01:22:55] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 抓取阶段开始,目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWD_LOAD_FROM_ODS\DWD_LOAD_FROM_ODS-14527-20260319-012255
|
||
[stderr] [2026-03-19 01:22:55] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 抓取完成,文件=None,记录数=0
|
||
[stderr] [2026-03-19 01:22:55] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 本地清洗入库开始,源目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWD_LOAD_FROM_ODS\DWD_LOAD_FROM_ODS-14527-20260319-012255
|
||
[stderr] [2026-03-19 01:22:55] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:22:55] INFO | etl_billiards | DWD 装载开始:dwd.dim_site <= ods.table_fee_transactions
|
||
[stderr] [2026-03-19 01:22:55] INFO | etl_billiards | DWD 装载开始:dwd.dim_site_ex <= ods.table_fee_transactions
|
||
[stderr] [2026-03-19 01:22:55] INFO | etl_billiards | DWD 装载开始:dwd.dim_table <= ods.site_tables_master
|
||
[stderr] [2026-03-19 01:22:55] INFO | etl_billiards | DWD 装载开始:dwd.dim_table_ex <= ods.site_tables_master
|
||
[stderr] [2026-03-19 01:22:55] INFO | etl_billiards | DWD 装载完成:dwd.dim_table,用时 0.56s
|
||
[stderr] [2026-03-19 01:22:55] INFO | etl_billiards | DWD 装载开始:dwd.dim_assistant <= ods.assistant_accounts_master
|
||
[stderr] [2026-03-19 01:22:56] INFO | etl_billiards | DWD 装载完成:dwd.dim_table_ex,用时 0.63s
|
||
[stderr] [2026-03-19 01:22:56] INFO | etl_billiards | DWD 装载开始:dwd.dim_assistant_ex <= ods.assistant_accounts_master
|
||
[stderr] [2026-03-19 01:22:56] INFO | etl_billiards | DWD 装载完成:dwd.dim_site,用时 0.95s
|
||
[stderr] [2026-03-19 01:22:56] INFO | etl_billiards | DWD 装载开始:dwd.dim_member <= ods.member_profiles
|
||
[stderr] [2026-03-19 01:22:56] INFO | etl_billiards | DWD 装载完成:dwd.dim_site_ex,用时 1.03s
|
||
[stderr] [2026-03-19 01:22:56] INFO | etl_billiards | DWD 装载开始:dwd.dim_member_ex <= ods.member_profiles
|
||
[stderr] [2026-03-19 01:22:56] INFO | etl_billiards | DWD 装载完成:dwd.dim_assistant,用时 0.57s
|
||
[stderr] [2026-03-19 01:22:56] INFO | etl_billiards | DWD 装载开始:dwd.dim_member_card_account <= ods.member_stored_value_cards
|
||
[stderr] [2026-03-19 01:22:56] INFO | etl_billiards | DWD 装载完成:dwd.dim_assistant_ex,用时 0.72s
|
||
[stderr] [2026-03-19 01:22:56] INFO | etl_billiards | DWD 装载开始:dwd.dim_member_card_account_ex <= ods.member_stored_value_cards
|
||
[stderr] [2026-03-19 01:22:57] INFO | etl_billiards | DWD 装载完成:dwd.dim_member,用时 0.97s
|
||
[stderr] [2026-03-19 01:22:57] INFO | etl_billiards | DWD 装载开始:dwd.dim_tenant_goods <= ods.tenant_goods_master
|
||
[stderr] [2026-03-19 01:22:57] INFO | etl_billiards | DWD 装载完成:dwd.dim_member_ex,用时 0.93s
|
||
[stderr] [2026-03-19 01:22:57] INFO | etl_billiards | DWD 装载开始:dwd.dim_tenant_goods_ex <= ods.tenant_goods_master
|
||
[stderr] [2026-03-19 01:22:57] INFO | etl_billiards | DWD 装载完成:dwd.dim_member_card_account,用时 1.22s
|
||
[stderr] [2026-03-19 01:22:57] INFO | etl_billiards | DWD 装载开始:dwd.dim_store_goods <= ods.store_goods_master
|
||
[stderr] [2026-03-19 01:22:58] INFO | etl_billiards | DWD 装载完成:dwd.dim_tenant_goods,用时 1.00s
|
||
[stderr] [2026-03-19 01:22:58] INFO | etl_billiards | DWD 装载开始:dwd.dim_store_goods_ex <= ods.store_goods_master
|
||
[stderr] [2026-03-19 01:22:58] INFO | etl_billiards | DWD 装载完成:dwd.dim_tenant_goods_ex,用时 1.01s
|
||
[stderr] [2026-03-19 01:22:58] INFO | etl_billiards | DWD 装载开始:dwd.dim_goods_category <= ods.stock_goods_category_tree
|
||
[stderr] [2026-03-19 01:22:58] INFO | etl_billiards | DWD 装载完成:dwd.dim_store_goods,用时 0.92s
|
||
[stderr] [2026-03-19 01:22:58] INFO | etl_billiards | DWD 装载开始:dwd.dim_groupbuy_package <= ods.group_buy_packages
|
||
[stderr] [2026-03-19 01:22:58] INFO | etl_billiards | DWD 装载完成:dwd.dim_member_card_account_ex,用时 2.22s
|
||
[stderr] [2026-03-19 01:22:58] INFO | etl_billiards | DWD 装载开始:dwd.dim_groupbuy_package_ex <= ods.group_buy_packages
|
||
[stderr] [2026-03-19 01:22:59] INFO | etl_billiards | DWD 装载完成:dwd.dim_goods_category,用时 0.83s
|
||
[stderr] [2026-03-19 01:22:59] INFO | etl_billiards | DWD 装载开始:dwd.dim_staff <= ods.staff_info_master
|
||
[stderr] [2026-03-19 01:22:59] INFO | etl_billiards | DWD 装载完成:dwd.dim_store_goods_ex,用时 1.03s
|
||
[stderr] [2026-03-19 01:22:59] INFO | etl_billiards | DWD 装载开始:dwd.dim_staff_ex <= ods.staff_info_master
|
||
[stderr] [2026-03-19 01:22:59] INFO | etl_billiards | DWD 装载完成:dwd.dim_groupbuy_package,用时 0.77s
|
||
[stderr] [2026-03-19 01:22:59] INFO | etl_billiards | DWD 装载开始:dwd.dwd_settlement_head <= ods.settlement_records
|
||
[stderr] [2026-03-19 01:22:59] INFO | etl_billiards | DWD 装载完成:dwd.dim_groupbuy_package_ex,用时 0.64s
|
||
[stderr] [2026-03-19 01:22:59] INFO | etl_billiards | DWD 装载开始:dwd.dwd_settlement_head_ex <= ods.settlement_records
|
||
[stderr] [2026-03-19 01:22:59] INFO | etl_billiards | DWD 装载完成:dwd.dim_staff,用时 0.54s
|
||
[stderr] [2026-03-19 01:22:59] INFO | etl_billiards | DWD 装载开始:dwd.dwd_table_fee_log <= ods.table_fee_transactions
|
||
[stderr] [2026-03-19 01:22:59] INFO | etl_billiards | DWD 装载完成:dwd.dim_staff_ex,用时 0.53s
|
||
[stderr] [2026-03-19 01:22:59] INFO | etl_billiards | DWD 装载开始:dwd.dwd_table_fee_log_ex <= ods.table_fee_transactions
|
||
[stderr] [2026-03-19 01:22:59] INFO | etl_billiards | DWD 装载完成:dwd.dwd_settlement_head,用时 0.49s
|
||
[stderr] [2026-03-19 01:22:59] INFO | etl_billiards | DWD 装载开始:dwd.dwd_table_fee_adjust <= ods.table_fee_discount_records
|
||
[stderr] [2026-03-19 01:23:00] INFO | etl_billiards | DWD 装载完成:dwd.dwd_settlement_head_ex,用时 0.51s
|
||
[stderr] [2026-03-19 01:23:00] INFO | etl_billiards | DWD 装载开始:dwd.dwd_table_fee_adjust_ex <= ods.table_fee_discount_records
|
||
[stderr] [2026-03-19 01:23:00] INFO | etl_billiards | DWD 装载完成:dwd.dwd_table_fee_log,用时 0.47s
|
||
[stderr] [2026-03-19 01:23:00] INFO | etl_billiards | DWD 装载开始:dwd.dwd_store_goods_sale <= ods.store_goods_sales_records
|
||
[stderr] [2026-03-19 01:23:00] INFO | etl_billiards | DWD 装载完成:dwd.dwd_table_fee_log_ex,用时 0.48s
|
||
[stderr] [2026-03-19 01:23:00] INFO | etl_billiards | DWD 装载开始:dwd.dwd_store_goods_sale_ex <= ods.store_goods_sales_records
|
||
[stderr] [2026-03-19 01:23:00] INFO | etl_billiards | DWD 装载完成:dwd.dwd_table_fee_adjust,用时 0.57s
|
||
[stderr] [2026-03-19 01:23:00] INFO | etl_billiards | DWD 装载开始:dwd.dwd_assistant_service_log <= ods.assistant_service_records
|
||
[stderr] [2026-03-19 01:23:00] INFO | etl_billiards | DWD 装载完成:dwd.dwd_table_fee_adjust_ex,用时 0.47s
|
||
[stderr] [2026-03-19 01:23:00] INFO | etl_billiards | DWD 装载开始:dwd.dwd_assistant_service_log_ex <= ods.assistant_service_records
|
||
[stderr] [2026-03-19 01:23:00] INFO | etl_billiards | DWD 装载完成:dwd.dwd_store_goods_sale,用时 0.48s
|
||
[stderr] [2026-03-19 01:23:00] INFO | etl_billiards | DWD 装载开始:dwd.dwd_member_balance_change <= ods.member_balance_changes
|
||
[stderr] [2026-03-19 01:23:01] INFO | etl_billiards | DWD 装载完成:dwd.dwd_store_goods_sale_ex,用时 0.74s
|
||
[stderr] [2026-03-19 01:23:01] INFO | etl_billiards | DWD 装载开始:dwd.dwd_member_balance_change_ex <= ods.member_balance_changes
|
||
[stderr] [2026-03-19 01:23:01] INFO | etl_billiards | DWD 装载完成:dwd.dwd_assistant_service_log,用时 0.62s
|
||
[stderr] [2026-03-19 01:23:01] INFO | etl_billiards | DWD 装载开始:dwd.dwd_groupbuy_redemption <= ods.group_buy_redemption_records
|
||
[stderr] [2026-03-19 01:23:01] INFO | etl_billiards | DWD 装载完成:dwd.dwd_assistant_service_log_ex,用时 0.77s
|
||
[stderr] [2026-03-19 01:23:01] INFO | etl_billiards | DWD 装载开始:dwd.dwd_groupbuy_redemption_ex <= ods.group_buy_redemption_records
|
||
[stderr] [2026-03-19 01:23:01] INFO | etl_billiards | DWD 装载完成:dwd.dwd_member_balance_change,用时 0.67s
|
||
[stderr] [2026-03-19 01:23:01] INFO | etl_billiards | DWD 装载开始:dwd.dwd_platform_coupon_redemption <= ods.platform_coupon_redemption_records
|
||
[stderr] [2026-03-19 01:23:01] INFO | etl_billiards | DWD 装载完成:dwd.dwd_member_balance_change_ex,用时 0.46s
|
||
[stderr] [2026-03-19 01:23:01] INFO | etl_billiards | DWD 装载开始:dwd.dwd_platform_coupon_redemption_ex <= ods.platform_coupon_redemption_records
|
||
[stderr] [2026-03-19 01:23:01] INFO | etl_billiards | DWD 装载完成:dwd.dwd_groupbuy_redemption,用时 0.47s
|
||
[stderr] [2026-03-19 01:23:01] INFO | etl_billiards | DWD 装载开始:dwd.dwd_recharge_order <= ods.recharge_settlements
|
||
[stderr] [2026-03-19 01:23:01] INFO | etl_billiards | DWD 装载完成:dwd.dwd_groupbuy_redemption_ex,用时 0.48s
|
||
[stderr] [2026-03-19 01:23:01] INFO | etl_billiards | DWD 装载开始:dwd.dwd_recharge_order_ex <= ods.recharge_settlements
|
||
[stderr] [2026-03-19 01:23:01] INFO | etl_billiards | DWD 装载完成:dwd.dwd_platform_coupon_redemption,用时 0.48s
|
||
[stderr] [2026-03-19 01:23:01] INFO | etl_billiards | DWD 装载开始:dwd.dwd_payment <= ods.payment_transactions
|
||
[stderr] [2026-03-19 01:23:02] INFO | etl_billiards | DWD 装载完成:dwd.dwd_platform_coupon_redemption_ex,用时 0.51s
|
||
[stderr] [2026-03-19 01:23:02] INFO | etl_billiards | DWD 装载开始:dwd.dwd_refund <= ods.refund_transactions
|
||
[stderr] [2026-03-19 01:23:02] INFO | etl_billiards | DWD 装载完成:dwd.dwd_recharge_order,用时 0.58s
|
||
[stderr] [2026-03-19 01:23:02] INFO | etl_billiards | DWD 装载开始:dwd.dwd_refund_ex <= ods.refund_transactions
|
||
[stderr] [2026-03-19 01:23:02] INFO | etl_billiards | DWD 装载完成:dwd.dwd_payment,用时 0.50s
|
||
[stderr] [2026-03-19 01:23:02] INFO | etl_billiards | DWD 装载开始:dwd.dwd_goods_stock_summary <= ods.goods_stock_summary
|
||
[stderr] [2026-03-19 01:23:02] INFO | etl_billiards | DWD 装载完成:dwd.dwd_recharge_order_ex,用时 0.50s
|
||
[stderr] [2026-03-19 01:23:02] INFO | etl_billiards | DWD 装载开始:dwd.dwd_goods_stock_movement <= ods.goods_stock_movements
|
||
[stderr] [2026-03-19 01:23:02] INFO | etl_billiards | DWD 装载完成:dwd.dwd_refund,用时 0.46s
|
||
[stderr] [2026-03-19 01:23:02] INFO | etl_billiards | DWD 装载完成:dwd.dwd_refund_ex,用时 0.47s
|
||
[stderr] [2026-03-19 01:23:02] INFO | etl_billiards | DWD 装载完成:dwd.dwd_goods_stock_summary,用时 0.49s
|
||
[stderr] [2026-03-19 01:23:02] INFO | etl_billiards | DWD 装载完成:dwd.dwd_goods_stock_movement,用时 0.49s
|
||
[stderr] [2026-03-19 01:23:02] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 完成,统计={'tables': 42, 'errors': 0, 'error_details': 0}
|
||
[stderr] [2026-03-19 01:23:03] INFO | etl_billiards | DWS_ASSISTANT_PROJECT_TAG: 抓取阶段开始,目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_ASSISTANT_PROJECT_TAG\DWS_ASSISTANT_PROJECT_TAG-14528-20260319-012303
|
||
[stderr] [2026-03-19 01:23:03] INFO | etl_billiards | DWS_ASSISTANT_PROJECT_TAG: 提取助教服务数据
|
||
[stderr] [2026-03-19 01:23:03] INFO | etl_billiards | DWS_ASSISTANT_PROJECT_TAG: 抓取完成,文件=None,记录数=0
|
||
[stderr] [2026-03-19 01:23:03] INFO | etl_billiards | DWS_ASSISTANT_PROJECT_TAG: 本地清洗入库开始,源目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_ASSISTANT_PROJECT_TAG\DWS_ASSISTANT_PROJECT_TAG-14528-20260319-012303
|
||
[stderr] [2026-03-19 01:23:03] INFO | etl_billiards | DWS_ASSISTANT_PROJECT_TAG: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:23:03] INFO | etl_billiards | DWS_ASSISTANT_PROJECT_TAG: 提取助教服务数据
|
||
[stderr] [2026-03-19 01:23:03] INFO | etl_billiards | DWS_ASSISTANT_PROJECT_TAG: 生成 524 条标签记录(其中 278 条达标)
|
||
[stderr] [2026-03-19 01:23:15] INFO | etl_billiards | DWS_ASSISTANT_PROJECT_TAG: 删除 524 条,插入 524 条
|
||
[stderr] [2026-03-19 01:23:15] INFO | etl_billiards | DWS_ASSISTANT_PROJECT_TAG: 完成,统计={'status': 'SUCCESS', 'counts': {'inserted': 524, 'deleted': 524}}
|
||
[stderr] [2026-03-19 01:23:15] INFO | etl_billiards | DWS_MEMBER_PROJECT_TAG: 抓取阶段开始,目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_MEMBER_PROJECT_TAG\DWS_MEMBER_PROJECT_TAG-14529-20260319-012315
|
||
[stderr] [2026-03-19 01:23:15] INFO | etl_billiards | DWS_MEMBER_PROJECT_TAG: 提取客户台费时长数据
|
||
[stderr] [2026-03-19 01:23:15] INFO | etl_billiards | DWS_MEMBER_PROJECT_TAG: 抓取完成,文件=None,记录数=0
|
||
[stderr] [2026-03-19 01:23:15] INFO | etl_billiards | DWS_MEMBER_PROJECT_TAG: 本地清洗入库开始,源目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_MEMBER_PROJECT_TAG\DWS_MEMBER_PROJECT_TAG-14529-20260319-012315
|
||
[stderr] [2026-03-19 01:23:15] INFO | etl_billiards | DWS_MEMBER_PROJECT_TAG: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:23:15] INFO | etl_billiards | DWS_MEMBER_PROJECT_TAG: 提取客户台费时长数据
|
||
[stderr] [2026-03-19 01:23:16] INFO | etl_billiards | DWS_MEMBER_PROJECT_TAG: 生成 131 条标签记录(其中 109 条达标)
|
||
[stderr] [2026-03-19 01:23:19] INFO | etl_billiards | DWS_MEMBER_PROJECT_TAG: 删除 131 条,插入 131 条
|
||
[stderr] [2026-03-19 01:23:19] INFO | etl_billiards | DWS_MEMBER_PROJECT_TAG: 完成,统计={'status': 'SUCCESS', 'counts': {'inserted': 131, 'deleted': 131}}
|
||
[stderr] [2026-03-19 01:23:19] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 抓取阶段开始,目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_GOODS_STOCK_DAILY\DWS_GOODS_STOCK_DAILY-14530-20260319-012319
|
||
[stderr] [2026-03-19 01:23:19] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取数据,门店=2790685415443269,日期范围 2026-03-18 ~ 2026-03-19
|
||
[stderr] [2026-03-19 01:23:19] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取到 167 条 DWD 记录
|
||
[stderr] [2026-03-19 01:23:19] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 抓取完成,文件=None,记录数=0
|
||
[stderr] [2026-03-19 01:23:19] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 本地清洗入库开始,源目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_GOODS_STOCK_DAILY\DWS_GOODS_STOCK_DAILY-14530-20260319-012319
|
||
[stderr] [2026-03-19 01:23:19] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:23:19] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取数据,门店=2790685415443269,日期范围 2026-03-18 ~ 2026-03-19
|
||
[stderr] [2026-03-19 01:23:19] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取到 167 条 DWD 记录
|
||
[stderr] [2026-03-19 01:23:19] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 汇总完成,生成 64 条日度记录
|
||
[stderr] [2026-03-19 01:23:20] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 写入完成,inserted=64
|
||
[stderr] [2026-03-19 01:23:20] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 完成,统计={'counts': {'fetched': 64, 'inserted': 64, 'updated': 0, 'skipped': 0, 'errors': 0}}
|
||
[stderr] [2026-03-19 01:23:21] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 抓取阶段开始,目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_GOODS_STOCK_WEEKLY\DWS_GOODS_STOCK_WEEKLY-14531-20260319-012321
|
||
[stderr] [2026-03-19 01:23:21] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取数据,门店=2790685415443269,日期范围 2026-03-18 ~ 2026-03-19
|
||
[stderr] [2026-03-19 01:23:21] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取到 167 条 DWD 记录
|
||
[stderr] [2026-03-19 01:23:21] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 抓取完成,文件=None,记录数=0
|
||
[stderr] [2026-03-19 01:23:21] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 本地清洗入库开始,源目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_GOODS_STOCK_WEEKLY\DWS_GOODS_STOCK_WEEKLY-14531-20260319-012321
|
||
[stderr] [2026-03-19 01:23:21] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:23:21] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取数据,门店=2790685415443269,日期范围 2026-03-18 ~ 2026-03-19
|
||
[stderr] [2026-03-19 01:23:21] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取到 167 条 DWD 记录
|
||
[stderr] [2026-03-19 01:23:21] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 汇总完成,生成 64 条周度记录
|
||
[stderr] [2026-03-19 01:23:22] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 写入完成,inserted=64
|
||
[stderr] [2026-03-19 01:23:22] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 完成,统计={'counts': {'fetched': 64, 'inserted': 64, 'updated': 0, 'skipped': 0, 'errors': 0}}
|
||
[stderr] [2026-03-19 01:23:23] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 抓取阶段开始,目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_GOODS_STOCK_MONTHLY\DWS_GOODS_STOCK_MONTHLY-14532-20260319-012323
|
||
[stderr] [2026-03-19 01:23:23] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取数据,门店=2790685415443269,日期范围 2026-03-18 ~ 2026-03-19
|
||
[stderr] [2026-03-19 01:23:23] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取到 167 条 DWD 记录
|
||
[stderr] [2026-03-19 01:23:23] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 抓取完成,文件=None,记录数=0
|
||
[stderr] [2026-03-19 01:23:23] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 本地清洗入库开始,源目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_GOODS_STOCK_MONTHLY\DWS_GOODS_STOCK_MONTHLY-14532-20260319-012323
|
||
[stderr] [2026-03-19 01:23:23] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:23:23] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取数据,门店=2790685415443269,日期范围 2026-03-18 ~ 2026-03-19
|
||
[stderr] [2026-03-19 01:23:23] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取到 167 条 DWD 记录
|
||
[stderr] [2026-03-19 01:23:23] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 汇总完成,生成 64 条月度记录
|
||
[stderr] [2026-03-19 01:23:24] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 写入完成,inserted=64
|
||
[stderr] [2026-03-19 01:23:24] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 完成,统计={'counts': {'fetched': 64, 'inserted': 64, 'updated': 0, 'skipped': 0, 'errors': 0}}
|
||
[stderr] [2026-03-19 01:23:25] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 抓取阶段开始,目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_ASSISTANT_DAILY\DWS_ASSISTANT_DAILY-14533-20260319-012325
|
||
[stderr] [2026-03-19 01:23:25] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 提取数据,日期范围 2026-03-18 ~ 2026-03-19
|
||
[stderr] [2026-03-19 01:23:25] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 抓取完成,文件=None,记录数=0
|
||
[stderr] [2026-03-19 01:23:25] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 本地清洗入库开始,源目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_ASSISTANT_DAILY\DWS_ASSISTANT_DAILY-14533-20260319-012325
|
||
[stderr] [2026-03-19 01:23:25] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:23:25] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 提取数据,日期范围 2026-03-18 ~ 2026-03-19
|
||
[stderr] [2026-03-19 01:23:25] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 转换数据,服务记录 9 条
|
||
[stderr] [2026-03-19 01:23:25] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 完成,统计={'counts': {'fetched': 8, 'inserted': 8, 'updated': 0, 'skipped': 0, 'errors': 0}, 'extra': {'deleted': 7}}
|
||
[stderr] [2026-03-19 01:23:26] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 抓取阶段开始,目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_ASSISTANT_CUSTOMER\DWS_ASSISTANT_CUSTOMER-14534-20260319-012326
|
||
[stderr] [2026-03-19 01:23:26] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 提取数据,统计日期 2026-03-19
|
||
[stderr] [2026-03-19 01:23:26] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 抓取完成,文件=None,记录数=0
|
||
[stderr] [2026-03-19 01:23:26] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 本地清洗入库开始,源目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_ASSISTANT_CUSTOMER\DWS_ASSISTANT_CUSTOMER-14534-20260319-012326
|
||
[stderr] [2026-03-19 01:23:26] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:23:26] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 提取数据,统计日期 2026-03-19
|
||
[stderr] [2026-03-19 01:23:26] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 转换数据,228 条服务关系记录
|
||
[stderr] [2026-03-19 01:23:31] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 完成,统计={'counts': {'fetched': 228, 'inserted': 228, 'updated': 0, 'skipped': 0, 'errors': 0}, 'extra': {'deleted': 226}}
|
||
[stderr] [2026-03-19 01:23:32] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 抓取阶段开始,目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_ASSISTANT_SALARY\DWS_ASSISTANT_SALARY-14535-20260319-012332
|
||
[stderr] [2026-03-19 01:23:32] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 非工资结算期,跳过
|
||
[stderr] [2026-03-19 01:23:32] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 抓取完成,文件=None,记录数=0
|
||
[stderr] [2026-03-19 01:23:32] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 本地清洗入库开始,源目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_ASSISTANT_SALARY\DWS_ASSISTANT_SALARY-14535-20260319-012332
|
||
[stderr] [2026-03-19 01:23:32] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:23:32] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 非工资结算期,跳过
|
||
[stderr] [2026-03-19 01:23:32] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 无数据需要写入
|
||
[stderr] [2026-03-19 01:23:32] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 完成,统计={'counts': {'fetched': 0, 'inserted': 0, 'updated': 0, 'skipped': 0, 'errors': 0}}
|
||
[stderr] [2026-03-19 01:23:32] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 开始执行工具类任务
|
||
[stderr] [2026-03-19 01:23:32] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 开始执行(1/1), 窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:23:32] INFO | etl_billiards | DWS订单汇总: 删除=111 语句=DELETE FROM dws.dws_order_summary WHERE 1=1 AND site_id = %s AND order_date >= %s AND order_date <= %s
|
||
[stderr] [2026-03-19 01:23:32] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 完成, 统计={'fetched': 0, 'inserted': 119, 'updated': 0, 'skipped': 0, 'errors': 0}
|
||
[stderr] [2026-03-19 01:23:32] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 工具类任务执行成功
|
||
[stderr] [2026-03-19 01:23:32] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 结果统计: {'fetched': 0, 'inserted': 119, 'updated': 0, 'skipped': 0, 'errors': 0}
|
||
[stderr] [2026-03-19 01:23:32] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 抓取阶段开始,目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_MEMBER_CONSUMPTION\DWS_MEMBER_CONSUMPTION-14536-20260319-012332
|
||
[stderr] [2026-03-19 01:23:32] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 提取数据,统计日期 2026-03-19
|
||
[stderr] [2026-03-19 01:23:32] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 抓取完成,文件=None,记录数=0
|
||
[stderr] [2026-03-19 01:23:32] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 本地清洗入库开始,源目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_MEMBER_CONSUMPTION\DWS_MEMBER_CONSUMPTION-14536-20260319-012332
|
||
[stderr] [2026-03-19 01:23:32] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:23:32] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 提取数据,统计日期 2026-03-19
|
||
[stderr] [2026-03-19 01:23:33] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 转换数据,199 条会员消费记录
|
||
[stderr] [2026-03-19 01:23:37] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 完成,统计={'counts': {'fetched': 199, 'inserted': 199, 'updated': 0, 'skipped': 0, 'errors': 0}, 'extra': {'deleted': 199}}
|
||
[stderr] [2026-03-19 01:23:38] INFO | etl_billiards | DWS_MEMBER_VISIT: 抓取阶段开始,目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_MEMBER_VISIT\DWS_MEMBER_VISIT-14537-20260319-012338
|
||
[stderr] [2026-03-19 01:23:38] INFO | etl_billiards | DWS_MEMBER_VISIT: 提取数据,日期范围 2026-03-18 ~ 2026-03-19
|
||
[stderr] [2026-03-19 01:23:38] INFO | etl_billiards | DWS_MEMBER_VISIT: 抓取完成,文件=None,记录数=0
|
||
[stderr] [2026-03-19 01:23:38] INFO | etl_billiards | DWS_MEMBER_VISIT: 本地清洗入库开始,源目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_MEMBER_VISIT\DWS_MEMBER_VISIT-14537-20260319-012338
|
||
[stderr] [2026-03-19 01:23:38] INFO | etl_billiards | DWS_MEMBER_VISIT: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:23:38] INFO | etl_billiards | DWS_MEMBER_VISIT: 提取数据,日期范围 2026-03-18 ~ 2026-03-19
|
||
[stderr] [2026-03-19 01:23:38] INFO | etl_billiards | DWS_MEMBER_VISIT: 转换数据,11 条结账单
|
||
[stderr] [2026-03-19 01:23:39] INFO | etl_billiards | DWS_MEMBER_VISIT: 完成,统计={'counts': {'fetched': 11, 'inserted': 11, 'updated': 0, 'skipped': 0, 'errors': 0}, 'extra': {'deleted': 9, 'extra_deleted': 0}}
|
||
[stderr] [2026-03-19 01:23:39] INFO | etl_billiards | DWS_FINANCE_DAILY: 抓取阶段开始,目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_FINANCE_DAILY\DWS_FINANCE_DAILY-14538-20260319-012339
|
||
[stderr] [2026-03-19 01:23:39] INFO | etl_billiards | DWS_FINANCE_DAILY: 提取数据,日期范围 2026-03-18 ~ 2026-03-19
|
||
[stderr] [2026-03-19 01:23:39] INFO | etl_billiards | DWS_FINANCE_DAILY: 抓取完成,文件=None,记录数=0
|
||
[stderr] [2026-03-19 01:23:39] INFO | etl_billiards | DWS_FINANCE_DAILY: 本地清洗入库开始,源目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_FINANCE_DAILY\DWS_FINANCE_DAILY-14538-20260319-012339
|
||
[stderr] [2026-03-19 01:23:39] INFO | etl_billiards | DWS_FINANCE_DAILY: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:23:39] INFO | etl_billiards | DWS_FINANCE_DAILY: 提取数据,日期范围 2026-03-18 ~ 2026-03-19
|
||
[stderr] [2026-03-19 01:23:39] INFO | etl_billiards | DWS_FINANCE_DAILY: 转换数据,1 天结账数据,0 天充值数据
|
||
[stderr] [2026-03-19 01:23:39] INFO | etl_billiards | DWS_FINANCE_DAILY: 完成,统计={'counts': {'fetched': 1, 'inserted': 1, 'updated': 0, 'skipped': 0, 'errors': 0}, 'extra': {'deleted': 1}}
|
||
[stderr] [2026-03-19 01:23:40] INFO | etl_billiards | DWS_FINANCE_RECHARGE: 抓取阶段开始,目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_FINANCE_RECHARGE\DWS_FINANCE_RECHARGE-14539-20260319-012340
|
||
[stderr] [2026-03-19 01:23:40] INFO | etl_billiards | DWS_FINANCE_RECHARGE: 抓取完成,文件=None,记录数=0
|
||
[stderr] [2026-03-19 01:23:40] INFO | etl_billiards | DWS_FINANCE_RECHARGE: 本地清洗入库开始,源目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_FINANCE_RECHARGE\DWS_FINANCE_RECHARGE-14539-20260319-012340
|
||
[stderr] [2026-03-19 01:23:40] INFO | etl_billiards | DWS_FINANCE_RECHARGE: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:23:40] INFO | etl_billiards | DWS_FINANCE_RECHARGE: 完成,统计={'counts': {'fetched': 0, 'inserted': 0, 'updated': 0, 'skipped': 0, 'errors': 0}}
|
||
[stderr] [2026-03-19 01:23:40] INFO | etl_billiards | DWS_FINANCE_INCOME_STRUCTURE: 抓取阶段开始,目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_FINANCE_INCOME_STRUCTURE\DWS_FINANCE_INCOME_STRUCTURE-14540-20260319-012340
|
||
[stderr] [2026-03-19 01:23:40] INFO | etl_billiards | DWS_FINANCE_INCOME_STRUCTURE: 抓取完成,文件=None,记录数=0
|
||
[stderr] [2026-03-19 01:23:40] INFO | etl_billiards | DWS_FINANCE_INCOME_STRUCTURE: 本地清洗入库开始,源目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_FINANCE_INCOME_STRUCTURE\DWS_FINANCE_INCOME_STRUCTURE-14540-20260319-012340
|
||
[stderr] [2026-03-19 01:23:40] INFO | etl_billiards | DWS_FINANCE_INCOME_STRUCTURE: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:23:41] INFO | etl_billiards | DWS_FINANCE_INCOME_STRUCTURE: 完成,统计={'deleted': 8, 'inserted': 8}
|
||
[stderr] [2026-03-19 01:23:41] INFO | etl_billiards | DWS_FINANCE_DISCOUNT_DETAIL: 抓取阶段开始,目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_FINANCE_DISCOUNT_DETAIL\DWS_FINANCE_DISCOUNT_DETAIL-14541-20260319-012341
|
||
[stderr] [2026-03-19 01:23:41] INFO | etl_billiards | DWS_FINANCE_DISCOUNT_DETAIL: 抓取完成,文件=None,记录数=0
|
||
[stderr] [2026-03-19 01:23:41] INFO | etl_billiards | DWS_FINANCE_DISCOUNT_DETAIL: 本地清洗入库开始,源目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_FINANCE_DISCOUNT_DETAIL\DWS_FINANCE_DISCOUNT_DETAIL-14541-20260319-012341
|
||
[stderr] [2026-03-19 01:23:41] INFO | etl_billiards | DWS_FINANCE_DISCOUNT_DETAIL: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:23:41] INFO | etl_billiards | DWS_FINANCE_DISCOUNT_DETAIL: 完成,统计={'deleted': 8, 'inserted': 8}
|
||
[stderr] [2026-03-19 01:23:42] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 抓取阶段开始,目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_ASSISTANT_MONTHLY\DWS_ASSISTANT_MONTHLY-14542-20260319-012342
|
||
[stderr] [2026-03-19 01:23:42] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 提取数据,月份范围 ['2026-03-01']
|
||
[stderr] [2026-03-19 01:23:42] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 抓取完成,文件=None,记录数=0
|
||
[stderr] [2026-03-19 01:23:42] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 本地清洗入库开始,源目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_ASSISTANT_MONTHLY\DWS_ASSISTANT_MONTHLY-14542-20260319-012342
|
||
[stderr] [2026-03-19 01:23:42] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:23:42] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 提取数据,月份范围 ['2026-03-01']
|
||
[stderr] [2026-03-19 01:23:42] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 转换数据,1 个月份,25 条聚合记录
|
||
[stderr] [2026-03-19 01:23:43] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 加载完成,删除 25 行,插入 25 行
|
||
[stderr] [2026-03-19 01:23:43] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 完成,统计={'counts': {'fetched': 25, 'inserted': 25, 'updated': 0, 'skipped': 0, 'errors': 0}, 'extra': {'deleted': 25}}
|
||
[stderr] [2026-03-19 01:23:43] INFO | etl_billiards | DWS_ASSISTANT_FINANCE: 抓取阶段开始,目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_ASSISTANT_FINANCE\DWS_ASSISTANT_FINANCE-14543-20260319-012343
|
||
[stderr] [2026-03-19 01:23:43] INFO | etl_billiards | DWS_ASSISTANT_FINANCE: 抓取完成,文件=None,记录数=0
|
||
[stderr] [2026-03-19 01:23:43] INFO | etl_billiards | DWS_ASSISTANT_FINANCE: 本地清洗入库开始,源目录=C:\NeoZQYY\export\ETL-Connectors\feiqiu\JSON\DWS_ASSISTANT_FINANCE\DWS_ASSISTANT_FINANCE-14543-20260319-012343
|
||
[stderr] [2026-03-19 01:23:43] INFO | etl_billiards | DWS_ASSISTANT_FINANCE: 开始执行(1/1),窗口[2026-03-18 19:22:46.318958+08:00 ~ 2026-03-19 03:22:46.318958+08:00]
|
||
[stderr] [2026-03-19 01:23:44] INFO | etl_billiards | DWS_ASSISTANT_FINANCE: 完成,统计={'counts': {'fetched': 8, 'inserted': 8, 'updated': 0, 'skipped': 0, 'errors': 0}, 'extra': {'deleted': 7}}
|
||
[stderr] [2026-03-19 01:23:44] INFO | etl_billiards | DWS_WINBACK_INDEX: 开始执行工具类任务
|
||
[stderr] [2026-03-19 01:23:44] INFO | etl_billiards | 开始计算 DWS_WINBACK_INDEX
|
||
[stderr] [2026-03-19 01:23:44] INFO | etl_billiards | DWS_WINBACK_INDEX: 使用回溯天数覆盖 lookback_days_recency=60
|
||
[stderr] [2026-03-19 01:23:46] INFO | etl_billiards | WBI calculation finished, inserted 52 rows
|
||
[stderr] [2026-03-19 01:23:46] INFO | etl_billiards | DWS_WINBACK_INDEX: 工具类任务执行成功
|
||
[stderr] [2026-03-19 01:23:46] INFO | etl_billiards | DWS_NEWCONV_INDEX: 开始执行工具类任务
|
||
[stderr] [2026-03-19 01:23:46] INFO | etl_billiards | 开始计算 DWS_NEWCONV_INDEX
|
||
[stderr] [2026-03-19 01:23:46] INFO | etl_billiards | DWS_NEWCONV_INDEX: 使用回溯天数覆盖 lookback_days_recency=60
|
||
[stderr] [2026-03-19 01:23:46] INFO | etl_billiards | NCI calculation finished, inserted 12 rows
|
||
[stderr] [2026-03-19 01:23:46] INFO | etl_billiards | DWS_NEWCONV_INDEX: 工具类任务执行成功
|
||
[stderr] [2026-03-19 01:23:46] INFO | etl_billiards | DWS_RELATION_INDEX: 开始执行工具类任务
|
||
[stderr] [2026-03-19 01:23:46] INFO | etl_billiards | 开始计算关系指数(RS/OS/MS/ML)
|
||
[stderr] [2026-03-19 01:23:47] INFO | etl_billiards | 服务关系对数量: 106
|
||
[stderr] [2026-03-19 01:23:50] INFO | etl_billiards | 关系指数计算完成,写入 106 条记录
|
||
[stderr] [2026-03-19 01:23:50] INFO | etl_billiards | DWS_RELATION_INDEX: 工具类任务执行成功
|
||
[stderr] [2026-03-19 01:23:50] INFO | etl_billiards | DWS_SPENDING_POWER_INDEX: 开始执行工具类任务
|
||
[stderr] [2026-03-19 01:23:50] INFO | etl_billiards | 开始计算 SPI 消费力指数
|
||
[stderr] [2026-03-19 01:23:50] INFO | etl_billiards | SPI 消费特征提取完成: site_id=2790685415443269, 会员数=94, 窗口=30/90天
|
||
[stderr] [2026-03-19 01:23:50] INFO | etl_billiards | SPI 充值特征提取完成: site_id=2790685415443269, 有充值会员数=36, 窗口=90天
|
||
[stderr] [2026-03-19 01:23:50] INFO | etl_billiards | SPI 日消费 EWMA 批量计算完成: site_id=2790685415443269, 会员数=94, α=0.30
|
||
[stderr] [2026-03-19 01:23:50] INFO | etl_billiards | SPI 基数校准: amount_base_spend_30 非零样本 12/94,中位数 378.00
|
||
[stderr] [2026-03-19 01:23:50] INFO | etl_billiards | SPI 基数校准: amount_base_spend_90 非零样本 45/94,中位数 236.00
|
||
[stderr] [2026-03-19 01:23:50] INFO | etl_billiards | SPI 基数校准: amount_base_ticket_90 非零样本 45/94,中位数 36.25
|
||
[stderr] [2026-03-19 01:23:50] INFO | etl_billiards | SPI 基数校准: amount_base_recharge_90 非零样本 36/94,中位数 6100.00
|
||
[stderr] [2026-03-19 01:23:50] INFO | etl_billiards | SPI 基数校准: amount_base_speed_abs 非零样本 12/94,中位数 124.26
|
||
[stderr] [2026-03-19 01:23:50] INFO | etl_billiards | SPI 基数校准: amount_base_ewma_90 非零样本 45/94,中位数 48.00
|
||
[stderr] [2026-03-19 01:23:52] INFO | etl_billiards | SPI 数据写入完成: site_id=2790685415443269, 插入记录=94
|
||
[stderr] [2026-03-19 01:23:52] INFO | etl_billiards | SPI 计算完成: site_id=2790685415443269, 会员数=94, 写入记录=94
|
||
[stderr] [2026-03-19 01:23:52] INFO | etl_billiards | DWS_SPENDING_POWER_INDEX: 工具类任务执行成功
|
||
[stderr] [2026-03-19 01:23:52] INFO | etl_billiards | 所有任务执行完成
|
||
[stderr] [2026-03-19 01:24:03] INFO | etl_billiards | 一致性检查报告已生成: C:\NeoZQYY\export\ETL-Connectors\feiqiu\REPORTS\consistency_report_20260319_012403.md
|
||
[stderr] [2026-03-19 01:24:03] INFO | etl_billiards | 计时报告已生成
|
||
[stderr] [2026-03-19 01:24:03] INFO | etl_billiards |
|
||
[stderr] ╔══════════════════════════════════════════════════════════════╗
|
||
[stderr] ║ 任务执行总结 ║
|
||
[stderr] ╠══════════════════════════════════════════════════════════════╣
|
||
[stderr] ║ 任务代码: FLOW_API_FULL ║
|
||
[stderr] ║ 执行状态: 成功 ║
|
||
[stderr] ║ 执行时间: 2026-03-19 01:22:46 ~ 01:24:03 (1分17秒) ║
|
||
[stderr] ╠══════════════════════════════════════════════════════════════╣
|
||
[stderr] ║ 数据统计 ║
|
||
[stderr] ║ - 获取记录: 0 ║
|
||
[stderr] ║ - 新增记录: 135 ║
|
||
[stderr] ║ - 更新记录: 0 ║
|
||
[stderr] ║ - 跳过记录: 0 ║
|
||
[stderr] ║ - 错误记录: 0 ║
|
||
[stderr] ╚══════════════════════════════════════════════════════════════╝
|
||
[stderr] [2026-03-19 01:24:03] INFO | etl_billiards |
|
||
[stderr] ╔══════════════════════════════════════════════════════════════╗
|
||
[stderr] ║ 任务执行总结 ║
|
||
[stderr] ╠══════════════════════════════════════════════════════════════╣
|
||
[stderr] ║ 任务代码: FLOW_API_FULL ║
|
||
[stderr] ║ 执行状态: 成功 ║
|
||
[stderr] ║ 执行时间: 2026-03-19 01:22:46 ~ 01:24:03 (1分17秒) ║
|
||
[stderr] ╠══════════════════════════════════════════════════════════════╣
|
||
[stderr] ║ 数据统计 ║
|
||
[stderr] ║ - 获取记录: 0 ║
|
||
[stderr] ║ - 新增记录: 135 ║
|
||
[stderr] ║ - 更新记录: 0 ║
|
||
[stderr] ║ - 跳过记录: 0 ║
|
||
[stderr] ║ - 错误记录: 0 ║
|
||
[stderr] ╚══════════════════════════════════════════════════════════════╝
|
||
[stderr] [2026-03-19 01:24:03] INFO | etl_billiards | Flow 执行完成: SUCCESS
|
||
[stderr] [2026-03-19 01:24:03] INFO | etl_billiards | ETL运行完成 |