初始提交:飞球 ETL 系统全量代码

This commit is contained in:
Neo
2026-02-13 08:05:34 +08:00
commit 3c51f5485d
441 changed files with 117631 additions and 0 deletions

View File

@@ -0,0 +1,73 @@
# cfg_bonus_rules 奖金规则配置表
> 生成时间2026-02-03
## 表信息
| 属性 | 值 |
|------|-----|
| Schema | billiards_dws |
| 表名 | cfg_bonus_rules |
| 主键 | rule_id |
| 数据来源 | 手工维护/seed脚本 |
| 说明 | 奖金规则配置冲刺奖金为历史口径Top3排名奖金为现行口径 |
## 字段说明
| 序号 | 字段名 | 类型 | 可空 | 主键 | 说明 |
|------|--------|------|------|------|------|
| 1 | rule_id | SERIAL | NO | PK | 规则ID自增 |
| 2 | rule_type | VARCHAR(20) | NO | | 规则类型。**枚举值**: SPRINT冲刺奖金历史口径, TOP_RANKTop排名奖金 |
| 3 | rule_code | VARCHAR(30) | NO | | 规则代码。**枚举值**: TOP_1, TOP_2, TOP_3SPRINT_*为历史规则) |
| 4 | rule_name | VARCHAR(50) | NO | | 规则名称 |
| 5 | threshold_hours | NUMERIC(10,2) | YES | | 小时数阈值(冲刺奖金用) |
| 6 | rank_position | INTEGER | YES | | 排名位置Top奖金用 |
| 7 | bonus_amount | NUMERIC(12,2) | NO | | 奖金金额(元) |
| 8 | is_cumulative | BOOLEAN | NO | | 是否可累计冲刺奖金为FALSE取最高档 |
| 9 | priority | INTEGER | NO | | 优先级(数字越大优先级越高) |
| 10 | effective_from | DATE | NO | | 生效起始日期(含) |
| 11 | effective_to | DATE | NO | | 生效截止日期(含) |
| 12 | description | TEXT | YES | | 说明 |
| 13 | created_at | TIMESTAMPTZ | NO | | 创建时间 |
| 14 | updated_at | TIMESTAMPTZ | NO | | 更新时间 |
## 奖金规则示例
### 冲刺奖金历史口径至2026-02-28不累计取最高档
| 规则代码 | 小时阈值 | 奖金金额 | 优先级 |
|----------|----------|----------|--------|
| SPRINT_190 | 190小时 | 300元 | 1 |
| SPRINT_220 | 220小时 | 800元 | 2 |
### Top3排名奖金2026-03-01起独立发放
| 规则代码 | 排名 | 奖金金额 |
|----------|------|----------|
| TOP_1 | 第1名 | 1000元 |
| TOP_2 | 第2名 | 600元 |
| TOP_3 | 第3名 | 400元 |
## 使用说明
**取值方式**
```sql
-- 获取冲刺奖金(取最高档)
SELECT * FROM billiards_dws.cfg_bonus_rules
WHERE rule_type = 'SPRINT'
AND threshold_hours <= 200 -- 实际小时数
AND effective_from <= '2026-02-28'
AND effective_to >= '2026-02-28'
ORDER BY priority DESC
LIMIT 1;
-- 获取Top3排名奖金
SELECT * FROM billiards_dws.cfg_bonus_rules
WHERE rule_type = 'TOP_RANK'
AND rank_position = 1 -- 排名
AND effective_from <= '2026-03-01'
AND effective_to >= '2026-03-01';
```
**排名口径说明**
- Top3排名按有效业绩小时数effective_hours降序排列
- 如遇并列则都算如2个第一则记为2个第一下一个是第三