# 结账小票明细（GetOrderSettleTicketNew） → settlement_ticket_details 字段映射

> 生成时间：2026-02-14

## 端点信息

| 属性 | 值 |
|------|-----|
| 接口路径 | `Order/GetOrderSettleTicketNew` |
| 请求方法 | POST |
| ODS 对应表 | `ods.settlement_ticket_details` |
| JSON 数据路径 | `$（平铺结构）` |

## 字段映射

| JSON 字段 | ODS 列名 | 类型转换 | 说明 |
|-----------|----------|----------|------|
| orderSettleId | orderSettleId | int→BIGINT（`parse_int`） | 结算单 ID（和顶层字段相同，再次冗余） |
| actualPayment | actualPayment | float→NUMERIC(18,2)（`parse_decimal`） | 本单实际支付金额总和（顾客本次实际付出：现金 + 线上 + 会员余额等） |
| adjustAmount | adjustAmount | float→NUMERIC(18,2)（`parse_decimal`） | 人工调价/整单调整金额（例如手工改价、折扣调整），是所有类型的手工调整合计 |
| assistantManualDiscount | assistantManualDiscount | float→NUMERIC(18,2)（`parse_decimal`） | 针对“助教项目”的人工减免金额汇总（整单维度） |
| balanceAmount | balanceAmount | float→NUMERIC(18,2)（`parse_decimal`） | 本单通过“会员余额/储值卡”支付的金额（从余额中扣除的总额） |
| cashierName | cashierName | string→TEXT（原样） | 本单结算操作员名称（带角色前缀文字） |
| consumeMoney | consumeMoney | float→NUMERIC(18,2)（`parse_decimal`） | 本单“消费金额总计”（原价层面），即台费 + 商品 + 助教 + 服务等消费项目的金额总和（未扣除各类优惠） |
| couponAmount | couponAmount | float→NUMERIC(18,2)（`parse_decimal`） | 本单由优惠券抵扣的金额汇总 |
| deliveryAddress | deliveryAddress | string→TEXT（原样） | 配送地址（若存在外送业务时使用） |
| deliveryFee | deliveryFee | float→NUMERIC(18,2)（`parse_decimal`） | 配送费金额（如果支持外送业务） |
| ledgerAmount | ledgerAmount | float→NUMERIC(18,2)（`parse_decimal`） | 商品小计金额（通常 = 单价 × 数量，未考虑其他折扣） |
| memberDeductAmount | memberDeductAmount | float→NUMERIC(18,2)（`parse_decimal`） | 会员抵扣的某种数量或金额（例如积分抵现金额、次卡次数抵扣等），当前数据未启用 |
| memberOfferAmount | memberOfferAmount | float→NUMERIC(18,2)（`parse_decimal`） | 由“会员权益/折扣”产生的优惠金额总计（整单维度） |
| onlineReturnAmount | onlineReturnAmount | float→NUMERIC(18,2)（`parse_decimal`） | 本单通过线上支付渠道退回的金额（如微信/支付宝退款） |
| orderRemark | orderRemark | string→TEXT（原样） | 订单备注，由收银员录入，用于记录与本单相关的特殊说明 |
| orderSettleNumber | orderSettleNumber | int→BIGINT（`parse_int`） | 结算单编号（与 ID 独立的一套编号体系，如流水号） |
| payMemberBalance | payMemberBalance | float→NUMERIC(18,2)（`parse_decimal`） | 使用会员余额支付的金额，用于区分与 balanceAmount 的不同维度（如“本次支付使用余额部分”与“余额本身变化”等），当前未实际使用 |
| payTime | payTime | string→TIMESTAMP（`parse_timestamp`） | 本单最终支付成功时间 |
| paymentMethod | paymentMethod | int→INT（`parse_int`） | 结算主支付方式编码（汇总视角） |
| pointDiscountCost | pointDiscountCost | float→NUMERIC(18,2)（`parse_decimal`） | 积分抵扣对应的成本金额（成本侧） |
| pointDiscountPrice | pointDiscountPrice | float→NUMERIC(18,2)（`parse_decimal`） | 积分抵扣对应的金额（售价侧） |
| prepayMoney | prepayMoney | float→NUMERIC(18,2)（`parse_decimal`） | 预付金/定金在本单中使用的金额 |
| refundAmount | refundAmount | float→NUMERIC(18,2)（`parse_decimal`） | 本单涉及的退款金额（汇总） |
| returnGoodsAmount | returnGoodsAmount | float→NUMERIC(18,2)（`parse_decimal`） | 本单涉及的退货金额汇总 |
| rewardName | rewardName | string→TEXT（原样） | 用于标识本单适用的激励方案名称，可能用于内部绩效或活动名称展示 |
| settleType | settleType | string→TEXT（原样） | 结算类型字符串标识 |
| siteAddress | siteAddress | string→TEXT（原样） | 门店地址（详细地址） |
| siteBusinessTel | siteBusinessTel | string→TEXT（原样） | 门店电话 |
| siteId | siteId | int→BIGINT（`parse_int`） | 门店 ID |
| siteName | siteName | string→TEXT（原样） | 门店名称，如“朗朗桌球” |
| tenantId | tenantId | int→BIGINT（`parse_int`） | 租户 / 商户 ID（品牌维度） |
| tenantName | tenantName | string→TEXT（原样） | 租户名称，如“朗朗桌球” |
| ticketCustomContent | ticketCustomContent | string→TEXT（原样） | 自定义小票内容，如商家自定义宣传语、条款等 |
| ticketRemark | ticketRemark | string→TEXT（原样） | 小票备注内容，可用于打印在小票底部或顶部（例如活动说明、特别提示） |
| voucherMoney | voucherMoney | float→NUMERIC(18,2)（`parse_decimal`） | 代金券类金额字段（可能用于某类“代金券余额”或“券面值”记录） |
| memberProfile | memberProfile | object→JSONB（原样存储） | 不是会员卡主键，而是本次结账时的会员信息快照 |
| orderItem | orderItem | object→JSONB（原样存储） | 本次结算对应的“订单明细列表”，这部分是连接“台费流水 / 商品出库 / 券使用”等多个子领域的关键结构 |
| tenantMemberCardLogs | tenantMemberCardLogs | object→JSONB（原样存储） | 来自 JSON 导出的原始字段，用于保留业务取值 |

## ETL 补充字段

| ODS 列名 | 生成逻辑 |
|-----------|----------|
| content_hash | 对业务字段（排除 ETL 元数据列）计算 SHA-256，用于变更检测与去重 |
| source_file | 固定值：`settlement_ticket_details.json`，标识原始导出文件 |
| source_endpoint | API 端点路径，如 `Order/GetOrderSettleTicketNew` |
| 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` 类型存储
