# group_buy_package_details 团购套餐详情

> 生成时间：2026-03-05

## 表信息

| 属性 | 值 |
|------|-----|
| Schema | ods |
| 表名 | group_buy_package_details |
| 主键 | coupon_id |
| 数据来源 | `QueryPackageCouponInfo` 详情接口（二级拉取） |
| DDL 路径 | `db/etl_feiqiu/ods/group_buy_package_details.sql` |
| 说明 | 团购套餐详情 ODS 层，存储每个 couponId 的详情原始数据 |

## 数据获取方式

本表数据通过 `ODS_GROUP_PACKAGE` 任务的 **detail_endpoint 二级详情拉取** 子流程获取：
1. 主流程先从 `QueryPackageCouponList` 拉取团购列表写入 `ods.group_buy_packages`
2. 子流程遍历列表中每个 `id`，串行调用 `QueryPackageCouponInfo` 获取详情
3. 详情数据写入本表，采用全量快照模式（`SnapshotMode.FULL_TABLE`），UPSERT on `coupon_id`

## 字段说明

| 序号 | 字段名 | 类型 | 可空 | 说明 |
|------|--------|------|------|------|
| 1 | coupon_id | BIGINT | NO（PK） | 团购套餐 ID（= groupPurchasePackage.id） |
| 2 | package_name | TEXT | YES | 团购套餐名称 |
| 3 | duration | INTEGER | YES | 台费计时时长（秒） |
| 4 | start_time | TIMESTAMPTZ | YES | 可用日期开始 |
| 5 | end_time | TIMESTAMPTZ | YES | 可用日期结束 |
| 6 | add_start_clock | TEXT | YES | 可用时段开始（如 "00:00:00"） |
| 7 | add_end_clock | TEXT | YES | 可用时段结束（如 "1.00:00:00"） |
| 8 | is_enabled | INTEGER | YES | 是否启用（1=启用, 0=禁用） |
| 9 | is_delete | INTEGER | YES | 是否已删除（1=已删除, 0=正常） |
| 10 | site_id | BIGINT | YES | 店铺 ID |
| 11 | tenant_id | BIGINT | YES | 租户 ID |
| 12 | create_time | TIMESTAMPTZ | YES | 创建时间 |
| 13 | creator_name | TEXT | YES | 创建人 |
| 14 | table_area_ids | JSONB | YES | 可用台区 ID 列表（来自 groupPurchasePackage.tableAreaId） |
| 15 | table_area_names | JSONB | YES | 可用台区名称列表（来自 groupPurchasePackage.tableAreaNameList） |
| 16 | assistant_services | JSONB | YES | 助教服务关联数组（来自 packageCouponAssistants） |
| 17 | groupon_site_infos | JSONB | YES | 关联门店信息数组（来自 grouponSiteInfos） |
| 18 | package_services | JSONB | YES | 套餐服务数组（来自 packagePackageService，待调研） |
| 19 | coupon_details_list | JSONB | YES | 券明细数组（来自 packageCouponDetailsList，待调研） |
| 20 | content_hash | TEXT | YES | 业务字段内容哈希，用于变更检测 |
| 21 | payload | JSONB | YES | 详情接口完整原始 JSON 响应 |
| 22 | fetched_at | TIMESTAMPTZ | YES | ETL 拉取时间戳 |

## 与列表表的关系

```
ods.group_buy_packages (列表)
  └── ods.group_buy_package_details (详情)
      关联字段：group_buy_packages.id = group_buy_package_details.coupon_id
      关系：1:1（每个列表记录对应一条详情）
```

## 下游消费

DWD 层 `dwd.dim_groupbuy_package_ex` 在加载时通过 LEFT JOIN 本表，将 `table_area_ids`、`table_area_names`、`assistant_services`、`groupon_site_infos` 四个 JSONB 字段合并到扩展表。

## 使用说明

```sql
-- 查询最新入库的详情记录
SELECT coupon_id, package_name, table_area_names, assistant_services
FROM ods.group_buy_package_details
ORDER BY fetched_at DESC
LIMIT 10;
```

```sql
-- 关联列表表查看完整信息
SELECT p.id, p.package_name, p.selling_price,
       d.table_area_names, d.assistant_services, d.groupon_site_infos
FROM ods.group_buy_packages p
LEFT JOIN ods.group_buy_package_details d ON p.id = d.coupon_id
WHERE p.is_delete IS DISTINCT FROM 1;
```

## 可回溯性

| 项目 | 说明 |
|------|------|
| 可回溯 | ✅ 完全可回溯（保留 payload 原始 JSON） |
| 数据来源 | `PackageCoupon/QueryPackageCouponInfo` API |
