改 相对路径 完成客户端

This commit is contained in:
Neo
2026-01-27 22:14:01 +08:00
parent 04c064793a
commit 9f8976e75a
292 changed files with 307062 additions and 678 deletions

View File

@@ -14,7 +14,7 @@
**环境要求**Python 3.10+PostgreSQL`.env` 关键项:
- `PG_DSN=postgresql://local-Python:Neo-local-1991125@100.64.0.4:5432/LLZQ-test`
- `INGEST_SOURCE_DIR=C:\dev\LLTQ\export\test-json-doc`
- `INGEST_SOURCE_DIR=export/test-json-doc`
**安装依赖**
```bash
@@ -28,7 +28,7 @@ pip install -r requirements.txt
python -m etl_billiards.cli.main --tasks INIT_ODS_SCHEMA,INIT_DWD_SCHEMA --pipeline-flow INGEST_ONLY
# 灌入示例 JSON 到 ODS可用 .env 的 INGEST_SOURCE_DIR 覆盖)
python -m etl_billiards.cli.main --tasks MANUAL_INGEST --pipeline-flow INGEST_ONLY --ingest-source "C:\dev\LLTQ\export\test-json-doc"
python -m etl_billiards.cli.main --tasks MANUAL_INGEST --pipeline-flow INGEST_ONLY --ingest-source "export/test-json-doc"
# 从 ODS 装载 DWD
python -m etl_billiards.cli.main --tasks DWD_LOAD_FROM_ODS --pipeline-flow INGEST_ONLY
@@ -46,7 +46,7 @@ python -m etl_billiards.cli.main --tasks DWD_QUALITY_CHECK --pipeline-flow INGES
---
## 3. 配置与路径
- 示例数据目录:`C:\dev\LLTQ\export\test-json-doc`(可由 `.env``INGEST_SOURCE_DIR` 覆盖)。
- 示例数据目录:`export/test-json-doc`(可由 `.env``INGEST_SOURCE_DIR` 覆盖)。
- 日志/导出目录:`LOG_ROOT``EXPORT_ROOT``.env`
- 报表:`etl_billiards/reports/dwd_quality_report.json`
- DDL`etl_billiards/database/schema_ODS_doc.sql``etl_billiards/database/schema_dwd_doc.sql`

View File

@@ -20,7 +20,7 @@ class ManualIngestTask(BaseTask):
super().__init__(config, db_connection, api_client, logger)
self._table_columns_cache: dict[str, list[str]] = {}
# 鏂囦欢鍏抽敭璇?-> 鐩爣琛紙鍖归厤 C:\dev\LLTQ\export\temp\source-data-doc 涓嬬ず鑼?JSON 鍚嶇О锛? FILE_MAPPING: list[tuple[tuple[str, ...], str]] = [
# 鏂囦欢鍏抽敭璇?-> 鐩爣琛紙鍖归厤 export/temp/source-data-doc 涓嬬ず鑼?JSON 鍚嶇О锛? FILE_MAPPING: list[tuple[tuple[str, ...], str]] = [
(("浼氬憳妗f", "member_profiles"), "billiards_ods.member_profiles"),
(("浣欓鍙樻洿璁板綍", "member_balance_changes"), "billiards_ods.member_balance_changes"),
(("鍌ㄥ€煎崱鍒楄〃", "member_stored_value_cards"), "billiards_ods.member_stored_value_cards"),
@@ -84,7 +84,7 @@ class ManualIngestTask(BaseTask):
data_dir = (
self.config.get("manual.data_dir")
or self.config.get("pipeline.ingest_source_dir")
or r"c:\dev\LLTQ\ETL\feiqiu-ETL\etl_billiards\tests\testdata_json"
or r"tests/testdata_json"
)
if not os.path.exists(data_dir):
self.logger.error("Data directory not found: %s", data_dir)

View File

@@ -79,7 +79,7 @@ class ManualIngestTask(BaseTask):
data_dir = (
self.config.get("manual.data_dir")
or self.config.get("pipeline.ingest_source_dir")
or r"c:\dev\LLTQ\ETL\feiqiu-ETL\etl_billiards\tests\testdata_json"
or r"tests/testdata_json"
)
if not os.path.exists(data_dir):
self.logger.error("Data directory not found: %s", data_dir)

View File

@@ -25,7 +25,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.member_profiles (
payload JSONB NOT NULL
);
COMMENT ON TABLE billiards_ods.member_profiles IS 'ODS 原始明细表:会员档案/会员账户信息。来源:C:/dev/LLTQ/export/test-json-doc/member_profiles.json分析member_profiles-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.member_profiles IS 'ODS 原始明细表:会员档案/会员账户信息。来源export/test-json-doc/member_profiles.json分析member_profiles-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.member_profiles.tenant_id IS '【说明】租户/品牌 ID。 【示例】2790683160709957用于租户/品牌 ID。 【JSON字段】tenant_id。';
COMMENT ON COLUMN billiards_ods.member_profiles.register_site_id IS '【说明】会员的注册门店 ID。 【示例】2790685415443269用于会员的注册门店 ID。 【JSON字段】register_site_id。';
COMMENT ON COLUMN billiards_ods.member_profiles.site_name IS '【说明】注册门店名称,属于冗余字段,用于直接展示。 【示例】朗朗桌球(注册门店名称,属于冗余字段,用于直接展示)。 【JSON字段】site_name。';
@@ -42,7 +42,7 @@ COMMENT ON COLUMN billiards_ods.member_profiles.status IS '【说明】帐户状
COMMENT ON COLUMN billiards_ods.member_profiles.user_status IS '【说明】用户账号状态(偏“用户逻辑”层面的状态)。 【示例】1用于用户账号状态偏“用户逻辑”层面的状态。 【JSON字段】user_status。';
COMMENT ON COLUMN billiards_ods.member_profiles.create_time IS '【说明】会员账户的创建时间(即这条档案/这张卡在系统中被创建的时间)。 【示例】2025-11-08 01:29:33用于会员账户的创建时间即这条档案/这张卡在系统中被创建的时间))。 【JSON字段】create_time。';
COMMENT ON COLUMN billiards_ods.member_profiles.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】member_profiles.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.member_profiles.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/member_profiles.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.member_profiles.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/member_profiles.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.member_profiles.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.member_profiles.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
@@ -79,7 +79,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.member_balance_changes (
payload JSONB NOT NULL
);
COMMENT ON TABLE billiards_ods.member_balance_changes IS 'ODS 原始明细表:会员余额变更流水。来源:C:/dev/LLTQ/export/test-json-doc/member_balance_changes.json分析member_balance_changes-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.member_balance_changes IS 'ODS 原始明细表会员余额变更流水。来源export/test-json-doc/member_balance_changes.json分析member_balance_changes-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.member_balance_changes.tenant_id IS '【说明】租户/商户 ID本数据中是固定值同一品牌/商户)。 【示例】2790683160709957用于租户/商户 ID本数据中是固定值同一品牌/商户))。 【JSON字段】tenant_id。';
COMMENT ON COLUMN billiards_ods.member_balance_changes.site_id IS '【说明】非 0记录所属的具体门店 ID与其他 JSON 内的 site_id 一致)。 【示例】2790685415443269用于非 0记录所属的具体门店 ID与其他 JSON 内的 site_id 一致))。 【JSON字段】site_id。';
COMMENT ON COLUMN billiards_ods.member_balance_changes.register_site_id IS '【说明】会员卡的“注册门店 ID”即办卡所在门店。 【示例】2790685415443269用于会员卡的“注册门店 ID”即办卡所在门店。 【JSON字段】register_site_id。';
@@ -106,7 +106,7 @@ COMMENT ON COLUMN billiards_ods.member_balance_changes.operator_name IS '【说
COMMENT ON COLUMN billiards_ods.member_balance_changes.is_delete IS '【说明】逻辑删除标记0=否1=是)。。 【示例】0用于逻辑删除标记0=否1=是))。 【JSON字段】is_delete。';
COMMENT ON COLUMN billiards_ods.member_balance_changes.create_time IS '【说明】本条余额变更记录的创建时间,通常接近交易发生时间。 【示例】2025-11-09 22:52:48用于本条余额变更记录的创建时间通常接近交易发生时间。 【JSON字段】create_time。';
COMMENT ON COLUMN billiards_ods.member_balance_changes.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】member_balance_changes.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.member_balance_changes.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/member_balance_changes.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.member_balance_changes.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/member_balance_changes.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.member_balance_changes.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.member_balance_changes.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
@@ -187,7 +187,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.member_stored_value_cards (
payload JSONB NOT NULL
);
COMMENT ON TABLE billiards_ods.member_stored_value_cards IS 'ODS 原始明细表:会员储值/卡券账户列表。来源:C:/dev/LLTQ/export/test-json-doc/member_stored_value_cards.json分析member_stored_value_cards-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.member_stored_value_cards IS 'ODS 原始明细表:会员储值/卡券账户列表。来源export/test-json-doc/member_stored_value_cards.json分析member_stored_value_cards-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.tenant_id IS '【说明】租户/品牌 ID与其他 JSON 中 tenant_id 一致。 【示例】2790683160709957用于租户/品牌 ID与其他 JSON 中 tenant_id 一致)。 【JSON字段】tenant_id。';
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.tenant_member_id IS '【说明】当前商户(品牌/租户)中会员的主键 ID。 【示例】2955204541320325用于当前商户品牌/租户)中会员的主键 ID。 【JSON字段】tenant_member_id。';
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.system_member_id IS '【说明】系统级会员 ID跨门店统一主键。 【示例】2955204540009605用于系统级会员 ID跨门店统一主键。 【JSON字段】system_member_id。';
@@ -258,7 +258,7 @@ COMMENT ON COLUMN billiards_ods.member_stored_value_cards.tenantName IS '【说
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.pdAssisnatLevel IS '【说明】允许使用的“陪打/助教等级”列表。 【示例】[](用于允许使用的“陪打/助教等级”列表)。 【JSON字段】pdAssisnatLevel。';
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.cxAssisnatLevel IS '【说明】可能是“促销活动中的助教等级限制”(命名中 cx 多为“促销”缩写)。 【示例】[](用于可能是“促销活动中的助教等级限制”(命名中 cx 多为“促销”缩写))。 【JSON字段】cxAssisnatLevel。';
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】member_stored_value_cards.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/member_stored_value_cards.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/member_stored_value_cards.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.member_stored_value_cards.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
@@ -331,7 +331,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.recharge_settlements (
payload JSONB NOT NULL
);
COMMENT ON TABLE billiards_ods.recharge_settlements IS 'ODS 原始明细表:充值结算记录。来源:C:/dev/LLTQ/export/test-json-doc/recharge_settlements.json分析recharge_settlements-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.recharge_settlements IS 'ODS 原始明细表充值结算记录。来源export/test-json-doc/recharge_settlements.json分析recharge_settlements-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.recharge_settlements.id IS '【说明】门店 ID。 【示例】NULL用于门店 ID。 【JSON字段】id。';
COMMENT ON COLUMN billiards_ods.recharge_settlements.tenantid IS '【说明】来自 JSON 导出的原始字段,用于保留业务取值。 【示例】NULL来自 JSON 导出的原始字段,用于保留业务取值)。 【JSON字段】tenantid。';
COMMENT ON COLUMN billiards_ods.recharge_settlements.siteid IS '【说明】来自 JSON 导出的原始字段,用于保留业务取值。 【示例】NULL来自 JSON 导出的原始字段,用于保留业务取值)。 【JSON字段】siteid。';
@@ -394,7 +394,7 @@ COMMENT ON COLUMN billiards_ods.recharge_settlements.isfirst IS '【说明】来
COMMENT ON COLUMN billiards_ods.recharge_settlements.rechargecardamount IS '【说明】金额字段,用于计费/结算/分摊等金额计算。 【示例】NULL金额字段用于计费/结算/分摊等金额计算)。 【JSON字段】rechargecardamount。';
COMMENT ON COLUMN billiards_ods.recharge_settlements.giftcardamount IS '【说明】金额字段,用于计费/结算/分摊等金额计算。 【示例】NULL金额字段用于计费/结算/分摊等金额计算)。 【JSON字段】giftcardamount。';
COMMENT ON COLUMN billiards_ods.recharge_settlements.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】recharge_settlements.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.recharge_settlements.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/recharge_settlements.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.recharge_settlements.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/recharge_settlements.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.recharge_settlements.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.recharge_settlements.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
@@ -467,7 +467,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.settlement_records (
payload JSONB NOT NULL
);
COMMENT ON TABLE billiards_ods.settlement_records IS 'ODS 原始明细表:结账/结算记录。来源:C:/dev/LLTQ/export/test-json-doc/settlement_records.json分析settlement_records-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.settlement_records IS 'ODS 原始明细表:结账/结算记录。来源export/test-json-doc/settlement_records.json分析settlement_records-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.settlement_records.id IS '【说明】结账记录主键 ID订单结算 ID。 【示例】NULL用于结账记录主键 ID订单结算 ID。 【JSON字段】id。';
COMMENT ON COLUMN billiards_ods.settlement_records.tenantid IS '【说明】来自 JSON 导出的原始字段,用于保留业务取值。 【示例】NULL来自 JSON 导出的原始字段,用于保留业务取值)。 【JSON字段】tenantid。';
COMMENT ON COLUMN billiards_ods.settlement_records.siteid IS '【说明】来自 JSON 导出的原始字段,用于保留业务取值。 【示例】NULL来自 JSON 导出的原始字段,用于保留业务取值)。 【JSON字段】siteid。';
@@ -530,7 +530,7 @@ COMMENT ON COLUMN billiards_ods.settlement_records.isfirst IS '【说明】来
COMMENT ON COLUMN billiards_ods.settlement_records.rechargecardamount IS '【说明】金额字段,用于计费/结算/分摊等金额计算。 【示例】NULL金额字段用于计费/结算/分摊等金额计算)。 【JSON字段】rechargecardamount。';
COMMENT ON COLUMN billiards_ods.settlement_records.giftcardamount IS '【说明】金额字段,用于计费/结算/分摊等金额计算。 【示例】NULL金额字段用于计费/结算/分摊等金额计算)。 【JSON字段】giftcardamount。';
COMMENT ON COLUMN billiards_ods.settlement_records.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】settlement_records.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.settlement_records.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/settlement_records.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.settlement_records.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/settlement_records.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.settlement_records.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.settlement_records.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
@@ -555,7 +555,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.assistant_cancellation_records (
payload JSONB NOT NULL
);
COMMENT ON TABLE billiards_ods.assistant_cancellation_records IS 'ODS 原始明细表:助教作废/取消记录。来源:C:/dev/LLTQ/export/test-json-doc/assistant_cancellation_records.json分析assistant_cancellation_records-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.assistant_cancellation_records IS 'ODS 原始明细表:助教作废/取消记录。来源export/test-json-doc/assistant_cancellation_records.json分析assistant_cancellation_records-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.id IS '【说明】本表主键 ID用于唯一标识一条记录。 【示例】2957675849518789本表主键 ID用于唯一标识一条记录。 【JSON字段】id。';
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.siteId IS '【说明】门店 ID即该废除记录所在门店。 【示例】2790685415443269用于门店 ID即该废除记录所在门店。 【JSON字段】siteId。';
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.siteProfile IS '【说明】门店信息快照。 【示例】{"id": 2790685415443269, "org_id": 2790684179467077, "shop_name": "朗朗桌球", "avatar": "https://oss.ficoo.vip/admin/hXcE4E…用于门店信息快照。 【JSON字段】siteProfile。';
@@ -570,7 +570,7 @@ COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.tableName IS '【
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.trashReason IS '【说明】用于记录“废除原因”的文本描述,例如“顾客临时有事取消”“录入错误”“更换助教”等。 【示例】NULL用于记录“废除原因”的文本描述例如“顾客临时有事取消”“录入错误”“更换助教”等。 【JSON字段】trashReason。';
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.createTime IS '【说明】这条“助教废除记录”被创建的时间,即系统正式记录“废除”操作的时刻。 【示例】2025-11-09 19:23:29用于这条“助教废除记录”被创建的时间即系统正式记录“废除”操作的时刻。 【JSON字段】createTime。';
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】assistant_cancellation_records.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/assistant_cancellation_records.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/assistant_cancellation_records.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.assistant_cancellation_records.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
@@ -644,7 +644,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.assistant_accounts_master (
payload JSONB NOT NULL
);
COMMENT ON TABLE billiards_ods.assistant_accounts_master IS 'ODS 原始明细表:助教档案主数据。来源:C:/dev/LLTQ/export/test-json-doc/assistant_accounts_master.json分析assistant_accounts_master-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.assistant_accounts_master IS 'ODS 原始明细表助教档案主数据。来源export/test-json-doc/assistant_accounts_master.json分析assistant_accounts_master-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.id IS '【说明】助教账号主键 ID在“助教流水.json”中对应 site_assistant_id。 【示例】2947562271297029用于助教账号主键 ID在“助教流水.json”中对应 site_assistant_id。 【JSON字段】id。';
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.tenant_id IS '【说明】品牌/租户 ID对应“非球科技”系统中该商户的唯一标识。 【示例】2790683160709957用于品牌/租户 ID对应“非球科技”系统中该商户的唯一标识。 【JSON字段】tenant_id。';
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.site_id IS '【说明】门店 ID对应本次数据的这家球房朗朗桌球。 【示例】2790685415443269用于门店 ID对应本次数据的这家球房朗朗桌球。 【JSON字段】site_id。';
@@ -708,7 +708,7 @@ COMMENT ON COLUMN billiards_ods.assistant_accounts_master.light_equipment_id IS
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.entry_sign_status IS '【说明】来自 JSON 导出的原始字段,用于保留业务取值。。 【示例】0来自 JSON 导出的原始字段,用于保留业务取值。)。 【JSON字段】entry_sign_status。';
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.resign_sign_status IS '【说明】离职协议签署状态,类似上面。 【示例】0用于离职协议签署状态类似上面。 【JSON字段】resign_sign_status。';
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】assistant_accounts_master.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/assistant_accounts_master.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/assistant_accounts_master.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.assistant_accounts_master.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
@@ -784,7 +784,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.assistant_service_records (
fetched_at TIMESTAMPTZ DEFAULT now()
);
COMMENT ON TABLE billiards_ods.assistant_service_records IS 'ODS 原始明细表:助教服务流水。来源:C:/dev/LLTQ/export/test-json-doc/assistant_service_records.json分析assistant_service_records-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.assistant_service_records IS 'ODS 原始明细表助教服务流水。来源export/test-json-doc/assistant_service_records.json分析assistant_service_records-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.assistant_service_records.id IS '【说明】本条助教流水记录的主键 ID流水唯一标识。 【示例】2957913441292165用于本条助教流水记录的主键 ID流水唯一标识。 【JSON字段】id。';
COMMENT ON COLUMN billiards_ods.assistant_service_records.tenant_id IS '【说明】租户/品牌 ID。 【示例】2790683160709957用于租户/品牌 ID。 【JSON字段】tenant_id。';
COMMENT ON COLUMN billiards_ods.assistant_service_records.site_id IS '【说明】门店 ID本数据中指“朗朗桌球”这一家门店。 【示例】2790685415443269用于门店 ID本数据中指“朗朗桌球”这一家门店。 【JSON字段】site_id。';
@@ -851,7 +851,7 @@ COMMENT ON COLUMN billiards_ods.assistant_service_records.is_not_responding IS '
COMMENT ON COLUMN billiards_ods.assistant_service_records.is_confirm IS '【说明】布尔/开关字段,用于表示权限、可用性或状态开关。。 【示例】2布尔/开关字段,用于表示权限、可用性或状态开关。)。 【JSON字段】is_confirm。';
COMMENT ON COLUMN billiards_ods.assistant_service_records.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
COMMENT ON COLUMN billiards_ods.assistant_service_records.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】assistant_service_records.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.assistant_service_records.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/assistant_service_records.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.assistant_service_records.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/assistant_service_records.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.assistant_service_records.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
@@ -887,7 +887,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.site_tables_master (
payload JSONB NOT NULL
);
COMMENT ON TABLE billiards_ods.site_tables_master IS 'ODS 原始明细表:门店桌台主数据。来源:C:/dev/LLTQ/export/test-json-doc/site_tables_master.json分析site_tables_master-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.site_tables_master IS 'ODS 原始明细表门店桌台主数据。来源export/test-json-doc/site_tables_master.json分析site_tables_master-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.site_tables_master.id IS '【说明】台桌主键 ID。 【示例】2791964216463493用于台桌主键 ID。 【JSON字段】id。';
COMMENT ON COLUMN billiards_ods.site_tables_master.site_id IS '【说明】门店 ID。 【示例】2790685415443269用于门店 ID。 【JSON字段】site_id。';
COMMENT ON COLUMN billiards_ods.site_tables_master.siteName IS '【说明】门店名称快照,冗余字段,配合 site_id 使用。 【示例】朗朗桌球(用于门店名称快照,冗余字段,配合 site_id 使用)。 【JSON字段】siteName。';
@@ -913,7 +913,7 @@ COMMENT ON COLUMN billiards_ods.site_tables_master.table_status IS '【说明】
COMMENT ON COLUMN billiards_ods.site_tables_master.temporary_light_second IS '【说明】临时点灯时长(秒),例如手动临时开灯一段时间。 【示例】0用于临时点灯时长例如手动临时开灯一段时间。 【JSON字段】temporary_light_second。';
COMMENT ON COLUMN billiards_ods.site_tables_master.virtual_table IS '【说明】当前值:全部为 0。 【示例】0用于当前值全部为 0。 【JSON字段】virtual_table。';
COMMENT ON COLUMN billiards_ods.site_tables_master.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】site_tables_master.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.site_tables_master.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/site_tables_master.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.site_tables_master.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/site_tables_master.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.site_tables_master.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.site_tables_master.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
@@ -945,7 +945,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.table_fee_discount_records (
payload JSONB NOT NULL
);
COMMENT ON TABLE billiards_ods.table_fee_discount_records IS 'ODS 原始明细表:台费折扣记录。来源:C:/dev/LLTQ/export/test-json-doc/table_fee_discount_records.json分析table_fee_discount_records-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.table_fee_discount_records IS 'ODS 原始明细表台费折扣记录。来源export/test-json-doc/table_fee_discount_records.json分析table_fee_discount_records-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.id IS '【说明】台费打折 / 调整流水主键 ID。 【示例】2957913441881989用于台费打折 / 调整流水主键 ID。 【JSON字段】id。';
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.tenant_id IS '【说明】租户/品牌 ID。 【示例】2790683160709957用于租户/品牌 ID。 【JSON字段】tenant_id。';
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.site_id IS '【说明】门店 ID本批数据全部为同一家门店朗朗桌球。 【示例】2790685415443269用于门店 ID本批数据全部为同一家门店朗朗桌球。 【JSON字段】site_id。';
@@ -967,7 +967,7 @@ COMMENT ON COLUMN billiards_ods.table_fee_discount_records.order_trade_no IS '
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.is_delete IS '【说明】逻辑删除标记0=否1=是)。。 【示例】0用于逻辑删除标记0=否1=是))。 【JSON字段】is_delete。';
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.create_time IS '【说明】台费调整记录的创建时间,即打折操作被执行的时间戳。 【示例】2025-11-09 23:25:11用于台费调整记录的创建时间即打折操作被执行的时间戳。 【JSON字段】create_time。';
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】table_fee_discount_records.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/table_fee_discount_records.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/table_fee_discount_records.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.table_fee_discount_records.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
@@ -1018,7 +1018,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.table_fee_transactions (
fetched_at TIMESTAMPTZ DEFAULT now()
);
COMMENT ON TABLE billiards_ods.table_fee_transactions IS 'ODS 原始明细表:台费流水。来源:C:/dev/LLTQ/export/test-json-doc/table_fee_transactions.json分析table_fee_transactions-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.table_fee_transactions IS 'ODS 原始明细表台费流水。来源export/test-json-doc/table_fee_transactions.json分析table_fee_transactions-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.table_fee_transactions.id IS '【说明】台费流水记录主键(事实表主键)。 【示例】2957924029058885用于台费流水记录主键事实表主键。 【JSON字段】id。';
COMMENT ON COLUMN billiards_ods.table_fee_transactions.tenant_id IS '【说明】租户/品牌 ID。 【示例】2790683160709957用于租户/品牌 ID。 【JSON字段】tenant_id。';
COMMENT ON COLUMN billiards_ods.table_fee_transactions.site_id IS '【说明】门店 ID本次数据全部来自同一门店朗朗桌球。 【示例】2790685415443269用于门店 ID本次数据全部来自同一门店朗朗桌球。 【JSON字段】site_id。';
@@ -1060,7 +1060,7 @@ COMMENT ON COLUMN billiards_ods.table_fee_transactions.salesman_user_id IS '【
COMMENT ON COLUMN billiards_ods.table_fee_transactions.create_time IS '【说明】这条台费流水记录的创建时间,通常接近结账时间。 【示例】2025-11-09 23:35:57用于这条台费流水记录的创建时间通常接近结账时间。 【JSON字段】create_time。';
COMMENT ON COLUMN billiards_ods.table_fee_transactions.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
COMMENT ON COLUMN billiards_ods.table_fee_transactions.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】table_fee_transactions.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.table_fee_transactions.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/table_fee_transactions.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.table_fee_transactions.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/table_fee_transactions.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.table_fee_transactions.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
@@ -1090,7 +1090,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.goods_stock_movements (
payload JSONB NOT NULL
);
COMMENT ON TABLE billiards_ods.goods_stock_movements IS 'ODS 原始明细表:商品库存变动流水。来源:C:/dev/LLTQ/export/test-json-doc/goods_stock_movements.json分析goods_stock_movements-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.goods_stock_movements IS 'ODS 原始明细表商品库存变动流水。来源export/test-json-doc/goods_stock_movements.json分析goods_stock_movements-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.goods_stock_movements.siteGoodsStockId IS '【说明】门店某个“商品库存记录”的主键 ID。 【示例】2957911857581957用于门店某个“商品库存记录”的主键 ID。 【JSON字段】siteGoodsStockId。';
COMMENT ON COLUMN billiards_ods.goods_stock_movements.tenantId IS '【说明】租户/品牌 ID。 【示例】2790683160709957用于租户/品牌 ID。 【JSON字段】tenantId。';
COMMENT ON COLUMN billiards_ods.goods_stock_movements.siteId IS '【说明】门店 ID。 【示例】2790685415443269用于门店 ID。 【JSON字段】siteId。';
@@ -1111,7 +1111,7 @@ COMMENT ON COLUMN billiards_ods.goods_stock_movements.remark IS '【说明】备
COMMENT ON COLUMN billiards_ods.goods_stock_movements.operatorName IS '【说明】执行此次库存变动的操作人。 【示例】收银员:郑丽珊(用于执行此次库存变动的操作人)。 【JSON字段】operatorName。';
COMMENT ON COLUMN billiards_ods.goods_stock_movements.createTime IS '【说明】这条库存变动记录的创建时间,即发生库存变更的时间点。 【示例】2025-11-09 23:23:34用于这条库存变动记录的创建时间即发生库存变更的时间点。 【JSON字段】createTime。';
COMMENT ON COLUMN billiards_ods.goods_stock_movements.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】goods_stock_movements.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.goods_stock_movements.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/goods_stock_movements.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.goods_stock_movements.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/goods_stock_movements.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.goods_stock_movements.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.goods_stock_movements.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
@@ -1134,7 +1134,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.stock_goods_category_tree (
payload JSONB NOT NULL
);
COMMENT ON TABLE billiards_ods.stock_goods_category_tree IS 'ODS 原始明细表:商品分类树。来源:C:/dev/LLTQ/export/test-json-doc/stock_goods_category_tree.json分析stock_goods_category_tree-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.stock_goods_category_tree IS 'ODS 原始明细表商品分类树。来源export/test-json-doc/stock_goods_category_tree.json分析stock_goods_category_tree-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.id IS '【说明】分类节点主键 ID在商品分类维度中的唯一标识。 【示例】2790683528350533用于分类节点主键 ID在商品分类维度中的唯一标识。 【JSON字段】id。';
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.tenant_id IS '【说明】租户 ID品牌/商户 ID。 【示例】2790683160709957用于租户 ID品牌/商户 ID。 【JSON字段】tenant_id。';
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.category_name IS '【说明】分类名称(实际业务分类名称)。 【示例】槟榔(用于分类名称(实际业务分类名称))。 【JSON字段】category_name。';
@@ -1147,7 +1147,7 @@ COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.categoryBoxes IS '【
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.sort IS '【说明】分类的排序序号,用于前端展示顺序的控制。 【示例】1分类的排序序号用于前端展示顺序的控制。 【JSON字段】sort。';
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.is_warehousing IS '【说明】本文件可视为“所有参与库存管理的商品分类清单”,因此均为 1。 【示例】1用于本文件可视为“所有参与库存管理的商品分类清单”因此均为 1。 【JSON字段】is_warehousing。';
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】stock_goods_category_tree.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/stock_goods_category_tree.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/stock_goods_category_tree.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.stock_goods_category_tree.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
@@ -1173,7 +1173,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.goods_stock_summary (
payload JSONB NOT NULL
);
COMMENT ON TABLE billiards_ods.goods_stock_summary IS 'ODS 原始明细表:商品库存汇总。来源:C:/dev/LLTQ/export/test-json-doc/goods_stock_summary.json分析goods_stock_summary-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.goods_stock_summary IS 'ODS 原始明细表商品库存汇总。来源export/test-json-doc/goods_stock_summary.json分析goods_stock_summary-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.goods_stock_summary.siteGoodsId IS '【说明】门店商品 ID本库存汇总表的主键对应某个具体商品在本店的唯一标识。 【示例】2791953867886725用于门店商品 ID本库存汇总表的主键对应某个具体商品在本店的唯一标识。 【JSON字段】siteGoodsId。';
COMMENT ON COLUMN billiards_ods.goods_stock_summary.goodsName IS '【说明】商品名称,冗余于门店商品档案的 goods_name。 【示例】东方树叶(用于商品名称,冗余于门店商品档案的 goods_name。 【JSON字段】goodsName。';
COMMENT ON COLUMN billiards_ods.goods_stock_summary.goodsUnit IS '【说明】商品的计量单位(售卖单位)。 【示例】瓶(用于商品的计量单位(售卖单位))。 【JSON字段】goodsUnit。';
@@ -1189,7 +1189,7 @@ COMMENT ON COLUMN billiards_ods.goods_stock_summary.rangeSaleMoney IS '【说明
COMMENT ON COLUMN billiards_ods.goods_stock_summary.rangeInventory IS '【说明】查询区间内的 盘点调整净变动量(盘盈–盘亏)。 【示例】0用于查询区间内的 盘点调整净变动量(盘盈–盘亏))。 【JSON字段】rangeInventory。';
COMMENT ON COLUMN billiards_ods.goods_stock_summary.currentStock IS '【说明】导出时刻的实时库存数量。 【示例】118用于导出时刻的实时库存数量。 【JSON字段】currentStock。';
COMMENT ON COLUMN billiards_ods.goods_stock_summary.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】goods_stock_summary.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.goods_stock_summary.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/goods_stock_summary.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.goods_stock_summary.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/goods_stock_summary.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.goods_stock_summary.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.goods_stock_summary.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
@@ -1212,7 +1212,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.payment_transactions (
payload JSONB NOT NULL
);
COMMENT ON TABLE billiards_ods.payment_transactions IS 'ODS 原始明细表:支付流水。来源:C:/dev/LLTQ/export/test-json-doc/payment_transactions.json分析payment_transactions-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.payment_transactions IS 'ODS 原始明细表支付流水。来源export/test-json-doc/payment_transactions.json分析payment_transactions-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.payment_transactions.id IS '【说明】支付流水记录的主键 ID。 【示例】2957924026486597用于支付流水记录的主键 ID。 【JSON字段】id。';
COMMENT ON COLUMN billiards_ods.payment_transactions.site_id IS '【说明】支付记录所属的门店 ID。 【示例】2790685415443269用于支付记录所属的门店 ID。 【JSON字段】site_id。';
COMMENT ON COLUMN billiards_ods.payment_transactions.siteProfile IS '【说明】门店信息快照,与其他 JSON 中的 siteProfile 结构一致。 【示例】{"id": 2790685415443269, "org_id": 2790684179467077, "shop_name": "朗朗桌球", "avatar": "https://oss.ficoo.vip/admin/hXcE4E…用于门店信息快照与其他 JSON 中的 siteProfile 结构一致)。 【JSON字段】siteProfile。';
@@ -1225,7 +1225,7 @@ COMMENT ON COLUMN billiards_ods.payment_transactions.create_time IS '【说明
COMMENT ON COLUMN billiards_ods.payment_transactions.payment_method IS '【说明】支付方式枚举,例如微信、支付宝、现金、银行卡、储值卡等某一种。 【示例】4用于支付方式枚举例如微信、支付宝、现金、银行卡、储值卡等某一种。 【JSON字段】payment_method。';
COMMENT ON COLUMN billiards_ods.payment_transactions.online_pay_channel IS '【说明】每一笔结账单settleList.id对应一条支付记录当前样本中是一条记录relate_id 唯一)。 【示例】0用于每一笔结账单settleList.id对应一条支付记录当前样本中是一条记录relate_id 唯一))。 【JSON字段】online_pay_channel。';
COMMENT ON COLUMN billiards_ods.payment_transactions.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】payment_transactions.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.payment_transactions.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/payment_transactions.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.payment_transactions.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/payment_transactions.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.payment_transactions.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.payment_transactions.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
@@ -1269,7 +1269,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.refund_transactions (
payload JSONB NOT NULL
);
COMMENT ON TABLE billiards_ods.refund_transactions IS 'ODS 原始明细表:退款流水。来源:C:/dev/LLTQ/export/test-json-doc/refund_transactions.json分析refund_transactions-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.refund_transactions IS 'ODS 原始明细表退款流水。来源export/test-json-doc/refund_transactions.json分析refund_transactions-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.refund_transactions.id IS '【说明】本条 退款流水 的唯一 ID。 【示例】2955202296416389用于本条 退款流水 的唯一 ID。 【JSON字段】id。';
COMMENT ON COLUMN billiards_ods.refund_transactions.tenant_id IS '【说明】租户/品牌 ID全系统维度标识该商户。 【示例】2790683160709957用于租户/品牌 ID全系统维度标识该商户。 【JSON字段】tenant_id。';
COMMENT ON COLUMN billiards_ods.refund_transactions.tenantName IS '【说明】租户(商户)名称。 【示例】朗朗桌球(用于租户(商户)名称)。 【JSON字段】tenantName。';
@@ -1303,7 +1303,7 @@ COMMENT ON COLUMN billiards_ods.refund_transactions.is_delete IS '【说明】
COMMENT ON COLUMN billiards_ods.refund_transactions.balance_frozen_amount IS '【说明】涉及会员储值卡退款时,暂时冻结的余额金额。 【示例】0.0(用于涉及会员储值卡退款时,暂时冻结的余额金额)。 【JSON字段】balance_frozen_amount。';
COMMENT ON COLUMN billiards_ods.refund_transactions.card_frozen_amount IS '【说明】与上一个类似,偏向“某张卡的被冻结金额”,也与会员卡/储值账户相关。 【示例】0.0(用于与上一个类似,偏向“某张卡的被冻结金额”,也与会员卡/储值账户相关)。 【JSON字段】card_frozen_amount。';
COMMENT ON COLUMN billiards_ods.refund_transactions.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】refund_transactions.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.refund_transactions.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/refund_transactions.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.refund_transactions.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/refund_transactions.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.refund_transactions.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.refund_transactions.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
@@ -1341,7 +1341,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.platform_coupon_redemption_records (
payload JSONB NOT NULL
);
COMMENT ON TABLE billiards_ods.platform_coupon_redemption_records IS 'ODS 原始明细表:平台券核销/使用记录。来源:C:/dev/LLTQ/export/test-json-doc/platform_coupon_redemption_records.json分析platform_coupon_redemption_records-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.platform_coupon_redemption_records IS 'ODS 原始明细表:平台券核销/使用记录。来源export/test-json-doc/platform_coupon_redemption_records.json分析platform_coupon_redemption_records-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.id IS '【说明】本条平台验券记录在本系统内的主键 ID。 【示例】2957929042218501用于本条平台验券记录在本系统内的主键 ID。 【JSON字段】id。';
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.verify_id IS '【说明】平台核销记录 ID某些平台会为每一次核销生成一个唯一 ID。 【示例】7570689090418149418用于平台核销记录 ID某些平台会为每一次核销生成一个唯一 ID。 【JSON字段】verify_id。';
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.certificate_id IS '【说明】平台侧的凭证 ID通常由第三方团购平台生成的券实例 ID。 【示例】5008024789379597447用于平台侧的凭证 ID通常由第三方团购平台生成的券实例 ID。 【JSON字段】certificate_id。';
@@ -1369,7 +1369,7 @@ COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.operator_name
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.is_delete IS '【说明】把平台验券记录挂到本门店的一条订单上。 【示例】0用于把平台验券记录挂到本门店的一条订单上。 【JSON字段】is_delete。';
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.siteProfile IS '【说明】门店信息快照。 【示例】{"id": 2790685415443269, "org_id": 2790684179467077, "shop_name": "朗朗桌球", "avatar": "https://oss.ficoo.vip/admin/hXcE4E…用于门店信息快照。 【JSON字段】siteProfile。';
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】platform_coupon_redemption_records.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/platform_coupon_redemption_records.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/platform_coupon_redemption_records.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.platform_coupon_redemption_records.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
@@ -1412,7 +1412,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.tenant_goods_master (
fetched_at TIMESTAMPTZ DEFAULT now()
);
COMMENT ON TABLE billiards_ods.tenant_goods_master IS 'ODS 原始明细表:租户商品主数据。来源:C:/dev/LLTQ/export/test-json-doc/tenant_goods_master.json分析tenant_goods_master-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.tenant_goods_master IS 'ODS 原始明细表租户商品主数据。来源export/test-json-doc/tenant_goods_master.json分析tenant_goods_master-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.tenant_goods_master.id IS '【说明】商品档案主键 ID唯一标识一条商品。 【示例】2791925230096261用于商品档案主键 ID唯一标识一条商品。 【JSON字段】id。';
COMMENT ON COLUMN billiards_ods.tenant_goods_master.tenant_id IS '【说明】租户/品牌 ID。 【示例】2790683160709957用于租户/品牌 ID。 【JSON字段】tenant_id。';
COMMENT ON COLUMN billiards_ods.tenant_goods_master.goods_name IS '【说明】商品名称(前台展示名称)。 【示例】东方树叶(用于商品名称(前台展示名称))。 【JSON字段】goods_name。';
@@ -1446,7 +1446,7 @@ COMMENT ON COLUMN billiards_ods.tenant_goods_master.create_time IS '【说明】
COMMENT ON COLUMN billiards_ods.tenant_goods_master.update_time IS '【说明】商品档案最近一次修改时间。 【示例】2025-10-29 23:51:38用于商品档案最近一次修改时间。 【JSON字段】update_time。';
COMMENT ON COLUMN billiards_ods.tenant_goods_master.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
COMMENT ON COLUMN billiards_ods.tenant_goods_master.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】tenant_goods_master.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.tenant_goods_master.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/tenant_goods_master.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.tenant_goods_master.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/tenant_goods_master.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.tenant_goods_master.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
@@ -1492,7 +1492,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.group_buy_packages (
payload JSONB NOT NULL
);
COMMENT ON TABLE billiards_ods.group_buy_packages IS 'ODS 原始明细表:团购套餐主数据。来源:C:/dev/LLTQ/export/test-json-doc/group_buy_packages.json分析group_buy_packages-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.group_buy_packages IS 'ODS 原始明细表团购套餐主数据。来源export/test-json-doc/group_buy_packages.json分析group_buy_packages-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.group_buy_packages.id IS '【说明】门店侧套餐 ID本文件内部的主键。 【示例】2939215004469573用于门店侧套餐 ID本文件内部的主键。 【JSON字段】id。';
COMMENT ON COLUMN billiards_ods.group_buy_packages.package_id IS '【说明】“上层套餐 ID” 或“总部/系统级套餐 ID”。 【示例】1814707240811572用于“上层套餐 ID” 或“总部/系统级套餐 ID”。 【JSON字段】package_id。';
COMMENT ON COLUMN billiards_ods.group_buy_packages.package_name IS '【说明】团购套餐名称,用于前台展示和核销界面。 【示例】早场特惠一小时(团购套餐名称,用于前台展示和核销界面)。 【JSON字段】package_name。';
@@ -1529,7 +1529,7 @@ COMMENT ON COLUMN billiards_ods.group_buy_packages.area_tag_type IS '【说明
COMMENT ON COLUMN billiards_ods.group_buy_packages.creator_name IS '【说明】创建人信息,一般包含“角色:姓名”。 【示例】店长:郑丽珊(用于创建人信息,一般包含“角色:姓名”)。 【JSON字段】creator_name。';
COMMENT ON COLUMN billiards_ods.group_buy_packages.create_time IS '【说明】该套餐在系统中创建的时间。 【示例】2025-10-27 18:24:09用于该套餐在系统中创建的时间。 【JSON字段】create_time。';
COMMENT ON COLUMN billiards_ods.group_buy_packages.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】group_buy_packages.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.group_buy_packages.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/group_buy_packages.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.group_buy_packages.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/group_buy_packages.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.group_buy_packages.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.group_buy_packages.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
@@ -1584,7 +1584,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.group_buy_redemption_records (
fetched_at TIMESTAMPTZ DEFAULT now()
);
COMMENT ON TABLE billiards_ods.group_buy_redemption_records IS 'ODS 原始明细表:团购核销记录。来源:C:/dev/LLTQ/export/test-json-doc/group_buy_redemption_records.json分析group_buy_redemption_records-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.group_buy_redemption_records IS 'ODS 原始明细表团购核销记录。来源export/test-json-doc/group_buy_redemption_records.json分析group_buy_redemption_records-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.id IS '【说明】本条“团购套餐流水”记录的 主键 ID。 【示例】2957924029615941用于本条“团购套餐流水”记录的 主键 ID。 【JSON字段】id。';
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.tenant_id IS '【说明】租户/品牌 ID。 【示例】2790683160709957用于租户/品牌 ID。 【JSON字段】tenant_id。';
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.site_id IS '【说明】门店 ID与其它 JSON 中一致。 【示例】2790685415443269用于门店 ID与其它 JSON 中一致)。 【JSON字段】site_id。';
@@ -1630,7 +1630,7 @@ COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.is_delete IS '【
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.create_time IS '【说明】本条团购套餐使用流水创建时间(即券核销时间,或与结账时间接近)。 【示例】2025-11-09 23:35:57用于本条团购套餐使用流水创建时间即券核销时间或与结账时间接近。 【JSON字段】create_time。';
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】group_buy_redemption_records.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/group_buy_redemption_records.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/group_buy_redemption_records.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.group_buy_redemption_records.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
@@ -1679,7 +1679,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.settlement_ticket_details (
fetched_at TIMESTAMPTZ DEFAULT now()
);
COMMENT ON TABLE billiards_ods.settlement_ticket_details IS 'ODS 原始明细表:结算小票明细。来源:C:/dev/LLTQ/export/test-json-doc/settlement_ticket_details.json分析settlement_ticket_details-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.settlement_ticket_details IS 'ODS 原始明细表结算小票明细。来源export/test-json-doc/settlement_ticket_details.json分析settlement_ticket_details-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.orderSettleId IS '【说明】结算单 ID和顶层字段相同再次冗余。 【示例】2957922914357125用于结算单 ID和顶层字段相同再次冗余。 【JSON字段】orderSettleId。';
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.actualPayment IS '【说明】本单实际支付金额总和(顾客本次实际付出:现金 + 线上 + 会员余额等)。 【示例】NULL用于本单实际支付金额总和顾客本次实际付出现金 + 线上 + 会员余额等))。 【JSON字段】actualPayment。';
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.adjustAmount IS '【说明】人工调价/整单调整金额(例如手工改价、折扣调整),是所有类型的手工调整合计。 【示例】NULL用于人工调价/整单调整金额(例如手工改价、折扣调整),是所有类型的手工调整合计)。 【JSON字段】adjustAmount。';
@@ -1720,7 +1720,7 @@ COMMENT ON COLUMN billiards_ods.settlement_ticket_details.orderItem IS '【说
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.tenantMemberCardLogs IS '【说明】来自 JSON 导出的原始字段,用于保留业务取值。 【示例】NULL来自 JSON 导出的原始字段,用于保留业务取值)。 【JSON字段】tenantMemberCardLogs。';
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】settlement_ticket_details.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/settlement_ticket_details.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/settlement_ticket_details.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.settlement_ticket_details.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
@@ -1776,7 +1776,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.store_goods_master (
fetched_at TIMESTAMPTZ DEFAULT now()
);
COMMENT ON TABLE billiards_ods.store_goods_master IS 'ODS 原始明细表:门店商品主数据。来源:C:/dev/LLTQ/export/test-json-doc/store_goods_master.json分析store_goods_master-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.store_goods_master IS 'ODS 原始明细表门店商品主数据。来源export/test-json-doc/store_goods_master.json分析store_goods_master-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.store_goods_master.id IS '【说明】门店商品 ID门店维度的商品主键。 【示例】2793025851560005用于门店商品 ID门店维度的商品主键。 【JSON字段】id。';
COMMENT ON COLUMN billiards_ods.store_goods_master.tenant_id IS '【说明】租户/品牌 ID。 【示例】2790683160709957用于租户/品牌 ID。 【JSON字段】tenant_id。';
COMMENT ON COLUMN billiards_ods.store_goods_master.site_id IS '【说明】门店 ID。 【示例】2790685415443269用于门店 ID。 【JSON字段】site_id。';
@@ -1823,7 +1823,7 @@ COMMENT ON COLUMN billiards_ods.store_goods_master.create_time IS '【说明】
COMMENT ON COLUMN billiards_ods.store_goods_master.update_time IS '【说明】最后一次修改该商品档案的时间(包括价格调整、状态变更等)。 【示例】2025-11-09 07:23:47用于最后一次修改该商品档案的时间包括价格调整、状态变更等。 【JSON字段】update_time。';
COMMENT ON COLUMN billiards_ods.store_goods_master.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
COMMENT ON COLUMN billiards_ods.store_goods_master.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】store_goods_master.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.store_goods_master.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/store_goods_master.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.store_goods_master.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/store_goods_master.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.store_goods_master.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';
@@ -1885,7 +1885,7 @@ CREATE TABLE IF NOT EXISTS billiards_ods.store_goods_sales_records (
fetched_at TIMESTAMPTZ DEFAULT now()
);
COMMENT ON TABLE billiards_ods.store_goods_sales_records IS 'ODS 原始明细表:门店商品销售流水。来源:C:/dev/LLTQ/export/test-json-doc/store_goods_sales_records.json分析store_goods_sales_records-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON TABLE billiards_ods.store_goods_sales_records IS 'ODS 原始明细表门店商品销售流水。来源export/test-json-doc/store_goods_sales_records.json分析store_goods_sales_records-Analysis.md。字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。';
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.id IS '【说明】本条「门店销售流水」记录的主键 ID。 【示例】2957924029550406用于本条「门店销售流水」记录的主键 ID。 【JSON字段】id。';
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.tenant_id IS '【说明】租户/品牌 ID。 【示例】2790683160709957用于租户/品牌 ID。 【JSON字段】tenant_id。';
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.site_id IS '【说明】门店 ID系统主键。 【示例】2790685415443269用于门店 ID系统主键。 【JSON字段】site_id。';
@@ -1939,7 +1939,7 @@ COMMENT ON COLUMN billiards_ods.store_goods_sales_records.tenant_goods_category_
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.create_time IS '【说明】销售记录创建时间,通常就是结账时间或录入时间。 【示例】2025-11-09 23:35:57用于销售记录创建时间通常就是结账时间或录入时间。 【JSON字段】create_time。';
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.payload IS '【说明】完整原始 JSON 记录快照,用于回溯与二次解析。 【示例】{...}(完整原始 JSON 记录快照,用于回溯与二次解析)。 【JSON字段】$(整条记录)。';
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.source_file IS '【说明】ETL 元数据:原始导出文件名,用于数据追溯。 【示例】store_goods_sales_records.jsonETL 元数据:原始导出文件名,用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】C:/dev/LLTQ/export/test-json-doc/store_goods_sales_records.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.source_endpoint IS '【说明】ETL 元数据:采集来源(接口/文件路径),用于数据追溯。 【示例】export/test-json-doc/store_goods_sales_records.jsonETL 元数据:采集来源(接口/文件路径),用于数据追溯)。 【JSON字段】无ETL元数据。';
COMMENT ON COLUMN billiards_ods.store_goods_sales_records.fetched_at IS '【说明】ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理。 【示例】2025-11-10T00:00:00+08:00ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理)。 【JSON字段】无ETL元数据。';

View File

@@ -1,5 +1,5 @@
一个用于开发的示例目录:C:\dev\LLTQ\export\test-json-doc
一个用于开发的示例目录export/test-json-doc
我建议完全删除LLZQ-test数据库中名称是billiards_ods的Schema下全部表和内容。根据非球接口API.md文档重建表表名
@@ -18,7 +18,7 @@
下面开始重建数据库的ODS。
一个用于开发的示例目录:C:\dev\LLTQ\export\test-json-doc。是测试用的json数据并且已经按照现行逻辑进行了重命名。对应.md是Json数据的分析。
一个用于开发的示例目录export/test-json-doc。是测试用的json数据并且已经按照现行逻辑进行了重命名。对应.md是Json数据的分析。
用于数据库ODS层的构建和Python文件的编写。
我建议完全删除LLZQ-test数据库中名称是billiards_ods的Schema下全部表和内容。根据上述示例目录的json和md文档重建表表名就按对应json文件名来字段名就是json字段名。
我理解ODS层本来就说Json文件的数据库留档我这么理解对么

View File

@@ -5,9 +5,9 @@ import re
from collections import deque
from pathlib import Path
ROOT = Path(r"C:\dev\LLTQ\ETL\feiqiu-ETL")
ROOT = Path(".")
SQL_PATH = ROOT / "etl_billiards" / "database" / "schema_dwd_doc.sql"
DOC_DIR = Path(r"C:\dev\LLTQ\export\test-json-doc")
DOC_DIR = ROOT / "etl_billiards" / "export" / "test-json-doc"
DWD_TASK_PATH = ROOT / "etl_billiards" / "tasks" / "dwd_load_task.py"
SCD_COLS = {"scd2_start_time", "scd2_end_time", "scd2_is_current", "scd2_version"}

View File

@@ -4,8 +4,8 @@ import re
from pathlib import Path
from collections import defaultdict
SQL_PATH = Path(r"C:\dev\LLTQ\ETL\feiqiu-ETL\etl_billiards\database\schema_ODS_doc.sql")
DOC_DIR = Path(r"C:\dev\LLTQ\export\test-json-doc")
SQL_PATH = Path("etl_billiards") / "database" / "schema_ODS_doc.sql"
DOC_DIR = Path("etl_billiards") / "export" / "test-json-doc"
TABLE_CN = {
"member_profiles": "会员档案/会员账户信息",
@@ -449,7 +449,7 @@ def build_comment_block(table: str, columns, analysis_text: str, records):
table_comment = (
f"ODS 原始明细表:{table_cn}"
f"来源:C:/dev/LLTQ/export/test-json-doc/{table}.json分析{table}-Analysis.md。"
f"来源:etl_billiards/export/test-json-doc/{table}.json分析{table}-Analysis.md。"
f"字段以导出原样为主ETL 补充 source_file/source_endpoint/fetched_at并保留 payload 为原始记录快照。"
)
@@ -481,7 +481,7 @@ def build_comment_block(table: str, columns, analysis_text: str, records):
if col == "source_file":
ex = f"{table}.json"
elif col == "source_endpoint":
ex = f"C:/dev/LLTQ/export/test-json-doc/{table}.json"
ex = f"etl_billiards/export/test-json-doc/{table}.json"
else:
ex = "2025-11-10T00:00:00+08:00"
elif col == "payload":