# 台桌主数据（GetSiteTables） → site_tables_master 字段映射

> 生成时间：2026-02-14

## 端点信息

| 属性 | 值 |
|------|-----|
| 接口路径 | `Table/GetSiteTables` |
| 请求方法 | POST |
| ODS 对应表 | `ods.site_tables_master` |
| JSON 数据路径 | `data.siteTables` |

## 字段映射

| JSON 字段 | ODS 列名 | 类型转换 | 说明 |
|-----------|----------|----------|------|
| id | id | int→BIGINT（`parse_int`） | 台桌主键 ID |
| site_id | site_id | int→BIGINT（`parse_int`） | 门店 ID |
| siteName | siteName | string→TEXT（原样） | 门店名称快照，冗余字段，配合 site_id 使用 |
| "appletQrCodeUrl" | "appletQrCodeUrl" | string→TEXT（原样） | 小程序二维码 URL（新增字段） |
| areaName | areaName | string→TEXT（原样） | 区域名称，用于前台展示和区域维度管理 |
| audit_status | audit_status | int→INT（`parse_int`） | 当前值：全部为 2 |
| charge_free | charge_free | int→INT（`parse_int`） | 当前值：全部为 0 |
| create_time | create_time | string→TIMESTAMP（`parse_timestamp`） | 台桌配置的创建时间或最近一次创建/复制时间 |
| delay_lights_time | delay_lights_time | int→INT（`parse_int`） | 台灯熄灭延迟时间（单位多半是秒或分钟），用于结账后延时关灯 |
| is_online_reservation | is_online_reservation | int→INT（`parse_int`） | 布尔/开关字段，用于表示权限、可用性或状态开关 |
| is_rest_area | is_rest_area | int→INT（`parse_int`） | 当前值：全部为 0 |
| light_status | light_status | int→INT（`parse_int`） | 来自 JSON 导出的原始字段，用于保留业务取值 |
| only_allow_groupon | only_allow_groupon | int→INT（`parse_int`） | 小程序二维码 URL |
| order_delay_time | order_delay_time | int→INT（`parse_int`） | 订单层面允许的“自动延时时长”（例如到点后自动延长多少时间继续计费） |
| self_table | self_table | int→INT（`parse_int`） | 当前值：全部为 1 |
| show_status | show_status | int→INT（`parse_int`） | 来自 JSON 导出的原始字段，用于保留业务取值 |
| site_table_area_id | site_table_area_id | int→BIGINT（`parse_int`） | 门店维度的“台桌区域 ID” |
| tableStatusName | tableStatusName | string→TEXT（原样） | table_status 的中文名称，仅为展示用途 |
| table_cloth_use_Cycle | table_cloth_use_Cycle | int→INT（`parse_int`） | 台呢使用周期阈值，例如达到某个秒数后提醒更换 |
| table_cloth_use_time | table_cloth_use_time | string→TIMESTAMP（`parse_timestamp`） | 时间字段，用于记录业务时间点/发生时间 |
| table_name | table_name | string→TEXT（原样） | 台号/台名称，用于前台操作界面展示，也出现在小票和各种流水中的 ledger_name 或 tableName 字段 |
| table_price | table_price | float→NUMERIC(18,2)（`parse_decimal`） | 设计上应为“台的基础单价”字段（例如按小时或按局单价） |
| table_status | table_status | int→INT（`parse_int`） | 台当前运行状态，真实反映某一时刻台的占用/暂停情况 |
| temporary_light_second | temporary_light_second | int→INT（`parse_int`） | 临时点灯时长（秒），例如手动临时开灯一段时间 |
| virtual_table | virtual_table | int→INT（`parse_int`） | 当前值：全部为 0 |
| order_id | order_id | int→BIGINT（`parse_int`） | 关联订单 ID（新增字段） |

## ETL 补充字段

| ODS 列名 | 生成逻辑 |
|-----------|----------|
| content_hash | 对业务字段（排除 ETL 元数据列）计算 SHA-256，用于变更检测与去重 |
| source_file | 固定值：`site_tables_master.json`，标识原始导出文件 |
| source_endpoint | API 端点路径，如 `Table/GetSiteTables` |
| fetched_at | ETL 入库时间戳（`TIMESTAMPTZ DEFAULT now()`） |
| payload | 完整原始 JSON 记录快照（`JSONB NOT NULL`），用于回溯与二次解析 |

## 类型转换规则

- **时间戳**：通过 `TypeParser.parse_timestamp()` 转换，支持 ISO 字符串和 Unix 毫秒时间戳，自动处理时区
- **金额**：通过 `TypeParser.parse_decimal(value, scale=2)` 转换，`ROUND_HALF_UP` 四舍五入
- **整数**：通过 `TypeParser.parse_int()` 转换，`None` 保持为 `NULL`
- **字符串**：原样保留，`None` / 空字符串均存为 `NULL` 或空文本
- **布尔值**：API 返回 `true/false`，ODS 存为 `BOOLEAN` 或 `INT`（0/1）
- **JSONB**：`siteProfile`、`payload` 等复合对象直接以 `JSONB` 类型存储
