## Purpose 按原始需求(`111.md` §18.2)补齐佣金明细导出的列定义,使导出结果可直接用于按业务员、用户组与设备维度统计,并与原充值订单的下单时间对齐。 ## MODIFIED Requirements ### Requirement: 回溯明细关联查询与导出 系统 SHALL 在佣金明细中分别展示原发放佣金和回溯扣款记录,并允许从任一记录查询其关联的退款单、原佣金或全部回溯明细。回溯记录必须显示负数金额、不可提现标识、来源退款单号、原佣金记录号、生成时间和回溯后佣金钱包实际余额。原佣金与回溯记录 MUST 合并为同一列表的同一分页与同一排序口径,MUST NOT 因来源表不同而丢失或重复任一条事实。 佣金明细及导出 MUST 使用既有佣金数据范围:代理仅可读取自身及其既有可见范围内的事实,平台与超级管理员遵循既有范围;无权记录不得通过关联 ID、汇总或导出泄露存在性。 佣金明细导出 MUST 使用佣金记录粒度,原佣金与回溯记录各占一行,并冻结创建时筛选条件、操作者与可见范围。导出列 MUST 按下列顺序输出且至少包含:店铺、业务员、用户组、资产类型、设备类型、设备型号、资产标识、订单号、下单时间、佣金金额、佣金来源、佣金状态、关联佣金明细、入账后金额与创建时间。其中订单号 MUST 与原发放记录一致(回溯记录沿用被回溯记录订单号),下单时间 MUST 取原充值订单的创建时间,资产类型 MUST 区分卡与设备,设备类型、设备型号、业务员与用户组 MUST 按导出执行时该资产与店铺的当前归属补充;缺失值 MUST 以空值导出并 MUST NOT 阻断导出,MUST NOT 因个别行缺值丢失整行或整列。列名与金额单位 MUST 与既有导出口径一致,导出粒度、创建期冻结与执行期只读语义 MUST NOT 改变。回溯记录金额 MUST 为负数、可提现标识为不可提现。回溯后余额为对应钱包变动提交后的实际余额,可为负数;金额保持分,展示层转元 MUST NOT 改变负数或余额事实。 #### Scenario: 代理查询越权回溯记录 - **WHEN** 代理使用回溯记录 ID、原佣金 ID 或退款单号查询其数据范围外的回溯关系 - **THEN** 系统按既有数据范围返回不存在或空结果,不泄露关联事实 #### Scenario: 原佣金与回溯合并分页 - **GIVEN** 同一店铺同时存在原佣金记录与回溯记录 - **WHEN** 查询佣金明细列表并翻页 - **THEN** 两类记录按同一排序口径出现在同一结果集内,任一条不缺失也不重复 #### Scenario: 回溯记录导出 - **WHEN** 导出含回溯记录的佣金明细 - **THEN** 原佣金与回溯记录各占一行,回溯行金额为负数、可提现标识为不可提现、含关联佣金明细与退款单标识,且回溯后余额为负数时原样导出 #### Scenario: 导出包含归属与设备维度列 - **GIVEN** 一条佣金记录关联的资产为绑定设备的卡,且其店铺存在业务员与用户组 - **WHEN** 导出佣金明细 - **THEN** 该行的业务员、用户组、资产类型、设备类型与设备型号按导出执行时的当前归属与资产属性导出 #### Scenario: 下单时间取原订单创建时间 - **WHEN** 导出原佣金记录与其对应的回溯记录 - **THEN** 两行的下单时间均为被关联原充值订单的创建时间 #### Scenario: 归属缺失不阻断导出 - **GIVEN** 某佣金记录关联店铺当前没有业务员或资产无设备型号 - **WHEN** 导出佣金明细 - **THEN** 对应列以空值导出,其余行与列正常产出