Files
Neo-ZQYY/export/dataflow_analysis/dataflow_2026-02-17_082403.md

4838 lines
581 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 飞球连接器 — 数据流结构分析报告
> 生成时间2026-02-17 08:24:03 CST
> 分析范围飞球feiqiu连接器共 23 张 ODS 表
> 数据来源API JSON 采样 + PostgreSQL ODS/DWD 表结构 + 三层字段映射 + BD_manual 业务文档
## 1. 总览
| # | ODS 表名 | 业务描述 | 采样记录数 | API JSON 字段数 | ODS 列数 | DWD 目标表 | DWD 总列数 |
|---|---------|---------|-----------|---------------|---------|-----------|-----------|
| 1 | `assistant_accounts_master` | 助教账号档案 | 69 | 62 | 67 | dim_assistant, dim_assistant_ex | 67 |
| 2 | `settlement_records` | 结账记录 | 200 | 92 | 71 | dwd_settlement_head, dwd_settlement_head_ex | 67 |
| 3 | `table_fee_transactions` | 台费计费流水 | 200 | 67 | 47 | dim_site, dim_site_ex, dwd_table_fee_log, dwd_table_fee_log_ex | 84 |
| 4 | `assistant_service_records` | 助教服务流水 | 200 | 91 | 71 | dwd_assistant_service_log, dwd_assistant_service_log_ex | 64 |
| 5 | `assistant_cancellation_records` | 助教废除记录 | 79 | 38 | 19 | dwd_assistant_trash_event, dwd_assistant_trash_event_ex | 14 |
| 6 | `store_goods_sales_records` | 门店商品销售流水 | 200 | 51 | 56 | dwd_store_goods_sale, dwd_store_goods_sale_ex | 52 |
| 7 | `payment_transactions` | 支付流水 | 200 | 36 | 17 | dwd_payment | 12 |
| 8 | `refund_transactions` | 退款流水 | 33 | 57 | 37 | dwd_refund, dwd_refund_ex | 32 |
| 9 | `platform_coupon_redemption_records` | 平台/团购券核销 | 200 | 51 | 31 | dwd_platform_coupon_redemption, dwd_platform_coupon_redemption_ex | 26 |
| 10 | `member_profiles` | 会员档案 | 200 | 20 | 25 | dim_member, dim_member_ex | 30 |
| 11 | `member_stored_value_cards` | 会员储值卡 | 200 | 71 | 80 | dim_member_card_account, dim_member_card_account_ex | 84 |
| 12 | `member_balance_changes` | 会员余额变动 | 200 | 28 | 33 | dwd_member_balance_change, dwd_member_balance_change_ex | 29 |
| 13 | `recharge_settlements` | 充值结算 | 200 | 92 | 71 | dwd_recharge_order, dwd_recharge_order_ex | 67 |
| 14 | `group_buy_packages` | 团购套餐定义 | 18 | 40 | 43 | dim_groupbuy_package, dim_groupbuy_package_ex | 47 |
| 15 | `group_buy_redemption_records` | 团购套餐核销 | 200 | 52 | 57 | dwd_groupbuy_redemption, dwd_groupbuy_redemption_ex | 53 |
| 16 | `goods_stock_summary` | 库存汇总 | 173 | 14 | 19 | — | 0 |
| 17 | `goods_stock_movements` | 库存变化记录 | 200 | 19 | 24 | — | 0 |
| 18 | `site_tables_master` | 台桌维表 | 74 | 26 | 31 | dim_table, dim_table_ex | 22 |
| 19 | `stock_goods_category_tree` | 库存商品分类树 | 9 | 20 | 16 | dim_goods_category | 16 |
| 20 | `store_goods_master` | 门店商品档案 | 173 | 53 | 52 | dim_store_goods, dim_store_goods_ex | 56 |
| 21 | `table_fee_discount_records` | 台费折扣/调账 | 200 | 55 | 33 | dwd_table_fee_adjust, dwd_table_fee_adjust_ex | 29 |
| 22 | `tenant_goods_master` | 租户商品档案 | 174 | 32 | 37 | dim_tenant_goods, dim_tenant_goods_ex | 41 |
| 23 | `settlement_ticket_details` | 结账小票详情(按 orderSettleId 逐条获取,不走常规分页) | 0 | 0 | 43 | — | 0 |
| | **合计** | | **3402** | **1067** | **980** | | **892** |
### 1.1 API↔ODS↔DWD 字段对比差异
以下汇总各表在三层之间的字段差异(点击数字跳转至分表详情):
| ODS 表名 | API→ODS 未映射 | ODS 无 JSON 源 | ODS→DWD 未映射 | DWD 无 ODS 源 | 主要差异原因 |
|---------|--------------|--------------|--------------|-------------|------------|
| `assistant_accounts_master` | 0 | 0 | [4](#diff-assistant-accounts-master) | [8](#diff-assistant-accounts-master) | SCD2/派生列 8 个 |
| `settlement_records` | [25](#diff-settlement-records) | 0 | 0 | 0 | 嵌套对象 25 个 |
| `table_fee_transactions` | [24](#diff-table-fee-transactions) | [1](#diff-table-fee-transactions) | [1](#diff-table-fee-transactions) | [8](#diff-table-fee-transactions) | 嵌套对象 24 个SCD2/派生列 8 个 |
| `assistant_service_records` | [24](#diff-assistant-service-records) | [1](#diff-assistant-service-records) | [4](#diff-assistant-service-records) | 0 | 嵌套对象 24 个 |
| `assistant_cancellation_records` | [24](#diff-assistant-cancellation-records) | [1](#diff-assistant-cancellation-records) | [2](#diff-assistant-cancellation-records) | 0 | 嵌套对象 24 个 |
| `store_goods_sales_records` | 0 | 0 | [1](#diff-store-goods-sales-records) | 0 | — |
| `payment_transactions` | [24](#diff-payment-transactions) | [1](#diff-payment-transactions) | [1](#diff-payment-transactions) | 0 | 嵌套对象 24 个 |
| `refund_transactions` | [24](#diff-refund-transactions) | [1](#diff-refund-transactions) | [1](#diff-refund-transactions) | 0 | 嵌套对象 24 个 |
| `platform_coupon_redemption_records` | [24](#diff-platform-coupon-redemption-records) | [1](#diff-platform-coupon-redemption-records) | [1](#diff-platform-coupon-redemption-records) | 0 | 嵌套对象 24 个 |
| `member_profiles` | 0 | 0 | 0 | [9](#diff-member-profiles) | SCD2/派生列 9 个 |
| `member_stored_value_cards` | 0 | [4](#diff-member-stored-value-cards) | 0 | [8](#diff-member-stored-value-cards) | SCD2/派生列 8 个 |
| `member_balance_changes` | 0 | 0 | [1](#diff-member-balance-changes) | [1](#diff-member-balance-changes) | SCD2/派生列 1 个 |
| `recharge_settlements` | [25](#diff-recharge-settlements) | 0 | [5](#diff-recharge-settlements) | [5](#diff-recharge-settlements) | 嵌套对象 25 个SCD2/派生列 5 个 |
| `group_buy_packages` | [2](#diff-group-buy-packages) | 0 | 0 | [8](#diff-group-buy-packages) | 平层未映射 2 个SCD2/派生列 8 个 |
| `group_buy_redemption_records` | 0 | 0 | 0 | 0 | — |
| `goods_stock_summary` | 0 | 0 | [14](#diff-goods-stock-summary) | 0 | — |
| `goods_stock_movements` | 0 | 0 | [19](#diff-goods-stock-movements) | 0 | — |
| `site_tables_master` | 0 | [1](#diff-site-tables-master) | [14](#diff-site-tables-master) | [8](#diff-site-tables-master) | SCD2/派生列 8 个 |
| `stock_goods_category_tree` | 0 | [1](#diff-stock-goods-category-tree) | [1](#diff-stock-goods-category-tree) | [4](#diff-stock-goods-category-tree) | SCD2/派生列 4 个 |
| `store_goods_master` | [5](#diff-store-goods-master) | 0 | [2](#diff-store-goods-master) | [8](#diff-store-goods-master) | 嵌套对象 4 个;平层未映射 1 个SCD2/派生列 8 个 |
| `table_fee_discount_records` | [25](#diff-table-fee-discount-records) | [2](#diff-table-fee-discount-records) | [2](#diff-table-fee-discount-records) | 0 | 嵌套对象 25 个 |
| `tenant_goods_master` | 0 | 0 | [1](#diff-tenant-goods-master) | [8](#diff-tenant-goods-master) | SCD2/派生列 8 个 |
| `settlement_ticket_details` | 0 | [38](#diff-settlement-ticket-details) | [38](#diff-settlement-ticket-details) | 0 | — |
<a id="diff-assistant-accounts-master"></a>
#### 1.1.1 assistant_accounts_master 字段差异明细
**ODS→DWD 未映射** — 4 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`system_role_id`](#ods-assistant-accounts-master)** | 关联实体 ID外键 | 中 | 标识类 ID 字段,用于关联/定位相关实体 | **⚠️ 无 DWD 目标** |
| 2 | **[`job_num`](#ods-assistant-accounts-master)** | 待分析ODS层字段 | 低 | 备用工号字段,目前未在该门店启用 | **⚠️ 无 DWD 目标** |
| 3 | **[`cx_unit_price`](#ods-assistant-accounts-master)** | 金额/价格相关 | 中 | 促销时段的单价,本门店未在账号表层面设置 | **⚠️ 无 DWD 目标** |
| 4 | **[`pd_unit_price`](#ods-assistant-accounts-master)** | 金额/价格相关 | 中 | 某种标准单价(例如“普通时段单价”),这里未在账号上配置(实际单价在助教商... | **⚠️ 无 DWD 目标** |
**DWD 无 ODS 源** — 8 个
| # | DWD 表 | DWD 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|-------|---------|-------|------|------|
| 1 | dim_assistant | **[`scd2_start_time`](#dwd-dim-assistant)** | SCD2 缓慢变化维度元数据 | 高 | SCD2 版本生效时间 | **⚠️ 无 ODS 源** |
| 2 | dim_assistant | **[`scd2_end_time`](#dwd-dim-assistant)** | SCD2 缓慢变化维度元数据 | 高 | SCD2 版本失效时间 | **⚠️ 无 ODS 源** |
| 3 | dim_assistant | **[`scd2_is_current`](#dwd-dim-assistant)** | SCD2 缓慢变化维度元数据 | 高 | 当前版本标记 | **⚠️ 无 ODS 源** |
| 4 | dim_assistant | **[`scd2_version`](#dwd-dim-assistant)** | SCD2 缓慢变化维度元数据 | 高 | 版本号 | **⚠️ 无 ODS 源** |
| 5 | dim_assistant_ex | **[`scd2_start_time`](#dwd-dim-assistant-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 6 | dim_assistant_ex | **[`scd2_end_time`](#dwd-dim-assistant-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 7 | dim_assistant_ex | **[`scd2_is_current`](#dwd-dim-assistant-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 8 | dim_assistant_ex | **[`scd2_version`](#dwd-dim-assistant-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
<a id="diff-settlement-records"></a>
#### 1.1.2 settlement_records 字段差异明细
<details><summary>API→ODS 未映射(嵌套对象)— 25 个</summary>
| # | JSON 字段 | 推测用途 | 置信度 | 示例值 | 说明 | 状态 |
|---|----------|---------|-------|-------|------|------|
| 1 | [`siteProfile.org_id`](#api-settlement-records) | 关联实体 ID外键 | 中 | `0` | | 📦 嵌套 |
| 2 | [`siteProfile.shop_name`](#api-settlement-records) | 门店名称 | 高 | | | 📦 嵌套 |
| 3 | [`siteProfile.avatar`](#api-settlement-records) | 头像/图片 URL | 中 | | | 📦 嵌套 |
| 4 | [`siteProfile.business_tel`](#api-settlement-records) | 联系电话 | 中 | | | 📦 嵌套 |
| 5 | [`siteProfile.full_address`](#api-settlement-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 6 | [`siteProfile.address`](#api-settlement-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 7 | [`siteProfile.longitude`](#api-settlement-records) | 待分析API层字段 | 低 | `0.0` | | 📦 嵌套 |
| 8 | [`siteProfile.latitude`](#api-settlement-records) | 待分析API层字段 | 低 | `0.0` | | 📦 嵌套 |
| 9 | [`siteProfile.tenant_site_region_id`](#api-settlement-records) | 关联实体 ID外键 | 中 | `0` | | 📦 嵌套 |
| 10 | [`siteProfile.tenant_id`](#api-settlement-records) | 关联实体 ID外键 | 中 | `0` | | 📦 嵌套 |
| 11 | [`siteProfile.auto_light`](#api-settlement-records) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 12 | [`siteProfile.attendance_distance`](#api-settlement-records) | 待分析API层字段 | 低 | `0` | | 📦 嵌套 |
| 13 | [`siteProfile.wifi_name`](#api-settlement-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 14 | [`siteProfile.wifi_password`](#api-settlement-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 15 | [`siteProfile.customer_service_qrcode`](#api-settlement-records) | 链接/二维码 | 中 | | | 📦 嵌套 |
| 16 | [`siteProfile.customer_service_wechat`](#api-settlement-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 17 | [`siteProfile.fixed_pay_qrCode`](#api-settlement-records) | 链接/二维码 | 中 | | | 📦 嵌套 |
| 18 | [`siteProfile.prod_env`](#api-settlement-records) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 19 | [`siteProfile.light_status`](#api-settlement-records) | 状态码 | 中 | `1` | | 📦 嵌套 |
| 20 | [`siteProfile.light_type`](#api-settlement-records) | 待分析API层字段 | 低 | `0` | | 📦 嵌套 |
| 21 | [`siteProfile.site_type`](#api-settlement-records) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 22 | [`siteProfile.light_token`](#api-settlement-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 23 | [`siteProfile.site_label`](#api-settlement-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 24 | [`siteProfile.attendance_enabled`](#api-settlement-records) | 启用/禁用开关 | 中 | `1` | | 📦 嵌套 |
| 25 | [`siteProfile.shop_status`](#api-settlement-records) | 状态码 | 中 | `1` | | 📦 嵌套 |
</details>
<a id="diff-table-fee-transactions"></a>
#### 1.1.3 table_fee_transactions 字段差异明细
<details><summary>API→ODS 未映射(嵌套对象)— 24 个</summary>
| # | JSON 字段 | 推测用途 | 置信度 | 示例值 | 说明 | 状态 |
|---|----------|---------|-------|-------|------|------|
| 1 | [`siteProfile.org_id`](#api-table-fee-transactions) | 关联实体 ID外键 | 中 | `2790684179467077` | | 📦 嵌套 |
| 2 | [`siteProfile.shop_name`](#api-table-fee-transactions) | 门店名称 | 高 | `朗朗桌球` | | 📦 嵌套 |
| 3 | [`siteProfile.avatar`](#api-table-fee-transactions) | 头像/图片 URL | 中 | `https://oss.ficoo.vip/admin...` | | 📦 嵌套 |
| 4 | [`siteProfile.business_tel`](#api-table-fee-transactions) | 联系电话 | 中 | `13316068642` | | 📦 嵌套 |
| 5 | [`siteProfile.full_address`](#api-table-fee-transactions) | 待分析API层字段 | 低 | `广东省广州市天河区丽阳街12号` | | 📦 嵌套 |
| 6 | [`siteProfile.address`](#api-table-fee-transactions) | 待分析API层字段 | 低 | `广东省广州市天河区天园街道朗朗桌球` | | 📦 嵌套 |
| 7 | [`siteProfile.longitude`](#api-table-fee-transactions) | 待分析API层字段 | 低 | `113.360321` | | 📦 嵌套 |
| 8 | [`siteProfile.latitude`](#api-table-fee-transactions) | 待分析API层字段 | 低 | `23.133629` | | 📦 嵌套 |
| 9 | [`siteProfile.tenant_site_region_id`](#api-table-fee-transactions) | 关联实体 ID外键 | 中 | `156440100` | | 📦 嵌套 |
| 10 | [`siteProfile.auto_light`](#api-table-fee-transactions) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 11 | [`siteProfile.attendance_distance`](#api-table-fee-transactions) | 待分析API层字段 | 低 | `0` | | 📦 嵌套 |
| 12 | [`siteProfile.wifi_name`](#api-table-fee-transactions) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 13 | [`siteProfile.wifi_password`](#api-table-fee-transactions) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 14 | [`siteProfile.customer_service_qrcode`](#api-table-fee-transactions) | 链接/二维码 | 中 | | | 📦 嵌套 |
| 15 | [`siteProfile.customer_service_wechat`](#api-table-fee-transactions) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 16 | [`siteProfile.fixed_pay_qrCode`](#api-table-fee-transactions) | 链接/二维码 | 中 | | | 📦 嵌套 |
| 17 | [`siteProfile.prod_env`](#api-table-fee-transactions) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 18 | [`siteProfile.light_status`](#api-table-fee-transactions) | 状态码 | 中 | `1` | | 📦 嵌套 |
| 19 | [`siteProfile.light_type`](#api-table-fee-transactions) | 待分析API层字段 | 低 | `0` | | 📦 嵌套 |
| 20 | [`siteProfile.site_type`](#api-table-fee-transactions) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 21 | [`siteProfile.light_token`](#api-table-fee-transactions) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 22 | [`siteProfile.site_label`](#api-table-fee-transactions) | 待分析API层字段 | 低 | `A` | | 📦 嵌套 |
| 23 | [`siteProfile.attendance_enabled`](#api-table-fee-transactions) | 启用/禁用开关 | 中 | `1` | | 📦 嵌套 |
| 24 | [`siteProfile.shop_status`](#api-table-fee-transactions) | 状态码 | 中 | `1` | | 📦 嵌套 |
</details>
**ODS 无 JSON 源** — 1 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`siteprofile`](#ods-table-fee-transactions)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
**ODS→DWD 未映射** — 1 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`siteprofile`](#ods-table-fee-transactions)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
**DWD 无 ODS 源** — 8 个
| # | DWD 表 | DWD 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|-------|---------|-------|------|------|
| 1 | dim_site | **[`scd2_start_time`](#dwd-dim-site)** | SCD2 缓慢变化维度元数据 | 高 | SCD2 版本生效时间 | **⚠️ 无 ODS 源** |
| 2 | dim_site | **[`scd2_end_time`](#dwd-dim-site)** | SCD2 缓慢变化维度元数据 | 高 | SCD2 版本失效时间 | **⚠️ 无 ODS 源** |
| 3 | dim_site | **[`scd2_is_current`](#dwd-dim-site)** | SCD2 缓慢变化维度元数据 | 高 | 当前版本标记 | **⚠️ 无 ODS 源** |
| 4 | dim_site | **[`scd2_version`](#dwd-dim-site)** | SCD2 缓慢变化维度元数据 | 高 | 版本号 | **⚠️ 无 ODS 源** |
| 5 | dim_site_ex | **[`scd2_start_time`](#dwd-dim-site-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 6 | dim_site_ex | **[`scd2_end_time`](#dwd-dim-site-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 7 | dim_site_ex | **[`scd2_is_current`](#dwd-dim-site-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 8 | dim_site_ex | **[`scd2_version`](#dwd-dim-site-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
<a id="diff-assistant-service-records"></a>
#### 1.1.4 assistant_service_records 字段差异明细
<details><summary>API→ODS 未映射(嵌套对象)— 24 个</summary>
| # | JSON 字段 | 推测用途 | 置信度 | 示例值 | 说明 | 状态 |
|---|----------|---------|-------|-------|------|------|
| 1 | [`siteProfile.org_id`](#api-assistant-service-records) | 关联实体 ID外键 | 中 | `2790684179467077` | | 📦 嵌套 |
| 2 | [`siteProfile.shop_name`](#api-assistant-service-records) | 门店名称 | 高 | `朗朗桌球` | | 📦 嵌套 |
| 3 | [`siteProfile.avatar`](#api-assistant-service-records) | 头像/图片 URL | 中 | `https://oss.ficoo.vip/admin...` | | 📦 嵌套 |
| 4 | [`siteProfile.business_tel`](#api-assistant-service-records) | 联系电话 | 中 | `13316068642` | | 📦 嵌套 |
| 5 | [`siteProfile.full_address`](#api-assistant-service-records) | 待分析API层字段 | 低 | `广东省广州市天河区丽阳街12号` | | 📦 嵌套 |
| 6 | [`siteProfile.address`](#api-assistant-service-records) | 待分析API层字段 | 低 | `广东省广州市天河区天园街道朗朗桌球` | | 📦 嵌套 |
| 7 | [`siteProfile.longitude`](#api-assistant-service-records) | 待分析API层字段 | 低 | `113.360321` | | 📦 嵌套 |
| 8 | [`siteProfile.latitude`](#api-assistant-service-records) | 待分析API层字段 | 低 | `23.133629` | | 📦 嵌套 |
| 9 | [`siteProfile.tenant_site_region_id`](#api-assistant-service-records) | 关联实体 ID外键 | 中 | `156440100` | | 📦 嵌套 |
| 10 | [`siteProfile.auto_light`](#api-assistant-service-records) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 11 | [`siteProfile.attendance_distance`](#api-assistant-service-records) | 待分析API层字段 | 低 | `0` | | 📦 嵌套 |
| 12 | [`siteProfile.wifi_name`](#api-assistant-service-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 13 | [`siteProfile.wifi_password`](#api-assistant-service-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 14 | [`siteProfile.customer_service_qrcode`](#api-assistant-service-records) | 链接/二维码 | 中 | | | 📦 嵌套 |
| 15 | [`siteProfile.customer_service_wechat`](#api-assistant-service-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 16 | [`siteProfile.fixed_pay_qrCode`](#api-assistant-service-records) | 链接/二维码 | 中 | | | 📦 嵌套 |
| 17 | [`siteProfile.prod_env`](#api-assistant-service-records) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 18 | [`siteProfile.light_status`](#api-assistant-service-records) | 状态码 | 中 | `1` | | 📦 嵌套 |
| 19 | [`siteProfile.light_type`](#api-assistant-service-records) | 待分析API层字段 | 低 | `0` | | 📦 嵌套 |
| 20 | [`siteProfile.site_type`](#api-assistant-service-records) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 21 | [`siteProfile.light_token`](#api-assistant-service-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 22 | [`siteProfile.site_label`](#api-assistant-service-records) | 待分析API层字段 | 低 | `A` | | 📦 嵌套 |
| 23 | [`siteProfile.attendance_enabled`](#api-assistant-service-records) | 启用/禁用开关 | 中 | `1` | | 📦 嵌套 |
| 24 | [`siteProfile.shop_status`](#api-assistant-service-records) | 状态码 | 中 | `1` | | 📦 嵌套 |
</details>
**ODS 无 JSON 源** — 1 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`siteprofile`](#ods-assistant-service-records)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
**ODS→DWD 未映射** — 4 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`siteprofile`](#ods-assistant-service-records)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 2 | **[`site_assistant_id`](#ods-assistant-service-records)** | 关联实体 ID外键 | 中 | 门店维度的助教 ID | **⚠️ 无 DWD 目标** |
| 3 | **[`operator_id`](#ods-assistant-service-records)** | 关联实体 ID外键 | 中 | 操作员 ID录入/结算这条助教服务的员工) | **⚠️ 无 DWD 目标** |
| 4 | **[`operator_name`](#ods-assistant-service-records)** | 待分析ODS层字段 | 低 | 操作员姓名,与 operator_id 一起使用,便于直接阅读 | **⚠️ 无 DWD 目标** |
<a id="diff-assistant-cancellation-records"></a>
#### 1.1.5 assistant_cancellation_records 字段差异明细
<details><summary>API→ODS 未映射(嵌套对象)— 24 个</summary>
| # | JSON 字段 | 推测用途 | 置信度 | 示例值 | 说明 | 状态 |
|---|----------|---------|-------|-------|------|------|
| 1 | [`siteProfile.org_id`](#api-assistant-cancellation-records) | 关联实体 ID外键 | 中 | `2790684179467077` | | 📦 嵌套 |
| 2 | [`siteProfile.shop_name`](#api-assistant-cancellation-records) | 门店名称 | 高 | `朗朗桌球` | | 📦 嵌套 |
| 3 | [`siteProfile.avatar`](#api-assistant-cancellation-records) | 头像/图片 URL | 中 | `https://oss.ficoo.vip/admin...` | | 📦 嵌套 |
| 4 | [`siteProfile.business_tel`](#api-assistant-cancellation-records) | 联系电话 | 中 | `13316068642` | | 📦 嵌套 |
| 5 | [`siteProfile.full_address`](#api-assistant-cancellation-records) | 待分析API层字段 | 低 | `广东省广州市天河区丽阳街12号` | | 📦 嵌套 |
| 6 | [`siteProfile.address`](#api-assistant-cancellation-records) | 待分析API层字段 | 低 | `广东省广州市天河区天园街道朗朗桌球` | | 📦 嵌套 |
| 7 | [`siteProfile.longitude`](#api-assistant-cancellation-records) | 待分析API层字段 | 低 | `113.360321` | | 📦 嵌套 |
| 8 | [`siteProfile.latitude`](#api-assistant-cancellation-records) | 待分析API层字段 | 低 | `23.133629` | | 📦 嵌套 |
| 9 | [`siteProfile.tenant_site_region_id`](#api-assistant-cancellation-records) | 关联实体 ID外键 | 中 | `156440100` | | 📦 嵌套 |
| 10 | [`siteProfile.auto_light`](#api-assistant-cancellation-records) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 11 | [`siteProfile.attendance_distance`](#api-assistant-cancellation-records) | 待分析API层字段 | 低 | `0` | | 📦 嵌套 |
| 12 | [`siteProfile.wifi_name`](#api-assistant-cancellation-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 13 | [`siteProfile.wifi_password`](#api-assistant-cancellation-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 14 | [`siteProfile.customer_service_qrcode`](#api-assistant-cancellation-records) | 链接/二维码 | 中 | | | 📦 嵌套 |
| 15 | [`siteProfile.customer_service_wechat`](#api-assistant-cancellation-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 16 | [`siteProfile.fixed_pay_qrCode`](#api-assistant-cancellation-records) | 链接/二维码 | 中 | | | 📦 嵌套 |
| 17 | [`siteProfile.prod_env`](#api-assistant-cancellation-records) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 18 | [`siteProfile.light_status`](#api-assistant-cancellation-records) | 状态码 | 中 | `1` | | 📦 嵌套 |
| 19 | [`siteProfile.light_type`](#api-assistant-cancellation-records) | 待分析API层字段 | 低 | `0` | | 📦 嵌套 |
| 20 | [`siteProfile.site_type`](#api-assistant-cancellation-records) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 21 | [`siteProfile.light_token`](#api-assistant-cancellation-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 22 | [`siteProfile.site_label`](#api-assistant-cancellation-records) | 待分析API层字段 | 低 | `A` | | 📦 嵌套 |
| 23 | [`siteProfile.attendance_enabled`](#api-assistant-cancellation-records) | 启用/禁用开关 | 中 | `1` | | 📦 嵌套 |
| 24 | [`siteProfile.shop_status`](#api-assistant-cancellation-records) | 状态码 | 中 | `1` | | 📦 嵌套 |
</details>
**ODS 无 JSON 源** — 1 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`siteprofile`](#ods-assistant-cancellation-records)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
**ODS→DWD 未映射** — 2 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`siteprofile`](#ods-assistant-cancellation-records)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 2 | **[`assistanton`](#ods-assistant-cancellation-records)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
<a id="diff-store-goods-sales-records"></a>
#### 1.1.6 store_goods_sales_records 字段差异明细
**ODS→DWD 未映射** — 1 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`discount_price`](#ods-store-goods-sales-records)** | 金额/价格相关 | 中 | 折后单价(元/单位) | **⚠️ 无 DWD 目标** |
<a id="diff-payment-transactions"></a>
#### 1.1.7 payment_transactions 字段差异明细
<details><summary>API→ODS 未映射(嵌套对象)— 24 个</summary>
| # | JSON 字段 | 推测用途 | 置信度 | 示例值 | 说明 | 状态 |
|---|----------|---------|-------|-------|------|------|
| 1 | [`siteProfile.org_id`](#api-payment-transactions) | 关联实体 ID外键 | 中 | `2790684179467077` | | 📦 嵌套 |
| 2 | [`siteProfile.shop_name`](#api-payment-transactions) | 门店名称 | 高 | `朗朗桌球` | | 📦 嵌套 |
| 3 | [`siteProfile.avatar`](#api-payment-transactions) | 头像/图片 URL | 中 | `https://oss.ficoo.vip/admin...` | | 📦 嵌套 |
| 4 | [`siteProfile.business_tel`](#api-payment-transactions) | 联系电话 | 中 | `13316068642` | | 📦 嵌套 |
| 5 | [`siteProfile.full_address`](#api-payment-transactions) | 待分析API层字段 | 低 | `广东省广州市天河区丽阳街12号` | | 📦 嵌套 |
| 6 | [`siteProfile.address`](#api-payment-transactions) | 待分析API层字段 | 低 | `广东省广州市天河区天园街道朗朗桌球` | | 📦 嵌套 |
| 7 | [`siteProfile.longitude`](#api-payment-transactions) | 待分析API层字段 | 低 | `113.360321` | | 📦 嵌套 |
| 8 | [`siteProfile.latitude`](#api-payment-transactions) | 待分析API层字段 | 低 | `23.133629` | | 📦 嵌套 |
| 9 | [`siteProfile.tenant_site_region_id`](#api-payment-transactions) | 关联实体 ID外键 | 中 | `156440100` | | 📦 嵌套 |
| 10 | [`siteProfile.auto_light`](#api-payment-transactions) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 11 | [`siteProfile.attendance_distance`](#api-payment-transactions) | 待分析API层字段 | 低 | `0` | | 📦 嵌套 |
| 12 | [`siteProfile.wifi_name`](#api-payment-transactions) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 13 | [`siteProfile.wifi_password`](#api-payment-transactions) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 14 | [`siteProfile.customer_service_qrcode`](#api-payment-transactions) | 链接/二维码 | 中 | | | 📦 嵌套 |
| 15 | [`siteProfile.customer_service_wechat`](#api-payment-transactions) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 16 | [`siteProfile.fixed_pay_qrCode`](#api-payment-transactions) | 链接/二维码 | 中 | | | 📦 嵌套 |
| 17 | [`siteProfile.prod_env`](#api-payment-transactions) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 18 | [`siteProfile.light_status`](#api-payment-transactions) | 状态码 | 中 | `2` | | 📦 嵌套 |
| 19 | [`siteProfile.light_type`](#api-payment-transactions) | 待分析API层字段 | 低 | `0` | | 📦 嵌套 |
| 20 | [`siteProfile.site_type`](#api-payment-transactions) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 21 | [`siteProfile.light_token`](#api-payment-transactions) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 22 | [`siteProfile.site_label`](#api-payment-transactions) | 待分析API层字段 | 低 | `A` | | 📦 嵌套 |
| 23 | [`siteProfile.attendance_enabled`](#api-payment-transactions) | 启用/禁用开关 | 中 | `1` | | 📦 嵌套 |
| 24 | [`siteProfile.shop_status`](#api-payment-transactions) | 状态码 | 中 | `1` | | 📦 嵌套 |
</details>
**ODS 无 JSON 源** — 1 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`siteprofile`](#ods-payment-transactions)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
**ODS→DWD 未映射** — 1 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`siteprofile`](#ods-payment-transactions)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
<a id="diff-refund-transactions"></a>
#### 1.1.8 refund_transactions 字段差异明细
<details><summary>API→ODS 未映射(嵌套对象)— 24 个</summary>
| # | JSON 字段 | 推测用途 | 置信度 | 示例值 | 说明 | 状态 |
|---|----------|---------|-------|-------|------|------|
| 1 | [`siteProfile.org_id`](#api-refund-transactions) | 关联实体 ID外键 | 中 | `2790684179467077` | | 📦 嵌套 |
| 2 | [`siteProfile.shop_name`](#api-refund-transactions) | 门店名称 | 高 | `朗朗桌球` | | 📦 嵌套 |
| 3 | [`siteProfile.avatar`](#api-refund-transactions) | 头像/图片 URL | 中 | `https://oss.ficoo.vip/admin...` | | 📦 嵌套 |
| 4 | [`siteProfile.business_tel`](#api-refund-transactions) | 联系电话 | 中 | `13316068642` | | 📦 嵌套 |
| 5 | [`siteProfile.full_address`](#api-refund-transactions) | 待分析API层字段 | 低 | `广东省广州市天河区丽阳街12号` | | 📦 嵌套 |
| 6 | [`siteProfile.address`](#api-refund-transactions) | 待分析API层字段 | 低 | `广东省广州市天河区天园街道朗朗桌球` | | 📦 嵌套 |
| 7 | [`siteProfile.longitude`](#api-refund-transactions) | 待分析API层字段 | 低 | `113.360321` | | 📦 嵌套 |
| 8 | [`siteProfile.latitude`](#api-refund-transactions) | 待分析API层字段 | 低 | `23.133629` | | 📦 嵌套 |
| 9 | [`siteProfile.tenant_site_region_id`](#api-refund-transactions) | 关联实体 ID外键 | 中 | `156440100` | | 📦 嵌套 |
| 10 | [`siteProfile.auto_light`](#api-refund-transactions) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 11 | [`siteProfile.attendance_distance`](#api-refund-transactions) | 待分析API层字段 | 低 | `0` | | 📦 嵌套 |
| 12 | [`siteProfile.wifi_name`](#api-refund-transactions) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 13 | [`siteProfile.wifi_password`](#api-refund-transactions) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 14 | [`siteProfile.customer_service_qrcode`](#api-refund-transactions) | 链接/二维码 | 中 | | | 📦 嵌套 |
| 15 | [`siteProfile.customer_service_wechat`](#api-refund-transactions) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 16 | [`siteProfile.fixed_pay_qrCode`](#api-refund-transactions) | 链接/二维码 | 中 | | | 📦 嵌套 |
| 17 | [`siteProfile.prod_env`](#api-refund-transactions) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 18 | [`siteProfile.light_status`](#api-refund-transactions) | 状态码 | 中 | `2` | | 📦 嵌套 |
| 19 | [`siteProfile.light_type`](#api-refund-transactions) | 待分析API层字段 | 低 | `0` | | 📦 嵌套 |
| 20 | [`siteProfile.site_type`](#api-refund-transactions) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 21 | [`siteProfile.light_token`](#api-refund-transactions) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 22 | [`siteProfile.site_label`](#api-refund-transactions) | 待分析API层字段 | 低 | `A` | | 📦 嵌套 |
| 23 | [`siteProfile.attendance_enabled`](#api-refund-transactions) | 启用/禁用开关 | 中 | `1` | | 📦 嵌套 |
| 24 | [`siteProfile.shop_status`](#api-refund-transactions) | 状态码 | 中 | `1` | | 📦 嵌套 |
</details>
**ODS 无 JSON 源** — 1 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`siteprofile`](#ods-refund-transactions)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
**ODS→DWD 未映射** — 1 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`siteprofile`](#ods-refund-transactions)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
<a id="diff-platform-coupon-redemption-records"></a>
#### 1.1.9 platform_coupon_redemption_records 字段差异明细
<details><summary>API→ODS 未映射(嵌套对象)— 24 个</summary>
| # | JSON 字段 | 推测用途 | 置信度 | 示例值 | 说明 | 状态 |
|---|----------|---------|-------|-------|------|------|
| 1 | [`siteProfile.org_id`](#api-platform-coupon-redemption-records) | 关联实体 ID外键 | 中 | `2790684179467077` | | 📦 嵌套 |
| 2 | [`siteProfile.shop_name`](#api-platform-coupon-redemption-records) | 门店名称 | 高 | `朗朗桌球` | | 📦 嵌套 |
| 3 | [`siteProfile.avatar`](#api-platform-coupon-redemption-records) | 头像/图片 URL | 中 | `https://oss.ficoo.vip/admin...` | | 📦 嵌套 |
| 4 | [`siteProfile.business_tel`](#api-platform-coupon-redemption-records) | 联系电话 | 中 | `13316068642` | | 📦 嵌套 |
| 5 | [`siteProfile.full_address`](#api-platform-coupon-redemption-records) | 待分析API层字段 | 低 | `广东省广州市天河区丽阳街12号` | | 📦 嵌套 |
| 6 | [`siteProfile.address`](#api-platform-coupon-redemption-records) | 待分析API层字段 | 低 | `广东省广州市天河区天园街道朗朗桌球` | | 📦 嵌套 |
| 7 | [`siteProfile.longitude`](#api-platform-coupon-redemption-records) | 待分析API层字段 | 低 | `113.360321` | | 📦 嵌套 |
| 8 | [`siteProfile.latitude`](#api-platform-coupon-redemption-records) | 待分析API层字段 | 低 | `23.133629` | | 📦 嵌套 |
| 9 | [`siteProfile.tenant_site_region_id`](#api-platform-coupon-redemption-records) | 关联实体 ID外键 | 中 | `156440100` | | 📦 嵌套 |
| 10 | [`siteProfile.auto_light`](#api-platform-coupon-redemption-records) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 11 | [`siteProfile.attendance_distance`](#api-platform-coupon-redemption-records) | 待分析API层字段 | 低 | `0` | | 📦 嵌套 |
| 12 | [`siteProfile.wifi_name`](#api-platform-coupon-redemption-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 13 | [`siteProfile.wifi_password`](#api-platform-coupon-redemption-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 14 | [`siteProfile.customer_service_qrcode`](#api-platform-coupon-redemption-records) | 链接/二维码 | 中 | | | 📦 嵌套 |
| 15 | [`siteProfile.customer_service_wechat`](#api-platform-coupon-redemption-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 16 | [`siteProfile.fixed_pay_qrCode`](#api-platform-coupon-redemption-records) | 链接/二维码 | 中 | | | 📦 嵌套 |
| 17 | [`siteProfile.prod_env`](#api-platform-coupon-redemption-records) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 18 | [`siteProfile.light_status`](#api-platform-coupon-redemption-records) | 状态码 | 中 | `2` | | 📦 嵌套 |
| 19 | [`siteProfile.light_type`](#api-platform-coupon-redemption-records) | 待分析API层字段 | 低 | `0` | | 📦 嵌套 |
| 20 | [`siteProfile.site_type`](#api-platform-coupon-redemption-records) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 21 | [`siteProfile.light_token`](#api-platform-coupon-redemption-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 22 | [`siteProfile.site_label`](#api-platform-coupon-redemption-records) | 待分析API层字段 | 低 | `A` | | 📦 嵌套 |
| 23 | [`siteProfile.attendance_enabled`](#api-platform-coupon-redemption-records) | 启用/禁用开关 | 中 | `1` | | 📦 嵌套 |
| 24 | [`siteProfile.shop_status`](#api-platform-coupon-redemption-records) | 状态码 | 中 | `1` | | 📦 嵌套 |
</details>
**ODS 无 JSON 源** — 1 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`siteprofile`](#ods-platform-coupon-redemption-records)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
**ODS→DWD 未映射** — 1 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`siteprofile`](#ods-platform-coupon-redemption-records)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
<a id="diff-member-profiles"></a>
#### 1.1.10 member_profiles 字段差异明细
**DWD 无 ODS 源** — 9 个
| # | DWD 表 | DWD 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|-------|---------|-------|------|------|
| 1 | dim_member | **[`update_time`](#dwd-dim-member)** | 记录更新时间 | 高 | 更新时间 | **⚠️ 无 ODS 源** |
| 2 | dim_member | **[`scd2_start_time`](#dwd-dim-member)** | SCD2 缓慢变化维度元数据 | 高 | SCD2 版本生效时间 | **⚠️ 无 ODS 源** |
| 3 | dim_member | **[`scd2_end_time`](#dwd-dim-member)** | SCD2 缓慢变化维度元数据 | 高 | SCD2 版本失效时间 | **⚠️ 无 ODS 源** |
| 4 | dim_member | **[`scd2_is_current`](#dwd-dim-member)** | SCD2 缓慢变化维度元数据 | 高 | 当前版本标记 | **⚠️ 无 ODS 源** |
| 5 | dim_member | **[`scd2_version`](#dwd-dim-member)** | SCD2 缓慢变化维度元数据 | 高 | 版本号 | **⚠️ 无 ODS 源** |
| 6 | dim_member_ex | **[`scd2_start_time`](#dwd-dim-member-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 7 | dim_member_ex | **[`scd2_end_time`](#dwd-dim-member-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 8 | dim_member_ex | **[`scd2_is_current`](#dwd-dim-member-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 9 | dim_member_ex | **[`scd2_version`](#dwd-dim-member-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
<a id="diff-member-stored-value-cards"></a>
#### 1.1.11 member_stored_value_cards 字段差异明细
**ODS 无 JSON 源** — 4 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`goodscategoryid`](#ods-member-stored-value-cards)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 2 | **[`tableareaid`](#ods-member-stored-value-cards)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 3 | **[`pdassisnatlevel`](#ods-member-stored-value-cards)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 4 | **[`cxassisnatlevel`](#ods-member-stored-value-cards)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
**DWD 无 ODS 源** — 8 个
| # | DWD 表 | DWD 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|-------|---------|-------|------|------|
| 1 | dim_member_card_account | **[`scd2_start_time`](#dwd-dim-member-card-account)** | SCD2 缓慢变化维度元数据 | 高 | SCD2 版本生效时间 | **⚠️ 无 ODS 源** |
| 2 | dim_member_card_account | **[`scd2_end_time`](#dwd-dim-member-card-account)** | SCD2 缓慢变化维度元数据 | 高 | SCD2 版本失效时间 | **⚠️ 无 ODS 源** |
| 3 | dim_member_card_account | **[`scd2_is_current`](#dwd-dim-member-card-account)** | SCD2 缓慢变化维度元数据 | 高 | 当前版本标记 | **⚠️ 无 ODS 源** |
| 4 | dim_member_card_account | **[`scd2_version`](#dwd-dim-member-card-account)** | SCD2 缓慢变化维度元数据 | 高 | 版本号 | **⚠️ 无 ODS 源** |
| 5 | dim_member_card_account_ex | **[`scd2_start_time`](#dwd-dim-member-card-account-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 6 | dim_member_card_account_ex | **[`scd2_end_time`](#dwd-dim-member-card-account-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 7 | dim_member_card_account_ex | **[`scd2_is_current`](#dwd-dim-member-card-account-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 8 | dim_member_card_account_ex | **[`scd2_version`](#dwd-dim-member-card-account-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
<a id="diff-member-balance-changes"></a>
#### 1.1.12 member_balance_changes 字段差异明细
**ODS→DWD 未映射** — 1 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`relate_id`](#ods-member-balance-changes)** | 关联实体 ID外键 | 中 | 例如某次充值记录的 ID、某张订单/结算单 ID、某次活动抵用券核销记录 ... | **⚠️ 无 DWD 目标** |
**DWD 无 ODS 源** — 1 个
| # | DWD 表 | DWD 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|-------|---------|-------|------|------|
| 1 | dwd_member_balance_change | **[`principal_change_amount`](#dwd-dwd-member-balance-change)** | 金额/价格相关 | 中 | 本金变动金额(正=增加,负=减少) | **⚠️ 无 ODS 源** |
<a id="diff-recharge-settlements"></a>
#### 1.1.13 recharge_settlements 字段差异明细
<details><summary>API→ODS 未映射(嵌套对象)— 25 个</summary>
| # | JSON 字段 | 推测用途 | 置信度 | 示例值 | 说明 | 状态 |
|---|----------|---------|-------|-------|------|------|
| 1 | [`siteProfile.org_id`](#api-recharge-settlements) | 关联实体 ID外键 | 中 | `2790684179467077` | | 📦 嵌套 |
| 2 | [`siteProfile.shop_name`](#api-recharge-settlements) | 门店名称 | 高 | `朗朗桌球` | | 📦 嵌套 |
| 3 | [`siteProfile.avatar`](#api-recharge-settlements) | 头像/图片 URL | 中 | `https://oss.ficoo.vip/admin...` | | 📦 嵌套 |
| 4 | [`siteProfile.business_tel`](#api-recharge-settlements) | 联系电话 | 中 | `13316068642` | | 📦 嵌套 |
| 5 | [`siteProfile.full_address`](#api-recharge-settlements) | 待分析API层字段 | 低 | `广东省广州市天河区丽阳街12号` | | 📦 嵌套 |
| 6 | [`siteProfile.address`](#api-recharge-settlements) | 待分析API层字段 | 低 | `广东省广州市天河区天园街道朗朗桌球` | | 📦 嵌套 |
| 7 | [`siteProfile.longitude`](#api-recharge-settlements) | 待分析API层字段 | 低 | `113.360321` | | 📦 嵌套 |
| 8 | [`siteProfile.latitude`](#api-recharge-settlements) | 待分析API层字段 | 低 | `23.133629` | | 📦 嵌套 |
| 9 | [`siteProfile.tenant_site_region_id`](#api-recharge-settlements) | 关联实体 ID外键 | 中 | `156440100` | | 📦 嵌套 |
| 10 | [`siteProfile.tenant_id`](#api-recharge-settlements) | 关联实体 ID外键 | 中 | `2790683160709957` | | 📦 嵌套 |
| 11 | [`siteProfile.auto_light`](#api-recharge-settlements) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 12 | [`siteProfile.attendance_distance`](#api-recharge-settlements) | 待分析API层字段 | 低 | `0` | | 📦 嵌套 |
| 13 | [`siteProfile.wifi_name`](#api-recharge-settlements) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 14 | [`siteProfile.wifi_password`](#api-recharge-settlements) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 15 | [`siteProfile.customer_service_qrcode`](#api-recharge-settlements) | 链接/二维码 | 中 | | | 📦 嵌套 |
| 16 | [`siteProfile.customer_service_wechat`](#api-recharge-settlements) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 17 | [`siteProfile.fixed_pay_qrCode`](#api-recharge-settlements) | 链接/二维码 | 中 | | | 📦 嵌套 |
| 18 | [`siteProfile.prod_env`](#api-recharge-settlements) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 19 | [`siteProfile.light_status`](#api-recharge-settlements) | 状态码 | 中 | `1` | | 📦 嵌套 |
| 20 | [`siteProfile.light_type`](#api-recharge-settlements) | 待分析API层字段 | 低 | `0` | | 📦 嵌套 |
| 21 | [`siteProfile.site_type`](#api-recharge-settlements) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 22 | [`siteProfile.light_token`](#api-recharge-settlements) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 23 | [`siteProfile.site_label`](#api-recharge-settlements) | 待分析API层字段 | 低 | `A` | | 📦 嵌套 |
| 24 | [`siteProfile.attendance_enabled`](#api-recharge-settlements) | 启用/禁用开关 | 中 | `1` | | 📦 嵌套 |
| 25 | [`siteProfile.shop_status`](#api-recharge-settlements) | 状态码 | 中 | `1` | | 📦 嵌套 |
</details>
**ODS→DWD 未映射** — 5 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`electricityadjustmoney`](#ods-recharge-settlements)** | 金额/价格相关 | 中 | 电费调整金额 | **⚠️ 无 DWD 目标** |
| 2 | **[`electricitymoney`](#ods-recharge-settlements)** | 金额/价格相关 | 中 | 电费金额 | **⚠️ 无 DWD 目标** |
| 3 | **[`mervousalesamount`](#ods-recharge-settlements)** | 金额/价格相关 | 中 | 商户券销售额 | **⚠️ 无 DWD 目标** |
| 4 | **[`plcouponsaleamount`](#ods-recharge-settlements)** | 金额/价格相关 | 中 | 平台券销售额 | **⚠️ 无 DWD 目标** |
| 5 | **[`realelectricitymoney`](#ods-recharge-settlements)** | 金额/价格相关 | 中 | 实际电费金额 | **⚠️ 无 DWD 目标** |
**DWD 无 ODS 源** — 5 个
| # | DWD 表 | DWD 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|-------|---------|-------|------|------|
| 1 | dwd_recharge_order | **[`pl_coupon_sale_amount`](#dwd-dwd-recharge-order)** | 金额/价格相关 | 中 | 平台券销售金额 | **⚠️ 无 ODS 源** |
| 2 | dwd_recharge_order | **[`mervou_sales_amount`](#dwd-dwd-recharge-order)** | 金额/价格相关 | 中 | 美团/大众点评等平台销售金额 | **⚠️ 无 ODS 源** |
| 3 | dwd_recharge_order | **[`electricity_money`](#dwd-dwd-recharge-order)** | 金额/价格相关 | 中 | 电费金额 | **⚠️ 无 ODS 源** |
| 4 | dwd_recharge_order | **[`real_electricity_money`](#dwd-dwd-recharge-order)** | 金额/价格相关 | 中 | 实际电费金额 | **⚠️ 无 ODS 源** |
| 5 | dwd_recharge_order | **[`electricity_adjust_money`](#dwd-dwd-recharge-order)** | 金额/价格相关 | 中 | 电费调整金额 | **⚠️ 无 ODS 源** |
<a id="diff-group-buy-packages"></a>
#### 1.1.14 group_buy_packages 字段差异明细
**API→ODS 未映射(平层)** — 2 个
| # | JSON 字段 | 推测用途 | 置信度 | 示例值 | 说明 | 状态 |
|---|----------|---------|-------|-------|------|------|
| 1 | **[`tenantTableAreaIdList[]`](#api-group-buy-packages)** | 待分析API层字段 | 低 | `2791960001957765`, `2791961347968901`, `2791961060364165`, `2791961709907845`, `2791960521691013` | | **⚠️ 未映射** |
| 2 | **[`tableAreaNameList[]`](#api-group-buy-packages)** | 待分析API层字段 | 低 | `A区`, `斯诺克区`, `VIP包厢`, `K包`, `B区` | | **⚠️ 未映射** |
**DWD 无 ODS 源** — 8 个
| # | DWD 表 | DWD 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|-------|---------|-------|------|------|
| 1 | dim_groupbuy_package | **[`scd2_start_time`](#dwd-dim-groupbuy-package)** | SCD2 缓慢变化维度元数据 | 高 | SCD2 版本生效时间 | **⚠️ 无 ODS 源** |
| 2 | dim_groupbuy_package | **[`scd2_end_time`](#dwd-dim-groupbuy-package)** | SCD2 缓慢变化维度元数据 | 高 | SCD2 版本失效时间 | **⚠️ 无 ODS 源** |
| 3 | dim_groupbuy_package | **[`scd2_is_current`](#dwd-dim-groupbuy-package)** | SCD2 缓慢变化维度元数据 | 高 | 当前版本标记 | **⚠️ 无 ODS 源** |
| 4 | dim_groupbuy_package | **[`scd2_version`](#dwd-dim-groupbuy-package)** | SCD2 缓慢变化维度元数据 | 高 | 版本号 | **⚠️ 无 ODS 源** |
| 5 | dim_groupbuy_package_ex | **[`scd2_start_time`](#dwd-dim-groupbuy-package-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 6 | dim_groupbuy_package_ex | **[`scd2_end_time`](#dwd-dim-groupbuy-package-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 7 | dim_groupbuy_package_ex | **[`scd2_is_current`](#dwd-dim-groupbuy-package-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 8 | dim_groupbuy_package_ex | **[`scd2_version`](#dwd-dim-groupbuy-package-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
<a id="diff-goods-stock-summary"></a>
#### 1.1.15 goods_stock_summary 字段差异明细
**ODS→DWD 未映射** — 14 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`sitegoodsid`](#ods-goods-stock-summary)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 2 | **[`goodsname`](#ods-goods-stock-summary)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 3 | **[`goodsunit`](#ods-goods-stock-summary)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 4 | **[`goodscategoryid`](#ods-goods-stock-summary)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 5 | **[`goodscategorysecondid`](#ods-goods-stock-summary)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 6 | **[`categoryname`](#ods-goods-stock-summary)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 7 | **[`rangestartstock`](#ods-goods-stock-summary)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 8 | **[`rangeendstock`](#ods-goods-stock-summary)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 9 | **[`rangein`](#ods-goods-stock-summary)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 10 | **[`rangeout`](#ods-goods-stock-summary)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 11 | **[`rangesale`](#ods-goods-stock-summary)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 12 | **[`rangesalemoney`](#ods-goods-stock-summary)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 DWD 目标** |
| 13 | **[`rangeinventory`](#ods-goods-stock-summary)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 14 | **[`currentstock`](#ods-goods-stock-summary)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
<a id="diff-goods-stock-movements"></a>
#### 1.1.16 goods_stock_movements 字段差异明细
**ODS→DWD 未映射** — 19 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`sitegoodsstockid`](#ods-goods-stock-movements)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 2 | **[`tenantid`](#ods-goods-stock-movements)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 3 | **[`siteid`](#ods-goods-stock-movements)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 4 | **[`sitegoodsid`](#ods-goods-stock-movements)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 5 | **[`goodsname`](#ods-goods-stock-movements)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 6 | **[`goodscategoryid`](#ods-goods-stock-movements)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 7 | **[`goodssecondcategoryid`](#ods-goods-stock-movements)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 8 | **[`unit`](#ods-goods-stock-movements)** | 待分析ODS层字段 | 低 | 库存计量单位 | **⚠️ 无 DWD 目标** |
| 9 | **[`price`](#ods-goods-stock-movements)** | 金额/价格相关 | 中 | 商品单价(单位金额) | **⚠️ 无 DWD 目标** |
| 10 | **[`stocktype`](#ods-goods-stock-movements)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 11 | **[`changenum`](#ods-goods-stock-movements)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 12 | **[`startnum`](#ods-goods-stock-movements)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 13 | **[`endnum`](#ods-goods-stock-movements)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 14 | **[`changenuma`](#ods-goods-stock-movements)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 15 | **[`startnuma`](#ods-goods-stock-movements)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 16 | **[`endnuma`](#ods-goods-stock-movements)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 17 | **[`remark`](#ods-goods-stock-movements)** | 备注/说明文本 | 中 | 备注信息,用于手工记录本次变更的特殊原因说明(例如“盘点差异调整”“报损”) | **⚠️ 无 DWD 目标** |
| 18 | **[`operatorname`](#ods-goods-stock-movements)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 19 | **[`createtime`](#ods-goods-stock-movements)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
<a id="diff-site-tables-master"></a>
#### 1.1.17 site_tables_master 字段差异明细
**ODS 无 JSON 源** — 1 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`appletQrCodeUrl`](#ods-site-tables-master)** | 链接/二维码 | 中 | (待补充) | **⚠️ 无 JSON 源** |
**ODS→DWD 未映射** — 14 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`sitename`](#ods-site-tables-master)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 2 | **[`appletQrCodeUrl`](#ods-site-tables-master)** | 链接/二维码 | 中 | (待补充) | **⚠️ 无 DWD 目标** |
| 3 | **[`audit_status`](#ods-site-tables-master)** | 状态码 | 中 | 当前值:全部为 2 | **⚠️ 无 DWD 目标** |
| 4 | **[`charge_free`](#ods-site-tables-master)** | 待分析ODS层字段 | 低 | 当前值:全部为 0 | **⚠️ 无 DWD 目标** |
| 5 | **[`create_time`](#ods-site-tables-master)** | 记录创建时间 | 高 | 台桌配置的创建时间或最近一次创建/复制时间 | **⚠️ 无 DWD 目标** |
| 6 | **[`delay_lights_time`](#ods-site-tables-master)** | 时间戳字段 | 中 | 台灯熄灭延迟时间(单位多半是秒或分钟),用于结账后延时关灯 | **⚠️ 无 DWD 目标** |
| 7 | **[`is_rest_area`](#ods-site-tables-master)** | 布尔标志位 | 中 | 当前值:全部为 0 | **⚠️ 无 DWD 目标** |
| 8 | **[`light_status`](#ods-site-tables-master)** | 状态码 | 中 | 来自 JSON 导出的原始字段,用于保留业务取值 | **⚠️ 无 DWD 目标** |
| 9 | **[`only_allow_groupon`](#ods-site-tables-master)** | 待分析ODS层字段 | 低 | 小程序二维码 URL | **⚠️ 无 DWD 目标** |
| 10 | **[`order_delay_time`](#ods-site-tables-master)** | 时间戳字段 | 中 | 订单层面允许的“自动延时时长”(例如到点后自动延长多少时间继续计费) | **⚠️ 无 DWD 目标** |
| 11 | **[`self_table`](#ods-site-tables-master)** | 待分析ODS层字段 | 低 | 当前值:全部为 1 | **⚠️ 无 DWD 目标** |
| 12 | **[`tablestatusname`](#ods-site-tables-master)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 13 | **[`temporary_light_second`](#ods-site-tables-master)** | 待分析ODS层字段 | 低 | 临时点灯时长(秒),例如手动临时开灯一段时间 | **⚠️ 无 DWD 目标** |
| 14 | **[`virtual_table`](#ods-site-tables-master)** | 待分析ODS层字段 | 低 | 当前值:全部为 0 | **⚠️ 无 DWD 目标** |
**DWD 无 ODS 源** — 8 个
| # | DWD 表 | DWD 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|-------|---------|-------|------|------|
| 1 | dim_table | **[`scd2_start_time`](#dwd-dim-table)** | SCD2 缓慢变化维度元数据 | 高 | SCD2 版本生效时间 | **⚠️ 无 ODS 源** |
| 2 | dim_table | **[`scd2_end_time`](#dwd-dim-table)** | SCD2 缓慢变化维度元数据 | 高 | SCD2 版本失效时间 | **⚠️ 无 ODS 源** |
| 3 | dim_table | **[`scd2_is_current`](#dwd-dim-table)** | SCD2 缓慢变化维度元数据 | 高 | 当前版本标记 | **⚠️ 无 ODS 源** |
| 4 | dim_table | **[`scd2_version`](#dwd-dim-table)** | SCD2 缓慢变化维度元数据 | 高 | 版本号 | **⚠️ 无 ODS 源** |
| 5 | dim_table_ex | **[`scd2_start_time`](#dwd-dim-table-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 6 | dim_table_ex | **[`scd2_end_time`](#dwd-dim-table-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 7 | dim_table_ex | **[`scd2_is_current`](#dwd-dim-table-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 8 | dim_table_ex | **[`scd2_version`](#dwd-dim-table-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
<a id="diff-stock-goods-category-tree"></a>
#### 1.1.18 stock_goods_category_tree 字段差异明细
**ODS 无 JSON 源** — 1 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`categoryboxes`](#ods-stock-goods-category-tree)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
**ODS→DWD 未映射** — 1 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`categoryboxes`](#ods-stock-goods-category-tree)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
**DWD 无 ODS 源** — 4 个
| # | DWD 表 | DWD 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|-------|---------|-------|------|------|
| 1 | dim_goods_category | **[`scd2_start_time`](#dwd-dim-goods-category)** | SCD2 缓慢变化维度元数据 | 高 | SCD2 版本生效时间 | **⚠️ 无 ODS 源** |
| 2 | dim_goods_category | **[`scd2_end_time`](#dwd-dim-goods-category)** | SCD2 缓慢变化维度元数据 | 高 | SCD2 版本失效时间 | **⚠️ 无 ODS 源** |
| 3 | dim_goods_category | **[`scd2_is_current`](#dwd-dim-goods-category)** | SCD2 缓慢变化维度元数据 | 高 | 当前版本标记 | **⚠️ 无 ODS 源** |
| 4 | dim_goods_category | **[`scd2_version`](#dwd-dim-goods-category)** | SCD2 缓慢变化维度元数据 | 高 | 版本号 | **⚠️ 无 ODS 源** |
<a id="diff-store-goods-master"></a>
#### 1.1.19 store_goods_master 字段差异明细
**API→ODS 未映射(平层)** — 1 个
| # | JSON 字段 | 推测用途 | 置信度 | 示例值 | 说明 | 状态 |
|---|----------|---------|-------|-------|------|------|
| 1 | **[`time_slot_sale`](#api-store-goods-master)** | 待分析API层字段 | 低 | `2` | | **⚠️ 未映射** |
<details><summary>API→ODS 未映射(嵌套对象)— 4 个</summary>
| # | JSON 字段 | 推测用途 | 置信度 | 示例值 | 说明 | 状态 |
|---|----------|---------|-------|-------|------|------|
| 1 | [`goodsStockWarningInfo.site_goods_id`](#api-store-goods-master) | 关联实体 ID外键 | 中 | `0` | | 📦 嵌套 |
| 2 | [`goodsStockWarningInfo.sales_day`](#api-store-goods-master) | 待分析API层字段 | 低 | `0.0` | | 📦 嵌套 |
| 3 | [`goodsStockWarningInfo.warning_day_max`](#api-store-goods-master) | 待分析API层字段 | 低 | `0` | | 📦 嵌套 |
| 4 | [`goodsStockWarningInfo.warning_day_min`](#api-store-goods-master) | 待分析API层字段 | 低 | `0` | | 📦 嵌套 |
</details>
**ODS→DWD 未映射** — 2 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`batch_stock_quantity`](#ods-store-goods-master)** | 待分析ODS层字段 | 低 | 当前“批次”的库存数量(主单位) | **⚠️ 无 DWD 目标** |
| 2 | **[`provisional_total_cost`](#ods-store-goods-master)** | 金额/价格相关 | 中 | 暂估总成本,单位为元 | **⚠️ 无 DWD 目标** |
**DWD 无 ODS 源** — 8 个
| # | DWD 表 | DWD 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|-------|---------|-------|------|------|
| 1 | dim_store_goods | **[`scd2_start_time`](#dwd-dim-store-goods)** | SCD2 缓慢变化维度元数据 | 高 | SCD2 版本生效时间 | **⚠️ 无 ODS 源** |
| 2 | dim_store_goods | **[`scd2_end_time`](#dwd-dim-store-goods)** | SCD2 缓慢变化维度元数据 | 高 | SCD2 版本失效时间 | **⚠️ 无 ODS 源** |
| 3 | dim_store_goods | **[`scd2_is_current`](#dwd-dim-store-goods)** | SCD2 缓慢变化维度元数据 | 高 | 当前版本标记 | **⚠️ 无 ODS 源** |
| 4 | dim_store_goods | **[`scd2_version`](#dwd-dim-store-goods)** | SCD2 缓慢变化维度元数据 | 高 | 版本号 | **⚠️ 无 ODS 源** |
| 5 | dim_store_goods_ex | **[`scd2_start_time`](#dwd-dim-store-goods-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 6 | dim_store_goods_ex | **[`scd2_end_time`](#dwd-dim-store-goods-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 7 | dim_store_goods_ex | **[`scd2_is_current`](#dwd-dim-store-goods-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 8 | dim_store_goods_ex | **[`scd2_version`](#dwd-dim-store-goods-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
<a id="diff-table-fee-discount-records"></a>
#### 1.1.20 table_fee_discount_records 字段差异明细
<details><summary>API→ODS 未映射(嵌套对象)— 25 个</summary>
| # | JSON 字段 | 推测用途 | 置信度 | 示例值 | 说明 | 状态 |
|---|----------|---------|-------|-------|------|------|
| 1 | [`tableProfile.ewelink_client_id`](#api-table-fee-discount-records) | 链接/二维码 | 中 | | | 📦 嵌套 |
| 2 | [`siteProfile.org_id`](#api-table-fee-discount-records) | 关联实体 ID外键 | 中 | `2790684179467077` | | 📦 嵌套 |
| 3 | [`siteProfile.shop_name`](#api-table-fee-discount-records) | 门店名称 | 高 | `朗朗桌球` | | 📦 嵌套 |
| 4 | [`siteProfile.avatar`](#api-table-fee-discount-records) | 头像/图片 URL | 中 | `https://oss.ficoo.vip/admin...` | | 📦 嵌套 |
| 5 | [`siteProfile.business_tel`](#api-table-fee-discount-records) | 联系电话 | 中 | `13316068642` | | 📦 嵌套 |
| 6 | [`siteProfile.full_address`](#api-table-fee-discount-records) | 待分析API层字段 | 低 | `广东省广州市天河区丽阳街12号` | | 📦 嵌套 |
| 7 | [`siteProfile.address`](#api-table-fee-discount-records) | 待分析API层字段 | 低 | `广东省广州市天河区天园街道朗朗桌球` | | 📦 嵌套 |
| 8 | [`siteProfile.longitude`](#api-table-fee-discount-records) | 待分析API层字段 | 低 | `113.360321` | | 📦 嵌套 |
| 9 | [`siteProfile.latitude`](#api-table-fee-discount-records) | 待分析API层字段 | 低 | `23.133629` | | 📦 嵌套 |
| 10 | [`siteProfile.tenant_site_region_id`](#api-table-fee-discount-records) | 关联实体 ID外键 | 中 | `156440100` | | 📦 嵌套 |
| 11 | [`siteProfile.auto_light`](#api-table-fee-discount-records) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 12 | [`siteProfile.attendance_distance`](#api-table-fee-discount-records) | 待分析API层字段 | 低 | `0` | | 📦 嵌套 |
| 13 | [`siteProfile.wifi_name`](#api-table-fee-discount-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 14 | [`siteProfile.wifi_password`](#api-table-fee-discount-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 15 | [`siteProfile.customer_service_qrcode`](#api-table-fee-discount-records) | 链接/二维码 | 中 | | | 📦 嵌套 |
| 16 | [`siteProfile.customer_service_wechat`](#api-table-fee-discount-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 17 | [`siteProfile.fixed_pay_qrCode`](#api-table-fee-discount-records) | 链接/二维码 | 中 | | | 📦 嵌套 |
| 18 | [`siteProfile.prod_env`](#api-table-fee-discount-records) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 19 | [`siteProfile.light_status`](#api-table-fee-discount-records) | 状态码 | 中 | `2` | | 📦 嵌套 |
| 20 | [`siteProfile.light_type`](#api-table-fee-discount-records) | 待分析API层字段 | 低 | `0` | | 📦 嵌套 |
| 21 | [`siteProfile.site_type`](#api-table-fee-discount-records) | 待分析API层字段 | 低 | `1` | | 📦 嵌套 |
| 22 | [`siteProfile.light_token`](#api-table-fee-discount-records) | 待分析API层字段 | 低 | | | 📦 嵌套 |
| 23 | [`siteProfile.site_label`](#api-table-fee-discount-records) | 待分析API层字段 | 低 | `A` | | 📦 嵌套 |
| 24 | [`siteProfile.attendance_enabled`](#api-table-fee-discount-records) | 启用/禁用开关 | 中 | `1` | | 📦 嵌套 |
| 25 | [`siteProfile.shop_status`](#api-table-fee-discount-records) | 状态码 | 中 | `1` | | 📦 嵌套 |
</details>
**ODS 无 JSON 源** — 2 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`siteprofile`](#ods-table-fee-discount-records)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 2 | **[`tableprofile`](#ods-table-fee-discount-records)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
**ODS→DWD 未映射** — 2 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`siteprofile`](#ods-table-fee-discount-records)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 2 | **[`tableprofile`](#ods-table-fee-discount-records)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
<a id="diff-tenant-goods-master"></a>
#### 1.1.21 tenant_goods_master 字段差异明细
**ODS→DWD 未映射** — 1 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`commoditycode`](#ods-tenant-goods-master)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
**DWD 无 ODS 源** — 8 个
| # | DWD 表 | DWD 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|-------|---------|-------|------|------|
| 1 | dim_tenant_goods | **[`scd2_start_time`](#dwd-dim-tenant-goods)** | SCD2 缓慢变化维度元数据 | 高 | SCD2 版本生效时间 | **⚠️ 无 ODS 源** |
| 2 | dim_tenant_goods | **[`scd2_end_time`](#dwd-dim-tenant-goods)** | SCD2 缓慢变化维度元数据 | 高 | SCD2 版本失效时间 | **⚠️ 无 ODS 源** |
| 3 | dim_tenant_goods | **[`scd2_is_current`](#dwd-dim-tenant-goods)** | SCD2 缓慢变化维度元数据 | 高 | 当前版本标记 | **⚠️ 无 ODS 源** |
| 4 | dim_tenant_goods | **[`scd2_version`](#dwd-dim-tenant-goods)** | SCD2 缓慢变化维度元数据 | 高 | 版本号 | **⚠️ 无 ODS 源** |
| 5 | dim_tenant_goods_ex | **[`scd2_start_time`](#dwd-dim-tenant-goods-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 6 | dim_tenant_goods_ex | **[`scd2_end_time`](#dwd-dim-tenant-goods-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 7 | dim_tenant_goods_ex | **[`scd2_is_current`](#dwd-dim-tenant-goods-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
| 8 | dim_tenant_goods_ex | **[`scd2_version`](#dwd-dim-tenant-goods-ex)** | SCD2 缓慢变化维度元数据 | 高 | | **⚠️ 无 ODS 源** |
<a id="diff-settlement-ticket-details"></a>
#### 1.1.22 settlement_ticket_details 字段差异明细
**ODS 无 JSON 源** — 38 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`ordersettleid`](#ods-settlement-ticket-details)** | 排序/序号 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 2 | **[`actualpayment`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 3 | **[`adjustamount`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 JSON 源** |
| 4 | **[`assistantmanualdiscount`](#ods-settlement-ticket-details)** | 优惠/退款相关 | 中 | (待补充) | **⚠️ 无 JSON 源** |
| 5 | **[`balanceamount`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 JSON 源** |
| 6 | **[`cashiername`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 7 | **[`consumemoney`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 JSON 源** |
| 8 | **[`couponamount`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 JSON 源** |
| 9 | **[`deliveryaddress`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 10 | **[`deliveryfee`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 JSON 源** |
| 11 | **[`ledgeramount`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 JSON 源** |
| 12 | **[`memberdeductamount`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 JSON 源** |
| 13 | **[`memberofferamount`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 JSON 源** |
| 14 | **[`onlinereturnamount`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 JSON 源** |
| 15 | **[`orderremark`](#ods-settlement-ticket-details)** | 排序/序号 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 16 | **[`ordersettlenumber`](#ods-settlement-ticket-details)** | 排序/序号 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 17 | **[`paymemberbalance`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 JSON 源** |
| 18 | **[`paytime`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 19 | **[`paymentmethod`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 20 | **[`pointdiscountcost`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 JSON 源** |
| 21 | **[`pointdiscountprice`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 JSON 源** |
| 22 | **[`prepaymoney`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 JSON 源** |
| 23 | **[`refundamount`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 JSON 源** |
| 24 | **[`returngoodsamount`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 JSON 源** |
| 25 | **[`rewardname`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 26 | **[`settletype`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 27 | **[`siteaddress`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 28 | **[`sitebusinesstel`](#ods-settlement-ticket-details)** | 联系电话 | 中 | (待补充) | **⚠️ 无 JSON 源** |
| 29 | **[`siteid`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 30 | **[`sitename`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 31 | **[`tenantid`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 32 | **[`tenantname`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 33 | **[`ticketcustomcontent`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 34 | **[`ticketremark`](#ods-settlement-ticket-details)** | 备注/说明文本 | 中 | (待补充) | **⚠️ 无 JSON 源** |
| 35 | **[`vouchermoney`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 JSON 源** |
| 36 | **[`memberprofile`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 37 | **[`orderitem`](#ods-settlement-ticket-details)** | 排序/序号 | 低 | (待补充) | **⚠️ 无 JSON 源** |
| 38 | **[`tenantmembercardlogs`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 JSON 源** |
**ODS→DWD 未映射** — 38 个
| # | ODS 列 | 推测用途 | 置信度 | 说明 | 状态 |
|---|-------|---------|-------|------|------|
| 1 | **[`ordersettleid`](#ods-settlement-ticket-details)** | 排序/序号 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 2 | **[`actualpayment`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 3 | **[`adjustamount`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 DWD 目标** |
| 4 | **[`assistantmanualdiscount`](#ods-settlement-ticket-details)** | 优惠/退款相关 | 中 | (待补充) | **⚠️ 无 DWD 目标** |
| 5 | **[`balanceamount`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 DWD 目标** |
| 6 | **[`cashiername`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 7 | **[`consumemoney`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 DWD 目标** |
| 8 | **[`couponamount`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 DWD 目标** |
| 9 | **[`deliveryaddress`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 10 | **[`deliveryfee`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 DWD 目标** |
| 11 | **[`ledgeramount`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 DWD 目标** |
| 12 | **[`memberdeductamount`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 DWD 目标** |
| 13 | **[`memberofferamount`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 DWD 目标** |
| 14 | **[`onlinereturnamount`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 DWD 目标** |
| 15 | **[`orderremark`](#ods-settlement-ticket-details)** | 排序/序号 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 16 | **[`ordersettlenumber`](#ods-settlement-ticket-details)** | 排序/序号 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 17 | **[`paymemberbalance`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 DWD 目标** |
| 18 | **[`paytime`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 19 | **[`paymentmethod`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 20 | **[`pointdiscountcost`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 DWD 目标** |
| 21 | **[`pointdiscountprice`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 DWD 目标** |
| 22 | **[`prepaymoney`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 DWD 目标** |
| 23 | **[`refundamount`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 DWD 目标** |
| 24 | **[`returngoodsamount`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 DWD 目标** |
| 25 | **[`rewardname`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 26 | **[`settletype`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 27 | **[`siteaddress`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 28 | **[`sitebusinesstel`](#ods-settlement-ticket-details)** | 联系电话 | 中 | (待补充) | **⚠️ 无 DWD 目标** |
| 29 | **[`siteid`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 30 | **[`sitename`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 31 | **[`tenantid`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 32 | **[`tenantname`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 33 | **[`ticketcustomcontent`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 34 | **[`ticketremark`](#ods-settlement-ticket-details)** | 备注/说明文本 | 中 | (待补充) | **⚠️ 无 DWD 目标** |
| 35 | **[`vouchermoney`](#ods-settlement-ticket-details)** | 金额/价格相关 | 中 | (待补充) | **⚠️ 无 DWD 目标** |
| 36 | **[`memberprofile`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 37 | **[`orderitem`](#ods-settlement-ticket-details)** | 排序/序号 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
| 38 | **[`tenantmembercardlogs`](#ods-settlement-ticket-details)** | 待分析ODS层字段 | 低 | (待补充) | **⚠️ 无 DWD 目标** |
## 2. 全局统计
### 2.1 JSON→ODS 映射覆盖
- JSON 字段总数1067
- 已映射到 ODS 列84178.8%
- 仅存于 payload22621.2%
### 2.2 ODS→DWD 映射覆盖
- DWD 列总数892
### 2.3 各表 JSON→ODS 映射覆盖率
| ODS 表名 | 业务描述 | JSON 字段数 | 已映射 | 仅 payload | 覆盖率 |
|---------|---------|-----------|-------|-----------|-------|
| `assistant_accounts_master` | 助教账号档案 | 62 | 62 | 0 | 100.0% |
| `store_goods_sales_records` | 门店商品销售流水 | 51 | 51 | 0 | 100.0% |
| `member_profiles` | 会员档案 | 20 | 20 | 0 | 100.0% |
| `member_stored_value_cards` | 会员储值卡 | 71 | 71 | 0 | 100.0% |
| `member_balance_changes` | 会员余额变动 | 28 | 28 | 0 | 100.0% |
| `group_buy_redemption_records` | 团购套餐核销 | 52 | 52 | 0 | 100.0% |
| `goods_stock_summary` | 库存汇总 | 14 | 14 | 0 | 100.0% |
| `goods_stock_movements` | 库存变化记录 | 19 | 19 | 0 | 100.0% |
| `site_tables_master` | 台桌维表 | 26 | 26 | 0 | 100.0% |
| `stock_goods_category_tree` | 库存商品分类树 | 20 | 20 | 0 | 100.0% |
| `tenant_goods_master` | 租户商品档案 | 32 | 32 | 0 | 100.0% |
| `group_buy_packages` | 团购套餐定义 | 40 | 38 | 2 | 95.0% |
| `store_goods_master` | 门店商品档案 | 53 | 48 | 5 | 90.6% |
| `assistant_service_records` | 助教服务流水 | 91 | 67 | 24 | 73.6% |
| `settlement_records` | 结账记录 | 92 | 67 | 25 | 72.8% |
| `recharge_settlements` | 充值结算 | 92 | 67 | 25 | 72.8% |
| `table_fee_transactions` | 台费计费流水 | 67 | 43 | 24 | 64.2% |
| `refund_transactions` | 退款流水 | 57 | 33 | 24 | 57.9% |
| `table_fee_discount_records` | 台费折扣/调账 | 55 | 30 | 25 | 54.5% |
| `platform_coupon_redemption_records` | 平台/团购券核销 | 51 | 27 | 24 | 52.9% |
| `assistant_cancellation_records` | 助教废除记录 | 38 | 14 | 24 | 36.8% |
| `payment_transactions` | 支付流水 | 36 | 12 | 24 | 33.3% |
| `settlement_ticket_details` | 结账小票详情(按 orderSettleId 逐条获取,不走常规分页) | 0 | 0 | 0 | — |
## 3. 逐表详情
### 3.1 assistant_accounts_master助教账号档案
- 任务代码:`ODS_ASSISTANT_ACCOUNT`
- 采样记录数69
- API JSON 字段数62
- ODS 列数67
- DWD 目标表dim_assistant, dim_assistant_ex
<a id="api-assistant-accounts-master"></a>
#### API 源字段 — assistant_accounts_master [🔗 ODS](#ods-assistant-accounts-master)
已映射 62/62覆盖率 100.0%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `job_num` | string | [`job_num`](#ods-assistant-accounts-master) | 备用工号字段,目前未在该门店启用 | |
| 2 | `shop_name` | string | [`shop_name`](#ods-assistant-accounts-master) | 门店名称,冗余字段,用于展示 | 示例: `朗朗桌球` |
| 3 | `group_id` | integer | [`group_id`](#ods-assistant-accounts-master) | 上层“分组 ID”预留字段例如集团/事业部),本门店未使用 | 示例: `0` |
| 4 | `group_name` | string | [`group_name`](#ods-assistant-accounts-master) | group_id 对应的名称,目前为空 | |
| 5 | `staff_profile_id` | integer | [`staff_profile_id`](#ods-assistant-accounts-master) | 人事档案 ID与第三方 HR 系统或内部员工档案集成使用,当前未启用 | 示例: `0` |
| 6 | `ding_talk_synced` | integer | [`ding_talk_synced`](#ods-assistant-accounts-master) | 来自 JSON 导出的原始字段,用于保留业务取值 | 示例: `1` |
| 7 | `entry_type` | integer | [`entry_type`](#ods-assistant-accounts-master) | 来自 JSON 导出的原始字段,用于保留业务取值 | 枚举值: `1`, `3` |
| 8 | `team_name` | string | [`team_name`](#ods-assistant-accounts-master) | 团队名称,展示用,和 team_id 一一对应 | 枚举值: `2组`, `1组` |
| 9 | `entry_sign_status` | integer | [`entry_sign_status`](#ods-assistant-accounts-master) | 来自 JSON 导出的原始字段,用于保留业务取值 | 示例: `0` |
| 10 | `resign_sign_status` | integer | [`resign_sign_status`](#ods-assistant-accounts-master) | 离职协议签署状态,类似上面 | 示例: `0` |
| 11 | `system_role_id` | integer | [`system_role_id`](#ods-assistant-accounts-master) | 标识类 ID 字段,用于关联/定位相关实体 | 示例: `10` |
| 12 | `criticism_status` | integer | [`criticism_status`](#ods-assistant-accounts-master) | 1 × 49 | 枚举值: `1`, `2` |
| 13 | `salary_grant_enabled` | integer | [`salary_grant_enabled`](#ods-assistant-accounts-master) | 来自 JSON 导出的原始字段,用于保留业务取值 | 示例: `2` |
| 14 | `leave_status` | integer | [`leave_status`](#ods-assistant-accounts-master) | 0 × 21 | 枚举值: `0`, `1` |
| 15 | `id` | integer | [`id`](#ods-assistant-accounts-master) | 助教账号主键 ID在“助教流水.json”中对应 site_assistant_id | 枚举值: `3067857612671685`, `3058170108874053`, `3056644876634181`, `3053833422211141`, `3053834039789701`, `3045477940824517`, `3027024317123653`, `3022685829761989` |
| 16 | `allow_cx` | integer | [`allow_cx`](#ods-assistant-accounts-master) | 来自 JSON 导出的原始字段,用于保留业务取值 | 示例: `1` |
| 17 | `assistant_no` | string | [`assistant_no`](#ods-assistant-accounts-master) | 助教工号 / 编号,便于业务侧识别 | 枚举值: `13`, `38`, `8`, `41`, `40`, `27`, `28`, `33` |
| 18 | `assistant_status` | integer | [`assistant_status`](#ods-assistant-accounts-master) | 1 × 48 | 示例: `1` |
| 19 | `avatar` | string | [`avatar`](#ods-assistant-accounts-master) | 助教头像地址 | 枚举值: `https://oss.ficoo.vip/cbb/userAvatar/1769426176673/176942617`, `https://oss.ficoo.vip/cbb/userAvatar/1768822727212/176882272`, `https://oss.ficoo.vip/cbb/userAvatar/1768831143754/176883114`, `https://oss.ficoo.vip/cbb/userAvatar/1768556565021/176855656`, `https://oss.ficoo.vip/cbb/userAvatar/1768556665960/176855666`, `https://oss.ficoo.vip/cbb/userAvatar/1768048632753/176804863`, `https://oss.ficoo.vip/maUiImages/images/defaultAvatar.png`, `https://oss.ficoo.vip/cbb/userAvatar/1764929477604/176492947` |
| 20 | `birth_date` | string | [`birth_date`](#ods-assistant-accounts-master) | 助教出生日期 | 枚举值: `0001-01-01 00:00:00`, `2025-11-01 00:00:00`, `2007-01-14 00:00:00`, `2003-11-01 00:00:00`, `2001-04-08 00:00:00`, `2004-08-16 00:00:00` |
| 21 | `charge_way` | integer | [`charge_way`](#ods-assistant-accounts-master) | 2 代表当前门店为“计时收费”其他值1、3 等)可能对应按局、按课时等,当前未出现 | 示例: `2` |
| 22 | `create_time` | string | [`create_time`](#ods-assistant-accounts-master) | 账号创建时间 | 枚举值: `2026-01-26 15:26:11`, `2026-01-19 19:11:32`, `2026-01-18 17:20:00`, `2026-01-16 17:40:02`, `2026-01-16 17:40:40`, `2026-01-10 20:00:24`, `2025-12-28 19:08:24`, `2025-12-25 17:35:04` |
| 23 | `cx_unit_price` | number | [`cx_unit_price`](#ods-assistant-accounts-master) | 促销时段的单价,本门店未在账号表层面设置 | 示例: `0.0` |
| 24 | `end_time` | string | [`end_time`](#ods-assistant-accounts-master) | 当前配置生效的结束日期(例如一个周期性的排班/合同周期) | 出现率 96%;枚举值: `2026-02-01 08:00:00`, `2026-01-01 08:00:00`, `2025-12-01 08:00:00`, `2025-11-01 08:00:00`, `2025-10-01 08:00:00`, `2025-09-01 08:00:00`, `2025-08-01 08:00:00` |
| 25 | `entry_time` | string | [`entry_time`](#ods-assistant-accounts-master) | 入职时间 | 枚举值: `2026-01-26 08:00:00`, `2026-01-19 08:00:00`, `2026-01-18 08:00:00`, `2026-01-16 08:00:00`, `2026-01-10 08:00:00`, `2025-12-28 08:00:00`, `2025-12-25 08:00:00`, `2025-12-24 08:00:00` |
| 26 | `gender` | integer | [`gender`](#ods-assistant-accounts-master) | 0 × 40 | 枚举值: `0`, `2` |
| 27 | `height` | number | [`height`](#ods-assistant-accounts-master) | 身高(单位:厘米) | 枚举值: `0.0`, `158.0`, `162.0`, `163.0`, `166.0`, `167.0`, `165.0`, `170.0` |
| 28 | `introduce` | string | [`introduce`](#ods-assistant-accounts-master) | 个人简介文案,预留给助教自我介绍使用 | |
| 29 | `is_delete` | integer | [`is_delete`](#ods-assistant-accounts-master) | 逻辑删除标记0=否1=是) | 示例: `0` |
| 30 | `is_guaranteed` | integer | [`is_guaranteed`](#ods-assistant-accounts-master) | 布尔/开关字段,用于表示权限、可用性或状态开关 | 示例: `1` |
| 31 | `is_team_leader` | integer | [`is_team_leader`](#ods-assistant-accounts-master) | 布尔/开关字段,用于表示权限、可用性或状态开关 | 示例: `0` |
| 32 | `last_table_id` | integer | [`last_table_id`](#ods-assistant-accounts-master) | 该助教最近一次服务的球台 ID | 示例: `0` |
| 33 | `last_table_name` | string | [`last_table_name`](#ods-assistant-accounts-master) | 最近服务球台名称(展示用) | |
| 34 | `last_update_name` | string | [`last_update_name`](#ods-assistant-accounts-master) | 最近修改该账号配置的管理员名称 | 出现率 62%;枚举值: `教练:夏滋岸`, `管理员:郑丽珊`, `助教管理员:amy`, `教练:周蒙`, `助教管理员:黄月柳` |
| 35 | `level` | integer | [`level`](#ods-assistant-accounts-master) | 10 × 24 | 枚举值: `10`, `20`, `40`, `30`, `8` |
| 36 | `light_equipment_id` | string | [`light_equipment_id`](#ods-assistant-accounts-master) | 灯控设备 ID如果开启“助教开台自动控制灯”会通过该字段关联到灯控硬件 | |
| 37 | `light_status` | integer | [`light_status`](#ods-assistant-accounts-master) | 灯光控制状态,如 1=启用控制、2=不启用 或相反 | 示例: `2` |
| 38 | `mobile` | string | [`mobile`](#ods-assistant-accounts-master) | 助教手机号,用于登录绑定、通知、钉钉同步等 | 枚举值: `17606621482`, `13537431206`, `13527970519`, `17819747429`, `19521138382`, `18613137001`, `15918443696`, `19866705026` |
| 39 | `nickname` | string | [`nickname`](#ods-assistant-accounts-master) | 助教在前台展示的昵称,如“佳怡”“周周”“球球”等 | 枚举值: `渔渔`, `菲菲`, `吱吱`, `yy`, `凤梨`, `小琳`, `布丁`, `嘉嘉` |
| 40 | `online_status` | integer | [`online_status`](#ods-assistant-accounts-master) | 在线状态 | 示例: `1` |
| 41 | `order_trade_no` | integer | [`order_trade_no`](#ods-assistant-accounts-master) | 该助教最近一次关联的订单号,用于快速跳转或回溯最近服务行为 | 示例: `0` |
| 42 | `pd_unit_price` | number | [`pd_unit_price`](#ods-assistant-accounts-master) | 某种标准单价(例如“普通时段单价”),这里未在账号上配置(实际单价在助教商品或套餐配置中) | 示例: `0.0` |
| 43 | `person_org_id` | integer | [`person_org_id`](#ods-assistant-accounts-master) | 人事组织 ID通常表示“某某门店-助教部-某小组”等层级组织 | 枚举值: `3067857612573381`, `3058170108775749`, `3056644876519493`, `3053833421785157`, `3053834039609477`, `3045477940726213`, `3027024317008965`, `3022685829663685` |
| 44 | `real_name` | string | [`real_name`](#ods-assistant-accounts-master) | 助教真实姓名,如“何海婷”“梁婷婷”等 | 枚举值: `李思怡`, `袁菲菲`, `曹金梅`, `陈研`, `黄凤丽`, `习燕琳`, `杨婧`, `王嘉琪` |
| 45 | `resign_time` | string | [`resign_time`](#ods-assistant-accounts-master) | 离职日期 | 枚举值: `2226-01-26 15:26:11`, `2026-01-23 08:00:00`, `2226-01-18 17:20:00`, `2226-01-16 17:40:02`, `2226-01-16 17:40:40`, `2226-01-10 20:00:24`, `2026-01-01 08:00:00`, `2025-12-27 08:00:00` |
| 46 | `serial_number` | integer | [`serial_number`](#ods-assistant-accounts-master) | 系统内部生成的序列号或排序标识,用于全局排序或迁移 | 枚举值: `5130`, `4955`, `5018`, `5134`, `5153`, `4726`, `4327`, `4325` |
| 47 | `show_sort` | integer | [`show_sort`](#ods-assistant-accounts-master) | 前台展示排序权重,值越小/越大对应不同的排序策略(当前看起来与 assistant_no 有一定对应关系) | 枚举值: `13`, `38`, `8`, `41`, `40`, `27`, `28`, `33` |
| 48 | `show_status` | integer | [`show_status`](#ods-assistant-accounts-master) | 来自 JSON 导出的原始字段,用于保留业务取值 | 示例: `1` |
| 49 | `site_id` | integer | [`site_id`](#ods-assistant-accounts-master) | 门店 ID对应本次数据的这家球房朗朗桌球 | 示例: `2790685415443269` |
| 50 | `site_light_cfg_id` | integer | [`site_light_cfg_id`](#ods-assistant-accounts-master) | 门店灯控配置 ID本门店未在助教账号维度启用 | 示例: `0` |
| 51 | `staff_id` | integer | [`staff_id`](#ods-assistant-accounts-master) | 预留给“人事系统员工 ID”的字段目前未接入或未启用 | 示例: `0` |
| 52 | `start_time` | string | [`start_time`](#ods-assistant-accounts-master) | 当前配置生效的开始日期 | 出现率 96%;枚举值: `2026-01-01 08:00:00`, `2025-12-01 08:00:00`, `2025-11-01 08:00:00`, `2025-10-01 08:00:00`, `2025-09-01 08:00:00`, `2025-08-01 08:00:00`, `2025-07-01 08:00:00` |
| 53 | `team_id` | integer | [`team_id`](#ods-assistant-accounts-master) | 助教所属团队 ID | 枚举值: `2959085810992645`, `2792011585884037` |
| 54 | `tenant_id` | integer | [`tenant_id`](#ods-assistant-accounts-master) | 品牌/租户 ID对应“非球科技”系统中该商户的唯一标识 | 示例: `2790683160709957` |
| 55 | `update_time` | string | [`update_time`](#ods-assistant-accounts-master) | 账号最近一次被修改的时间(例如修改等级、昵称等) | 枚举值: `2026-01-28 21:32:15`, `2026-01-23 17:39:41`, `2026-01-26 19:47:04`, `2026-01-30 00:54:45`, `2026-01-30 00:54:41`, `2026-01-01 15:33:02`, `2026-01-01 15:33:31`, `2026-01-01 15:33:18` |
| 56 | `user_id` | integer | [`user_id`](#ods-assistant-accounts-master) | 系统级“用户账号 ID”通常对应登录账号 | 枚举值: `3067857612163781`, `3058170108300613`, `3056644876077125`, `3053833420064837`, `3053834038954117`, `3045477940300229`, `3027024316582981`, `3022685829237701` |
| 57 | `video_introduction_url` | string | [`video_introduction_url`](#ods-assistant-accounts-master) | 助教个人视频介绍地址 | 枚举值: `https://oss.ficoo.vip/cbb/userVideo/1764149549870/1764149549`, `https://oss.ficoo.vip/cbb/userVideo/1753096246308/1753096246` |
| 58 | `weight` | number | [`weight`](#ods-assistant-accounts-master) | 体重(单位:公斤) | 枚举值: `0.0`, `106.0`, `102.0`, `100.0`, `90.0`, `55.0` |
| 59 | `work_status` | integer | [`work_status`](#ods-assistant-accounts-master) | 当 leave_status = 0 时work_status = 1 | 枚举值: `1`, `2` |
| 60 | `assistant_grade` | number | [`assistant_grade`](#ods-assistant-accounts-master) | 助教综合评分(员工维度的平均分 snapshot当前尚未启用评分 | 示例: `0.0` |
| 61 | `sum_grade` | number | [`sum_grade`](#ods-assistant-accounts-master) | 评分总和用于计算平均分assistant_grade = sum_grade / get_grade_time... | 示例: `0.0` |
| 62 | `get_grade_times` | integer | [`get_grade_times`](#ods-assistant-accounts-master) | 累计被评分次数 | 示例: `0` |
<a id="ods-assistant-accounts-master"></a>
#### ODS 表结构 — ods.assistant_accounts_master [🔗 API](#api-assistant-accounts-master)
共 67 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `id` | bigint | [`id`](#api-assistant-accounts-master) | [`dim_assistant.assistant_id`](#dwd-dim-assistant), [`dim_assistant_ex.assistant_id`](#dwd-dim-assistant-ex) | 助教账号主键 ID在“助教流水.json”中对应 site_assistant_id |
| 2 | `tenant_id` | bigint | [`tenant_id`](#api-assistant-accounts-master) | [`dim_assistant.tenant_id`](#dwd-dim-assistant) | 品牌/租户 ID对应“非球科技”系统中该商户的唯一标识 |
| 3 | `site_id` | bigint | [`site_id`](#api-assistant-accounts-master) | [`dim_assistant.site_id`](#dwd-dim-assistant) | 门店 ID对应本次数据的这家球房朗朗桌球 |
| 4 | `assistant_no` | text | [`assistant_no`](#api-assistant-accounts-master) | [`dim_assistant.assistant_no`](#dwd-dim-assistant) | 助教工号 / 编号,便于业务侧识别 |
| 5 | `nickname` | text | [`nickname`](#api-assistant-accounts-master) | [`dim_assistant.nickname`](#dwd-dim-assistant) | 助教在前台展示的昵称,如“佳怡”“周周”“球球”等 |
| 6 | `real_name` | text | [`real_name`](#api-assistant-accounts-master) | [`dim_assistant.real_name`](#dwd-dim-assistant) | 助教真实姓名,如“何海婷”“梁婷婷”等 |
| 7 | `mobile` | text | [`mobile`](#api-assistant-accounts-master) | [`dim_assistant.mobile`](#dwd-dim-assistant) | 助教手机号,用于登录绑定、通知、钉钉同步等 |
| 8 | `team_id` | bigint | [`team_id`](#api-assistant-accounts-master) | [`dim_assistant.team_id`](#dwd-dim-assistant) | 助教所属团队 ID |
| 9 | `team_name` | text | [`team_name`](#api-assistant-accounts-master) | [`dim_assistant.team_name`](#dwd-dim-assistant) | 团队名称,展示用,和 team_id 一一对应 |
| 10 | `user_id` | bigint | [`user_id`](#api-assistant-accounts-master) | [`dim_assistant.user_id`](#dwd-dim-assistant) | 系统级“用户账号 ID”通常对应登录账号 |
| 11 | `level` | text | [`level`](#api-assistant-accounts-master) | [`dim_assistant.level`](#dwd-dim-assistant) | 10 × 24 |
| 12 | `assistant_status` | integer | [`assistant_status`](#api-assistant-accounts-master) | [`dim_assistant.assistant_status`](#dwd-dim-assistant) | 1 × 48 |
| 13 | `work_status` | integer | [`work_status`](#api-assistant-accounts-master) | [`dim_assistant_ex.work_status`](#dwd-dim-assistant-ex) | 当 leave_status = 0 时work_status = 1 |
| 14 | `leave_status` | integer | [`leave_status`](#api-assistant-accounts-master) | [`dim_assistant.leave_status`](#dwd-dim-assistant) | 0 × 21 |
| 15 | `entry_time` | timestamp without time zone | [`entry_time`](#api-assistant-accounts-master) | [`dim_assistant.entry_time`](#dwd-dim-assistant) | 入职时间 |
| 16 | `resign_time` | timestamp without time zone | [`resign_time`](#api-assistant-accounts-master) | [`dim_assistant.resign_time`](#dwd-dim-assistant) | 离职日期 |
| 17 | `start_time` | timestamp without time zone | [`start_time`](#api-assistant-accounts-master) | [`dim_assistant_ex.start_time`](#dwd-dim-assistant-ex) | 当前配置生效的开始日期 |
| 18 | `end_time` | timestamp without time zone | [`end_time`](#api-assistant-accounts-master) | [`dim_assistant_ex.end_time`](#dwd-dim-assistant-ex) | 当前配置生效的结束日期(例如一个周期性的排班/合同周期) |
| 19 | `create_time` | timestamp without time zone | [`create_time`](#api-assistant-accounts-master) | [`dim_assistant_ex.create_time`](#dwd-dim-assistant-ex) | 账号创建时间 |
| 20 | `update_time` | timestamp without time zone | [`update_time`](#api-assistant-accounts-master) | [`dim_assistant_ex.update_time`](#dwd-dim-assistant-ex) | 账号最近一次被修改的时间(例如修改等级、昵称等) |
| 21 | `order_trade_no` | text | [`order_trade_no`](#api-assistant-accounts-master) | [`dim_assistant_ex.order_trade_no`](#dwd-dim-assistant-ex) | 该助教最近一次关联的订单号,用于快速跳转或回溯最近服务行为 |
| 22 | `staff_id` | bigint | [`staff_id`](#api-assistant-accounts-master) | [`dim_assistant_ex.staff_id`](#dwd-dim-assistant-ex) | 预留给“人事系统员工 ID”的字段目前未接入或未启用 |
| 23 | `staff_profile_id` | bigint | [`staff_profile_id`](#api-assistant-accounts-master) | [`dim_assistant_ex.staff_profile_id`](#dwd-dim-assistant-ex) | 人事档案 ID与第三方 HR 系统或内部员工档案集成使用,当前未启用 |
| 24 | `system_role_id` | bigint | [`system_role_id`](#api-assistant-accounts-master) | — | 标识类 ID 字段,用于关联/定位相关实体 |
| 25 | `avatar` | text | [`avatar`](#api-assistant-accounts-master) | [`dim_assistant_ex.avatar`](#dwd-dim-assistant-ex) | 助教头像地址 |
| 26 | `birth_date` | timestamp without time zone | [`birth_date`](#api-assistant-accounts-master) | [`dim_assistant_ex.birth_date`](#dwd-dim-assistant-ex) | 助教出生日期 |
| 27 | `gender` | integer | [`gender`](#api-assistant-accounts-master) | [`dim_assistant_ex.gender`](#dwd-dim-assistant-ex) | 0 × 40 |
| 28 | `height` | numeric | [`height`](#api-assistant-accounts-master) | [`dim_assistant_ex.height`](#dwd-dim-assistant-ex) | 身高(单位:厘米) |
| 29 | `weight` | numeric | [`weight`](#api-assistant-accounts-master) | [`dim_assistant_ex.weight`](#dwd-dim-assistant-ex) | 体重(单位:公斤) |
| 30 | `job_num` | text | [`job_num`](#api-assistant-accounts-master) | — | 备用工号字段,目前未在该门店启用 |
| 31 | `show_status` | integer | [`show_status`](#api-assistant-accounts-master) | [`dim_assistant_ex.show_status`](#dwd-dim-assistant-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 32 | `show_sort` | integer | [`show_sort`](#api-assistant-accounts-master) | [`dim_assistant_ex.show_sort`](#dwd-dim-assistant-ex) | 前台展示排序权重,值越小/越大对应不同的排序策略(当前看起来与 assistant_no 有一定对应关系) |
| 33 | `sum_grade` | numeric | [`sum_grade`](#api-assistant-accounts-master) | [`dim_assistant_ex.sum_grade`](#dwd-dim-assistant-ex) | 评分总和用于计算平均分assistant_grade = sum_grade / get_grade_time... |
| 34 | `assistant_grade` | numeric | [`assistant_grade`](#api-assistant-accounts-master) | [`dim_assistant_ex.assistant_grade`](#dwd-dim-assistant-ex) | 助教综合评分(员工维度的平均分 snapshot当前尚未启用评分 |
| 35 | `get_grade_times` | integer | [`get_grade_times`](#api-assistant-accounts-master) | [`dim_assistant_ex.get_grade_times`](#dwd-dim-assistant-ex) | 累计被评分次数 |
| 36 | `introduce` | text | [`introduce`](#api-assistant-accounts-master) | [`dim_assistant_ex.introduce`](#dwd-dim-assistant-ex) | 个人简介文案,预留给助教自我介绍使用 |
| 37 | `video_introduction_url` | text | [`video_introduction_url`](#api-assistant-accounts-master) | [`dim_assistant_ex.video_introduction_url`](#dwd-dim-assistant-ex) | 助教个人视频介绍地址 |
| 38 | `group_id` | bigint | [`group_id`](#api-assistant-accounts-master) | [`dim_assistant_ex.group_id`](#dwd-dim-assistant-ex) | 上层“分组 ID”预留字段例如集团/事业部),本门店未使用 |
| 39 | `group_name` | text | [`group_name`](#api-assistant-accounts-master) | [`dim_assistant_ex.group_name`](#dwd-dim-assistant-ex) | group_id 对应的名称,目前为空 |
| 40 | `shop_name` | text | [`shop_name`](#api-assistant-accounts-master) | [`dim_assistant_ex.shop_name`](#dwd-dim-assistant-ex) | 门店名称,冗余字段,用于展示 |
| 41 | `charge_way` | integer | [`charge_way`](#api-assistant-accounts-master) | [`dim_assistant_ex.charge_way`](#dwd-dim-assistant-ex) | 2 代表当前门店为“计时收费”其他值1、3 等)可能对应按局、按课时等,当前未出现 |
| 42 | `entry_type` | integer | [`entry_type`](#api-assistant-accounts-master) | [`dim_assistant_ex.entry_type`](#dwd-dim-assistant-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 43 | `allow_cx` | integer | [`allow_cx`](#api-assistant-accounts-master) | [`dim_assistant_ex.allow_cx`](#dwd-dim-assistant-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 44 | `is_guaranteed` | integer | [`is_guaranteed`](#api-assistant-accounts-master) | [`dim_assistant_ex.is_guaranteed`](#dwd-dim-assistant-ex) | 布尔/开关字段,用于表示权限、可用性或状态开关 |
| 45 | `salary_grant_enabled` | integer | [`salary_grant_enabled`](#api-assistant-accounts-master) | [`dim_assistant_ex.salary_grant_enabled`](#dwd-dim-assistant-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 46 | `light_status` | integer | [`light_status`](#api-assistant-accounts-master) | [`dim_assistant_ex.light_status`](#dwd-dim-assistant-ex) | 灯光控制状态,如 1=启用控制、2=不启用 或相反 |
| 47 | `online_status` | integer | [`online_status`](#api-assistant-accounts-master) | [`dim_assistant_ex.online_status`](#dwd-dim-assistant-ex) | 在线状态 |
| 48 | `is_delete` | integer | [`is_delete`](#api-assistant-accounts-master) | [`dim_assistant_ex.is_delete`](#dwd-dim-assistant-ex) | 逻辑删除标记0=否1=是) |
| 49 | `cx_unit_price` | numeric | [`cx_unit_price`](#api-assistant-accounts-master) | — | 促销时段的单价,本门店未在账号表层面设置 |
| 50 | `pd_unit_price` | numeric | [`pd_unit_price`](#api-assistant-accounts-master) | — | 某种标准单价(例如“普通时段单价”),这里未在账号上配置(实际单价在助教商品或套餐配置中) |
| 51 | `last_table_id` | bigint | [`last_table_id`](#api-assistant-accounts-master) | [`dim_assistant_ex.last_table_id`](#dwd-dim-assistant-ex) | 该助教最近一次服务的球台 ID |
| 52 | `last_table_name` | text | [`last_table_name`](#api-assistant-accounts-master) | [`dim_assistant_ex.last_table_name`](#dwd-dim-assistant-ex) | 最近服务球台名称(展示用) |
| 53 | `person_org_id` | bigint | [`person_org_id`](#api-assistant-accounts-master) | [`dim_assistant_ex.person_org_id`](#dwd-dim-assistant-ex) | 人事组织 ID通常表示“某某门店-助教部-某小组”等层级组织 |
| 54 | `serial_number` | bigint | [`serial_number`](#api-assistant-accounts-master) | [`dim_assistant_ex.serial_number`](#dwd-dim-assistant-ex) | 系统内部生成的序列号或排序标识,用于全局排序或迁移 |
| 55 | `is_team_leader` | integer | [`is_team_leader`](#api-assistant-accounts-master) | [`dim_assistant_ex.is_team_leader`](#dwd-dim-assistant-ex) | 布尔/开关字段,用于表示权限、可用性或状态开关 |
| 56 | `criticism_status` | integer | [`criticism_status`](#api-assistant-accounts-master) | [`dim_assistant_ex.criticism_status`](#dwd-dim-assistant-ex) | 1 × 49 |
| 57 | `last_update_name` | text | [`last_update_name`](#api-assistant-accounts-master) | [`dim_assistant_ex.last_update_name`](#dwd-dim-assistant-ex) | 最近修改该账号配置的管理员名称 |
| 58 | `ding_talk_synced` | integer | [`ding_talk_synced`](#api-assistant-accounts-master) | [`dim_assistant_ex.ding_talk_synced`](#dwd-dim-assistant-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 59 | `site_light_cfg_id` | bigint | [`site_light_cfg_id`](#api-assistant-accounts-master) | [`dim_assistant_ex.site_light_cfg_id`](#dwd-dim-assistant-ex) | 门店灯控配置 ID本门店未在助教账号维度启用 |
| 60 | `light_equipment_id` | text | [`light_equipment_id`](#api-assistant-accounts-master) | [`dim_assistant_ex.light_equipment_id`](#dwd-dim-assistant-ex) | 灯控设备 ID如果开启“助教开台自动控制灯”会通过该字段关联到灯控硬件 |
| 61 | `entry_sign_status` | integer | [`entry_sign_status`](#api-assistant-accounts-master) | [`dim_assistant_ex.entry_sign_status`](#dwd-dim-assistant-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 62 | `resign_sign_status` | integer | [`resign_sign_status`](#api-assistant-accounts-master) | [`dim_assistant_ex.resign_sign_status`](#dwd-dim-assistant-ex) | 离职协议签署状态,类似上面 |
| 63 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 64 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 65 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 66 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
| 67 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
<a id="dwd-dim-assistant"></a>
#### DWD 表结构 — dwd.dim_assistant [🔗 ODS](#ods-assistant-accounts-master)
共 19 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `assistant_id` | bigint | [`id`](#ods-assistant-accounts-master) | 直接 | 助教唯一标识 ID |
| 2 | `user_id` | bigint | [`user_id`](#ods-assistant-accounts-master) | 直接 | 关联用户 ID当前数据全为 0**[作用待确认]** |
| 3 | `assistant_no` | text | [`assistant_no`](#ods-assistant-accounts-master) | 直接 | 助教工号,如 "11"、"27" |
| 4 | `real_name` | text | [`real_name`](#ods-assistant-accounts-master) | 直接 | 真实姓名,如 "梁婷婷"、"周佳怡" |
| 5 | `nickname` | text | [`nickname`](#ods-assistant-accounts-master) | 直接 | 昵称/花名,如 "柚子"、"周周"、"Amy" |
| 6 | `mobile` | text | [`mobile`](#ods-assistant-accounts-master) | 直接 | 手机号码 |
| 7 | `tenant_id` | bigint | [`tenant_id`](#ods-assistant-accounts-master) | 直接 | 租户 ID当前值: 2790683160709957 |
| 8 | `site_id` | bigint | [`site_id`](#ods-assistant-accounts-master) | 直接 | 门店 ID → dim_site当前值: 2790685415443269 |
| 9 | `team_id` | bigint | [`team_id`](#ods-assistant-accounts-master) | 直接 | 团队 ID |
| 10 | `team_name` | text | [`team_name`](#ods-assistant-accounts-master) | 直接 | 团队名称。**枚举值**: "1组"(对应 team_id = 2792011585884037), "2组"(对... |
| 11 | `level` | integer | [`level`](#ods-assistant-accounts-master) | 直接 | 助教等级。**枚举值**: 8 = 助教管理, 10 = 初级, 20 = 中级, 30 = 高级, 40 =专家 |
| 12 | `entry_time` | timestamp with time zone | [`entry_time`](#ods-assistant-accounts-master) | 直接 | 入职时间 |
| 13 | `resign_time` | timestamp with time zone | [`resign_time`](#ods-assistant-accounts-master) | 直接 | 离职时间(远未来日期如 2225-xx-xx 表示在职) |
| 14 | `leave_status` | integer | [`leave_status`](#ods-assistant-accounts-master) | 直接 | 在职状态。**枚举值**: 0 = 在职, 1 = 已离职 |
| 15 | `assistant_status` | integer | [`assistant_status`](#ods-assistant-accounts-master) | 直接 | 观察者状态。**枚举值**: 1 = 为非观察者, 2 = 为观察者。 |
| 16 | `scd2_start_time` | timestamp with time zone | — | SCD2 | SCD2 版本生效时间 |
| 17 | `scd2_end_time` | timestamp with time zone | — | SCD2 | SCD2 版本失效时间 |
| 18 | `scd2_is_current` | integer | — | SCD2 | 当前版本标记 |
| 19 | `scd2_version` | integer | — | SCD2 | 版本号 |
<a id="dwd-dim-assistant-ex"></a>
#### DWD 表结构 — dwd.dim_assistant_ex [🔗 ODS](#ods-assistant-accounts-master)
共 48 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `assistant_id` | bigint | [`id`](#ods-assistant-accounts-master) | 直接 | 字段重命名 |
| 2 | `gender` | integer | [`gender`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 3 | `birth_date` | timestamp with time zone | [`birth_date`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 4 | `avatar` | text | [`avatar`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 5 | `introduce` | text | [`introduce`](#ods-assistant-accounts-master) | 直接 | 维度字段,用于补充维度属性 |
| 6 | `video_introduction_url` | text | [`video_introduction_url`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 7 | `height` | numeric | [`height`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 8 | `weight` | numeric | [`weight`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 9 | `shop_name` | text | [`shop_name`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 10 | `group_id` | bigint | [`group_id`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 11 | `group_name` | text | [`group_name`](#ods-assistant-accounts-master) | 直接 | 名称字段,用于展示与辅助识别 |
| 12 | `person_org_id` | bigint | [`person_org_id`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 13 | `staff_id` | bigint | [`staff_id`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 14 | `staff_profile_id` | bigint | [`staff_profile_id`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 15 | `assistant_grade` | double precision | [`assistant_grade`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 16 | `sum_grade` | double precision | [`sum_grade`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 17 | `get_grade_times` | integer | [`get_grade_times`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 18 | `charge_way` | integer | [`charge_way`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 19 | `allow_cx` | integer | [`allow_cx`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 20 | `is_guaranteed` | integer | [`is_guaranteed`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 21 | `salary_grant_enabled` | integer | [`salary_grant_enabled`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 22 | `entry_type` | integer | [`entry_type`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 23 | `entry_sign_status` | integer | [`entry_sign_status`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 24 | `resign_sign_status` | integer | [`resign_sign_status`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 25 | `work_status` | integer | [`work_status`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 26 | `show_status` | integer | [`show_status`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 27 | `show_sort` | integer | [`show_sort`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 28 | `online_status` | integer | [`online_status`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 29 | `is_delete` | integer | [`is_delete`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 30 | `criticism_status` | integer | [`criticism_status`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 31 | `create_time` | timestamp with time zone | [`create_time`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 32 | `update_time` | timestamp with time zone | [`update_time`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 33 | `start_time` | timestamp with time zone | [`start_time`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 34 | `end_time` | timestamp with time zone | [`end_time`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 35 | `last_table_id` | bigint | [`last_table_id`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 36 | `last_table_name` | text | [`last_table_name`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 37 | `last_update_name` | text | [`last_update_name`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 38 | `order_trade_no` | bigint | [`order_trade_no`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 39 | `ding_talk_synced` | integer | [`ding_talk_synced`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 40 | `site_light_cfg_id` | bigint | [`site_light_cfg_id`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 41 | `light_equipment_id` | text | [`light_equipment_id`](#ods-assistant-accounts-master) | 直接 | 标识类 ID 字段,用于关联/定位相关实体 |
| 42 | `light_status` | integer | [`light_status`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 43 | `is_team_leader` | integer | [`is_team_leader`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 44 | `serial_number` | bigint | [`serial_number`](#ods-assistant-accounts-master) | 直接 | 同名直传 |
| 45 | `scd2_start_time` | timestamp with time zone | — | SCD2 | SCD2 元数据 |
| 46 | `scd2_end_time` | timestamp with time zone | — | SCD2 | SCD2 元数据 |
| 47 | `scd2_is_current` | integer | — | SCD2 | SCD2 元数据 |
| 48 | `scd2_version` | integer | — | SCD2 | SCD2 元数据 |
### 3.2 settlement_records结账记录
- 任务代码:`ODS_SETTLEMENT_RECORDS`
- 采样记录数200
- API JSON 字段数92
- ODS 列数71
- DWD 目标表dwd_settlement_head, dwd_settlement_head_ex
<a id="api-settlement-records"></a>
#### API 源字段 — settlement_records [🔗 ODS](#ods-settlement-records)
已映射 67/92覆盖率 72.8%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `siteProfile.id` | integer | [`id`](#ods-settlement-records) | 结账记录主键 ID订单结算 ID | 📦 嵌套对象;示例: `0` |
| 2 | `siteProfile.org_id` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 3 | `siteProfile.shop_name` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 4 | `siteProfile.avatar` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 5 | `siteProfile.business_tel` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 6 | `siteProfile.full_address` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 7 | `siteProfile.address` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 8 | `siteProfile.longitude` | number | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0.0` |
| 9 | `siteProfile.latitude` | number | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0.0` |
| 10 | `siteProfile.tenant_site_region_id` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 11 | `siteProfile.tenant_id` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 12 | `siteProfile.auto_light` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 13 | `siteProfile.attendance_distance` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 14 | `siteProfile.wifi_name` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 15 | `siteProfile.wifi_password` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 16 | `siteProfile.customer_service_qrcode` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 17 | `siteProfile.customer_service_wechat` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 18 | `siteProfile.fixed_pay_qrCode` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 19 | `siteProfile.prod_env` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 20 | `siteProfile.light_status` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 21 | `siteProfile.light_type` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 22 | `siteProfile.site_type` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 23 | `siteProfile.light_token` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 24 | `siteProfile.site_label` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 25 | `siteProfile.attendance_enabled` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 26 | `siteProfile.shop_status` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 27 | `settleList.id` | integer | [`id`](#ods-settlement-records) | 结账记录主键 ID订单结算 ID | 枚举值: `3093864077166789`, `3093859276196037`, `3093855537596549`, `3093843703564549`, `3093804233967877`, `3093800338802821`, `3093793847478597`, `3093774959741061` |
| 28 | `settleList.tenantId` | integer | [`tenantid`](#ods-settlement-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `2790683160709957` |
| 29 | `settleList.siteId` | integer | [`siteid`](#ods-settlement-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `2790685415443269` |
| 30 | `settleList.siteName` | string | [`sitename`](#ods-settlement-records) | 名称字段,用于展示与辅助识别 | 大小写匹配;示例: `朗朗桌球` |
| 31 | `settleList.balanceAmount` | number | [`balanceamount`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;枚举值: `0.0`, `232.0`, `125.0`, `18.0`, `300.0`, `4285.55`, `43.61`, `132.0` |
| 32 | `settleList.cardAmount` | number | [`cardamount`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 33 | `settleList.cashAmount` | number | [`cashamount`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;枚举值: `0.0`, `5.0` |
| 34 | `settleList.couponAmount` | number | [`couponamount`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;枚举值: `0.0`, `96.0`, `48.0`, `68.0`, `44.2`, `136.0`, `113.66`, `116.0` |
| 35 | `settleList.createTime` | string | [`createtime`](#ods-settlement-records) | 时间字段,用于记录业务时间点/发生时间 | 大小写匹配;枚举值: `2026-02-14 00:21:19`, `2026-02-14 00:16:26`, `2026-02-14 00:12:38`, `2026-02-14 00:00:36`, `2026-02-13 23:20:27`, `2026-02-13 23:16:29`, `2026-02-13 23:09:53`, `2026-02-13 22:50:40` |
| 36 | `settleList.memberId` | integer | [`memberid`](#ods-settlement-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;枚举值: `0`, `2799207359858437`, `2799207406946053`, `2799210153232133`, `2799207522600709`, `2799207117129477`, `2799207133021957`, `2849995548625861` |
| 37 | `settleList.memberName` | string | [`membername`](#ods-settlement-records) | 名称字段,用于展示与辅助识别 | 大小写匹配 |
| 38 | `settleList.tenantMemberCardId` | integer | [`tenantmembercardid`](#ods-settlement-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `0` |
| 39 | `settleList.memberCardTypeName` | string | [`membercardtypename`](#ods-settlement-records) | 名称字段,用于展示与辅助识别 | 大小写匹配 |
| 40 | `settleList.memberPhone` | string | [`memberphone`](#ods-settlement-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配 |
| 41 | `settleList.tableId` | integer | [`tableid`](#ods-settlement-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;枚举值: `0`, `2793003506815045`, `2793001904918661`, `2793022937911365`, `2793020260044869`, `2793001695301765`, `2791964216463493`, `2793002980429893` |
| 42 | `settleList.consumeMoney` | number | [`consumemoney`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;枚举值: `10.0`, `135.9`, `78.26`, `395.84`, `107.9`, `68.26`, `64.46`, `809.43` |
| 43 | `settleList.onlineAmount` | number | [`onlineamount`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 44 | `settleList.operatorId` | integer | [`operatorid`](#ods-settlement-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `2790687322443013` |
| 45 | `settleList.operatorName` | string | [`operatorname`](#ods-settlement-records) | 名称字段,用于展示与辅助识别 | 大小写匹配;示例: `收银员:郑丽珊` |
| 46 | `settleList.revokeOrderId` | integer | [`revokeorderid`](#ods-settlement-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `0` |
| 47 | `settleList.revokeOrderName` | string | [`revokeordername`](#ods-settlement-records) | 名称字段,用于展示与辅助识别 | 大小写匹配 |
| 48 | `settleList.revokeTime` | string | [`revoketime`](#ods-settlement-records) | 时间字段,用于记录业务时间点/发生时间 | 大小写匹配;示例: `0001-01-01 00:00:00` |
| 49 | `settleList.payAmount` | number | [`payamount`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;枚举值: `7.0`, `0.0`, `10.0`, `684.0`, `5.0`, `43.0`, `49.0`, `2.0` |
| 50 | `settleList.pointAmount` | number | [`pointamount`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;枚举值: `7.0`, `0.0`, `10.0`, `684.0`, `5.0`, `43.0`, `49.0`, `2.0` |
| 51 | `settleList.refundAmount` | number | [`refundamount`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 52 | `settleList.settleName` | string | [`settlename`](#ods-settlement-records) | 名称字段,用于展示与辅助识别 | 大小写匹配;枚举值: `商城订单`, `A区 A15`, `A区 A4`, `TV台 TV`, `斯诺克区 S4`, `A区 A3`, `A区 A1`, `A区 A9` |
| 53 | `settleList.settleRelateId` | integer | [`settlerelateid`](#ods-settlement-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;枚举值: `3093864074381509`, `3093740766775621`, `3093784062036101`, `3093701555882181`, `3093729955563653`, `3093681905567877`, `3093730735376517`, `3093720617519301` |
| 54 | `settleList.settleStatus` | integer | [`settlestatus`](#ods-settlement-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `2` |
| 55 | `settleList.settleType` | integer | [`settletype`](#ods-settlement-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;枚举值: `3`, `1` |
| 56 | `settleList.payTime` | string | [`paytime`](#ods-settlement-records) | 时间字段,用于记录业务时间点/发生时间 | 大小写匹配;枚举值: `2026-02-14 00:21:21`, `2026-02-14 00:16:27`, `2026-02-14 00:12:40`, `2026-02-14 00:01:01`, `2026-02-13 23:20:28`, `2026-02-13 23:16:30`, `2026-02-13 23:09:55`, `2026-02-13 22:50:42` |
| 57 | `settleList.roundingAmount` | number | [`roundingamount`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;枚举值: `0.0`, `0.45`, `0.72`, `0.33`, `0.71`, `0.86`, `0.03`, `0.56` |
| 58 | `settleList.paymentMethod` | integer | [`paymentmethod`](#ods-settlement-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `0` |
| 59 | `settleList.adjustAmount` | number | [`adjustamount`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;枚举值: `0.0`, `125.88`, `66.14`, `64.0`, `34.0`, `1282.22`, `92.66`, `249.16` |
| 60 | `settleList.assistantCxMoney` | number | [`assistantcxmoney`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 61 | `settleList.assistantPdMoney` | number | [`assistantpdmoney`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;枚举值: `0.0`, `646.32`, `546.6`, `408.9`, `127.45` |
| 62 | `settleList.couponSaleAmount` | number | [`couponsaleamount`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 63 | `settleList.plCouponSaleAmount` | number | [`plcouponsaleamount`](#ods-settlement-records) | 平台券销售额 | 大小写匹配;枚举值: `0.0`, `39.9`, `20.26`, `79.8`, `69.9`, `59.9`, `119.7`, `40.52` |
| 64 | `settleList.merVouSalesAmount` | number | [`mervousalesamount`](#ods-settlement-records) | 商户券销售额 | 大小写匹配;示例: `0.0` |
| 65 | `settleList.memberDiscountAmount` | number | [`memberdiscountamount`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;枚举值: `0.0`, `163.84`, `134.3`, `286.6`, `681.58` |
| 66 | `settleList.tableChargeMoney` | number | [`tablechargemoney`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;枚举值: `0.0`, `96.0`, `48.0`, `163.84`, `68.0`, `44.2`, `629.43`, `136.0` |
| 67 | `settleList.goodsMoney` | number | [`goodsmoney`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;枚举值: `10.0`, `0.0`, `232.0`, `180.0`, `5.0`, `125.0`, `18.0`, `2.0` |
| 68 | `settleList.realGoodsMoney` | number | [`realgoodsmoney`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;枚举值: `7.0`, `0.0`, `10.0`, `232.0`, `180.0`, `5.0`, `125.0`, `18.0` |
| 69 | `settleList.serviceMoney` | number | [`servicemoney`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 70 | `settleList.prepayMoney` | number | [`prepaymoney`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;枚举值: `0.0`, `300.0` |
| 71 | `settleList.salesManName` | string | [`salesmanname`](#ods-settlement-records) | 名称字段,用于展示与辅助识别 | 大小写匹配 |
| 72 | `settleList.orderRemark` | string | [`orderremark`](#ods-settlement-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `五折` |
| 73 | `settleList.salesManUserId` | integer | [`salesmanuserid`](#ods-settlement-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `0` |
| 74 | `settleList.canBeRevoked` | boolean | [`canberevoked`](#ods-settlement-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `False` |
| 75 | `settleList.pointDiscountPrice` | number | [`pointdiscountprice`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 76 | `settleList.pointDiscountCost` | number | [`pointdiscountcost`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 77 | `settleList.activityDiscount` | number | [`activitydiscount`](#ods-settlement-records) | 数量/时长字段,用于统计与计量 | 大小写匹配;示例: `0.0` |
| 78 | `settleList.serialNumber` | integer | [`serialnumber`](#ods-settlement-records) | 数量/时长字段,用于统计与计量 | 大小写匹配;示例: `0` |
| 79 | `settleList.assistantManualDiscount` | number | [`assistantmanualdiscount`](#ods-settlement-records) | 数量/时长字段,用于统计与计量 | 大小写匹配;示例: `0.0` |
| 80 | `settleList.allCouponDiscount` | number | [`allcoupondiscount`](#ods-settlement-records) | 数量/时长字段,用于统计与计量 | 大小写匹配;示例: `0.0` |
| 81 | `settleList.goodsPromotionMoney` | number | [`goodspromotionmoney`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 82 | `settleList.assistantPromotionMoney` | number | [`assistantpromotionmoney`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 83 | `settleList.isUseCoupon` | boolean | [`isusecoupon`](#ods-settlement-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `False` |
| 84 | `settleList.isUseDiscount` | boolean | [`isusediscount`](#ods-settlement-records) | 数量/时长字段,用于统计与计量 | 大小写匹配;示例: `False` |
| 85 | `settleList.isActivity` | boolean | [`isactivity`](#ods-settlement-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `False` |
| 86 | `settleList.isBindMember` | boolean | [`isbindmember`](#ods-settlement-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `False` |
| 87 | `settleList.isFirst` | integer | [`isfirst`](#ods-settlement-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `0` |
| 88 | `settleList.rechargeCardAmount` | integer | [`rechargecardamount`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;枚举值: `0`, `232.0`, `300.0`, `4285.55`, `43.61`, `132.0`, `71.07`, `58.0` |
| 89 | `settleList.giftCardAmount` | integer | [`giftcardamount`](#ods-settlement-records) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;枚举值: `0`, `125.0`, `18.0`, `26.0`, `219.23`, `24.0` |
| 90 | `settleList.electricityMoney` | number | [`electricitymoney`](#ods-settlement-records) | 电费金额 | 大小写匹配;示例: `0.0` |
| 91 | `settleList.realElectricityMoney` | number | [`realelectricitymoney`](#ods-settlement-records) | 实际电费金额 | 大小写匹配;示例: `0.0` |
| 92 | `settleList.electricityAdjustMoney` | number | [`electricityadjustmoney`](#ods-settlement-records) | 电费调整金额 | 大小写匹配;示例: `0.0` |
<a id="ods-settlement-records"></a>
#### ODS 表结构 — ods.settlement_records [🔗 API](#api-settlement-records)
共 71 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `id` | bigint | [`siteProfile.id`](#api-settlement-records) | [`dwd_settlement_head.order_settle_id`](#dwd-dwd-settlement-head), [`dwd_settlement_head_ex.order_settle_id`](#dwd-dwd-settlement-head-ex) | 结账记录主键 ID订单结算 ID |
| 2 | `tenantid` | bigint | [`settleList.tenantId`](#api-settlement-records) | [`dwd_settlement_head.tenant_id`](#dwd-dwd-settlement-head) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 3 | `siteid` | bigint | [`settleList.siteId`](#api-settlement-records) | [`dwd_settlement_head.site_id`](#dwd-dwd-settlement-head) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 4 | `sitename` | text | [`settleList.siteName`](#api-settlement-records) | [`dwd_settlement_head.site_name`](#dwd-dwd-settlement-head) | 名称字段,用于展示与辅助识别 |
| 5 | `balanceamount` | numeric | [`settleList.balanceAmount`](#api-settlement-records) | [`dwd_settlement_head.balance_amount`](#dwd-dwd-settlement-head) | 金额字段,用于计费/结算/分摊等金额计算 |
| 6 | `cardamount` | numeric | [`settleList.cardAmount`](#api-settlement-records) | [`dwd_settlement_head_ex.card_amount`](#dwd-dwd-settlement-head-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 7 | `cashamount` | numeric | [`settleList.cashAmount`](#api-settlement-records) | [`dwd_settlement_head_ex.cash_amount`](#dwd-dwd-settlement-head-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 8 | `couponamount` | numeric | [`settleList.couponAmount`](#api-settlement-records) | [`dwd_settlement_head.coupon_amount`](#dwd-dwd-settlement-head) | 金额字段,用于计费/结算/分摊等金额计算 |
| 9 | `createtime` | timestamp with time zone | [`settleList.createTime`](#api-settlement-records) | [`dwd_settlement_head.create_time`](#dwd-dwd-settlement-head) | 时间字段,用于记录业务时间点/发生时间 |
| 10 | `memberid` | bigint | [`settleList.memberId`](#api-settlement-records) | [`dwd_settlement_head.member_id`](#dwd-dwd-settlement-head) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 11 | `membername` | text | [`settleList.memberName`](#api-settlement-records) | [`dwd_settlement_head.member_name`](#dwd-dwd-settlement-head) | 名称字段,用于展示与辅助识别 |
| 12 | `tenantmembercardid` | bigint | [`settleList.tenantMemberCardId`](#api-settlement-records) | [`dwd_settlement_head.member_card_account_id`](#dwd-dwd-settlement-head) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 13 | `membercardtypename` | text | [`settleList.memberCardTypeName`](#api-settlement-records) | [`dwd_settlement_head.member_card_type_name`](#dwd-dwd-settlement-head) | 名称字段,用于展示与辅助识别 |
| 14 | `memberphone` | text | [`settleList.memberPhone`](#api-settlement-records) | [`dwd_settlement_head.member_phone`](#dwd-dwd-settlement-head) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 15 | `tableid` | bigint | [`settleList.tableId`](#api-settlement-records) | [`dwd_settlement_head.table_id`](#dwd-dwd-settlement-head) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 16 | `consumemoney` | numeric | [`settleList.consumeMoney`](#api-settlement-records) | [`dwd_settlement_head.consume_money`](#dwd-dwd-settlement-head) | 金额字段,用于计费/结算/分摊等金额计算 |
| 17 | `onlineamount` | numeric | [`settleList.onlineAmount`](#api-settlement-records) | [`dwd_settlement_head_ex.online_amount`](#dwd-dwd-settlement-head-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 18 | `operatorid` | bigint | [`settleList.operatorId`](#api-settlement-records) | [`dwd_settlement_head_ex.operator_id`](#dwd-dwd-settlement-head-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 19 | `operatorname` | text | [`settleList.operatorName`](#api-settlement-records) | [`dwd_settlement_head_ex.operator_name`](#dwd-dwd-settlement-head-ex) | 名称字段,用于展示与辅助识别 |
| 20 | `revokeorderid` | bigint | [`settleList.revokeOrderId`](#api-settlement-records) | [`dwd_settlement_head.revoke_order_id`](#dwd-dwd-settlement-head) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 21 | `revokeordername` | text | [`settleList.revokeOrderName`](#api-settlement-records) | [`dwd_settlement_head_ex.revoke_order_name`](#dwd-dwd-settlement-head-ex) | 名称字段,用于展示与辅助识别 |
| 22 | `revoketime` | timestamp with time zone | [`settleList.revokeTime`](#api-settlement-records) | [`dwd_settlement_head_ex.revoke_time`](#dwd-dwd-settlement-head-ex) | 时间字段,用于记录业务时间点/发生时间 |
| 23 | `payamount` | numeric | [`settleList.payAmount`](#api-settlement-records) | [`dwd_settlement_head.pay_amount`](#dwd-dwd-settlement-head) | 金额字段,用于计费/结算/分摊等金额计算 |
| 24 | `pointamount` | numeric | [`settleList.pointAmount`](#api-settlement-records) | [`dwd_settlement_head.point_amount`](#dwd-dwd-settlement-head) | 金额字段,用于计费/结算/分摊等金额计算 |
| 25 | `refundamount` | numeric | [`settleList.refundAmount`](#api-settlement-records) | [`dwd_settlement_head_ex.refund_amount`](#dwd-dwd-settlement-head-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 26 | `settlename` | text | [`settleList.settleName`](#api-settlement-records) | [`dwd_settlement_head.settle_name`](#dwd-dwd-settlement-head) | 名称字段,用于展示与辅助识别 |
| 27 | `settlerelateid` | bigint | [`settleList.settleRelateId`](#api-settlement-records) | [`dwd_settlement_head.order_trade_no`](#dwd-dwd-settlement-head) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 28 | `settlestatus` | integer | [`settleList.settleStatus`](#api-settlement-records) | [`dwd_settlement_head_ex.settle_status`](#dwd-dwd-settlement-head-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 29 | `settletype` | integer | [`settleList.settleType`](#api-settlement-records) | [`dwd_settlement_head.settle_type`](#dwd-dwd-settlement-head) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 30 | `paytime` | timestamp with time zone | [`settleList.payTime`](#api-settlement-records) | [`dwd_settlement_head.pay_time`](#dwd-dwd-settlement-head) | 时间字段,用于记录业务时间点/发生时间 |
| 31 | `roundingamount` | numeric | [`settleList.roundingAmount`](#api-settlement-records) | [`dwd_settlement_head.rounding_amount`](#dwd-dwd-settlement-head) | 金额字段,用于计费/结算/分摊等金额计算 |
| 32 | `paymentmethod` | integer | [`settleList.paymentMethod`](#api-settlement-records) | [`dwd_settlement_head_ex.payment_method`](#dwd-dwd-settlement-head-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 33 | `adjustamount` | numeric | [`settleList.adjustAmount`](#api-settlement-records) | [`dwd_settlement_head.adjust_amount`](#dwd-dwd-settlement-head) | 金额字段,用于计费/结算/分摊等金额计算 |
| 34 | `assistantcxmoney` | numeric | [`settleList.assistantCxMoney`](#api-settlement-records) | [`dwd_settlement_head.assistant_cx_money`](#dwd-dwd-settlement-head) | 金额字段,用于计费/结算/分摊等金额计算 |
| 35 | `assistantpdmoney` | numeric | [`settleList.assistantPdMoney`](#api-settlement-records) | [`dwd_settlement_head.assistant_pd_money`](#dwd-dwd-settlement-head) | 金额字段,用于计费/结算/分摊等金额计算 |
| 36 | `couponsaleamount` | numeric | [`settleList.couponSaleAmount`](#api-settlement-records) | [`dwd_settlement_head_ex.coupon_sale_amount`](#dwd-dwd-settlement-head-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 37 | `memberdiscountamount` | numeric | [`settleList.memberDiscountAmount`](#api-settlement-records) | [`dwd_settlement_head.member_discount_amount`](#dwd-dwd-settlement-head) | 金额字段,用于计费/结算/分摊等金额计算 |
| 38 | `tablechargemoney` | numeric | [`settleList.tableChargeMoney`](#api-settlement-records) | [`dwd_settlement_head.table_charge_money`](#dwd-dwd-settlement-head) | 金额字段,用于计费/结算/分摊等金额计算 |
| 39 | `goodsmoney` | numeric | [`settleList.goodsMoney`](#api-settlement-records) | [`dwd_settlement_head.goods_money`](#dwd-dwd-settlement-head) | 金额字段,用于计费/结算/分摊等金额计算 |
| 40 | `realgoodsmoney` | numeric | [`settleList.realGoodsMoney`](#api-settlement-records) | [`dwd_settlement_head.real_goods_money`](#dwd-dwd-settlement-head) | 金额字段,用于计费/结算/分摊等金额计算 |
| 41 | `servicemoney` | numeric | [`settleList.serviceMoney`](#api-settlement-records) | [`dwd_settlement_head_ex.service_money`](#dwd-dwd-settlement-head-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 42 | `prepaymoney` | numeric | [`settleList.prepayMoney`](#api-settlement-records) | [`dwd_settlement_head_ex.prepay_money`](#dwd-dwd-settlement-head-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 43 | `salesmanname` | text | [`settleList.salesManName`](#api-settlement-records) | [`dwd_settlement_head_ex.salesman_name`](#dwd-dwd-settlement-head-ex) | 名称字段,用于展示与辅助识别 |
| 44 | `orderremark` | text | [`settleList.orderRemark`](#api-settlement-records) | [`dwd_settlement_head_ex.order_remark`](#dwd-dwd-settlement-head-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 45 | `salesmanuserid` | bigint | [`settleList.salesManUserId`](#api-settlement-records) | [`dwd_settlement_head_ex.salesman_user_id`](#dwd-dwd-settlement-head-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 46 | `canberevoked` | boolean | [`settleList.canBeRevoked`](#api-settlement-records) | [`dwd_settlement_head_ex.can_be_revoked`](#dwd-dwd-settlement-head-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 47 | `pointdiscountprice` | numeric | [`settleList.pointDiscountPrice`](#api-settlement-records) | [`dwd_settlement_head_ex.point_discount_price`](#dwd-dwd-settlement-head-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 48 | `pointdiscountcost` | numeric | [`settleList.pointDiscountCost`](#api-settlement-records) | [`dwd_settlement_head_ex.point_discount_cost`](#dwd-dwd-settlement-head-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 49 | `activitydiscount` | numeric | [`settleList.activityDiscount`](#api-settlement-records) | [`dwd_settlement_head_ex.activity_discount`](#dwd-dwd-settlement-head-ex) | 数量/时长字段,用于统计与计量 |
| 50 | `serialnumber` | bigint | [`settleList.serialNumber`](#api-settlement-records) | [`dwd_settlement_head_ex.serial_number`](#dwd-dwd-settlement-head-ex) | 数量/时长字段,用于统计与计量 |
| 51 | `assistantmanualdiscount` | numeric | [`settleList.assistantManualDiscount`](#api-settlement-records) | [`dwd_settlement_head_ex.assistant_manual_discount`](#dwd-dwd-settlement-head-ex) | 数量/时长字段,用于统计与计量 |
| 52 | `allcoupondiscount` | numeric | [`settleList.allCouponDiscount`](#api-settlement-records) | [`dwd_settlement_head_ex.all_coupon_discount`](#dwd-dwd-settlement-head-ex) | 数量/时长字段,用于统计与计量 |
| 53 | `goodspromotionmoney` | numeric | [`settleList.goodsPromotionMoney`](#api-settlement-records) | [`dwd_settlement_head_ex.goods_promotion_money`](#dwd-dwd-settlement-head-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 54 | `assistantpromotionmoney` | numeric | [`settleList.assistantPromotionMoney`](#api-settlement-records) | [`dwd_settlement_head_ex.assistant_promotion_money`](#dwd-dwd-settlement-head-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 55 | `isusecoupon` | boolean | [`settleList.isUseCoupon`](#api-settlement-records) | [`dwd_settlement_head_ex.is_use_coupon`](#dwd-dwd-settlement-head-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 56 | `isusediscount` | boolean | [`settleList.isUseDiscount`](#api-settlement-records) | [`dwd_settlement_head_ex.is_use_discount`](#dwd-dwd-settlement-head-ex) | 数量/时长字段,用于统计与计量 |
| 57 | `isactivity` | boolean | [`settleList.isActivity`](#api-settlement-records) | [`dwd_settlement_head_ex.is_activity`](#dwd-dwd-settlement-head-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 58 | `isbindmember` | boolean | [`settleList.isBindMember`](#api-settlement-records) | [`dwd_settlement_head.is_bind_member`](#dwd-dwd-settlement-head) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 59 | `isfirst` | integer | [`settleList.isFirst`](#api-settlement-records) | [`dwd_settlement_head_ex.is_first_order`](#dwd-dwd-settlement-head-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 60 | `rechargecardamount` | numeric | [`settleList.rechargeCardAmount`](#api-settlement-records) | [`dwd_settlement_head.recharge_card_amount`](#dwd-dwd-settlement-head) | 金额字段,用于计费/结算/分摊等金额计算 |
| 61 | `giftcardamount` | numeric | [`settleList.giftCardAmount`](#api-settlement-records) | [`dwd_settlement_head.gift_card_amount`](#dwd-dwd-settlement-head) | 金额字段,用于计费/结算/分摊等金额计算 |
| 62 | `electricityadjustmoney` | numeric | [`settleList.electricityAdjustMoney`](#api-settlement-records) | [`dwd_settlement_head.electricity_adjust_money`](#dwd-dwd-settlement-head) | 电费调整金额 |
| 63 | `electricitymoney` | numeric | [`settleList.electricityMoney`](#api-settlement-records) | [`dwd_settlement_head.electricity_money`](#dwd-dwd-settlement-head) | 电费金额 |
| 64 | `mervousalesamount` | numeric | [`settleList.merVouSalesAmount`](#api-settlement-records) | [`dwd_settlement_head.mervou_sales_amount`](#dwd-dwd-settlement-head) | 商户券销售额 |
| 65 | `plcouponsaleamount` | numeric | [`settleList.plCouponSaleAmount`](#api-settlement-records) | [`dwd_settlement_head.pl_coupon_sale_amount`](#dwd-dwd-settlement-head) | 平台券销售额 |
| 66 | `realelectricitymoney` | numeric | [`settleList.realElectricityMoney`](#api-settlement-records) | [`dwd_settlement_head.real_electricity_money`](#dwd-dwd-settlement-head) | 实际电费金额 |
| 67 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 68 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 69 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 70 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
| 71 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
<a id="dwd-dwd-settlement-head"></a>
#### DWD 表结构 — dwd.dwd_settlement_head [🔗 ODS](#ods-settlement-records)
共 37 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `order_settle_id` | bigint | [`id`](#ods-settlement-records) | 直接 | 结账单 ID |
| 2 | `tenant_id` | bigint | [`tenantid`](#ods-settlement-records) | 直接 | 租户 ID |
| 3 | `site_id` | bigint | [`siteid`](#ods-settlement-records) | 直接 | 门店 ID → dim_site |
| 4 | `site_name` | character varying | [`sitename`](#ods-settlement-records) | 直接 | 门店名称。**当前值**: "朗朗桌球" |
| 5 | `table_id` | bigint | [`tableid`](#ods-settlement-records) | 直接 | 台桌 ID → dim_table0=非台桌订单,如商城订单) |
| 6 | `settle_name` | character varying | [`settlename`](#ods-settlement-records) | 直接 | 结账名称。**样本值**: "商城订单", "A区 A3", "A区 A4", "斯诺克区 S1" |
| 7 | `order_trade_no` | bigint | [`settlerelateid`](#ods-settlement-records) | 直接 | 订单号 |
| 8 | `create_time` | timestamp with time zone | [`createtime`](#ods-settlement-records) | 直接 | 创建时间 |
| 9 | `pay_time` | timestamp with time zone | [`paytime`](#ods-settlement-records) | 直接 | 支付时间 |
| 10 | `settle_type` | integer | [`settletype`](#ods-settlement-records) | 直接 | 结账类型。**枚举值**: 1=台桌结账, 3=商城订单, 6=退货订单, 7=退款订单 |
| 11 | `revoke_order_id` | bigint | [`revokeorderid`](#ods-settlement-records) | 直接 | 撤销订单 ID当前数据全为 0 |
| 12 | `member_id` | bigint | [`memberid`](#ods-settlement-records) | 直接 | 会员 ID → dim_member0=散客,占比约 82.8% |
| 13 | `member_name` | character varying | [`membername`](#ods-settlement-records) | 直接 | 会员名称 |
| 14 | `member_phone` | character varying | [`memberphone`](#ods-settlement-records) | 直接 | 会员电话 |
| 15 | `member_card_account_id` | bigint | [`tenantmembercardid`](#ods-settlement-records) | 直接 | 会员卡账户 ID当前数据全为 0 |
| 16 | `member_card_type_name` | character varying | [`membercardtypename`](#ods-settlement-records) | 直接 | 卡类型名称(当前数据全为空) |
| 17 | `is_bind_member` | boolean | [`isbindmember`](#ods-settlement-records) | 直接 | 是否绑定会员。**枚举值**: False=否 |
| 18 | `member_discount_amount` | numeric | [`memberdiscountamount`](#ods-settlement-records) | 直接 | 会员折扣金额 |
| 19 | `consume_money` | numeric | [`consumemoney`](#ods-settlement-records) | 直接 | 消费总金额(元) |
| 20 | `table_charge_money` | numeric | [`tablechargemoney`](#ods-settlement-records) | 直接 | 台费金额 |
| 21 | `goods_money` | numeric | [`goodsmoney`](#ods-settlement-records) | 直接 | 商品金额 |
| 22 | `real_goods_money` | numeric | [`realgoodsmoney`](#ods-settlement-records) | 直接 | 实收商品金额 |
| 23 | `assistant_pd_money` | numeric | [`assistantpdmoney`](#ods-settlement-records) | 直接 | 助教陪打费用 |
| 24 | `assistant_cx_money` | numeric | [`assistantcxmoney`](#ods-settlement-records) | 直接 | 助教超休费用 |
| 25 | `adjust_amount` | numeric | [`adjustamount`](#ods-settlement-records) | 直接 | 调整金额 |
| 26 | `pay_amount` | numeric | [`payamount`](#ods-settlement-records) | 直接 | 实付金额 |
| 27 | `balance_amount` | numeric | [`balanceamount`](#ods-settlement-records) | 直接 | 余额支付金额 |
| 28 | `recharge_card_amount` | numeric | [`rechargecardamount`](#ods-settlement-records) | 直接 | 储值卡支付金额 |
| 29 | `gift_card_amount` | numeric | [`giftcardamount`](#ods-settlement-records) | 直接 | 礼品卡支付金额 |
| 30 | `coupon_amount` | numeric | [`couponamount`](#ods-settlement-records) | 直接 | 券抵扣金额 |
| 31 | `rounding_amount` | numeric | [`roundingamount`](#ods-settlement-records) | 直接 | 抹零金额 |
| 32 | `point_amount` | numeric | [`pointamount`](#ods-settlement-records) | 直接 | 积分抵扣等值金额 |
| 33 | `electricity_money` | numeric | [`electricitymoney`](#ods-settlement-records) | 直接 | 电费金额 |
| 34 | `real_electricity_money` | numeric | [`realelectricitymoney`](#ods-settlement-records) | 直接 | 实际电费金额 |
| 35 | `electricity_adjust_money` | numeric | [`electricityadjustmoney`](#ods-settlement-records) | 直接 | 电费调整金额 |
| 36 | `pl_coupon_sale_amount` | numeric | [`plcouponsaleamount`](#ods-settlement-records) | 直接 | 平台券销售额 |
| 37 | `mervou_sales_amount` | numeric | [`mervousalesamount`](#ods-settlement-records) | 直接 | 商户券销售额 |
<a id="dwd-dwd-settlement-head-ex"></a>
#### DWD 表结构 — dwd.dwd_settlement_head_ex [🔗 ODS](#ods-settlement-records)
共 30 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `order_settle_id` | bigint | [`id`](#ods-settlement-records) | 直接 | 字段重命名 |
| 2 | `serial_number` | integer | [`serialnumber`](#ods-settlement-records) | 直接 | 字段重命名 |
| 3 | `settle_status` | integer | [`settlestatus`](#ods-settlement-records) | 直接 | 字段重命名 |
| 4 | `can_be_revoked` | boolean | [`canberevoked`](#ods-settlement-records) | → boolean | 字段重命名 |
| 5 | `revoke_order_name` | character varying | [`revokeordername`](#ods-settlement-records) | 直接 | 字段重命名 |
| 6 | `revoke_time` | timestamp with time zone | [`revoketime`](#ods-settlement-records) | 直接 | 字段重命名 |
| 7 | `is_first_order` | boolean | [`isfirst`](#ods-settlement-records) | → boolean | 字段重命名 |
| 8 | `service_money` | numeric | [`servicemoney`](#ods-settlement-records) | 直接 | 字段重命名 |
| 9 | `cash_amount` | numeric | [`cashamount`](#ods-settlement-records) | 直接 | 字段重命名 |
| 10 | `card_amount` | numeric | [`cardamount`](#ods-settlement-records) | 直接 | 字段重命名 |
| 11 | `online_amount` | numeric | [`onlineamount`](#ods-settlement-records) | 直接 | 字段重命名 |
| 12 | `refund_amount` | numeric | [`refundamount`](#ods-settlement-records) | 直接 | 字段重命名 |
| 13 | `prepay_money` | numeric | [`prepaymoney`](#ods-settlement-records) | 直接 | 字段重命名 |
| 14 | `payment_method` | integer | [`paymentmethod`](#ods-settlement-records) | 直接 | 字段重命名 |
| 15 | `coupon_sale_amount` | numeric | [`couponsaleamount`](#ods-settlement-records) | 直接 | 字段重命名 |
| 16 | `all_coupon_discount` | numeric | [`allcoupondiscount`](#ods-settlement-records) | 直接 | 字段重命名 |
| 17 | `goods_promotion_money` | numeric | [`goodspromotionmoney`](#ods-settlement-records) | 直接 | 字段重命名 |
| 18 | `assistant_promotion_money` | numeric | [`assistantpromotionmoney`](#ods-settlement-records) | 直接 | 字段重命名 |
| 19 | `activity_discount` | numeric | [`activitydiscount`](#ods-settlement-records) | 直接 | 字段重命名 |
| 20 | `assistant_manual_discount` | numeric | [`assistantmanualdiscount`](#ods-settlement-records) | 直接 | 字段重命名 |
| 21 | `point_discount_price` | numeric | [`pointdiscountprice`](#ods-settlement-records) | 直接 | 字段重命名 |
| 22 | `point_discount_cost` | numeric | [`pointdiscountcost`](#ods-settlement-records) | 直接 | 字段重命名 |
| 23 | `is_use_coupon` | boolean | [`isusecoupon`](#ods-settlement-records) | → boolean | 字段重命名 |
| 24 | `is_use_discount` | boolean | [`isusediscount`](#ods-settlement-records) | → boolean | 字段重命名 |
| 25 | `is_activity` | boolean | [`isactivity`](#ods-settlement-records) | → boolean | 字段重命名 |
| 26 | `operator_name` | character varying | [`operatorname`](#ods-settlement-records) | 直接 | 字段重命名 |
| 27 | `salesman_name` | character varying | [`salesmanname`](#ods-settlement-records) | 直接 | 字段重命名 |
| 28 | `order_remark` | character varying | [`orderremark`](#ods-settlement-records) | 直接 | 字段重命名 |
| 29 | `operator_id` | bigint | [`operatorid`](#ods-settlement-records) | 直接 | 字段重命名 |
| 30 | `salesman_user_id` | bigint | [`salesmanuserid`](#ods-settlement-records) | 直接 | 字段重命名 |
### 3.3 table_fee_transactions台费计费流水
- 任务代码:`ODS_TABLE_USE`
- 采样记录数200
- API JSON 字段数67
- ODS 列数47
- DWD 目标表dim_site, dim_site_ex, dwd_table_fee_log, dwd_table_fee_log_ex
<a id="api-table-fee-transactions"></a>
#### API 源字段 — table_fee_transactions [🔗 ODS](#ods-table-fee-transactions)
已映射 43/67覆盖率 64.2%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `siteProfile.id` | integer | [`id`](#ods-table-fee-transactions) | 台费流水记录主键(事实表主键) | 📦 嵌套对象;示例: `2790685415443269` |
| 2 | `siteProfile.org_id` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `2790684179467077` |
| 3 | `siteProfile.shop_name` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `朗朗桌球` |
| 4 | `siteProfile.avatar` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `https://oss.ficoo.vip/admin...` |
| 5 | `siteProfile.business_tel` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `13316068642` |
| 6 | `siteProfile.full_address` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `广东省广州市天河区丽阳街12号` |
| 7 | `siteProfile.address` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `广东省广州市天河区天园街道朗朗桌球` |
| 8 | `siteProfile.longitude` | number | ⚠️ 未映射 | | 📦 嵌套对象;示例: `113.360321` |
| 9 | `siteProfile.latitude` | number | ⚠️ 未映射 | | 📦 嵌套对象;示例: `23.133629` |
| 10 | `siteProfile.tenant_site_region_id` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `156440100` |
| 11 | `siteProfile.tenant_id` | integer | [`tenant_id`](#ods-table-fee-transactions) | 租户/品牌 ID | 📦 嵌套对象;示例: `2790683160709957` |
| 12 | `siteProfile.auto_light` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 13 | `siteProfile.attendance_distance` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 14 | `siteProfile.wifi_name` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 15 | `siteProfile.wifi_password` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 16 | `siteProfile.customer_service_qrcode` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 17 | `siteProfile.customer_service_wechat` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 18 | `siteProfile.fixed_pay_qrCode` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 19 | `siteProfile.prod_env` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 20 | `siteProfile.light_status` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 21 | `siteProfile.light_type` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 22 | `siteProfile.site_type` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 23 | `siteProfile.light_token` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 24 | `siteProfile.site_label` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `A` |
| 25 | `siteProfile.attendance_enabled` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 26 | `siteProfile.shop_status` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 27 | `id` | integer | [`id`](#ods-table-fee-transactions) | 台费流水记录主键(事实表主键) | 枚举值: `3093859291416901`, `3093855576901893`, `3093844120701253`, `3093804251023685`, `3093800356989125`, `3093793885112581`, `3093774985185413`, `3093761347356805` |
| 28 | `add_clock_seconds` | integer | [`add_clock_seconds`](#ods-table-fee-transactions) | 加钟秒数,在原有使用基础上追加的时长 | 枚举值: `0`, `1200`, `1800` |
| 29 | `activity_discount_amount` | number | [`activity_discount_amount`](#ods-table-fee-transactions) | 活动折扣金额 | 示例: `0.0` |
| 30 | `adjust_amount` | number | [`adjust_amount`](#ods-table-fee-transactions) | 调整金额/调账金额,用于将台费金额转移或冲减到其它项目,或手工调整 | 枚举值: `0.0`, `125.88`, `66.14`, `64.0`, `34.0`, `1191.01`, `91.21`, `92.66` |
| 31 | `coupon_promotion_amount` | number | [`coupon_promotion_amount`](#ods-table-fee-transactions) | 由优惠券/活动/团购(平台/门店促销)承担的优惠金额,直接抵扣在台费上 | 枚举值: `96.0`, `48.0`, `0.0`, `68.0`, `44.2`, `136.0`, `113.66`, `116.0` |
| 32 | `create_time` | string | [`create_time`](#ods-table-fee-transactions) | 这条台费流水记录的创建时间,通常接近结账时间 | 枚举值: `2026-02-14 00:16:27`, `2026-02-14 00:12:40`, `2026-02-14 00:01:01`, `2026-02-13 23:20:28`, `2026-02-13 23:16:30`, `2026-02-13 23:09:55`, `2026-02-13 22:50:42`, `2026-02-13 22:36:49` |
| 33 | `fee_total` | number | [`fee_total`](#ods-table-fee-transactions) | 各种附加费用(如管理费、服务费)合计值 | 示例: `0.0` |
| 34 | `is_delete` | integer | [`is_delete`](#ods-table-fee-transactions) | 逻辑删除标记0=否1=是) | 示例: `0` |
| 35 | `is_single_order` | integer | [`is_single_order`](#ods-table-fee-transactions) | 布尔/开关字段,用于表示权限、可用性或状态开关 | 枚举值: `1`, `0` |
| 36 | `last_use_time` | string | [`last_use_time`](#ods-table-fee-transactions) | 最后使用/操作时间 | 枚举值: `2026-02-14 00:15:53`, `2026-02-13 23:59:55`, `2026-02-14 00:00:33`, `2026-02-13 23:04:53`, `2026-02-13 23:16:00`, `2026-02-13 23:05:40`, `2026-02-13 22:50:38`, `2026-02-13 22:35:21` |
| 37 | `ledger_amount` | number | [`ledger_amount`](#ods-table-fee-transactions) | 按单价与计费时长计算出的原始应收台费金额 | 枚举值: `96.0`, `48.0`, `163.84`, `68.0`, `44.2`, `629.43`, `136.0`, `113.66` |
| 38 | `ledger_count` | integer | [`ledger_count`](#ods-table-fee-transactions) | 台账记录的计费秒数,计费用秒数(应收时长) | 枚举值: `7200`, `3600`, `8674`, `3315`, `12053`, `7055`, `3171`, `3650` |
| 39 | `ledger_end_time` | string | [`ledger_end_time`](#ods-table-fee-transactions) | 台账上的计费结束时间 | 枚举值: `2026-02-14 00:15:53`, `2026-02-13 23:59:55`, `2026-02-14 00:00:33`, `2026-02-13 23:04:53`, `2026-02-13 23:16:00`, `2026-02-13 23:05:40`, `2026-02-13 22:50:38`, `2026-02-13 22:35:21` |
| 40 | `ledger_name` | string | [`ledger_name`](#ods-table-fee-transactions) | 台号名称,实际展示给员工/顾客看的桌台编号 | 枚举值: `A15`, `A4`, `TV`, `S4`, `A3`, `A1`, `A9`, `A17` |
| 41 | `ledger_start_time` | string | [`ledger_start_time`](#ods-table-fee-transactions) | 台账上的计费起始时间 | 枚举值: `2026-02-13 22:15:53`, `2026-02-13 22:59:55`, `2026-02-13 21:35:59`, `2026-02-13 22:04:53`, `2026-02-13 21:16:00`, `2026-02-13 22:05:40`, `2026-02-13 21:55:23`, `2026-02-13 20:35:21` |
| 42 | `ledger_status` | integer | [`ledger_status`](#ods-table-fee-transactions) | 来自 JSON 导出的原始字段,用于保留业务取值 | 示例: `1` |
| 43 | `ledger_unit_price` | number | [`ledger_unit_price`](#ods-table-fee-transactions) | 台费结算时设置的 每小时单价/计费单价 | 枚举值: `48.0`, `68.0`, `188.0`, `58.0`, `398.0`, `98.0`, `158.0`, `100.0` |
| 44 | `member_discount_amount` | number | [`member_discount_amount`](#ods-table-fee-transactions) | 由会员权益产生的优惠金额,例如会员折扣、会员价等 | 枚举值: `0.0`, `163.84`, `134.3`, `286.6`, `681.58`, `158.74` |
| 45 | `member_id` | integer | [`member_id`](#ods-table-fee-transactions) | 门店/租户内的会员 ID | 枚举值: `0`, `2799207359858437`, `2799207406946053`, `2799207522600709`, `2799207117129477`, `2799207133021957`, `2849995548625861`, `2799212845565701` |
| 46 | `mgmt_fee` | number | [`mgmt_fee`](#ods-table-fee-transactions) | 管理费字段,用于未来支持“台费附加管理费/服务费”的功能 | 示例: `0.0` |
| 47 | `operator_id` | integer | [`operator_id`](#ods-table-fee-transactions) | 操作员 ID负责开台/结账的员工账号 ID | 示例: `2790687322443013` |
| 48 | `operator_name` | string | [`operator_name`](#ods-table-fee-transactions) | 操作员姓名(冗余字段),便于直接阅读,不必再联表员工档案 | 示例: `收银员:郑丽珊` |
| 49 | `order_consumption_type` | integer | [`order_consumption_type`](#ods-table-fee-transactions) | 订单消费类型 | 枚举值: `3`, `2`, `1` |
| 50 | `order_pay_id` | integer | [`order_pay_id`](#ods-table-fee-transactions) | 订单支付记录 ID | 示例: `0` |
| 51 | `order_settle_id` | integer | [`order_settle_id`](#ods-table-fee-transactions) | 结算单号/结账 ID对应一次结账操作 | 枚举值: `3093859276196037`, `3093855537596549`, `3093843703564549`, `3093804233967877`, `3093800338802821`, `3093793847478597`, `3093774959741061`, `3093761316341957` |
| 52 | `order_trade_no` | integer | [`order_trade_no`](#ods-table-fee-transactions) | 订单交易号,是整笔订单的主编号 | 枚举值: `3093740766775621`, `3093784062036101`, `3093701555882181`, `3093729955563653`, `3093681905567877`, `3093730735376517`, `3093720617519301`, `3093641948924229` |
| 53 | `real_table_charge_money` | number | [`real_table_charge_money`](#ods-table-fee-transactions) | 台费中实际向顾客收取的金额(现金/实付维度,未含券方承担或内部调账的那一部分) | 枚举值: `0.0`, `503.55`, `42.28`, `48.67`, `24.29`, `66.14`, `49.97`, `24.44` |
| 54 | `real_table_use_seconds` | integer | [`real_table_use_seconds`](#ods-table-fee-transactions) | 实际使用的总秒数(系统真实统计的使用时长) | 枚举值: `7200`, `3600`, `8674`, `3315`, `12053`, `7055`, `3171`, `3651` |
| 55 | `real_service_money` | number | [`real_service_money`](#ods-table-fee-transactions) | 实际服务费金额 | 示例: `0.0` |
| 56 | `salesman_name` | string | [`salesman_name`](#ods-table-fee-transactions) | 业务员/营业员姓名,如果台费有单独提成员工,这里记录归属人 | |
| 57 | `salesman_org_id` | integer | [`salesman_org_id`](#ods-table-fee-transactions) | 营业员所属机构/部门 ID | 示例: `0` |
| 58 | `salesman_user_id` | integer | [`salesman_user_id`](#ods-table-fee-transactions) | 营业员的用户 ID与 salesman_name 搭配) | 示例: `0` |
| 59 | `service_money` | number | [`service_money`](#ods-table-fee-transactions) | 门店用于记录“服务费/成本/分成金额”的字段,类似助教流水里的 service_money | 示例: `0.0` |
| 60 | `site_id` | integer | [`site_id`](#ods-table-fee-transactions) | 门店 ID本次数据全部来自同一门店朗朗桌球 | 示例: `2790685415443269` |
| 61 | `site_table_area_id` | integer | [`site_table_area_id`](#ods-table-fee-transactions) | 门店内“台桌区域” ID站在门店物理布局的角度 | 枚举值: `2791963794329671`, `2791963864273029`, `2791963836207173`, `2791963855982661`, `2791963807682693`, `2791963816579205`, `2791963887030341`, `2956246442462533` |
| 62 | `site_table_area_name` | string | [`site_table_area_name`](#ods-table-fee-transactions) | 台桌区域的名称,用于门店表现和区域统计 | 枚举值: `A区`, `TV台`, `斯诺克区`, `K包`, `B区`, `C区`, `麻将房`, `发财` |
| 63 | `site_table_id` | integer | [`site_table_id`](#ods-table-fee-transactions) | 球台 ID | 枚举值: `2793003506815045`, `2793001904918661`, `2793022937911365`, `2793020260044869`, `2793001695301765`, `2791964216463493`, `2793002980429893`, `2793003705192517` |
| 64 | `start_use_time` | string | [`start_use_time`](#ods-table-fee-transactions) | 台开始使用的时间(实际开台时间) | 枚举值: `2026-02-13 22:15:53`, `2026-02-13 22:59:55`, `2026-02-13 21:35:59`, `2026-02-13 22:04:53`, `2026-02-13 21:16:00`, `2026-02-13 22:05:40`, `2026-02-13 21:55:23`, `2026-02-13 20:35:21` |
| 65 | `tenant_id` | integer | [`tenant_id`](#ods-table-fee-transactions) | 租户/品牌 ID | 示例: `2790683160709957` |
| 66 | `tenant_table_area_id` | integer | [`tenant_table_area_id`](#ods-table-fee-transactions) | 租户维度的台桌区域 ID品牌层面的同一类区域 | 枚举值: `2791960001957765`, `2791962068946821`, `2791961347968901`, `2791961709907845`, `2791960521691013`, `2791960850435973`, `2791962314215301`, `2956244810877893` |
| 67 | `used_card_amount` | number | [`used_card_amount`](#ods-table-fee-transactions) | 由储值卡、次卡等“卡内余额”抵扣的金额 | 示例: `0.0` |
<a id="ods-table-fee-transactions"></a>
#### ODS 表结构 — ods.table_fee_transactions [🔗 API](#api-table-fee-transactions)
共 47 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `id` | bigint | [`siteProfile.id`](#api-table-fee-transactions) | [`dwd_table_fee_log.table_fee_log_id`](#dwd-dwd-table-fee-log), [`dwd_table_fee_log_ex.table_fee_log_id`](#dwd-dwd-table-fee-log-ex) | 台费流水记录主键(事实表主键) |
| 2 | `tenant_id` | bigint | [`siteProfile.tenant_id`](#api-table-fee-transactions) | [`dwd_table_fee_log.tenant_id`](#dwd-dwd-table-fee-log) | 租户/品牌 ID |
| 3 | `site_id` | bigint | [`site_id`](#api-table-fee-transactions) | [`dim_site.site_id`](#dwd-dim-site), [`dim_site_ex.site_id`](#dwd-dim-site-ex), [`dwd_table_fee_log.site_id`](#dwd-dwd-table-fee-log) | 门店 ID本次数据全部来自同一门店朗朗桌球 |
| 4 | `siteprofile` | jsonb | — | — | (待补充) |
| 5 | `site_table_id` | bigint | [`site_table_id`](#api-table-fee-transactions) | [`dwd_table_fee_log.site_table_id`](#dwd-dwd-table-fee-log) | 球台 ID |
| 6 | `site_table_area_id` | bigint | [`site_table_area_id`](#api-table-fee-transactions) | [`dwd_table_fee_log.site_table_area_id`](#dwd-dwd-table-fee-log) | 门店内“台桌区域” ID站在门店物理布局的角度 |
| 7 | `site_table_area_name` | text | [`site_table_area_name`](#api-table-fee-transactions) | [`dwd_table_fee_log.site_table_area_name`](#dwd-dwd-table-fee-log) | 台桌区域的名称,用于门店表现和区域统计 |
| 8 | `tenant_table_area_id` | bigint | [`tenant_table_area_id`](#api-table-fee-transactions) | [`dwd_table_fee_log.tenant_table_area_id`](#dwd-dwd-table-fee-log) | 租户维度的台桌区域 ID品牌层面的同一类区域 |
| 9 | `order_trade_no` | text | [`order_trade_no`](#api-table-fee-transactions) | [`dwd_table_fee_log.order_trade_no`](#dwd-dwd-table-fee-log) | 订单交易号,是整笔订单的主编号 |
| 10 | `order_pay_id` | bigint | [`order_pay_id`](#api-table-fee-transactions) | [`dwd_table_fee_log.order_pay_id`](#dwd-dwd-table-fee-log) | 订单支付记录 ID |
| 11 | `order_settle_id` | bigint | [`order_settle_id`](#api-table-fee-transactions) | [`dwd_table_fee_log.order_settle_id`](#dwd-dwd-table-fee-log) | 结算单号/结账 ID对应一次结账操作 |
| 12 | `ledger_name` | text | [`ledger_name`](#api-table-fee-transactions) | [`dwd_table_fee_log.ledger_name`](#dwd-dwd-table-fee-log) | 台号名称,实际展示给员工/顾客看的桌台编号 |
| 13 | `ledger_amount` | numeric | [`ledger_amount`](#api-table-fee-transactions) | [`dwd_table_fee_log.ledger_amount`](#dwd-dwd-table-fee-log) | 按单价与计费时长计算出的原始应收台费金额 |
| 14 | `ledger_count` | numeric | [`ledger_count`](#api-table-fee-transactions) | [`dwd_table_fee_log.ledger_count`](#dwd-dwd-table-fee-log) | 台账记录的计费秒数,计费用秒数(应收时长) |
| 15 | `ledger_unit_price` | numeric | [`ledger_unit_price`](#api-table-fee-transactions) | [`dwd_table_fee_log.ledger_unit_price`](#dwd-dwd-table-fee-log) | 台费结算时设置的 每小时单价/计费单价 |
| 16 | `ledger_status` | integer | [`ledger_status`](#api-table-fee-transactions) | [`dwd_table_fee_log.ledger_status`](#dwd-dwd-table-fee-log) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 17 | `ledger_start_time` | timestamp without time zone | [`ledger_start_time`](#api-table-fee-transactions) | [`dwd_table_fee_log_ex.ledger_start_time`](#dwd-dwd-table-fee-log-ex) | 台账上的计费起始时间 |
| 18 | `ledger_end_time` | timestamp without time zone | [`ledger_end_time`](#api-table-fee-transactions) | [`dwd_table_fee_log.ledger_end_time`](#dwd-dwd-table-fee-log) | 台账上的计费结束时间 |
| 19 | `start_use_time` | timestamp without time zone | [`start_use_time`](#api-table-fee-transactions) | [`dwd_table_fee_log.start_use_time`](#dwd-dwd-table-fee-log) | 台开始使用的时间(实际开台时间) |
| 20 | `last_use_time` | timestamp without time zone | [`last_use_time`](#api-table-fee-transactions) | [`dwd_table_fee_log_ex.last_use_time`](#dwd-dwd-table-fee-log-ex) | 最后使用/操作时间 |
| 21 | `real_table_use_seconds` | integer | [`real_table_use_seconds`](#api-table-fee-transactions) | [`dwd_table_fee_log.real_table_use_seconds`](#dwd-dwd-table-fee-log) | 实际使用的总秒数(系统真实统计的使用时长) |
| 22 | `real_table_charge_money` | numeric | [`real_table_charge_money`](#api-table-fee-transactions) | [`dwd_table_fee_log.real_table_charge_money`](#dwd-dwd-table-fee-log) | 台费中实际向顾客收取的金额(现金/实付维度,未含券方承担或内部调账的那一部分) |
| 23 | `add_clock_seconds` | integer | [`add_clock_seconds`](#api-table-fee-transactions) | [`dwd_table_fee_log.add_clock_seconds`](#dwd-dwd-table-fee-log) | 加钟秒数,在原有使用基础上追加的时长 |
| 24 | `adjust_amount` | numeric | [`adjust_amount`](#api-table-fee-transactions) | [`dwd_table_fee_log.adjust_amount`](#dwd-dwd-table-fee-log) | 调整金额/调账金额,用于将台费金额转移或冲减到其它项目,或手工调整 |
| 25 | `coupon_promotion_amount` | numeric | [`coupon_promotion_amount`](#api-table-fee-transactions) | [`dwd_table_fee_log.coupon_promotion_amount`](#dwd-dwd-table-fee-log) | 由优惠券/活动/团购(平台/门店促销)承担的优惠金额,直接抵扣在台费上 |
| 26 | `member_discount_amount` | numeric | [`member_discount_amount`](#api-table-fee-transactions) | [`dwd_table_fee_log.member_discount_amount`](#dwd-dwd-table-fee-log) | 由会员权益产生的优惠金额,例如会员折扣、会员价等 |
| 27 | `used_card_amount` | numeric | [`used_card_amount`](#api-table-fee-transactions) | [`dwd_table_fee_log_ex.used_card_amount`](#dwd-dwd-table-fee-log-ex) | 由储值卡、次卡等“卡内余额”抵扣的金额 |
| 28 | `mgmt_fee` | numeric | [`mgmt_fee`](#api-table-fee-transactions) | [`dwd_table_fee_log_ex.mgmt_fee`](#dwd-dwd-table-fee-log-ex) | 管理费字段,用于未来支持“台费附加管理费/服务费”的功能 |
| 29 | `service_money` | numeric | [`service_money`](#api-table-fee-transactions) | [`dwd_table_fee_log_ex.service_money`](#dwd-dwd-table-fee-log-ex) | 门店用于记录“服务费/成本/分成金额”的字段,类似助教流水里的 service_money |
| 30 | `fee_total` | numeric | [`fee_total`](#api-table-fee-transactions) | [`dwd_table_fee_log_ex.fee_total`](#dwd-dwd-table-fee-log-ex) | 各种附加费用(如管理费、服务费)合计值 |
| 31 | `is_single_order` | integer | [`is_single_order`](#api-table-fee-transactions) | [`dwd_table_fee_log.is_single_order`](#dwd-dwd-table-fee-log) | 布尔/开关字段,用于表示权限、可用性或状态开关 |
| 32 | `is_delete` | integer | [`is_delete`](#api-table-fee-transactions) | [`dwd_table_fee_log.is_delete`](#dwd-dwd-table-fee-log) | 逻辑删除标记0=否1=是) |
| 33 | `member_id` | bigint | [`member_id`](#api-table-fee-transactions) | [`dwd_table_fee_log.member_id`](#dwd-dwd-table-fee-log) | 门店/租户内的会员 ID |
| 34 | `operator_id` | bigint | [`operator_id`](#api-table-fee-transactions) | [`dwd_table_fee_log_ex.operator_id`](#dwd-dwd-table-fee-log-ex) | 操作员 ID负责开台/结账的员工账号 ID |
| 35 | `operator_name` | text | [`operator_name`](#api-table-fee-transactions) | [`dwd_table_fee_log_ex.operator_name`](#dwd-dwd-table-fee-log-ex) | 操作员姓名(冗余字段),便于直接阅读,不必再联表员工档案 |
| 36 | `salesman_name` | text | [`salesman_name`](#api-table-fee-transactions) | [`dwd_table_fee_log_ex.salesman_name`](#dwd-dwd-table-fee-log-ex) | 业务员/营业员姓名,如果台费有单独提成员工,这里记录归属人 |
| 37 | `salesman_org_id` | bigint | [`salesman_org_id`](#api-table-fee-transactions) | [`dwd_table_fee_log_ex.salesman_org_id`](#dwd-dwd-table-fee-log-ex) | 营业员所属机构/部门 ID |
| 38 | `salesman_user_id` | bigint | [`salesman_user_id`](#api-table-fee-transactions) | [`dwd_table_fee_log_ex.salesman_user_id`](#dwd-dwd-table-fee-log-ex) | 营业员的用户 ID与 salesman_name 搭配) |
| 39 | `create_time` | timestamp without time zone | [`create_time`](#api-table-fee-transactions) | [`dwd_table_fee_log.create_time`](#dwd-dwd-table-fee-log) | 这条台费流水记录的创建时间,通常接近结账时间 |
| 40 | `activity_discount_amount` | numeric | [`activity_discount_amount`](#api-table-fee-transactions) | [`dwd_table_fee_log.activity_discount_amount`](#dwd-dwd-table-fee-log) | 活动折扣金额 |
| 41 | `order_consumption_type` | integer | [`order_consumption_type`](#api-table-fee-transactions) | [`dwd_table_fee_log_ex.order_consumption_type`](#dwd-dwd-table-fee-log-ex) | 订单消费类型 |
| 42 | `real_service_money` | numeric | [`real_service_money`](#api-table-fee-transactions) | [`dwd_table_fee_log.real_service_money`](#dwd-dwd-table-fee-log) | 实际服务费金额 |
| 43 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
| 44 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 45 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 46 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 47 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
<a id="dwd-dim-site"></a>
#### DWD 表结构 — dwd.dim_site [🔗 ODS](#ods-table-fee-transactions)
共 17 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `site_id` | bigint | [`site_id`](#ods-table-fee-transactions) | 直接 | 门店 ID |
| 2 | `org_id` | bigint | [`siteprofile->>'org_id'`](#ods-table-fee-transactions) | 直接 | 组织机构 ID |
| 3 | `tenant_id` | bigint | [`siteprofile->>'tenant_id'`](#ods-table-fee-transactions) | 直接 | 租户 ID当前值: 2790683160709957 |
| 4 | `shop_name` | text | [`siteprofile->>'shop_name'`](#ods-table-fee-transactions) | 直接 | 门店名称。**当前值**: "朗朗桌球" |
| 5 | `site_label` | text | [`siteprofile->>'site_label'`](#ods-table-fee-transactions) | 直接 | 门店标签。**当前值**: "A" |
| 6 | `full_address` | text | [`siteprofile->>'full_address'`](#ods-table-fee-transactions) | 直接 | 详细地址。**当前值**: "广东省广州市天河区丽阳街12号" |
| 7 | `address` | text | [`siteprofile->>'address'`](#ods-table-fee-transactions) | 直接 | 地址描述。**当前值**: "广东省广州市天河区天园街道朗朗桌球" |
| 8 | `longitude` | numeric | [`siteprofile->>'longitude'`](#ods-table-fee-transactions) | → numeric | 经度。**当前值**: 113.360321 |
| 9 | `latitude` | numeric | [`siteprofile->>'latitude'`](#ods-table-fee-transactions) | → numeric | 纬度。**当前值**: 23.133629 |
| 10 | `tenant_site_region_id` | bigint | [`siteprofile->>'tenant_site_region_id'`](#ods-table-fee-transactions) | 直接 | 区域 ID。**当前值**: 156440100 |
| 11 | `business_tel` | text | [`siteprofile->>'business_tel'`](#ods-table-fee-transactions) | 直接 | 联系电话。**当前值**: "13316068642" |
| 12 | `site_type` | integer | [`siteprofile->>'site_type'`](#ods-table-fee-transactions) | 直接 | 门店类型。**枚举值**: 1(1)=**[待确认]** |
| 13 | `shop_status` | integer | [`siteprofile->>'shop_status'`](#ods-table-fee-transactions) | 直接 | 营业状态。**枚举值**: 1(1)=营业中 **[待确认]** |
| 14 | `scd2_start_time` | timestamp with time zone | — | SCD2 | SCD2 版本生效时间 |
| 15 | `scd2_end_time` | timestamp with time zone | — | SCD2 | SCD2 版本失效时间 |
| 16 | `scd2_is_current` | integer | — | SCD2 | 当前版本标记 |
| 17 | `scd2_version` | integer | — | SCD2 | 版本号 |
<a id="dwd-dim-site-ex"></a>
#### DWD 表结构 — dwd.dim_site_ex [🔗 ODS](#ods-table-fee-transactions)
共 25 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `site_id` | bigint | [`site_id`](#ods-table-fee-transactions) | 直接 | 同名直传 |
| 2 | `avatar` | text | [`siteprofile->>'avatar'`](#ods-table-fee-transactions) | 直接 | JSONB 提取 |
| 3 | `address` | text | [`siteprofile->>'address'`](#ods-table-fee-transactions) | 直接 | JSONB 提取 |
| 4 | `longitude` | numeric | [`siteprofile->>'longitude'`](#ods-table-fee-transactions) | → numeric | JSONB 提取 |
| 5 | `latitude` | numeric | [`siteprofile->>'latitude'`](#ods-table-fee-transactions) | → numeric | JSONB 提取 |
| 6 | `tenant_site_region_id` | bigint | [`siteprofile->>'tenant_site_region_id'`](#ods-table-fee-transactions) | 直接 | JSONB 提取 |
| 7 | `auto_light` | integer | [`siteprofile->>'auto_light'`](#ods-table-fee-transactions) | 直接 | JSONB 提取 |
| 8 | `light_status` | integer | [`siteprofile->>'light_status'`](#ods-table-fee-transactions) | 直接 | JSONB 提取 |
| 9 | `light_type` | integer | [`siteprofile->>'light_type'`](#ods-table-fee-transactions) | 直接 | JSONB 提取 |
| 10 | `light_token` | text | [`siteprofile->>'light_token'`](#ods-table-fee-transactions) | 直接 | JSONB 提取 |
| 11 | `site_type` | integer | [`siteprofile->>'site_type'`](#ods-table-fee-transactions) | 直接 | JSONB 提取 |
| 12 | `site_label` | text | [`siteprofile->>'site_label'`](#ods-table-fee-transactions) | 直接 | JSONB 提取 |
| 13 | `attendance_enabled` | integer | [`siteprofile->>'attendance_enabled'`](#ods-table-fee-transactions) | 直接 | JSONB 提取 |
| 14 | `attendance_distance` | integer | [`siteprofile->>'attendance_distance'`](#ods-table-fee-transactions) | 直接 | JSONB 提取 |
| 15 | `customer_service_qrcode` | text | [`siteprofile->>'customer_service_qrcode'`](#ods-table-fee-transactions) | 直接 | JSONB 提取 |
| 16 | `customer_service_wechat` | text | [`siteprofile->>'customer_service_wechat'`](#ods-table-fee-transactions) | 直接 | JSONB 提取 |
| 17 | `fixed_pay_qrcode` | text | [`siteprofile->>'fixed_pay_qrCode'`](#ods-table-fee-transactions) | 直接 | JSONB 提取 |
| 18 | `prod_env` | text | [`siteprofile->>'prod_env'`](#ods-table-fee-transactions) | 直接 | JSONB 提取 |
| 19 | `shop_status` | integer | [`siteprofile->>'shop_status'`](#ods-table-fee-transactions) | 直接 | JSONB 提取 |
| 20 | `create_time` | timestamp with time zone | [`siteprofile->>'create_time'`](#ods-table-fee-transactions) | → timestamptz | JSONB 提取 |
| 21 | `update_time` | timestamp with time zone | [`siteprofile->>'update_time'`](#ods-table-fee-transactions) | → timestamptz | JSONB 提取 |
| 22 | `scd2_start_time` | timestamp with time zone | — | SCD2 | SCD2 元数据 |
| 23 | `scd2_end_time` | timestamp with time zone | — | SCD2 | SCD2 元数据 |
| 24 | `scd2_is_current` | integer | — | SCD2 | SCD2 元数据 |
| 25 | `scd2_version` | integer | — | SCD2 | SCD2 元数据 |
<a id="dwd-dwd-table-fee-log"></a>
#### DWD 表结构 — dwd.dwd_table_fee_log [🔗 ODS](#ods-table-fee-transactions)
共 29 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `table_fee_log_id` | bigint | [`id`](#ods-table-fee-transactions) | 直接 | 台费流水 ID |
| 2 | `order_trade_no` | bigint | [`order_trade_no`](#ods-table-fee-transactions) | 直接 | 订单号 |
| 3 | `order_settle_id` | bigint | [`order_settle_id`](#ods-table-fee-transactions) | 直接 | 结账单 ID → dwd_settlement_head |
| 4 | `order_pay_id` | bigint | [`order_pay_id`](#ods-table-fee-transactions) | 直接 | 支付单 ID当前数据全为 0 |
| 5 | `tenant_id` | bigint | [`tenant_id`](#ods-table-fee-transactions) | 直接 | 租户 ID |
| 6 | `site_id` | bigint | [`site_id`](#ods-table-fee-transactions) | 直接 | 门店 ID |
| 7 | `site_table_id` | bigint | [`site_table_id`](#ods-table-fee-transactions) | 直接 | 台桌 ID → dim_table |
| 8 | `site_table_area_id` | bigint | [`site_table_area_id`](#ods-table-fee-transactions) | 直接 | 台区 ID |
| 9 | `site_table_area_name` | character varying | [`site_table_area_name`](#ods-table-fee-transactions) | 直接 | 台区名称。**枚举值**: "A区", "B区", "斯诺克区", "麻将房", "C区", "补时长", "VI... |
| 10 | `tenant_table_area_id` | bigint | [`tenant_table_area_id`](#ods-table-fee-transactions) | 直接 | 租户级台区 ID |
| 11 | `member_id` | bigint | [`member_id`](#ods-table-fee-transactions) | 直接 | 会员 ID0=散客,占比约 82.4% |
| 12 | `ledger_name` | character varying | [`ledger_name`](#ods-table-fee-transactions) | 直接 | 台桌名称。**样本值**: "A3", "A5", "A4", "S1", "B5", "M3" 等 |
| 13 | `ledger_unit_price` | numeric | [`ledger_unit_price`](#ods-table-fee-transactions) | 直接 | 单价(元/小时),如 48.00/58.00/68.00 |
| 14 | `ledger_count` | integer | [`ledger_count`](#ods-table-fee-transactions) | 直接 | 计费时长(秒)。**样本值**: 3600=1h, 7200=2h, 10800=3h 等 |
| 15 | `ledger_amount` | numeric | [`ledger_amount`](#ods-table-fee-transactions) | 直接 | 计费金额(元) |
| 16 | `real_table_charge_money` | numeric | [`real_table_charge_money`](#ods-table-fee-transactions) | 直接 | 实收台费金额 |
| 17 | `coupon_promotion_amount` | numeric | [`coupon_promotion_amount`](#ods-table-fee-transactions) | 直接 | 券促销金额 |
| 18 | `member_discount_amount` | numeric | [`member_discount_amount`](#ods-table-fee-transactions) | 直接 | 会员折扣金额 |
| 19 | `adjust_amount` | numeric | [`adjust_amount`](#ods-table-fee-transactions) | 直接 | 调整金额 |
| 20 | `real_table_use_seconds` | integer | [`real_table_use_seconds`](#ods-table-fee-transactions) | 直接 | 实际使用时长(秒) |
| 21 | `add_clock_seconds` | integer | [`add_clock_seconds`](#ods-table-fee-transactions) | 直接 | 加时时长(秒),大多为 0 |
| 22 | `start_use_time` | timestamp with time zone | [`start_use_time`](#ods-table-fee-transactions) | 直接 | 开台时间 |
| 23 | `ledger_end_time` | timestamp with time zone | [`ledger_end_time`](#ods-table-fee-transactions) | 直接 | 结账时间 |
| 24 | `create_time` | timestamp with time zone | [`create_time`](#ods-table-fee-transactions) | 直接 | 记录创建时间 |
| 25 | `ledger_status` | integer | [`ledger_status`](#ods-table-fee-transactions) | 直接 | 账本状态。**枚举值**: 1=已结算 |
| 26 | `is_single_order` | integer | [`is_single_order`](#ods-table-fee-transactions) | 直接 | 是否独立订单。**枚举值**: 0=合并订单, 1=独立订单 |
| 27 | `is_delete` | integer | [`is_delete`](#ods-table-fee-transactions) | 直接 | 删除标记。**枚举值**: 0=未删除 |
| 28 | `activity_discount_amount` | numeric | [`activity_discount_amount`](#ods-table-fee-transactions) | 直接 | 活动折扣金额 |
| 29 | `real_service_money` | numeric | [`real_service_money`](#ods-table-fee-transactions) | 直接 | 实际服务费金额 |
<a id="dwd-dwd-table-fee-log-ex"></a>
#### DWD 表结构 — dwd.dwd_table_fee_log_ex [🔗 ODS](#ods-table-fee-transactions)
共 13 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `table_fee_log_id` | bigint | [`id`](#ods-table-fee-transactions) | 直接 | 字段重命名 |
| 2 | `operator_name` | character varying | [`operator_name`](#ods-table-fee-transactions) | 直接 | 同名直传 |
| 3 | `salesman_name` | character varying | [`salesman_name`](#ods-table-fee-transactions) | 直接 | 名称字段,用于展示与辅助识别 |
| 4 | `used_card_amount` | numeric | [`used_card_amount`](#ods-table-fee-transactions) | 直接 | 同名直传 |
| 5 | `service_money` | numeric | [`service_money`](#ods-table-fee-transactions) | 直接 | 同名直传 |
| 6 | `mgmt_fee` | numeric | [`mgmt_fee`](#ods-table-fee-transactions) | 直接 | 同名直传 |
| 7 | `fee_total` | numeric | [`fee_total`](#ods-table-fee-transactions) | 直接 | 同名直传 |
| 8 | `ledger_start_time` | timestamp with time zone | [`ledger_start_time`](#ods-table-fee-transactions) | 直接 | 同名直传 |
| 9 | `last_use_time` | timestamp with time zone | [`last_use_time`](#ods-table-fee-transactions) | 直接 | 同名直传 |
| 10 | `operator_id` | bigint | [`operator_id`](#ods-table-fee-transactions) | 直接 | 同名直传 |
| 11 | `salesman_user_id` | bigint | [`salesman_user_id`](#ods-table-fee-transactions) | 直接 | 同名直传 |
| 12 | `salesman_org_id` | bigint | [`salesman_org_id`](#ods-table-fee-transactions) | 直接 | 同名直传 |
| 13 | `order_consumption_type` | integer | [`order_consumption_type`](#ods-table-fee-transactions) | 直接 | |
### 3.4 assistant_service_records助教服务流水
- 任务代码:`ODS_ASSISTANT_LEDGER`
- 采样记录数200
- API JSON 字段数91
- ODS 列数71
- DWD 目标表dwd_assistant_service_log, dwd_assistant_service_log_ex
<a id="api-assistant-service-records"></a>
#### API 源字段 — assistant_service_records [🔗 ODS](#ods-assistant-service-records)
已映射 67/91覆盖率 73.6%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `assistantNo` | string | [`assistantno`](#ods-assistant-service-records) | (待补充) | 大小写匹配;枚举值: `15`, `21`, `1`, `2`, `11`, `37`, `9`, `4` |
| 2 | `nickname` | string | [`nickname`](#ods-assistant-service-records) | 助教对外昵称,如“佳怡”“周周”“球球”等 | 枚举值: `七七`, `年糕`, `小燕`, `佳怡`, `千千`, `阿清`, `球球`, `璇子` |
| 3 | `levelName` | string | [`levelname`](#ods-assistant-service-records) | 名称字段,用于展示与辅助识别 | 大小写匹配;枚举值: `中级`, `初级`, `星级`, `高级` |
| 4 | `assistantTeamName` | string | [`assistantteamname`](#ods-assistant-service-records) | 助教团队名称 | 大小写匹配;枚举值: `1组`, `2组` |
| 5 | `assistantName` | string | [`assistantname`](#ods-assistant-service-records) | (待补充) | 大小写匹配;枚举值: `邹绮`, `李艳`, `李小燕`, `陈嘉怡`, `张芳梅`, `梁坚锖`, `胡敏`, `谭璇` |
| 6 | `tableName` | string | [`tablename`](#ods-assistant-service-records) | 名称字段,用于展示与辅助识别 | 大小写匹配;枚举值: `发财`, `666`, `C5`, `S1`, `TV`, `VIP5`, `M5`, `A1` |
| 7 | `siteProfile.id` | integer | [`id`](#ods-assistant-service-records) | 本条助教流水记录的主键 ID流水唯一标识 | 📦 嵌套对象;示例: `2790685415443269` |
| 8 | `siteProfile.org_id` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `2790684179467077` |
| 9 | `siteProfile.shop_name` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `朗朗桌球` |
| 10 | `siteProfile.avatar` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `https://oss.ficoo.vip/admin...` |
| 11 | `siteProfile.business_tel` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `13316068642` |
| 12 | `siteProfile.full_address` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `广东省广州市天河区丽阳街12号` |
| 13 | `siteProfile.address` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `广东省广州市天河区天园街道朗朗桌球` |
| 14 | `siteProfile.longitude` | number | ⚠️ 未映射 | | 📦 嵌套对象;示例: `113.360321` |
| 15 | `siteProfile.latitude` | number | ⚠️ 未映射 | | 📦 嵌套对象;示例: `23.133629` |
| 16 | `siteProfile.tenant_site_region_id` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `156440100` |
| 17 | `siteProfile.tenant_id` | integer | [`tenant_id`](#ods-assistant-service-records) | 租户/品牌 ID | 📦 嵌套对象;示例: `2790683160709957` |
| 18 | `siteProfile.auto_light` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 19 | `siteProfile.attendance_distance` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 20 | `siteProfile.wifi_name` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 21 | `siteProfile.wifi_password` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 22 | `siteProfile.customer_service_qrcode` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 23 | `siteProfile.customer_service_wechat` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 24 | `siteProfile.fixed_pay_qrCode` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 25 | `siteProfile.prod_env` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 26 | `siteProfile.light_status` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 27 | `siteProfile.light_type` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 28 | `siteProfile.site_type` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 29 | `siteProfile.light_token` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 30 | `siteProfile.site_label` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `A` |
| 31 | `siteProfile.attendance_enabled` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 32 | `siteProfile.shop_status` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 33 | `skillName` | string | [`skillname`](#ods-assistant-service-records) | 名称字段,用于展示与辅助识别 | 大小写匹配;枚举值: `基础课`, `附加课`, `包厢课` |
| 34 | `id` | integer | [`id`](#ods-assistant-service-records) | 本条助教流水记录的主键 ID流水唯一标识 | 枚举值: `3092712427276485`, `3091323705821317`, `3091115886692677`, `3090827615127877`, `3090739976226949`, `3090257805610309`, `3090257805102405`, `3089721510071749` |
| 35 | `order_trade_no` | integer | [`order_trade_no`](#ods-assistant-service-records) | 订单交易号,整个订单层面的编号 | 枚举值: `3092230766020741`, `3091018769713413`, `3090862690715909`, `3090742856632581`, `3090601961359621`, `3089320298319045`, `3089223699680453`, `3089415923404101` |
| 36 | `site_id` | integer | [`site_id`](#ods-assistant-service-records) | 门店 ID本数据中指“朗朗桌球”这一家门店 | 示例: `2790685415443269` |
| 37 | `tenant_id` | integer | [`tenant_id`](#ods-assistant-service-records) | 租户/品牌 ID | 示例: `2790683160709957` |
| 38 | `operator_id` | integer | [`operator_id`](#ods-assistant-service-records) | 操作员 ID录入/结算这条助教服务的员工) | 示例: `2790687322443013` |
| 39 | `operator_name` | string | [`operator_name`](#ods-assistant-service-records) | 操作员姓名,与 operator_id 一起使用,便于直接阅读 | 示例: `收银员:郑丽珊` |
| 40 | `order_settle_id` | integer | [`order_settle_id`](#ods-assistant-service-records) | 订单结算 ID相当于“结账单号”的内部主键 | 枚举值: `3092711340902597`, `3091323600603397`, `3091115820353733`, `3090827566926085`, `3090739928746117`, `3090257727786373`, `3089721241816261`, `3089689788959941` |
| 41 | `ledger_name` | string | [`ledger_name`](#ods-assistant-service-records) | 名称字段,用于展示与辅助识别 | 枚举值: `15-七七`, `21-年糕`, `1-小燕`, `2-佳怡`, `11-千千`, `37-阿清`, `9-球球`, `4-璇子` |
| 42 | `ledger_group_name` | string | [`ledger_group_name`](#ods-assistant-service-records) | 助教项目所属的“计费分组/套餐分组名称”,例如某种助教套餐或业务组名称 | |
| 43 | `ledger_unit_price` | number | [`ledger_unit_price`](#ods-assistant-service-records) | 助教服务 标准单价(通常是标价:每小时、每节课的单价) | 枚举值: `108.0`, `98.0`, `138.0`, `190.0`, `118.0` |
| 44 | `ledger_count` | integer | [`ledger_count`](#ods-assistant-service-records) | 台账记录的计时总秒数 | 枚举值: `21544`, `18220`, `15021`, `4682`, `7717`, `47652`, `4774`, `1224` |
| 45 | `ledger_amount` | number | [`ledger_amount`](#ods-assistant-service-records) | 按标准单价计算出来的应收金额(近似 = ledger_unit_price × income_seconds / ... | 枚举值: `646.32`, `546.6`, `408.9`, `127.45`, `210.07`, `1429.56`, `129.96`, `33.32` |
| 46 | `order_pay_id` | integer | [`order_pay_id`](#ods-assistant-service-records) | 关联到“支付记录”的主键 ID | 示例: `0` |
| 47 | `create_time` | string | [`create_time`](#ods-assistant-service-records) | 这条助教流水记录创建时间(一般接近结算/下单时间) | 枚举值: `2026-02-13 04:49:48`, `2026-02-12 05:17:07`, `2026-02-12 01:45:43`, `2026-02-11 20:52:28`, `2026-02-11 19:23:19`, `2026-02-11 11:12:50`, `2026-02-11 02:07:17`, `2026-02-11 01:35:18` |
| 48 | `is_delete` | integer | [`is_delete`](#ods-assistant-service-records) | 逻辑删除标志 | 示例: `0` |
| 49 | `assistant_team_id` | integer | [`assistant_team_id`](#ods-assistant-service-records) | 助教所属团队 ID | 枚举值: `2792011585884037`, `2959085810992645` |
| 50 | `assistant_level` | integer | [`assistant_level`](#ods-assistant-service-records) | 助教等级名称,与 assistant_level 一一对应(初级/中级/高级/助教管理) | 枚举值: `20`, `10`, `40`, `30` |
| 51 | `ledger_start_time` | string | [`ledger_start_time`](#ods-assistant-service-records) | 台账层面记录的开始时间 | 枚举值: `2026-02-12 21:15:08`, `2026-02-12 00:07:00`, `2026-02-11 21:30:41`, `2026-02-11 19:32:32`, `2026-02-11 17:14:22`, `2026-02-10 20:58:18`, `2026-02-10 18:38:59`, `2026-02-10 21:44:36` |
| 52 | `ledger_end_time` | string | [`ledger_end_time`](#ods-assistant-service-records) | 台账层面的结束时间 | 枚举值: `2026-02-13 03:14:14`, `2026-02-12 05:10:40`, `2026-02-12 01:41:02`, `2026-02-11 20:50:34`, `2026-02-11 19:22:59`, `2026-02-11 10:12:32`, `2026-02-10 19:58:33`, `2026-02-10 22:05:00` |
| 53 | `is_single_order` | integer | [`is_single_order`](#ods-assistant-service-records) | 布尔/开关字段,用于表示权限、可用性或状态开关 | 示例: `1` |
| 54 | `order_assistant_id` | integer | [`order_assistant_id`](#ods-assistant-service-records) | 订单中“助教项目明细”的内部 ID | 枚举值: `3092265482209605`, `3091018857580869`, `3090865193781509`, `3090749033924741`, `3090613220428101`, `3089417770093893`, `3089280814894277`, `3089463294922117` |
| 55 | `site_assistant_id` | integer | [`site_assistant_id`](#ods-assistant-service-records) | 门店维度的助教 ID | 枚举值: `2793493699088517`, `2861304461364293`, `2964673443302213`, `2793530479530053`, `2964640248745157`, `2964641017858885`, `2840060593686213`, `2793532503855173` |
| 56 | `order_assistant_type` | integer | [`order_assistant_type`](#ods-assistant-service-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 枚举值: `1`, `2` |
| 57 | `ledger_status` | integer | [`ledger_status`](#ods-assistant-service-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 示例: `1` |
| 58 | `site_table_id` | integer | [`site_table_id`](#ods-assistant-service-records) | 球台 ID | 枚举值: `2956248279567557`, `2793020955840645`, `2793017278582917`, `2793020259897413`, `2793022937911365`, `2793018776735877`, `2793023960731717`, `2791964216463493` |
| 59 | `projected_income` | number | [`projected_income`](#ods-assistant-service-records) | 实际结算计入门店的金额(已经考虑折扣、卡权益、券等后的结果) | 枚举值: `538.5`, `454.5`, `333.33`, `104.0`, `170.67`, `1191.0`, `105.33`, `26.67` |
| 60 | `is_not_responding` | integer | [`is_not_responding`](#ods-assistant-service-records) | 布尔/开关字段,用于表示权限、可用性或状态开关 | 示例: `0` |
| 61 | `income_seconds` | integer | [`income_seconds`](#ods-assistant-service-records) | 计费秒数 / 应计收入对应的时间 | 枚举值: `21540`, `18180`, `15000`, `4680`, `7680`, `47640`, `4740`, `1200` |
| 62 | `user_id` | integer | [`user_id`](#ods-assistant-service-records) | 助教对应的“用户账号 ID”系统级用户 | 枚举值: `2793493698596997`, `2861304460905541`, `2643377426450373`, `2793530479054917`, `2964640248253637`, `2964641017334597`, `2840060593211077`, `2793532503380037` |
| 63 | `trash_applicant_id` | integer | [`trash_applicant_id`](#ods-assistant-service-records) | 提出废除申请的员工 ID通常是操作员/管理员) | 示例: `0` |
| 64 | `trash_applicant_name` | string | [`trash_applicant_name`](#ods-assistant-service-records) | 废除申请人姓名 | |
| 65 | `is_trash` | integer | [`is_trash`](#ods-assistant-service-records) | 布尔/开关字段,用于表示权限、可用性或状态开关 | 示例: `0` |
| 66 | `trash_reason` | string | [`trash_reason`](#ods-assistant-service-records) | 废除原因(文本说明),例如“顾客取消”“录入错误”等 | |
| 67 | `real_use_seconds` | integer | [`real_use_seconds`](#ods-assistant-service-records) | 实际使用时长(秒) | 枚举值: `21544`, `18220`, `15021`, `4683`, `7718`, `47652`, `4774`, `1224` |
| 68 | `real_service_money` | number | [`real_service_money`](#ods-assistant-service-records) | 实际服务费金额 | 示例: `0.0` |
| 69 | `add_clock` | integer | [`add_clock`](#ods-assistant-service-records) | 加钟秒数,即在原有预约/服务基础上临时追加的时长 | 枚举值: `0`, `2820`, `13380`, `14400` |
| 70 | `returns_clock` | integer | [`returns_clock`](#ods-assistant-service-records) | 退钟秒数(取消加钟或提前结束退回的时间) | 示例: `0` |
| 71 | `is_confirm` | integer | [`is_confirm`](#ods-assistant-service-records) | 布尔/开关字段,用于表示权限、可用性或状态开关 | 示例: `2` |
| 72 | `member_discount_amount` | number | [`member_discount_amount`](#ods-assistant-service-records) | 由会员卡折扣产生的优惠金额 | 示例: `0.0` |
| 73 | `manual_discount_amount` | number | [`manual_discount_amount`](#ods-assistant-service-records) | 收银员手动给予的减免金额(人工改价) | 示例: `0.0` |
| 74 | `service_money` | number | [`service_money`](#ods-assistant-service-records) | 用于记录与助教结算的金额(平台预留的“成本/分成”字段) | 示例: `0.0` |
| 75 | `person_org_id` | integer | [`person_org_id`](#ods-assistant-service-records) | 助教所属“人事组织/部门 ID” | 枚举值: `2793493698990213`, `2861304461265989`, `2964673443203909`, `2793530479431749`, `2964640248630469`, `2964641017760581`, `2840060593587909`, `2793532503756869` |
| 76 | `last_use_time` | string | [`last_use_time`](#ods-assistant-service-records) | 最后一次使用(实际服务)时间 | 枚举值: `2026-02-13 03:14:14`, `2026-02-12 05:10:40`, `2026-02-12 01:41:02`, `2026-02-11 20:50:35`, `2026-02-11 19:23:00`, `2026-02-11 10:12:32`, `2026-02-10 19:58:33`, `2026-02-10 22:05:00` |
| 77 | `salesman_name` | string | [`salesman_name`](#ods-assistant-service-records) | 关联的“营业员/销售员姓名”,用于提成归属 | |
| 78 | `salesman_user_id` | integer | [`salesman_user_id`](#ods-assistant-service-records) | 营业员用户 ID | 示例: `0` |
| 79 | `salesman_org_id` | integer | [`salesman_org_id`](#ods-assistant-service-records) | 营业员所属组织/部门 ID | 示例: `0` |
| 80 | `coupon_deduct_money` | number | [`coupon_deduct_money`](#ods-assistant-service-records) | 由“优惠券/代金券/团购券”等 直接抵扣到这条助教服务上的金额 | 示例: `0.0` |
| 81 | `skill_id` | integer | [`skill_id`](#ods-assistant-service-records) | 助教服务“课程/技能”ID | 枚举值: `2790683529513797`, `2790683529513798`, `3039912271463941` |
| 82 | `start_use_time` | string | [`start_use_time`](#ods-assistant-service-records) | 助教实际开始服务时间 | 枚举值: `2026-02-12 21:15:08`, `2026-02-12 00:07:00`, `2026-02-11 21:30:41`, `2026-02-11 19:32:32`, `2026-02-11 17:14:22`, `2026-02-10 20:58:18`, `2026-02-10 18:38:59`, `2026-02-10 21:44:36` |
| 83 | `tenant_member_id` | integer | [`tenant_member_id`](#ods-assistant-service-records) | 商户维度会员 ID门店/品牌内的会员主键) | 枚举值: `2799207522600709`, `2799207359858437`, `2799207363643141`, `0`, `2969257129938053`, `3048238811858693`, `2799207124305669`, `2799207406946053` |
| 84 | `system_member_id` | integer | [`system_member_id`](#ods-assistant-service-records) | 系统级会员 ID全集团统一 ID | 枚举值: `2799207521568517`, `2799207358777093`, `2485293902352645`, `0`, `2644610908900421`, `3048238810220293`, `2799207123224325`, `2799207405995781` |
| 85 | `skill_grade` | integer | [`skill_grade`](#ods-assistant-service-records) | 顾客对“技能表现”的评分(整数或打分等级) | 示例: `0` |
| 86 | `service_grade` | integer | [`service_grade`](#ods-assistant-service-records) | 顾客对“服务态度”的评分 | 示例: `0` |
| 87 | `composite_grade` | number | [`composite_grade`](#ods-assistant-service-records) | 综合评分(例如技能+服务加权后的平均分),当前数据没有实际评分 | 示例: `0.0` |
| 88 | `sum_grade` | number | [`sum_grade`](#ods-assistant-service-records) | 累计评分总和(可能用于计算平均分),当前为 0 | 示例: `0.0` |
| 89 | `get_grade_times` | integer | [`get_grade_times`](#ods-assistant-service-records) | 该条记录对应的评价次数(或该助教被评价次数快照) | 示例: `0` |
| 90 | `grade_status` | integer | [`grade_status`](#ods-assistant-service-records) | 1 = 未评价/正常 | 示例: `1` |
| 91 | `composite_grade_time` | string | [`composite_grade_time`](#ods-assistant-service-records) | 助教服务所在的球台名称(如 "A17"、"S1" | 示例: `0001-01-01 00:00:00` |
<a id="ods-assistant-service-records"></a>
#### ODS 表结构 — ods.assistant_service_records [🔗 API](#api-assistant-service-records)
共 71 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `id` | bigint | [`siteProfile.id`](#api-assistant-service-records) | [`dwd_assistant_service_log.assistant_service_id`](#dwd-dwd-assistant-service-log), [`dwd_assistant_service_log_ex.assistant_service_id`](#dwd-dwd-assistant-service-log-ex) | 本条助教流水记录的主键 ID流水唯一标识 |
| 2 | `tenant_id` | bigint | [`siteProfile.tenant_id`](#api-assistant-service-records) | [`dwd_assistant_service_log.tenant_id`](#dwd-dwd-assistant-service-log) | 租户/品牌 ID |
| 3 | `site_id` | bigint | [`site_id`](#api-assistant-service-records) | [`dwd_assistant_service_log.site_id`](#dwd-dwd-assistant-service-log) | 门店 ID本数据中指“朗朗桌球”这一家门店 |
| 4 | `siteprofile` | jsonb | — | — | (待补充) |
| 5 | `site_table_id` | bigint | [`site_table_id`](#api-assistant-service-records) | [`dwd_assistant_service_log.site_table_id`](#dwd-dwd-assistant-service-log) | 球台 ID |
| 6 | `order_settle_id` | bigint | [`order_settle_id`](#api-assistant-service-records) | [`dwd_assistant_service_log.order_settle_id`](#dwd-dwd-assistant-service-log) | 订单结算 ID相当于“结账单号”的内部主键 |
| 7 | `order_trade_no` | text | [`order_trade_no`](#api-assistant-service-records) | [`dwd_assistant_service_log.order_trade_no`](#dwd-dwd-assistant-service-log) | 订单交易号,整个订单层面的编号 |
| 8 | `order_pay_id` | bigint | [`order_pay_id`](#api-assistant-service-records) | [`dwd_assistant_service_log.order_pay_id`](#dwd-dwd-assistant-service-log) | 关联到“支付记录”的主键 ID |
| 9 | `order_assistant_id` | bigint | [`order_assistant_id`](#api-assistant-service-records) | [`dwd_assistant_service_log.order_assistant_id`](#dwd-dwd-assistant-service-log), [`dwd_assistant_service_log.site_assistant_id`](#dwd-dwd-assistant-service-log) | 订单中“助教项目明细”的内部 ID |
| 10 | `order_assistant_type` | integer | [`order_assistant_type`](#api-assistant-service-records) | [`dwd_assistant_service_log.order_assistant_type`](#dwd-dwd-assistant-service-log) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 11 | `assistantname` | text | [`assistantName`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.assistant_name`](#dwd-dwd-assistant-service-log-ex) | (待补充) |
| 12 | `assistantno` | text | [`assistantNo`](#api-assistant-service-records) | [`dwd_assistant_service_log.assistant_no`](#dwd-dwd-assistant-service-log) | (待补充) |
| 13 | `assistant_level` | text | [`assistant_level`](#api-assistant-service-records) | [`dwd_assistant_service_log.assistant_level`](#dwd-dwd-assistant-service-log) | 助教等级名称,与 assistant_level 一一对应(初级/中级/高级/助教管理) |
| 14 | `levelname` | text | [`levelName`](#api-assistant-service-records) | [`dwd_assistant_service_log.level_name`](#dwd-dwd-assistant-service-log) | 名称字段,用于展示与辅助识别 |
| 15 | `site_assistant_id` | bigint | [`site_assistant_id`](#api-assistant-service-records) | — | 门店维度的助教 ID |
| 16 | `skill_id` | bigint | [`skill_id`](#api-assistant-service-records) | [`dwd_assistant_service_log.skill_id`](#dwd-dwd-assistant-service-log) | 助教服务“课程/技能”ID |
| 17 | `skillname` | text | [`skillName`](#api-assistant-service-records) | [`dwd_assistant_service_log.skill_name`](#dwd-dwd-assistant-service-log) | 名称字段,用于展示与辅助识别 |
| 18 | `system_member_id` | bigint | [`system_member_id`](#api-assistant-service-records) | [`dwd_assistant_service_log.system_member_id`](#dwd-dwd-assistant-service-log) | 系统级会员 ID全集团统一 ID |
| 19 | `tablename` | text | [`tableName`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.table_name`](#dwd-dwd-assistant-service-log-ex) | 名称字段,用于展示与辅助识别 |
| 20 | `tenant_member_id` | bigint | [`tenant_member_id`](#api-assistant-service-records) | [`dwd_assistant_service_log.tenant_member_id`](#dwd-dwd-assistant-service-log) | 商户维度会员 ID门店/品牌内的会员主键) |
| 21 | `user_id` | bigint | [`user_id`](#api-assistant-service-records) | [`dwd_assistant_service_log.user_id`](#dwd-dwd-assistant-service-log) | 助教对应的“用户账号 ID”系统级用户 |
| 22 | `assistant_team_id` | bigint | [`assistant_team_id`](#api-assistant-service-records) | [`dwd_assistant_service_log.assistant_team_id`](#dwd-dwd-assistant-service-log) | 助教所属团队 ID |
| 23 | `nickname` | text | [`nickname`](#api-assistant-service-records) | [`dwd_assistant_service_log.nickname`](#dwd-dwd-assistant-service-log) | 助教对外昵称,如“佳怡”“周周”“球球”等 |
| 24 | `ledger_name` | text | [`ledger_name`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.ledger_name`](#dwd-dwd-assistant-service-log-ex) | 名称字段,用于展示与辅助识别 |
| 25 | `ledger_group_name` | text | [`ledger_group_name`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.ledger_group_name`](#dwd-dwd-assistant-service-log-ex) | 助教项目所属的“计费分组/套餐分组名称”,例如某种助教套餐或业务组名称 |
| 26 | `ledger_amount` | numeric | [`ledger_amount`](#api-assistant-service-records) | [`dwd_assistant_service_log.ledger_amount`](#dwd-dwd-assistant-service-log) | 按标准单价计算出来的应收金额(近似 = ledger_unit_price × income_seconds / ... |
| 27 | `ledger_count` | numeric | [`ledger_count`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.ledger_count`](#dwd-dwd-assistant-service-log-ex) | 台账记录的计时总秒数 |
| 28 | `ledger_unit_price` | numeric | [`ledger_unit_price`](#api-assistant-service-records) | [`dwd_assistant_service_log.ledger_unit_price`](#dwd-dwd-assistant-service-log) | 助教服务 标准单价(通常是标价:每小时、每节课的单价) |
| 29 | `ledger_status` | integer | [`ledger_status`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.ledger_status`](#dwd-dwd-assistant-service-log-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 30 | `ledger_start_time` | timestamp without time zone | [`ledger_start_time`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.ledger_start_time`](#dwd-dwd-assistant-service-log-ex) | 台账层面记录的开始时间 |
| 31 | `ledger_end_time` | timestamp without time zone | [`ledger_end_time`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.ledger_end_time`](#dwd-dwd-assistant-service-log-ex) | 台账层面的结束时间 |
| 32 | `manual_discount_amount` | numeric | [`manual_discount_amount`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.manual_discount_amount`](#dwd-dwd-assistant-service-log-ex) | 收银员手动给予的减免金额(人工改价) |
| 33 | `member_discount_amount` | numeric | [`member_discount_amount`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.member_discount_amount`](#dwd-dwd-assistant-service-log-ex) | 由会员卡折扣产生的优惠金额 |
| 34 | `coupon_deduct_money` | numeric | [`coupon_deduct_money`](#api-assistant-service-records) | [`dwd_assistant_service_log.coupon_deduct_money`](#dwd-dwd-assistant-service-log) | 由“优惠券/代金券/团购券”等 直接抵扣到这条助教服务上的金额 |
| 35 | `service_money` | numeric | [`service_money`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.service_money`](#dwd-dwd-assistant-service-log-ex) | 用于记录与助教结算的金额(平台预留的“成本/分成”字段) |
| 36 | `projected_income` | numeric | [`projected_income`](#api-assistant-service-records) | [`dwd_assistant_service_log.projected_income`](#dwd-dwd-assistant-service-log) | 实际结算计入门店的金额(已经考虑折扣、卡权益、券等后的结果) |
| 37 | `real_use_seconds` | integer | [`real_use_seconds`](#api-assistant-service-records) | [`dwd_assistant_service_log.real_use_seconds`](#dwd-dwd-assistant-service-log) | 实际使用时长(秒) |
| 38 | `income_seconds` | integer | [`income_seconds`](#api-assistant-service-records) | [`dwd_assistant_service_log.income_seconds`](#dwd-dwd-assistant-service-log) | 计费秒数 / 应计收入对应的时间 |
| 39 | `start_use_time` | timestamp without time zone | [`start_use_time`](#api-assistant-service-records) | [`dwd_assistant_service_log.start_use_time`](#dwd-dwd-assistant-service-log) | 助教实际开始服务时间 |
| 40 | `last_use_time` | timestamp without time zone | [`last_use_time`](#api-assistant-service-records) | [`dwd_assistant_service_log.last_use_time`](#dwd-dwd-assistant-service-log) | 最后一次使用(实际服务)时间 |
| 41 | `create_time` | timestamp without time zone | [`create_time`](#api-assistant-service-records) | [`dwd_assistant_service_log.create_time`](#dwd-dwd-assistant-service-log) | 这条助教流水记录创建时间(一般接近结算/下单时间) |
| 42 | `is_single_order` | integer | [`is_single_order`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.is_single_order`](#dwd-dwd-assistant-service-log-ex) | 布尔/开关字段,用于表示权限、可用性或状态开关 |
| 43 | `is_delete` | integer | [`is_delete`](#api-assistant-service-records) | [`dwd_assistant_service_log.is_delete`](#dwd-dwd-assistant-service-log) | 逻辑删除标志 |
| 44 | `is_trash` | integer | [`is_trash`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.is_trash`](#dwd-dwd-assistant-service-log-ex) | 布尔/开关字段,用于表示权限、可用性或状态开关 |
| 45 | `trash_reason` | text | [`trash_reason`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.trash_reason`](#dwd-dwd-assistant-service-log-ex) | 废除原因(文本说明),例如“顾客取消”“录入错误”等 |
| 46 | `trash_applicant_id` | bigint | [`trash_applicant_id`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.trash_applicant_id`](#dwd-dwd-assistant-service-log-ex) | 提出废除申请的员工 ID通常是操作员/管理员) |
| 47 | `trash_applicant_name` | text | [`trash_applicant_name`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.trash_applicant_name`](#dwd-dwd-assistant-service-log-ex) | 废除申请人姓名 |
| 48 | `operator_id` | bigint | [`operator_id`](#api-assistant-service-records) | — | 操作员 ID录入/结算这条助教服务的员工) |
| 49 | `operator_name` | text | [`operator_name`](#api-assistant-service-records) | — | 操作员姓名,与 operator_id 一起使用,便于直接阅读 |
| 50 | `salesman_name` | text | [`salesman_name`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.salesman_name`](#dwd-dwd-assistant-service-log-ex) | 关联的“营业员/销售员姓名”,用于提成归属 |
| 51 | `salesman_org_id` | bigint | [`salesman_org_id`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.salesman_org_id`](#dwd-dwd-assistant-service-log-ex) | 营业员所属组织/部门 ID |
| 52 | `salesman_user_id` | bigint | [`salesman_user_id`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.salesman_user_id`](#dwd-dwd-assistant-service-log-ex) | 营业员用户 ID |
| 53 | `person_org_id` | bigint | [`person_org_id`](#api-assistant-service-records) | [`dwd_assistant_service_log.person_org_id`](#dwd-dwd-assistant-service-log) | 助教所属“人事组织/部门 ID” |
| 54 | `add_clock` | integer | [`add_clock`](#api-assistant-service-records) | [`dwd_assistant_service_log.add_clock`](#dwd-dwd-assistant-service-log) | 加钟秒数,即在原有预约/服务基础上临时追加的时长 |
| 55 | `returns_clock` | integer | [`returns_clock`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.returns_clock`](#dwd-dwd-assistant-service-log-ex) | 退钟秒数(取消加钟或提前结束退回的时间) |
| 56 | `composite_grade` | numeric | [`composite_grade`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.composite_grade`](#dwd-dwd-assistant-service-log-ex) | 综合评分(例如技能+服务加权后的平均分),当前数据没有实际评分 |
| 57 | `composite_grade_time` | timestamp without time zone | [`composite_grade_time`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.composite_grade_time`](#dwd-dwd-assistant-service-log-ex) | 助教服务所在的球台名称(如 "A17"、"S1" |
| 58 | `skill_grade` | numeric | [`skill_grade`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.skill_grade`](#dwd-dwd-assistant-service-log-ex) | 顾客对“技能表现”的评分(整数或打分等级) |
| 59 | `service_grade` | numeric | [`service_grade`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.service_grade`](#dwd-dwd-assistant-service-log-ex) | 顾客对“服务态度”的评分 |
| 60 | `sum_grade` | numeric | [`sum_grade`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.sum_grade`](#dwd-dwd-assistant-service-log-ex) | 累计评分总和(可能用于计算平均分),当前为 0 |
| 61 | `grade_status` | integer | [`grade_status`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.grade_status`](#dwd-dwd-assistant-service-log-ex) | 1 = 未评价/正常 |
| 62 | `get_grade_times` | integer | [`get_grade_times`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.get_grade_times`](#dwd-dwd-assistant-service-log-ex) | 该条记录对应的评价次数(或该助教被评价次数快照) |
| 63 | `is_not_responding` | integer | [`is_not_responding`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.is_not_responding`](#dwd-dwd-assistant-service-log-ex) | 布尔/开关字段,用于表示权限、可用性或状态开关 |
| 64 | `is_confirm` | integer | [`is_confirm`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.is_confirm`](#dwd-dwd-assistant-service-log-ex) | 布尔/开关字段,用于表示权限、可用性或状态开关 |
| 65 | `assistantteamname` | text | [`assistantTeamName`](#api-assistant-service-records) | [`dwd_assistant_service_log_ex.assistant_team_name`](#dwd-dwd-assistant-service-log-ex) | 助教团队名称 |
| 66 | `real_service_money` | numeric | [`real_service_money`](#api-assistant-service-records) | [`dwd_assistant_service_log.real_service_money`](#dwd-dwd-assistant-service-log) | 实际服务费金额 |
| 67 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
| 68 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 69 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 70 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 71 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
<a id="dwd-dwd-assistant-service-log"></a>
#### DWD 表结构 — dwd.dwd_assistant_service_log [🔗 ODS](#ods-assistant-service-records)
共 33 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `assistant_service_id` | bigint | [`id`](#ods-assistant-service-records) | 直接 | 服务流水 ID |
| 2 | `order_trade_no` | bigint | [`order_trade_no`](#ods-assistant-service-records) | 直接 | 订单号 → dwd_settlement_head |
| 3 | `order_settle_id` | bigint | [`order_settle_id`](#ods-assistant-service-records) | 直接 | 结账单 ID → dwd_settlement_head |
| 4 | `order_pay_id` | bigint | [`order_pay_id`](#ods-assistant-service-records) | 直接 | 支付单 ID当前数据全为 0 |
| 5 | `order_assistant_id` | bigint | [`order_assistant_id`](#ods-assistant-service-records) | 直接 | 订单助教 ID |
| 6 | `order_assistant_type` | integer | [`order_assistant_type`](#ods-assistant-service-records) | 直接 | 服务类型。**枚举值**: 1=基础课 或 包厢课, 2=附加课/激励课 |
| 7 | `tenant_id` | bigint | [`tenant_id`](#ods-assistant-service-records) | 直接 | 租户 ID |
| 8 | `site_id` | bigint | [`site_id`](#ods-assistant-service-records) | 直接 | 门店 ID |
| 9 | `site_table_id` | bigint | [`site_table_id`](#ods-assistant-service-records) | 直接 | 台桌 ID → dim_table0=非台桌服务) |
| 10 | `tenant_member_id` | bigint | [`tenant_member_id`](#ods-assistant-service-records) | 直接 | 会员 ID → dim_member0=散客) |
| 11 | `system_member_id` | bigint | [`system_member_id`](#ods-assistant-service-records) | 直接 | 系统会员 ID0=散客) |
| 12 | `assistant_no` | character varying | [`assistantno`](#ods-assistant-service-records) | 直接 | 助教工号。**样本值**: "2", "9"等 |
| 13 | `nickname` | character varying | [`nickname`](#ods-assistant-service-records) | 直接 | 助教昵称。**样本值**: "佳怡", "婉婉", "七七"等 |
| 14 | `site_assistant_id` | bigint | [`order_assistant_id`](#ods-assistant-service-records) | 直接 | 助教 ID → dim_assistant |
| 15 | `user_id` | bigint | [`user_id`](#ods-assistant-service-records) | 直接 | 助教用户 ID |
| 16 | `assistant_team_id` | bigint | [`assistant_team_id`](#ods-assistant-service-records) | 直接 | 助教团队 ID。**枚举值**: 2792011585884037=1组, 2959085810992645=2组 |
| 17 | `person_org_id` | bigint | [`person_org_id`](#ods-assistant-service-records) | 直接 | 人事组织 ID |
| 18 | `assistant_level` | integer | [`assistant_level`](#ods-assistant-service-records) | 直接 | 助教等级。**枚举值**: 8=助教管理, 10=初级, 20=中级, 30=高级, 40=星级 |
| 19 | `level_name` | character varying | [`levelname`](#ods-assistant-service-records) | 直接 | 等级名称。**枚举值**: "助教管理", "初级", "中级", "高级", "星级" |
| 20 | `skill_id` | bigint | [`skill_id`](#ods-assistant-service-records) | 直接 | 技能 ID **枚举值**: 2790683529513797 = 基础课 , 2790683529513798... |
| 21 | `skill_name` | character varying | [`skillname`](#ods-assistant-service-records) | 直接 | 技能名称。 **枚举值**: "基础课","附加课","包厢课" |
| 22 | `ledger_unit_price` | numeric | [`ledger_unit_price`](#ods-assistant-service-records) | 直接 | 单价(元/小时),**样本值**: 98.00/108.00/190.00 等 |
| 23 | `ledger_amount` | numeric | [`ledger_amount`](#ods-assistant-service-records) | 直接 | 计费金额 |
| 24 | `projected_income` | numeric | [`projected_income`](#ods-assistant-service-records) | 直接 | 预估收入 |
| 25 | `coupon_deduct_money` | numeric | [`coupon_deduct_money`](#ods-assistant-service-records) | 直接 | 券抵扣金额 |
| 26 | `income_seconds` | integer | [`income_seconds`](#ods-assistant-service-records) | 直接 | 计费时长(秒)。常见值: 3600=1h, 7200=2h, 10800=3h |
| 27 | `real_use_seconds` | integer | [`real_use_seconds`](#ods-assistant-service-records) | 直接 | 实际使用时长(秒) |
| 28 | `add_clock` | integer | [`add_clock`](#ods-assistant-service-records) | 直接 | 加时时长(秒),大多为 0 |
| 29 | `create_time` | timestamp with time zone | [`create_time`](#ods-assistant-service-records) | 直接 | 创建时间 |
| 30 | `start_use_time` | timestamp with time zone | [`start_use_time`](#ods-assistant-service-records) | 直接 | 服务开始时间 |
| 31 | `last_use_time` | timestamp with time zone | [`last_use_time`](#ods-assistant-service-records) | 直接 | 服务结束时间 |
| 32 | `is_delete` | integer | [`is_delete`](#ods-assistant-service-records) | 直接 | 删除标记。**枚举值**: 0=未删除 |
| 33 | `real_service_money` | numeric | [`real_service_money`](#ods-assistant-service-records) | 直接 | 实际服务费金额 |
<a id="dwd-dwd-assistant-service-log-ex"></a>
#### DWD 表结构 — dwd.dwd_assistant_service_log_ex [🔗 ODS](#ods-assistant-service-records)
共 31 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `assistant_service_id` | bigint | [`id`](#ods-assistant-service-records) | 直接 | 字段重命名 |
| 2 | `table_name` | character varying | [`tablename`](#ods-assistant-service-records) | 直接 | 字段重命名 |
| 3 | `assistant_name` | character varying | [`assistantname`](#ods-assistant-service-records) | 直接 | 字段重命名 |
| 4 | `ledger_name` | character varying | [`ledger_name`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 5 | `ledger_group_name` | character varying | [`ledger_group_name`](#ods-assistant-service-records) | 直接 | 名称字段,用于展示与辅助识别 |
| 6 | `ledger_count` | integer | [`ledger_count`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 7 | `member_discount_amount` | numeric | [`member_discount_amount`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 8 | `manual_discount_amount` | numeric | [`manual_discount_amount`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 9 | `service_money` | numeric | [`service_money`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 10 | `returns_clock` | integer | [`returns_clock`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 11 | `ledger_start_time` | timestamp with time zone | [`ledger_start_time`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 12 | `ledger_end_time` | timestamp with time zone | [`ledger_end_time`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 13 | `ledger_status` | integer | [`ledger_status`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 14 | `is_confirm` | integer | [`is_confirm`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 15 | `is_single_order` | integer | [`is_single_order`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 16 | `is_not_responding` | integer | [`is_not_responding`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 17 | `is_trash` | integer | [`is_trash`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 18 | `trash_applicant_id` | bigint | [`trash_applicant_id`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 19 | `trash_applicant_name` | character varying | [`trash_applicant_name`](#ods-assistant-service-records) | 直接 | 名称字段,用于展示与辅助识别 |
| 20 | `trash_reason` | character varying | [`trash_reason`](#ods-assistant-service-records) | 直接 | 明细字段,用于记录事实取值 |
| 21 | `salesman_user_id` | bigint | [`salesman_user_id`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 22 | `salesman_name` | character varying | [`salesman_name`](#ods-assistant-service-records) | 直接 | 名称字段,用于展示与辅助识别 |
| 23 | `salesman_org_id` | bigint | [`salesman_org_id`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 24 | `skill_grade` | integer | [`skill_grade`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 25 | `service_grade` | integer | [`service_grade`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 26 | `composite_grade` | numeric | [`composite_grade`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 27 | `sum_grade` | numeric | [`sum_grade`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 28 | `get_grade_times` | integer | [`get_grade_times`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 29 | `grade_status` | integer | [`grade_status`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 30 | `composite_grade_time` | timestamp with time zone | [`composite_grade_time`](#ods-assistant-service-records) | 直接 | 同名直传 |
| 31 | `assistant_team_name` | text | [`assistantteamname`](#ods-assistant-service-records) | 直接 | 字段重命名 |
### 3.5 assistant_cancellation_records助教废除记录
- 任务代码:`ODS_ASSISTANT_ABOLISH`
- 采样记录数79
- API JSON 字段数38
- ODS 列数19
- DWD 目标表dwd_assistant_trash_event, dwd_assistant_trash_event_ex
<a id="api-assistant-cancellation-records"></a>
#### API 源字段 — assistant_cancellation_records [🔗 ODS](#ods-assistant-cancellation-records)
已映射 14/38覆盖率 36.8%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `siteProfile.id` | integer | [`id`](#ods-assistant-cancellation-records) | 本表主键 ID用于唯一标识一条记录 | 📦 嵌套对象;示例: `2790685415443269` |
| 2 | `siteProfile.org_id` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `2790684179467077` |
| 3 | `siteProfile.shop_name` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `朗朗桌球` |
| 4 | `siteProfile.avatar` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `https://oss.ficoo.vip/admin...` |
| 5 | `siteProfile.business_tel` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `13316068642` |
| 6 | `siteProfile.full_address` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `广东省广州市天河区丽阳街12号` |
| 7 | `siteProfile.address` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `广东省广州市天河区天园街道朗朗桌球` |
| 8 | `siteProfile.longitude` | number | ⚠️ 未映射 | | 📦 嵌套对象;示例: `113.360321` |
| 9 | `siteProfile.latitude` | number | ⚠️ 未映射 | | 📦 嵌套对象;示例: `23.133629` |
| 10 | `siteProfile.tenant_site_region_id` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `156440100` |
| 11 | `siteProfile.tenant_id` | integer | [`tenant_id`](#ods-assistant-cancellation-records) | 租户ID | 📦 嵌套对象;示例: `2790683160709957` |
| 12 | `siteProfile.auto_light` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 13 | `siteProfile.attendance_distance` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 14 | `siteProfile.wifi_name` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 15 | `siteProfile.wifi_password` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 16 | `siteProfile.customer_service_qrcode` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 17 | `siteProfile.customer_service_wechat` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 18 | `siteProfile.fixed_pay_qrCode` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 19 | `siteProfile.prod_env` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 20 | `siteProfile.light_status` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 21 | `siteProfile.light_type` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 22 | `siteProfile.site_type` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 23 | `siteProfile.light_token` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 24 | `siteProfile.site_label` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `A` |
| 25 | `siteProfile.attendance_enabled` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 26 | `siteProfile.shop_status` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 27 | `createTime` | string | [`createtime`](#ods-assistant-cancellation-records) | (待补充) | 大小写匹配;枚举值: `2026-01-29 02:47:00`, `2026-01-28 02:19:55`, `2026-01-25 00:27:57`, `2026-01-22 08:15:32`, `2026-01-21 19:20:48`, `2026-01-18 03:55:40`, `2026-01-16 22:13:16`, `2026-01-15 19:40:27` |
| 28 | `id` | integer | [`id`](#ods-assistant-cancellation-records) | 本表主键 ID用于唯一标识一条记录 | 枚举值: `3071358041819077`, `3069915840121925`, `3065559038266181`, `3061771962043973`, `3061771960880709`, `3061771962486341`, `3061771963567685`, `3061010362977861` |
| 29 | `siteId` | integer | [`siteid`](#ods-assistant-cancellation-records) | (待补充) | 大小写匹配;示例: `2790685415443269` |
| 30 | `tableAreaId` | integer | [`tableareaid`](#ods-assistant-cancellation-records) | (待补充) | 大小写匹配;枚举值: `2791963887030341`, `2956246442462533`, `2791963794329671`, `2791963816579205`, `2942056024575749`, `2791963855982661`, `2791963825803397`, `2791963836207173` |
| 31 | `tableId` | integer | [`tableid`](#ods-assistant-cancellation-records) | (待补充) | 大小写匹配;枚举值: `2793023960600645`, `2793023960682565`, `2793023960551493`, `2956248279567557`, `2793003806953541`, `2793017278632069`, `2942056832061125`, `2793022145302597` |
| 32 | `tableArea` | string | [`tablearea`](#ods-assistant-cancellation-records) | (待补充) | 大小写匹配;枚举值: `麻将房`, `发财`, `A区`, `C区`, `M7`, `K包`, `VIP包厢`, `斯诺克区` |
| 33 | `tableName` | string | [`tablename`](#ods-assistant-cancellation-records) | (待补充) | 大小写匹配;枚举值: `M2`, `M4`, `1`, `发财`, `A18`, `C6`, `M7`, `888` |
| 34 | `assistantOn` | string | [`assistanton`](#ods-assistant-cancellation-records) | (待补充) | 大小写匹配;枚举值: `6`, `15`, `4`, `18`, `23`, `9`, `21`, `2` |
| 35 | `assistantName` | string | [`assistantname`](#ods-assistant-cancellation-records) | (待补充) | 大小写匹配;枚举值: `乔西`, `七七`, `璇子`, `涛涛`, `婉婉`, `球球`, `年糕`, `佳怡` |
| 36 | `pdChargeMinutes` | integer | [`pdchargeminutes`](#ods-assistant-cancellation-records) | (待补充) | 大小写匹配;枚举值: `3600`, `3390`, `0`, `4959`, `10800`, `27791`, `555`, `364` |
| 37 | `assistantAbolishAmount` | number | [`assistantabolishamount`](#ods-assistant-cancellation-records) | (待补充) | 大小写匹配;枚举值: `190.0`, `101.7`, `0.0`, `190.1`, `570.0`, `833.73`, `15.11`, `10.92` |
| 38 | `trashReason` | string | [`trashreason`](#ods-assistant-cancellation-records) | (待补充) | 大小写匹配 |
<a id="ods-assistant-cancellation-records"></a>
#### ODS 表结构 — ods.assistant_cancellation_records [🔗 API](#api-assistant-cancellation-records)
共 19 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `id` | bigint | [`siteProfile.id`](#api-assistant-cancellation-records) | [`dwd_assistant_trash_event.assistant_trash_event_id`](#dwd-dwd-assistant-trash-event), [`dwd_assistant_trash_event_ex.assistant_trash_event_id`](#dwd-dwd-assistant-trash-event-ex) | 本表主键 ID用于唯一标识一条记录 |
| 2 | `siteid` | bigint | [`siteId`](#api-assistant-cancellation-records) | [`dwd_assistant_trash_event.site_id`](#dwd-dwd-assistant-trash-event) | (待补充) |
| 3 | `siteprofile` | jsonb | — | — | (待补充) |
| 4 | `assistantname` | text | [`assistantName`](#api-assistant-cancellation-records) | [`dwd_assistant_trash_event.assistant_no`](#dwd-dwd-assistant-trash-event), [`dwd_assistant_trash_event.assistant_name`](#dwd-dwd-assistant-trash-event) | (待补充) |
| 5 | `assistantabolishamount` | numeric | [`assistantAbolishAmount`](#api-assistant-cancellation-records) | [`dwd_assistant_trash_event.abolish_amount`](#dwd-dwd-assistant-trash-event) | (待补充) |
| 6 | `assistanton` | integer | [`assistantOn`](#api-assistant-cancellation-records) | — | (待补充) |
| 7 | `pdchargeminutes` | integer | [`pdChargeMinutes`](#api-assistant-cancellation-records) | [`dwd_assistant_trash_event.charge_minutes_raw`](#dwd-dwd-assistant-trash-event) | (待补充) |
| 8 | `tableareaid` | bigint | [`tableAreaId`](#api-assistant-cancellation-records) | [`dwd_assistant_trash_event.table_area_id`](#dwd-dwd-assistant-trash-event) | (待补充) |
| 9 | `tablearea` | text | [`tableArea`](#api-assistant-cancellation-records) | [`dwd_assistant_trash_event_ex.table_area_name`](#dwd-dwd-assistant-trash-event-ex) | (待补充) |
| 10 | `tableid` | bigint | [`tableId`](#api-assistant-cancellation-records) | [`dwd_assistant_trash_event.table_id`](#dwd-dwd-assistant-trash-event) | (待补充) |
| 11 | `tablename` | text | [`tableName`](#api-assistant-cancellation-records) | [`dwd_assistant_trash_event_ex.table_name`](#dwd-dwd-assistant-trash-event-ex) | (待补充) |
| 12 | `trashreason` | text | [`trashReason`](#api-assistant-cancellation-records) | [`dwd_assistant_trash_event.trash_reason`](#dwd-dwd-assistant-trash-event) | (待补充) |
| 13 | `createtime` | timestamp without time zone | [`createTime`](#api-assistant-cancellation-records) | [`dwd_assistant_trash_event.create_time`](#dwd-dwd-assistant-trash-event) | (待补充) |
| 14 | `tenant_id` | bigint | [`siteProfile.tenant_id`](#api-assistant-cancellation-records) | [`dwd_assistant_trash_event.tenant_id`](#dwd-dwd-assistant-trash-event) | 租户ID |
| 15 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 16 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 17 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 18 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
| 19 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
<a id="dwd-dwd-assistant-trash-event"></a>
#### DWD 表结构 — dwd.dwd_assistant_trash_event [🔗 ODS](#ods-assistant-cancellation-records)
共 11 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `assistant_trash_event_id` | bigint | [`id`](#ods-assistant-cancellation-records) | 直接 | 作废事件 ID |
| 2 | `site_id` | bigint | [`siteid`](#ods-assistant-cancellation-records) | 直接 | 门店 ID |
| 3 | `table_id` | bigint | [`tableid`](#ods-assistant-cancellation-records) | 直接 | 台桌 ID → dim_table |
| 4 | `table_area_id` | bigint | [`tableareaid`](#ods-assistant-cancellation-records) | 直接 | 台区 ID |
| 5 | `assistant_no` | character varying | [`assistantname`](#ods-assistant-cancellation-records) | 直接 | 助教工号/昵称。**样本值**: "七七", "乔西", "球球"等 |
| 6 | `assistant_name` | character varying | [`assistantname`](#ods-assistant-cancellation-records) | 直接 | 助教名称,与 assistant_no 相同 |
| 7 | `charge_minutes_raw` | integer | [`pdchargeminutes`](#ods-assistant-cancellation-records) | 直接 | 原计费时长(秒)。**样本值**: 0, 3600=1h, 10800=3h 等 |
| 8 | `abolish_amount` | numeric | [`assistantabolishamount`](#ods-assistant-cancellation-records) | 直接 | 作废金额(元)。**样本值**: 0.00, 190.00, 570.00 等 |
| 9 | `trash_reason` | character varying | [`trashreason`](#ods-assistant-cancellation-records) | 直接 | 作废原因(当前数据全为 NULL |
| 10 | `create_time` | timestamp with time zone | [`createtime`](#ods-assistant-cancellation-records) | 直接 | 创建时间 |
| 11 | `tenant_id` | bigint | [`tenant_id`](#ods-assistant-cancellation-records) | 直接 | 租户 ID |
<a id="dwd-dwd-assistant-trash-event-ex"></a>
#### DWD 表结构 — dwd.dwd_assistant_trash_event_ex [🔗 ODS](#ods-assistant-cancellation-records)
共 3 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `assistant_trash_event_id` | bigint | [`id`](#ods-assistant-cancellation-records) | 直接 | 字段重命名 |
| 2 | `table_name` | character varying | [`tablename`](#ods-assistant-cancellation-records) | 直接 | 字段重命名 |
| 3 | `table_area_name` | character varying | [`tablearea`](#ods-assistant-cancellation-records) | 直接 | 字段重命名 |
### 3.6 store_goods_sales_records门店商品销售流水
- 任务代码:`ODS_STORE_GOODS_SALES`
- 采样记录数200
- API JSON 字段数51
- ODS 列数56
- DWD 目标表dwd_store_goods_sale, dwd_store_goods_sale_ex
<a id="api-store-goods-sales-records"></a>
#### API 源字段 — store_goods_sales_records [🔗 ODS](#ods-store-goods-sales-records)
已映射 51/51覆盖率 100.0%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `siteId` | integer | [`siteid`](#ods-store-goods-sales-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `0` |
| 2 | `siteName` | string | [`sitename`](#ods-store-goods-sales-records) | 名称字段,用于展示与辅助识别 | 大小写匹配;示例: `朗朗桌球` |
| 3 | `orderGoodsId` | integer | [`ordergoodsid`](#ods-store-goods-sales-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `0` |
| 4 | `openSalesman` | integer | [`opensalesman`](#ods-store-goods-sales-records) | (待补充) | 大小写匹配;示例: `2` |
| 5 | `id` | integer | [`id`](#ods-store-goods-sales-records) | 本条「门店销售流水」记录的主键 ID | 枚举值: `3093864106133701`, `3093855577688325`, `3093844121422150`, `3093844121422149`, `3093844121405766`, `3093844121405765`, `3093844121389382`, `3093844121389381` |
| 6 | `cost_money` | number | [`cost_money`](#ods-store-goods-sales-records) | 本条销售对应的成本金额(以元计) | 枚举值: `0.0`, `0.13`, `0.04`, `0.63`, `0.01`, `0.02` |
| 7 | `coupon_deduct_money` | number | [`coupon_deduct_money`](#ods-store-goods-sales-records) | 被优惠券 / 团购券直接抵扣到这条商品明细上的金额 | 示例: `0.0` |
| 8 | `coupon_share_money` | number | [`coupon_share_money`](#ods-store-goods-sales-records) | 优惠券分摊金额 | 示例: `0.0` |
| 9 | `create_time` | string | [`create_time`](#ods-store-goods-sales-records) | 销售记录创建时间,通常就是结账时间或录入时间 | 枚举值: `2026-02-14 00:21:21`, `2026-02-14 00:12:40`, `2026-02-14 00:01:01`, `2026-02-13 21:56:07`, `2026-02-13 21:50:13`, `2026-02-13 20:43:53`, `2026-02-13 20:42:32`, `2026-02-13 20:35:39` |
| 10 | `discount_money` | number | [`discount_money`](#ods-store-goods-sales-records) | 本条销售明细的「价格优惠金额」,即原价部分被减免掉的金额 | 枚举值: `3.0`, `0.0`, `2.0`, `6.0`, `8.0`, `1.0` |
| 11 | `discount_price` | number | [`discount_price`](#ods-store-goods-sales-records) | 折后单价(元/单位) | 枚举值: `7.0`, `5.0`, `15.0`, `2.0`, `28.0`, `125.0`, `8.0`, `10.0` |
| 12 | `goods_remark` | string | [`goods_remark`](#ods-store-goods-sales-records) | 商品备注/口味说明/特殊说明 | 枚举值: `可乐`, `哇哈哈矿泉水`, `百威235毫升`, `打火机`, `软玉溪`, `东鹏特饮`, `普通扑克`, `雪碧` |
| 13 | `is_delete` | integer | [`is_delete`](#ods-store-goods-sales-records) | 逻辑删除标志 | 示例: `0` |
| 14 | `is_single_order` | integer | [`is_single_order`](#ods-store-goods-sales-records) | 是否单独订单标识 | 示例: `1` |
| 15 | `ledger_amount` | number | [`ledger_amount`](#ods-store-goods-sales-records) | 原始应收金额,公式上接近 ledger_unit_price × ledger_count | 枚举值: `10.0`, `5.0`, `90.0`, `2.0`, `28.0`, `7.0`, `180.0`, `125.0` |
| 16 | `ledger_count` | integer | [`ledger_count`](#ods-store-goods-sales-records) | 销售数量(以 unit 为单位unit 字段在门店商品档案中) | 枚举值: `1`, `2`, `6`, `12`, `4`, `3`, `5` |
| 17 | `ledger_group_name` | string | [`ledger_group_name`](#ods-store-goods-sales-records) | 销售项目所属的「门店内部分组名称」,类似前台菜单分组或大类标签 | 枚举值: `酒水`, `其他`, `香烟`, `零食` |
| 18 | `ledger_name` | string | [`ledger_name`](#ods-store-goods-sales-records) | 销售项目名称(商品名称),例如 “哇哈哈矿泉水”“地道肠”“东方树叶”等 | 枚举值: `哇米诺豆奶`, `可乐`, `哇哈哈矿泉水`, `百威235毫升`, `打火机`, `软玉溪`, `东鹏特饮`, `普通扑克` |
| 19 | `ledger_status` | integer | [`ledger_status`](#ods-store-goods-sales-records) | 销售流水状态 | 示例: `1` |
| 20 | `ledger_unit_price` | number | [`ledger_unit_price`](#ods-store-goods-sales-records) | 商品在该次销售中的「结算单价」(元/单位) | 枚举值: `10.0`, `5.0`, `15.0`, `2.0`, `28.0`, `7.0`, `125.0`, `8.0` |
| 21 | `member_coupon_id` | integer | [`member_coupon_id`](#ods-store-goods-sales-records) | 会员券 ID比如会员专享优惠券 | 示例: `0` |
| 22 | `member_discount_amount` | number | [`member_discount_amount`](#ods-store-goods-sales-records) | 由会员身份(会员折扣)针对这一行商品产生的优惠金额 | 示例: `0.0` |
| 23 | `operator_id` | integer | [`operator_id`](#ods-store-goods-sales-records) | 操作员 ID录入这笔销售的员工 | 示例: `2790687322443013` |
| 24 | `operator_name` | string | [`operator_name`](#ods-store-goods-sales-records) | 操作员姓名,文字冗余 | 示例: `收银员:郑丽珊` |
| 25 | `option_coupon_deduct_money` | number | [`option_coupon_deduct_money`](#ods-store-goods-sales-records) | 由优惠券抵扣“选项价格”的金额 | 示例: `0.0` |
| 26 | `option_member_discount_money` | number | [`option_member_discount_money`](#ods-store-goods-sales-records) | 由会员折扣作用在“选项价格”上的优惠金额 | 示例: `0.0` |
| 27 | `option_price` | number | [`option_price`](#ods-store-goods-sales-records) | 商品选项(规格/加料)的附加价格 | 示例: `0.0` |
| 28 | `option_value_name` | string | [`option_value_name`](#ods-store-goods-sales-records) | 商品选项名称(如规格、口味:大杯/小杯,不加冰等) | |
| 29 | `order_coupon_id` | integer | [`order_coupon_id`](#ods-store-goods-sales-records) | 订单级优惠券 ID | 示例: `0` |
| 30 | `order_goods_id` | integer | [`order_goods_id`](#ods-store-goods-sales-records) | 订单商品明细 ID订单内部的商品行主键 | 枚举值: `3093864075495621`, `3093793750862149`, `3093838483065157`, `3093746072144197`, `3093710576814405`, `3093707437050181`, `3093706719037573`, `3093703198656709` |
| 31 | `order_pay_id` | integer | [`order_pay_id`](#ods-store-goods-sales-records) | 关联支付记录的 ID | 示例: `0` |
| 32 | `order_settle_id` | integer | [`order_settle_id`](#ods-store-goods-sales-records) | 订单结算 ID结账单主键 | 枚举值: `3093864077166789`, `3093855537596549`, `3093843703564549`, `3093721299536133`, `3093715499501701`, `3093650242373957`, `3093648911108293`, `3093642206103749` |
| 33 | `order_trade_no` | integer | [`order_trade_no`](#ods-store-goods-sales-records) | 订单交易号(业务单号) | 枚举值: `3093864074381509`, `3093784062036101`, `3093701555882181`, `3093324364122309`, `3093592572217541`, `3093650239260997`, `3093530699761989`, `3093642203187397` |
| 34 | `package_coupon_id` | integer | [`package_coupon_id`](#ods-store-goods-sales-records) | 套餐券 ID | 示例: `0` |
| 35 | `point_discount_money` | number | [`point_discount_money`](#ods-store-goods-sales-records) | 由积分抵扣的金额(顾客兑换积分抵现金额) | 示例: `0.0` |
| 36 | `point_discount_money_cost` | number | [`point_discount_money_cost`](#ods-store-goods-sales-records) | 积分抵扣对应的“成本金额”(后台核算用),例如按积分成本来计提费用 | 示例: `0.0` |
| 37 | `push_money` | number | [`push_money`](#ods-store-goods-sales-records) | 本条销售对应的提成金额(给营业员/促销员的提成) | 示例: `0.0` |
| 38 | `real_goods_money` | number | [`real_goods_money`](#ods-store-goods-sales-records) | 商品实际入账金额(考虑折扣、可能还会考虑其它抵扣后的实际销售金额) | 枚举值: `7.0`, `10.0`, `5.0`, `90.0`, `2.0`, `28.0`, `180.0`, `125.0` |
| 39 | `returns_number` | integer | [`returns_number`](#ods-store-goods-sales-records) | 退货数量(如果这条明细做了退货,会记录退货数量) | 示例: `0` |
| 40 | `sales_man_org_id` | integer | [`sales_man_org_id`](#ods-store-goods-sales-records) | 营业员所属组织/部门 ID | 示例: `0` |
| 41 | `sales_type` | integer | [`sales_type`](#ods-store-goods-sales-records) | 销售类型 | 示例: `1` |
| 42 | `salesman_name` | string | [`salesman_name`](#ods-store-goods-sales-records) | 营业员姓名(如果有为具体销售员记业绩,则在此填姓名) | |
| 43 | `salesman_role_id` | integer | [`salesman_role_id`](#ods-store-goods-sales-records) | 营业员的系统角色 ID例如某个角色代码表示“销售员” | 示例: `0` |
| 44 | `salesman_user_id` | integer | [`salesman_user_id`](#ods-store-goods-sales-records) | 营业员用户 ID系统账号 ID | 示例: `0` |
| 45 | `site_goods_id` | integer | [`site_goods_id`](#ods-store-goods-sales-records) | 门店商品 ID | 枚举值: `3004536125639493`, `2793026183041093`, `2793026176012357`, `2793026185154629`, `2828836772432837`, `2793025862799429`, `2793026180501573`, `2794695801409669` |
| 46 | `site_id` | integer | [`site_id`](#ods-store-goods-sales-records) | 门店 ID系统主键 | 示例: `2790685415443269` |
| 47 | `site_table_id` | integer | [`site_table_id`](#ods-store-goods-sales-records) | 球台 ID | 枚举值: `0`, `2793001904918661`, `2793022937911365`, `2793022145302597`, `2793020259897413`, `2793016660660357`, `2793003066429509`, `2793001695301765` |
| 48 | `tenant_goods_business_id` | integer | [`tenant_goods_business_id`](#ods-store-goods-sales-records) | 租户级商品「业务大类」ID例如“零食类”“酒水类”等更高维度 | 枚举值: `2790683528317768`, `2793217599407941`, `2790683528317765`, `2791932037238661` |
| 49 | `tenant_goods_category_id` | integer | [`tenant_goods_category_id`](#ods-store-goods-sales-records) | 租户级商品一级分类 ID | 枚举值: `2790683528350540`, `2790683528350541`, `2793218343257925`, `2792063209623429`, `2793236829620037`, `2791948300259205` |
| 50 | `tenant_goods_id` | integer | [`tenant_goods_id`](#ods-store-goods-sales-records) | 租户(品牌)级商品 ID全局商品 ID | 枚举值: `3004531315313413`, `2792138158329733`, `2792115932417925`, `2792039804047237`, `2828836270377733`, `2792102047797125`, `2792126853369733`, `2793228842862405` |
| 51 | `tenant_id` | integer | [`tenant_id`](#ods-store-goods-sales-records) | 租户/品牌 ID | 示例: `2790683160709957` |
<a id="ods-store-goods-sales-records"></a>
#### ODS 表结构 — ods.store_goods_sales_records [🔗 API](#api-store-goods-sales-records)
共 56 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `id` | bigint | [`id`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.store_goods_sale_id`](#dwd-dwd-store-goods-sale), [`dwd_store_goods_sale_ex.store_goods_sale_id`](#dwd-dwd-store-goods-sale-ex) | 本条「门店销售流水」记录的主键 ID |
| 2 | `tenant_id` | bigint | [`tenant_id`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.tenant_id`](#dwd-dwd-store-goods-sale) | 租户/品牌 ID |
| 3 | `site_id` | bigint | [`site_id`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.site_id`](#dwd-dwd-store-goods-sale) | 门店 ID系统主键 |
| 4 | `siteid` | bigint | [`siteId`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.legacy_site_id`](#dwd-dwd-store-goods-sale-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 5 | `sitename` | text | [`siteName`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.site_name`](#dwd-dwd-store-goods-sale-ex) | 名称字段,用于展示与辅助识别 |
| 6 | `site_goods_id` | bigint | [`site_goods_id`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.site_goods_id`](#dwd-dwd-store-goods-sale) | 门店商品 ID |
| 7 | `tenant_goods_id` | bigint | [`tenant_goods_id`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.tenant_goods_id`](#dwd-dwd-store-goods-sale) | 租户(品牌)级商品 ID全局商品 ID |
| 8 | `order_settle_id` | bigint | [`order_settle_id`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.order_settle_id`](#dwd-dwd-store-goods-sale) | 订单结算 ID结账单主键 |
| 9 | `order_trade_no` | text | [`order_trade_no`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.order_trade_no`](#dwd-dwd-store-goods-sale) | 订单交易号(业务单号) |
| 10 | `order_goods_id` | bigint | [`order_goods_id`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.order_goods_id`](#dwd-dwd-store-goods-sale) | 订单商品明细 ID订单内部的商品行主键 |
| 11 | `ordergoodsid` | bigint | [`orderGoodsId`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.legacy_order_goods_id`](#dwd-dwd-store-goods-sale-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 12 | `order_pay_id` | bigint | [`order_pay_id`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.order_pay_id`](#dwd-dwd-store-goods-sale) | 关联支付记录的 ID |
| 13 | `order_coupon_id` | bigint | [`order_coupon_id`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.order_coupon_id`](#dwd-dwd-store-goods-sale-ex) | 订单级优惠券 ID |
| 14 | `ledger_name` | text | [`ledger_name`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.ledger_name`](#dwd-dwd-store-goods-sale) | 销售项目名称(商品名称),例如 “哇哈哈矿泉水”“地道肠”“东方树叶”等 |
| 15 | `ledger_group_name` | text | [`ledger_group_name`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.ledger_group_name`](#dwd-dwd-store-goods-sale) | 销售项目所属的「门店内部分组名称」,类似前台菜单分组或大类标签 |
| 16 | `ledger_amount` | numeric | [`ledger_amount`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.ledger_amount`](#dwd-dwd-store-goods-sale) | 原始应收金额,公式上接近 ledger_unit_price × ledger_count |
| 17 | `ledger_count` | numeric | [`ledger_count`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.ledger_count`](#dwd-dwd-store-goods-sale) | 销售数量(以 unit 为单位unit 字段在门店商品档案中) |
| 18 | `ledger_unit_price` | numeric | [`ledger_unit_price`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.ledger_unit_price`](#dwd-dwd-store-goods-sale) | 商品在该次销售中的「结算单价」(元/单位) |
| 19 | `ledger_status` | integer | [`ledger_status`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.ledger_status`](#dwd-dwd-store-goods-sale) | 销售流水状态 |
| 20 | `discount_money` | numeric | [`discount_money`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.discount_price`](#dwd-dwd-store-goods-sale), [`dwd_store_goods_sale_ex.discount_money`](#dwd-dwd-store-goods-sale-ex) | 本条销售明细的「价格优惠金额」,即原价部分被减免掉的金额 |
| 21 | `discount_price` | numeric | [`discount_price`](#api-store-goods-sales-records) | — | 折后单价(元/单位) |
| 22 | `coupon_deduct_money` | numeric | [`coupon_deduct_money`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.coupon_deduct_money`](#dwd-dwd-store-goods-sale-ex) | 被优惠券 / 团购券直接抵扣到这条商品明细上的金额 |
| 23 | `member_discount_amount` | numeric | [`member_discount_amount`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.member_discount_amount`](#dwd-dwd-store-goods-sale-ex) | 由会员身份(会员折扣)针对这一行商品产生的优惠金额 |
| 24 | `option_coupon_deduct_money` | numeric | [`option_coupon_deduct_money`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.option_coupon_deduct_money`](#dwd-dwd-store-goods-sale-ex) | 由优惠券抵扣“选项价格”的金额 |
| 25 | `option_member_discount_money` | numeric | [`option_member_discount_money`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.option_member_discount_money`](#dwd-dwd-store-goods-sale-ex) | 由会员折扣作用在“选项价格”上的优惠金额 |
| 26 | `point_discount_money` | numeric | [`point_discount_money`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.point_discount_money`](#dwd-dwd-store-goods-sale-ex) | 由积分抵扣的金额(顾客兑换积分抵现金额) |
| 27 | `point_discount_money_cost` | numeric | [`point_discount_money_cost`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.point_discount_money_cost`](#dwd-dwd-store-goods-sale-ex) | 积分抵扣对应的“成本金额”(后台核算用),例如按积分成本来计提费用 |
| 28 | `real_goods_money` | numeric | [`real_goods_money`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.real_goods_money`](#dwd-dwd-store-goods-sale) | 商品实际入账金额(考虑折扣、可能还会考虑其它抵扣后的实际销售金额) |
| 29 | `cost_money` | numeric | [`cost_money`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.cost_money`](#dwd-dwd-store-goods-sale) | 本条销售对应的成本金额(以元计) |
| 30 | `push_money` | numeric | [`push_money`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.push_money`](#dwd-dwd-store-goods-sale-ex) | 本条销售对应的提成金额(给营业员/促销员的提成) |
| 31 | `sales_type` | integer | [`sales_type`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.sales_type`](#dwd-dwd-store-goods-sale-ex) | 销售类型 |
| 32 | `is_single_order` | integer | [`is_single_order`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.is_single_order`](#dwd-dwd-store-goods-sale-ex) | 是否单独订单标识 |
| 33 | `is_delete` | integer | [`is_delete`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.is_delete`](#dwd-dwd-store-goods-sale) | 逻辑删除标志 |
| 34 | `goods_remark` | text | [`goods_remark`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.goods_remark`](#dwd-dwd-store-goods-sale-ex) | 商品备注/口味说明/特殊说明 |
| 35 | `option_price` | numeric | [`option_price`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.option_price`](#dwd-dwd-store-goods-sale-ex) | 商品选项(规格/加料)的附加价格 |
| 36 | `option_value_name` | text | [`option_value_name`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.option_value_name`](#dwd-dwd-store-goods-sale-ex) | 商品选项名称(如规格、口味:大杯/小杯,不加冰等) |
| 37 | `member_coupon_id` | bigint | [`member_coupon_id`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.member_coupon_id`](#dwd-dwd-store-goods-sale-ex) | 会员券 ID比如会员专享优惠券 |
| 38 | `package_coupon_id` | bigint | [`package_coupon_id`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.package_coupon_id`](#dwd-dwd-store-goods-sale-ex) | 套餐券 ID |
| 39 | `sales_man_org_id` | bigint | [`sales_man_org_id`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.salesman_org_id`](#dwd-dwd-store-goods-sale-ex) | 营业员所属组织/部门 ID |
| 40 | `salesman_name` | text | [`salesman_name`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.salesman_name`](#dwd-dwd-store-goods-sale-ex) | 营业员姓名(如果有为具体销售员记业绩,则在此填姓名) |
| 41 | `salesman_role_id` | bigint | [`salesman_role_id`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.salesman_role_id`](#dwd-dwd-store-goods-sale-ex) | 营业员的系统角色 ID例如某个角色代码表示“销售员” |
| 42 | `salesman_user_id` | bigint | [`salesman_user_id`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.salesman_user_id`](#dwd-dwd-store-goods-sale-ex) | 营业员用户 ID系统账号 ID |
| 43 | `operator_id` | bigint | [`operator_id`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.operator_id`](#dwd-dwd-store-goods-sale-ex) | 操作员 ID录入这笔销售的员工 |
| 44 | `operator_name` | text | [`operator_name`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.operator_name`](#dwd-dwd-store-goods-sale-ex) | 操作员姓名,文字冗余 |
| 45 | `opensalesman` | text | [`openSalesman`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.open_salesman_flag`](#dwd-dwd-store-goods-sale-ex) | (待补充) |
| 46 | `returns_number` | integer | [`returns_number`](#api-store-goods-sales-records) | [`dwd_store_goods_sale_ex.returns_number`](#dwd-dwd-store-goods-sale-ex) | 退货数量(如果这条明细做了退货,会记录退货数量) |
| 47 | `site_table_id` | bigint | [`site_table_id`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.site_table_id`](#dwd-dwd-store-goods-sale) | 球台 ID |
| 48 | `tenant_goods_business_id` | bigint | [`tenant_goods_business_id`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.tenant_goods_business_id`](#dwd-dwd-store-goods-sale) | 租户级商品「业务大类」ID例如“零食类”“酒水类”等更高维度 |
| 49 | `tenant_goods_category_id` | bigint | [`tenant_goods_category_id`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.tenant_goods_category_id`](#dwd-dwd-store-goods-sale) | 租户级商品一级分类 ID |
| 50 | `create_time` | timestamp without time zone | [`create_time`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.create_time`](#dwd-dwd-store-goods-sale) | 销售记录创建时间,通常就是结账时间或录入时间 |
| 51 | `coupon_share_money` | numeric | [`coupon_share_money`](#api-store-goods-sales-records) | [`dwd_store_goods_sale.coupon_share_money`](#dwd-dwd-store-goods-sale) | 优惠券分摊金额 |
| 52 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
| 53 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 54 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 55 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 56 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
<a id="dwd-dwd-store-goods-sale"></a>
#### DWD 表结构 — dwd.dwd_store_goods_sale [🔗 ODS](#ods-store-goods-sales-records)
共 24 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `store_goods_sale_id` | bigint | [`id`](#ods-store-goods-sales-records) | 直接 | 销售流水 ID |
| 2 | `order_trade_no` | bigint | [`order_trade_no`](#ods-store-goods-sales-records) | 直接 | 订单号 |
| 3 | `order_settle_id` | bigint | [`order_settle_id`](#ods-store-goods-sales-records) | 直接 | 结账单 ID → dwd_settlement_head |
| 4 | `order_pay_id` | bigint | [`order_pay_id`](#ods-store-goods-sales-records) | 直接 | 支付单 ID当前数据全为 0 |
| 5 | `order_goods_id` | bigint | [`order_goods_id`](#ods-store-goods-sales-records) | 直接 | 订单商品 ID0=商城订单) |
| 6 | `site_id` | bigint | [`site_id`](#ods-store-goods-sales-records) | 直接 | 门店 ID |
| 7 | `tenant_id` | bigint | [`tenant_id`](#ods-store-goods-sales-records) | 直接 | 租户 ID |
| 8 | `site_goods_id` | bigint | [`site_goods_id`](#ods-store-goods-sales-records) | 直接 | 门店商品 ID → dim_store_goods |
| 9 | `tenant_goods_id` | bigint | [`tenant_goods_id`](#ods-store-goods-sales-records) | 直接 | 租户商品 ID → dim_tenant_goods |
| 10 | `tenant_goods_category_id` | bigint | [`tenant_goods_category_id`](#ods-store-goods-sales-records) | 直接 | 商品分类 ID |
| 11 | `tenant_goods_business_id` | bigint | [`tenant_goods_business_id`](#ods-store-goods-sales-records) | 直接 | 业务大类 ID |
| 12 | `site_table_id` | bigint | [`site_table_id`](#ods-store-goods-sales-records) | 直接 | 台桌 ID0=商城订单,非台桌消费) |
| 13 | `ledger_name` | character varying | [`ledger_name`](#ods-store-goods-sales-records) | 直接 | 商品名称。**样本值**: "哇哈哈矿泉水", "东方树叶", "可乐" 等 |
| 14 | `ledger_group_name` | character varying | [`ledger_group_name`](#ods-store-goods-sales-records) | 直接 | 商品分类。**样本值**: "酒水", "零食", "香烟" 等 |
| 15 | `ledger_unit_price` | numeric | [`ledger_unit_price`](#ods-store-goods-sales-records) | 直接 | 单价(元) |
| 16 | `ledger_count` | integer | [`ledger_count`](#ods-store-goods-sales-records) | 直接 | 购买数量。**样本值**: 1, 2, 3, 4 等 |
| 17 | `ledger_amount` | numeric | [`ledger_amount`](#ods-store-goods-sales-records) | 直接 | 销售金额(元) |
| 18 | `discount_price` | numeric | [`discount_money`](#ods-store-goods-sales-records) | 直接 | 折扣金额 |
| 19 | `real_goods_money` | numeric | [`real_goods_money`](#ods-store-goods-sales-records) | 直接 | 实收金额 |
| 20 | `cost_money` | numeric | [`cost_money`](#ods-store-goods-sales-records) | 直接 | 成本金额 |
| 21 | `ledger_status` | integer | [`ledger_status`](#ods-store-goods-sales-records) | 直接 | 账本状态。**枚举值**: 1=已结算 |
| 22 | `is_delete` | integer | [`is_delete`](#ods-store-goods-sales-records) | 直接 | 删除标记。**枚举值**: 0=未删除 |
| 23 | `create_time` | timestamp with time zone | [`create_time`](#ods-store-goods-sales-records) | 直接 | 创建时间 |
| 24 | `coupon_share_money` | numeric | [`coupon_share_money`](#ods-store-goods-sales-records) | 直接 | 优惠券分摊金额 |
<a id="dwd-dwd-store-goods-sale-ex"></a>
#### DWD 表结构 — dwd.dwd_store_goods_sale_ex [🔗 ODS](#ods-store-goods-sales-records)
共 28 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `store_goods_sale_id` | bigint | [`id`](#ods-store-goods-sales-records) | 直接 | 字段重命名 |
| 2 | `legacy_order_goods_id` | bigint | [`ordergoodsid`](#ods-store-goods-sales-records) | 直接 | 字段重命名 |
| 3 | `site_name` | text | [`sitename`](#ods-store-goods-sales-records) | 直接 | 字段重命名 |
| 4 | `legacy_site_id` | bigint | [`siteid`](#ods-store-goods-sales-records) | 直接 | 字段重命名 |
| 5 | `goods_remark` | text | [`goods_remark`](#ods-store-goods-sales-records) | 直接 | 同名直传 |
| 6 | `option_value_name` | text | [`option_value_name`](#ods-store-goods-sales-records) | 直接 | 名称字段,用于展示与辅助识别 |
| 7 | `operator_name` | text | [`operator_name`](#ods-store-goods-sales-records) | 直接 | 同名直传 |
| 8 | `open_salesman_flag` | integer | [`opensalesman`](#ods-store-goods-sales-records) | → integer | 字段重命名 |
| 9 | `salesman_user_id` | bigint | [`salesman_user_id`](#ods-store-goods-sales-records) | 直接 | 同名直传 |
| 10 | `salesman_name` | text | [`salesman_name`](#ods-store-goods-sales-records) | 直接 | 名称字段,用于展示与辅助识别 |
| 11 | `salesman_role_id` | bigint | [`salesman_role_id`](#ods-store-goods-sales-records) | 直接 | 同名直传 |
| 12 | `salesman_org_id` | bigint | [`sales_man_org_id`](#ods-store-goods-sales-records) | 直接 | 字段重命名 |
| 13 | `discount_money` | numeric | [`discount_money`](#ods-store-goods-sales-records) | 直接 | 同名直传 |
| 14 | `returns_number` | integer | [`returns_number`](#ods-store-goods-sales-records) | 直接 | 同名直传 |
| 15 | `coupon_deduct_money` | numeric | [`coupon_deduct_money`](#ods-store-goods-sales-records) | 直接 | 同名直传 |
| 16 | `member_discount_amount` | numeric | [`member_discount_amount`](#ods-store-goods-sales-records) | 直接 | 同名直传 |
| 17 | `point_discount_money` | numeric | [`point_discount_money`](#ods-store-goods-sales-records) | 直接 | 同名直传 |
| 18 | `point_discount_money_cost` | numeric | [`point_discount_money_cost`](#ods-store-goods-sales-records) | 直接 | 同名直传 |
| 19 | `package_coupon_id` | bigint | [`package_coupon_id`](#ods-store-goods-sales-records) | 直接 | 同名直传 |
| 20 | `order_coupon_id` | bigint | [`order_coupon_id`](#ods-store-goods-sales-records) | 直接 | 同名直传 |
| 21 | `member_coupon_id` | bigint | [`member_coupon_id`](#ods-store-goods-sales-records) | 直接 | 同名直传 |
| 22 | `option_price` | numeric | [`option_price`](#ods-store-goods-sales-records) | 直接 | 同名直传 |
| 23 | `option_member_discount_money` | numeric | [`option_member_discount_money`](#ods-store-goods-sales-records) | 直接 | 同名直传 |
| 24 | `option_coupon_deduct_money` | numeric | [`option_coupon_deduct_money`](#ods-store-goods-sales-records) | 直接 | 同名直传 |
| 25 | `push_money` | numeric | [`push_money`](#ods-store-goods-sales-records) | 直接 | 同名直传 |
| 26 | `is_single_order` | integer | [`is_single_order`](#ods-store-goods-sales-records) | 直接 | 同名直传 |
| 27 | `sales_type` | integer | [`sales_type`](#ods-store-goods-sales-records) | 直接 | 同名直传 |
| 28 | `operator_id` | bigint | [`operator_id`](#ods-store-goods-sales-records) | 直接 | 同名直传 |
### 3.7 payment_transactions支付流水
- 任务代码:`ODS_PAYMENT`
- 采样记录数200
- API JSON 字段数36
- ODS 列数17
- DWD 目标表dwd_payment
<a id="api-payment-transactions"></a>
#### API 源字段 — payment_transactions [🔗 ODS](#ods-payment-transactions)
已映射 12/36覆盖率 33.3%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `siteProfile.id` | integer | [`id`](#ods-payment-transactions) | 支付流水记录的主键 ID | 📦 嵌套对象;示例: `2790685415443269` |
| 2 | `siteProfile.org_id` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `2790684179467077` |
| 3 | `siteProfile.shop_name` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `朗朗桌球` |
| 4 | `siteProfile.avatar` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `https://oss.ficoo.vip/admin...` |
| 5 | `siteProfile.business_tel` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `13316068642` |
| 6 | `siteProfile.full_address` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `广东省广州市天河区丽阳街12号` |
| 7 | `siteProfile.address` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `广东省广州市天河区天园街道朗朗桌球` |
| 8 | `siteProfile.longitude` | number | ⚠️ 未映射 | | 📦 嵌套对象;示例: `113.360321` |
| 9 | `siteProfile.latitude` | number | ⚠️ 未映射 | | 📦 嵌套对象;示例: `23.133629` |
| 10 | `siteProfile.tenant_site_region_id` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `156440100` |
| 11 | `siteProfile.tenant_id` | integer | [`tenant_id`](#ods-payment-transactions) | 租户ID | 📦 嵌套对象;示例: `2790683160709957` |
| 12 | `siteProfile.auto_light` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 13 | `siteProfile.attendance_distance` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 14 | `siteProfile.wifi_name` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 15 | `siteProfile.wifi_password` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 16 | `siteProfile.customer_service_qrcode` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 17 | `siteProfile.customer_service_wechat` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 18 | `siteProfile.fixed_pay_qrCode` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 19 | `siteProfile.prod_env` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 20 | `siteProfile.light_status` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `2` |
| 21 | `siteProfile.light_type` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 22 | `siteProfile.site_type` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 23 | `siteProfile.light_token` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 24 | `siteProfile.site_label` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `A` |
| 25 | `siteProfile.attendance_enabled` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 26 | `siteProfile.shop_status` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 27 | `create_time` | string | [`create_time`](#ods-payment-transactions) | 支付记录创建时间,通常与发起支付请求的时间一致(创建支付流水的时间戳) | 枚举值: `2026-02-14 00:21:21`, `2026-02-14 00:16:27`, `2026-02-14 00:12:40`, `2026-02-14 00:01:01`, `2026-02-13 23:20:28`, `2026-02-13 23:16:30`, `2026-02-13 23:09:55`, `2026-02-13 22:50:41` |
| 28 | `pay_amount` | number | [`pay_amount`](#ods-payment-transactions) | 本条支付流水的“支付金额”,单位为元 | 枚举值: `7.0`, `0.0`, `10.0`, `684.0`, `5.0`, `43.0`, `49.0`, `2.0` |
| 29 | `pay_status` | integer | [`pay_status`](#ods-payment-transactions) | 支付状态枚举字段 | 示例: `2` |
| 30 | `pay_time` | string | [`pay_time`](#ods-payment-transactions) | 实际支付完成时间(支付状态变为成功的时间戳) | 枚举值: `2026-02-14 00:21:21`, `2026-02-14 00:16:27`, `2026-02-14 00:12:40`, `2026-02-14 00:01:01`, `2026-02-13 23:20:28`, `2026-02-13 23:16:30`, `2026-02-13 23:09:55`, `2026-02-13 22:50:42` |
| 31 | `online_pay_channel` | integer | [`online_pay_channel`](#ods-payment-transactions) | 每一笔结账单settleList.id对应一条支付记录当前样本中是一条记录relate_id 唯一) | 示例: `0` |
| 32 | `relate_type` | integer | [`relate_type`](#ods-payment-transactions) | 表示“这条支付记录关联的业务类型” | 枚举值: `2`, `1` |
| 33 | `relate_id` | integer | [`relate_id`](#ods-payment-transactions) | 关联业务记录的主键 ID按 relate_type 不同指向不同表) | 枚举值: `3093864077166789`, `3093859276196037`, `3093855537596549`, `3093843703564549`, `3093804233967877`, `3093800338802821`, `3093793847478597`, `3093774959741061` |
| 34 | `site_id` | integer | [`site_id`](#ods-payment-transactions) | 支付记录所属的门店 ID | 示例: `2790685415443269` |
| 35 | `id` | integer | [`id`](#ods-payment-transactions) | 支付流水记录的主键 ID | 枚举值: `3093864103463109`, `3093859289221445`, `3093855574345989`, `3093844117801285`, `3093804248779077`, `3093800354400453`, `3093793882589445`, `3093774982547589` |
| 36 | `payment_method` | integer | [`payment_method`](#ods-payment-transactions) | 支付方式枚举,例如微信、支付宝、现金、银行卡、储值卡等某一种 | 枚举值: `4`, `2` |
<a id="ods-payment-transactions"></a>
#### ODS 表结构 — ods.payment_transactions [🔗 API](#api-payment-transactions)
共 17 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `id` | bigint | [`siteProfile.id`](#api-payment-transactions) | [`dwd_payment.payment_id`](#dwd-dwd-payment) | 支付流水记录的主键 ID |
| 2 | `site_id` | bigint | [`site_id`](#api-payment-transactions) | [`dwd_payment.site_id`](#dwd-dwd-payment) | 支付记录所属的门店 ID |
| 3 | `siteprofile` | jsonb | — | — | (待补充) |
| 4 | `relate_type` | integer | [`relate_type`](#api-payment-transactions) | [`dwd_payment.relate_type`](#dwd-dwd-payment) | 表示“这条支付记录关联的业务类型” |
| 5 | `relate_id` | bigint | [`relate_id`](#api-payment-transactions) | [`dwd_payment.relate_id`](#dwd-dwd-payment) | 关联业务记录的主键 ID按 relate_type 不同指向不同表) |
| 6 | `pay_amount` | numeric | [`pay_amount`](#api-payment-transactions) | [`dwd_payment.pay_amount`](#dwd-dwd-payment) | 本条支付流水的“支付金额”,单位为元 |
| 7 | `pay_status` | integer | [`pay_status`](#api-payment-transactions) | [`dwd_payment.pay_status`](#dwd-dwd-payment) | 支付状态枚举字段 |
| 8 | `pay_time` | timestamp without time zone | [`pay_time`](#api-payment-transactions) | [`dwd_payment.pay_time`](#dwd-dwd-payment), [`dwd_payment.pay_date`](#dwd-dwd-payment) | 实际支付完成时间(支付状态变为成功的时间戳) |
| 9 | `create_time` | timestamp without time zone | [`create_time`](#api-payment-transactions) | [`dwd_payment.create_time`](#dwd-dwd-payment) | 支付记录创建时间,通常与发起支付请求的时间一致(创建支付流水的时间戳) |
| 10 | `payment_method` | integer | [`payment_method`](#api-payment-transactions) | [`dwd_payment.payment_method`](#dwd-dwd-payment) | 支付方式枚举,例如微信、支付宝、现金、银行卡、储值卡等某一种 |
| 11 | `online_pay_channel` | integer | [`online_pay_channel`](#api-payment-transactions) | [`dwd_payment.online_pay_channel`](#dwd-dwd-payment) | 每一笔结账单settleList.id对应一条支付记录当前样本中是一条记录relate_id 唯一) |
| 12 | `tenant_id` | bigint | [`siteProfile.tenant_id`](#api-payment-transactions) | [`dwd_payment.tenant_id`](#dwd-dwd-payment) | 租户ID |
| 13 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 14 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 15 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 16 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
| 17 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
<a id="dwd-dwd-payment"></a>
#### DWD 表结构 — dwd.dwd_payment [🔗 ODS](#ods-payment-transactions)
共 12 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `payment_id` | bigint | [`id`](#ods-payment-transactions) | 直接 | 支付流水 ID |
| 2 | `site_id` | bigint | [`site_id`](#ods-payment-transactions) | 直接 | 门店 ID |
| 3 | `relate_type` | integer | [`relate_type`](#ods-payment-transactions) | 直接 | 关联业务类型。**枚举值**: 1=预付, 2=结账, 5=充值, 6=线上商城 |
| 4 | `relate_id` | bigint | [`relate_id`](#ods-payment-transactions) | 直接 | 关联业务 ID |
| 5 | `pay_amount` | numeric | [`pay_amount`](#ods-payment-transactions) | 直接 | 支付金额(元) |
| 6 | `pay_status` | integer | [`pay_status`](#ods-payment-transactions) | 直接 | 支付状态。**枚举值**: 2=已支付 |
| 7 | `payment_method` | integer | [`payment_method`](#ods-payment-transactions) | 直接 | 支付方式。**枚举值**: 2=现金支付 , 4=离线支付 |
| 8 | `online_pay_channel` | integer | [`online_pay_channel`](#ods-payment-transactions) | 直接 | 在线支付渠道(当前数据全为 0 |
| 9 | `create_time` | timestamp with time zone | [`create_time`](#ods-payment-transactions) | 直接 | 创建时间 |
| 10 | `pay_time` | timestamp with time zone | [`pay_time`](#ods-payment-transactions) | 直接 | 支付时间 |
| 11 | `pay_date` | date | [`pay_time`](#ods-payment-transactions) | → date | 支付日期 |
| 12 | `tenant_id` | bigint | [`tenant_id`](#ods-payment-transactions) | 直接 | 租户 ID |
### 3.8 refund_transactions退款流水
- 任务代码:`ODS_REFUND`
- 采样记录数33
- API JSON 字段数57
- ODS 列数37
- DWD 目标表dwd_refund, dwd_refund_ex
<a id="api-refund-transactions"></a>
#### API 源字段 — refund_transactions [🔗 ODS](#ods-refund-transactions)
已映射 33/57覆盖率 57.9%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `tenantName` | string | [`tenantname`](#ods-refund-transactions) | (待补充) | 大小写匹配;示例: `朗朗桌球` |
| 2 | `siteProfile.id` | integer | [`id`](#ods-refund-transactions) | 本条 退款流水 的唯一 ID | 📦 嵌套对象;示例: `2790685415443269` |
| 3 | `siteProfile.org_id` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `2790684179467077` |
| 4 | `siteProfile.shop_name` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `朗朗桌球` |
| 5 | `siteProfile.avatar` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `https://oss.ficoo.vip/admin...` |
| 6 | `siteProfile.business_tel` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `13316068642` |
| 7 | `siteProfile.full_address` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `广东省广州市天河区丽阳街12号` |
| 8 | `siteProfile.address` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `广东省广州市天河区天园街道朗朗桌球` |
| 9 | `siteProfile.longitude` | number | ⚠️ 未映射 | | 📦 嵌套对象;示例: `113.360321` |
| 10 | `siteProfile.latitude` | number | ⚠️ 未映射 | | 📦 嵌套对象;示例: `23.133629` |
| 11 | `siteProfile.tenant_site_region_id` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `156440100` |
| 12 | `siteProfile.tenant_id` | integer | [`tenant_id`](#ods-refund-transactions) | 租户/品牌 ID全系统维度标识该商户 | 📦 嵌套对象;示例: `2790683160709957` |
| 13 | `siteProfile.auto_light` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 14 | `siteProfile.attendance_distance` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 15 | `siteProfile.wifi_name` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 16 | `siteProfile.wifi_password` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 17 | `siteProfile.customer_service_qrcode` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 18 | `siteProfile.customer_service_wechat` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 19 | `siteProfile.fixed_pay_qrCode` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 20 | `siteProfile.prod_env` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 21 | `siteProfile.light_status` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `2` |
| 22 | `siteProfile.light_type` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 23 | `siteProfile.site_type` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 24 | `siteProfile.light_token` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 25 | `siteProfile.site_label` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `A` |
| 26 | `siteProfile.attendance_enabled` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 27 | `siteProfile.shop_status` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 28 | `id` | integer | [`id`](#ods-refund-transactions) | 本条 退款流水 的唯一 ID | 枚举值: `3089577798995141`, `3085106065510021`, `3080691980947141`, `3076746573219397`, `3075315080365445`, `3072740947101125`, `3063816474921925`, `3062207845584517` |
| 29 | `site_id` | integer | [`site_id`](#ods-refund-transactions) | 门店 ID | 示例: `2790685415443269` |
| 30 | `tenant_id` | integer | [`tenant_id`](#ods-refund-transactions) | 租户/品牌 ID全系统维度标识该商户 | 示例: `2790683160709957` |
| 31 | `pay_sn` | integer | [`pay_sn`](#ods-refund-transactions) | 来自 JSON 导出的原始字段,用于保留业务取值 | 示例: `0` |
| 32 | `pay_amount` | number | [`pay_amount`](#ods-refund-transactions) | 本次退款的 资金变动金额 | 枚举值: `-8.0`, `-1.5`, `-98.0`, `-50.0`, `-20.0`, `-10000.0`, `-5.0`, `-2.0` |
| 33 | `pay_status` | integer | [`pay_status`](#ods-refund-transactions) | 来自 JSON 导出的原始字段,用于保留业务取值 | 示例: `2` |
| 34 | `pay_time` | string | [`pay_time`](#ods-refund-transactions) | 退款在支付渠道层面实际发生的时间 | 枚举值: `2026-02-10 23:41:06`, `2026-02-07 19:52:13`, `2026-02-04 17:01:58`, `2026-02-01 22:08:30`, `2026-01-31 21:52:18`, `2026-01-30 02:13:46`, `2026-01-23 18:55:19`, `2026-01-22 15:38:56` |
| 35 | `create_time` | string | [`create_time`](#ods-refund-transactions) | 本条退款流水在系统内创建时间 | 枚举值: `2026-02-10 23:41:06`, `2026-02-07 19:52:13`, `2026-02-04 17:01:58`, `2026-02-01 22:08:30`, `2026-01-31 21:52:18`, `2026-01-30 02:13:46`, `2026-01-23 18:55:19`, `2026-01-22 15:38:56` |
| 36 | `relate_type` | integer | [`relate_type`](#ods-refund-transactions) | 本退款对应的“业务类型” | 枚举值: `1`, `5`, `2` |
| 37 | `relate_id` | integer | [`relate_id`](#ods-refund-transactions) | 本次退款关联的业务 ID | 枚举值: `3089548319804869`, `3085105740795590`, `3080690280517125`, `3076716749112965`, `3075314390828613`, `3072740722083269`, `3063630706494661`, `3062058292596165` |
| 38 | `is_revoke` | integer | [`is_revoke`](#ods-refund-transactions) | 布尔/开关字段,用于表示权限、可用性或状态开关 | 示例: `0` |
| 39 | `is_delete` | integer | [`is_delete`](#ods-refund-transactions) | 逻辑删除标志 | 示例: `0` |
| 40 | `online_pay_channel` | integer | [`online_pay_channel`](#ods-refund-transactions) | 来自 JSON 导出的原始字段,用于保留业务取值 | 示例: `0` |
| 41 | `payment_method` | integer | [`payment_method`](#ods-refund-transactions) | 来自 JSON 导出的原始字段,用于保留业务取值 | 枚举值: `4`, `2` |
| 42 | `balance_frozen_amount` | number | [`balance_frozen_amount`](#ods-refund-transactions) | 涉及会员储值卡退款时,暂时冻结的余额金额 | 示例: `0.0` |
| 43 | `card_frozen_amount` | number | [`card_frozen_amount`](#ods-refund-transactions) | 与上一个类似,偏向“某张卡的被冻结金额”,也与会员卡/储值账户相关 | 示例: `0.0` |
| 44 | `member_id` | integer | [`member_id`](#ods-refund-transactions) | 租户内部的会员 ID对应会员档案中的某个主键 | 示例: `0` |
| 45 | `member_card_id` | integer | [`member_card_id`](#ods-refund-transactions) | 关联的会员卡账户 ID对应“储值卡列表”或“会员档案”中的某一张卡 | 示例: `0` |
| 46 | `round_amount` | number | [`round_amount`](#ods-refund-transactions) | 舍入金额/抹零金额 | 示例: `0.0` |
| 47 | `online_pay_type` | integer | [`online_pay_type`](#ods-refund-transactions) | 当前:全部 0 | 示例: `0` |
| 48 | `action_type` | integer | [`action_type`](#ods-refund-transactions) | 当前:全部 2 | 示例: `2` |
| 49 | `refund_amount` | number | [`refund_amount`](#ods-refund-transactions) | 设计上本应显示“实际退款金额”(正数),与 pay_amount 配合使用 | 示例: `0.0` |
| 50 | `cashier_point_id` | integer | [`cashier_point_id`](#ods-refund-transactions) | 收银点 ID例如前台 1、前台 2、自助机等 | 示例: `0` |
| 51 | `operator_id` | integer | [`operator_id`](#ods-refund-transactions) | 执行该退款操作的操作员 ID | 示例: `0` |
| 52 | `pay_terminal` | integer | [`pay_terminal`](#ods-refund-transactions) | 来自 JSON 导出的原始字段,用于保留业务取值 | 示例: `1` |
| 53 | `pay_config_id` | integer | [`pay_config_id`](#ods-refund-transactions) | 支付配置 ID例如商户在“非球科技”内配置的某一条支付通道某个微信商户号、银联通道的主键 | 示例: `0` |
| 54 | `channel_payer_id` | string | [`channel_payer_id`](#ods-refund-transactions) | 支付渠道侧的 payer ID例如微信 openid、银行卡号掩码等 | |
| 55 | `channel_pay_no` | string | [`channel_pay_no`](#ods-refund-transactions) | 第三方支付平台的交易号(如微信支付单号、支付宝交易号等) | |
| 56 | `check_status` | integer | [`check_status`](#ods-refund-transactions) | 当前:全部 1 | 示例: `1` |
| 57 | `channel_fee` | number | [`channel_fee`](#ods-refund-transactions) | 第三方支付渠道对本次退款收取的手续费 | 示例: `0.0` |
<a id="ods-refund-transactions"></a>
#### ODS 表结构 — ods.refund_transactions [🔗 API](#api-refund-transactions)
共 37 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `id` | bigint | [`siteProfile.id`](#api-refund-transactions) | [`dwd_refund.refund_id`](#dwd-dwd-refund), [`dwd_refund_ex.refund_id`](#dwd-dwd-refund-ex) | 本条 退款流水 的唯一 ID |
| 2 | `tenant_id` | bigint | [`siteProfile.tenant_id`](#api-refund-transactions) | [`dwd_refund.tenant_id`](#dwd-dwd-refund) | 租户/品牌 ID全系统维度标识该商户 |
| 3 | `tenantname` | text | [`tenantName`](#api-refund-transactions) | [`dwd_refund_ex.tenant_name`](#dwd-dwd-refund-ex) | (待补充) |
| 4 | `site_id` | bigint | [`site_id`](#api-refund-transactions) | [`dwd_refund.site_id`](#dwd-dwd-refund) | 门店 ID |
| 5 | `siteprofile` | jsonb | — | — | (待补充) |
| 6 | `relate_type` | integer | [`relate_type`](#api-refund-transactions) | [`dwd_refund.relate_type`](#dwd-dwd-refund) | 本退款对应的“业务类型” |
| 7 | `relate_id` | bigint | [`relate_id`](#api-refund-transactions) | [`dwd_refund.relate_id`](#dwd-dwd-refund) | 本次退款关联的业务 ID |
| 8 | `pay_sn` | text | [`pay_sn`](#api-refund-transactions) | [`dwd_refund_ex.pay_sn`](#dwd-dwd-refund-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 9 | `pay_amount` | numeric | [`pay_amount`](#api-refund-transactions) | [`dwd_refund.pay_amount`](#dwd-dwd-refund) | 本次退款的 资金变动金额 |
| 10 | `refund_amount` | numeric | [`refund_amount`](#api-refund-transactions) | [`dwd_refund_ex.refund_amount`](#dwd-dwd-refund-ex) | 设计上本应显示“实际退款金额”(正数),与 pay_amount 配合使用 |
| 11 | `round_amount` | numeric | [`round_amount`](#api-refund-transactions) | [`dwd_refund_ex.round_amount`](#dwd-dwd-refund-ex) | 舍入金额/抹零金额 |
| 12 | `pay_status` | integer | [`pay_status`](#api-refund-transactions) | [`dwd_refund_ex.pay_status`](#dwd-dwd-refund-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 13 | `pay_time` | timestamp without time zone | [`pay_time`](#api-refund-transactions) | [`dwd_refund.pay_time`](#dwd-dwd-refund) | 退款在支付渠道层面实际发生的时间 |
| 14 | `create_time` | timestamp without time zone | [`create_time`](#api-refund-transactions) | [`dwd_refund.create_time`](#dwd-dwd-refund) | 本条退款流水在系统内创建时间 |
| 15 | `payment_method` | integer | [`payment_method`](#api-refund-transactions) | [`dwd_refund.payment_method`](#dwd-dwd-refund) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 16 | `pay_terminal` | integer | [`pay_terminal`](#api-refund-transactions) | [`dwd_refund_ex.pay_terminal`](#dwd-dwd-refund-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 17 | `pay_config_id` | bigint | [`pay_config_id`](#api-refund-transactions) | [`dwd_refund_ex.pay_config_id`](#dwd-dwd-refund-ex) | 支付配置 ID例如商户在“非球科技”内配置的某一条支付通道某个微信商户号、银联通道的主键 |
| 18 | `online_pay_channel` | integer | [`online_pay_channel`](#api-refund-transactions) | [`dwd_refund_ex.online_pay_channel`](#dwd-dwd-refund-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 19 | `online_pay_type` | integer | [`online_pay_type`](#api-refund-transactions) | [`dwd_refund_ex.online_pay_type`](#dwd-dwd-refund-ex) | 当前:全部 0 |
| 20 | `channel_fee` | numeric | [`channel_fee`](#api-refund-transactions) | [`dwd_refund.channel_fee`](#dwd-dwd-refund) | 第三方支付渠道对本次退款收取的手续费 |
| 21 | `channel_payer_id` | text | [`channel_payer_id`](#api-refund-transactions) | [`dwd_refund_ex.channel_payer_id`](#dwd-dwd-refund-ex) | 支付渠道侧的 payer ID例如微信 openid、银行卡号掩码等 |
| 22 | `channel_pay_no` | text | [`channel_pay_no`](#api-refund-transactions) | [`dwd_refund_ex.channel_pay_no`](#dwd-dwd-refund-ex) | 第三方支付平台的交易号(如微信支付单号、支付宝交易号等) |
| 23 | `member_id` | bigint | [`member_id`](#api-refund-transactions) | [`dwd_refund.member_id`](#dwd-dwd-refund) | 租户内部的会员 ID对应会员档案中的某个主键 |
| 24 | `member_card_id` | bigint | [`member_card_id`](#api-refund-transactions) | [`dwd_refund.member_card_id`](#dwd-dwd-refund) | 关联的会员卡账户 ID对应“储值卡列表”或“会员档案”中的某一张卡 |
| 25 | `cashier_point_id` | bigint | [`cashier_point_id`](#api-refund-transactions) | [`dwd_refund_ex.cashier_point_id`](#dwd-dwd-refund-ex) | 收银点 ID例如前台 1、前台 2、自助机等 |
| 26 | `operator_id` | bigint | [`operator_id`](#api-refund-transactions) | [`dwd_refund_ex.operator_id`](#dwd-dwd-refund-ex) | 执行该退款操作的操作员 ID |
| 27 | `action_type` | integer | [`action_type`](#api-refund-transactions) | [`dwd_refund_ex.action_type`](#dwd-dwd-refund-ex) | 当前:全部 2 |
| 28 | `check_status` | integer | [`check_status`](#api-refund-transactions) | [`dwd_refund_ex.check_status`](#dwd-dwd-refund-ex) | 当前:全部 1 |
| 29 | `is_revoke` | integer | [`is_revoke`](#api-refund-transactions) | [`dwd_refund_ex.is_revoke`](#dwd-dwd-refund-ex) | 布尔/开关字段,用于表示权限、可用性或状态开关 |
| 30 | `is_delete` | integer | [`is_delete`](#api-refund-transactions) | [`dwd_refund_ex.is_delete`](#dwd-dwd-refund-ex) | 逻辑删除标志 |
| 31 | `balance_frozen_amount` | numeric | [`balance_frozen_amount`](#api-refund-transactions) | [`dwd_refund_ex.balance_frozen_amount`](#dwd-dwd-refund-ex) | 涉及会员储值卡退款时,暂时冻结的余额金额 |
| 32 | `card_frozen_amount` | numeric | [`card_frozen_amount`](#api-refund-transactions) | [`dwd_refund_ex.card_frozen_amount`](#dwd-dwd-refund-ex) | 与上一个类似,偏向“某张卡的被冻结金额”,也与会员卡/储值账户相关 |
| 33 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 34 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 35 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 36 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
| 37 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
<a id="dwd-dwd-refund"></a>
#### DWD 表结构 — dwd.dwd_refund [🔗 ODS](#ods-refund-transactions)
共 12 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `refund_id` | bigint | [`id`](#ods-refund-transactions) | 直接 | 退款流水 ID |
| 2 | `tenant_id` | bigint | [`tenant_id`](#ods-refund-transactions) | 直接 | 租户 ID |
| 3 | `site_id` | bigint | [`site_id`](#ods-refund-transactions) | 直接 | 门店 ID |
| 4 | `relate_type` | integer | [`relate_type`](#ods-refund-transactions) | 直接 | 关联业务类型。**枚举值**: 1(7)=预付退款 , 2(31)=结账退款, 5(7)=充值退款 |
| 5 | `relate_id` | bigint | [`relate_id`](#ods-refund-transactions) | 直接 | 关联业务 ID |
| 6 | `pay_amount` | numeric | [`pay_amount`](#ods-refund-transactions) | 直接 | 退款金额(元,负数) |
| 7 | `channel_fee` | numeric | [`channel_fee`](#ods-refund-transactions) | 直接 | 渠道手续费 |
| 8 | `pay_time` | timestamp with time zone | [`pay_time`](#ods-refund-transactions) | 直接 | 退款时间 |
| 9 | `create_time` | timestamp with time zone | [`create_time`](#ods-refund-transactions) | 直接 | 创建时间 |
| 10 | `payment_method` | integer | [`payment_method`](#ods-refund-transactions) | 直接 | 支付方式,暂无用途。 |
| 11 | `member_id` | bigint | [`member_id`](#ods-refund-transactions) | 直接 | 会员 ID当前数据全为 0 |
| 12 | `member_card_id` | bigint | [`member_card_id`](#ods-refund-transactions) | 直接 | 会员卡 ID当前数据全为 0 |
<a id="dwd-dwd-refund-ex"></a>
#### DWD 表结构 — dwd.dwd_refund_ex [🔗 ODS](#ods-refund-transactions)
共 20 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `refund_id` | bigint | [`id`](#ods-refund-transactions) | 直接 | 字段重命名 |
| 2 | `tenant_name` | character varying | [`tenantname`](#ods-refund-transactions) | 直接 | 字段重命名 |
| 3 | `pay_sn` | bigint | [`pay_sn`](#ods-refund-transactions) | 直接 | 同名直传 |
| 4 | `refund_amount` | numeric | [`refund_amount`](#ods-refund-transactions) | 直接 | 同名直传 |
| 5 | `round_amount` | numeric | [`round_amount`](#ods-refund-transactions) | 直接 | 同名直传 |
| 6 | `balance_frozen_amount` | numeric | [`balance_frozen_amount`](#ods-refund-transactions) | 直接 | 同名直传 |
| 7 | `card_frozen_amount` | numeric | [`card_frozen_amount`](#ods-refund-transactions) | 直接 | 同名直传 |
| 8 | `pay_status` | integer | [`pay_status`](#ods-refund-transactions) | 直接 | 同名直传 |
| 9 | `action_type` | integer | [`action_type`](#ods-refund-transactions) | 直接 | 同名直传 |
| 10 | `is_revoke` | integer | [`is_revoke`](#ods-refund-transactions) | 直接 | 同名直传 |
| 11 | `is_delete` | integer | [`is_delete`](#ods-refund-transactions) | 直接 | 同名直传 |
| 12 | `check_status` | integer | [`check_status`](#ods-refund-transactions) | 直接 | 同名直传 |
| 13 | `online_pay_channel` | integer | [`online_pay_channel`](#ods-refund-transactions) | 直接 | 同名直传 |
| 14 | `online_pay_type` | integer | [`online_pay_type`](#ods-refund-transactions) | 直接 | 同名直传 |
| 15 | `pay_terminal` | integer | [`pay_terminal`](#ods-refund-transactions) | 直接 | 同名直传 |
| 16 | `pay_config_id` | integer | [`pay_config_id`](#ods-refund-transactions) | 直接 | 同名直传 |
| 17 | `cashier_point_id` | integer | [`cashier_point_id`](#ods-refund-transactions) | 直接 | 同名直传 |
| 18 | `operator_id` | bigint | [`operator_id`](#ods-refund-transactions) | 直接 | 同名直传 |
| 19 | `channel_payer_id` | character varying | [`channel_payer_id`](#ods-refund-transactions) | 直接 | 标识类 ID 字段,用于关联/定位相关实体 |
| 20 | `channel_pay_no` | character varying | [`channel_pay_no`](#ods-refund-transactions) | 直接 | 明细字段,用于记录事实取值 |
### 3.9 platform_coupon_redemption_records平台/团购券核销)
- 任务代码:`ODS_PLATFORM_COUPON`
- 采样记录数200
- API JSON 字段数51
- ODS 列数31
- DWD 目标表dwd_platform_coupon_redemption, dwd_platform_coupon_redemption_ex
<a id="api-platform-coupon-redemption-records"></a>
#### API 源字段 — platform_coupon_redemption_records [🔗 ODS](#ods-platform-coupon-redemption-records)
已映射 27/51覆盖率 52.9%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `siteProfile.id` | integer | [`id`](#ods-platform-coupon-redemption-records) | 本条平台验券记录在本系统内的主键 ID | 📦 嵌套对象;示例: `2790685415443269` |
| 2 | `siteProfile.org_id` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `2790684179467077` |
| 3 | `siteProfile.shop_name` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `朗朗桌球` |
| 4 | `siteProfile.avatar` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `https://oss.ficoo.vip/admin...` |
| 5 | `siteProfile.business_tel` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `13316068642` |
| 6 | `siteProfile.full_address` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `广东省广州市天河区丽阳街12号` |
| 7 | `siteProfile.address` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `广东省广州市天河区天园街道朗朗桌球` |
| 8 | `siteProfile.longitude` | number | ⚠️ 未映射 | | 📦 嵌套对象;示例: `113.360321` |
| 9 | `siteProfile.latitude` | number | ⚠️ 未映射 | | 📦 嵌套对象;示例: `23.133629` |
| 10 | `siteProfile.tenant_site_region_id` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `156440100` |
| 11 | `siteProfile.tenant_id` | integer | [`tenant_id`](#ods-platform-coupon-redemption-records) | 商户/租户 ID品牌级别 | 📦 嵌套对象;示例: `2790683160709957` |
| 12 | `siteProfile.auto_light` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 13 | `siteProfile.attendance_distance` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 14 | `siteProfile.wifi_name` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 15 | `siteProfile.wifi_password` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 16 | `siteProfile.customer_service_qrcode` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 17 | `siteProfile.customer_service_wechat` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 18 | `siteProfile.fixed_pay_qrCode` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 19 | `siteProfile.prod_env` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 20 | `siteProfile.light_status` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `2` |
| 21 | `siteProfile.light_type` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 22 | `siteProfile.site_type` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 23 | `siteProfile.light_token` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 24 | `siteProfile.site_label` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `A` |
| 25 | `siteProfile.attendance_enabled` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 26 | `siteProfile.shop_status` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 27 | `id` | integer | [`id`](#ods-platform-coupon-redemption-records) | 本条平台验券记录在本系统内的主键 ID | 枚举值: `3093784060856453`, `3093740765382981`, `3093730734033029`, `3093729952467077`, `3093720616372421`, `3093689826576709`, `3093683005753477`, `3093681904502917` |
| 28 | `tenant_id` | integer | [`tenant_id`](#ods-platform-coupon-redemption-records) | 商户/租户 ID品牌级别 | 示例: `2790683160709957` |
| 29 | `site_id` | integer | [`site_id`](#ods-platform-coupon-redemption-records) | 门店 ID | 示例: `2790685415443269` |
| 30 | `sale_price` | number | [`sale_price`](#ods-platform-coupon-redemption-records) | 顾客在第三方平台上实际支付的价格(团购售价) | 枚举值: `20.26`, `39.9`, `69.9`, `59.9`, `35.9`, `128.0`, `12.12`, `9.9` |
| 31 | `coupon_code` | string | [`coupon_code`](#ods-platform-coupon-redemption-records) | 券码,顾客出示的团购券密码/编号 | 枚举值: `0108970935413`, `0107305319597`, `0107317733529`, `0103968076185`, `0102409858353`, `0103957102485`, `0106359943515`, `0101346097990` |
| 32 | `coupon_channel` | integer | [`coupon_channel`](#ods-platform-coupon-redemption-records) | 券来源渠道(第三方平台渠道编号) | 示例: `1` |
| 33 | `site_order_id` | integer | [`site_order_id`](#ods-platform-coupon-redemption-records) | 门店内部的订单 ID平台券核销时对应的店内订单 | 枚举值: `3093784062036101`, `3093740766775621`, `3093730735376517`, `3093729955563653`, `3093720617519301`, `3093689828067653`, `3093683006916741`, `3093681905567877` |
| 34 | `coupon_free_time` | integer | [`coupon_free_time`](#ods-platform-coupon-redemption-records) | 券附带的“免费时长”字段(例如送多少分钟台费) | 示例: `0` |
| 35 | `use_status` | integer | [`use_status`](#ods-platform-coupon-redemption-records) | 值 1198 条 | 示例: `1` |
| 36 | `create_time` | string | [`create_time`](#ods-platform-coupon-redemption-records) | 验券记录在本系统中创建的时间(记录入库时间) | 枚举值: `2026-02-13 22:59:56`, `2026-02-13 22:15:53`, `2026-02-13 22:05:41`, `2026-02-13 22:04:53`, `2026-02-13 21:55:23`, `2026-02-13 21:24:04`, `2026-02-13 21:17:08`, `2026-02-13 21:16:00` |
| 37 | `is_delete` | integer | [`is_delete`](#ods-platform-coupon-redemption-records) | 把平台验券记录挂到本门店的一条订单上 | 示例: `0` |
| 38 | `coupon_name` | string | [`coupon_name`](#ods-platform-coupon-redemption-records) | 团购券产品名称(即第三方平台上向顾客展示的名称) | 枚举值: `【全天可用】中八桌球一小时大厅A区`, `【全天可用】中八桌球两小时A区`, `【全天可用】斯诺克一小时`, `【全天可用】斯诺克两小时`, `【全天可用】中八桌球两小时B区`, `【全天可用】B区桌球一小时`, `【全天可用】麻将、掼蛋包厢四小时`, `1小时中八台球\|【新年特惠】A区` |
| 39 | `coupon_cover` | string | [`coupon_cover`](#ods-platform-coupon-redemption-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | |
| 40 | `coupon_remark` | string | [`coupon_remark`](#ods-platform-coupon-redemption-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | |
| 41 | `channel_deal_id` | integer | [`channel_deal_id`](#ods-platform-coupon-redemption-records) | 渠道侧 dealId / 产品 ID一般是第三方平台给该团购商品定义的主键 | 枚举值: `1128411555`, `1130465371`, `1147633733`, `1130443985`, `1137872168`, `1370841337`, `1134269810`, `1203035334` |
| 42 | `group_package_id` | integer | [`group_package_id`](#ods-platform-coupon-redemption-records) | 标识类 ID 字段,用于关联/定位相关实体 | 示例: `0` |
| 43 | `consume_time` | string | [`consume_time`](#ods-platform-coupon-redemption-records) | 券被核销/使用的业务时间 | 枚举值: `2026-02-13 22:59:56`, `2026-02-13 22:15:54`, `2026-02-13 22:05:41`, `2026-02-13 22:04:54`, `2026-02-13 21:55:24`, `2026-02-13 21:24:05`, `2026-02-13 21:17:08`, `2026-02-13 21:16:01` |
| 44 | `groupon_type` | integer | [`groupon_type`](#ods-platform-coupon-redemption-records) | 团购券类型 | 示例: `1` |
| 45 | `coupon_money` | number | [`coupon_money`](#ods-platform-coupon-redemption-records) | 券面值 / 套餐价值(系统层面的“可抵扣金额或对应套餐价值”) | 枚举值: `48.0`, `96.0`, `68.0`, `136.0`, `116.0`, `58.0`, `288.0` |
| 46 | `operator_id` | integer | [`operator_id`](#ods-platform-coupon-redemption-records) | 操作员 ID执行验券操作的收银员/员工) | 示例: `2790687322443013` |
| 47 | `operator_name` | string | [`operator_name`](#ods-platform-coupon-redemption-records) | 操作员姓名,例如 "收银员:郑丽珊" | 示例: `收银员:郑丽珊` |
| 48 | `table_id` | integer | [`table_id`](#ods-platform-coupon-redemption-records) | 使用券的球台 ID | 枚举值: `2793001904918661`, `2793003506815045`, `2791964216463493`, `2793020260044869`, `2793003705192517`, `2792521437958213`, `2793001695301765`, `2793002509209733` |
| 49 | `certificate_id` | string | [`certificate_id`](#ods-platform-coupon-redemption-records) | 平台侧的凭证 ID通常由第三方团购平台生成的券实例 ID | 枚举值: `5017032752860339573`, `5017032752444438459`, `5017032752542324772`, `5017032752441028251`, `5017032751805056410`, `5017032751601072902`, `5017032751448614451`, `5017032751498902695` |
| 50 | `verify_id` | string | [`verify_id`](#ods-platform-coupon-redemption-records) | 平台核销记录 ID某些平台会为每一次核销生成一个唯一 ID | |
| 51 | `deal_id` | integer | [`deal_id`](#ods-platform-coupon-redemption-records) | 另一个层次的团购产品 ID | 枚举值: `1345108507`, `1346103574`, `1350374807`, `1346105245`, `1347938899`, `1398374101`, `1347146296`, `1364921087` |
<a id="ods-platform-coupon-redemption-records"></a>
#### ODS 表结构 — ods.platform_coupon_redemption_records [🔗 API](#api-platform-coupon-redemption-records)
共 31 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `id` | bigint | [`siteProfile.id`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption.platform_coupon_redemption_id`](#dwd-dwd-platform-coupon-redemption), [`dwd_platform_coupon_redemption_ex.platform_coupon_redemption_id`](#dwd-dwd-platform-coupon-redemption-ex) | 本条平台验券记录在本系统内的主键 ID |
| 2 | `verify_id` | bigint | [`verify_id`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption.verify_id`](#dwd-dwd-platform-coupon-redemption) | 平台核销记录 ID某些平台会为每一次核销生成一个唯一 ID |
| 3 | `certificate_id` | text | [`certificate_id`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption.certificate_id`](#dwd-dwd-platform-coupon-redemption) | 平台侧的凭证 ID通常由第三方团购平台生成的券实例 ID |
| 4 | `coupon_code` | text | [`coupon_code`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption.coupon_code`](#dwd-dwd-platform-coupon-redemption) | 券码,顾客出示的团购券密码/编号 |
| 5 | `coupon_name` | text | [`coupon_name`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption.coupon_name`](#dwd-dwd-platform-coupon-redemption) | 团购券产品名称(即第三方平台上向顾客展示的名称) |
| 6 | `coupon_channel` | integer | [`coupon_channel`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption.coupon_channel`](#dwd-dwd-platform-coupon-redemption) | 券来源渠道(第三方平台渠道编号) |
| 7 | `groupon_type` | integer | [`groupon_type`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption_ex.groupon_type`](#dwd-dwd-platform-coupon-redemption-ex) | 团购券类型 |
| 8 | `group_package_id` | bigint | [`group_package_id`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption.group_package_id`](#dwd-dwd-platform-coupon-redemption) | 标识类 ID 字段,用于关联/定位相关实体 |
| 9 | `sale_price` | numeric | [`sale_price`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption.sale_price`](#dwd-dwd-platform-coupon-redemption) | 顾客在第三方平台上实际支付的价格(团购售价) |
| 10 | `coupon_money` | numeric | [`coupon_money`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption.coupon_money`](#dwd-dwd-platform-coupon-redemption) | 券面值 / 套餐价值(系统层面的“可抵扣金额或对应套餐价值”) |
| 11 | `coupon_free_time` | numeric | [`coupon_free_time`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption.coupon_free_time`](#dwd-dwd-platform-coupon-redemption) | 券附带的“免费时长”字段(例如送多少分钟台费) |
| 12 | `coupon_cover` | text | [`coupon_cover`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption_ex.coupon_cover`](#dwd-dwd-platform-coupon-redemption-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 13 | `coupon_remark` | text | [`coupon_remark`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption_ex.coupon_remark`](#dwd-dwd-platform-coupon-redemption-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 14 | `use_status` | integer | [`use_status`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption.use_status`](#dwd-dwd-platform-coupon-redemption) | 值 1198 条 |
| 15 | `consume_time` | timestamp without time zone | [`consume_time`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption.consume_time`](#dwd-dwd-platform-coupon-redemption) | 券被核销/使用的业务时间 |
| 16 | `create_time` | timestamp without time zone | [`create_time`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption.create_time`](#dwd-dwd-platform-coupon-redemption) | 验券记录在本系统中创建的时间(记录入库时间) |
| 17 | `deal_id` | text | [`deal_id`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption.deal_id`](#dwd-dwd-platform-coupon-redemption) | 另一个层次的团购产品 ID |
| 18 | `channel_deal_id` | text | [`channel_deal_id`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption.channel_deal_id`](#dwd-dwd-platform-coupon-redemption) | 渠道侧 dealId / 产品 ID一般是第三方平台给该团购商品定义的主键 |
| 19 | `site_id` | bigint | [`site_id`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption.site_id`](#dwd-dwd-platform-coupon-redemption) | 门店 ID |
| 20 | `site_order_id` | bigint | [`site_order_id`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption.site_order_id`](#dwd-dwd-platform-coupon-redemption) | 门店内部的订单 ID平台券核销时对应的店内订单 |
| 21 | `table_id` | bigint | [`table_id`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption.table_id`](#dwd-dwd-platform-coupon-redemption) | 使用券的球台 ID |
| 22 | `tenant_id` | bigint | [`siteProfile.tenant_id`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption.tenant_id`](#dwd-dwd-platform-coupon-redemption) | 商户/租户 ID品牌级别 |
| 23 | `operator_id` | bigint | [`operator_id`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption_ex.operator_id`](#dwd-dwd-platform-coupon-redemption-ex) | 操作员 ID执行验券操作的收银员/员工) |
| 24 | `operator_name` | text | [`operator_name`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption_ex.operator_name`](#dwd-dwd-platform-coupon-redemption-ex) | 操作员姓名,例如 "收银员:郑丽珊" |
| 25 | `is_delete` | integer | [`is_delete`](#api-platform-coupon-redemption-records) | [`dwd_platform_coupon_redemption.is_delete`](#dwd-dwd-platform-coupon-redemption) | 把平台验券记录挂到本门店的一条订单上 |
| 26 | `siteprofile` | jsonb | — | — | (待补充) |
| 27 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 28 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 29 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 30 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
| 31 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
<a id="dwd-dwd-platform-coupon-redemption"></a>
#### DWD 表结构 — dwd.dwd_platform_coupon_redemption [🔗 ODS](#ods-platform-coupon-redemption-records)
共 20 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `platform_coupon_redemption_id` | bigint | [`id`](#ods-platform-coupon-redemption-records) | 直接 | 核销 ID |
| 2 | `tenant_id` | bigint | [`tenant_id`](#ods-platform-coupon-redemption-records) | 直接 | 租户 ID |
| 3 | `site_id` | bigint | [`site_id`](#ods-platform-coupon-redemption-records) | 直接 | 门店 ID |
| 4 | `coupon_code` | character varying | [`coupon_code`](#ods-platform-coupon-redemption-records) | 直接 | 券码 |
| 5 | `coupon_channel` | integer | [`coupon_channel`](#ods-platform-coupon-redemption-records) | 直接 | 券渠道。**枚举值**: 1=美团, 2=抖音 |
| 6 | `coupon_name` | character varying | [`coupon_name`](#ods-platform-coupon-redemption-records) | 直接 | 券名称。**样本值**: "【全天可用】中八桌球一小时A区", "【全天可用】中八桌球两小时A区" 等 |
| 7 | `sale_price` | numeric | [`sale_price`](#ods-platform-coupon-redemption-records) | 直接 | 售卖价(元)。**样本值**: 29.90, 69.90, 59.90, 39.90, 19.90 等 |
| 8 | `coupon_money` | numeric | [`coupon_money`](#ods-platform-coupon-redemption-records) | 直接 | 券面额(元)。**样本值**: 48.00, 96.00, 116.00, 68.00 等 |
| 9 | `coupon_free_time` | integer | [`coupon_free_time`](#ods-platform-coupon-redemption-records) | 直接 | 券赠送时长(当前数据全为 0 |
| 10 | `channel_deal_id` | bigint | [`channel_deal_id`](#ods-platform-coupon-redemption-records) | 直接 | 渠道交易 ID |
| 11 | `deal_id` | bigint | [`deal_id`](#ods-platform-coupon-redemption-records) | 直接 | 交易 ID |
| 12 | `group_package_id` | bigint | [`group_package_id`](#ods-platform-coupon-redemption-records) | 直接 | 团购套餐 ID当前数据全为 0 |
| 13 | `site_order_id` | bigint | [`site_order_id`](#ods-platform-coupon-redemption-records) | 直接 | 门店订单 ID |
| 14 | `table_id` | bigint | [`table_id`](#ods-platform-coupon-redemption-records) | 直接 | 台桌 ID → dim_table |
| 15 | `certificate_id` | character varying | [`certificate_id`](#ods-platform-coupon-redemption-records) | 直接 | 凭证 ID |
| 16 | `verify_id` | character varying | [`verify_id`](#ods-platform-coupon-redemption-records) | 直接 | 核验 ID仅抖音券有值 |
| 17 | `use_status` | integer | [`use_status`](#ods-platform-coupon-redemption-records) | 直接 | 使用状态。**枚举值**: 1=已使用, 2=已撤销 |
| 18 | `is_delete` | integer | [`is_delete`](#ods-platform-coupon-redemption-records) | 直接 | 删除标记。**枚举值**: 0=未删除 |
| 19 | `create_time` | timestamp with time zone | [`create_time`](#ods-platform-coupon-redemption-records) | 直接 | 创建时间 |
| 20 | `consume_time` | timestamp with time zone | [`consume_time`](#ods-platform-coupon-redemption-records) | 直接 | 核销时间 |
<a id="dwd-dwd-platform-coupon-redemption-ex"></a>
#### DWD 表结构 — dwd.dwd_platform_coupon_redemption_ex [🔗 ODS](#ods-platform-coupon-redemption-records)
共 6 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `platform_coupon_redemption_id` | bigint | [`id`](#ods-platform-coupon-redemption-records) | 直接 | 字段重命名 |
| 2 | `coupon_cover` | character varying | [`coupon_cover`](#ods-platform-coupon-redemption-records) | 直接 | 明细字段,用于记录事实取值 |
| 3 | `coupon_remark` | character varying | [`coupon_remark`](#ods-platform-coupon-redemption-records) | 直接 | 同名直传 |
| 4 | `groupon_type` | integer | [`groupon_type`](#ods-platform-coupon-redemption-records) | 直接 | 同名直传 |
| 5 | `operator_id` | bigint | [`operator_id`](#ods-platform-coupon-redemption-records) | 直接 | 同名直传 |
| 6 | `operator_name` | character varying | [`operator_name`](#ods-platform-coupon-redemption-records) | 直接 | 同名直传 |
### 3.10 member_profiles会员档案
- 任务代码:`ODS_MEMBER`
- 采样记录数200
- API JSON 字段数20
- ODS 列数25
- DWD 目标表dim_member, dim_member_ex
<a id="api-member-profiles"></a>
#### API 源字段 — member_profiles [🔗 ODS](#ods-member-profiles)
已映射 20/20覆盖率 100.0%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `id` | integer | [`id`](#ods-member-profiles) | 这是“租户内会员账户”的主键 ID | 枚举值: `3085176958944837`, `3066773303512389`, `3062388521698821`, `3055176918828421`, `3054195561631109`, `3052749341853317`, `3048238811858693`, `3043883848157381` |
| 2 | `create_time` | string | [`create_time`](#ods-member-profiles) | 会员账户的创建时间(即这条档案/这张卡在系统中被创建的时间) | 枚举值: `2026-02-07 21:04:20`, `2026-01-25 21:03:10`, `2026-01-22 18:42:44`, `2026-01-17 16:26:43`, `2026-01-16 23:48:25`, `2026-01-15 23:17:15`, `2026-01-12 18:48:54`, `2026-01-09 16:58:48` |
| 3 | `member_card_grade_code` | integer | [`member_card_grade_code`](#ods-member-profiles) | 这两个字段是成对出现的:一个数值码,一个中文名称 | 枚举值: `2790683528022856`, `2790683528022853`, `2790683528022855`, `2790683528022857` |
| 4 | `mobile` | string | [`mobile`](#ods-member-profiles) | 会员绑定的手机号码 | 枚举值: `13728281927`, `17306741548`, `13332883280`, `18898887676`, `15902048888`, `13434273425`, `15815818028`, `15146102616` |
| 5 | `nickname` | string | [`nickname`](#ods-member-profiles) | 会员在当前租户下的显示名称(可以是姓名,也可以是昵称) | 枚举值: `黄先生`, `李`, `袁`, `章先生`, `公孙先生`, `孙总`, `胡先生`, `吴先生` |
| 6 | `register_site_id` | integer | [`register_site_id`](#ods-member-profiles) | 会员的注册门店 ID | 示例: `2790685415443269` |
| 7 | `site_name` | string | [`site_name`](#ods-member-profiles) | 注册门店名称,属于冗余字段,用于直接展示 | 示例: `朗朗桌球` |
| 8 | `member_card_grade_name` | string | [`member_card_grade_name`](#ods-member-profiles) | 这是“会员卡种类/等级”的定义字段 | 枚举值: `活动抵用券`, `储值卡`, `台费卡`, `月卡` |
| 9 | `system_member_id` | integer | [`system_member_id`](#ods-member-profiles) | 这是“系统级会员 ID”在全平台唯一用来把一个会员在不同门店/不同卡类型下的账户统一到一个“人”的维度上 | 枚举值: `3085176956307013`, `3066773300268357`, `3062388519667205`, `3055176917108101`, `3054195559402885`, `3052749336856197`, `3048238810220293`, `3043883846568133` |
| 10 | `tenant_id` | integer | [`tenant_id`](#ods-member-profiles) | 租户/品牌 ID | 示例: `2790683160709957` |
| 11 | `referrer_member_id` | integer | [`referrer_member_id`](#ods-member-profiles) | 推荐人会员 ID用于记录该会员是由哪位老会员推荐 | 示例: `0` |
| 12 | `point` | number | [`point`](#ods-member-profiles) | 当前积分余额(这条会员账户的积分值) | 示例: `0.0` |
| 13 | `user_status` | integer | [`user_status`](#ods-member-profiles) | 用户账号状态(偏“用户逻辑”层面的状态) | 示例: `1` |
| 14 | `status` | integer | [`status`](#ods-member-profiles) | 帐户状态(偏“卡状态/档案状态”) | 枚举值: `1`, `3` |
| 15 | `growth_value` | number | [`growth_value`](#ods-member-profiles) | 成长值 / 经验值,用于会员等级晋升的累计指标 | 示例: `0.0` |
| 16 | `person_tenant_org_id` | integer | [`person_tenant_org_id`](#ods-member-profiles) | 人员租户组织ID | 示例: `0` |
| 17 | `person_tenant_org_name` | string | [`person_tenant_org_name`](#ods-member-profiles) | 人员租户组织名称 | |
| 18 | `register_source` | integer | [`register_source`](#ods-member-profiles) | 注册来源 | 枚举值: `6`, `1` |
| 19 | `recharge_money_sum` | number | [`recharge_money_sum`](#ods-member-profiles) | 累计充值金额 | 枚举值: `5000.0`, `188.0`, `1000.0`, `3288.0`, `17078.51`, `2176.0`, `6576.0`, `1376.0` |
| 20 | `pay_money_sum` | number | [`pay_money_sum`](#ods-member-profiles) | 累计支付金额 | 枚举值: `-12.79`, `-188.0`, `-203.4`, `-808.51`, `-989.24`, `-17078.51`, `-2064.94`, `-5705.0` |
<a id="ods-member-profiles"></a>
#### ODS 表结构 — ods.member_profiles [🔗 API](#api-member-profiles)
共 25 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `tenant_id` | bigint | [`tenant_id`](#api-member-profiles) | [`dim_member.tenant_id`](#dwd-dim-member) | 租户/品牌 ID |
| 2 | `register_site_id` | bigint | [`register_site_id`](#api-member-profiles) | [`dim_member.register_site_id`](#dwd-dim-member) | 会员的注册门店 ID |
| 3 | `site_name` | text | [`site_name`](#api-member-profiles) | [`dim_member_ex.register_site_name`](#dwd-dim-member-ex) | 注册门店名称,属于冗余字段,用于直接展示 |
| 4 | `id` | bigint | [`id`](#api-member-profiles) | [`dim_member.member_id`](#dwd-dim-member), [`dim_member_ex.member_id`](#dwd-dim-member-ex) | 这是“租户内会员账户”的主键 ID |
| 5 | `system_member_id` | bigint | [`system_member_id`](#api-member-profiles) | [`dim_member.system_member_id`](#dwd-dim-member) | 这是“系统级会员 ID”在全平台唯一用来把一个会员在不同门店/不同卡类型下的账户统一到一个“人”的维度上 |
| 6 | `member_card_grade_code` | bigint | [`member_card_grade_code`](#api-member-profiles) | [`dim_member.member_card_grade_code`](#dwd-dim-member) | 这两个字段是成对出现的:一个数值码,一个中文名称 |
| 7 | `member_card_grade_name` | text | [`member_card_grade_name`](#api-member-profiles) | [`dim_member.member_card_grade_name`](#dwd-dim-member) | 这是“会员卡种类/等级”的定义字段 |
| 8 | `mobile` | text | [`mobile`](#api-member-profiles) | [`dim_member.mobile`](#dwd-dim-member) | 会员绑定的手机号码 |
| 9 | `nickname` | text | [`nickname`](#api-member-profiles) | [`dim_member.nickname`](#dwd-dim-member) | 会员在当前租户下的显示名称(可以是姓名,也可以是昵称) |
| 10 | `point` | numeric | [`point`](#api-member-profiles) | [`dim_member_ex.point`](#dwd-dim-member-ex) | 当前积分余额(这条会员账户的积分值) |
| 11 | `growth_value` | numeric | [`growth_value`](#api-member-profiles) | [`dim_member_ex.growth_value`](#dwd-dim-member-ex) | 成长值 / 经验值,用于会员等级晋升的累计指标 |
| 12 | `referrer_member_id` | bigint | [`referrer_member_id`](#api-member-profiles) | [`dim_member_ex.referrer_member_id`](#dwd-dim-member-ex) | 推荐人会员 ID用于记录该会员是由哪位老会员推荐 |
| 13 | `status` | integer | [`status`](#api-member-profiles) | [`dim_member_ex.status`](#dwd-dim-member-ex) | 帐户状态(偏“卡状态/档案状态”) |
| 14 | `user_status` | integer | [`user_status`](#api-member-profiles) | [`dim_member_ex.user_status`](#dwd-dim-member-ex) | 用户账号状态(偏“用户逻辑”层面的状态) |
| 15 | `create_time` | timestamp without time zone | [`create_time`](#api-member-profiles) | [`dim_member.create_time`](#dwd-dim-member) | 会员账户的创建时间(即这条档案/这张卡在系统中被创建的时间) |
| 16 | `pay_money_sum` | numeric | [`pay_money_sum`](#api-member-profiles) | [`dim_member.pay_money_sum`](#dwd-dim-member) | 累计支付金额 |
| 17 | `person_tenant_org_id` | bigint | [`person_tenant_org_id`](#api-member-profiles) | [`dim_member_ex.person_tenant_org_id`](#dwd-dim-member-ex) | 人员租户组织ID |
| 18 | `person_tenant_org_name` | text | [`person_tenant_org_name`](#api-member-profiles) | [`dim_member_ex.person_tenant_org_name`](#dwd-dim-member-ex) | 人员租户组织名称 |
| 19 | `recharge_money_sum` | numeric | [`recharge_money_sum`](#api-member-profiles) | [`dim_member.recharge_money_sum`](#dwd-dim-member) | 累计充值金额 |
| 20 | `register_source` | text | [`register_source`](#api-member-profiles) | [`dim_member_ex.register_source`](#dwd-dim-member-ex) | 注册来源 |
| 21 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 22 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 23 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 24 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
| 25 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
<a id="dwd-dim-member"></a>
#### DWD 表结构 — dwd.dim_member [🔗 ODS](#ods-member-profiles)
共 16 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `member_id` | bigint | [`id`](#ods-member-profiles) | 直接 | 租户内会员 IDtenant_member_id |
| 2 | `system_member_id` | bigint | [`system_member_id`](#ods-member-profiles) | 直接 | 系统级会员 ID |
| 3 | `tenant_id` | bigint | [`tenant_id`](#ods-member-profiles) | 直接 | 租户 ID当前值: 2790683160709957 |
| 4 | `register_site_id` | bigint | [`register_site_id`](#ods-member-profiles) | 直接 | 注册门店 ID → dim_site当前值: 2790685415443269 |
| 5 | `mobile` | text | [`mobile`](#ods-member-profiles) | 直接 | 手机号码 |
| 6 | `nickname` | text | [`nickname`](#ods-member-profiles) | 直接 | 昵称。**样本值**: "陈先生", "张先生", "李先生",等 |
| 7 | `member_card_grade_code` | bigint | [`member_card_grade_code`](#ods-member-profiles) | 直接 | 卡等级代码 |
| 8 | `member_card_grade_name` | text | [`member_card_grade_name`](#ods-member-profiles) | 直接 | 卡等级名称。**枚举值**: "储值卡", "台费卡", "年卡", "活动抵用券", "月卡" |
| 9 | `create_time` | timestamp with time zone | [`create_time`](#ods-member-profiles) | 直接 | 创建时间 |
| 10 | `update_time` | timestamp with time zone | — | — | 更新时间 |
| 11 | `pay_money_sum` | numeric | [`pay_money_sum`](#ods-member-profiles) | 直接 | 累计支付金额 |
| 12 | `recharge_money_sum` | numeric | [`recharge_money_sum`](#ods-member-profiles) | 直接 | 累计充值金额 |
| 13 | `scd2_start_time` | timestamp with time zone | — | SCD2 | SCD2 版本生效时间 |
| 14 | `scd2_end_time` | timestamp with time zone | — | SCD2 | SCD2 版本失效时间 |
| 15 | `scd2_is_current` | integer | — | SCD2 | 当前版本标记 |
| 16 | `scd2_version` | integer | — | SCD2 | 版本号 |
<a id="dwd-dim-member-ex"></a>
#### DWD 表结构 — dwd.dim_member_ex [🔗 ODS](#ods-member-profiles)
共 14 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `member_id` | bigint | [`id`](#ods-member-profiles) | 直接 | 字段重命名 |
| 2 | `referrer_member_id` | bigint | [`referrer_member_id`](#ods-member-profiles) | 直接 | 同名直传 |
| 3 | `point` | numeric | [`point`](#ods-member-profiles) | 直接 | 同名直传 |
| 4 | `register_site_name` | text | [`site_name`](#ods-member-profiles) | 直接 | 字段重命名 |
| 5 | `growth_value` | numeric | [`growth_value`](#ods-member-profiles) | 直接 | 同名直传 |
| 6 | `user_status` | integer | [`user_status`](#ods-member-profiles) | 直接 | 同名直传 |
| 7 | `status` | integer | [`status`](#ods-member-profiles) | 直接 | 同名直传 |
| 8 | `person_tenant_org_id` | bigint | [`person_tenant_org_id`](#ods-member-profiles) | 直接 | |
| 9 | `person_tenant_org_name` | text | [`person_tenant_org_name`](#ods-member-profiles) | 直接 | |
| 10 | `register_source` | text | [`register_source`](#ods-member-profiles) | 直接 | |
| 11 | `scd2_start_time` | timestamp with time zone | — | SCD2 | SCD2 元数据 |
| 12 | `scd2_end_time` | timestamp with time zone | — | SCD2 | SCD2 元数据 |
| 13 | `scd2_is_current` | integer | — | SCD2 | SCD2 元数据 |
| 14 | `scd2_version` | integer | — | SCD2 | SCD2 元数据 |
### 3.11 member_stored_value_cards会员储值卡
- 任务代码:`ODS_MEMBER_CARD`
- 采样记录数200
- API JSON 字段数71
- ODS 列数80
- DWD 目标表dim_member_card_account, dim_member_card_account_ex
<a id="api-member-stored-value-cards"></a>
#### API 源字段 — member_stored_value_cards [🔗 ODS](#ods-member-stored-value-cards)
已映射 71/71覆盖率 100.0%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `site_name` | string | [`site_name`](#ods-member-stored-value-cards) | 卡归属门店名称(视图中的展示字段) | 示例: `朗朗桌球` |
| 2 | `member_name` | string | [`member_name`](#ods-member-stored-value-cards) | 持卡会员姓名快照 | 出现率 98%;枚举值: `黄先生`, `李`, `袁`, `章先生`, `公孙先生`, `孙总`, `胡先生`, `吴先生` |
| 3 | `member_mobile` | string | [`member_mobile`](#ods-member-stored-value-cards) | 持卡会员手机号快照 | 出现率 98%;枚举值: `13728281927`, `17306741548`, `13332883280`, `15726865555`, `18898887676`, `15902048888`, `13434273425`, `15815818028` |
| 4 | `member_card_type_name` | string | [`member_card_type_name`](#ods-member-stored-value-cards) | 卡类型名称,实际与 member_card_grade_code_name 一致 | 枚举值: `活动抵用券`, `储值卡`, `台费卡`, `月卡`, `酒水卡` |
| 5 | `table_service_discount` | number | [`table_service_discount`](#ods-member-stored-value-cards) | 数量/时长字段,用于统计与计量 | 示例: `10.0` |
| 6 | `assistant_service_discount` | number | [`assistant_service_discount`](#ods-member-stored-value-cards) | 数量/时长字段,用于统计与计量 | 示例: `10.0` |
| 7 | `coupon_discount` | number | [`coupon_discount`](#ods-member-stored-value-cards) | 数量/时长字段,用于统计与计量 | 示例: `10.0` |
| 8 | `goods_service_discount` | number | [`goods_service_discount`](#ods-member-stored-value-cards) | 数量/时长字段,用于统计与计量 | 示例: `10.0` |
| 9 | `electricity_discount` | number | [`electricity_discount`](#ods-member-stored-value-cards) | 电费折扣 | 示例: `10.0` |
| 10 | `is_allow_give` | integer | [`is_allow_give`](#ods-member-stored-value-cards) | 是否允许转赠/转让给其他会员 | 示例: `0` |
| 11 | `able_cross_site` | integer | [`able_cross_site`](#ods-member-stored-value-cards) | 是否允许跨店使用 | 示例: `1` |
| 12 | `cardSettleDeduct` | number | [`cardsettlededuct`](#ods-member-stored-value-cards) | (待补充) | 大小写匹配;示例: `0.0` |
| 13 | `tenantAvatar` | string | [`tenantavatar`](#ods-member-stored-value-cards) | (待补充) | 大小写匹配 |
| 14 | `tenantName` | string | [`tenantname`](#ods-member-stored-value-cards) | (待补充) | 大小写匹配 |
| 15 | `member_card_grade_code_name` | string | [`member_card_grade_code_name`](#ods-member-stored-value-cards) | 卡等级/卡类名称 | 枚举值: `活动抵用券`, `储值卡`, `台费卡`, `月卡`, `酒水卡` |
| 16 | `table_discount_sub_switch` | integer | [`table_discount_sub_switch`](#ods-member-stored-value-cards) | 数量/时长字段,用于统计与计量 | 示例: `2` |
| 17 | `goods_discount_sub_switch` | integer | [`goods_discount_sub_switch`](#ods-member-stored-value-cards) | 数量/时长字段,用于统计与计量 | 示例: `2` |
| 18 | `assistant_discount_sub_switch` | integer | [`assistant_discount_sub_switch`](#ods-member-stored-value-cards) | 数量/时长字段,用于统计与计量 | 示例: `2` |
| 19 | `assistant_reward_discount_sub_switch` | integer | [`assistant_reward_discount_sub_switch`](#ods-member-stored-value-cards) | 数量/时长字段,用于统计与计量 | 示例: `2` |
| 20 | `goods_discount_range_type` | integer | [`goods_discount_range_type`](#ods-member-stored-value-cards) | 数量/时长字段,用于统计与计量 | 示例: `1` |
| 21 | `use_scene` | string | [`use_scene`](#ods-member-stored-value-cards) | 卡使用场景说明(比如“仅店内使用”“仅团建”等),本门店尚未使用此字段 | |
| 22 | `balance` | number | [`balance`](#ods-member-stored-value-cards) | 当前卡内余额(主要针对储值卡、部分券卡) | 枚举值: `4987.21`, `0.0`, `796.6`, `88.0`, `2479.49`, `2298.76`, `111.06`, `871.0` |
| 23 | `table_deduct_radio` | number | [`table_deduct_radio`](#ods-member-stored-value-cards) | 金额字段,用于计费/结算/分摊等金额计算 | 示例: `100.0` |
| 24 | `table_service_deduct_radio` | number | [`table_service_deduct_radio`](#ods-member-stored-value-cards) | 金额字段,用于计费/结算/分摊等金额计算 | 示例: `100.0` |
| 25 | `goods_deduct_radio` | number | [`goods_deduct_radio`](#ods-member-stored-value-cards) | 金额字段,用于计费/结算/分摊等金额计算 | 示例: `100.0` |
| 26 | `goods_service_deduct_radio` | number | [`goods_service_deduct_radio`](#ods-member-stored-value-cards) | 金额字段,用于计费/结算/分摊等金额计算 | 示例: `100.0` |
| 27 | `assistant_deduct_radio` | number | [`assistant_deduct_radio`](#ods-member-stored-value-cards) | 金额字段,用于计费/结算/分摊等金额计算 | 示例: `100.0` |
| 28 | `assistant_service_deduct_radio` | number | [`assistant_service_deduct_radio`](#ods-member-stored-value-cards) | 金额字段,用于计费/结算/分摊等金额计算 | 示例: `100.0` |
| 29 | `assistant_reward_deduct_radio` | number | [`assistant_reward_deduct_radio`](#ods-member-stored-value-cards) | 金额字段,用于计费/结算/分摊等金额计算 | 示例: `100.0` |
| 30 | `coupon_deduct_radio` | number | [`coupon_deduct_radio`](#ods-member-stored-value-cards) | 金额字段,用于计费/结算/分摊等金额计算 | 示例: `100.0` |
| 31 | `electricity_deduct_radio` | number | [`electricity_deduct_radio`](#ods-member-stored-value-cards) | 电费扣减比例 | 示例: `100.0` |
| 32 | `electricityCardDeduct` | number | [`electricitycarddeduct`](#ods-member-stored-value-cards) | 电费卡扣 | 大小写匹配;示例: `0.0` |
| 33 | `tableCardDeduct` | number | [`tablecarddeduct`](#ods-member-stored-value-cards) | (待补充) | 大小写匹配;示例: `0.0` |
| 34 | `tableServiceCardDeduct` | number | [`tableservicecarddeduct`](#ods-member-stored-value-cards) | (待补充) | 大小写匹配;示例: `0.0` |
| 35 | `goodsCarDeduct` | number | [`goodscardeduct`](#ods-member-stored-value-cards) | (待补充) | 大小写匹配;示例: `0.0` |
| 36 | `goodsServiceCardDeduct` | number | [`goodsservicecarddeduct`](#ods-member-stored-value-cards) | (待补充) | 大小写匹配;示例: `0.0` |
| 37 | `assistantCardDeduct` | number | [`assistantcarddeduct`](#ods-member-stored-value-cards) | (待补充) | 大小写匹配;示例: `0.0` |
| 38 | `assistantServiceCardDeduct` | number | [`assistantservicecarddeduct`](#ods-member-stored-value-cards) | (待补充) | 大小写匹配;示例: `0.0` |
| 39 | `assistantRewardCardDeduct` | number | [`assistantrewardcarddeduct`](#ods-member-stored-value-cards) | (待补充) | 大小写匹配;示例: `0.0` |
| 40 | `couponCardDeduct` | number | [`couponcarddeduct`](#ods-member-stored-value-cards) | (待补充) | 大小写匹配;示例: `0.0` |
| 41 | `deliveryFeeDeduct` | number | [`deliveryfeededuct`](#ods-member-stored-value-cards) | (待补充) | 大小写匹配;示例: `0.0` |
| 42 | `is_allow_order_deduct` | integer | [`is_allow_order_deduct`](#ods-member-stored-value-cards) | 是否允许在“订单层面统一扣款” | 示例: `0` |
| 43 | `member_grade` | integer | [`member_grade`](#ods-member-stored-value-cards) | 会员等级 | 枚举值: `2790683528022856`, `2790683528022853`, `2790683528022855`, `2790683528022857`, `0`, `2790683528022854` |
| 44 | `able_share_member_discount` | integer | [`able_share_member_discount`](#ods-member-stored-value-cards) | 是否可共享会员折扣 | 示例: `1` |
| 45 | `rechargeFreezeBalance` | number | [`rechargefreezebalance`](#ods-member-stored-value-cards) | 充值冻结余额 | 大小写匹配;示例: `0.0` |
| 46 | `id` | integer | [`id`](#ods-member-stored-value-cards) | 本表主键 ID用于唯一标识一条记录 | 枚举值: `3085176959321669`, `3066773307755845`, `3062388522452485`, `3055567606646661`, `3055177241628037`, `3055176919745925`, `3054195913755845`, `3054195562007941` |
| 47 | `assistant_discount` | number | [`assistant_discount`](#ods-member-stored-value-cards) | 数量/时长字段,用于统计与计量 | 示例: `10.0` |
| 48 | `assistant_reward_discount` | number | [`assistant_reward_discount`](#ods-member-stored-value-cards) | 数量/时长字段,用于统计与计量 | 示例: `10.0` |
| 49 | `bind_password` | string | [`bind_password`](#ods-member-stored-value-cards) | 卡绑定密码,用于消费或查询验证(目前未启用) | |
| 50 | `card_no` | string | [`card_no`](#ods-member-stored-value-cards) | 实体卡物理卡号/条码号 | |
| 51 | `card_physics_type` | integer | [`card_physics_type`](#ods-member-stored-value-cards) | 物理卡类型 | 示例: `1` |
| 52 | `card_type_id` | integer | [`card_type_id`](#ods-member-stored-value-cards) | 卡种 ID定义“这是哪一种卡” | 枚举值: `2793266846533445`, `2793249295533893`, `2791990152417157`, `2793306611533637`, `2794699703437125` |
| 53 | `create_time` | string | [`create_time`](#ods-member-stored-value-cards) | 卡片创建时间(开卡时间) | 枚举值: `2026-02-07 21:04:20`, `2026-01-25 21:03:10`, `2026-01-22 18:42:44`, `2026-01-17 23:04:08`, `2026-01-17 16:27:02`, `2026-01-17 16:26:43`, `2026-01-16 23:48:47`, `2026-01-16 23:48:25` |
| 54 | `denomination` | number | [`denomination`](#ods-member-stored-value-cards) | 采用“几折”的记法10=不打折9=九折8=八折 | 示例: `0.0` |
| 55 | `disable_end_time` | string | [`disable_end_time`](#ods-member-stored-value-cards) | 停用时间段(比如临时冻结卡的起止时间) | 示例: `0001-01-01 00:00:00` |
| 56 | `disable_start_time` | string | [`disable_start_time`](#ods-member-stored-value-cards) | 停用时间段(比如临时冻结卡的起止时间) | 示例: `0001-01-01 00:00:00` |
| 57 | `effect_site_id` | integer | [`effect_site_id`](#ods-member-stored-value-cards) | 卡片限定生效门店 ID | 示例: `0` |
| 58 | `end_time` | string | [`end_time`](#ods-member-stored-value-cards) | 卡片有效期结束时间 | 枚举值: `2225-01-01 00:00:00`, `2025-12-29 18:36:43`, `2025-11-22 20:00:54`, `2025-10-16 19:04:52`, `2025-10-14 18:55:53`, `2025-08-30 15:31:33` |
| 59 | `goods_discount` | number | [`goods_discount`](#ods-member-stored-value-cards) | 数量/时长字段,用于统计与计量 | 示例: `10.0` |
| 60 | `is_delete` | integer | [`is_delete`](#ods-member-stored-value-cards) | 逻辑删除标志 | 示例: `0` |
| 61 | `last_consume_time` | string | [`last_consume_time`](#ods-member-stored-value-cards) | 最近一次消费时间 | 枚举值: `2026-02-11 17:12:24`, `2026-01-28 13:11:46`, `2026-02-02 23:05:28`, `2026-01-17 23:31:05`, `2026-02-06 16:09:21`, `2026-01-28 23:54:57`, `2026-02-01 19:46:39`, `2026-01-20 07:19:17` |
| 62 | `member_card_grade_code` | integer | [`member_card_grade_code`](#ods-member-stored-value-cards) | 卡等级/卡类代码,和下面两个名称字段一一对应 | 枚举值: `2790683528022856`, `2790683528022853`, `2790683528022855`, `2790683528022857`, `2790683528022858` |
| 63 | `principal_balance` | number | [`principal_balance`](#ods-member-stored-value-cards) | 本金余额 | 枚举值: `0.0`, `796.6`, `88.0`, `2479.49`, `2298.76`, `111.06`, `871.0`, `488.77` |
| 64 | `register_site_id` | integer | [`register_site_id`](#ods-member-stored-value-cards) | 卡首次办理的门店 ID | 示例: `2790685415443269` |
| 65 | `sort` | integer | [`sort`](#ods-member-stored-value-cards) | 在前端展示或某些列表中的排序权重 | 示例: `1` |
| 66 | `start_time` | string | [`start_time`](#ods-member-stored-value-cards) | 卡片生效开始时间(有效期起始) | 枚举值: `2026-02-07 21:04:20`, `2026-01-25 21:03:10`, `2026-01-22 18:42:44`, `2026-01-17 23:04:08`, `2026-01-17 16:27:02`, `2026-01-17 16:26:43`, `2026-01-16 23:48:47`, `2026-01-16 23:48:25` |
| 67 | `status` | integer | [`status`](#ods-member-stored-value-cards) | 状态枚举,用于标识记录当前业务状态 | 枚举值: `1`, `4` |
| 68 | `system_member_id` | integer | [`system_member_id`](#ods-member-stored-value-cards) | 系统级会员 ID跨门店统一主键 | 枚举值: `3085176956307013`, `3066773300268357`, `3062388519667205`, `2799207086114565`, `3055176917108101`, `3054195559402885`, `3052749336856197`, `3048238810220293` |
| 69 | `table_discount` | number | [`table_discount`](#ods-member-stored-value-cards) | 数量/时长字段,用于统计与计量 | 示例: `10.0` |
| 70 | `tenant_id` | integer | [`tenant_id`](#ods-member-stored-value-cards) | 租户/品牌 ID与其他 JSON 中 tenant_id 一致 | 示例: `2790683160709957` |
| 71 | `tenant_member_id` | integer | [`tenant_member_id`](#ods-member-stored-value-cards) | 当前商户(品牌/租户)中会员的主键 ID | 枚举值: `3085176958944837`, `3066773303512389`, `3062388521698821`, `2799207087163141`, `3055176918828421`, `3054195561631109`, `3052749341853317`, `3048238811858693` |
<a id="ods-member-stored-value-cards"></a>
#### ODS 表结构 — ods.member_stored_value_cards [🔗 API](#api-member-stored-value-cards)
共 80 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `tenant_id` | bigint | [`tenant_id`](#api-member-stored-value-cards) | [`dim_member_card_account.tenant_id`](#dwd-dim-member-card-account) | 租户/品牌 ID与其他 JSON 中 tenant_id 一致 |
| 2 | `tenant_member_id` | bigint | [`tenant_member_id`](#api-member-stored-value-cards) | [`dim_member_card_account.tenant_member_id`](#dwd-dim-member-card-account) | 当前商户(品牌/租户)中会员的主键 ID |
| 3 | `system_member_id` | bigint | [`system_member_id`](#api-member-stored-value-cards) | [`dim_member_card_account.system_member_id`](#dwd-dim-member-card-account) | 系统级会员 ID跨门店统一主键 |
| 4 | `register_site_id` | bigint | [`register_site_id`](#api-member-stored-value-cards) | [`dim_member_card_account.register_site_id`](#dwd-dim-member-card-account) | 卡首次办理的门店 ID |
| 5 | `site_name` | text | [`site_name`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.site_name`](#dwd-dim-member-card-account-ex) | 卡归属门店名称(视图中的展示字段) |
| 6 | `id` | bigint | [`id`](#api-member-stored-value-cards) | [`dim_member_card_account.member_card_id`](#dwd-dim-member-card-account), [`dim_member_card_account_ex.member_card_id`](#dwd-dim-member-card-account-ex) | 本表主键 ID用于唯一标识一条记录 |
| 7 | `member_card_grade_code` | bigint | [`member_card_grade_code`](#api-member-stored-value-cards) | [`dim_member_card_account.member_card_grade_code`](#dwd-dim-member-card-account) | 卡等级/卡类代码,和下面两个名称字段一一对应 |
| 8 | `member_card_grade_code_name` | text | [`member_card_grade_code_name`](#api-member-stored-value-cards) | [`dim_member_card_account.member_card_grade_code_name`](#dwd-dim-member-card-account) | 卡等级/卡类名称 |
| 9 | `member_card_type_name` | text | [`member_card_type_name`](#api-member-stored-value-cards) | [`dim_member_card_account.member_card_type_name`](#dwd-dim-member-card-account) | 卡类型名称,实际与 member_card_grade_code_name 一致 |
| 10 | `member_name` | text | [`member_name`](#api-member-stored-value-cards) | [`dim_member_card_account.member_name`](#dwd-dim-member-card-account) | 持卡会员姓名快照 |
| 11 | `member_mobile` | text | [`member_mobile`](#api-member-stored-value-cards) | [`dim_member_card_account.member_mobile`](#dwd-dim-member-card-account) | 持卡会员手机号快照 |
| 12 | `card_type_id` | bigint | [`card_type_id`](#api-member-stored-value-cards) | [`dim_member_card_account.card_type_id`](#dwd-dim-member-card-account) | 卡种 ID定义“这是哪一种卡” |
| 13 | `card_no` | text | [`card_no`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.card_no`](#dwd-dim-member-card-account-ex) | 实体卡物理卡号/条码号 |
| 14 | `card_physics_type` | text | [`card_physics_type`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.card_physics_type`](#dwd-dim-member-card-account-ex) | 物理卡类型 |
| 15 | `balance` | numeric | [`balance`](#api-member-stored-value-cards) | [`dim_member_card_account.balance`](#dwd-dim-member-card-account) | 当前卡内余额(主要针对储值卡、部分券卡) |
| 16 | `denomination` | numeric | [`denomination`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.denomination`](#dwd-dim-member-card-account-ex) | 采用“几折”的记法10=不打折9=九折8=八折 |
| 17 | `table_discount` | numeric | [`table_discount`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.table_discount`](#dwd-dim-member-card-account-ex) | 数量/时长字段,用于统计与计量 |
| 18 | `goods_discount` | numeric | [`goods_discount`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.goods_discount`](#dwd-dim-member-card-account-ex) | 数量/时长字段,用于统计与计量 |
| 19 | `assistant_discount` | numeric | [`assistant_discount`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.assistant_discount`](#dwd-dim-member-card-account-ex) | 数量/时长字段,用于统计与计量 |
| 20 | `assistant_reward_discount` | numeric | [`assistant_reward_discount`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.assistant_reward_discount`](#dwd-dim-member-card-account-ex) | 数量/时长字段,用于统计与计量 |
| 21 | `table_service_discount` | numeric | [`table_service_discount`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.table_service_discount`](#dwd-dim-member-card-account-ex) | 数量/时长字段,用于统计与计量 |
| 22 | `assistant_service_discount` | numeric | [`assistant_service_discount`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.assistant_service_discount`](#dwd-dim-member-card-account-ex) | 数量/时长字段,用于统计与计量 |
| 23 | `coupon_discount` | numeric | [`coupon_discount`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.coupon_discount`](#dwd-dim-member-card-account-ex) | 数量/时长字段,用于统计与计量 |
| 24 | `goods_service_discount` | numeric | [`goods_service_discount`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.goods_service_discount`](#dwd-dim-member-card-account-ex) | 数量/时长字段,用于统计与计量 |
| 25 | `assistant_discount_sub_switch` | integer | [`assistant_discount_sub_switch`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.assistant_discount_sub_switch`](#dwd-dim-member-card-account-ex) | 数量/时长字段,用于统计与计量 |
| 26 | `table_discount_sub_switch` | integer | [`table_discount_sub_switch`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.table_discount_sub_switch`](#dwd-dim-member-card-account-ex) | 数量/时长字段,用于统计与计量 |
| 27 | `goods_discount_sub_switch` | integer | [`goods_discount_sub_switch`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.goods_discount_sub_switch`](#dwd-dim-member-card-account-ex) | 数量/时长字段,用于统计与计量 |
| 28 | `assistant_reward_discount_sub_switch` | integer | [`assistant_reward_discount_sub_switch`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.assistant_reward_discount_sub_switch`](#dwd-dim-member-card-account-ex) | 数量/时长字段,用于统计与计量 |
| 29 | `table_service_deduct_radio` | numeric | [`table_service_deduct_radio`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.table_service_deduct_radio`](#dwd-dim-member-card-account-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 30 | `assistant_service_deduct_radio` | numeric | [`assistant_service_deduct_radio`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.assistant_service_deduct_radio`](#dwd-dim-member-card-account-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 31 | `goods_service_deduct_radio` | numeric | [`goods_service_deduct_radio`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.goods_service_deduct_radio`](#dwd-dim-member-card-account-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 32 | `assistant_deduct_radio` | numeric | [`assistant_deduct_radio`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.assistant_deduct_radio`](#dwd-dim-member-card-account-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 33 | `table_deduct_radio` | numeric | [`table_deduct_radio`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.table_deduct_radio`](#dwd-dim-member-card-account-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 34 | `goods_deduct_radio` | numeric | [`goods_deduct_radio`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.goods_deduct_radio`](#dwd-dim-member-card-account-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 35 | `coupon_deduct_radio` | numeric | [`coupon_deduct_radio`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.coupon_deduct_radio`](#dwd-dim-member-card-account-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 36 | `assistant_reward_deduct_radio` | numeric | [`assistant_reward_deduct_radio`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.assistant_reward_deduct_radio`](#dwd-dim-member-card-account-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 37 | `tablecarddeduct` | numeric | [`tableCardDeduct`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.tablecarddeduct`](#dwd-dim-member-card-account-ex) | (待补充) |
| 38 | `tableservicecarddeduct` | numeric | [`tableServiceCardDeduct`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.tableservicecarddeduct`](#dwd-dim-member-card-account-ex) | (待补充) |
| 39 | `goodscardeduct` | numeric | [`goodsCarDeduct`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.goodscardeduct`](#dwd-dim-member-card-account-ex) | (待补充) |
| 40 | `goodsservicecarddeduct` | numeric | [`goodsServiceCardDeduct`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.goodsservicecarddeduct`](#dwd-dim-member-card-account-ex) | (待补充) |
| 41 | `assistantcarddeduct` | numeric | [`assistantCardDeduct`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.assistantcarddeduct`](#dwd-dim-member-card-account-ex) | (待补充) |
| 42 | `assistantservicecarddeduct` | numeric | [`assistantServiceCardDeduct`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.assistantservicecarddeduct`](#dwd-dim-member-card-account-ex) | (待补充) |
| 43 | `assistantrewardcarddeduct` | numeric | [`assistantRewardCardDeduct`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.assistantrewardcarddeduct`](#dwd-dim-member-card-account-ex) | (待补充) |
| 44 | `cardsettlededuct` | numeric | [`cardSettleDeduct`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.cardsettlededuct`](#dwd-dim-member-card-account-ex) | (待补充) |
| 45 | `couponcarddeduct` | numeric | [`couponCardDeduct`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.couponcarddeduct`](#dwd-dim-member-card-account-ex) | (待补充) |
| 46 | `deliveryfeededuct` | numeric | [`deliveryFeeDeduct`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.deliveryfeededuct`](#dwd-dim-member-card-account-ex) | (待补充) |
| 47 | `use_scene` | integer | [`use_scene`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.use_scene`](#dwd-dim-member-card-account-ex) | 卡使用场景说明(比如“仅店内使用”“仅团建”等),本门店尚未使用此字段 |
| 48 | `able_cross_site` | integer | [`able_cross_site`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.able_cross_site`](#dwd-dim-member-card-account-ex) | 是否允许跨店使用 |
| 49 | `is_allow_give` | integer | [`is_allow_give`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.is_allow_give`](#dwd-dim-member-card-account-ex) | 是否允许转赠/转让给其他会员 |
| 50 | `is_allow_order_deduct` | integer | [`is_allow_order_deduct`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.is_allow_order_deduct`](#dwd-dim-member-card-account-ex) | 是否允许在“订单层面统一扣款” |
| 51 | `is_delete` | integer | [`is_delete`](#api-member-stored-value-cards) | [`dim_member_card_account.is_delete`](#dwd-dim-member-card-account) | 逻辑删除标志 |
| 52 | `bind_password` | text | [`bind_password`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.bind_password`](#dwd-dim-member-card-account-ex) | 卡绑定密码,用于消费或查询验证(目前未启用) |
| 53 | `goods_discount_range_type` | integer | [`goods_discount_range_type`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.goods_discount_range_type`](#dwd-dim-member-card-account-ex) | 数量/时长字段,用于统计与计量 |
| 54 | `goodscategoryid` | bigint | — | [`dim_member_card_account_ex.goodscategoryid`](#dwd-dim-member-card-account-ex) | (待补充) |
| 55 | `tableareaid` | bigint | — | [`dim_member_card_account_ex.tableareaid`](#dwd-dim-member-card-account-ex) | (待补充) |
| 56 | `effect_site_id` | bigint | [`effect_site_id`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.effect_site_id`](#dwd-dim-member-card-account-ex) | 卡片限定生效门店 ID |
| 57 | `start_time` | timestamp without time zone | [`start_time`](#api-member-stored-value-cards) | [`dim_member_card_account.start_time`](#dwd-dim-member-card-account) | 卡片生效开始时间(有效期起始) |
| 58 | `end_time` | timestamp without time zone | [`end_time`](#api-member-stored-value-cards) | [`dim_member_card_account.end_time`](#dwd-dim-member-card-account) | 卡片有效期结束时间 |
| 59 | `disable_start_time` | timestamp without time zone | [`disable_start_time`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.disable_start_time`](#dwd-dim-member-card-account-ex) | 停用时间段(比如临时冻结卡的起止时间) |
| 60 | `disable_end_time` | timestamp without time zone | [`disable_end_time`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.disable_end_time`](#dwd-dim-member-card-account-ex) | 停用时间段(比如临时冻结卡的起止时间) |
| 61 | `last_consume_time` | timestamp without time zone | [`last_consume_time`](#api-member-stored-value-cards) | [`dim_member_card_account.last_consume_time`](#dwd-dim-member-card-account) | 最近一次消费时间 |
| 62 | `create_time` | timestamp without time zone | [`create_time`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.create_time`](#dwd-dim-member-card-account-ex) | 卡片创建时间(开卡时间) |
| 63 | `status` | integer | [`status`](#api-member-stored-value-cards) | [`dim_member_card_account.status`](#dwd-dim-member-card-account) | 状态枚举,用于标识记录当前业务状态 |
| 64 | `sort` | integer | [`sort`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.sort`](#dwd-dim-member-card-account-ex) | 在前端展示或某些列表中的排序权重 |
| 65 | `tenantavatar` | text | [`tenantAvatar`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.tenantavatar`](#dwd-dim-member-card-account-ex) | (待补充) |
| 66 | `tenantname` | text | [`tenantName`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.tenant_name`](#dwd-dim-member-card-account-ex) | (待补充) |
| 67 | `pdassisnatlevel` | text | — | [`dim_member_card_account_ex.pdassisnatlevel`](#dwd-dim-member-card-account-ex) | (待补充) |
| 68 | `cxassisnatlevel` | text | — | [`dim_member_card_account_ex.cxassisnatlevel`](#dwd-dim-member-card-account-ex) | (待补充) |
| 69 | `able_share_member_discount` | boolean | [`able_share_member_discount`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.able_share_member_discount`](#dwd-dim-member-card-account-ex) | 是否可共享会员折扣 |
| 70 | `electricity_deduct_radio` | numeric | [`electricity_deduct_radio`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.electricity_deduct_radio`](#dwd-dim-member-card-account-ex) | 电费扣减比例 |
| 71 | `electricity_discount` | numeric | [`electricity_discount`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.electricity_discount`](#dwd-dim-member-card-account-ex) | 电费折扣 |
| 72 | `electricitycarddeduct` | boolean | [`electricityCardDeduct`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.electricity_card_deduct`](#dwd-dim-member-card-account-ex) | 电费卡扣 |
| 73 | `member_grade` | bigint | [`member_grade`](#api-member-stored-value-cards) | [`dim_member_card_account.member_grade`](#dwd-dim-member-card-account) | 会员等级 |
| 74 | `principal_balance` | numeric | [`principal_balance`](#api-member-stored-value-cards) | [`dim_member_card_account.principal_balance`](#dwd-dim-member-card-account) | 本金余额 |
| 75 | `rechargefreezebalance` | numeric | [`rechargeFreezeBalance`](#api-member-stored-value-cards) | [`dim_member_card_account_ex.recharge_freeze_balance`](#dwd-dim-member-card-account-ex) | 充值冻结余额 |
| 76 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 77 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 78 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 79 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
| 80 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
<a id="dwd-dim-member-card-account"></a>
#### DWD 表结构 — dwd.dim_member_card_account [🔗 ODS](#ods-member-stored-value-cards)
共 23 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `member_card_id` | bigint | [`id`](#ods-member-stored-value-cards) | 直接 | 会员卡账户 ID |
| 2 | `tenant_id` | bigint | [`tenant_id`](#ods-member-stored-value-cards) | 直接 | 租户 ID |
| 3 | `register_site_id` | bigint | [`register_site_id`](#ods-member-stored-value-cards) | 直接 | 开卡门店 ID → dim_site |
| 4 | `tenant_member_id` | bigint | [`tenant_member_id`](#ods-member-stored-value-cards) | 直接 | 持卡会员 ID → dim_member0=未绑定会员) |
| 5 | `system_member_id` | bigint | [`system_member_id`](#ods-member-stored-value-cards) | 直接 | 系统级会员 ID |
| 6 | `card_type_id` | bigint | [`card_type_id`](#ods-member-stored-value-cards) | 直接 | 卡种 ID |
| 7 | `member_card_grade_code` | bigint | [`member_card_grade_code`](#ods-member-stored-value-cards) | 直接 | 卡等级代码 |
| 8 | `member_card_grade_code_name` | text | [`member_card_grade_code_name`](#ods-member-stored-value-cards) | 直接 | 卡等级名称。**枚举值**: "储值卡", "台费卡", "活动抵用券", "酒水卡", "月卡", "年卡" |
| 9 | `member_card_type_name` | text | [`member_card_type_name`](#ods-member-stored-value-cards) | 直接 | 卡类型名称(与 grade_code_name 相同) |
| 10 | `member_name` | text | [`member_name`](#ods-member-stored-value-cards) | 直接 | 持卡人姓名快照 |
| 11 | `member_mobile` | text | [`member_mobile`](#ods-member-stored-value-cards) | 直接 | 持卡人手机号快照 |
| 12 | `balance` | numeric | [`balance`](#ods-member-stored-value-cards) | 直接 | 当前余额(元) |
| 13 | `start_time` | timestamp with time zone | [`start_time`](#ods-member-stored-value-cards) | 直接 | 卡生效时间 |
| 14 | `end_time` | timestamp with time zone | [`end_time`](#ods-member-stored-value-cards) | 直接 | 卡失效时间2225-01-01=长期有效) |
| 15 | `last_consume_time` | timestamp with time zone | [`last_consume_time`](#ods-member-stored-value-cards) | 直接 | 最近消费时间 |
| 16 | `status` | integer | [`status`](#ods-member-stored-value-cards) | 直接 | 卡状态。**枚举值**: 1=正常, 4=过期 |
| 17 | `is_delete` | integer | [`is_delete`](#ods-member-stored-value-cards) | 直接 | 删除标记。**枚举值**: 0=未删除 |
| 18 | `principal_balance` | numeric | [`principal_balance`](#ods-member-stored-value-cards) | 直接 | 本金余额 |
| 19 | `member_grade` | bigint | [`member_grade`](#ods-member-stored-value-cards) | 直接 | 会员等级 |
| 20 | `scd2_start_time` | timestamp with time zone | — | SCD2 | SCD2 版本生效时间 |
| 21 | `scd2_end_time` | timestamp with time zone | — | SCD2 | SCD2 版本失效时间 |
| 22 | `scd2_is_current` | integer | — | SCD2 | 当前版本标记 |
| 23 | `scd2_version` | integer | — | SCD2 | 版本号 |
<a id="dwd-dim-member-card-account-ex"></a>
#### DWD 表结构 — dwd.dim_member_card_account_ex [🔗 ODS](#ods-member-stored-value-cards)
共 61 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `member_card_id` | bigint | [`id`](#ods-member-stored-value-cards) | 直接 | 字段重命名 |
| 2 | `site_name` | text | [`site_name`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 3 | `tenant_name` | character varying | [`tenantname`](#ods-member-stored-value-cards) | 直接 | 字段重命名 |
| 4 | `tenantavatar` | text | [`tenantavatar`](#ods-member-stored-value-cards) | 直接 | 维度字段,用于补充维度属性 |
| 5 | `effect_site_id` | bigint | [`effect_site_id`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 6 | `able_cross_site` | integer | [`able_cross_site`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 7 | `card_physics_type` | integer | [`card_physics_type`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 8 | `card_no` | text | [`card_no`](#ods-member-stored-value-cards) | 直接 | 维度字段,用于补充维度属性 |
| 9 | `bind_password` | text | [`bind_password`](#ods-member-stored-value-cards) | 直接 | 维度字段,用于补充维度属性 |
| 10 | `use_scene` | text | [`use_scene`](#ods-member-stored-value-cards) | 直接 | 维度字段,用于补充维度属性 |
| 11 | `denomination` | numeric | [`denomination`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 12 | `create_time` | timestamp with time zone | [`create_time`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 13 | `disable_start_time` | timestamp with time zone | [`disable_start_time`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 14 | `disable_end_time` | timestamp with time zone | [`disable_end_time`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 15 | `is_allow_give` | integer | [`is_allow_give`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 16 | `is_allow_order_deduct` | integer | [`is_allow_order_deduct`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 17 | `sort` | integer | [`sort`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 18 | `table_discount` | numeric | [`table_discount`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 19 | `goods_discount` | numeric | [`goods_discount`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 20 | `assistant_discount` | numeric | [`assistant_discount`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 21 | `assistant_reward_discount` | numeric | [`assistant_reward_discount`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 22 | `table_service_discount` | numeric | [`table_service_discount`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 23 | `goods_service_discount` | numeric | [`goods_service_discount`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 24 | `assistant_service_discount` | numeric | [`assistant_service_discount`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 25 | `coupon_discount` | numeric | [`coupon_discount`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 26 | `table_discount_sub_switch` | integer | [`table_discount_sub_switch`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 27 | `goods_discount_sub_switch` | integer | [`goods_discount_sub_switch`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 28 | `assistant_discount_sub_switch` | integer | [`assistant_discount_sub_switch`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 29 | `assistant_reward_discount_sub_switch` | integer | [`assistant_reward_discount_sub_switch`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 30 | `goods_discount_range_type` | integer | [`goods_discount_range_type`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 31 | `table_deduct_radio` | numeric | [`table_deduct_radio`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 32 | `goods_deduct_radio` | numeric | [`goods_deduct_radio`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 33 | `assistant_deduct_radio` | numeric | [`assistant_deduct_radio`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 34 | `table_service_deduct_radio` | numeric | [`table_service_deduct_radio`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 35 | `goods_service_deduct_radio` | numeric | [`goods_service_deduct_radio`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 36 | `assistant_service_deduct_radio` | numeric | [`assistant_service_deduct_radio`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 37 | `assistant_reward_deduct_radio` | numeric | [`assistant_reward_deduct_radio`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 38 | `coupon_deduct_radio` | numeric | [`coupon_deduct_radio`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 39 | `cardsettlededuct` | numeric | [`cardsettlededuct`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 40 | `tablecarddeduct` | numeric | [`tablecarddeduct`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 41 | `tableservicecarddeduct` | numeric | [`tableservicecarddeduct`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 42 | `goodscardeduct` | numeric | [`goodscardeduct`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 43 | `goodsservicecarddeduct` | numeric | [`goodsservicecarddeduct`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 44 | `assistantcarddeduct` | numeric | [`assistantcarddeduct`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 45 | `assistantservicecarddeduct` | numeric | [`assistantservicecarddeduct`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 46 | `assistantrewardcarddeduct` | numeric | [`assistantrewardcarddeduct`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 47 | `couponcarddeduct` | numeric | [`couponcarddeduct`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 48 | `deliveryfeededuct` | numeric | [`deliveryfeededuct`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 49 | `tableareaid` | text | [`tableareaid`](#ods-member-stored-value-cards) | 直接 | 维度字段,用于补充维度属性 |
| 50 | `goodscategoryid` | text | [`goodscategoryid`](#ods-member-stored-value-cards) | 直接 | 维度字段,用于补充维度属性 |
| 51 | `pdassisnatlevel` | text | [`pdassisnatlevel`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 52 | `cxassisnatlevel` | text | [`cxassisnatlevel`](#ods-member-stored-value-cards) | 直接 | 同名直传 |
| 53 | `able_share_member_discount` | boolean | [`able_share_member_discount`](#ods-member-stored-value-cards) | → boolean | |
| 54 | `electricity_deduct_radio` | numeric | [`electricity_deduct_radio`](#ods-member-stored-value-cards) | 直接 | |
| 55 | `electricity_discount` | numeric | [`electricity_discount`](#ods-member-stored-value-cards) | 直接 | |
| 56 | `electricity_card_deduct` | boolean | [`electricitycarddeduct`](#ods-member-stored-value-cards) | → boolean | 字段重命名 |
| 57 | `recharge_freeze_balance` | numeric | [`rechargefreezebalance`](#ods-member-stored-value-cards) | 直接 | 字段重命名 |
| 58 | `scd2_start_time` | timestamp with time zone | — | SCD2 | SCD2 元数据 |
| 59 | `scd2_end_time` | timestamp with time zone | — | SCD2 | SCD2 元数据 |
| 60 | `scd2_is_current` | integer | — | SCD2 | SCD2 元数据 |
| 61 | `scd2_version` | integer | — | SCD2 | SCD2 元数据 |
### 3.12 member_balance_changes会员余额变动
- 任务代码:`ODS_MEMBER_BALANCE`
- 采样记录数200
- API JSON 字段数28
- ODS 列数33
- DWD 目标表dwd_member_balance_change, dwd_member_balance_change_ex
<a id="api-member-balance-changes"></a>
#### API 源字段 — member_balance_changes [🔗 ODS](#ods-member-balance-changes)
已映射 28/28覆盖率 100.0%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `memberCardTypeName` | string | [`membercardtypename`](#ods-member-balance-changes) | (待补充) | 大小写匹配;枚举值: `储值卡`, `活动抵用券`, `酒水卡`, `台费卡` |
| 2 | `paySiteName` | string | [`paysitename`](#ods-member-balance-changes) | (待补充) | 大小写匹配;示例: `朗朗桌球` |
| 3 | `registerSiteName` | string | [`registersitename`](#ods-member-balance-changes) | (待补充) | 大小写匹配;示例: `朗朗桌球` |
| 4 | `memberName` | string | [`membername`](#ods-member-balance-changes) | (待补充) | 大小写匹配;枚举值: `罗先生`, `张先生`, `陈先生`, `轩哥`, `胡先生`, `曾丹烨`, `果`, `李先生` |
| 5 | `memberMobile` | string | [`membermobile`](#ods-member-balance-changes) | (待补充) | 大小写匹配;枚举值: `13924036996`, `13902258852`, `13535220066`, `18826267530`, `13394654634`, `13922213242`, `13902203836`, `18825868576` |
| 6 | `id` | integer | [`id`](#ods-member-balance-changes) | 余额变更记录的主键 ID唯一标识这一条“账户余额变化事件” | 枚举值: `3093844118358341`, `3093650318379141`, `3093649004579013`, `3093365819410565`, `3092712423049413`, `3092443610270021`, `3092315441612997`, `3092248235444421` |
| 7 | `account_data` | number | [`account_data`](#ods-member-balance-changes) | 本次变动的金额(元),正数表示增加,负数表示减少 | 枚举值: `-232.0`, `-125.0`, `-18.0`, `-300.0`, `-4285.55`, `-43.61`, `-132.0`, `-71.07` |
| 8 | `after` | number | [`after`](#ods-member-balance-changes) | 本次变动后,该卡账户的余额(元) | 枚举值: `110.64`, `3657.58`, `3782.58`, `1709.69`, `3255.83`, `0.0`, `2722.73`, `373.91` |
| 9 | `before` | number | [`before`](#ods-member-balance-changes) | 本次变动前,该卡账户的余额(元) | 枚举值: `342.64`, `3782.58`, `3800.58`, `2009.69`, `7541.38`, `43.61`, `2854.73`, `444.98` |
| 10 | `card_type_id` | integer | [`card_type_id`](#ods-member-balance-changes) | 卡种类型 ID用于区分不同卡种 | 枚举值: `2793249295533893`, `2793266846533445`, `2794699703437125`, `2791990152417157` |
| 11 | `create_time` | string | [`create_time`](#ods-member-balance-changes) | 本条余额变更记录的创建时间,通常接近交易发生时间 | 枚举值: `2026-02-14 00:01:01`, `2026-02-13 20:43:53`, `2026-02-13 20:42:32`, `2026-02-13 15:54:28`, `2026-02-13 04:49:48`, `2026-02-13 00:16:21`, `2026-02-12 22:05:58`, `2026-02-12 20:57:36` |
| 12 | `from_type` | integer | [`from_type`](#ods-member-balance-changes) | 来自 JSON 导出的原始字段,用于保留业务取值 | 枚举值: `1`, `2`, `4`, `3`, `9` |
| 13 | `is_delete` | integer | [`is_delete`](#ods-member-balance-changes) | 逻辑删除标记0=否1=是) | 示例: `0` |
| 14 | `operator_id` | integer | [`operator_id`](#ods-member-balance-changes) | 执行此次余额变更操作的员工 ID | 枚举值: `2790687322443013`, `2790687633313029`, `2800457030093701`, `2800459869441029` |
| 15 | `operator_name` | string | [`operator_name`](#ods-member-balance-changes) | 操作员姓名(带职位前缀),是对 operator_id 的可读冗余字段 | 枚举值: `收银员:郑丽珊`, `店长:蒋雨轩`, `店长:郑丽珊`, `管理员:郑丽珊`, `店长:黄月柳`, `店长:谢晓洪` |
| 16 | `payment_method` | integer | [`payment_method`](#ods-member-balance-changes) | 来自 JSON 导出的原始字段,用于保留业务取值 | 枚举值: `0`, `3`, `4` |
| 17 | `refund_amount` | number | [`refund_amount`](#ods-member-balance-changes) | 可能用于标记“其中有多少金额是以‘退款’形式回流的”,或区分“退回余额”和“原路退回”两种模式 | 示例: `0.0` |
| 18 | `register_site_id` | integer | [`register_site_id`](#ods-member-balance-changes) | 会员卡的“注册门店 ID”即办卡所在门店 | 示例: `2790685415443269` |
| 19 | `relate_id` | integer | [`relate_id`](#ods-member-balance-changes) | 例如某次充值记录的 ID、某张订单/结算单 ID、某次活动抵用券核销记录 ID 等 | 枚举值: `3093843703564549`, `3093650242373957`, `3093648911108293`, `3093365762853125`, `3092711340902597`, `3092443433306437`, `3092315370047749`, `3092248181688581` |
| 20 | `remark` | string | [`remark`](#ods-member-balance-changes) | 当为空时,说明这条变动没有额外备注说明 | |
| 21 | `site_id` | integer | [`site_id`](#ods-member-balance-changes) | 非 0记录所属的具体门店 ID与其他 JSON 内的 site_id 一致) | 枚举值: `2790685415443269`, `0` |
| 22 | `system_member_id` | integer | [`system_member_id`](#ods-member-balance-changes) | 系统级(全局)会员 ID | 枚举值: `2799207358777093`, `2799207405995781`, `2799210152216325`, `2799207521568517`, `2849995547528133`, `2799212844549893`, `2799207074645765`, `2799207466075909` |
| 23 | `tenant_id` | integer | [`tenant_id`](#ods-member-balance-changes) | 租户/商户 ID本数据中是固定值同一品牌/商户) | 示例: `2790683160709957` |
| 24 | `tenant_member_card_id` | integer | [`tenant_member_card_id`](#ods-member-balance-changes) | 会员卡账户 ID在租户内唯一标识某张卡 | 枚举值: `2799218552833797`, `2815108067970885`, `2799218599413509`, `2799217444914949`, `2849995548871621`, `2799219999295237`, `2799215892219653`, `2799216936748805` |
| 25 | `tenant_member_id` | integer | [`tenant_member_id`](#ods-member-balance-changes) | 商户维度的会员 ID租户内会员主键 | 枚举值: `2799207359858437`, `2799207406946053`, `2799210153232133`, `2799207522600709`, `2849995548625861`, `2799212845565701`, `2799207075874565`, `2799207467042565` |
| 26 | `principal_after` | number | [`principal_after`](#ods-member-balance-changes) | 变动后本金 | 枚举值: `110.64`, `0.0`, `1709.69`, `3255.83`, `2722.73`, `373.91`, `255.6`, `111.06` |
| 27 | `principal_before` | number | [`principal_before`](#ods-member-balance-changes) | 变动前本金 | 枚举值: `342.64`, `0.0`, `2009.69`, `7541.38`, `43.61`, `2854.73`, `444.98`, `313.6` |
| 28 | `principal_data` | number | [`principal_data`](#ods-member-balance-changes) | 本金变动数据 | 枚举值: `-232.0`, `0.0`, `-300.0`, `-4285.55`, `-43.61`, `-132.0`, `-71.07`, `-58.0` |
<a id="ods-member-balance-changes"></a>
#### ODS 表结构 — ods.member_balance_changes [🔗 API](#api-member-balance-changes)
共 33 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `tenant_id` | bigint | [`tenant_id`](#api-member-balance-changes) | [`dwd_member_balance_change.tenant_id`](#dwd-dwd-member-balance-change) | 租户/商户 ID本数据中是固定值同一品牌/商户) |
| 2 | `site_id` | bigint | [`site_id`](#api-member-balance-changes) | [`dwd_member_balance_change.site_id`](#dwd-dwd-member-balance-change) | 非 0记录所属的具体门店 ID与其他 JSON 内的 site_id 一致) |
| 3 | `register_site_id` | bigint | [`register_site_id`](#api-member-balance-changes) | [`dwd_member_balance_change.register_site_id`](#dwd-dwd-member-balance-change) | 会员卡的“注册门店 ID”即办卡所在门店 |
| 4 | `registersitename` | text | [`registerSiteName`](#api-member-balance-changes) | [`dwd_member_balance_change_ex.register_site_name`](#dwd-dwd-member-balance-change-ex) | (待补充) |
| 5 | `paysitename` | text | [`paySiteName`](#api-member-balance-changes) | [`dwd_member_balance_change_ex.pay_site_name`](#dwd-dwd-member-balance-change-ex) | (待补充) |
| 6 | `id` | bigint | [`id`](#api-member-balance-changes) | [`dwd_member_balance_change.balance_change_id`](#dwd-dwd-member-balance-change), [`dwd_member_balance_change_ex.balance_change_id`](#dwd-dwd-member-balance-change-ex) | 余额变更记录的主键 ID唯一标识这一条“账户余额变化事件” |
| 7 | `tenant_member_id` | bigint | [`tenant_member_id`](#api-member-balance-changes) | [`dwd_member_balance_change.tenant_member_id`](#dwd-dwd-member-balance-change) | 商户维度的会员 ID租户内会员主键 |
| 8 | `tenant_member_card_id` | bigint | [`tenant_member_card_id`](#api-member-balance-changes) | [`dwd_member_balance_change.tenant_member_card_id`](#dwd-dwd-member-balance-change) | 会员卡账户 ID在租户内唯一标识某张卡 |
| 9 | `system_member_id` | bigint | [`system_member_id`](#api-member-balance-changes) | [`dwd_member_balance_change.system_member_id`](#dwd-dwd-member-balance-change) | 系统级(全局)会员 ID |
| 10 | `membername` | text | [`memberName`](#api-member-balance-changes) | [`dwd_member_balance_change.member_name`](#dwd-dwd-member-balance-change) | (待补充) |
| 11 | `membermobile` | text | [`memberMobile`](#api-member-balance-changes) | [`dwd_member_balance_change.member_mobile`](#dwd-dwd-member-balance-change) | (待补充) |
| 12 | `card_type_id` | bigint | [`card_type_id`](#api-member-balance-changes) | [`dwd_member_balance_change.card_type_id`](#dwd-dwd-member-balance-change) | 卡种类型 ID用于区分不同卡种 |
| 13 | `membercardtypename` | text | [`memberCardTypeName`](#api-member-balance-changes) | [`dwd_member_balance_change.card_type_name`](#dwd-dwd-member-balance-change) | (待补充) |
| 14 | `account_data` | numeric | [`account_data`](#api-member-balance-changes) | [`dwd_member_balance_change.change_amount`](#dwd-dwd-member-balance-change) | 本次变动的金额(元),正数表示增加,负数表示减少 |
| 15 | `before` | numeric | [`before`](#api-member-balance-changes) | [`dwd_member_balance_change.balance_before`](#dwd-dwd-member-balance-change) | 本次变动前,该卡账户的余额(元) |
| 16 | `after` | numeric | [`after`](#api-member-balance-changes) | [`dwd_member_balance_change.balance_after`](#dwd-dwd-member-balance-change) | 本次变动后,该卡账户的余额(元) |
| 17 | `refund_amount` | numeric | [`refund_amount`](#api-member-balance-changes) | [`dwd_member_balance_change_ex.refund_amount`](#dwd-dwd-member-balance-change-ex) | 可能用于标记“其中有多少金额是以‘退款’形式回流的”,或区分“退回余额”和“原路退回”两种模式 |
| 18 | `from_type` | integer | [`from_type`](#api-member-balance-changes) | [`dwd_member_balance_change.from_type`](#dwd-dwd-member-balance-change) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 19 | `payment_method` | integer | [`payment_method`](#api-member-balance-changes) | [`dwd_member_balance_change.payment_method`](#dwd-dwd-member-balance-change) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 20 | `relate_id` | bigint | [`relate_id`](#api-member-balance-changes) | — | 例如某次充值记录的 ID、某张订单/结算单 ID、某次活动抵用券核销记录 ID 等 |
| 21 | `remark` | text | [`remark`](#api-member-balance-changes) | [`dwd_member_balance_change.remark`](#dwd-dwd-member-balance-change) | 当为空时,说明这条变动没有额外备注说明 |
| 22 | `operator_id` | bigint | [`operator_id`](#api-member-balance-changes) | [`dwd_member_balance_change_ex.operator_id`](#dwd-dwd-member-balance-change-ex) | 执行此次余额变更操作的员工 ID |
| 23 | `operator_name` | text | [`operator_name`](#api-member-balance-changes) | [`dwd_member_balance_change_ex.operator_name`](#dwd-dwd-member-balance-change-ex) | 操作员姓名(带职位前缀),是对 operator_id 的可读冗余字段 |
| 24 | `is_delete` | integer | [`is_delete`](#api-member-balance-changes) | [`dwd_member_balance_change.is_delete`](#dwd-dwd-member-balance-change) | 逻辑删除标记0=否1=是) |
| 25 | `create_time` | timestamp without time zone | [`create_time`](#api-member-balance-changes) | [`dwd_member_balance_change.change_time`](#dwd-dwd-member-balance-change) | 本条余额变更记录的创建时间,通常接近交易发生时间 |
| 26 | `principal_after` | numeric | [`principal_after`](#api-member-balance-changes) | [`dwd_member_balance_change.principal_after`](#dwd-dwd-member-balance-change) | 变动后本金 |
| 27 | `principal_before` | numeric | [`principal_before`](#api-member-balance-changes) | [`dwd_member_balance_change.principal_before`](#dwd-dwd-member-balance-change) | 变动前本金 |
| 28 | `principal_data` | text | [`principal_data`](#api-member-balance-changes) | [`dwd_member_balance_change_ex.principal_data`](#dwd-dwd-member-balance-change-ex) | 本金变动数据 |
| 29 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 30 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 31 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 32 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
| 33 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
<a id="dwd-dwd-member-balance-change"></a>
#### DWD 表结构 — dwd.dwd_member_balance_change [🔗 ODS](#ods-member-balance-changes)
共 22 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `balance_change_id` | bigint | [`id`](#ods-member-balance-changes) | 直接 | 变动流水 ID |
| 2 | `tenant_id` | bigint | [`tenant_id`](#ods-member-balance-changes) | 直接 | 租户 ID |
| 3 | `site_id` | bigint | [`site_id`](#ods-member-balance-changes) | 直接 | 门店 ID |
| 4 | `register_site_id` | bigint | [`register_site_id`](#ods-member-balance-changes) | 直接 | 注册门店 ID |
| 5 | `tenant_member_id` | bigint | [`tenant_member_id`](#ods-member-balance-changes) | 直接 | 会员 ID → dim_member |
| 6 | `system_member_id` | bigint | [`system_member_id`](#ods-member-balance-changes) | 直接 | 系统会员 ID |
| 7 | `tenant_member_card_id` | bigint | [`tenant_member_card_id`](#ods-member-balance-changes) | 直接 | 会员卡 ID → dim_member_card_account |
| 8 | `card_type_id` | bigint | [`card_type_id`](#ods-member-balance-changes) | 直接 | 卡类型 ID |
| 9 | `card_type_name` | character varying | [`membercardtypename`](#ods-member-balance-changes) | 直接 | 卡类型名称。**枚举值**: "储值卡", "活动抵用券", "台费卡", "酒水卡", "年卡", "月卡" |
| 10 | `member_name` | character varying | [`membername`](#ods-member-balance-changes) | 直接 | 会员名称快照 |
| 11 | `member_mobile` | character varying | [`membermobile`](#ods-member-balance-changes) | 直接 | 会员手机号快照 |
| 12 | `balance_before` | numeric | [`before`](#ods-member-balance-changes) | 直接 | 变动前余额 |
| 13 | `change_amount` | numeric | [`account_data`](#ods-member-balance-changes) | 直接 | 变动金额(正=充值/赠送,负=消费) |
| 14 | `balance_after` | numeric | [`after`](#ods-member-balance-changes) | 直接 | 变动后余额 |
| 15 | `from_type` | integer | [`from_type`](#ods-member-balance-changes) | 直接 | 变动来源。**枚举值**: 1=结账/消费, 2=结账撤销, 3=现付充值, 4=活动赠送, 7=充值撤销/退款,... |
| 16 | `payment_method` | integer | [`payment_method`](#ods-member-balance-changes) | 直接 | 支付方式,暂未启用。 |
| 17 | `change_time` | timestamp with time zone | [`create_time`](#ods-member-balance-changes) | 直接 | 变动时间 |
| 18 | `is_delete` | integer | [`is_delete`](#ods-member-balance-changes) | 直接 | 删除标记 |
| 19 | `remark` | character varying | [`remark`](#ods-member-balance-changes) | 直接 | 备注。**样本值**: "注销会员", "充值退款" 等 |
| 20 | `principal_before` | numeric | [`principal_before`](#ods-member-balance-changes) | 直接 | 变动前本金 |
| 21 | `principal_after` | numeric | [`principal_after`](#ods-member-balance-changes) | 直接 | 变动后本金 |
| 22 | `principal_change_amount` | numeric | — | — | 本金变动金额(正=增加,负=减少) |
<a id="dwd-dwd-member-balance-change-ex"></a>
#### DWD 表结构 — dwd.dwd_member_balance_change_ex [🔗 ODS](#ods-member-balance-changes)
共 7 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `balance_change_id` | bigint | [`id`](#ods-member-balance-changes) | 直接 | 字段重命名 |
| 2 | `pay_site_name` | character varying | [`paysitename`](#ods-member-balance-changes) | 直接 | 字段重命名 |
| 3 | `register_site_name` | character varying | [`registersitename`](#ods-member-balance-changes) | 直接 | 字段重命名 |
| 4 | `refund_amount` | numeric | [`refund_amount`](#ods-member-balance-changes) | 直接 | 同名直传 |
| 5 | `operator_id` | bigint | [`operator_id`](#ods-member-balance-changes) | 直接 | 同名直传 |
| 6 | `operator_name` | character varying | [`operator_name`](#ods-member-balance-changes) | 直接 | 同名直传 |
| 7 | `principal_data` | text | [`principal_data`](#ods-member-balance-changes) | 直接 | |
### 3.13 recharge_settlements充值结算
- 任务代码:`ODS_RECHARGE_SETTLE`
- 采样记录数200
- API JSON 字段数92
- ODS 列数71
- DWD 目标表dwd_recharge_order, dwd_recharge_order_ex
<a id="api-recharge-settlements"></a>
#### API 源字段 — recharge_settlements [🔗 ODS](#ods-recharge-settlements)
已映射 67/92覆盖率 72.8%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `siteProfile.id` | integer | [`id`](#ods-recharge-settlements) | 门店 ID | 📦 嵌套对象;示例: `2790685415443269` |
| 2 | `siteProfile.org_id` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `2790684179467077` |
| 3 | `siteProfile.shop_name` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `朗朗桌球` |
| 4 | `siteProfile.avatar` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `https://oss.ficoo.vip/admin...` |
| 5 | `siteProfile.business_tel` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `13316068642` |
| 6 | `siteProfile.full_address` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `广东省广州市天河区丽阳街12号` |
| 7 | `siteProfile.address` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `广东省广州市天河区天园街道朗朗桌球` |
| 8 | `siteProfile.longitude` | number | ⚠️ 未映射 | | 📦 嵌套对象;示例: `113.360321` |
| 9 | `siteProfile.latitude` | number | ⚠️ 未映射 | | 📦 嵌套对象;示例: `23.133629` |
| 10 | `siteProfile.tenant_site_region_id` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `156440100` |
| 11 | `siteProfile.tenant_id` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `2790683160709957` |
| 12 | `siteProfile.auto_light` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 13 | `siteProfile.attendance_distance` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 14 | `siteProfile.wifi_name` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 15 | `siteProfile.wifi_password` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 16 | `siteProfile.customer_service_qrcode` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 17 | `siteProfile.customer_service_wechat` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 18 | `siteProfile.fixed_pay_qrCode` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 19 | `siteProfile.prod_env` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 20 | `siteProfile.light_status` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 21 | `siteProfile.light_type` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 22 | `siteProfile.site_type` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 23 | `siteProfile.light_token` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 24 | `siteProfile.site_label` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `A` |
| 25 | `siteProfile.attendance_enabled` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 26 | `siteProfile.shop_status` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 27 | `settleList.id` | integer | [`id`](#ods-recharge-settlements) | 门店 ID | 枚举值: `3087072625102533`, `3087072183438981`, `3086802110271237`, `3085662010822277`, `3084086428765829`, `3083626062351877`, `3083418544754181`, `3082874684165765` |
| 28 | `settleList.tenantId` | integer | [`tenantid`](#ods-recharge-settlements) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `2790683160709957` |
| 29 | `settleList.siteId` | integer | [`siteid`](#ods-recharge-settlements) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `2790685415443269` |
| 30 | `settleList.siteName` | string | [`sitename`](#ods-recharge-settlements) | 名称字段,用于展示与辅助识别 | 大小写匹配 |
| 31 | `settleList.balanceAmount` | number | [`balanceamount`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 32 | `settleList.cardAmount` | number | [`cardamount`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 33 | `settleList.cashAmount` | number | [`cashamount`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 34 | `settleList.couponAmount` | number | [`couponamount`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 35 | `settleList.createTime` | string | [`createtime`](#ods-recharge-settlements) | 时间字段,用于记录业务时间点/发生时间 | 大小写匹配;枚举值: `2026-02-09 05:12:42`, `2026-02-09 05:12:15`, `2026-02-09 00:37:31`, `2026-02-08 05:17:45`, `2026-02-07 02:34:59`, `2026-02-06 18:46:41`, `2026-02-06 15:15:35`, `2026-02-06 06:02:20` |
| 36 | `settleList.memberId` | integer | [`memberid`](#ods-recharge-settlements) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;枚举值: `2799207363643141`, `2799207522600709`, `2969257129938053`, `2799207124305669`, `2799207359858437`, `2849995548625861`, `2799212430657285`, `2799207406946053` |
| 37 | `settleList.memberName` | string | [`membername`](#ods-recharge-settlements) | 名称字段,用于展示与辅助识别 | 大小写匹配;枚举值: `葛先生`, `轩哥`, `小燕`, `陈腾鑫`, `罗先生`, `胡先生`, `黄先生`, `张先生` |
| 38 | `settleList.tenantMemberCardId` | integer | [`tenantmembercardid`](#ods-recharge-settlements) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;枚举值: `2799216572794629`, `2799217444914949`, `2969257130232965`, `2799215988246277`, `2799218552833797`, `2849995548871621`, `2799219055920901`, `2799217231906565` |
| 39 | `settleList.memberCardTypeName` | string | [`membercardtypename`](#ods-recharge-settlements) | 名称字段,用于展示与辅助识别 | 大小写匹配;枚举值: `储值卡`, `月卡` |
| 40 | `settleList.memberPhone` | string | [`memberphone`](#ods-recharge-settlements) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;枚举值: `13811638071`, `18826267530`, `17802081334`, `17817318218`, `13924036996`, `13394654634`, `13570163507`, `13902258852` |
| 41 | `settleList.tableId` | integer | [`tableid`](#ods-recharge-settlements) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `0` |
| 42 | `settleList.consumeMoney` | number | [`consumemoney`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;枚举值: `10000.0`, `3000.0`, `1000.0`, `298.0`, `-10000.0`, `5000.0`, `1200.0`, `-3000.0` |
| 43 | `settleList.onlineAmount` | number | [`onlineamount`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 44 | `settleList.operatorId` | integer | [`operatorid`](#ods-recharge-settlements) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `2790687322443013` |
| 45 | `settleList.operatorName` | string | [`operatorname`](#ods-recharge-settlements) | 名称字段,用于展示与辅助识别 | 大小写匹配;示例: `收银员:郑丽珊` |
| 46 | `settleList.revokeOrderId` | integer | [`revokeorderid`](#ods-recharge-settlements) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `0` |
| 47 | `settleList.revokeOrderName` | string | [`revokeordername`](#ods-recharge-settlements) | 名称字段,用于展示与辅助识别 | 大小写匹配 |
| 48 | `settleList.revokeTime` | string | [`revoketime`](#ods-recharge-settlements) | 时间字段,用于记录业务时间点/发生时间 | 大小写匹配;示例: `0001-01-01 00:00:00` |
| 49 | `settleList.payAmount` | number | [`payamount`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;枚举值: `10000.0`, `3000.0`, `1000.0`, `298.0`, `-10000.0`, `5000.0`, `1200.0`, `-3000.0` |
| 50 | `settleList.pointAmount` | number | [`pointamount`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;枚举值: `10000.0`, `3000.0`, `1000.0`, `298.0`, `0.0`, `5000.0`, `1200.0`, `539.0` |
| 51 | `settleList.refundAmount` | number | [`refundamount`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;枚举值: `0.0`, `10000.0`, `3000.0`, `1000.0` |
| 52 | `settleList.settleName` | string | [`settlename`](#ods-recharge-settlements) | 名称字段,用于展示与辅助识别 | 大小写匹配;枚举值: `充值订单`, `充值撤销` |
| 53 | `settleList.settleRelateId` | integer | [`settlerelateid`](#ods-recharge-settlements) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;枚举值: `3087072624987845`, `3087072183324293`, `3086802110156549`, `3085662010707589`, `3084086428667525`, `3083626062204421`, `3083418544623109`, `3082874684067461` |
| 54 | `settleList.settleStatus` | integer | [`settlestatus`](#ods-recharge-settlements) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `2` |
| 55 | `settleList.settleType` | integer | [`settletype`](#ods-recharge-settlements) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;枚举值: `5`, `7` |
| 56 | `settleList.payTime` | string | [`paytime`](#ods-recharge-settlements) | 时间字段,用于记录业务时间点/发生时间 | 大小写匹配;枚举值: `2026-02-09 05:12:42`, `2026-02-09 05:12:15`, `2026-02-09 00:37:31`, `2026-02-08 05:17:45`, `2026-02-07 02:34:59`, `2026-02-06 18:46:41`, `2026-02-06 15:15:35`, `2026-02-06 06:02:20` |
| 57 | `settleList.roundingAmount` | number | [`roundingamount`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 58 | `settleList.paymentMethod` | integer | [`paymentmethod`](#ods-recharge-settlements) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;枚举值: `4`, `1` |
| 59 | `settleList.adjustAmount` | number | [`adjustamount`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 60 | `settleList.assistantCxMoney` | number | [`assistantcxmoney`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 61 | `settleList.assistantPdMoney` | number | [`assistantpdmoney`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 62 | `settleList.couponSaleAmount` | number | [`couponsaleamount`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 63 | `settleList.plCouponSaleAmount` | number | [`plcouponsaleamount`](#ods-recharge-settlements) | 平台券销售额 | 大小写匹配;示例: `0.0` |
| 64 | `settleList.merVouSalesAmount` | number | [`mervousalesamount`](#ods-recharge-settlements) | 商户券销售额 | 大小写匹配;示例: `0.0` |
| 65 | `settleList.memberDiscountAmount` | number | [`memberdiscountamount`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 66 | `settleList.tableChargeMoney` | number | [`tablechargemoney`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 67 | `settleList.goodsMoney` | number | [`goodsmoney`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 68 | `settleList.realGoodsMoney` | number | [`realgoodsmoney`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 69 | `settleList.serviceMoney` | number | [`servicemoney`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 70 | `settleList.prepayMoney` | number | [`prepaymoney`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 71 | `settleList.salesManName` | string | [`salesmanname`](#ods-recharge-settlements) | 名称字段,用于展示与辅助识别 | 大小写匹配 |
| 72 | `settleList.orderRemark` | string | [`orderremark`](#ods-recharge-settlements) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配 |
| 73 | `settleList.salesManUserId` | integer | [`salesmanuserid`](#ods-recharge-settlements) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `0` |
| 74 | `settleList.canBeRevoked` | boolean | [`canberevoked`](#ods-recharge-settlements) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `False` |
| 75 | `settleList.pointDiscountPrice` | number | [`pointdiscountprice`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 76 | `settleList.pointDiscountCost` | number | [`pointdiscountcost`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 77 | `settleList.activityDiscount` | number | [`activitydiscount`](#ods-recharge-settlements) | 数量/时长字段,用于统计与计量 | 大小写匹配;示例: `0.0` |
| 78 | `settleList.serialNumber` | integer | [`serialnumber`](#ods-recharge-settlements) | 数量/时长字段,用于统计与计量 | 大小写匹配;示例: `0` |
| 79 | `settleList.assistantManualDiscount` | number | [`assistantmanualdiscount`](#ods-recharge-settlements) | 数量/时长字段,用于统计与计量 | 大小写匹配;示例: `0.0` |
| 80 | `settleList.allCouponDiscount` | number | [`allcoupondiscount`](#ods-recharge-settlements) | 数量/时长字段,用于统计与计量 | 大小写匹配;示例: `0.0` |
| 81 | `settleList.goodsPromotionMoney` | number | [`goodspromotionmoney`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 82 | `settleList.assistantPromotionMoney` | number | [`assistantpromotionmoney`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0.0` |
| 83 | `settleList.isUseCoupon` | boolean | [`isusecoupon`](#ods-recharge-settlements) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `False` |
| 84 | `settleList.isUseDiscount` | boolean | [`isusediscount`](#ods-recharge-settlements) | 数量/时长字段,用于统计与计量 | 大小写匹配;示例: `False` |
| 85 | `settleList.isActivity` | boolean | [`isactivity`](#ods-recharge-settlements) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `False` |
| 86 | `settleList.isBindMember` | boolean | [`isbindmember`](#ods-recharge-settlements) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;示例: `False` |
| 87 | `settleList.isFirst` | integer | [`isfirst`](#ods-recharge-settlements) | 来自 JSON 导出的原始字段,用于保留业务取值 | 大小写匹配;枚举值: `2`, `1` |
| 88 | `settleList.rechargeCardAmount` | integer | [`rechargecardamount`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0` |
| 89 | `settleList.giftCardAmount` | integer | [`giftcardamount`](#ods-recharge-settlements) | 金额字段,用于计费/结算/分摊等金额计算 | 大小写匹配;示例: `0` |
| 90 | `settleList.electricityMoney` | number | [`electricitymoney`](#ods-recharge-settlements) | 电费金额 | 大小写匹配;示例: `0.0` |
| 91 | `settleList.realElectricityMoney` | number | [`realelectricitymoney`](#ods-recharge-settlements) | 实际电费金额 | 大小写匹配;示例: `0.0` |
| 92 | `settleList.electricityAdjustMoney` | number | [`electricityadjustmoney`](#ods-recharge-settlements) | 电费调整金额 | 大小写匹配;示例: `0.0` |
<a id="ods-recharge-settlements"></a>
#### ODS 表结构 — ods.recharge_settlements [🔗 API](#api-recharge-settlements)
共 71 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `id` | bigint | [`siteProfile.id`](#api-recharge-settlements) | [`dwd_recharge_order.recharge_order_id`](#dwd-dwd-recharge-order), [`dwd_recharge_order_ex.recharge_order_id`](#dwd-dwd-recharge-order-ex) | 门店 ID |
| 2 | `tenantid` | bigint | [`settleList.tenantId`](#api-recharge-settlements) | [`dwd_recharge_order.tenant_id`](#dwd-dwd-recharge-order) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 3 | `siteid` | bigint | [`settleList.siteId`](#api-recharge-settlements) | [`dwd_recharge_order.site_id`](#dwd-dwd-recharge-order) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 4 | `sitename` | text | [`settleList.siteName`](#api-recharge-settlements) | [`dwd_recharge_order_ex.site_name_snapshot`](#dwd-dwd-recharge-order-ex) | 名称字段,用于展示与辅助识别 |
| 5 | `balanceamount` | numeric | [`settleList.balanceAmount`](#api-recharge-settlements) | [`dwd_recharge_order_ex.balance_amount`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 6 | `cardamount` | numeric | [`settleList.cardAmount`](#api-recharge-settlements) | [`dwd_recharge_order_ex.card_amount`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 7 | `cashamount` | numeric | [`settleList.cashAmount`](#api-recharge-settlements) | [`dwd_recharge_order.cash_amount`](#dwd-dwd-recharge-order) | 金额字段,用于计费/结算/分摊等金额计算 |
| 8 | `couponamount` | numeric | [`settleList.couponAmount`](#api-recharge-settlements) | [`dwd_recharge_order_ex.coupon_amount`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 9 | `createtime` | timestamp with time zone | [`settleList.createTime`](#api-recharge-settlements) | [`dwd_recharge_order.create_time`](#dwd-dwd-recharge-order) | 时间字段,用于记录业务时间点/发生时间 |
| 10 | `memberid` | bigint | [`settleList.memberId`](#api-recharge-settlements) | [`dwd_recharge_order.member_id`](#dwd-dwd-recharge-order) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 11 | `membername` | text | [`settleList.memberName`](#api-recharge-settlements) | [`dwd_recharge_order.member_name_snapshot`](#dwd-dwd-recharge-order) | 名称字段,用于展示与辅助识别 |
| 12 | `tenantmembercardid` | bigint | [`settleList.tenantMemberCardId`](#api-recharge-settlements) | [`dwd_recharge_order.tenant_member_card_id`](#dwd-dwd-recharge-order) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 13 | `membercardtypename` | text | [`settleList.memberCardTypeName`](#api-recharge-settlements) | [`dwd_recharge_order.member_card_type_name`](#dwd-dwd-recharge-order) | 名称字段,用于展示与辅助识别 |
| 14 | `memberphone` | text | [`settleList.memberPhone`](#api-recharge-settlements) | [`dwd_recharge_order.member_phone_snapshot`](#dwd-dwd-recharge-order) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 15 | `tableid` | bigint | [`settleList.tableId`](#api-recharge-settlements) | [`dwd_recharge_order_ex.table_id`](#dwd-dwd-recharge-order-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 16 | `consumemoney` | numeric | [`settleList.consumeMoney`](#api-recharge-settlements) | [`dwd_recharge_order_ex.consume_money`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 17 | `onlineamount` | numeric | [`settleList.onlineAmount`](#api-recharge-settlements) | [`dwd_recharge_order_ex.online_amount`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 18 | `operatorid` | bigint | [`settleList.operatorId`](#api-recharge-settlements) | [`dwd_recharge_order_ex.operator_id`](#dwd-dwd-recharge-order-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 19 | `operatorname` | text | [`settleList.operatorName`](#api-recharge-settlements) | [`dwd_recharge_order_ex.operator_name_snapshot`](#dwd-dwd-recharge-order-ex) | 名称字段,用于展示与辅助识别 |
| 20 | `revokeorderid` | bigint | [`settleList.revokeOrderId`](#api-recharge-settlements) | [`dwd_recharge_order_ex.revoke_order_id`](#dwd-dwd-recharge-order-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 21 | `revokeordername` | text | [`settleList.revokeOrderName`](#api-recharge-settlements) | [`dwd_recharge_order_ex.revoke_order_name`](#dwd-dwd-recharge-order-ex) | 名称字段,用于展示与辅助识别 |
| 22 | `revoketime` | timestamp with time zone | [`settleList.revokeTime`](#api-recharge-settlements) | [`dwd_recharge_order_ex.revoke_time`](#dwd-dwd-recharge-order-ex) | 时间字段,用于记录业务时间点/发生时间 |
| 23 | `payamount` | numeric | [`settleList.payAmount`](#api-recharge-settlements) | [`dwd_recharge_order.pay_amount`](#dwd-dwd-recharge-order) | 金额字段,用于计费/结算/分摊等金额计算 |
| 24 | `pointamount` | numeric | [`settleList.pointAmount`](#api-recharge-settlements) | [`dwd_recharge_order.point_amount`](#dwd-dwd-recharge-order) | 金额字段,用于计费/结算/分摊等金额计算 |
| 25 | `refundamount` | numeric | [`settleList.refundAmount`](#api-recharge-settlements) | [`dwd_recharge_order.refund_amount`](#dwd-dwd-recharge-order) | 金额字段,用于计费/结算/分摊等金额计算 |
| 26 | `settlename` | text | [`settleList.settleName`](#api-recharge-settlements) | [`dwd_recharge_order.settle_name`](#dwd-dwd-recharge-order) | 名称字段,用于展示与辅助识别 |
| 27 | `settlerelateid` | bigint | [`settleList.settleRelateId`](#api-recharge-settlements) | [`dwd_recharge_order.settle_relate_id`](#dwd-dwd-recharge-order) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 28 | `settlestatus` | integer | [`settleList.settleStatus`](#api-recharge-settlements) | [`dwd_recharge_order_ex.settle_status`](#dwd-dwd-recharge-order-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 29 | `settletype` | integer | [`settleList.settleType`](#api-recharge-settlements) | [`dwd_recharge_order.settle_type`](#dwd-dwd-recharge-order) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 30 | `paytime` | timestamp with time zone | [`settleList.payTime`](#api-recharge-settlements) | [`dwd_recharge_order.pay_time`](#dwd-dwd-recharge-order) | 时间字段,用于记录业务时间点/发生时间 |
| 31 | `roundingamount` | numeric | [`settleList.roundingAmount`](#api-recharge-settlements) | [`dwd_recharge_order_ex.rounding_amount`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 32 | `paymentmethod` | integer | [`settleList.paymentMethod`](#api-recharge-settlements) | [`dwd_recharge_order.payment_method`](#dwd-dwd-recharge-order) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 33 | `adjustamount` | numeric | [`settleList.adjustAmount`](#api-recharge-settlements) | [`dwd_recharge_order_ex.adjust_amount`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 34 | `assistantcxmoney` | numeric | [`settleList.assistantCxMoney`](#api-recharge-settlements) | [`dwd_recharge_order_ex.assistant_cx_money`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 35 | `assistantpdmoney` | numeric | [`settleList.assistantPdMoney`](#api-recharge-settlements) | [`dwd_recharge_order_ex.assistant_pd_money`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 36 | `couponsaleamount` | numeric | [`settleList.couponSaleAmount`](#api-recharge-settlements) | [`dwd_recharge_order_ex.coupon_sale_amount`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 37 | `memberdiscountamount` | numeric | [`settleList.memberDiscountAmount`](#api-recharge-settlements) | [`dwd_recharge_order_ex.member_discount_amount`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 38 | `tablechargemoney` | numeric | [`settleList.tableChargeMoney`](#api-recharge-settlements) | [`dwd_recharge_order_ex.table_charge_money`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 39 | `goodsmoney` | numeric | [`settleList.goodsMoney`](#api-recharge-settlements) | [`dwd_recharge_order_ex.goods_money`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 40 | `realgoodsmoney` | numeric | [`settleList.realGoodsMoney`](#api-recharge-settlements) | [`dwd_recharge_order_ex.real_goods_money`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 41 | `servicemoney` | numeric | [`settleList.serviceMoney`](#api-recharge-settlements) | [`dwd_recharge_order_ex.service_money`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 42 | `prepaymoney` | numeric | [`settleList.prepayMoney`](#api-recharge-settlements) | [`dwd_recharge_order_ex.prepay_money`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 43 | `salesmanname` | text | [`settleList.salesManName`](#api-recharge-settlements) | [`dwd_recharge_order_ex.salesman_name`](#dwd-dwd-recharge-order-ex) | 名称字段,用于展示与辅助识别 |
| 44 | `orderremark` | text | [`settleList.orderRemark`](#api-recharge-settlements) | [`dwd_recharge_order_ex.order_remark`](#dwd-dwd-recharge-order-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 45 | `salesmanuserid` | bigint | [`settleList.salesManUserId`](#api-recharge-settlements) | [`dwd_recharge_order_ex.salesman_user_id`](#dwd-dwd-recharge-order-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 46 | `canberevoked` | boolean | [`settleList.canBeRevoked`](#api-recharge-settlements) | [`dwd_recharge_order_ex.can_be_revoked`](#dwd-dwd-recharge-order-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 47 | `pointdiscountprice` | numeric | [`settleList.pointDiscountPrice`](#api-recharge-settlements) | [`dwd_recharge_order_ex.point_discount_price`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 48 | `pointdiscountcost` | numeric | [`settleList.pointDiscountCost`](#api-recharge-settlements) | [`dwd_recharge_order_ex.point_discount_cost`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 49 | `activitydiscount` | numeric | [`settleList.activityDiscount`](#api-recharge-settlements) | [`dwd_recharge_order_ex.activity_discount`](#dwd-dwd-recharge-order-ex) | 数量/时长字段,用于统计与计量 |
| 50 | `serialnumber` | bigint | [`settleList.serialNumber`](#api-recharge-settlements) | [`dwd_recharge_order_ex.serial_number`](#dwd-dwd-recharge-order-ex) | 数量/时长字段,用于统计与计量 |
| 51 | `assistantmanualdiscount` | numeric | [`settleList.assistantManualDiscount`](#api-recharge-settlements) | [`dwd_recharge_order_ex.assistant_manual_discount`](#dwd-dwd-recharge-order-ex) | 数量/时长字段,用于统计与计量 |
| 52 | `allcoupondiscount` | numeric | [`settleList.allCouponDiscount`](#api-recharge-settlements) | [`dwd_recharge_order_ex.all_coupon_discount`](#dwd-dwd-recharge-order-ex) | 数量/时长字段,用于统计与计量 |
| 53 | `goodspromotionmoney` | numeric | [`settleList.goodsPromotionMoney`](#api-recharge-settlements) | [`dwd_recharge_order_ex.goods_promotion_money`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 54 | `assistantpromotionmoney` | numeric | [`settleList.assistantPromotionMoney`](#api-recharge-settlements) | [`dwd_recharge_order_ex.assistant_promotion_money`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 55 | `isusecoupon` | boolean | [`settleList.isUseCoupon`](#api-recharge-settlements) | [`dwd_recharge_order_ex.is_use_coupon`](#dwd-dwd-recharge-order-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 56 | `isusediscount` | boolean | [`settleList.isUseDiscount`](#api-recharge-settlements) | [`dwd_recharge_order_ex.is_use_discount`](#dwd-dwd-recharge-order-ex) | 数量/时长字段,用于统计与计量 |
| 57 | `isactivity` | boolean | [`settleList.isActivity`](#api-recharge-settlements) | [`dwd_recharge_order_ex.is_activity`](#dwd-dwd-recharge-order-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 58 | `isbindmember` | boolean | [`settleList.isBindMember`](#api-recharge-settlements) | [`dwd_recharge_order_ex.is_bind_member`](#dwd-dwd-recharge-order-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 59 | `isfirst` | integer | [`settleList.isFirst`](#api-recharge-settlements) | [`dwd_recharge_order.is_first`](#dwd-dwd-recharge-order) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 60 | `rechargecardamount` | numeric | [`settleList.rechargeCardAmount`](#api-recharge-settlements) | [`dwd_recharge_order_ex.recharge_card_amount`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 61 | `giftcardamount` | numeric | [`settleList.giftCardAmount`](#api-recharge-settlements) | [`dwd_recharge_order_ex.gift_card_amount`](#dwd-dwd-recharge-order-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 62 | `electricityadjustmoney` | numeric | [`settleList.electricityAdjustMoney`](#api-recharge-settlements) | — | 电费调整金额 |
| 63 | `electricitymoney` | numeric | [`settleList.electricityMoney`](#api-recharge-settlements) | — | 电费金额 |
| 64 | `mervousalesamount` | numeric | [`settleList.merVouSalesAmount`](#api-recharge-settlements) | — | 商户券销售额 |
| 65 | `plcouponsaleamount` | numeric | [`settleList.plCouponSaleAmount`](#api-recharge-settlements) | — | 平台券销售额 |
| 66 | `realelectricitymoney` | numeric | [`settleList.realElectricityMoney`](#api-recharge-settlements) | — | 实际电费金额 |
| 67 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 68 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 69 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 70 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
| 71 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
<a id="dwd-dwd-recharge-order"></a>
#### DWD 表结构 — dwd.dwd_recharge_order [🔗 ODS](#ods-recharge-settlements)
共 24 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `recharge_order_id` | bigint | [`id`](#ods-recharge-settlements) | 直接 | 充值订单 ID |
| 2 | `tenant_id` | bigint | [`tenantid`](#ods-recharge-settlements) | 直接 | 租户 ID |
| 3 | `site_id` | bigint | [`siteid`](#ods-recharge-settlements) | 直接 | 门店 ID |
| 4 | `member_id` | bigint | [`memberid`](#ods-recharge-settlements) | 直接 | 会员 ID → dim_member |
| 5 | `member_name_snapshot` | text | [`membername`](#ods-recharge-settlements) | 直接 | 会员名称快照 |
| 6 | `member_phone_snapshot` | text | [`memberphone`](#ods-recharge-settlements) | 直接 | 会员电话快照 |
| 7 | `tenant_member_card_id` | bigint | [`tenantmembercardid`](#ods-recharge-settlements) | 直接 | 会员卡账户 ID → dim_member_card_account |
| 8 | `member_card_type_name` | text | [`membercardtypename`](#ods-recharge-settlements) | 直接 | 卡类型名称。**枚举值**: "储值卡", "月卡" |
| 9 | `settle_relate_id` | bigint | [`settlerelateid`](#ods-recharge-settlements) | 直接 | 结算关联 ID |
| 10 | `settle_type` | integer | [`settletype`](#ods-recharge-settlements) | 直接 | 结算类型。**枚举值**: 5=充值订单, 7=充值退款 |
| 11 | `settle_name` | text | [`settlename`](#ods-recharge-settlements) | 直接 | 结算名称。**枚举值**: "充值订单", "充值退款" |
| 12 | `is_first` | integer | [`isfirst`](#ods-recharge-settlements) | 直接 | 是否首充。**枚举值**: 1=是, 2=否 |
| 13 | `pay_amount` | numeric | [`payamount`](#ods-recharge-settlements) | 直接 | 充值金额(元,撤销为负数) |
| 14 | `refund_amount` | numeric | [`refundamount`](#ods-recharge-settlements) | 直接 | 退款金额 |
| 15 | `point_amount` | numeric | [`pointamount`](#ods-recharge-settlements) | 直接 | 积分金额 |
| 16 | `cash_amount` | numeric | [`cashamount`](#ods-recharge-settlements) | 直接 | 现金金额 |
| 17 | `payment_method` | integer | [`paymentmethod`](#ods-recharge-settlements) | 直接 | 支付方式,暂未启用。 |
| 18 | `create_time` | timestamp with time zone | [`createtime`](#ods-recharge-settlements) | 直接 | 创建时间 |
| 19 | `pay_time` | timestamp with time zone | [`paytime`](#ods-recharge-settlements) | 直接 | 支付时间 |
| 20 | `pl_coupon_sale_amount` | numeric | — | — | 平台券销售金额 |
| 21 | `mervou_sales_amount` | numeric | — | — | 美团/大众点评等平台销售金额 |
| 22 | `electricity_money` | numeric | — | — | 电费金额 |
| 23 | `real_electricity_money` | numeric | — | — | 实际电费金额 |
| 24 | `electricity_adjust_money` | numeric | — | — | 电费调整金额 |
<a id="dwd-dwd-recharge-order-ex"></a>
#### DWD 表结构 — dwd.dwd_recharge_order_ex [🔗 ODS](#ods-recharge-settlements)
共 43 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `recharge_order_id` | bigint | [`id`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 2 | `site_name_snapshot` | text | [`sitename`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 3 | `settle_status` | integer | [`settlestatus`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 4 | `is_bind_member` | boolean | [`isbindmember`](#ods-recharge-settlements) | → boolean | 字段重命名 |
| 5 | `is_activity` | boolean | [`isactivity`](#ods-recharge-settlements) | → boolean | 字段重命名 |
| 6 | `is_use_coupon` | boolean | [`isusecoupon`](#ods-recharge-settlements) | → boolean | 字段重命名 |
| 7 | `is_use_discount` | boolean | [`isusediscount`](#ods-recharge-settlements) | → boolean | 字段重命名 |
| 8 | `can_be_revoked` | boolean | [`canberevoked`](#ods-recharge-settlements) | → boolean | 字段重命名 |
| 9 | `online_amount` | numeric | [`onlineamount`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 10 | `balance_amount` | numeric | [`balanceamount`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 11 | `card_amount` | numeric | [`cardamount`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 12 | `coupon_amount` | numeric | [`couponamount`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 13 | `recharge_card_amount` | numeric | [`rechargecardamount`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 14 | `gift_card_amount` | numeric | [`giftcardamount`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 15 | `prepay_money` | numeric | [`prepaymoney`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 16 | `consume_money` | numeric | [`consumemoney`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 17 | `goods_money` | numeric | [`goodsmoney`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 18 | `real_goods_money` | numeric | [`realgoodsmoney`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 19 | `table_charge_money` | numeric | [`tablechargemoney`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 20 | `service_money` | numeric | [`servicemoney`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 21 | `activity_discount` | numeric | [`activitydiscount`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 22 | `all_coupon_discount` | numeric | [`allcoupondiscount`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 23 | `goods_promotion_money` | numeric | [`goodspromotionmoney`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 24 | `assistant_promotion_money` | numeric | [`assistantpromotionmoney`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 25 | `assistant_pd_money` | numeric | [`assistantpdmoney`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 26 | `assistant_cx_money` | numeric | [`assistantcxmoney`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 27 | `assistant_manual_discount` | numeric | [`assistantmanualdiscount`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 28 | `coupon_sale_amount` | numeric | [`couponsaleamount`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 29 | `member_discount_amount` | numeric | [`memberdiscountamount`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 30 | `point_discount_price` | numeric | [`pointdiscountprice`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 31 | `point_discount_cost` | numeric | [`pointdiscountcost`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 32 | `adjust_amount` | numeric | [`adjustamount`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 33 | `rounding_amount` | numeric | [`roundingamount`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 34 | `operator_id` | bigint | [`operatorid`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 35 | `operator_name_snapshot` | text | [`operatorname`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 36 | `salesman_user_id` | bigint | [`salesmanuserid`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 37 | `salesman_name` | text | [`salesmanname`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 38 | `order_remark` | text | [`orderremark`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 39 | `table_id` | integer | [`tableid`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 40 | `serial_number` | integer | [`serialnumber`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 41 | `revoke_order_id` | bigint | [`revokeorderid`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 42 | `revoke_order_name` | text | [`revokeordername`](#ods-recharge-settlements) | 直接 | 字段重命名 |
| 43 | `revoke_time` | timestamp with time zone | [`revoketime`](#ods-recharge-settlements) | 直接 | 字段重命名 |
### 3.14 group_buy_packages团购套餐定义
- 任务代码:`ODS_GROUP_PACKAGE`
- 采样记录数18
- API JSON 字段数40
- ODS 列数43
- DWD 目标表dim_groupbuy_package, dim_groupbuy_package_ex
<a id="api-group-buy-packages"></a>
#### API 源字段 — group_buy_packages [🔗 ODS](#ods-group-buy-packages)
已映射 38/40覆盖率 95.0%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `site_name` | string | [`site_name`](#ods-group-buy-packages) | 门店名称 | 示例: `朗朗桌球` |
| 2 | `effective_status` | integer | [`effective_status`](#ods-group-buy-packages) | 113 条 | 枚举值: `1`, `3` |
| 3 | `tenantTableAreaIdList[]` | integer | ⚠️ 未映射 | | 枚举值: `2791960001957765`, `2791961347968901`, `2791961060364165`, `2791961709907845`, `2791960521691013`, `2791962314215301` |
| 4 | `tableAreaNameList[]` | string | ⚠️ 未映射 | | 枚举值: `A区`, `斯诺克区`, `VIP包厢`, `K包`, `B区`, `麻将房` |
| 5 | `tenantCouponSaleOrderItemId` | integer | [`tenantcouponsaleorderitemid`](#ods-group-buy-packages) | 租户券销售订单项ID | 大小写匹配;示例: `0` |
| 6 | `id` | integer | [`id`](#ods-group-buy-packages) | 门店侧套餐 ID本文件内部的主键 | 枚举值: `3048468851870085`, `3035353129373509`, `3035353102028549`, `3035346503502213`, `3031000036133445`, `3030876421573701`, `3030875431701445`, `3030874907937861` |
| 7 | `add_end_clock` | string | [`add_end_clock`](#ods-group-buy-packages) | 附加时段结束时间,多数情况配合 "00:00:00" 或 "10:00:00" 使用 | 枚举值: `1.02:00:00`, `23:59:59`, `1.00:00:00`, `18:00:00` |
| 8 | `add_start_clock` | string | [`add_start_clock`](#ods-group-buy-packages) | 附加可用时间段的起始时间(第二段) | 枚举值: `23:00:00`, `10:00:00`, `00:00:00` |
| 9 | `area_tag_type` | integer | [`area_tag_type`](#ods-group-buy-packages) | 1 很可能代表“按台区标签限制”,例如 A区、中八区、包厢、KTV 等 | 示例: `1` |
| 10 | `card_type_ids` | string | [`card_type_ids`](#ods-group-buy-packages) | 原意是“适用会员卡类型 ID 列表”,例如某套餐只允许某几种会员卡使用,可以在此配置 | 示例: `0` |
| 11 | `coupon_money` | number | [`coupon_money`](#ods-group-buy-packages) | 券面值或内部结算面值,表示该套餐在门店侧对应的金额额度 | 示例: `0.0` |
| 12 | `create_time` | string | [`create_time`](#ods-group-buy-packages) | 该套餐在系统中创建的时间 | 枚举值: `2026-01-12 22:42:55`, `2026-01-03 16:20:55`, `2026-01-03 16:20:53`, `2026-01-03 16:14:10`, `2025-12-31 14:32:43`, `2025-12-31 12:26:58`, `2025-12-31 12:25:58`, `2025-12-31 12:25:26` |
| 13 | `creator_name` | string | [`creator_name`](#ods-group-buy-packages) | 创建人信息,一般包含“角色:姓名” | 枚举值: `店长:郑丽珊`, `管理员:郑丽珊` |
| 14 | `date_info` | string | [`date_info`](#ods-group-buy-packages) | 预留字段,通常用来存储更细粒度的日期信息,如具体日期列表、节假日特殊规则(可能是 JSON 字符串或编码) | 示例: `0` |
| 15 | `date_type` | integer | [`date_type`](#ods-group-buy-packages) | 来自 JSON 导出的原始字段,用于保留业务取值 | 示例: `1` |
| 16 | `duration` | integer | [`duration`](#ods-group-buy-packages) | 套餐内包含的时长(秒) | 枚举值: `3600`, `7200`, `14400` |
| 17 | `end_clock` | string | [`end_clock`](#ods-group-buy-packages) | 每日可用的结束时间点(第一段) | 枚举值: `1.02:00:00`, `23:59:59`, `1.00:00:00` |
| 18 | `end_time` | string | [`end_time`](#ods-group-buy-packages) | 套餐失效的日期时间(到这个时间点后不可使用) | 枚举值: `2027-01-13 00:00:00`, `2027-01-04 00:00:00`, `2026-01-03 00:00:00`, `2027-01-01 00:00:00`, `2027-09-01 00:00:00`, `2026-12-31 00:00:00`, `2026-09-03 00:00:00` |
| 19 | `group_type` | integer | [`group_type`](#ods-group-buy-packages) | 来自 JSON 导出的原始字段,用于保留业务取值 | 示例: `1` |
| 20 | `is_delete` | integer | [`is_delete`](#ods-group-buy-packages) | 逻辑删除标志 | 示例: `0` |
| 21 | `is_enabled` | integer | [`is_enabled`](#ods-group-buy-packages) | 启用状态 | 枚举值: `1`, `2` |
| 22 | `is_first_limit` | integer | [`is_first_limit`](#ods-group-buy-packages) | 是否首单限制 | 示例: `1` |
| 23 | `max_selectable_categories` | integer | [`max_selectable_categories`](#ods-group-buy-packages) | 来自 JSON 导出的原始字段,用于保留业务取值 | 示例: `0` |
| 24 | `package_id` | integer | [`package_id`](#ods-group-buy-packages) | “上层套餐 ID” 或“总部/系统级套餐 ID” | 枚举值: `1134850618`, `1130443985`, `1203035334`, `1812429097416714`, `1814707240811572`, `1137882866`, `1130465371`, `1137872168` |
| 25 | `package_name` | string | [`package_name`](#ods-group-buy-packages) | 团购套餐名称,用于前台展示和核销界面 | 枚举值: `午夜场9.9`, `斯诺克两小时`, `新人特惠一小时`, `中八、斯诺克包厢两小时`, `新人特惠A区中八一小时`, `KTV欢唱四小时`, `全天A区中八两小时`, `全天B区中八两小时` |
| 26 | `selling_price` | number | [`selling_price`](#ods-group-buy-packages) | 语义上应该是“团购售卖价”(顾客在平台购买券时的成交价格) | 示例: `0.0` |
| 27 | `site_id` | integer | [`site_id`](#ods-group-buy-packages) | 门店 ID | 示例: `2790685415443269` |
| 28 | `sort` | integer | [`sort`](#ods-group-buy-packages) | 排序 | 示例: `100` |
| 29 | `start_clock` | string | [`start_clock`](#ods-group-buy-packages) | 每日可用起始时间点(第一段) | 枚举值: `23:00:00`, `10:00:00`, `00:00:00` |
| 30 | `start_time` | string | [`start_time`](#ods-group-buy-packages) | 套餐开始生效的日期时间 | 枚举值: `2026-01-12 00:00:00`, `2026-01-03 00:00:00`, `2025-12-31 00:00:00`, `2025-07-21 00:00:00`, `2025-07-22 00:00:00`, `2025-12-30 00:00:00`, `2025-09-02 00:00:00` |
| 31 | `system_group_type` | integer | [`system_group_type`](#ods-group-buy-packages) | 来自 JSON 导出的原始字段,用于保留业务取值 | 示例: `1` |
| 32 | `table_area_id` | string | [`table_area_id`](#ods-group-buy-packages) | 原始设计应为“单一台区 ID”当套餐只限一个区域可以用这个字段存储 | 示例: `0` |
| 33 | `table_area_id_list` | string | [`table_area_id_list`](#ods-group-buy-packages) | 用来存放具体台区 ID 列表(例如 "1,2,3"),实现更细粒度的台桌限制 | |
| 34 | `table_area_name` | string | [`table_area_name`](#ods-group-buy-packages) | 套餐适用的“门店台区名称”,用于显示和筛选 | 示例: `B区` |
| 35 | `tenant_id` | integer | [`tenant_id`](#ods-group-buy-packages) | 租户 ID品牌/商户 ID | 示例: `2790683160709957` |
| 36 | `tenant_table_area_id` | string | [`tenant_table_area_id`](#ods-group-buy-packages) | 与 table_area_id 类似,是租户层级的台区 ID原本用于单区选择 | 示例: `0` |
| 37 | `tenant_table_area_id_list` | string | [`tenant_table_area_id_list`](#ods-group-buy-packages) | 实际代表“台区集合 ID”或“租户台区配置 ID”用来限制套餐可用的台区范围 | 示例: `2791960521691013` |
| 38 | `type` | integer | [`type`](#ods-group-buy-packages) | 内部业务子类型,具体含义需要结合系统文档 | 枚举值: `1`, `2` |
| 39 | `usable_count` | integer | [`usable_count`](#ods-group-buy-packages) | 可使用次数上限 | 示例: `0` |
| 40 | `usable_range` | string | [`usable_range`](#ods-group-buy-packages) | 一般用于文字描述可用日期范围(例如“周一至周五”) | |
<a id="ods-group-buy-packages"></a>
#### ODS 表结构 — ods.group_buy_packages [🔗 API](#api-group-buy-packages)
共 43 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `id` | bigint | [`id`](#api-group-buy-packages) | [`dim_groupbuy_package.groupbuy_package_id`](#dwd-dim-groupbuy-package), [`dim_groupbuy_package_ex.groupbuy_package_id`](#dwd-dim-groupbuy-package-ex) | 门店侧套餐 ID本文件内部的主键 |
| 2 | `package_id` | bigint | [`package_id`](#api-group-buy-packages) | [`dim_groupbuy_package.package_template_id`](#dwd-dim-groupbuy-package) | “上层套餐 ID” 或“总部/系统级套餐 ID” |
| 3 | `package_name` | text | [`package_name`](#api-group-buy-packages) | [`dim_groupbuy_package.package_name`](#dwd-dim-groupbuy-package) | 团购套餐名称,用于前台展示和核销界面 |
| 4 | `selling_price` | numeric | [`selling_price`](#api-group-buy-packages) | [`dim_groupbuy_package.selling_price`](#dwd-dim-groupbuy-package) | 语义上应该是“团购售卖价”(顾客在平台购买券时的成交价格) |
| 5 | `coupon_money` | numeric | [`coupon_money`](#api-group-buy-packages) | [`dim_groupbuy_package.coupon_face_value`](#dwd-dim-groupbuy-package) | 券面值或内部结算面值,表示该套餐在门店侧对应的金额额度 |
| 6 | `date_type` | integer | [`date_type`](#api-group-buy-packages) | [`dim_groupbuy_package_ex.date_type`](#dwd-dim-groupbuy-package-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 7 | `date_info` | text | [`date_info`](#api-group-buy-packages) | [`dim_groupbuy_package_ex.date_info`](#dwd-dim-groupbuy-package-ex) | 预留字段,通常用来存储更细粒度的日期信息,如具体日期列表、节假日特殊规则(可能是 JSON 字符串或编码) |
| 8 | `start_time` | timestamp without time zone | [`start_time`](#api-group-buy-packages) | [`dim_groupbuy_package.start_time`](#dwd-dim-groupbuy-package) | 套餐开始生效的日期时间 |
| 9 | `end_time` | timestamp without time zone | [`end_time`](#api-group-buy-packages) | [`dim_groupbuy_package.end_time`](#dwd-dim-groupbuy-package) | 套餐失效的日期时间(到这个时间点后不可使用) |
| 10 | `start_clock` | text | [`start_clock`](#api-group-buy-packages) | [`dim_groupbuy_package_ex.start_clock`](#dwd-dim-groupbuy-package-ex) | 每日可用起始时间点(第一段) |
| 11 | `end_clock` | text | [`end_clock`](#api-group-buy-packages) | [`dim_groupbuy_package_ex.end_clock`](#dwd-dim-groupbuy-package-ex) | 每日可用的结束时间点(第一段) |
| 12 | `add_start_clock` | text | [`add_start_clock`](#api-group-buy-packages) | [`dim_groupbuy_package_ex.add_start_clock`](#dwd-dim-groupbuy-package-ex) | 附加可用时间段的起始时间(第二段) |
| 13 | `add_end_clock` | text | [`add_end_clock`](#api-group-buy-packages) | [`dim_groupbuy_package_ex.add_end_clock`](#dwd-dim-groupbuy-package-ex) | 附加时段结束时间,多数情况配合 "00:00:00" 或 "10:00:00" 使用 |
| 14 | `duration` | integer | [`duration`](#api-group-buy-packages) | [`dim_groupbuy_package.duration_seconds`](#dwd-dim-groupbuy-package) | 套餐内包含的时长(秒) |
| 15 | `usable_count` | integer | [`usable_count`](#api-group-buy-packages) | [`dim_groupbuy_package_ex.usable_count`](#dwd-dim-groupbuy-package-ex) | 可使用次数上限 |
| 16 | `usable_range` | integer | [`usable_range`](#api-group-buy-packages) | [`dim_groupbuy_package_ex.usable_range`](#dwd-dim-groupbuy-package-ex) | 一般用于文字描述可用日期范围(例如“周一至周五”) |
| 17 | `table_area_id` | bigint | [`table_area_id`](#api-group-buy-packages) | [`dim_groupbuy_package_ex.table_area_id`](#dwd-dim-groupbuy-package-ex) | 原始设计应为“单一台区 ID”当套餐只限一个区域可以用这个字段存储 |
| 18 | `table_area_name` | text | [`table_area_name`](#api-group-buy-packages) | [`dim_groupbuy_package.table_area_name`](#dwd-dim-groupbuy-package) | 套餐适用的“门店台区名称”,用于显示和筛选 |
| 19 | `table_area_id_list` | jsonb | [`table_area_id_list`](#api-group-buy-packages) | [`dim_groupbuy_package_ex.table_area_id_list`](#dwd-dim-groupbuy-package-ex) | 用来存放具体台区 ID 列表(例如 "1,2,3"),实现更细粒度的台桌限制 |
| 20 | `tenant_table_area_id` | bigint | [`tenant_table_area_id`](#api-group-buy-packages) | [`dim_groupbuy_package_ex.tenant_table_area_id`](#dwd-dim-groupbuy-package-ex) | 与 table_area_id 类似,是租户层级的台区 ID原本用于单区选择 |
| 21 | `tenant_table_area_id_list` | jsonb | [`tenant_table_area_id_list`](#api-group-buy-packages) | [`dim_groupbuy_package.tenant_table_area_id_list`](#dwd-dim-groupbuy-package) | 实际代表“台区集合 ID”或“租户台区配置 ID”用来限制套餐可用的台区范围 |
| 22 | `site_id` | bigint | [`site_id`](#api-group-buy-packages) | [`dim_groupbuy_package.site_id`](#dwd-dim-groupbuy-package) | 门店 ID |
| 23 | `site_name` | text | [`site_name`](#api-group-buy-packages) | [`dim_groupbuy_package_ex.site_name`](#dwd-dim-groupbuy-package-ex) | 门店名称 |
| 24 | `tenant_id` | bigint | [`tenant_id`](#api-group-buy-packages) | [`dim_groupbuy_package.tenant_id`](#dwd-dim-groupbuy-package) | 租户 ID品牌/商户 ID |
| 25 | `card_type_ids` | jsonb | [`card_type_ids`](#api-group-buy-packages) | [`dim_groupbuy_package.card_type_ids`](#dwd-dim-groupbuy-package) | 原意是“适用会员卡类型 ID 列表”,例如某套餐只允许某几种会员卡使用,可以在此配置 |
| 26 | `group_type` | integer | [`group_type`](#api-group-buy-packages) | [`dim_groupbuy_package_ex.group_type`](#dwd-dim-groupbuy-package-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 27 | `system_group_type` | integer | [`system_group_type`](#api-group-buy-packages) | [`dim_groupbuy_package_ex.system_group_type`](#dwd-dim-groupbuy-package-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 28 | `type` | integer | [`type`](#api-group-buy-packages) | [`dim_groupbuy_package_ex.package_type`](#dwd-dim-groupbuy-package-ex) | 内部业务子类型,具体含义需要结合系统文档 |
| 29 | `effective_status` | integer | [`effective_status`](#api-group-buy-packages) | [`dim_groupbuy_package_ex.effective_status`](#dwd-dim-groupbuy-package-ex) | 113 条 |
| 30 | `is_enabled` | integer | [`is_enabled`](#api-group-buy-packages) | [`dim_groupbuy_package.is_enabled`](#dwd-dim-groupbuy-package) | 启用状态 |
| 31 | `is_delete` | integer | [`is_delete`](#api-group-buy-packages) | [`dim_groupbuy_package.is_delete`](#dwd-dim-groupbuy-package) | 逻辑删除标志 |
| 32 | `max_selectable_categories` | integer | [`max_selectable_categories`](#api-group-buy-packages) | [`dim_groupbuy_package_ex.max_selectable_categories`](#dwd-dim-groupbuy-package-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 33 | `area_tag_type` | integer | [`area_tag_type`](#api-group-buy-packages) | [`dim_groupbuy_package_ex.area_tag_type`](#dwd-dim-groupbuy-package-ex) | 1 很可能代表“按台区标签限制”,例如 A区、中八区、包厢、KTV 等 |
| 34 | `creator_name` | text | [`creator_name`](#api-group-buy-packages) | [`dim_groupbuy_package_ex.creator_name`](#dwd-dim-groupbuy-package-ex) | 创建人信息,一般包含“角色:姓名” |
| 35 | `create_time` | timestamp without time zone | [`create_time`](#api-group-buy-packages) | [`dim_groupbuy_package.create_time`](#dwd-dim-groupbuy-package) | 该套餐在系统中创建的时间 |
| 36 | `is_first_limit` | boolean | [`is_first_limit`](#api-group-buy-packages) | [`dim_groupbuy_package.is_first_limit`](#dwd-dim-groupbuy-package) | 是否首单限制 |
| 37 | `sort` | integer | [`sort`](#api-group-buy-packages) | [`dim_groupbuy_package.sort`](#dwd-dim-groupbuy-package) | 排序 |
| 38 | `tenantcouponsaleorderitemid` | bigint | [`tenantCouponSaleOrderItemId`](#api-group-buy-packages) | [`dim_groupbuy_package_ex.tenant_coupon_sale_order_item_id`](#dwd-dim-groupbuy-package-ex) | 租户券销售订单项ID |
| 39 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 40 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 41 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 42 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
| 43 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
<a id="dwd-dim-groupbuy-package"></a>
#### DWD 表结构 — dwd.dim_groupbuy_package [🔗 ODS](#ods-group-buy-packages)
共 22 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `groupbuy_package_id` | bigint | [`id`](#ods-group-buy-packages) | 直接 | 团购套餐 ID |
| 2 | `tenant_id` | bigint | [`tenant_id`](#ods-group-buy-packages) | 直接 | 租户 ID当前值: 2790683160709957 |
| 3 | `site_id` | bigint | [`site_id`](#ods-group-buy-packages) | 直接 | 门店 ID → dim_site当前值: 2790685415443269 |
| 4 | `package_name` | character varying | [`package_name`](#ods-group-buy-packages) | 直接 | 套餐名称。**样本值**: "中八、斯诺克包厢两小时", "斯诺克两小时"等 |
| 5 | `package_template_id` | bigint | [`package_id`](#ods-group-buy-packages) | 直接 | 套餐模板 ID |
| 6 | `selling_price` | numeric | [`selling_price`](#ods-group-buy-packages) | 直接 | 售卖价格每笔订单不同从核销记录中dwd_groupbuy_redemption获取 |
| 7 | `coupon_face_value` | numeric | [`coupon_money`](#ods-group-buy-packages) | 直接 | 券面值每笔订单不同从核销记录中dwd_groupbuy_redemption获取 |
| 8 | `duration_seconds` | integer | [`duration`](#ods-group-buy-packages) | 直接 | 套餐时长(秒)。**样本值**: 3600=1小时, 7200=2小时, 14400=4小时 等 |
| 9 | `start_time` | timestamp with time zone | [`start_time`](#ods-group-buy-packages) | 直接 | 套餐生效开始时间 |
| 10 | `end_time` | timestamp with time zone | [`end_time`](#ods-group-buy-packages) | 直接 | 套餐生效结束时间 |
| 11 | `table_area_name` | character varying | [`table_area_name`](#ods-group-buy-packages) | 直接 | 适用台区名称。**枚举值**: "A区", "VIP包厢", "斯诺克区", "B区", "麻将房", "888" |
| 12 | `is_enabled` | integer | [`is_enabled`](#ods-group-buy-packages) | 直接 | 启用状态。**枚举值**: 1=启用, 2=停用 |
| 13 | `is_delete` | integer | [`is_delete`](#ods-group-buy-packages) | 直接 | 删除标记。**枚举值**: 0=未删除 |
| 14 | `create_time` | timestamp with time zone | [`create_time`](#ods-group-buy-packages) | 直接 | 创建时间 |
| 15 | `tenant_table_area_id_list` | character varying | [`tenant_table_area_id_list`](#ods-group-buy-packages) | 直接 | 租户级台区 ID 列表 |
| 16 | `card_type_ids` | character varying | [`card_type_ids`](#ods-group-buy-packages) | 直接 | 允许使用的卡类型 ID 列表(当前数据为 "0" |
| 17 | `sort` | integer | [`sort`](#ods-group-buy-packages) | 直接 | 排序 |
| 18 | `is_first_limit` | boolean | [`is_first_limit`](#ods-group-buy-packages) | → boolean | 是否首单限制 |
| 19 | `scd2_start_time` | timestamp with time zone | — | SCD2 | SCD2 版本生效时间 |
| 20 | `scd2_end_time` | timestamp with time zone | — | SCD2 | SCD2 版本失效时间 |
| 21 | `scd2_is_current` | integer | — | SCD2 | 当前版本标记 |
| 22 | `scd2_version` | integer | — | SCD2 | 版本号 |
<a id="dwd-dim-groupbuy-package-ex"></a>
#### DWD 表结构 — dwd.dim_groupbuy_package_ex [🔗 ODS](#ods-group-buy-packages)
共 25 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `groupbuy_package_id` | bigint | [`id`](#ods-group-buy-packages) | 直接 | 字段重命名 |
| 2 | `site_name` | character varying | [`site_name`](#ods-group-buy-packages) | 直接 | 同名直传 |
| 3 | `usable_count` | integer | [`usable_count`](#ods-group-buy-packages) | 直接 | 同名直传 |
| 4 | `date_type` | integer | [`date_type`](#ods-group-buy-packages) | 直接 | 同名直传 |
| 5 | `usable_range` | character varying | [`usable_range`](#ods-group-buy-packages) | 直接 | 维度字段,用于补充维度属性 |
| 6 | `date_info` | character varying | [`date_info`](#ods-group-buy-packages) | 直接 | 同名直传 |
| 7 | `start_clock` | character varying | [`start_clock`](#ods-group-buy-packages) | 直接 | 同名直传 |
| 8 | `end_clock` | character varying | [`end_clock`](#ods-group-buy-packages) | 直接 | 同名直传 |
| 9 | `add_start_clock` | character varying | [`add_start_clock`](#ods-group-buy-packages) | 直接 | 同名直传 |
| 10 | `add_end_clock` | character varying | [`add_end_clock`](#ods-group-buy-packages) | 直接 | 同名直传 |
| 11 | `area_tag_type` | integer | [`area_tag_type`](#ods-group-buy-packages) | 直接 | 同名直传 |
| 12 | `table_area_id` | bigint | [`table_area_id`](#ods-group-buy-packages) | 直接 | 标识类 ID 字段,用于关联/定位相关实体 |
| 13 | `tenant_table_area_id` | bigint | [`tenant_table_area_id`](#ods-group-buy-packages) | 直接 | 标识类 ID 字段,用于关联/定位相关实体 |
| 14 | `table_area_id_list` | character varying | [`table_area_id_list`](#ods-group-buy-packages) | 直接 | 维度字段,用于补充维度属性 |
| 15 | `group_type` | integer | [`group_type`](#ods-group-buy-packages) | 直接 | 同名直传 |
| 16 | `system_group_type` | integer | [`system_group_type`](#ods-group-buy-packages) | 直接 | 同名直传 |
| 17 | `package_type` | integer | [`type`](#ods-group-buy-packages) | 直接 | 字段重命名 |
| 18 | `effective_status` | integer | [`effective_status`](#ods-group-buy-packages) | 直接 | 同名直传 |
| 19 | `max_selectable_categories` | integer | [`max_selectable_categories`](#ods-group-buy-packages) | 直接 | 同名直传 |
| 20 | `creator_name` | character varying | [`creator_name`](#ods-group-buy-packages) | 直接 | 同名直传 |
| 21 | `tenant_coupon_sale_order_item_id` | bigint | [`tenantcouponsaleorderitemid`](#ods-group-buy-packages) | 直接 | 字段重命名 |
| 22 | `scd2_start_time` | timestamp with time zone | — | SCD2 | SCD2 元数据 |
| 23 | `scd2_end_time` | timestamp with time zone | — | SCD2 | SCD2 元数据 |
| 24 | `scd2_is_current` | integer | — | SCD2 | SCD2 元数据 |
| 25 | `scd2_version` | integer | — | SCD2 | SCD2 元数据 |
### 3.15 group_buy_redemption_records团购套餐核销
- 任务代码:`ODS_GROUP_BUY_REDEMPTION`
- 采样记录数200
- API JSON 字段数52
- ODS 列数57
- DWD 目标表dwd_groupbuy_redemption, dwd_groupbuy_redemption_ex
<a id="api-group-buy-redemption-records"></a>
#### API 源字段 — group_buy_redemption_records [🔗 ODS](#ods-group-buy-redemption-records)
已映射 52/52覆盖率 100.0%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `tableName` | string | [`tablename`](#ods-group-buy-redemption-records) | (待补充) | 大小写匹配;枚举值: `A15`, `A4`, `S4`, `A3`, `A1`, `A9`, `A17`, `A8` |
| 2 | `tableAreaName` | string | [`tableareaname`](#ods-group-buy-redemption-records) | (待补充) | 大小写匹配;枚举值: `A区`, `斯诺克区`, `B区`, `麻将房` |
| 3 | `siteName` | string | [`sitename`](#ods-group-buy-redemption-records) | (待补充) | 大小写匹配;示例: `朗朗桌球` |
| 4 | `goodsOptionPrice` | number | [`goodsoptionprice`](#ods-group-buy-redemption-records) | (待补充) | 大小写匹配;示例: `0.0` |
| 5 | `id` | integer | [`id`](#ods-group-buy-redemption-records) | 本条“团购套餐流水”记录的 主键 ID | 枚举值: `3093859292088645`, `3093855577786629`, `3093804251662661`, `3093800357562565`, `3093793885882629`, `3093774985857157`, `3093761348159621`, `3093749943830789` |
| 6 | `assistant_promotion_money` | number | [`assistant_promotion_money`](#ods-group-buy-redemption-records) | 分摊到“助教服务”的促销金额 | 示例: `0.0` |
| 7 | `assistant_service_promotion_money` | number | [`assistant_service_promotion_money`](#ods-group-buy-redemption-records) | 进一步细分助教服务的促销金额 | 示例: `0.0` |
| 8 | `assistant_service_share_money` | number | [`assistant_service_share_money`](#ods-group-buy-redemption-records) | 助教服务分摊金额 | 示例: `0.0` |
| 9 | `assistant_share_money` | number | [`assistant_share_money`](#ods-group-buy-redemption-records) | 助教分摊金额 | 示例: `0.0` |
| 10 | `coupon_code` | string | [`coupon_code`](#ods-group-buy-redemption-records) | 团购券券码,核销时扫描/录入的字符串 | 枚举值: `0107305319597`, `0108970935413`, `0103968076185`, `0101346097990`, `0107317733529`, `0102409858353`, `0102774179020`, `0103957102485` |
| 11 | `coupon_money` | number | [`coupon_money`](#ods-group-buy-redemption-records) | 本次核销时,这张券在门店侧对应的金额额度(“可抵扣金额”) | 枚举值: `96.0`, `48.0`, `68.0`, `136.0`, `116.0`, `288.0`, `58.0` |
| 12 | `coupon_origin_id` | integer | [`coupon_origin_id`](#ods-group-buy-redemption-records) | 平台/上游系统中的券记录主键 ID“券来源 ID” | 枚举值: `3093740768184645`, `3093784063412357`, `3093729957169285`, `3093681906993285`, `3093730736834693`, `3093720619157701`, `3093641950333253`, `3093689829460293` |
| 13 | `create_time` | string | [`create_time`](#ods-group-buy-redemption-records) | 本条团购套餐使用流水创建时间(即券核销时间,或与结账时间接近) | 枚举值: `2026-02-14 00:16:27`, `2026-02-14 00:12:40`, `2026-02-13 23:20:28`, `2026-02-13 23:16:30`, `2026-02-13 23:09:55`, `2026-02-13 22:50:42`, `2026-02-13 22:36:49`, `2026-02-13 22:25:13` |
| 14 | `good_service_share_money` | number | [`good_service_share_money`](#ods-group-buy-redemption-records) | 商品服务分摊金额 | 示例: `0.0` |
| 15 | `goods_promotion_money` | number | [`goods_promotion_money`](#ods-group-buy-redemption-records) | 本次券使用中,分摊到“商品”部分的促销金额 | 示例: `0.0` |
| 16 | `goods_share_money` | number | [`goods_share_money`](#ods-group-buy-redemption-records) | 商品分摊金额 | 示例: `0.0` |
| 17 | `is_delete` | integer | [`is_delete`](#ods-group-buy-redemption-records) | 逻辑删除标记0=否1=是) | 示例: `0` |
| 18 | `is_single_order` | integer | [`is_single_order`](#ods-group-buy-redemption-records) | 是否单独作为一条订单行 | 示例: `1` |
| 19 | `ledger_amount` | number | [`ledger_amount`](#ods-group-buy-redemption-records) | 本次券实际冲抵台费的金额 | 枚举值: `96.0`, `48.0`, `68.0`, `44.2`, `136.0`, `113.66`, `116.0`, `38.16` |
| 20 | `ledger_count` | integer | [`ledger_count`](#ods-group-buy-redemption-records) | 按此次优惠实际计算的“核销秒数” | 枚举值: `7200`, `3600`, `3315`, `7055`, `2862`, `3273`, `14400`, `3197` |
| 21 | `ledger_group_name` | string | [`ledger_group_name`](#ods-group-buy-redemption-records) | 团购项目所属的“记账分组名称”(例如“团购台费”“团购包厢”等) | |
| 22 | `ledger_name` | string | [`ledger_name`](#ods-group-buy-redemption-records) | 台费侧关联的“团购项目名称”(记账名) | 枚举值: `全天A区中八两小时`, `全天A区中八一小时`, `全天斯诺克一小时`, `斯诺克两小时`, `全天B区中八两小时`, `麻将包厢4小时`, `B区桌球一小时`, `新人特惠一小时` |
| 23 | `ledger_status` | integer | [`ledger_status`](#ods-group-buy-redemption-records) | 流水状态 | 示例: `1` |
| 24 | `ledger_unit_price` | number | [`ledger_unit_price`](#ods-group-buy-redemption-records) | 对应台费的标准单价,单位元/小时从数值来看是类似29.9/小时这种定价) | 枚举值: `39.9`, `20.26`, `69.9`, `59.9`, `128.0`, `35.9`, `12.12`, `9.9` |
| 25 | `offer_type` | integer | [`offer_type`](#ods-group-buy-redemption-records) | 优惠类型 | 示例: `1` |
| 26 | `operator_id` | integer | [`operator_id`](#ods-group-buy-redemption-records) | 执行本次核销/结算操作的 操作员 ID | 示例: `2790687322443013` |
| 27 | `operator_name` | string | [`operator_name`](#ods-group-buy-redemption-records) | 操作员名称(包含角色说明),与 operator_id 对应的冗余展示字段 | 示例: `收银员:郑丽珊` |
| 28 | `order_coupon_channel` | integer | [`order_coupon_channel`](#ods-group-buy-redemption-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 示例: `1` |
| 29 | `order_coupon_id` | integer | [`order_coupon_id`](#ods-group-buy-redemption-records) | 订单中“券使用记录”的 ID | 枚举值: `3093740768184645`, `3093784063412357`, `3093729957169285`, `3093681906993285`, `3093730736834693`, `3093720619157701`, `3093641950333253`, `3093689829460293` |
| 30 | `order_pay_id` | integer | [`order_pay_id`](#ods-group-buy-redemption-records) | 指向支付记录表中的支付流水 ID | 示例: `0` |
| 31 | `order_settle_id` | integer | [`order_settle_id`](#ods-group-buy-redemption-records) | 结算单 ID小票结账主键 | 枚举值: `3093859276196037`, `3093855537596549`, `3093804233967877`, `3093800338802821`, `3093793847478597`, `3093774959741061`, `3093761316341957`, `3093749870790789` |
| 32 | `order_trade_no` | integer | [`order_trade_no`](#ods-group-buy-redemption-records) | 订单交易号,和其它消费明细(台费、商品、助教、团购)共用的订单主键 | 枚举值: `3093740766775621`, `3093784062036101`, `3093729955563653`, `3093681905567877`, `3093730735376517`, `3093720617519301`, `3093641948924229`, `3093689828067653` |
| 33 | `promotion_activity_id` | integer | [`promotion_activity_id`](#ods-group-buy-redemption-records) | 团购/促销活动 ID | 枚举值: `3093740765382981`, `3093784060856453`, `3093729952467077`, `3093681904502917`, `3093730734033029`, `3093720616372421`, `3093641947482437`, `3093689826576709` |
| 34 | `promotion_coupon_id` | integer | [`promotion_coupon_id`](#ods-group-buy-redemption-records) | 团购套餐定义 ID | 枚举值: `3030874716834757`, `3030872476945477`, `3030025905916997`, `3035353129373509`, `3030874133269445`, `3029784419027909`, `2861343275830405`, `3031000036133445` |
| 35 | `promotion_seconds` | integer | [`promotion_seconds`](#ods-group-buy-redemption-records) | 团购套餐定义的“标准时长”(券本身标称的可用时长) | 枚举值: `7200`, `3600`, `14400` |
| 36 | `recharge_promotion_money` | number | [`recharge_promotion_money`](#ods-group-buy-redemption-records) | 来自“充值类优惠”的分摊金额(例如储值赠送部分) | 示例: `0.0` |
| 37 | `recharge_share_money` | number | [`recharge_share_money`](#ods-group-buy-redemption-records) | 充值分摊金额 | 示例: `0.0` |
| 38 | `reward_promotion_money` | number | [`reward_promotion_money`](#ods-group-buy-redemption-records) | 本次促销中,属于“奖励金/积分抵扣”的金额 | 示例: `0.0` |
| 39 | `sales_man_org_id` | integer | [`sales_man_org_id`](#ods-group-buy-redemption-records) | 营业员所属组织 ID | 示例: `0` |
| 40 | `salesman_name` | string | [`salesman_name`](#ods-group-buy-redemption-records) | 营业员姓名 | |
| 41 | `salesman_role_id` | integer | [`salesman_role_id`](#ods-group-buy-redemption-records) | 营业员角色 ID | 示例: `0` |
| 42 | `salesman_user_id` | integer | [`salesman_user_id`](#ods-group-buy-redemption-records) | 营业员/业务员用户 ID | 示例: `0` |
| 43 | `site_id` | integer | [`site_id`](#ods-group-buy-redemption-records) | 门店 ID与其它 JSON 中一致 | 示例: `2790685415443269` |
| 44 | `table_charge_seconds` | integer | [`table_charge_seconds`](#ods-group-buy-redemption-records) | 本次结算中该球台总计计费的秒数(整台的台费计费时间) | 枚举值: `7200`, `3600`, `3315`, `7055`, `2862`, `10800`, `3273`, `14400` |
| 45 | `table_id` | integer | [`table_id`](#ods-group-buy-redemption-records) | 球台 ID | 枚举值: `2793003506815045`, `2793001904918661`, `2793020260044869`, `2793001695301765`, `2791964216463493`, `2793002980429893`, `2793003705192517`, `2793002896494725` |
| 46 | `table_service_promotion_money` | number | [`table_service_promotion_money`](#ods-group-buy-redemption-records) | 本次券使用中,分摊到“台费服务费”部分的促销金额 | 示例: `0.0` |
| 47 | `table_service_share_money` | number | [`table_service_share_money`](#ods-group-buy-redemption-records) | 台费服务分摊金额 | 示例: `0.0` |
| 48 | `table_share_money` | number | [`table_share_money`](#ods-group-buy-redemption-records) | 台费分摊金额 | 枚举值: `39.9`, `20.26`, `69.9`, `59.9`, `128.0`, `35.9`, `12.12`, `9.9` |
| 49 | `tenant_id` | integer | [`tenant_id`](#ods-group-buy-redemption-records) | 租户/品牌 ID | 示例: `2790683160709957` |
| 50 | `tenant_table_area_id` | integer | [`tenant_table_area_id`](#ods-group-buy-redemption-records) | 租户级台区分组 ID表示当前使用券的台桌所属的区域组合 | 枚举值: `2791960001957765`, `2791961347968901`, `2791960521691013`, `2791962314215301` |
| 51 | `coupon_sale_id` | integer | [`coupon_sale_id`](#ods-group-buy-redemption-records) | 优惠券销售ID | 示例: `0` |
| 52 | `member_discount_money` | number | [`member_discount_money`](#ods-group-buy-redemption-records) | 会员折扣金额 | 示例: `0.0` |
<a id="ods-group-buy-redemption-records"></a>
#### ODS 表结构 — ods.group_buy_redemption_records [🔗 API](#api-group-buy-redemption-records)
共 57 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `id` | bigint | [`id`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.redemption_id`](#dwd-dwd-groupbuy-redemption), [`dwd_groupbuy_redemption_ex.redemption_id`](#dwd-dwd-groupbuy-redemption-ex) | 本条“团购套餐流水”记录的 主键 ID |
| 2 | `tenant_id` | bigint | [`tenant_id`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.tenant_id`](#dwd-dwd-groupbuy-redemption) | 租户/品牌 ID |
| 3 | `site_id` | bigint | [`site_id`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.site_id`](#dwd-dwd-groupbuy-redemption) | 门店 ID与其它 JSON 中一致 |
| 4 | `sitename` | text | [`siteName`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.site_name`](#dwd-dwd-groupbuy-redemption-ex) | (待补充) |
| 5 | `table_id` | bigint | [`table_id`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.table_id`](#dwd-dwd-groupbuy-redemption) | 球台 ID |
| 6 | `tablename` | text | [`tableName`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.table_name`](#dwd-dwd-groupbuy-redemption-ex) | (待补充) |
| 7 | `tableareaname` | text | [`tableAreaName`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.table_area_name`](#dwd-dwd-groupbuy-redemption-ex) | (待补充) |
| 8 | `tenant_table_area_id` | bigint | [`tenant_table_area_id`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.tenant_table_area_id`](#dwd-dwd-groupbuy-redemption) | 租户级台区分组 ID表示当前使用券的台桌所属的区域组合 |
| 9 | `order_trade_no` | text | [`order_trade_no`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.order_trade_no`](#dwd-dwd-groupbuy-redemption) | 订单交易号,和其它消费明细(台费、商品、助教、团购)共用的订单主键 |
| 10 | `order_settle_id` | bigint | [`order_settle_id`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.order_settle_id`](#dwd-dwd-groupbuy-redemption) | 结算单 ID小票结账主键 |
| 11 | `order_pay_id` | bigint | [`order_pay_id`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.order_pay_id`](#dwd-dwd-groupbuy-redemption-ex) | 指向支付记录表中的支付流水 ID |
| 12 | `order_coupon_id` | bigint | [`order_coupon_id`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.order_coupon_id`](#dwd-dwd-groupbuy-redemption) | 订单中“券使用记录”的 ID |
| 13 | `order_coupon_channel` | integer | [`order_coupon_channel`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.order_coupon_channel`](#dwd-dwd-groupbuy-redemption) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 14 | `coupon_code` | text | [`coupon_code`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.coupon_code`](#dwd-dwd-groupbuy-redemption) | 团购券券码,核销时扫描/录入的字符串 |
| 15 | `coupon_money` | numeric | [`coupon_money`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.coupon_money`](#dwd-dwd-groupbuy-redemption) | 本次核销时,这张券在门店侧对应的金额额度(“可抵扣金额”) |
| 16 | `coupon_origin_id` | bigint | [`coupon_origin_id`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.coupon_origin_id`](#dwd-dwd-groupbuy-redemption) | 平台/上游系统中的券记录主键 ID“券来源 ID” |
| 17 | `ledger_name` | text | [`ledger_name`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.ledger_name`](#dwd-dwd-groupbuy-redemption) | 台费侧关联的“团购项目名称”(记账名) |
| 18 | `ledger_group_name` | text | [`ledger_group_name`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.ledger_group_name`](#dwd-dwd-groupbuy-redemption-ex) | 团购项目所属的“记账分组名称”(例如“团购台费”“团购包厢”等) |
| 19 | `ledger_amount` | numeric | [`ledger_amount`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.ledger_amount`](#dwd-dwd-groupbuy-redemption) | 本次券实际冲抵台费的金额 |
| 20 | `ledger_count` | numeric | [`ledger_count`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.ledger_count`](#dwd-dwd-groupbuy-redemption) | 按此次优惠实际计算的“核销秒数” |
| 21 | `ledger_unit_price` | numeric | [`ledger_unit_price`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.ledger_unit_price`](#dwd-dwd-groupbuy-redemption) | 对应台费的标准单价,单位元/小时从数值来看是类似29.9/小时这种定价) |
| 22 | `ledger_status` | integer | [`ledger_status`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.ledger_status`](#dwd-dwd-groupbuy-redemption-ex) | 流水状态 |
| 23 | `table_charge_seconds` | integer | [`table_charge_seconds`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.table_charge_seconds`](#dwd-dwd-groupbuy-redemption) | 本次结算中该球台总计计费的秒数(整台的台费计费时间) |
| 24 | `promotion_activity_id` | bigint | [`promotion_activity_id`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.promotion_activity_id`](#dwd-dwd-groupbuy-redemption) | 团购/促销活动 ID |
| 25 | `promotion_coupon_id` | bigint | [`promotion_coupon_id`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.promotion_coupon_id`](#dwd-dwd-groupbuy-redemption) | 团购套餐定义 ID |
| 26 | `promotion_seconds` | integer | [`promotion_seconds`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.promotion_seconds`](#dwd-dwd-groupbuy-redemption) | 团购套餐定义的“标准时长”(券本身标称的可用时长) |
| 27 | `offer_type` | integer | [`offer_type`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.offer_type`](#dwd-dwd-groupbuy-redemption-ex) | 优惠类型 |
| 28 | `assistant_promotion_money` | numeric | [`assistant_promotion_money`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.assistant_promotion_money`](#dwd-dwd-groupbuy-redemption-ex) | 分摊到“助教服务”的促销金额 |
| 29 | `assistant_service_promotion_money` | numeric | [`assistant_service_promotion_money`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.assistant_service_promotion_money`](#dwd-dwd-groupbuy-redemption-ex) | 进一步细分助教服务的促销金额 |
| 30 | `table_service_promotion_money` | numeric | [`table_service_promotion_money`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.table_service_promotion_money`](#dwd-dwd-groupbuy-redemption-ex) | 本次券使用中,分摊到“台费服务费”部分的促销金额 |
| 31 | `goods_promotion_money` | numeric | [`goods_promotion_money`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.goods_promotion_money`](#dwd-dwd-groupbuy-redemption-ex) | 本次券使用中,分摊到“商品”部分的促销金额 |
| 32 | `recharge_promotion_money` | numeric | [`recharge_promotion_money`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.recharge_promotion_money`](#dwd-dwd-groupbuy-redemption-ex) | 来自“充值类优惠”的分摊金额(例如储值赠送部分) |
| 33 | `reward_promotion_money` | numeric | [`reward_promotion_money`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.reward_promotion_money`](#dwd-dwd-groupbuy-redemption-ex) | 本次促销中,属于“奖励金/积分抵扣”的金额 |
| 34 | `goodsoptionprice` | numeric | [`goodsOptionPrice`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.goods_option_price`](#dwd-dwd-groupbuy-redemption-ex) | (待补充) |
| 35 | `salesman_name` | text | [`salesman_name`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.salesman_name`](#dwd-dwd-groupbuy-redemption-ex) | 营业员姓名 |
| 36 | `sales_man_org_id` | bigint | [`sales_man_org_id`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.salesman_org_id`](#dwd-dwd-groupbuy-redemption-ex) | 营业员所属组织 ID |
| 37 | `salesman_role_id` | bigint | [`salesman_role_id`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.salesman_role_id`](#dwd-dwd-groupbuy-redemption-ex) | 营业员角色 ID |
| 38 | `salesman_user_id` | bigint | [`salesman_user_id`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.salesman_user_id`](#dwd-dwd-groupbuy-redemption-ex) | 营业员/业务员用户 ID |
| 39 | `operator_id` | bigint | [`operator_id`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.operator_id`](#dwd-dwd-groupbuy-redemption-ex) | 执行本次核销/结算操作的 操作员 ID |
| 40 | `operator_name` | text | [`operator_name`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.operator_name`](#dwd-dwd-groupbuy-redemption-ex) | 操作员名称(包含角色说明),与 operator_id 对应的冗余展示字段 |
| 41 | `is_single_order` | integer | [`is_single_order`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.is_single_order`](#dwd-dwd-groupbuy-redemption) | 是否单独作为一条订单行 |
| 42 | `is_delete` | integer | [`is_delete`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.is_delete`](#dwd-dwd-groupbuy-redemption) | 逻辑删除标记0=否1=是) |
| 43 | `create_time` | timestamp without time zone | [`create_time`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.create_time`](#dwd-dwd-groupbuy-redemption) | 本条团购套餐使用流水创建时间(即券核销时间,或与结账时间接近) |
| 44 | `assistant_service_share_money` | numeric | [`assistant_service_share_money`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.assistant_service_share_money`](#dwd-dwd-groupbuy-redemption-ex) | 助教服务分摊金额 |
| 45 | `assistant_share_money` | numeric | [`assistant_share_money`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.assistant_share_money`](#dwd-dwd-groupbuy-redemption-ex) | 助教分摊金额 |
| 46 | `coupon_sale_id` | bigint | [`coupon_sale_id`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.coupon_sale_id`](#dwd-dwd-groupbuy-redemption) | 优惠券销售ID |
| 47 | `good_service_share_money` | numeric | [`good_service_share_money`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.good_service_share_money`](#dwd-dwd-groupbuy-redemption-ex) | 商品服务分摊金额 |
| 48 | `goods_share_money` | numeric | [`goods_share_money`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.goods_share_money`](#dwd-dwd-groupbuy-redemption-ex) | 商品分摊金额 |
| 49 | `member_discount_money` | numeric | [`member_discount_money`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption.member_discount_money`](#dwd-dwd-groupbuy-redemption) | 会员折扣金额 |
| 50 | `recharge_share_money` | numeric | [`recharge_share_money`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.recharge_share_money`](#dwd-dwd-groupbuy-redemption-ex) | 充值分摊金额 |
| 51 | `table_service_share_money` | numeric | [`table_service_share_money`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.table_service_share_money`](#dwd-dwd-groupbuy-redemption-ex) | 台费服务分摊金额 |
| 52 | `table_share_money` | numeric | [`table_share_money`](#api-group-buy-redemption-records) | [`dwd_groupbuy_redemption_ex.table_share_money`](#dwd-dwd-groupbuy-redemption-ex) | 台费分摊金额 |
| 53 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
| 54 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 55 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 56 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 57 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
<a id="dwd-dwd-groupbuy-redemption"></a>
#### DWD 表结构 — dwd.dwd_groupbuy_redemption [🔗 ODS](#ods-group-buy-redemption-records)
共 25 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `redemption_id` | bigint | [`id`](#ods-group-buy-redemption-records) | 直接 | 核销 ID |
| 2 | `tenant_id` | bigint | [`tenant_id`](#ods-group-buy-redemption-records) | 直接 | 租户 ID |
| 3 | `site_id` | bigint | [`site_id`](#ods-group-buy-redemption-records) | 直接 | 门店 ID |
| 4 | `table_id` | bigint | [`table_id`](#ods-group-buy-redemption-records) | 直接 | 台桌 ID → dim_table |
| 5 | `tenant_table_area_id` | bigint | [`tenant_table_area_id`](#ods-group-buy-redemption-records) | 直接 | 台区 ID |
| 6 | `table_charge_seconds` | integer | [`table_charge_seconds`](#ods-group-buy-redemption-records) | 直接 | 台费计费时长(秒)。**样本值**: 3600=1h, 7200=2h, 10800=3h 等 |
| 7 | `order_trade_no` | bigint | [`order_trade_no`](#ods-group-buy-redemption-records) | 直接 | 订单号 |
| 8 | `order_settle_id` | bigint | [`order_settle_id`](#ods-group-buy-redemption-records) | 直接 | 结账单 ID → dwd_settlement_head |
| 9 | `order_coupon_id` | bigint | [`order_coupon_id`](#ods-group-buy-redemption-records) | 直接 | 订单券 ID |
| 10 | `coupon_origin_id` | bigint | [`coupon_origin_id`](#ods-group-buy-redemption-records) | 直接 | 券来源 ID |
| 11 | `promotion_activity_id` | bigint | [`promotion_activity_id`](#ods-group-buy-redemption-records) | 直接 | 促销活动 ID |
| 12 | `promotion_coupon_id` | bigint | [`promotion_coupon_id`](#ods-group-buy-redemption-records) | 直接 | 促销券 ID → dim_groupbuy_package |
| 13 | `order_coupon_channel` | integer | [`order_coupon_channel`](#ods-group-buy-redemption-records) | 直接 | 券渠道。**枚举值**: 1=美团, 2=抖音 |
| 14 | `ledger_unit_price` | numeric | [`ledger_unit_price`](#ods-group-buy-redemption-records) | 直接 | 单价(元)。**样本值**: 29.90, 12.12, 11.11, 39.90 等 |
| 15 | `ledger_count` | integer | [`ledger_count`](#ods-group-buy-redemption-records) | 直接 | 计费数量(秒)。**样本值**: 3600=1h, 7200=2h 等 |
| 16 | `ledger_amount` | numeric | [`ledger_amount`](#ods-group-buy-redemption-records) | 直接 | 账本金额(元)。**样本值**: 48.00, 96.00, 68.00 等 |
| 17 | `coupon_money` | numeric | [`coupon_money`](#ods-group-buy-redemption-records) | 直接 | 券面额(元)。**样本值**: 48.00, 116.00, 96.00, 68.00 等 |
| 18 | `promotion_seconds` | integer | [`promotion_seconds`](#ods-group-buy-redemption-records) | 直接 | 促销时长(秒)。**样本值**: 3600=1h, 7200=2h, 14400=4h 等 |
| 19 | `coupon_code` | character varying | [`coupon_code`](#ods-group-buy-redemption-records) | 直接 | 券码 |
| 20 | `is_single_order` | integer | [`is_single_order`](#ods-group-buy-redemption-records) | 直接 | 是否独立订单。**枚举值**: 0=否, 1=是 |
| 21 | `is_delete` | integer | [`is_delete`](#ods-group-buy-redemption-records) | 直接 | 删除标记。**枚举值**: 0=未删除 |
| 22 | `ledger_name` | character varying | [`ledger_name`](#ods-group-buy-redemption-records) | 直接 | 套餐名称。**样本值**: "全天A区中八一小时", "中八A区新人特惠一小时" 等 |
| 23 | `create_time` | timestamp with time zone | [`create_time`](#ods-group-buy-redemption-records) | 直接 | 创建时间 |
| 24 | `member_discount_money` | numeric | [`member_discount_money`](#ods-group-buy-redemption-records) | 直接 | 会员折扣金额 |
| 25 | `coupon_sale_id` | bigint | [`coupon_sale_id`](#ods-group-buy-redemption-records) | 直接 | 优惠券销售 ID |
<a id="dwd-dwd-groupbuy-redemption-ex"></a>
#### DWD 表结构 — dwd.dwd_groupbuy_redemption_ex [🔗 ODS](#ods-group-buy-redemption-records)
共 28 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `redemption_id` | bigint | [`id`](#ods-group-buy-redemption-records) | 直接 | 字段重命名 |
| 2 | `site_name` | character varying | [`sitename`](#ods-group-buy-redemption-records) | 直接 | 字段重命名 |
| 3 | `table_name` | character varying | [`tablename`](#ods-group-buy-redemption-records) | 直接 | 字段重命名 |
| 4 | `table_area_name` | character varying | [`tableareaname`](#ods-group-buy-redemption-records) | 直接 | 字段重命名 |
| 5 | `order_pay_id` | bigint | [`order_pay_id`](#ods-group-buy-redemption-records) | 直接 | 同名直传 |
| 6 | `goods_option_price` | numeric | [`goodsoptionprice`](#ods-group-buy-redemption-records) | 直接 | 字段重命名 |
| 7 | `goods_promotion_money` | numeric | [`goods_promotion_money`](#ods-group-buy-redemption-records) | 直接 | 同名直传 |
| 8 | `table_service_promotion_money` | numeric | [`table_service_promotion_money`](#ods-group-buy-redemption-records) | 直接 | 同名直传 |
| 9 | `assistant_promotion_money` | numeric | [`assistant_promotion_money`](#ods-group-buy-redemption-records) | 直接 | 同名直传 |
| 10 | `assistant_service_promotion_money` | numeric | [`assistant_service_promotion_money`](#ods-group-buy-redemption-records) | 直接 | 同名直传 |
| 11 | `reward_promotion_money` | numeric | [`reward_promotion_money`](#ods-group-buy-redemption-records) | 直接 | 同名直传 |
| 12 | `recharge_promotion_money` | numeric | [`recharge_promotion_money`](#ods-group-buy-redemption-records) | 直接 | 同名直传 |
| 13 | `offer_type` | integer | [`offer_type`](#ods-group-buy-redemption-records) | 直接 | 同名直传 |
| 14 | `ledger_status` | integer | [`ledger_status`](#ods-group-buy-redemption-records) | 直接 | 同名直传 |
| 15 | `operator_id` | bigint | [`operator_id`](#ods-group-buy-redemption-records) | 直接 | 同名直传 |
| 16 | `operator_name` | character varying | [`operator_name`](#ods-group-buy-redemption-records) | 直接 | 同名直传 |
| 17 | `salesman_user_id` | bigint | [`salesman_user_id`](#ods-group-buy-redemption-records) | 直接 | 同名直传 |
| 18 | `salesman_name` | character varying | [`salesman_name`](#ods-group-buy-redemption-records) | 直接 | 名称字段,用于展示与辅助识别 |
| 19 | `salesman_role_id` | bigint | [`salesman_role_id`](#ods-group-buy-redemption-records) | 直接 | 同名直传 |
| 20 | `salesman_org_id` | bigint | [`sales_man_org_id`](#ods-group-buy-redemption-records) | 直接 | 字段重命名 |
| 21 | `ledger_group_name` | character varying | [`ledger_group_name`](#ods-group-buy-redemption-records) | 直接 | 名称字段,用于展示与辅助识别 |
| 22 | `table_share_money` | numeric | [`table_share_money`](#ods-group-buy-redemption-records) | 直接 | |
| 23 | `table_service_share_money` | numeric | [`table_service_share_money`](#ods-group-buy-redemption-records) | 直接 | |
| 24 | `goods_share_money` | numeric | [`goods_share_money`](#ods-group-buy-redemption-records) | 直接 | |
| 25 | `good_service_share_money` | numeric | [`good_service_share_money`](#ods-group-buy-redemption-records) | 直接 | |
| 26 | `assistant_share_money` | numeric | [`assistant_share_money`](#ods-group-buy-redemption-records) | 直接 | |
| 27 | `assistant_service_share_money` | numeric | [`assistant_service_share_money`](#ods-group-buy-redemption-records) | 直接 | |
| 28 | `recharge_share_money` | numeric | [`recharge_share_money`](#ods-group-buy-redemption-records) | 直接 | |
### 3.16 goods_stock_summary库存汇总
- 任务代码:`ODS_INVENTORY_STOCK`
- 采样记录数173
- API JSON 字段数14
- ODS 列数19
- DWD 目标表:—(仅 ODS 落地)
<a id="api-goods-stock-summary"></a>
#### API 源字段 — goods_stock_summary [🔗 ODS](#ods-goods-stock-summary)
已映射 14/14覆盖率 100.0%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `siteGoodsId` | integer | [`sitegoodsid`](#ods-goods-stock-summary) | (待补充) | 大小写匹配;枚举值: `3089190204491141`, `3073782716778501`, `3069455725923269`, `3053572251340677`, `3047846073076101`, `3028609051954117`, `3004536125639493`, `2994236295696133` |
| 2 | `goodsName` | string | [`goodsname`](#ods-goods-stock-summary) | (待补充) | 大小写匹配;枚举值: `小合味道`, `无穷单个鸡爪`, `大瓶蓝妹`, `金银花凉茶`, `乌龙茶香槟榔`, `酱香爆珠槟榔`, `哇米诺豆奶`, `黄鹤楼` |
| 3 | `goodsUnit` | string | [`goodsunit`](#ods-goods-stock-summary) | (待补充) | 大小写匹配;枚举值: `桶`, `包`, `瓶`, `罐`, `杯`, `份`, `张`, `个` |
| 4 | `goodsCategoryId` | integer | [`goodscategoryid`](#ods-goods-stock-summary) | (待补充) | 大小写匹配;枚举值: `2791941988405125`, `2790683528350539`, `2790683528350533`, `2792062778003333`, `2793217944864581`, `2790683528350545`, `2790683528350535`, `2793220945250117` |
| 5 | `goodsCategorySecondId` | integer | [`goodscategorysecondid`](#ods-goods-stock-summary) | (待补充) | 大小写匹配;枚举值: `2793236829620037`, `2791948300259205`, `2790683528350541`, `2790683528350540`, `2790683528350534`, `2792063209623429`, `2793218343257925`, `2792050275864453` |
| 6 | `rangeStartStock` | integer | [`rangestartstock`](#ods-goods-stock-summary) | (待补充) | 大小写匹配;枚举值: `21`, `33`, `28`, `12`, `0`, `3`, `5`, `22` |
| 7 | `rangeEndStock` | integer | [`rangeendstock`](#ods-goods-stock-summary) | (待补充) | 大小写匹配;枚举值: `21`, `33`, `28`, `12`, `0`, `3`, `5`, `22` |
| 8 | `rangeIn` | integer | [`rangein`](#ods-goods-stock-summary) | (待补充) | 大小写匹配;示例: `0` |
| 9 | `rangeOut` | integer | [`rangeout`](#ods-goods-stock-summary) | (待补充) | 大小写匹配;示例: `0` |
| 10 | `rangeInventory` | integer | [`rangeinventory`](#ods-goods-stock-summary) | (待补充) | 大小写匹配;示例: `0` |
| 11 | `rangeSale` | integer | [`rangesale`](#ods-goods-stock-summary) | (待补充) | 大小写匹配;示例: `0` |
| 12 | `rangeSaleMoney` | number | [`rangesalemoney`](#ods-goods-stock-summary) | (待补充) | 大小写匹配;示例: `0.0` |
| 13 | `currentStock` | integer | [`currentstock`](#ods-goods-stock-summary) | (待补充) | 大小写匹配;枚举值: `21`, `33`, `28`, `12`, `0`, `3`, `5`, `22` |
| 14 | `categoryName` | string | [`categoryname`](#ods-goods-stock-summary) | (待补充) | 大小写匹配;枚举值: `零食`, `酒水`, `槟榔`, `香烟`, `其他`, `果盘`, `器材`, `小吃` |
<a id="ods-goods-stock-summary"></a>
#### ODS 表结构 — ods.goods_stock_summary [🔗 API](#api-goods-stock-summary)
共 19 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `sitegoodsid` | bigint | [`siteGoodsId`](#api-goods-stock-summary) | — | (待补充) |
| 2 | `goodsname` | text | [`goodsName`](#api-goods-stock-summary) | — | (待补充) |
| 3 | `goodsunit` | text | [`goodsUnit`](#api-goods-stock-summary) | — | (待补充) |
| 4 | `goodscategoryid` | bigint | [`goodsCategoryId`](#api-goods-stock-summary) | — | (待补充) |
| 5 | `goodscategorysecondid` | bigint | [`goodsCategorySecondId`](#api-goods-stock-summary) | — | (待补充) |
| 6 | `categoryname` | text | [`categoryName`](#api-goods-stock-summary) | — | (待补充) |
| 7 | `rangestartstock` | numeric | [`rangeStartStock`](#api-goods-stock-summary) | — | (待补充) |
| 8 | `rangeendstock` | numeric | [`rangeEndStock`](#api-goods-stock-summary) | — | (待补充) |
| 9 | `rangein` | numeric | [`rangeIn`](#api-goods-stock-summary) | — | (待补充) |
| 10 | `rangeout` | numeric | [`rangeOut`](#api-goods-stock-summary) | — | (待补充) |
| 11 | `rangesale` | numeric | [`rangeSale`](#api-goods-stock-summary) | — | (待补充) |
| 12 | `rangesalemoney` | numeric | [`rangeSaleMoney`](#api-goods-stock-summary) | — | (待补充) |
| 13 | `rangeinventory` | numeric | [`rangeInventory`](#api-goods-stock-summary) | — | (待补充) |
| 14 | `currentstock` | numeric | [`currentStock`](#api-goods-stock-summary) | — | (待补充) |
| 15 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 16 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 17 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 18 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
| 19 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
### 3.17 goods_stock_movements库存变化记录
- 任务代码:`ODS_INVENTORY_CHANGE`
- 采样记录数200
- API JSON 字段数19
- ODS 列数24
- DWD 目标表:—(仅 ODS 落地)
<a id="api-goods-stock-movements"></a>
#### API 源字段 — goods_stock_movements [🔗 ODS](#ods-goods-stock-movements)
已映射 19/19覆盖率 100.0%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `siteGoodsStockId` | integer | [`sitegoodsstockid`](#ods-goods-stock-movements) | (待补充) | 大小写匹配;枚举值: `3093864105101509`, `3093838482901317`, `3093793750665542`, `3093746072013125`, `3093710576699717`, `3093707436935493`, `3093706718922885`, `3093703198542021` |
| 2 | `siteGoodsId` | integer | [`sitegoodsid`](#ods-goods-stock-movements) | (待补充) | 大小写匹配;枚举值: `3004536125639493`, `2793026176012357`, `2793026183041093`, `2793026185154629`, `2828836772432837`, `2793025862799429`, `2793026180501573`, `2794695801409669` |
| 3 | `siteId` | integer | [`siteid`](#ods-goods-stock-movements) | (待补充) | 大小写匹配;示例: `2790685415443269` |
| 4 | `tenantId` | integer | [`tenantid`](#ods-goods-stock-movements) | (待补充) | 大小写匹配;示例: `2790683160709957` |
| 5 | `stockType` | integer | [`stocktype`](#ods-goods-stock-movements) | (待补充) | 大小写匹配;枚举值: `1`, `4` |
| 6 | `goodsName` | string | [`goodsname`](#ods-goods-stock-movements) | (待补充) | 大小写匹配;枚举值: `哇米诺豆奶`, `哇哈哈矿泉水`, `可乐`, `百威235毫升`, `打火机`, `软玉溪`, `东鹏特饮`, `普通扑克` |
| 7 | `createTime` | string | [`createtime`](#ods-goods-stock-movements) | (待补充) | 大小写匹配;枚举值: `2026-02-14 00:21:21`, `2026-02-13 23:55:17`, `2026-02-13 23:09:47`, `2026-02-13 22:21:17`, `2026-02-13 21:45:10`, `2026-02-13 21:41:59`, `2026-02-13 21:41:15`, `2026-02-13 21:37:40` |
| 8 | `startNum` | integer | [`startnum`](#ods-goods-stock-movements) | (待补充) | 大小写匹配;枚举值: `4`, `9`, `68`, `429`, `194`, `5`, `69`, `8` |
| 9 | `endNum` | integer | [`endnum`](#ods-goods-stock-movements) | (待补充) | 大小写匹配;枚举值: `3`, `8`, `66`, `423`, `193`, `4`, `68`, `7` |
| 10 | `changeNum` | integer | [`changenum`](#ods-goods-stock-movements) | (待补充) | 大小写匹配;枚举值: `-1`, `-2`, `-6`, `2`, `1`, `-12`, `-4`, `3` |
| 11 | `unit` | string | [`unit`](#ods-goods-stock-movements) | 库存计量单位 | 枚举值: `瓶`, `支`, `包`, `盒`, `个`, `桶`, `根`, `份` |
| 12 | `price` | number | [`price`](#ods-goods-stock-movements) | 商品单价(单位金额) | 枚举值: `10.0`, `5.0`, `15.0`, `2.0`, `28.0`, `7.0`, `125.0`, `8.0` |
| 13 | `operatorName` | string | [`operatorname`](#ods-goods-stock-movements) | (待补充) | 大小写匹配;示例: `收银员:郑丽珊` |
| 14 | `changeNumA` | integer | [`changenuma`](#ods-goods-stock-movements) | (待补充) | 大小写匹配;示例: `0` |
| 15 | `startNumA` | integer | [`startnuma`](#ods-goods-stock-movements) | (待补充) | 大小写匹配;示例: `0` |
| 16 | `endNumA` | integer | [`endnuma`](#ods-goods-stock-movements) | (待补充) | 大小写匹配;示例: `0` |
| 17 | `remark` | string | [`remark`](#ods-goods-stock-movements) | 备注信息,用于手工记录本次变更的特殊原因说明(例如“盘点差异调整”“报损”) | |
| 18 | `goodsCategoryId` | integer | [`goodscategoryid`](#ods-goods-stock-movements) | (待补充) | 大小写匹配;枚举值: `2790683528350539`, `2793217944864581`, `2792062778003333`, `2791941988405125` |
| 19 | `goodsSecondCategoryId` | integer | [`goodssecondcategoryid`](#ods-goods-stock-movements) | (待补充) | 大小写匹配;枚举值: `2790683528350540`, `2790683528350541`, `2793218343257925`, `2792063209623429`, `2793236829620037`, `2791948300259205` |
<a id="ods-goods-stock-movements"></a>
#### ODS 表结构 — ods.goods_stock_movements [🔗 API](#api-goods-stock-movements)
共 24 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `sitegoodsstockid` | bigint | [`siteGoodsStockId`](#api-goods-stock-movements) | — | (待补充) |
| 2 | `tenantid` | bigint | [`tenantId`](#api-goods-stock-movements) | — | (待补充) |
| 3 | `siteid` | bigint | [`siteId`](#api-goods-stock-movements) | — | (待补充) |
| 4 | `sitegoodsid` | bigint | [`siteGoodsId`](#api-goods-stock-movements) | — | (待补充) |
| 5 | `goodsname` | text | [`goodsName`](#api-goods-stock-movements) | — | (待补充) |
| 6 | `goodscategoryid` | bigint | [`goodsCategoryId`](#api-goods-stock-movements) | — | (待补充) |
| 7 | `goodssecondcategoryid` | bigint | [`goodsSecondCategoryId`](#api-goods-stock-movements) | — | (待补充) |
| 8 | `unit` | text | [`unit`](#api-goods-stock-movements) | — | 库存计量单位 |
| 9 | `price` | numeric | [`price`](#api-goods-stock-movements) | — | 商品单价(单位金额) |
| 10 | `stocktype` | integer | [`stockType`](#api-goods-stock-movements) | — | (待补充) |
| 11 | `changenum` | numeric | [`changeNum`](#api-goods-stock-movements) | — | (待补充) |
| 12 | `startnum` | numeric | [`startNum`](#api-goods-stock-movements) | — | (待补充) |
| 13 | `endnum` | numeric | [`endNum`](#api-goods-stock-movements) | — | (待补充) |
| 14 | `changenuma` | numeric | [`changeNumA`](#api-goods-stock-movements) | — | (待补充) |
| 15 | `startnuma` | numeric | [`startNumA`](#api-goods-stock-movements) | — | (待补充) |
| 16 | `endnuma` | numeric | [`endNumA`](#api-goods-stock-movements) | — | (待补充) |
| 17 | `remark` | text | [`remark`](#api-goods-stock-movements) | — | 备注信息,用于手工记录本次变更的特殊原因说明(例如“盘点差异调整”“报损”) |
| 18 | `operatorname` | text | [`operatorName`](#api-goods-stock-movements) | — | (待补充) |
| 19 | `createtime` | timestamp without time zone | [`createTime`](#api-goods-stock-movements) | — | (待补充) |
| 20 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 21 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 22 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 23 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
| 24 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
### 3.18 site_tables_master台桌维表
- 任务代码:`ODS_TABLES`
- 采样记录数74
- API JSON 字段数26
- ODS 列数31
- DWD 目标表dim_table, dim_table_ex
<a id="api-site-tables-master"></a>
#### API 源字段 — site_tables_master [🔗 ODS](#ods-site-tables-master)
已映射 26/26覆盖率 100.0%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `id` | integer | [`id`](#ods-site-tables-master) | 台桌主键 ID | 枚举值: `2791964216463493`, `2792521437958213`, `2793001695301765`, `2793001904918661`, `2793002509209733`, `2793002673295493`, `2793002808987781`, `2793002896494725` |
| 2 | `order_id` | integer | [`order_id`](#ods-site-tables-master) | 订单ID | 枚举值: `0`, `2994377264058629` |
| 3 | `audit_status` | integer | [`audit_status`](#ods-site-tables-master) | 当前值:全部为 2 | 示例: `2` |
| 4 | `charge_free` | integer | [`charge_free`](#ods-site-tables-master) | 当前值:全部为 0 | 示例: `0` |
| 5 | `self_table` | integer | [`self_table`](#ods-site-tables-master) | 当前值:全部为 1 | 示例: `1` |
| 6 | `create_time` | string | [`create_time`](#ods-site-tables-master) | 台桌配置的创建时间或最近一次创建/复制时间 | 枚举值: `2025-07-15 17:52:54`, `2025-07-16 03:19:44`, `2025-07-16 11:28:17`, `2025-07-16 11:28:30`, `2025-07-16 11:29:07`, `2025-07-16 11:29:17`, `2025-07-16 11:29:25`, `2025-07-16 11:29:30` |
| 7 | `is_rest_area` | integer | [`is_rest_area`](#ods-site-tables-master) | 当前值:全部为 0 | 示例: `0` |
| 8 | `light_status` | integer | [`light_status`](#ods-site-tables-master) | 来自 JSON 导出的原始字段,用于保留业务取值 | 枚举值: `2`, `1` |
| 9 | `show_status` | integer | [`show_status`](#ods-site-tables-master) | 来自 JSON 导出的原始字段,用于保留业务取值 | 枚举值: `1`, `2` |
| 10 | `site_id` | integer | [`site_id`](#ods-site-tables-master) | 门店 ID | 示例: `2790685415443269` |
| 11 | `site_table_area_id` | integer | [`site_table_area_id`](#ods-site-tables-master) | 门店维度的“台桌区域 ID” | 枚举值: `2791963794329671`, `2791963807682693`, `2791963816579205`, `2791963825803397`, `2791963836207173`, `2791963848527941`, `2791963864273029`, `2791963887030341` |
| 12 | `table_cloth_use_time` | integer | [`table_cloth_use_time`](#ods-site-tables-master) | 时间字段,用于记录业务时间点/发生时间 | 枚举值: `3847788`, `3997128`, `4828391`, `4752591`, `4550047`, `1776155`, `4028812`, `3444224` |
| 13 | `table_cloth_use_Cycle` | integer | [`table_cloth_use_cycle`](#ods-site-tables-master) | (待补充) | 大小写匹配;示例: `0` |
| 14 | `virtual_table` | integer | [`virtual_table`](#ods-site-tables-master) | 当前值:全部为 0 | 示例: `0` |
| 15 | `table_name` | string | [`table_name`](#ods-site-tables-master) | 台号/台名称,用于前台操作界面展示,也出现在小票和各种流水中的 ledger_name 或 tableName 字段 | 枚举值: `A1`, `A2`, `A3`, `A4`, `A5`, `A6`, `A7`, `A8` |
| 16 | `table_price` | number | [`table_price`](#ods-site-tables-master) | 设计上应为“台的基础单价”字段(例如按小时或按局单价) | 示例: `0.0` |
| 17 | `table_status` | integer | [`table_status`](#ods-site-tables-master) | 台当前运行状态,真实反映某一时刻台的占用/暂停情况 | 枚举值: `1`, `3` |
| 18 | `areaName` | string | [`areaname`](#ods-site-tables-master) | (待补充) | 大小写匹配;枚举值: `A区`, `B区`, `C区`, `VIP包厢`, `斯诺克区`, `666`, `TV台`, `麻将房` |
| 19 | `siteName` | string | [`sitename`](#ods-site-tables-master) | (待补充) | 大小写匹配;示例: `朗朗桌球` |
| 20 | `tableStatusName` | string | [`tablestatusname`](#ods-site-tables-master) | (待补充) | 大小写匹配;枚举值: `空闲中`, `暂停中` |
| 21 | `appletQrCodeUrl` | string | [`appletqrcodeurl`](#ods-site-tables-master) | (待补充) | 大小写匹配;示例: `https://pc-we.ficoo.vip/roo...` |
| 22 | `only_allow_groupon` | integer | [`only_allow_groupon`](#ods-site-tables-master) | 小程序二维码 URL | 示例: `2` |
| 23 | `delay_lights_time` | integer | [`delay_lights_time`](#ods-site-tables-master) | 台灯熄灭延迟时间(单位多半是秒或分钟),用于结账后延时关灯 | 示例: `0` |
| 24 | `order_delay_time` | integer | [`order_delay_time`](#ods-site-tables-master) | 订单层面允许的“自动延时时长”(例如到点后自动延长多少时间继续计费) | 示例: `0` |
| 25 | `temporary_light_second` | integer | [`temporary_light_second`](#ods-site-tables-master) | 临时点灯时长(秒),例如手动临时开灯一段时间 | 示例: `0` |
| 26 | `is_online_reservation` | integer | [`is_online_reservation`](#ods-site-tables-master) | 布尔/开关字段,用于表示权限、可用性或状态开关 | 枚举值: `2`, `1` |
<a id="ods-site-tables-master"></a>
#### ODS 表结构 — ods.site_tables_master [🔗 API](#api-site-tables-master)
共 31 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `id` | bigint | [`id`](#api-site-tables-master) | [`dim_table.table_id`](#dwd-dim-table), [`dim_table_ex.table_id`](#dwd-dim-table-ex) | 台桌主键 ID |
| 2 | `site_id` | bigint | [`site_id`](#api-site-tables-master) | [`dim_table.site_id`](#dwd-dim-table) | 门店 ID |
| 3 | `sitename` | text | [`siteName`](#api-site-tables-master) | — | (待补充) |
| 4 | `appletQrCodeUrl` | text | — | — | (待补充) |
| 5 | `areaname` | text | [`areaName`](#api-site-tables-master) | [`dim_table.site_table_area_name`](#dwd-dim-table) | (待补充) |
| 6 | `audit_status` | integer | [`audit_status`](#api-site-tables-master) | — | 当前值:全部为 2 |
| 7 | `charge_free` | integer | [`charge_free`](#api-site-tables-master) | — | 当前值:全部为 0 |
| 8 | `create_time` | timestamp without time zone | [`create_time`](#api-site-tables-master) | — | 台桌配置的创建时间或最近一次创建/复制时间 |
| 9 | `delay_lights_time` | integer | [`delay_lights_time`](#api-site-tables-master) | — | 台灯熄灭延迟时间(单位多半是秒或分钟),用于结账后延时关灯 |
| 10 | `is_online_reservation` | integer | [`is_online_reservation`](#api-site-tables-master) | [`dim_table_ex.is_online_reservation`](#dwd-dim-table-ex) | 布尔/开关字段,用于表示权限、可用性或状态开关 |
| 11 | `is_rest_area` | integer | [`is_rest_area`](#api-site-tables-master) | — | 当前值:全部为 0 |
| 12 | `light_status` | integer | [`light_status`](#api-site-tables-master) | — | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 13 | `only_allow_groupon` | integer | [`only_allow_groupon`](#api-site-tables-master) | — | 小程序二维码 URL |
| 14 | `order_delay_time` | integer | [`order_delay_time`](#api-site-tables-master) | — | 订单层面允许的“自动延时时长”(例如到点后自动延长多少时间继续计费) |
| 15 | `self_table` | integer | [`self_table`](#api-site-tables-master) | — | 当前值:全部为 1 |
| 16 | `show_status` | integer | [`show_status`](#api-site-tables-master) | [`dim_table_ex.show_status`](#dwd-dim-table-ex) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 17 | `site_table_area_id` | bigint | [`site_table_area_id`](#api-site-tables-master) | [`dim_table.site_table_area_id`](#dwd-dim-table), [`dim_table.tenant_table_area_id`](#dwd-dim-table) | 门店维度的“台桌区域 ID” |
| 18 | `tablestatusname` | text | [`tableStatusName`](#api-site-tables-master) | — | (待补充) |
| 19 | `table_cloth_use_cycle` | integer | [`table_cloth_use_Cycle`](#api-site-tables-master) | [`dim_table_ex.table_cloth_use_cycle`](#dwd-dim-table-ex) | (待补充) |
| 20 | `table_cloth_use_time` | timestamp without time zone | [`table_cloth_use_time`](#api-site-tables-master) | [`dim_table_ex.table_cloth_use_time`](#dwd-dim-table-ex) | 时间字段,用于记录业务时间点/发生时间 |
| 21 | `table_name` | text | [`table_name`](#api-site-tables-master) | [`dim_table.table_name`](#dwd-dim-table) | 台号/台名称,用于前台操作界面展示,也出现在小票和各种流水中的 ledger_name 或 tableName 字段 |
| 22 | `table_price` | numeric | [`table_price`](#api-site-tables-master) | [`dim_table.table_price`](#dwd-dim-table) | 设计上应为“台的基础单价”字段(例如按小时或按局单价) |
| 23 | `table_status` | integer | [`table_status`](#api-site-tables-master) | [`dim_table_ex.table_status`](#dwd-dim-table-ex) | 台当前运行状态,真实反映某一时刻台的占用/暂停情况 |
| 24 | `temporary_light_second` | integer | [`temporary_light_second`](#api-site-tables-master) | — | 临时点灯时长(秒),例如手动临时开灯一段时间 |
| 25 | `virtual_table` | integer | [`virtual_table`](#api-site-tables-master) | — | 当前值:全部为 0 |
| 26 | `order_id` | bigint | [`order_id`](#api-site-tables-master) | [`dim_table.order_id`](#dwd-dim-table) | 订单ID |
| 27 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 28 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 29 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 30 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
| 31 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
<a id="dwd-dim-table"></a>
#### DWD 表结构 — dwd.dim_table [🔗 ODS](#ods-site-tables-master)
共 12 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `table_id` | bigint | [`id`](#ods-site-tables-master) | 直接 | 台桌 ID |
| 2 | `site_id` | bigint | [`site_id`](#ods-site-tables-master) | 直接 | 门店 ID → dim_site |
| 3 | `table_name` | text | [`table_name`](#ods-site-tables-master) | 直接 | 台桌名称。**样本值**: "A1", "A2", "B1", "B2", "S1", "C1", "VIP1... |
| 4 | `site_table_area_id` | bigint | [`site_table_area_id`](#ods-site-tables-master) | 直接 | 台区 ID |
| 5 | `site_table_area_name` | text | [`areaname`](#ods-site-tables-master) | 直接 | 台区名称。**样本值**: "A区", "B区", "补时长", "C区", "麻将房", "K包", "VIP包... |
| 6 | `tenant_table_area_id` | bigint | [`site_table_area_id`](#ods-site-tables-master) | 直接 | 租户级台区 ID |
| 7 | `table_price` | numeric | [`table_price`](#ods-site-tables-master) | 直接 | 台桌单价(当前数据全为 0.00 |
| 8 | `order_id` | bigint | [`order_id`](#ods-site-tables-master) | 直接 | 订单 ID |
| 9 | `scd2_start_time` | timestamp with time zone | — | SCD2 | SCD2 版本生效时间 |
| 10 | `scd2_end_time` | timestamp with time zone | — | SCD2 | SCD2 版本失效时间 |
| 11 | `scd2_is_current` | integer | — | SCD2 | 当前版本标记 |
| 12 | `scd2_version` | integer | — | SCD2 | 版本号 |
<a id="dwd-dim-table-ex"></a>
#### DWD 表结构 — dwd.dim_table_ex [🔗 ODS](#ods-site-tables-master)
共 10 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `table_id` | bigint | [`id`](#ods-site-tables-master) | 直接 | 字段重命名 |
| 2 | `show_status` | integer | [`show_status`](#ods-site-tables-master) | 直接 | 同名直传 |
| 3 | `is_online_reservation` | integer | [`is_online_reservation`](#ods-site-tables-master) | 直接 | 同名直传 |
| 4 | `table_cloth_use_time` | integer | [`table_cloth_use_time`](#ods-site-tables-master) | 直接 | 时间/日期字段,用于记录业务时间与统计口径对齐 |
| 5 | `table_cloth_use_cycle` | integer | [`table_cloth_use_cycle`](#ods-site-tables-master) | 直接 | 同名直传 |
| 6 | `table_status` | integer | [`table_status`](#ods-site-tables-master) | 直接 | 同名直传 |
| 7 | `scd2_start_time` | timestamp with time zone | — | SCD2 | SCD2 元数据 |
| 8 | `scd2_end_time` | timestamp with time zone | — | SCD2 | SCD2 元数据 |
| 9 | `scd2_is_current` | integer | — | SCD2 | SCD2 元数据 |
| 10 | `scd2_version` | integer | — | SCD2 | SCD2 元数据 |
### 3.19 stock_goods_category_tree库存商品分类树
- 任务代码:`ODS_GOODS_CATEGORY`
- 采样记录数9
- API JSON 字段数20
- ODS 列数16
- DWD 目标表dim_goods_category
<a id="api-stock-goods-category-tree"></a>
#### API 源字段 — stock_goods_category_tree [🔗 ODS](#ods-stock-goods-category-tree)
已映射 20/20覆盖率 100.0%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `id` | integer | [`id`](#ods-stock-goods-category-tree) | 分类节点主键 ID在商品分类维度中的唯一标识 | 枚举值: `2790683528350533`, `2790683528350535`, `2790683528350539`, `2790683528350545`, `2791941988405125`, `2791942087561093`, `2792062778003333`, `2793217944864581` |
| 2 | `tenant_id` | integer | [`tenant_id`](#ods-stock-goods-category-tree) | 租户 ID品牌/商户 ID | 示例: `2790683160709957` |
| 3 | `category_name` | string | [`category_name`](#ods-stock-goods-category-tree) | 分类名称(实际业务分类名称) | 枚举值: `槟榔`, `器材`, `酒水`, `果盘`, `零食`, `雪糕`, `香烟`, `其他` |
| 4 | `alias_name` | string | [`alias_name`](#ods-stock-goods-category-tree) | 名称字段,用于展示与辅助识别 | |
| 5 | `pid` | integer | [`pid`](#ods-stock-goods-category-tree) | 父级分类 ID | 示例: `0` |
| 6 | `business_name` | string | [`business_name`](#ods-stock-goods-category-tree) | 业务大类名称 | 枚举值: `槟榔`, `器材`, `酒水`, `水果`, `零食`, `雪糕`, `香烟`, `其他` |
| 7 | `tenant_goods_business_id` | integer | [`tenant_goods_business_id`](#ods-stock-goods-category-tree) | 业务大类 ID | 枚举值: `2790683528317766`, `2790683528317767`, `2790683528317768`, `2790683528317769`, `2791932037238661`, `2791931866402693`, `2790683528317765`, `2793217599407941` |
| 8 | `open_salesman` | integer | [`open_salesman`](#ods-stock-goods-category-tree) | 是否启用“营业员”或“导购提成”相关的功能开关 | 示例: `2` |
| 9 | `categoryBoxes[].id` | integer | [`id`](#ods-stock-goods-category-tree) | 分类节点主键 ID在商品分类维度中的唯一标识 | 枚举值: `2790683528350534`, `2790683528350536`, `2790683528350537`, `2790683528350538`, `2790683528350540`, `2790683528350541`, `2790683528350542`, `2790683528350543` |
| 10 | `categoryBoxes[].tenant_id` | integer | [`tenant_id`](#ods-stock-goods-category-tree) | 租户 ID品牌/商户 ID | 示例: `2790683160709957` |
| 11 | `categoryBoxes[].category_name` | string | [`category_name`](#ods-stock-goods-category-tree) | 分类名称(实际业务分类名称) | 枚举值: `槟榔`, `皮头`, `球杆`, `其他`, `饮料`, `酒水`, `茶水`, `咖啡` |
| 12 | `categoryBoxes[].alias_name` | string | [`alias_name`](#ods-stock-goods-category-tree) | 名称字段,用于展示与辅助识别 | |
| 13 | `categoryBoxes[].pid` | integer | [`pid`](#ods-stock-goods-category-tree) | 父级分类 ID | 枚举值: `2790683528350533`, `2790683528350535`, `2790683528350539`, `2790683528350545`, `2791941988405125`, `2791942087561093`, `2792062778003333`, `2793217944864581` |
| 14 | `categoryBoxes[].business_name` | string | [`business_name`](#ods-stock-goods-category-tree) | 业务大类名称 | 枚举值: `槟榔`, `器材`, `酒水`, `水果`, `零食`, `雪糕`, `香烟`, `其他` |
| 15 | `categoryBoxes[].tenant_goods_business_id` | integer | [`tenant_goods_business_id`](#ods-stock-goods-category-tree) | 业务大类 ID | 枚举值: `2790683528317766`, `2790683528317767`, `2790683528317768`, `2790683528317769`, `2791932037238661`, `2791931866402693`, `2790683528317765`, `2793217599407941` |
| 16 | `categoryBoxes[].open_salesman` | integer | [`open_salesman`](#ods-stock-goods-category-tree) | 是否启用“营业员”或“导购提成”相关的功能开关 | 示例: `2` |
| 17 | `categoryBoxes[].sort` | integer | [`sort`](#ods-stock-goods-category-tree) | 分类的排序序号,用于前端展示顺序的控制 | 枚举值: `0`, `1` |
| 18 | `categoryBoxes[].is_warehousing` | integer | [`is_warehousing`](#ods-stock-goods-category-tree) | 本文件可视为“所有参与库存管理的商品分类清单”,因此均为 1 | 示例: `1` |
| 19 | `sort` | integer | [`sort`](#ods-stock-goods-category-tree) | 分类的排序序号,用于前端展示顺序的控制 | 枚举值: `1`, `0` |
| 20 | `is_warehousing` | integer | [`is_warehousing`](#ods-stock-goods-category-tree) | 本文件可视为“所有参与库存管理的商品分类清单”,因此均为 1 | 示例: `1` |
<a id="ods-stock-goods-category-tree"></a>
#### ODS 表结构 — ods.stock_goods_category_tree [🔗 API](#api-stock-goods-category-tree)
共 16 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `id` | bigint | [`id`](#api-stock-goods-category-tree) | [`dim_goods_category.category_id`](#dwd-dim-goods-category) | 分类节点主键 ID在商品分类维度中的唯一标识 |
| 2 | `tenant_id` | bigint | [`tenant_id`](#api-stock-goods-category-tree) | [`dim_goods_category.tenant_id`](#dwd-dim-goods-category) | 租户 ID品牌/商户 ID |
| 3 | `category_name` | text | [`category_name`](#api-stock-goods-category-tree) | [`dim_goods_category.category_name`](#dwd-dim-goods-category) | 分类名称(实际业务分类名称) |
| 4 | `alias_name` | text | [`alias_name`](#api-stock-goods-category-tree) | [`dim_goods_category.alias_name`](#dwd-dim-goods-category) | 名称字段,用于展示与辅助识别 |
| 5 | `pid` | bigint | [`pid`](#api-stock-goods-category-tree) | [`dim_goods_category.parent_category_id`](#dwd-dim-goods-category) | 父级分类 ID |
| 6 | `business_name` | text | [`business_name`](#api-stock-goods-category-tree) | [`dim_goods_category.business_name`](#dwd-dim-goods-category) | 业务大类名称 |
| 7 | `tenant_goods_business_id` | bigint | [`tenant_goods_business_id`](#api-stock-goods-category-tree) | [`dim_goods_category.tenant_goods_business_id`](#dwd-dim-goods-category) | 业务大类 ID |
| 8 | `open_salesman` | integer | [`open_salesman`](#api-stock-goods-category-tree) | [`dim_goods_category.open_salesman`](#dwd-dim-goods-category) | 是否启用“营业员”或“导购提成”相关的功能开关 |
| 9 | `categoryboxes` | jsonb | — | — | (待补充) |
| 10 | `sort` | integer | [`categoryBoxes[].sort`](#api-stock-goods-category-tree) | [`dim_goods_category.sort_order`](#dwd-dim-goods-category) | 分类的排序序号,用于前端展示顺序的控制 |
| 11 | `is_warehousing` | integer | [`categoryBoxes[].is_warehousing`](#api-stock-goods-category-tree) | [`dim_goods_category.is_warehousing`](#dwd-dim-goods-category) | 本文件可视为“所有参与库存管理的商品分类清单”,因此均为 1 |
| 12 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 13 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 14 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 15 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
| 16 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
<a id="dwd-dim-goods-category"></a>
#### DWD 表结构 — dwd.dim_goods_category [🔗 ODS](#ods-stock-goods-category-tree)
共 16 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `category_id` | bigint | [`id`](#ods-stock-goods-category-tree) | 直接 | 分类唯一标识 |
| 2 | `tenant_id` | bigint | [`tenant_id`](#ods-stock-goods-category-tree) | 直接 | 租户 ID当前值: 2790683160709957 |
| 3 | `category_name` | character varying | [`category_name`](#ods-stock-goods-category-tree) | 直接 | 分类名称。**样本值**: "槟榔", "皮头" 等 |
| 4 | `alias_name` | character varying | [`alias_name`](#ods-stock-goods-category-tree) | 直接 | 分类别名(当前数据大部分为空) |
| 5 | `parent_category_id` | bigint | [`pid`](#ods-stock-goods-category-tree) | 直接 | 父级分类 ID0=一级分类)→ 自关联 |
| 6 | `business_name` | character varying | [`business_name`](#ods-stock-goods-category-tree) | 直接 | 业务大类名称。**样本值**: "酒水", "器材" 等 |
| 7 | `tenant_goods_business_id` | bigint | [`tenant_goods_business_id`](#ods-stock-goods-category-tree) | 直接 | 业务大类 ID |
| 8 | `category_level` | integer | [`CASE WHEN pid = 0 THEN 1 ELSE 2 END`](#ods-stock-goods-category-tree) | 直接 | 分类层级。**枚举值**: 1=一级大类, 2=二级子类 |
| 9 | `is_leaf` | integer | [`CASE WHEN categoryboxes IS NULL OR jsonb_array_length(categoryboxes)=0 THEN 1 ELSE 0 END`](#ods-stock-goods-category-tree) | 直接 | 是否叶子节点。**枚举值**: 0=非叶子, 1=叶子 |
| 10 | `open_salesman` | integer | [`open_salesman`](#ods-stock-goods-category-tree) | 直接 | 营业员开关。 |
| 11 | `sort_order` | integer | [`sort`](#ods-stock-goods-category-tree) | 直接 | 排序序号 |
| 12 | `is_warehousing` | integer | [`is_warehousing`](#ods-stock-goods-category-tree) | 直接 | 是否库存管理。**枚举值**: 1=参与库存管理 |
| 13 | `scd2_start_time` | timestamp with time zone | — | SCD2 | SCD2 版本生效时间 |
| 14 | `scd2_end_time` | timestamp with time zone | — | SCD2 | SCD2 版本失效时间 |
| 15 | `scd2_is_current` | integer | — | SCD2 | 当前版本标记 |
| 16 | `scd2_version` | integer | — | SCD2 | 版本号 |
### 3.20 store_goods_master门店商品档案
- 任务代码:`ODS_STORE_GOODS`
- 采样记录数173
- API JSON 字段数53
- ODS 列数52
- DWD 目标表dim_store_goods, dim_store_goods_ex
<a id="api-store-goods-master"></a>
#### API 源字段 — store_goods_master [🔗 ODS](#ods-store-goods-master)
已映射 48/53覆盖率 90.6%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `siteName` | string | [`sitename`](#ods-store-goods-master) | (待补充) | 大小写匹配;示例: `朗朗桌球` |
| 2 | `oneCategoryName` | string | [`onecategoryname`](#ods-store-goods-master) | (待补充) | 大小写匹配;枚举值: `零食`, `酒水`, `小吃`, `其他`, `香烟`, `果盘`, `雪糕`, `器材` |
| 3 | `twoCategoryName` | string | [`twocategoryname`](#ods-store-goods-master) | (待补充) | 大小写匹配;枚举值: `面`, `洋酒`, `小吃`, `其他2`, `香烟`, `果盘`, `雪糕`, `零食` |
| 4 | `goodsStockWarningInfo.tenant_goods_id` | integer | [`tenant_goods_id`](#ods-store-goods-master) | 租户/品牌维度的商品 ID相当于“全局商品 ID” | 示例: `0` |
| 5 | `goodsStockWarningInfo.site_goods_id` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 6 | `goodsStockWarningInfo.sales_day` | number | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0.0` |
| 7 | `goodsStockWarningInfo.warning_day_max` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 8 | `goodsStockWarningInfo.warning_day_min` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 9 | `id` | integer | [`id`](#ods-store-goods-master) | 门店商品 ID门店维度的商品主键 | 枚举值: `2793025844727877`, `2793025849102405`, `2793025851560005`, `3089190204491141`, `2794695800246405`, `2794695800443013`, `2793025845825605`, `2793025849593925` |
| 10 | `able_discount` | integer | [`able_discount`](#ods-store-goods-master) | 是否允许参与折扣 | 示例: `1` |
| 11 | `able_site_transfer` | integer | [`able_site_transfer`](#ods-store-goods-master) | 表示是否允许跨门店调拨或跨站点共享库存 | 枚举值: `2`, `0` |
| 12 | `audit_status` | integer | [`audit_status`](#ods-store-goods-master) | 观察值:全部为 2 | 示例: `2` |
| 13 | `average_monthly_sales` | number | [`average_monthly_sales`](#ods-store-goods-master) | 平均月销量(件/月),根据某个统计周期内的销售数据折算而来 | 枚举值: `1.9`, `0.61`, `0.94`, `0.1`, `0.0`, `4.45`, `8.29`, `0.06` |
| 14 | `batch_stock_quantity` | integer | [`batch_stock_quantity`](#ods-store-goods-master) | 当前“批次”的库存数量(主单位) | 枚举值: `31`, `22`, `0`, `24`, `1`, `2`, `136`, `20` |
| 15 | `commodity_code` | string | [`commodity_code`](#ods-store-goods-master) | 商品编码 | 枚举值: `10000002`, `1234541`, `1234545`, `1111111111`, `10000`, `10002`, `100001`, `1234551` |
| 16 | `cost_price` | number | [`cost_price`](#ods-store-goods-master) | 商品成本价(单件成本) | 枚举值: `0.0`, `0.0002`, `2.0`, `0.0009`, `0.4377`, `0.1308`, `2.8679`, `0.0089` |
| 17 | `cost_price_type` | integer | [`cost_price_type`](#ods-store-goods-master) | 1 代表使用“固定成本价”(手工维护的 cost_priceprovisional_total_cost 按“... | 枚举值: `1`, `2` |
| 18 | `create_time` | string | [`create_time`](#ods-store-goods-master) | 门店商品档案创建时间(商品在门店建立档案的时间点) | 枚举值: `2025-07-16 11:52:51`, `2026-02-10 17:06:49`, `2025-07-17 16:11:37`, `2025-07-16 11:53:11`, `2025-07-22 18:46:04`, `2025-07-22 21:43:02`, `2025-07-29 18:22:17`, `2025-08-10 19:01:36` |
| 19 | `custom_label_type` | integer | [`custom_label_type`](#ods-store-goods-master) | 自定义标签类型 | 示例: `2` |
| 20 | `days_available` | integer | [`days_available`](#ods-store-goods-master) | 商品“在架天数”或“可售天数”,大致等于当前时间减去首次上架时间 | 枚举值: `12`, `22`, `0`, `210`, `33`, `5`, `633`, `13942` |
| 21 | `enable_status` | integer | [`enable_status`](#ods-store-goods-master) | 控制商品档案是否参与任何业务(库存、销售等) | 示例: `1` |
| 22 | `forbid_sell_status` | integer | [`forbid_sell_status`](#ods-store-goods-master) | 观察值:全部为 1 | 示例: `1` |
| 23 | `freeze` | integer | [`freeze`](#ods-store-goods-master) | (待补充) | 示例: `0` |
| 24 | `goods_bar_code` | string | [`goods_bar_code`](#ods-store-goods-master) | 商品条形码(如 EAN-13 编码),用于扫码销售 | |
| 25 | `goods_category_id` | integer | [`goods_category_id`](#ods-store-goods-master) | 商品一级分类 ID | 枚举值: `2791941988405125`, `2790683528350539`, `2793220945250117`, `2793217944864581`, `2792062778003333`, `2790683528350545`, `2791942087561093`, `2790683528350535` |
| 26 | `goods_cover` | string | [`goods_cover`](#ods-store-goods-master) | 商品图片 URL如 OSS 对象存储地址),用于前端展示商品图片 | 枚举值: `https://oss.ficoo.vip/admin/mWT72w_1721195534466.png`, `https://oss.ficoo.vip/admin/66JknP_1753204240471.jpg`, `https://oss.ficoo.vip/admin/8M1WM7_1753204221337.jpg`, `https://oss.ficoo.vip/admin/rCBBPB_1770715245749.jpg`, `https://oss.ficoo.vip/admin/RWW8bM_1710125368666.jpg`, `https://oss.ficoo.vip/admin/kiMwJG_1753195462903.jpg`, `https://oss.ficoo.vip/admin/iC16iC_1753195476922.jpg`, `https://oss.ficoo.vip/admin/TFrrEm_1753195493834.jpg` |
| 27 | `goods_name` | string | [`goods_name`](#ods-store-goods-master) | 商品名称,例如“合味道泡面”“地道肠”“麻将房茶位费”等 | 枚举值: `红烧牛肉面`, `火鸡面`, `合味道泡面`, `小合味道`, `名仕`, `人头马`, `鱼蛋`, `地道肠` |
| 28 | `goods_second_category_id` | integer | [`goods_second_category_id`](#ods-store-goods-master) | 商品二级分类 ID | 枚举值: `2793236829620037`, `2793221553489733`, `2793221283104581`, `2793218343257925`, `2792063209623429`, `2792050275864453`, `2792035069284229`, `2791948300259205` |
| 29 | `goods_state` | integer | [`goods_state`](#ods-store-goods-master) | 来自 JSON 导出的原始字段,用于保留业务取值 | 枚举值: `1`, `2` |
| 30 | `is_delete` | integer | [`is_delete`](#ods-store-goods-master) | 逻辑删除标志 | 示例: `0` |
| 31 | `is_warehousing` | integer | [`is_warehousing`](#ods-store-goods-master) | 是否纳入库存管理 | 示例: `1` |
| 32 | `min_discount_price` | number | [`min_discount_price`](#ods-store-goods-master) | 最低允许成交价(限价) | 枚举值: `0.0`, `130.0`, `998.0`, `2.0`, `40.0`, `8.0`, `3.0`, `18.0` |
| 33 | `not_sale` | integer | [`not_sale`](#ods-store-goods-master) | (待补充) | 示例: `2` |
| 34 | `option_required` | integer | [`option_required`](#ods-store-goods-master) | 是否需要在销售时选择规格/选项 | 示例: `1` |
| 35 | `pinyin_initial` | string | [`pinyin_initial`](#ods-store-goods-master) | 商品名称的拼音首字母缩写,有时多个别名用逗号分隔 | 枚举值: `HSNRM,GSNRM`, `HJM`, `HWDPM,GWDPM`, `XHWD,XGWD`, `MS`, `RTM`, `YD`, `DDC` |
| 36 | `provisional_total_cost` | number | [`provisional_total_cost`](#ods-store-goods-master) | 暂估总成本,单位为元 | 枚举值: `0.0`, `0.1`, `8.0`, `152.0` |
| 37 | `remark` | string | [`remark`](#ods-store-goods-master) | 商品备注(可以写口味说明、供应商、注意事项等) | |
| 38 | `safe_stock` | integer | [`safe_stock`](#ods-store-goods-master) | 安全库存量(阈值),低于该值时系统可以提示补货 | 示例: `0` |
| 39 | `sale_channel` | string | [`sale_channel`](#ods-store-goods-master) | 销售渠道类型 | 示例: `1,2,3` |
| 40 | `sale_num` | integer | [`sale_num`](#ods-store-goods-master) | 在当前统计口径下的销售数量(总销量,单位同 unit | 枚举值: `452`, `185`, `218`, `3`, `1`, `0`, `1155`, `2650` |
| 41 | `sale_price` | number | [`sale_price`](#ods-store-goods-master) | 商品标准销售价(挂牌价),单位为元 | 枚举值: `12.0`, `10.0`, `8.0`, `998.0`, `5.0`, `18.0`, `2.0`, `40.0` |
| 42 | `send_state` | integer | [`send_state`](#ods-store-goods-master) | 观察值:全部为 1 | 示例: `1` |
| 43 | `site_id` | integer | [`site_id`](#ods-store-goods-master) | 门店 ID | 示例: `2790685415443269` |
| 44 | `sort` | integer | [`sort`](#ods-store-goods-master) | 排序权重,用于前端商品列表展示时的排版顺序,数值越小/越大哪个优先,具体规则看系统设定(一般是数值越小排序越靠前) | 示例: `100` |
| 45 | `stock` | integer | [`stock`](#ods-store-goods-master) | 当前可用库存数量(以 unit 为单位) | 枚举值: `24`, `14`, `0`, `21`, `1`, `2`, `45`, `19` |
| 46 | `stock_A` | integer | [`stock_a`](#ods-store-goods-master) | (待补充) | 大小写匹配;示例: `0` |
| 47 | `tenant_goods_id` | integer | [`tenant_goods_id`](#ods-store-goods-master) | 租户/品牌维度的商品 ID相当于“全局商品 ID” | 枚举值: `2792037812375429`, `2792170827517829`, `2792178593255301`, `3089189492279813`, `2793225054603077`, `2793226137552709`, `2792152201432965`, `2792171921870725` |
| 48 | `tenant_id` | integer | [`tenant_id`](#ods-store-goods-master) | 租户/品牌 ID | 示例: `2790683160709957` |
| 49 | `time_slot_sale` | integer | ⚠️ 未映射 | | 示例: `2` |
| 50 | `total_purchase_cost` | number | [`total_purchase_cost`](#ods-store-goods-master) | 总采购成本,单位为元 | 枚举值: `0.0`, `0.1`, `0.23`, `24.07`, `8.24`, `152.0`, `0.63`, `108.53` |
| 51 | `total_sales` | integer | [`total_sales`](#ods-store-goods-master) | 累计销售数量 | 枚举值: `452`, `185`, `218`, `3`, `1`, `0`, `1155`, `2650` |
| 52 | `unit` | string | [`unit`](#ods-store-goods-master) | 商品计量单位(销售单位) | 枚举值: `桶`, `瓶`, `份`, `根`, `盒`, `个`, `杯`, `支` |
| 53 | `update_time` | string | [`update_time`](#ods-store-goods-master) | 最后一次修改该商品档案的时间(包括价格调整、状态变更等) | 枚举值: `2026-02-13 18:56:51`, `2026-02-12 00:07:13`, `2026-02-10 17:07:59`, `2026-02-13 17:31:06`, `2025-11-21 00:46:49`, `2025-07-21 11:05:15`, `2026-02-10 00:34:11`, `2026-01-01 02:53:23` |
<a id="ods-store-goods-master"></a>
#### ODS 表结构 — ods.store_goods_master [🔗 API](#api-store-goods-master)
共 52 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `id` | bigint | [`id`](#api-store-goods-master) | [`dim_store_goods.site_goods_id`](#dwd-dim-store-goods), [`dim_store_goods_ex.site_goods_id`](#dwd-dim-store-goods-ex) | 门店商品 ID门店维度的商品主键 |
| 2 | `tenant_id` | bigint | [`tenant_id`](#api-store-goods-master) | [`dim_store_goods.tenant_id`](#dwd-dim-store-goods) | 租户/品牌 ID |
| 3 | `site_id` | bigint | [`site_id`](#api-store-goods-master) | [`dim_store_goods.site_id`](#dwd-dim-store-goods) | 门店 ID |
| 4 | `sitename` | text | [`siteName`](#api-store-goods-master) | [`dim_store_goods_ex.site_name`](#dwd-dim-store-goods-ex) | (待补充) |
| 5 | `tenant_goods_id` | bigint | [`goodsStockWarningInfo.tenant_goods_id`](#api-store-goods-master) | [`dim_store_goods.tenant_goods_id`](#dwd-dim-store-goods) | 租户/品牌维度的商品 ID相当于“全局商品 ID” |
| 6 | `goods_name` | text | [`goods_name`](#api-store-goods-master) | [`dim_store_goods.goods_name`](#dwd-dim-store-goods) | 商品名称,例如“合味道泡面”“地道肠”“麻将房茶位费”等 |
| 7 | `goods_bar_code` | text | [`goods_bar_code`](#api-store-goods-master) | [`dim_store_goods_ex.goods_barcode`](#dwd-dim-store-goods-ex) | 商品条形码(如 EAN-13 编码),用于扫码销售 |
| 8 | `goods_category_id` | bigint | [`goods_category_id`](#api-store-goods-master) | [`dim_store_goods.goods_category_id`](#dwd-dim-store-goods) | 商品一级分类 ID |
| 9 | `goods_second_category_id` | bigint | [`goods_second_category_id`](#api-store-goods-master) | [`dim_store_goods.goods_second_category_id`](#dwd-dim-store-goods) | 商品二级分类 ID |
| 10 | `onecategoryname` | text | [`oneCategoryName`](#api-store-goods-master) | [`dim_store_goods.category_level1_name`](#dwd-dim-store-goods) | (待补充) |
| 11 | `twocategoryname` | text | [`twoCategoryName`](#api-store-goods-master) | [`dim_store_goods.category_level2_name`](#dwd-dim-store-goods) | (待补充) |
| 12 | `unit` | text | [`unit`](#api-store-goods-master) | [`dim_store_goods_ex.unit`](#dwd-dim-store-goods-ex) | 商品计量单位(销售单位) |
| 13 | `sale_price` | numeric | [`sale_price`](#api-store-goods-master) | [`dim_store_goods.sale_price`](#dwd-dim-store-goods) | 商品标准销售价(挂牌价),单位为元 |
| 14 | `cost_price` | numeric | [`cost_price`](#api-store-goods-master) | [`dim_store_goods_ex.cost_price`](#dwd-dim-store-goods-ex) | 商品成本价(单件成本) |
| 15 | `cost_price_type` | integer | [`cost_price_type`](#api-store-goods-master) | [`dim_store_goods_ex.cost_price_type`](#dwd-dim-store-goods-ex) | 1 代表使用“固定成本价”(手工维护的 cost_priceprovisional_total_cost 按“... |
| 16 | `min_discount_price` | numeric | [`min_discount_price`](#api-store-goods-master) | [`dim_store_goods_ex.min_discount_price`](#dwd-dim-store-goods-ex) | 最低允许成交价(限价) |
| 17 | `safe_stock` | numeric | [`safe_stock`](#api-store-goods-master) | [`dim_store_goods_ex.safety_stock_qty`](#dwd-dim-store-goods-ex) | 安全库存量(阈值),低于该值时系统可以提示补货 |
| 18 | `stock` | numeric | [`stock`](#api-store-goods-master) | [`dim_store_goods.batch_stock_qty`](#dwd-dim-store-goods), [`dim_store_goods_ex.stock_qty`](#dwd-dim-store-goods-ex) | 当前可用库存数量(以 unit 为单位) |
| 19 | `stock_a` | numeric | [`stock_A`](#api-store-goods-master) | [`dim_store_goods_ex.stock_secondary_qty`](#dwd-dim-store-goods-ex) | (待补充) |
| 20 | `sale_num` | numeric | [`sale_num`](#api-store-goods-master) | [`dim_store_goods.sale_qty`](#dwd-dim-store-goods) | 在当前统计口径下的销售数量(总销量,单位同 unit |
| 21 | `total_purchase_cost` | numeric | [`total_purchase_cost`](#api-store-goods-master) | [`dim_store_goods_ex.provisional_total_cost`](#dwd-dim-store-goods-ex), [`dim_store_goods_ex.total_purchase_cost`](#dwd-dim-store-goods-ex) | 总采购成本,单位为元 |
| 22 | `total_sales` | numeric | [`total_sales`](#api-store-goods-master) | [`dim_store_goods.total_sales_qty`](#dwd-dim-store-goods) | 累计销售数量 |
| 23 | `average_monthly_sales` | numeric | [`average_monthly_sales`](#api-store-goods-master) | [`dim_store_goods.avg_monthly_sales`](#dwd-dim-store-goods) | 平均月销量(件/月),根据某个统计周期内的销售数据折算而来 |
| 24 | `batch_stock_quantity` | numeric | [`batch_stock_quantity`](#api-store-goods-master) | — | 当前“批次”的库存数量(主单位) |
| 25 | `days_available` | integer | [`days_available`](#api-store-goods-master) | [`dim_store_goods_ex.days_on_shelf`](#dwd-dim-store-goods-ex) | 商品“在架天数”或“可售天数”,大致等于当前时间减去首次上架时间 |
| 26 | `provisional_total_cost` | numeric | [`provisional_total_cost`](#api-store-goods-master) | — | 暂估总成本,单位为元 |
| 27 | `enable_status` | integer | [`enable_status`](#api-store-goods-master) | [`dim_store_goods.enable_status`](#dwd-dim-store-goods) | 控制商品档案是否参与任何业务(库存、销售等) |
| 28 | `audit_status` | integer | [`audit_status`](#api-store-goods-master) | [`dim_store_goods_ex.audit_status`](#dwd-dim-store-goods-ex) | 观察值:全部为 2 |
| 29 | `goods_state` | integer | [`goods_state`](#api-store-goods-master) | [`dim_store_goods.goods_state`](#dwd-dim-store-goods) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 30 | `is_delete` | integer | [`is_delete`](#api-store-goods-master) | [`dim_store_goods.is_delete`](#dwd-dim-store-goods) | 逻辑删除标志 |
| 31 | `is_warehousing` | integer | [`is_warehousing`](#api-store-goods-master) | [`dim_store_goods_ex.is_warehousing`](#dwd-dim-store-goods-ex) | 是否纳入库存管理 |
| 32 | `able_discount` | integer | [`able_discount`](#api-store-goods-master) | [`dim_store_goods_ex.is_discountable`](#dwd-dim-store-goods-ex) | 是否允许参与折扣 |
| 33 | `able_site_transfer` | integer | [`able_site_transfer`](#api-store-goods-master) | [`dim_store_goods_ex.able_site_transfer`](#dwd-dim-store-goods-ex) | 表示是否允许跨门店调拨或跨站点共享库存 |
| 34 | `forbid_sell_status` | integer | [`forbid_sell_status`](#api-store-goods-master) | [`dim_store_goods_ex.forbid_sell_status`](#dwd-dim-store-goods-ex) | 观察值:全部为 1 |
| 35 | `freeze` | integer | [`freeze`](#api-store-goods-master) | [`dim_store_goods_ex.freeze_status`](#dwd-dim-store-goods-ex) | (待补充) |
| 36 | `send_state` | integer | [`send_state`](#api-store-goods-master) | [`dim_store_goods.send_state`](#dwd-dim-store-goods) | 观察值:全部为 1 |
| 37 | `custom_label_type` | integer | [`custom_label_type`](#api-store-goods-master) | [`dim_store_goods_ex.custom_label_type`](#dwd-dim-store-goods-ex) | 自定义标签类型 |
| 38 | `option_required` | integer | [`option_required`](#api-store-goods-master) | [`dim_store_goods_ex.option_required`](#dwd-dim-store-goods-ex) | 是否需要在销售时选择规格/选项 |
| 39 | `sale_channel` | integer | [`sale_channel`](#api-store-goods-master) | [`dim_store_goods_ex.sale_channel`](#dwd-dim-store-goods-ex) | 销售渠道类型 |
| 40 | `sort` | integer | [`sort`](#api-store-goods-master) | [`dim_store_goods_ex.sort_order`](#dwd-dim-store-goods-ex) | 排序权重,用于前端商品列表展示时的排版顺序,数值越小/越大哪个优先,具体规则看系统设定(一般是数值越小排序越靠前) |
| 41 | `remark` | text | [`remark`](#api-store-goods-master) | [`dim_store_goods_ex.remark`](#dwd-dim-store-goods-ex) | 商品备注(可以写口味说明、供应商、注意事项等) |
| 42 | `pinyin_initial` | text | [`pinyin_initial`](#api-store-goods-master) | [`dim_store_goods_ex.pinyin_initial`](#dwd-dim-store-goods-ex) | 商品名称的拼音首字母缩写,有时多个别名用逗号分隔 |
| 43 | `goods_cover` | text | [`goods_cover`](#api-store-goods-master) | [`dim_store_goods_ex.goods_cover_url`](#dwd-dim-store-goods-ex) | 商品图片 URL如 OSS 对象存储地址),用于前端展示商品图片 |
| 44 | `create_time` | timestamp without time zone | [`create_time`](#api-store-goods-master) | [`dim_store_goods.created_at`](#dwd-dim-store-goods) | 门店商品档案创建时间(商品在门店建立档案的时间点) |
| 45 | `update_time` | timestamp without time zone | [`update_time`](#api-store-goods-master) | [`dim_store_goods.updated_at`](#dwd-dim-store-goods) | 最后一次修改该商品档案的时间(包括价格调整、状态变更等) |
| 46 | `commodity_code` | text | [`commodity_code`](#api-store-goods-master) | [`dim_store_goods.commodity_code`](#dwd-dim-store-goods) | 商品编码 |
| 47 | `not_sale` | integer | [`not_sale`](#api-store-goods-master) | [`dim_store_goods.not_sale`](#dwd-dim-store-goods) | (待补充) |
| 48 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
| 49 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 50 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 51 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 52 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
<a id="dwd-dim-store-goods"></a>
#### DWD 表结构 — dwd.dim_store_goods [🔗 ODS](#ods-store-goods-master)
共 26 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `site_goods_id` | bigint | [`id`](#ods-store-goods-master) | 直接 | 门店商品 ID |
| 2 | `tenant_id` | bigint | [`tenant_id`](#ods-store-goods-master) | 直接 | 租户 ID |
| 3 | `site_id` | bigint | [`site_id`](#ods-store-goods-master) | 直接 | 门店 ID → dim_site |
| 4 | `tenant_goods_id` | bigint | [`tenant_goods_id`](#ods-store-goods-master) | 直接 | 租户商品 ID → dim_tenant_goods |
| 5 | `goods_name` | text | [`goods_name`](#ods-store-goods-master) | 直接 | 商品名称。**样本值**: "双中支中华", "炫赫门小南京"等 |
| 6 | `goods_category_id` | bigint | [`goods_category_id`](#ods-store-goods-master) | 直接 | 一级分类 ID → dim_goods_category |
| 7 | `goods_second_category_id` | bigint | [`goods_second_category_id`](#ods-store-goods-master) | 直接 | 二级分类 ID → dim_goods_category |
| 8 | `category_level1_name` | text | [`onecategoryname`](#ods-store-goods-master) | 直接 | 一级分类名称。**样本值**: "零食", "酒水", "其他", "香烟" 等 |
| 9 | `category_level2_name` | text | [`twocategoryname`](#ods-store-goods-master) | 直接 | 二级分类名称。**样本值**: "零食", "饮料", "其他2", "香烟", "雪糕", "酒水", "球杆"... |
| 10 | `batch_stock_qty` | integer | [`stock`](#ods-store-goods-master) | 直接 | 批次库存数量 |
| 11 | `sale_qty` | integer | [`sale_num`](#ods-store-goods-master) | 直接 | 销售数量 |
| 12 | `total_sales_qty` | integer | [`total_sales`](#ods-store-goods-master) | 直接 | 累计销售数量 |
| 13 | `sale_price` | numeric | [`sale_price`](#ods-store-goods-master) | 直接 | 销售价格(元) |
| 14 | `created_at` | timestamp with time zone | [`create_time`](#ods-store-goods-master) | 直接 | 创建时间 |
| 15 | `updated_at` | timestamp with time zone | [`update_time`](#ods-store-goods-master) | 直接 | 更新时间 |
| 16 | `avg_monthly_sales` | numeric | [`average_monthly_sales`](#ods-store-goods-master) | 直接 | 月均销量 |
| 17 | `goods_state` | integer | [`goods_state`](#ods-store-goods-master) | 直接 | 商品状态。**枚举值**: 1=上架, 2=下架 |
| 18 | `enable_status` | integer | [`enable_status`](#ods-store-goods-master) | 直接 | 启用状态。**枚举值**: 1=启用 |
| 19 | `send_state` | integer | [`send_state`](#ods-store-goods-master) | 直接 | 配送状态。暂无作用 |
| 20 | `is_delete` | integer | [`is_delete`](#ods-store-goods-master) | 直接 | 删除标记。**枚举值**: 0=未删除 |
| 21 | `commodity_code` | text | [`commodity_code`](#ods-store-goods-master) | 直接 | 商品编码 |
| 22 | `not_sale` | integer | [`not_sale`](#ods-store-goods-master) | 直接 | 是否停售 |
| 23 | `scd2_start_time` | timestamp with time zone | — | SCD2 | SCD2 版本生效时间 |
| 24 | `scd2_end_time` | timestamp with time zone | — | SCD2 | SCD2 版本失效时间 |
| 25 | `scd2_is_current` | integer | — | SCD2 | 当前版本标记 |
| 26 | `scd2_version` | integer | — | SCD2 | 版本号 |
<a id="dwd-dim-store-goods-ex"></a>
#### DWD 表结构 — dwd.dim_store_goods_ex [🔗 ODS](#ods-store-goods-master)
共 30 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `site_goods_id` | bigint | [`id`](#ods-store-goods-master) | 直接 | 字段重命名 |
| 2 | `site_name` | text | [`sitename`](#ods-store-goods-master) | 直接 | 字段重命名 |
| 3 | `unit` | text | [`unit`](#ods-store-goods-master) | 直接 | 同名直传 |
| 4 | `goods_barcode` | text | [`goods_bar_code`](#ods-store-goods-master) | 直接 | 字段重命名 |
| 5 | `goods_cover_url` | text | [`goods_cover`](#ods-store-goods-master) | 直接 | 字段重命名 |
| 6 | `pinyin_initial` | text | [`pinyin_initial`](#ods-store-goods-master) | 直接 | 同名直传 |
| 7 | `stock_qty` | integer | [`stock`](#ods-store-goods-master) | 直接 | 字段重命名 |
| 8 | `stock_secondary_qty` | integer | [`stock_a`](#ods-store-goods-master) | 直接 | 字段重命名 |
| 9 | `safety_stock_qty` | integer | [`safe_stock`](#ods-store-goods-master) | 直接 | 字段重命名 |
| 10 | `cost_price` | numeric | [`cost_price`](#ods-store-goods-master) | 直接 | 同名直传 |
| 11 | `cost_price_type` | integer | [`cost_price_type`](#ods-store-goods-master) | 直接 | 同名直传 |
| 12 | `provisional_total_cost` | numeric | [`total_purchase_cost`](#ods-store-goods-master) | 直接 | 字段重命名 |
| 13 | `total_purchase_cost` | numeric | [`total_purchase_cost`](#ods-store-goods-master) | 直接 | 同名直传 |
| 14 | `min_discount_price` | numeric | [`min_discount_price`](#ods-store-goods-master) | 直接 | 同名直传 |
| 15 | `is_discountable` | integer | [`able_discount`](#ods-store-goods-master) | 直接 | 字段重命名 |
| 16 | `days_on_shelf` | integer | [`days_available`](#ods-store-goods-master) | 直接 | 字段重命名 |
| 17 | `audit_status` | integer | [`audit_status`](#ods-store-goods-master) | 直接 | 同名直传 |
| 18 | `sale_channel` | integer | [`sale_channel`](#ods-store-goods-master) | 直接 | 同名直传 |
| 19 | `is_warehousing` | integer | [`is_warehousing`](#ods-store-goods-master) | 直接 | 同名直传 |
| 20 | `freeze_status` | integer | [`freeze`](#ods-store-goods-master) | 直接 | 字段重命名 |
| 21 | `forbid_sell_status` | integer | [`forbid_sell_status`](#ods-store-goods-master) | 直接 | 同名直传 |
| 22 | `able_site_transfer` | integer | [`able_site_transfer`](#ods-store-goods-master) | 直接 | 同名直传 |
| 23 | `custom_label_type` | integer | [`custom_label_type`](#ods-store-goods-master) | 直接 | 同名直传 |
| 24 | `option_required` | integer | [`option_required`](#ods-store-goods-master) | 直接 | 同名直传 |
| 25 | `remark` | text | [`remark`](#ods-store-goods-master) | 直接 | 维度字段,用于补充维度属性 |
| 26 | `sort_order` | integer | [`sort`](#ods-store-goods-master) | 直接 | 字段重命名 |
| 27 | `scd2_start_time` | timestamp with time zone | — | SCD2 | SCD2 元数据 |
| 28 | `scd2_end_time` | timestamp with time zone | — | SCD2 | SCD2 元数据 |
| 29 | `scd2_is_current` | integer | — | SCD2 | SCD2 元数据 |
| 30 | `scd2_version` | integer | — | SCD2 | SCD2 元数据 |
### 3.21 table_fee_discount_records台费折扣/调账)
- 任务代码:`ODS_TABLE_FEE_DISCOUNT`
- 采样记录数200
- API JSON 字段数55
- ODS 列数33
- DWD 目标表dwd_table_fee_adjust, dwd_table_fee_adjust_ex
<a id="api-table-fee-discount-records"></a>
#### API 源字段 — table_fee_discount_records [🔗 ODS](#ods-table-fee-discount-records)
已映射 30/55覆盖率 54.5%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `tableProfile.id` | integer | [`id`](#ods-table-fee-discount-records) | 台费打折 / 调整流水主键 ID | 枚举值: `2793022145302597`, `2793001695301765`, `2793023960682565`, `2793020259995717`, `2956248279567557`, `2793018776735877`, `2793023960551493`, `2793012902121605` |
| 2 | `tableProfile.tenant_id` | integer | [`tenant_id`](#ods-table-fee-discount-records) | 租户/品牌 ID | 示例: `2790683160709957` |
| 3 | `tableProfile.tenant_name` | string | [`tenant_name`](#ods-table-fee-discount-records) | 租户名称 | |
| 4 | `tableProfile.siteName` | string | [`sitename`](#ods-table-fee-discount-records) | 门店名称 | 大小写匹配 |
| 5 | `tableProfile.table_name` | string | [`table_name`](#ods-table-fee-discount-records) | 台桌名称 | 枚举值: `888`, `A3`, `M4`, `S3`, `发财`, `VIP5`, `1`, `B4` |
| 6 | `tableProfile.site_table_area_id` | integer | [`site_table_area_id`](#ods-table-fee-discount-records) | 门店台区ID | 枚举值: `2791963855982661`, `2791963794329671`, `2791963887030341`, `2791963836207173`, `2956246442462533`, `2791963825803397`, `2791963807682693`, `2791963848527941` |
| 7 | `tableProfile.area_type_id` | integer | [`area_type_id`](#ods-table-fee-discount-records) | 区域类型ID | 示例: `0` |
| 8 | `tableProfile.table_price` | number | [`table_price`](#ods-table-fee-discount-records) | 台桌价格 | 示例: `0.0` |
| 9 | `tableProfile.ewelink_client_id` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 10 | `tableProfile.site_table_area_name` | string | [`site_table_area_name`](#ods-table-fee-discount-records) | 门店台区名称 | 枚举值: `K包`, `A区`, `麻将房`, `斯诺克区`, `发财`, `VIP包厢`, `B区`, `666` |
| 11 | `tableProfile.charge_free` | integer | [`charge_free`](#ods-table-fee-discount-records) | 是否免费 | 示例: `0` |
| 12 | `siteProfile.id` | integer | [`id`](#ods-table-fee-discount-records) | 台费打折 / 调整流水主键 ID | 📦 嵌套对象;示例: `2790685415443269` |
| 13 | `siteProfile.org_id` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `2790684179467077` |
| 14 | `siteProfile.shop_name` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `朗朗桌球` |
| 15 | `siteProfile.avatar` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `https://oss.ficoo.vip/admin...` |
| 16 | `siteProfile.business_tel` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `13316068642` |
| 17 | `siteProfile.full_address` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `广东省广州市天河区丽阳街12号` |
| 18 | `siteProfile.address` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `广东省广州市天河区天园街道朗朗桌球` |
| 19 | `siteProfile.longitude` | number | ⚠️ 未映射 | | 📦 嵌套对象;示例: `113.360321` |
| 20 | `siteProfile.latitude` | number | ⚠️ 未映射 | | 📦 嵌套对象;示例: `23.133629` |
| 21 | `siteProfile.tenant_site_region_id` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `156440100` |
| 22 | `siteProfile.tenant_id` | integer | [`tenant_id`](#ods-table-fee-discount-records) | 租户/品牌 ID | 📦 嵌套对象;示例: `2790683160709957` |
| 23 | `siteProfile.auto_light` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 24 | `siteProfile.attendance_distance` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 25 | `siteProfile.wifi_name` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 26 | `siteProfile.wifi_password` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 27 | `siteProfile.customer_service_qrcode` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 28 | `siteProfile.customer_service_wechat` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 29 | `siteProfile.fixed_pay_qrCode` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 30 | `siteProfile.prod_env` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 31 | `siteProfile.light_status` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `2` |
| 32 | `siteProfile.light_type` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `0` |
| 33 | `siteProfile.site_type` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 34 | `siteProfile.light_token` | string | ⚠️ 未映射 | | 📦 嵌套对象 |
| 35 | `siteProfile.site_label` | string | ⚠️ 未映射 | | 📦 嵌套对象;示例: `A` |
| 36 | `siteProfile.attendance_enabled` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 37 | `siteProfile.shop_status` | integer | ⚠️ 未映射 | | 📦 嵌套对象;示例: `1` |
| 38 | `id` | integer | [`id`](#ods-table-fee-discount-records) | 台费打折 / 调整流水主键 ID | 枚举值: `3093721330321541`, `3093570952251653`, `3093460887587141`, `3093240533174469`, `3092712429406405`, `3092712429357253`, `3092668244035717`, `3092563449776389` |
| 39 | `adjust_type` | integer | [`adjust_type`](#ods-table-fee-discount-records) | 文件名是“台费打折”,字段名为“调整类型”,当前所有记录都是 1即“台费打折/台费减免”这一种调整类型 | 示例: `1` |
| 40 | `applicant_id` | integer | [`applicant_id`](#ods-table-fee-discount-records) | 打折/调账申请人 ID | 示例: `2790687322443013` |
| 41 | `applicant_name` | string | [`applicant_name`](#ods-table-fee-discount-records) | 申请人姓名(带角色描述),为 applicant_id 的冗余显示字段 | 示例: `收银员:郑丽珊` |
| 42 | `create_time` | string | [`create_time`](#ods-table-fee-discount-records) | 台费调整记录的创建时间,即打折操作被执行的时间戳 | 枚举值: `2026-02-13 21:56:07`, `2026-02-13 19:23:08`, `2026-02-13 17:31:10`, `2026-02-13 13:47:01`, `2026-02-13 04:49:48`, `2026-02-13 04:04:51`, `2026-02-13 02:18:15`, `2026-02-12 22:05:58` |
| 43 | `is_delete` | integer | [`is_delete`](#ods-table-fee-discount-records) | 逻辑删除标记0=否1=是) | 示例: `0` |
| 44 | `ledger_amount` | number | [`ledger_amount`](#ods-table-fee-discount-records) | 金额字段,用于计费/结算/分摊等金额计算 | 枚举值: `125.88`, `66.14`, `64.0`, `34.0`, `1191.01`, `91.21`, `92.66`, `249.16` |
| 45 | `ledger_count` | integer | [`ledger_count`](#ods-table-fee-discount-records) | 这里不是“秒数”,而是“调整次数/条数”的量化,目前固定为 1表示“一次调账事件” | 示例: `1` |
| 46 | `ledger_name` | string | [`ledger_name`](#ods-table-fee-discount-records) | 设计上应该用于记录“调账项目名称”或“打折原因描述”(例如某种优惠规则名称),但当前门店并未使用该字段 | |
| 47 | `ledger_status` | integer | [`ledger_status`](#ods-table-fee-discount-records) | 来自 JSON 导出的原始字段,用于保留业务取值 | 枚举值: `1`, `0` |
| 48 | `operator_id` | integer | [`operator_id`](#ods-table-fee-discount-records) | 实际执行调账操作的操作员 ID | 示例: `2790687322443013` |
| 49 | `operator_name` | string | [`operator_name`](#ods-table-fee-discount-records) | 操作员姓名 | 示例: `收银员:郑丽珊` |
| 50 | `order_settle_id` | integer | [`order_settle_id`](#ods-table-fee-discount-records) | 结算单/小票 ID | 枚举值: `3093721299536133`, `3093570809759941`, `3093460849854725`, `3093240497031301`, `3092711340902597`, `3092668010514757`, `3092562710104197`, `3092315370047749` |
| 51 | `order_trade_no` | integer | [`order_trade_no`](#ods-table-fee-discount-records) | 订单交易号 | 枚举值: `3093324364122309`, `3093400552720645`, `3093249285933253`, `3093153157597509`, `3092230766020741`, `3092158231251269`, `3092081794779333`, `3092053788625093` |
| 52 | `site_id` | integer | [`site_id`](#ods-table-fee-discount-records) | 门店 ID本批数据全部为同一家门店朗朗桌球 | 示例: `2790685415443269` |
| 53 | `site_table_id` | integer | [`site_table_id`](#ods-table-fee-discount-records) | 台桌 ID | 枚举值: `2793022145302597`, `2793001695301765`, `2793023960682565`, `2793020259995717`, `2956248279567557`, `2793018776735877`, `2793023960551493`, `2793012902121605` |
| 54 | `tenant_id` | integer | [`tenant_id`](#ods-table-fee-discount-records) | 租户/品牌 ID | 示例: `2790683160709957` |
| 55 | `tenant_table_area_id` | integer | [`tenant_table_area_id`](#ods-table-fee-discount-records) | 租户维度的“台桌区域 ID” | 枚举值: `2791961709907845`, `2791960001957765`, `2791962314215301`, `2791961347968901`, `2956244810877893`, `2791961060364165`, `2791960521691013`, `2791961598955397` |
<a id="ods-table-fee-discount-records"></a>
#### ODS 表结构 — ods.table_fee_discount_records [🔗 API](#api-table-fee-discount-records)
共 33 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `id` | bigint | [`tableProfile.id`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust.table_fee_adjust_id`](#dwd-dwd-table-fee-adjust), [`dwd_table_fee_adjust_ex.table_fee_adjust_id`](#dwd-dwd-table-fee-adjust-ex) | 台费打折 / 调整流水主键 ID |
| 2 | `tenant_id` | bigint | [`tableProfile.tenant_id`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust.tenant_id`](#dwd-dwd-table-fee-adjust) | 租户/品牌 ID |
| 3 | `site_id` | bigint | [`site_id`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust.site_id`](#dwd-dwd-table-fee-adjust) | 门店 ID本批数据全部为同一家门店朗朗桌球 |
| 4 | `siteprofile` | jsonb | — | — | (待补充) |
| 5 | `site_table_id` | bigint | [`site_table_id`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust.table_id`](#dwd-dwd-table-fee-adjust) | 台桌 ID |
| 6 | `tableprofile` | jsonb | — | — | (待补充) |
| 7 | `tenant_table_area_id` | bigint | [`tenant_table_area_id`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust.table_area_id`](#dwd-dwd-table-fee-adjust), [`dwd_table_fee_adjust.tenant_table_area_id`](#dwd-dwd-table-fee-adjust) | 租户维度的“台桌区域 ID” |
| 8 | `adjust_type` | integer | [`adjust_type`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust_ex.adjust_type`](#dwd-dwd-table-fee-adjust-ex) | 文件名是“台费打折”,字段名为“调整类型”,当前所有记录都是 1即“台费打折/台费减免”这一种调整类型 |
| 9 | `ledger_amount` | numeric | [`ledger_amount`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust.ledger_amount`](#dwd-dwd-table-fee-adjust) | 金额字段,用于计费/结算/分摊等金额计算 |
| 10 | `ledger_count` | numeric | [`ledger_count`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust_ex.ledger_count`](#dwd-dwd-table-fee-adjust-ex) | 这里不是“秒数”,而是“调整次数/条数”的量化,目前固定为 1表示“一次调账事件” |
| 11 | `ledger_name` | text | [`ledger_name`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust_ex.ledger_name`](#dwd-dwd-table-fee-adjust-ex) | 设计上应该用于记录“调账项目名称”或“打折原因描述”(例如某种优惠规则名称),但当前门店并未使用该字段 |
| 12 | `ledger_status` | integer | [`ledger_status`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust.ledger_status`](#dwd-dwd-table-fee-adjust) | 来自 JSON 导出的原始字段,用于保留业务取值 |
| 13 | `applicant_id` | bigint | [`applicant_id`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust_ex.applicant_id`](#dwd-dwd-table-fee-adjust-ex) | 打折/调账申请人 ID |
| 14 | `applicant_name` | text | [`applicant_name`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust_ex.applicant_name`](#dwd-dwd-table-fee-adjust-ex) | 申请人姓名(带角色描述),为 applicant_id 的冗余显示字段 |
| 15 | `operator_id` | bigint | [`operator_id`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust_ex.operator_id`](#dwd-dwd-table-fee-adjust-ex) | 实际执行调账操作的操作员 ID |
| 16 | `operator_name` | text | [`operator_name`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust_ex.operator_name`](#dwd-dwd-table-fee-adjust-ex) | 操作员姓名 |
| 17 | `order_settle_id` | bigint | [`order_settle_id`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust.order_settle_id`](#dwd-dwd-table-fee-adjust) | 结算单/小票 ID |
| 18 | `order_trade_no` | text | [`order_trade_no`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust.order_trade_no`](#dwd-dwd-table-fee-adjust) | 订单交易号 |
| 19 | `is_delete` | integer | [`is_delete`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust.is_delete`](#dwd-dwd-table-fee-adjust) | 逻辑删除标记0=否1=是) |
| 20 | `create_time` | timestamp without time zone | [`create_time`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust.adjust_time`](#dwd-dwd-table-fee-adjust) | 台费调整记录的创建时间,即打折操作被执行的时间戳 |
| 21 | `area_type_id` | bigint | [`tableProfile.area_type_id`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust_ex.area_type_id`](#dwd-dwd-table-fee-adjust-ex) | 区域类型ID |
| 22 | `charge_free` | boolean | [`tableProfile.charge_free`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust.charge_free`](#dwd-dwd-table-fee-adjust) | 是否免费 |
| 23 | `site_table_area_id` | bigint | [`tableProfile.site_table_area_id`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust_ex.site_table_area_id`](#dwd-dwd-table-fee-adjust-ex) | 门店台区ID |
| 24 | `site_table_area_name` | text | [`tableProfile.site_table_area_name`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust_ex.site_table_area_name`](#dwd-dwd-table-fee-adjust-ex) | 门店台区名称 |
| 25 | `sitename` | text | [`tableProfile.siteName`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust_ex.site_name`](#dwd-dwd-table-fee-adjust-ex) | 门店名称 |
| 26 | `table_name` | text | [`tableProfile.table_name`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust.table_name`](#dwd-dwd-table-fee-adjust) | 台桌名称 |
| 27 | `table_price` | numeric | [`tableProfile.table_price`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust.table_price`](#dwd-dwd-table-fee-adjust) | 台桌价格 |
| 28 | `tenant_name` | text | [`tableProfile.tenant_name`](#api-table-fee-discount-records) | [`dwd_table_fee_adjust_ex.tenant_name`](#dwd-dwd-table-fee-adjust-ex) | 租户名称 |
| 29 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 30 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 31 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 32 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
| 33 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
<a id="dwd-dwd-table-fee-adjust"></a>
#### DWD 表结构 — dwd.dwd_table_fee_adjust [🔗 ODS](#ods-table-fee-discount-records)
共 16 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `table_fee_adjust_id` | bigint | [`id`](#ods-table-fee-discount-records) | 直接 | 台费调整 ID |
| 2 | `order_trade_no` | bigint | [`order_trade_no`](#ods-table-fee-discount-records) | 直接 | 订单号 |
| 3 | `order_settle_id` | bigint | [`order_settle_id`](#ods-table-fee-discount-records) | 直接 | 结账单 ID → dwd_settlement_head |
| 4 | `tenant_id` | bigint | [`tenant_id`](#ods-table-fee-discount-records) | 直接 | 租户 ID |
| 5 | `site_id` | bigint | [`site_id`](#ods-table-fee-discount-records) | 直接 | 门店 ID |
| 6 | `table_id` | bigint | [`site_table_id`](#ods-table-fee-discount-records) | 直接 | 台桌 ID → dim_table |
| 7 | `table_area_id` | bigint | [`tenant_table_area_id`](#ods-table-fee-discount-records) | 直接 | 台区 ID |
| 8 | `table_area_name` | character varying | [`tableprofile->>'table_area_name'`](#ods-table-fee-discount-records) | 直接 | 台区名称(当前数据全为 NULL |
| 9 | `tenant_table_area_id` | bigint | [`tenant_table_area_id`](#ods-table-fee-discount-records) | 直接 | 租户台区 ID |
| 10 | `ledger_amount` | numeric | [`ledger_amount`](#ods-table-fee-discount-records) | 直接 | 调整金额(元) |
| 11 | `ledger_status` | integer | [`ledger_status`](#ods-table-fee-discount-records) | 直接 | 账本状态。**枚举值**: 0=待确认, 1=已确认 |
| 12 | `is_delete` | integer | [`is_delete`](#ods-table-fee-discount-records) | 直接 | 删除标记。**枚举值**: 0=未删除 |
| 13 | `adjust_time` | timestamp with time zone | [`create_time`](#ods-table-fee-discount-records) | 直接 | 调整时间 |
| 14 | `table_name` | text | [`table_name`](#ods-table-fee-discount-records) | 直接 | 台桌名称 |
| 15 | `table_price` | numeric | [`table_price`](#ods-table-fee-discount-records) | 直接 | 台桌价格 |
| 16 | `charge_free` | boolean | [`charge_free`](#ods-table-fee-discount-records) | → boolean | 是否免费 |
<a id="dwd-dwd-table-fee-adjust-ex"></a>
#### DWD 表结构 — dwd.dwd_table_fee_adjust_ex [🔗 ODS](#ods-table-fee-discount-records)
共 13 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `table_fee_adjust_id` | bigint | [`id`](#ods-table-fee-discount-records) | 直接 | 字段重命名 |
| 2 | `adjust_type` | integer | [`adjust_type`](#ods-table-fee-discount-records) | 直接 | 同名直传 |
| 3 | `ledger_count` | integer | [`ledger_count`](#ods-table-fee-discount-records) | 直接 | 同名直传 |
| 4 | `ledger_name` | character varying | [`ledger_name`](#ods-table-fee-discount-records) | 直接 | 名称字段,用于展示与辅助识别 |
| 5 | `applicant_name` | character varying | [`applicant_name`](#ods-table-fee-discount-records) | 直接 | 同名直传 |
| 6 | `operator_name` | character varying | [`operator_name`](#ods-table-fee-discount-records) | 直接 | 同名直传 |
| 7 | `applicant_id` | bigint | [`applicant_id`](#ods-table-fee-discount-records) | 直接 | 同名直传 |
| 8 | `operator_id` | bigint | [`operator_id`](#ods-table-fee-discount-records) | 直接 | 同名直传 |
| 9 | `area_type_id` | bigint | [`area_type_id`](#ods-table-fee-discount-records) | 直接 | |
| 10 | `site_table_area_id` | bigint | [`site_table_area_id`](#ods-table-fee-discount-records) | 直接 | |
| 11 | `site_table_area_name` | text | [`site_table_area_name`](#ods-table-fee-discount-records) | 直接 | |
| 12 | `site_name` | text | [`sitename`](#ods-table-fee-discount-records) | 直接 | 字段重命名 |
| 13 | `tenant_name` | text | [`tenant_name`](#ods-table-fee-discount-records) | 直接 | |
### 3.22 tenant_goods_master租户商品档案
- 任务代码:`ODS_TENANT_GOODS`
- 采样记录数174
- API JSON 字段数32
- ODS 列数37
- DWD 目标表dim_tenant_goods, dim_tenant_goods_ex
<a id="api-tenant-goods-master"></a>
#### API 源字段 — tenant_goods_master [🔗 ODS](#ods-tenant-goods-master)
已映射 32/32覆盖率 100.0%
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
| 1 | `categoryName` | string | [`categoryname`](#ods-tenant-goods-master) | (待补充) | 大小写匹配;枚举值: `饮料`, `面`, `酒水`, `零食`, `槟榔`, `雪糕`, `香烟`, `小吃` |
| 2 | `isInSite` | boolean | [`isinsite`](#ods-tenant-goods-master) | (待补充) | 大小写匹配;示例: `False` |
| 3 | `commodityCode[]` | string | [`commoditycode`](#ods-tenant-goods-master) | (待补充) | 大小写匹配;枚举值: `10000028`, `10000002`, `10000012`, `10000020`, `10000010`, `10000006`, `10000123`, `10000019` |
| 4 | `id` | integer | [`id`](#ods-tenant-goods-master) | 商品档案主键 ID唯一标识一条商品 | 枚举值: `2791925230096261`, `2792037812375429`, `2792038476746629`, `2792039804047237`, `2792044495523717`, `2792045494685573`, `2792056126328709`, `2792067181399941` |
| 5 | `able_discount` | integer | [`able_discount`](#ods-tenant-goods-master) | 是否允许参与折扣/打折 | 示例: `1` |
| 6 | `able_site_transfer` | integer | [`able_site_transfer`](#ods-tenant-goods-master) | 布尔/开关字段,用于表示权限、可用性或状态开关 | 枚举值: `2`, `0` |
| 7 | `commodity_code` | string | [`commodity_code`](#ods-tenant-goods-master) | 商品编码(通常为对外商品编码或条码) | 枚举值: `10000028`, `10000002`, `10000012`, `10000020`, `10000010`, `10000006`, `10000123`, `10000019` |
| 8 | `common_sale_royalty` | integer | [`common_sale_royalty`](#ods-tenant-goods-master) | 普通销售提成比例或提成金额的配置字段 | 示例: `0` |
| 9 | `cost_price` | number | [`cost_price`](#ods-tenant-goods-master) | 成本价格 | 枚举值: `0.0`, `2.5`, `3.0`, `2.0`, `35.0` |
| 10 | `cost_price_type` | integer | [`cost_price_type`](#ods-tenant-goods-master) | 金额字段,用于计费/结算/分摊等金额计算 | 枚举值: `1`, `2` |
| 11 | `create_time` | string | [`create_time`](#ods-tenant-goods-master) | 商品档案创建时间 | 枚举值: `2025-07-15 17:13:15`, `2025-07-15 19:07:46`, `2025-07-15 19:08:27`, `2025-07-15 19:09:48`, `2025-07-15 19:14:34`, `2025-07-15 19:15:35`, `2025-07-15 19:26:24`, `2025-07-15 19:37:39` |
| 12 | `goods_bar_code` | string | [`goods_bar_code`](#ods-tenant-goods-master) | 商品条码EAN 等),目前未维护 | |
| 13 | `goods_category_id` | integer | [`goods_category_id`](#ods-tenant-goods-master) | 商品一级分类 ID | 枚举值: `2790683528350539`, `2791941988405125`, `2790683528350533`, `2791942087561093`, `2792062778003333`, `2793220945250117`, `2790683528350535`, `2793217944864581` |
| 14 | `goods_cover` | string | [`goods_cover`](#ods-tenant-goods-master) | 商品封面图片 URL 地址 | 枚举值: `https://oss.ficoo.vip/admin/ZwS8fj_1753175129443.jpg`, `https://oss.ficoo.vip/admin/mWT72w_1721195534466.png`, `https://oss.ficoo.vip/admin/rbm2dh_1753175603319.jpg`, `https://oss.ficoo.vip/admin/17r1dP_1721196142478.jpg`, `https://oss.ficoo.vip/admin/bYc2xB_1721195801432.png`, `https://oss.ficoo.vip/admin/xb1n3a_1753204721074.jpg`, `https://oss.ficoo.vip/admin/RWW8bM_1710125368666.jpg`, `https://oss.ficoo.vip/admin/75yN2R_1721196107928.jpg` |
| 15 | `goods_name` | string | [`goods_name`](#ods-tenant-goods-master) | 商品名称(前台展示名称) | 枚举值: `东方树叶`, `红烧牛肉面`, `水溶C`, `百威235毫升`, `薯片`, `100 和成天下`, `可爱多`, `奥利奥饼干` |
| 16 | `goods_number` | string | [`goods_number`](#ods-tenant-goods-master) | 商品内部编码(自定义货号/系统货号) | 枚举值: `1`, `2`, `3`, `4`, `5`, `6`, `9`, `7` |
| 17 | `goods_second_category_id` | integer | [`goods_second_category_id`](#ods-tenant-goods-master) | 商品二级分类 ID | 枚举值: `2790683528350540`, `2793236829620037`, `2790683528350541`, `2791948300259205`, `2790683528350534`, `2792035069284229`, `2792063209623429`, `2793221283104581` |
| 18 | `goods_state` | integer | [`goods_state`](#ods-tenant-goods-master) | 商品状态(上架/下架等) | 枚举值: `1`, `2` |
| 19 | `is_delete` | integer | [`is_delete`](#ods-tenant-goods-master) | 逻辑删除标志 | 示例: `0` |
| 20 | `is_warehousing` | integer | [`is_warehousing`](#ods-tenant-goods-master) | 是否启用库存管理 | 示例: `1` |
| 21 | `market_price` | number | [`market_price`](#ods-tenant-goods-master) | 商品标价 / 售价(标准销售单价) | 枚举值: `8.0`, `12.0`, `15.0`, `6.0`, `115.0`, `18.0`, `5.0`, `72.0` |
| 22 | `min_discount_price` | number | [`min_discount_price`](#ods-tenant-goods-master) | 该商品允许售卖的最低价格(底价) | 枚举值: `0.0`, `6.0`, `2.0`, `5.0`, `10.0`, `115.0`, `8.0`, `4.0` |
| 23 | `not_sale` | integer | [`not_sale`](#ods-tenant-goods-master) | (待补充) | 示例: `2` |
| 24 | `out_goods_id` | integer | [`out_goods_id`](#ods-tenant-goods-master) | 外部系统商品 ID对接第三方平台使用如外卖、线上商城等 | 示例: `0` |
| 25 | `pinyin_initial` | string | [`pinyin_initial`](#ods-tenant-goods-master) | 拼音首字母/助记码 | 枚举值: `DFSY,DFSX`, `HSNRM,GSNRM`, `SRC`, `BW235HS`, `SP`, `100 HCTX`, `KAD`, `ALABG` |
| 26 | `point_sale_royalty` | integer | [`point_sale_royalty`](#ods-tenant-goods-master) | 积分销售提成/积分赠送规则相关配置 | 示例: `0` |
| 27 | `remark_name` | string | [`remark_name`](#ods-tenant-goods-master) | 商品备注名/别名,通常用来配置简写或特殊显示名称 | |
| 28 | `sale_channel` | string | [`sale_channel`](#ods-tenant-goods-master) | 销售渠道类型,如“门店堂食/线下零售/线上小程序”等的一种编码 | 示例: `1,2,3` |
| 29 | `supplier_id` | integer | [`supplier_id`](#ods-tenant-goods-master) | 供应商 ID用于关联到供应商档案 | 示例: `0` |
| 30 | `tenant_id` | integer | [`tenant_id`](#ods-tenant-goods-master) | 租户/品牌 ID | 示例: `2790683160709957` |
| 31 | `unit` | string | [`unit`](#ods-tenant-goods-master) | 计量单位 | 枚举值: `瓶`, `桶`, `包`, `个`, `盒`, `份`, `根`, `杯` |
| 32 | `update_time` | string | [`update_time`](#ods-tenant-goods-master) | 商品档案最近一次修改时间 | 出现率 83%;枚举值: `2025-10-29 23:51:38`, `2025-08-09 20:23:23`, `2025-11-10 18:27:31`, `2025-07-24 16:30:27`, `2025-11-10 18:27:45`, `2025-11-10 18:27:54`, `2025-07-23 15:38:28`, `2025-11-10 18:28:01` |
<a id="ods-tenant-goods-master"></a>
#### ODS 表结构 — ods.tenant_goods_master [🔗 API](#api-tenant-goods-master)
共 37 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `id` | bigint | [`id`](#api-tenant-goods-master) | [`dim_tenant_goods.tenant_goods_id`](#dwd-dim-tenant-goods), [`dim_tenant_goods_ex.tenant_goods_id`](#dwd-dim-tenant-goods-ex) | 商品档案主键 ID唯一标识一条商品 |
| 2 | `tenant_id` | bigint | [`tenant_id`](#api-tenant-goods-master) | [`dim_tenant_goods.tenant_id`](#dwd-dim-tenant-goods) | 租户/品牌 ID |
| 3 | `goods_name` | text | [`goods_name`](#api-tenant-goods-master) | [`dim_tenant_goods.goods_name`](#dwd-dim-tenant-goods) | 商品名称(前台展示名称) |
| 4 | `goods_bar_code` | text | [`goods_bar_code`](#api-tenant-goods-master) | [`dim_tenant_goods_ex.goods_bar_code`](#dwd-dim-tenant-goods-ex) | 商品条码EAN 等),目前未维护 |
| 5 | `goods_category_id` | bigint | [`goods_category_id`](#api-tenant-goods-master) | [`dim_tenant_goods.goods_category_id`](#dwd-dim-tenant-goods) | 商品一级分类 ID |
| 6 | `goods_second_category_id` | bigint | [`goods_second_category_id`](#api-tenant-goods-master) | [`dim_tenant_goods.goods_second_category_id`](#dwd-dim-tenant-goods) | 商品二级分类 ID |
| 7 | `categoryname` | text | [`categoryName`](#api-tenant-goods-master) | [`dim_tenant_goods.category_name`](#dwd-dim-tenant-goods) | (待补充) |
| 8 | `unit` | text | [`unit`](#api-tenant-goods-master) | [`dim_tenant_goods.unit`](#dwd-dim-tenant-goods) | 计量单位 |
| 9 | `goods_number` | text | [`goods_number`](#api-tenant-goods-master) | [`dim_tenant_goods.goods_number`](#dwd-dim-tenant-goods) | 商品内部编码(自定义货号/系统货号) |
| 10 | `out_goods_id` | text | [`out_goods_id`](#api-tenant-goods-master) | [`dim_tenant_goods_ex.out_goods_id`](#dwd-dim-tenant-goods-ex) | 外部系统商品 ID对接第三方平台使用如外卖、线上商城等 |
| 11 | `goods_state` | integer | [`goods_state`](#api-tenant-goods-master) | [`dim_tenant_goods.goods_state`](#dwd-dim-tenant-goods) | 商品状态(上架/下架等) |
| 12 | `sale_channel` | integer | [`sale_channel`](#api-tenant-goods-master) | [`dim_tenant_goods_ex.sale_channel`](#dwd-dim-tenant-goods-ex) | 销售渠道类型,如“门店堂食/线下零售/线上小程序”等的一种编码 |
| 13 | `able_discount` | integer | [`able_discount`](#api-tenant-goods-master) | [`dim_tenant_goods_ex.able_discount`](#dwd-dim-tenant-goods-ex) | 是否允许参与折扣/打折 |
| 14 | `able_site_transfer` | integer | [`able_site_transfer`](#api-tenant-goods-master) | [`dim_tenant_goods_ex.able_site_transfer`](#dwd-dim-tenant-goods-ex) | 布尔/开关字段,用于表示权限、可用性或状态开关 |
| 15 | `is_delete` | integer | [`is_delete`](#api-tenant-goods-master) | [`dim_tenant_goods.is_delete`](#dwd-dim-tenant-goods) | 逻辑删除标志 |
| 16 | `is_warehousing` | integer | [`is_warehousing`](#api-tenant-goods-master) | [`dim_tenant_goods_ex.is_warehousing`](#dwd-dim-tenant-goods-ex) | 是否启用库存管理 |
| 17 | `isinsite` | integer | [`isInSite`](#api-tenant-goods-master) | [`dim_tenant_goods_ex.is_in_site`](#dwd-dim-tenant-goods-ex) | (待补充) |
| 18 | `cost_price` | numeric | [`cost_price`](#api-tenant-goods-master) | [`dim_tenant_goods_ex.cost_price`](#dwd-dim-tenant-goods-ex) | 成本价格 |
| 19 | `cost_price_type` | integer | [`cost_price_type`](#api-tenant-goods-master) | [`dim_tenant_goods_ex.cost_price_type`](#dwd-dim-tenant-goods-ex) | 金额字段,用于计费/结算/分摊等金额计算 |
| 20 | `market_price` | numeric | [`market_price`](#api-tenant-goods-master) | [`dim_tenant_goods.market_price`](#dwd-dim-tenant-goods) | 商品标价 / 售价(标准销售单价) |
| 21 | `min_discount_price` | numeric | [`min_discount_price`](#api-tenant-goods-master) | [`dim_tenant_goods_ex.min_discount_price`](#dwd-dim-tenant-goods-ex) | 该商品允许售卖的最低价格(底价) |
| 22 | `common_sale_royalty` | numeric | [`common_sale_royalty`](#api-tenant-goods-master) | [`dim_tenant_goods_ex.common_sale_royalty`](#dwd-dim-tenant-goods-ex) | 普通销售提成比例或提成金额的配置字段 |
| 23 | `point_sale_royalty` | numeric | [`point_sale_royalty`](#api-tenant-goods-master) | [`dim_tenant_goods_ex.point_sale_royalty`](#dwd-dim-tenant-goods-ex) | 积分销售提成/积分赠送规则相关配置 |
| 24 | `pinyin_initial` | text | [`pinyin_initial`](#api-tenant-goods-master) | [`dim_tenant_goods_ex.pinyin_initial`](#dwd-dim-tenant-goods-ex) | 拼音首字母/助记码 |
| 25 | `commoditycode` | text | [`commodityCode[]`](#api-tenant-goods-master) | — | (待补充) |
| 26 | `commodity_code` | text | [`commodity_code`](#api-tenant-goods-master) | [`dim_tenant_goods_ex.commodity_code`](#dwd-dim-tenant-goods-ex), [`dim_tenant_goods_ex.commodity_code_list`](#dwd-dim-tenant-goods-ex) | 商品编码(通常为对外商品编码或条码) |
| 27 | `goods_cover` | text | [`goods_cover`](#api-tenant-goods-master) | [`dim_tenant_goods_ex.goods_cover`](#dwd-dim-tenant-goods-ex) | 商品封面图片 URL 地址 |
| 28 | `supplier_id` | bigint | [`supplier_id`](#api-tenant-goods-master) | [`dim_tenant_goods.supplier_id`](#dwd-dim-tenant-goods) | 供应商 ID用于关联到供应商档案 |
| 29 | `remark_name` | text | [`remark_name`](#api-tenant-goods-master) | [`dim_tenant_goods_ex.remark_name`](#dwd-dim-tenant-goods-ex) | 商品备注名/别名,通常用来配置简写或特殊显示名称 |
| 30 | `create_time` | timestamp without time zone | [`create_time`](#api-tenant-goods-master) | [`dim_tenant_goods.create_time`](#dwd-dim-tenant-goods) | 商品档案创建时间 |
| 31 | `update_time` | timestamp without time zone | [`update_time`](#api-tenant-goods-master) | [`dim_tenant_goods.update_time`](#dwd-dim-tenant-goods) | 商品档案最近一次修改时间 |
| 32 | `not_sale` | integer | [`not_sale`](#api-tenant-goods-master) | [`dim_tenant_goods.not_sale`](#dwd-dim-tenant-goods) | (待补充) |
| 33 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
| 34 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 35 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 36 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 37 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |
<a id="dwd-dim-tenant-goods"></a>
#### DWD 表结构 — dwd.dim_tenant_goods [🔗 ODS](#ods-tenant-goods-master)
共 19 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `tenant_goods_id` | bigint | [`id`](#ods-tenant-goods-master) | 直接 | 租户商品 IDSKU |
| 2 | `tenant_id` | bigint | [`tenant_id`](#ods-tenant-goods-master) | 直接 | 租户 ID |
| 3 | `supplier_id` | bigint | [`supplier_id`](#ods-tenant-goods-master) | 直接 | 供应商 ID当前数据全为 0 |
| 4 | `category_name` | character varying | [`categoryname`](#ods-tenant-goods-master) | 直接 | 分类名称(二级分类)。**样本值**: "零食", "饮料", "香烟"等 |
| 5 | `goods_category_id` | bigint | [`goods_category_id`](#ods-tenant-goods-master) | 直接 | 一级分类 ID |
| 6 | `goods_second_category_id` | bigint | [`goods_second_category_id`](#ods-tenant-goods-master) | 直接 | 二级分类 ID |
| 7 | `goods_name` | character varying | [`goods_name`](#ods-tenant-goods-master) | 直接 | 商品名称。**样本值**: "海之言", "西梅多多饮品", "美汁源果粒橙", "三诺橙汁"等 |
| 8 | `goods_number` | character varying | [`goods_number`](#ods-tenant-goods-master) | 直接 | 商品编号(序号) |
| 9 | `unit` | character varying | [`unit`](#ods-tenant-goods-master) | 直接 | 商品单位。**枚举值**: "包", "瓶", "个", "份"等 |
| 10 | `market_price` | numeric | [`market_price`](#ods-tenant-goods-master) | 直接 | 市场价/吊牌价(元) |
| 11 | `goods_state` | integer | [`goods_state`](#ods-tenant-goods-master) | 直接 | 商品状态。**枚举值**: 1=上架, 2=下架 |
| 12 | `create_time` | timestamp with time zone | [`create_time`](#ods-tenant-goods-master) | 直接 | 创建时间 |
| 13 | `update_time` | timestamp with time zone | [`update_time`](#ods-tenant-goods-master) | 直接 | 更新时间 |
| 14 | `is_delete` | integer | [`is_delete`](#ods-tenant-goods-master) | 直接 | 删除标记。**枚举值**: 0=未删除 |
| 15 | `not_sale` | integer | [`not_sale`](#ods-tenant-goods-master) | 直接 | 是否停售 |
| 16 | `scd2_start_time` | timestamp with time zone | — | SCD2 | SCD2 版本生效时间 |
| 17 | `scd2_end_time` | timestamp with time zone | — | SCD2 | SCD2 版本失效时间 |
| 18 | `scd2_is_current` | integer | — | SCD2 | 当前版本标记 |
| 19 | `scd2_version` | integer | — | SCD2 | 版本号 |
<a id="dwd-dim-tenant-goods-ex"></a>
#### DWD 表结构 — dwd.dim_tenant_goods_ex [🔗 ODS](#ods-tenant-goods-master)
共 22 列
| # | DWD 列名 | 类型 | ← ODS 来源 | 转换 | 业务描述 |
|---|---------|------|----------|------|---------|
| 1 | `tenant_goods_id` | bigint | [`id`](#ods-tenant-goods-master) | 直接 | 字段重命名 |
| 2 | `remark_name` | character varying | [`remark_name`](#ods-tenant-goods-master) | 直接 | 名称字段,用于展示与辅助识别 |
| 3 | `pinyin_initial` | character varying | [`pinyin_initial`](#ods-tenant-goods-master) | 直接 | 同名直传 |
| 4 | `goods_cover` | character varying | [`goods_cover`](#ods-tenant-goods-master) | 直接 | 同名直传 |
| 5 | `goods_bar_code` | character varying | [`goods_bar_code`](#ods-tenant-goods-master) | 直接 | 维度字段,用于补充维度属性 |
| 6 | `commodity_code` | character varying | [`commodity_code`](#ods-tenant-goods-master) | 直接 | 同名直传 |
| 7 | `commodity_code_list` | character varying | [`commodity_code`](#ods-tenant-goods-master) | 直接 | 字段重命名 |
| 8 | `min_discount_price` | numeric | [`min_discount_price`](#ods-tenant-goods-master) | 直接 | 同名直传 |
| 9 | `cost_price` | numeric | [`cost_price`](#ods-tenant-goods-master) | 直接 | 同名直传 |
| 10 | `cost_price_type` | integer | [`cost_price_type`](#ods-tenant-goods-master) | 直接 | 同名直传 |
| 11 | `able_discount` | integer | [`able_discount`](#ods-tenant-goods-master) | 直接 | 同名直传 |
| 12 | `sale_channel` | integer | [`sale_channel`](#ods-tenant-goods-master) | 直接 | 同名直传 |
| 13 | `is_warehousing` | integer | [`is_warehousing`](#ods-tenant-goods-master) | 直接 | 同名直传 |
| 14 | `is_in_site` | boolean | [`isinsite`](#ods-tenant-goods-master) | → boolean | 字段重命名 |
| 15 | `able_site_transfer` | integer | [`able_site_transfer`](#ods-tenant-goods-master) | 直接 | 同名直传 |
| 16 | `common_sale_royalty` | integer | [`common_sale_royalty`](#ods-tenant-goods-master) | 直接 | 同名直传 |
| 17 | `point_sale_royalty` | integer | [`point_sale_royalty`](#ods-tenant-goods-master) | 直接 | 同名直传 |
| 18 | `out_goods_id` | bigint | [`out_goods_id`](#ods-tenant-goods-master) | 直接 | 同名直传 |
| 19 | `scd2_start_time` | timestamp with time zone | — | SCD2 | SCD2 元数据 |
| 20 | `scd2_end_time` | timestamp with time zone | — | SCD2 | SCD2 元数据 |
| 21 | `scd2_is_current` | integer | — | SCD2 | SCD2 元数据 |
| 22 | `scd2_version` | integer | — | SCD2 | SCD2 元数据 |
### 3.23 settlement_ticket_details结账小票详情按 orderSettleId 逐条获取,不走常规分页))
- 任务代码:`ODS_SETTLEMENT_TICKET`
- 采样记录数0
- API JSON 字段数0
- ODS 列数43
- DWD 目标表:—(仅 ODS 落地)
<a id="api-settlement-ticket-details"></a>
#### API 源字段 — settlement_ticket_details [🔗 ODS](#ods-settlement-ticket-details)
无字段
| # | JSON 字段 | 类型 | → ODS 列 | 业务描述 | 示例值与说明 |
|---|----------|------|---------|---------|------------|
<a id="ods-settlement-ticket-details"></a>
#### ODS 表结构 — ods.settlement_ticket_details [🔗 API](#api-settlement-ticket-details)
共 43 列
| # | ODS 列名 | 类型 | ← JSON 源 | → DWD 目标 | 业务描述 |
|---|---------|------|----------|-----------|---------|
| 1 | `ordersettleid` | bigint | — | — | (待补充) |
| 2 | `actualpayment` | numeric | — | — | (待补充) |
| 3 | `adjustamount` | numeric | — | — | (待补充) |
| 4 | `assistantmanualdiscount` | numeric | — | — | (待补充) |
| 5 | `balanceamount` | numeric | — | — | (待补充) |
| 6 | `cashiername` | text | — | — | (待补充) |
| 7 | `consumemoney` | numeric | — | — | (待补充) |
| 8 | `couponamount` | numeric | — | — | (待补充) |
| 9 | `deliveryaddress` | text | — | — | (待补充) |
| 10 | `deliveryfee` | numeric | — | — | (待补充) |
| 11 | `ledgeramount` | numeric | — | — | (待补充) |
| 12 | `memberdeductamount` | numeric | — | — | (待补充) |
| 13 | `memberofferamount` | numeric | — | — | (待补充) |
| 14 | `onlinereturnamount` | numeric | — | — | (待补充) |
| 15 | `orderremark` | text | — | — | (待补充) |
| 16 | `ordersettlenumber` | bigint | — | — | (待补充) |
| 17 | `paymemberbalance` | numeric | — | — | (待补充) |
| 18 | `paytime` | timestamp without time zone | — | — | (待补充) |
| 19 | `paymentmethod` | integer | — | — | (待补充) |
| 20 | `pointdiscountcost` | numeric | — | — | (待补充) |
| 21 | `pointdiscountprice` | numeric | — | — | (待补充) |
| 22 | `prepaymoney` | numeric | — | — | (待补充) |
| 23 | `refundamount` | numeric | — | — | (待补充) |
| 24 | `returngoodsamount` | numeric | — | — | (待补充) |
| 25 | `rewardname` | text | — | — | (待补充) |
| 26 | `settletype` | text | — | — | (待补充) |
| 27 | `siteaddress` | text | — | — | (待补充) |
| 28 | `sitebusinesstel` | text | — | — | (待补充) |
| 29 | `siteid` | bigint | — | — | (待补充) |
| 30 | `sitename` | text | — | — | (待补充) |
| 31 | `tenantid` | bigint | — | — | (待补充) |
| 32 | `tenantname` | text | — | — | (待补充) |
| 33 | `ticketcustomcontent` | text | — | — | (待补充) |
| 34 | `ticketremark` | text | — | — | (待补充) |
| 35 | `vouchermoney` | numeric | — | — | (待补充) |
| 36 | `memberprofile` | jsonb | — | — | (待补充) |
| 37 | `orderitem` | jsonb | — | — | (待补充) |
| 38 | `tenantmembercardlogs` | jsonb | — | — | (待补充) |
| 39 | `payload` | jsonb | — | — | ETL 元数据:完整原始 JSON 记录快照,用于回溯与二次解析 |
| 40 | `content_hash` | text | — | — | ETL 元数据:对业务字段计算 SHA256用于变更检测与去重 |
| 41 | `source_file` | text | — | — | ETL 元数据:原始导出文件名,用于数据追溯 |
| 42 | `source_endpoint` | text | — | — | ETL 元数据:采集来源(接口/文件路径),用于数据追溯 |
| 43 | `fetched_at` | timestamp with time zone | — | — | ETL 元数据:采集/入库时间戳,用于口径对齐与增量处理 |