Files
feiqiu-ETL/etl_billiards/docs/dws_tables_dictionary.md
2026-02-04 21:39:01 +08:00

586 lines
24 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.
# DWS 数据字典
## 概述
DWSData Warehouse Service层是数据仓库的汇总层基于DWD明细层数据构建为上层应用和报表提供预聚合的数据服务。
### 表清单
| 分类 | 表名 | 说明 | 更新频率 |
|------|------|------|----------|
| **配置表** | cfg_performance_tier | 绩效档位配置 | 手动维护 |
| | cfg_assistant_level_price | 助教等级定价 | 手动维护 |
| | cfg_bonus_rules | 奖金规则配置 | 手动维护 |
| | cfg_area_category | 台区分类映射 | 手动维护 |
| | cfg_skill_type | 技能课程类型映射 | 手动维护 |
| **助教维度** | dws_assistant_daily_detail | 助教日度业绩明细 | 每小时 |
| | dws_assistant_monthly_summary | 助教月度业绩汇总 | 每日 |
| | dws_assistant_customer_stats | 助教服务客户统计 | 每日 |
| | dws_assistant_salary_calc | 助教工资计算详情 | 月初 |
| | dws_assistant_recharge_commission | 助教充值提成 | Excel导入 |
| **客户维度** | dws_member_consumption_summary | 会员消费汇总 | 每日 |
| | dws_member_visit_detail | 会员来店明细 | 每日 |
| **财务维度** | dws_finance_daily_summary | 财务日度汇总 | 每小时 |
| | dws_finance_income_structure | 收入结构分析 | 每日 |
| | dws_finance_discount_detail | 优惠明细 | 每日 |
| | dws_finance_recharge_summary | 充值统计 | 每日 |
| | dws_finance_expense_summary | 支出结构 | Excel导入 |
| | dws_assistant_finance_analysis | 助教收支分析 | 每日 |
| | dws_platform_settlement | 平台回款/服务费 | Excel导入 |
| **订单汇总** | dws_order_summary | 订单汇总 | 每日 |
---
## 一、配置表
### 1.1 cfg_performance_tier - 绩效档位配置
| 字段 | 类型 | 说明 |
|------|------|------|
| tier_id | SERIAL | 档位ID主键 |
| tier_code | VARCHAR(20) | 档位代码T0-T5, NEW |
| tier_name | VARCHAR(50) | 档位名称 |
| tier_level | INTEGER | 档位等级(-1=新入职, 0-5=正常档位) |
| min_hours | NUMERIC(10,2) | 最低业绩小时数阈值(>= |
| max_hours | NUMERIC(10,2) | 最高业绩小时数阈值(<NULL=无上限 |
| base_deduction | NUMERIC(10,2) | 专业课抽成(元/小时),球房从基础课扣除 |
| bonus_deduction_ratio | NUMERIC(5,4) | 打赏课抽成比例0-1球房从附加课扣除 |
| vacation_days | INTEGER | 次月可休假天数 |
| vacation_unlimited | BOOLEAN | 休假自由标记5档为TRUE |
| is_new_hire_tier | BOOLEAN | 是否为新入职专用档位 |
| effective_from | DATE | 生效起始日期 |
| effective_to | DATE | 生效截止日期 |
**档位配置来自DWS数据库处理需求.md**
| tier_code | tier_name | 业绩阈值 | 专业课抽成 | 打赏课抽成 | 休假 |
|-----------|-----------|----------|-----------|-----------|------|
| T0 | 0档-淘汰压力 | H < 100 | 28元/时 | 50% | 3天 |
| T1 | 1档-及格档 | 100 ≤ H < 130 | 18元/时 | 40% | 4天 |
| T2 | 2档-良好档 | 130 ≤ H < 160 | 15元/时 | 38% | 4天 |
| T3 | 3档-优秀档 | 160 ≤ H < 190 | 13元/时 | 35% | 5天 |
| T4 | 4档-卓越加速档 | 190 ≤ H < 220 | 10元/时 | 33% | 6天 |
| T5 | 5档-冠军加速档 | H ≥ 220 | 8元/时 | 30% | 休假自由 |
| NEW | 新入职档位 | - | 18元/时 | 40% | 4天 |
**业务规则:**
- 6档绩效T0-T5根据有效业绩小时数基础课+附加课)匹配
- 新入职档位月1日0点后入职者首月使用NEW档位按1档抽成标准
- 支持按时间生效,历史月份使用历史规则
### 1.2 cfg_assistant_level_price - 助教等级定价
| 字段 | 类型 | 说明 |
|------|------|------|
| price_id | SERIAL | 定价ID主键 |
| level_code | INTEGER | 等级代码8/10/20/30/40 |
| level_name | VARCHAR(20) | 等级名称 |
| base_course_price | NUMERIC(10,2) | 基础课客户支付价格(元/小时) |
| bonus_course_price | NUMERIC(10,2) | 附加课客户支付价格固定190元 |
| effective_from | DATE | 生效起始日期 |
| effective_to | DATE | 生效截止日期 |
**等级定价(客户支付价格):**
| level_code | level_name | 基础课价格 | 附加课价格 |
|------------|------------|-----------|-----------|
| 8 | 助教管理 | 98元/时 | 190元/时 |
| 10 | 初级 | 98元/时 | 190元/时 |
| 20 | 中级 | 108元/时 | 190元/时 |
| 30 | 高级 | 118元/时 | 190元/时 |
| 40 | 星级 | 138元/时 | 190元/时 |
**注意:** 此价格为客户支付价格,助教实际收入需减去档位抽成
### 1.3 cfg_bonus_rules - 奖金规则配置
| 字段 | 类型 | 说明 |
|------|------|------|
| rule_id | SERIAL | 规则ID主键 |
| rule_type | VARCHAR(20) | 规则类型SPRINT/TOP_RANK |
| rule_code | VARCHAR(30) | 规则代码 |
| rule_name | VARCHAR(50) | 规则名称 |
| threshold_hours | NUMERIC(10,2) | 小时数阈值(冲刺奖金) |
| rank_position | INTEGER | 排名位置Top奖金 |
| bonus_amount | NUMERIC(12,2) | 奖金金额(元) |
| is_cumulative | BOOLEAN | 是否可累计 |
| priority | INTEGER | 优先级 |
| effective_from | DATE | 生效起始日期 |
| effective_to | DATE | 生效截止日期 |
**业务规则:**
- 冲刺奖金H>=190得300元H>=220得800元不累计取最高档
- Top3奖金1st=1000元2nd=600元3rd=400元并列都算
### 1.4 cfg_area_category - 台区分类映射
| 字段 | 类型 | 说明 |
|------|------|------|
| category_id | SERIAL | 分类ID主键 |
| source_area_name | VARCHAR(100) | 源区域名称来自dim_table.site_table_area_name |
| category_code | VARCHAR(20) | 分类代码 |
| category_name | VARCHAR(50) | 分类名称 |
| match_type | VARCHAR(10) | 匹配类型exact/like/default |
| match_priority | INTEGER | 匹配优先级(数字越小优先级越高) |
| is_active | BOOLEAN | 是否启用 |
**分类代码基于BD_manual_dim_table.md实际数据**
| category_code | category_name | 匹配规则 |
|---------------|---------------|----------|
| BILLIARD | 普通台球区 | A区, B区, C区 |
| BILLIARD_VIP | VIP台球包厢 | VIP包厢 |
| SNOOKER | 斯诺克区 | 斯诺克区 |
| MAHJONG | 麻将房 | 麻将房 |
| KTV | KTV包间 | K包 |
| SPECIAL | 补时长专用 | 补时长 |
| OTHER | 其他区域 | 默认匹配 |
### 1.5 cfg_skill_type - 技能课程类型映射
| 字段 | 类型 | 说明 |
|------|------|------|
| skill_type_id | SERIAL | 映射ID主键 |
| skill_id | BIGINT | 技能ID |
| skill_name | VARCHAR(50) | 技能名称 |
| course_type_code | VARCHAR(10) | 课程类型代码 |
| course_type_name | VARCHAR(20) | 课程类型名称 |
| is_active | BOOLEAN | 是否启用 |
**课程类型:**
- BASE = 基础课/陪打
- BONUS = 附加课/超休
---
## 二、助教维度表
### 2.1 dws_assistant_daily_detail - 助教日度业绩明细
**粒度:** 助教 + 日期
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGSERIAL | 主键 |
| site_id | BIGINT | 门店ID |
| tenant_id | BIGINT | 租户ID |
| assistant_id | BIGINT | 助教ID |
| assistant_nickname | VARCHAR(50) | 助教花名 |
| stat_date | DATE | 统计日期 |
| assistant_level_code | INTEGER | 助教等级代码SCD2 as-of |
| assistant_level_name | VARCHAR(20) | 助教等级名称 |
| total_service_count | INTEGER | 总服务次数 |
| base_service_count | INTEGER | 基础课服务次数 |
| bonus_service_count | INTEGER | 附加课服务次数 |
| total_seconds | INTEGER | 总计费时长(秒) |
| base_seconds | INTEGER | 基础课计费时长 |
| bonus_seconds | INTEGER | 附加课计费时长 |
| total_hours | NUMERIC(10,2) | 总计费小时数 |
| base_hours | NUMERIC(10,2) | 基础课小时数 |
| bonus_hours | NUMERIC(10,2) | 附加课小时数 |
| total_ledger_amount | NUMERIC(12,2) | 总计费金额 |
| base_ledger_amount | NUMERIC(12,2) | 基础课计费金额 |
| bonus_ledger_amount | NUMERIC(12,2) | 附加课计费金额 |
| unique_customers | INTEGER | 服务客户数(去重) |
| unique_tables | INTEGER | 服务台桌数(去重) |
| trashed_seconds | INTEGER | 被废除的服务时长 |
| trashed_count | INTEGER | 被废除的服务次数 |
**数据来源:** dwd_assistant_service_log + dwd_assistant_trash_event
### 2.2 dws_assistant_monthly_summary - 助教月度业绩汇总
**粒度:** 助教 + 月份
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGSERIAL | 主键 |
| site_id | BIGINT | 门店ID |
| assistant_id | BIGINT | 助教ID |
| stat_month | DATE | 统计月份(月第一天) |
| hire_date | DATE | 入职日期 |
| is_new_hire | BOOLEAN | 是否新入职 |
| work_days | INTEGER | 有服务天数 |
| total_hours | NUMERIC(10,2) | 总计费小时数 |
| base_hours | NUMERIC(10,2) | 基础课小时数 |
| bonus_hours | NUMERIC(10,2) | 附加课小时数 |
| effective_hours | NUMERIC(10,2) | 有效业绩小时数 |
| trashed_hours | NUMERIC(10,2) | 被废除小时数 |
| tier_id | INTEGER | 档位ID |
| tier_code | VARCHAR(20) | 档位代码 |
| tier_name | VARCHAR(50) | 档位名称 |
| rank_by_hours | INTEGER | 月度排名 |
| rank_with_ties | INTEGER | 考虑并列的排名 |
**业务规则:**
- 有效业绩 = total_hours - trashed_hours
- 新入职判断:入职日期 >= 月1日0点
- 排名按effective_hours降序并列都算
### 2.3 dws_assistant_customer_stats - 助教服务客户统计
**粒度:** 助教 + 客户 + 统计日期
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGSERIAL | 主键 |
| assistant_id | BIGINT | 助教ID |
| member_id | BIGINT | 客户ID |
| stat_date | DATE | 统计基准日期 |
| first_service_date | DATE | 首次服务日期 |
| last_service_date | DATE | 最近服务日期 |
| total_service_count | INTEGER | 累计服务次数 |
| total_service_hours | NUMERIC(10,2) | 累计服务小时数 |
| service_count_7d | INTEGER | 近7天服务次数 |
| service_count_30d | INTEGER | 近30天服务次数 |
| service_count_90d | INTEGER | 近90天服务次数 |
| is_active_7d | BOOLEAN | 近7天是否活跃 |
| is_active_30d | BOOLEAN | 近30天是否活跃 |
**业务规则:**
- 散客member_id=0不进入此表
- 滚动窗口7/10/15/30/60/90天
### 2.4 dws_assistant_salary_calc - 助教工资计算详情
**粒度:** 助教 + 工资月份
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGSERIAL | 主键 |
| assistant_id | BIGINT | 助教ID |
| assistant_nickname | VARCHAR(50) | 助教花名 |
| salary_month | DATE | 工资月份(月第一天) |
| assistant_level_code | INTEGER | 助教等级代码8/10/20/30/40 |
| assistant_level_name | VARCHAR(20) | 助教等级名称 |
| hire_date | DATE | 入职日期 |
| is_new_hire | BOOLEAN | 是否新入职 |
| effective_hours | NUMERIC(10,2) | 有效业绩小时数(基础课+附加课-废除) |
| base_hours | NUMERIC(10,2) | 基础课/专业课小时数 |
| bonus_hours | NUMERIC(10,2) | 附加课/打赏课小时数 |
| tier_id | INTEGER | 档位ID |
| tier_code | VARCHAR(20) | 档位代码T0-T5/NEW |
| tier_name | VARCHAR(50) | 档位名称 |
| rank_with_ties | INTEGER | 月度排名考虑并列用于Top3奖金 |
| base_course_price | NUMERIC(10,2) | 基础课客户支付价格98/108/118/138 |
| bonus_course_price | NUMERIC(10,2) | 附加课客户支付价格固定190 |
| base_deduction | NUMERIC(10,2) | 专业课抽成(元/小时),档位决定 |
| bonus_deduction_ratio | NUMERIC(5,4) | 打赏课抽成比例0-1档位决定 |
| base_income | NUMERIC(12,2) | 基础课收入 |
| bonus_income | NUMERIC(12,2) | 附加课收入 |
| total_course_income | NUMERIC(12,2) | 课时收入合计 |
| sprint_bonus | NUMERIC(12,2) | 冲刺奖金H>=190:300, H>=220:800 |
| top_rank_bonus | NUMERIC(12,2) | Top3排名奖金1st:1000, 2nd:600, 3rd:400 |
| recharge_commission | NUMERIC(12,2) | 充值提成 |
| other_bonus | NUMERIC(12,2) | 其他奖金(手动调整) |
| total_bonus | NUMERIC(12,2) | 奖金合计 |
| gross_salary | NUMERIC(12,2) | 应发工资 |
| vacation_days | INTEGER | 次月可休假天数 |
| vacation_unlimited | BOOLEAN | 休假自由标记5档为TRUE |
| calc_notes | TEXT | 计算备注(异常说明等) |
**工资计算公式来自DWS数据库处理需求.md**
```
基础课收入 = 基础课小时数 × (客户支付价格 - 专业课抽成)
附加课收入 = 附加课小时数 × 190 × (1 - 打赏课抽成比例)
应发工资 = 课时收入 + 奖金
```
**计算示例中级助教185小时3档**
- 基础课170小时: 170 × (108 - 13) = 16,150元
- 附加课15小时: 15 × 190 × (1 - 0.35) = 1,852.5元
- 课时收入: 18,002.5元
- 冲刺奖金H≥190未达到: 0元
- 应发工资: 18,002.5元
---
## 三、客户维度表
### 3.1 dws_member_consumption_summary - 会员消费汇总
**粒度:** 会员 + 统计日期
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGSERIAL | 主键 |
| member_id | BIGINT | 会员ID |
| stat_date | DATE | 统计基准日期 |
| first_consume_date | DATE | 首次消费日期 |
| last_consume_date | DATE | 最近消费日期 |
| total_visit_count | INTEGER | 累计到店次数 |
| total_consume_amount | NUMERIC(14,2) | 累计消费金额 |
| visit_count_7d | INTEGER | 近7天到店次数 |
| visit_count_30d | INTEGER | 近30天到店次数 |
| consume_amount_30d | NUMERIC(14,2) | 近30天消费金额 |
| cash_card_balance | NUMERIC(14,2) | 储值卡余额 |
| gift_card_balance | NUMERIC(14,2) | 赠送卡余额 |
| customer_tier | VARCHAR(20) | 客户分层 |
**客户分层规则:**
- 高价值90天内消费>=3次 且 消费金额>=1000
- 中等30天内有消费
- 低活跃90天内有消费但30天内无消费
- 流失90天内无消费
### 3.2 dws_member_visit_detail - 会员来店明细
**粒度:** 会员 + 订单
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGSERIAL | 主键 |
| member_id | BIGINT | 会员ID |
| order_settle_id | BIGINT | 结账单ID |
| visit_date | DATE | 来店日期 |
| table_name | VARCHAR(50) | 台桌名称 |
| area_category | VARCHAR(20) | 区域分类 |
| table_fee | NUMERIC(12,2) | 台费 |
| goods_amount | NUMERIC(12,2) | 商品金额 |
| assistant_amount | NUMERIC(12,2) | 助教服务金额 |
| total_consume | NUMERIC(12,2) | 消费总额 |
| actual_pay | NUMERIC(12,2) | 实付金额 |
| assistant_services | JSONB | 助教服务明细JSON |
---
## 四、财务维度表
### 4.1 dws_finance_daily_summary - 财务日度汇总
**粒度:** 日期
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGSERIAL | 主键 |
| stat_date | DATE | 统计日期 |
| gross_amount | NUMERIC(14,2) | 发生额合计 |
| table_fee_amount | NUMERIC(14,2) | 台费正价 |
| goods_amount | NUMERIC(14,2) | 商品正价 |
| assistant_pd_amount | NUMERIC(14,2) | 助教基础课正价 |
| assistant_cx_amount | NUMERIC(14,2) | 助教激励课正价 |
| discount_total | NUMERIC(14,2) | 优惠合计 |
| discount_groupbuy | NUMERIC(14,2) | 团购优惠 |
| discount_vip | NUMERIC(14,2) | 会员折扣 |
| discount_gift_card | NUMERIC(14,2) | 赠送卡抵扣 |
| discount_manual | NUMERIC(14,2) | 手动调整 |
| discount_rounding | NUMERIC(14,2) | 抹零 |
| discount_other | NUMERIC(14,2) | 其他优惠(手动调整拆分) |
| confirmed_income | NUMERIC(14,2) | 确认收入 |
| cash_inflow_total | NUMERIC(14,2) | 现金流入合计 |
| cash_pay_amount | NUMERIC(14,2) | 收银实付 |
| groupbuy_pay_amount | NUMERIC(14,2) | 团购支付金额 |
| platform_settlement_amount | NUMERIC(14,2) | 平台回款金额 |
| platform_fee_amount | NUMERIC(14,2) | 平台服务费+佣金 |
| recharge_cash_inflow | NUMERIC(14,2) | 充值现金流入 |
| card_consume_total | NUMERIC(14,2) | 卡消费合计 |
| cash_card_consume | NUMERIC(14,2) | 储值卡消费 |
| gift_card_consume | NUMERIC(14,2) | 赠送卡消费 |
| cash_outflow_total | NUMERIC(14,2) | 现金流出合计 |
| cash_balance_change | NUMERIC(14,2) | 现金结余 |
| recharge_count | INTEGER | 充值笔数 |
| recharge_total | NUMERIC(14,2) | 充值总额 |
| recharge_cash | NUMERIC(14,2) | 充值现金部分 |
| recharge_gift | NUMERIC(14,2) | 充值赠送部分 |
| first_recharge_count | INTEGER | 首充笔数 |
| renewal_count | INTEGER | 续充笔数 |
| order_count | INTEGER | 结账单数 |
| member_order_count | INTEGER | 会员订单数 |
| guest_order_count | INTEGER | 散客订单数 |
| avg_order_amount | NUMERIC(12,2) | 平均客单价 |
**计算公式:**
- 发生额 = table_charge_money + goods_money + assistant_pd_money + assistant_cx_money
- 团购支付金额 = pl_coupon_sale_amount > 0 ? pl_coupon_sale_amount : groupbuy_redemption.ledger_unit_price
- 团购优惠 = coupon_amount - 团购支付金额
- 优惠合计 = 团购优惠 + 会员折扣 + 赠送卡抵扣 + 手动调整 + 抹零
- 其他优惠 = adjust_amount - 大客户优惠不足0按0处理
- 确认收入 = 发生额 - 优惠合计
- 平台回款金额 = dws_platform_settlement.settlement_amount若无导入则使用团购支付金额
- 平台服务费 = commission_amount + service_fee
- 现金流入合计 = 收银实付 + 平台回款金额 + 充值现金流入
- 现金流出合计 = 支出汇总 + 平台服务费
- 现金结余 = 现金流入合计 - 现金流出合计
**财务指标数据来源矩阵(字段 → 来源 → 口径)**
| 字段 | 来源表 | 口径说明 |
|------|--------|----------|
| gross_amount | dwd_settlement_head | table_charge_money + goods_money + assistant_pd_money + assistant_cx_money |
| discount_groupbuy | dwd_settlement_head + dwd_groupbuy_redemption | coupon_amount - 团购支付金额 |
| discount_vip | dwd_settlement_head | member_discount_amount |
| discount_gift_card | dwd_settlement_head | gift_card_amount |
| discount_manual | dwd_settlement_head | adjust_amount手动调整总额 |
| discount_rounding | dwd_settlement_head | rounding_amount |
| discount_other | dwd_settlement_head | adjust_amount - 大客户优惠(配置映射) |
| confirmed_income | dwd_settlement_head | gross_amount - discount_total |
| cash_pay_amount | dwd_settlement_head | pay_amount收银实付 |
| groupbuy_pay_amount | dwd_settlement_head + dwd_groupbuy_redemption | pl_coupon_sale_amount 或 ledger_unit_price |
| platform_settlement_amount | dws_platform_settlement | settlement_amountExcel导入 |
| platform_fee_amount | dws_platform_settlement | commission_amount + service_fee |
| recharge_cash_inflow | dwd_recharge_order | pay_money现金充值 |
| cash_inflow_total | dwd_settlement_head + dws_platform_settlement + dwd_recharge_order | 收银实付 + 平台回款 + 充值现金 |
| cash_outflow_total | dws_finance_expense_summary + dws_platform_settlement | 支出汇总 + 平台服务费 |
| cash_balance_change | dws_finance_daily_summary | cash_inflow_total - cash_outflow_total |
### 4.2 dws_finance_recharge_summary - 充值统计
**粒度:** 日期
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGSERIAL | 主键 |
| stat_date | DATE | 统计日期 |
| recharge_count | INTEGER | 充值笔数 |
| recharge_total | NUMERIC(14,2) | 充值总额(含赠送) |
| recharge_cash | NUMERIC(14,2) | 现金充值金额 |
| recharge_gift | NUMERIC(14,2) | 赠送金额 |
| first_recharge_count | INTEGER | 首充笔数 |
| first_recharge_cash | NUMERIC(14,2) | 首充现金 |
| renewal_count | INTEGER | 续充笔数 |
| renewal_cash | NUMERIC(14,2) | 续充现金 |
| cash_card_balance | NUMERIC(14,2) | 储值卡余额 |
| gift_card_balance | NUMERIC(14,2) | 赠送卡余额 |
**数据来源:** dwd_recharge_orderis_first字段区分首充/续充)
### 4.3 dws_finance_income_structure - 收入结构分析
**粒度:** 日期 + 结构类型 + 分类
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGSERIAL | 主键 |
| stat_date | DATE | 统计日期 |
| structure_type | VARCHAR(20) | 结构类型INCOME_TYPE/AREA |
| category_code | VARCHAR(30) | 分类代码 |
| category_name | VARCHAR(50) | 分类名称 |
| income_amount | NUMERIC(14,2) | 收入金额 |
| income_ratio | NUMERIC(5,4) | 收入占比 |
| order_count | INTEGER | 订单数 |
| duration_minutes | INTEGER | 时长(分钟) |
**结构类型说明:**
1. **INCOME_TYPE按收入类型**
- TABLE_FEE = 台费收入
- GOODS = 商品收入
- ASSISTANT_BASE = 助教基础课
- ASSISTANT_BONUS = 助教附加课
2. **AREA按区域**
- 使用cfg_area_category映射BILLIARD/BILLIARD_VIP/SNOOKER/MAHJONG/KTV/OTHER
**数据来源:** dwd_settlement_head, dwd_table_fee_log, dwd_assistant_service_log
### 4.4 dws_finance_discount_detail - 优惠明细
**粒度:** 日期 + 优惠类型
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGSERIAL | 主键 |
| stat_date | DATE | 统计日期 |
| discount_type_code | VARCHAR(30) | 优惠类型代码 |
| discount_type_name | VARCHAR(50) | 优惠类型名称 |
| discount_amount | NUMERIC(14,2) | 优惠金额 |
| discount_ratio | NUMERIC(5,4) | 优惠占比(占总优惠) |
| usage_count | INTEGER | 使用次数 |
| affected_orders | INTEGER | 影响订单数 |
**优惠类型:**
- GROUPBUY = 团购优惠coupon_amount - 团购实付金额)
- VIP = 会员折扣member_discount_amount
- GIFT_CARD = 赠送卡抵扣gift_card_amount
- ROUNDING = 抹零rounding_amount
- BIG_CUSTOMER = 大客户优惠(基于配置映射的手动调整)
- OTHER = 其他优惠(手动调整中除大客户外部分)
**数据来源:** dwd_settlement_head, dwd_groupbuy_redemption
### 4.5 dws_finance_expense_summary - 支出结构Excel导入
**粒度:** 月份 + 支出类型
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGSERIAL | 主键 |
| expense_month | DATE | 支出月份 |
| expense_type_code | VARCHAR(30) | 支出类型代码 |
| expense_type_name | VARCHAR(50) | 支出类型名称 |
| expense_category | VARCHAR(20) | 支出大类 |
| expense_amount | NUMERIC(14,2) | 支出金额 |
| import_batch_no | VARCHAR(50) | 导入批次号 |
**支出类型:**
- RENT = 房租
- UTILITY = 水电费
- PROPERTY = 物业费
- SALARY = 工资
- REIMBURSE = 报销
- PLATFORM_FEE = 平台服务费
- OTHER = 其他
### 4.6 dws_platform_settlement - 平台回款Excel导入
**粒度:** 回款日期 + 平台 + 订单
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGSERIAL | 主键 |
| settlement_date | DATE | 回款日期 |
| platform_type | VARCHAR(30) | 平台类型 |
| platform_name | VARCHAR(50) | 平台名称 |
| platform_order_no | VARCHAR(100) | 平台订单号 |
| order_settle_id | BIGINT | 关联的结账单ID |
| settlement_amount | NUMERIC(14,2) | 回款金额 |
| commission_amount | NUMERIC(14,2) | 佣金 |
| service_fee | NUMERIC(14,2) | 服务费 |
| gross_amount | NUMERIC(14,2) | 订单原始金额 |
| import_batch_no | VARCHAR(50) | 导入批次号 |
---
## 五、时间分层机制
### 5.1 时间口径定义
| 时间窗口 | 说明 | 边界规则 |
|----------|------|----------|
| 本周 | 从本周一到今天 | 周起始日为周一 |
| 上周 | 上周一到上周日 | 完整7天 |
| 本月 | 从月1日到今天 | 月第一天0点起 |
| 上月 | 上月完整月份 | 完整自然月 |
| 前3个月不含本月 | 三个月前月初到上月末 | 不含当前月 |
| 前3个月含本月 | 两个月前月初到今天 | 含当前月 |
| 本季度 | 季度第一月1日到今天 | 季度起始 |
| 上季度 | 上季度完整三个月 | 完整自然季 |
| 最近半年 | 往前6个月不含本月 | 不含当前月 |
### 5.2 滚动窗口
支持以下滚动窗口统计:
- 近7天
- 近10天
- 近15天
- 近30天
- 近60天
- 近90天
### 5.3 环比计算
环比规则:对比上一个等长区间
- 如查询1月1日-1月15日环比为12月17日-12月31日
---
## 六、数据更新策略
| 表类型 | 更新频率 | 幂等方式 |
|--------|----------|----------|
| 日度明细表 | 每小时 | delete-before-insert按日期窗口 |
| 日度汇总表 | 每小时 | delete-before-insert按日期 |
| 月度汇总表 | 每日 | delete-before-insert按月份 |
| 客户统计表 | 每日 | delete-before-insert按统计日期 |
| Excel导入表 | 手动 | 按import_batch_no去重 |