# 分红说明文档（现状分析 + 简化设计建议）

## 1. 文档目的

本文用于回答两个问题：

1. 甲方管理员是否容易看懂当前分红方式？
2. 是否有更简单、更容易执行和对账的分红设计？

并给出推荐方案与落地路径。

---

## 2. 当前分红设计现状（按代码实际行为）

## 2.1 配置层面（看起来是三级）

历史上后台有三处比例字段（其中后两项已下线）：

- `channel`：渠道分红参数（`turnover_share_rate`、`affiliate_*` 等）
- `admin_group`：角色组 `commission_rate`（已删除）
- `admin`：管理员 `commission_rate`（已删除）

从“配置界面”角度，容易被理解为：  
**渠道比例 -> 角色组比例 -> 管理员比例** 的三级链路。

## 2.2 结算层面（实际执行是单层）

当前手动结算逻辑在 `Channel` 控制器中：

- 按渠道下注汇总计算 `total_bet_amount / platform_profit_amount`
- 根据 `channel.agent_mode` 计算佣金基数与佣金比例
- 生成 `agent_settlement_period` 与 `agent_commission_record`

关键点：**佣金记录只写了一条 admin_id（渠道下首个管理员）**，并未按角色组/管理员比例拆分多条佣金明细。  
也就是说，目前“角色组比例、管理员比例”主要在新增/编辑时做约束校验，但**没有进入最终结算分账公式**。

---

## 3. 当前方案对甲方可理解性的评估

结论：**一般不容易看懂，且容易产生“配置了却不生效”的认知落差。**

主要原因：

1. **心智复杂**：甲方要同时理解渠道模式（返水/联营）、角色组比例、管理员比例三层规则。
2. **口径不一致**：界面上有三级比例，但结算时是渠道单层落账，容易质疑“为什么不是按我配的三级比例发放”。
3. **对账难**：财务看到佣金记录时只能看到渠道维度，不容易反推角色组和管理员分配关系。
4. **运维负担高**：层级变化（调组、换管理员）后，历史解释成本高。

---

## 4. 更简单的分红设计方式（推荐）

## 4.1 推荐方案：`渠道结算 + 渠道内二次分配`（两层）

将分红流程拆为两个明确步骤：

### A. 一级：渠道结算（平台对渠道）

- 保留当前 `channel.agent_mode` 的计算方式（turnover/affiliate）
- 先得到一个渠道应发佣金：`channel_commission_amount`
- 生成渠道结算单（当前已具备）

### B. 二级：渠道内分配（渠道对管理员）

- 不再使用“角色组分红比例”参与金额运算（角色组只负责权限）
- 仅维护“渠道下管理员分配权重”（例如总和=100%）
- 自动拆分：`admin_commission = channel_commission_amount × admin_weight`
- 为每个管理员生成独立佣金记录（多条）

> 这样甲方只需要理解一句话：  
> **平台先算渠道总佣金，再按渠道内管理员权重拆分。**

## 4.2 为什么推荐该方案

1. **业务更直观**：甲方看“渠道总佣金 + 管理员占比”即可。
2. **和现有代码贴近**：你们当前已经是“先算渠道佣金”，只需补“二次拆分”。
3. **对账容易**：每个管理员佣金来源清晰，可直接汇总对账。
4. **后续可扩展**：以后要按团队、按代理线拆分，可以在“二次分配”层升级，不影响一级结算。

---

## 5. 备选方案对比

## 5.1 方案A（现状表象）：渠道 -> 角色组 -> 管理员三级

- 优点：理论上精细
- 缺点：配置理解成本高、维护复杂、容易和实际结算脱节
- 适用：组织结构非常稳定、财务系统成熟的大盘

## 5.2 方案B（推荐）：渠道 -> 管理员两级

- 优点：简单、易讲、易对账、改造成本低
- 缺点：若强依赖“角色组抽成”会减少一层表达
- 适用：当前阶段（快速上线、减少运营误解）

## 5.3 方案C（最简）：仅渠道一级

- 优点：最简单
- 缺点：无法直接落地到管理员收益，不利于激励
- 适用：仅用于统计，不用于发佣

---

## 6. 建议的产品口径（给甲方的话术）

建议统一说明为：

1. **渠道分红**：系统按渠道配置（返水或联营）自动计算该周期渠道总佣金。
2. **人员分配**：渠道总佣金按“渠道内管理员分配比例”自动拆分。
3. **角色组作用**：角色组只负责菜单权限与数据权限，不参与金额运算。
4. **结算可追溯**：每条管理员佣金都能追溯到对应渠道结算单。

---

## 7. 数据与实现改造建议（按最小改动）

## 7.1 数据字段建议

- 保留：`channel` 的分红计算参数（现有）
- 建议新增（任选其一）：
  - 在 `admin` 增加 `channel_share_rate`（该管理员在所属渠道的拆分比例）
  - 或新增 `channel_admin_share(channel_id, admin_id, share_rate)`

## 7.2 逻辑改造建议

1. 渠道结算得到 `commission_amount`
2. 拉取该渠道有效管理员分配比例列表（总和=100%）
3. 按比例拆分并批量写入 `agent_commission_record`
4. 若分配比例未配置：
   - 方案一：默认100%给渠道负责人
   - 方案二：阻止结算并提示“请先配置渠道管理员分配比例”

## 7.3 风险控制建议

- 分配比例总和强校验（必须=100%）
- 管理员离职/禁用时自动重算或禁止结算
- 结算后锁单，后改比例不影响历史账单

---

## 8. 迁移策略建议

分三步上线：

1. **第1步（兼容期）**：保留现有字段，新增“渠道内管理员分配比例”配置
2. **第2步（双轨期）**：结算时同时产出“旧口径结果 + 新口径预览”用于核对
3. **第3步（切换期）**：正式切到“渠道+管理员两级”，角色组比例仅保留展示或下线

---

## 9. 最终建议结论

从“甲方能否看懂”和“系统可维护性”来看，建议采用：

**渠道结算 + 渠道内管理员二次分配（两级）**。

这是在你们当前代码基础上改造成本最低、解释成本最低、财务对账最清晰的方案。  
不建议继续强化“渠道->角色组->管理员”三级分红公式作为主线。

---

## 10. 本次已落地改造（2026-04-18）

已在系统中完成以下改造：

1. 新增渠道管理员分配表：`channel_admin_share`
2. 下线并删除旧字段：`admin_group.commission_rate`、`admin.commission_rate`
3. 新增后台接口：
   - `channelAdminShareList`：读取渠道管理员分配配置
   - `saveChannelAdminShare`：保存渠道管理员分配配置（启用项合计必须100%）
4. 手动结算改造：
   - 先算渠道总佣金
   - 再按 `channel_admin_share` 比例拆分为多条 `agent_commission_record`
   - 结算预览支持查看拆分明细
5. 渠道后台页面新增“分配比例”按钮与配置弹窗，用于维护管理员分配比例
6. 角色组与管理员页面已移除旧分红比例字段展示与编辑项

说明：
- 若未配置 `channel_admin_share`，系统会回退为“渠道首个管理员100%”以保证兼容历史流程。

