助理指导员存在跨城市授课场景,当前系统在基本档变更和课酬统计时存在两处城市过滤缺失的BUG:
tb_business_teacher_base_files_log 查询所有 end_time=null 的基本档,没有限制城市。
| 规则 | 说明 |
|---|---|
| 基本档生效维度 | 城市 + 月份,一个助理指导员在一个城市一个月只有一个基本档生效 |
| 新增/修改触发场景 | ① 新增指导员所属城市 ② 修改指导员所属城市 ③ 助理指导员补充档设置 |
| 目标 | 说明 |
|---|---|
| 修复变更BUG | 变更基本档时加城市过滤,只影响当前城市的基本档 |
| 修复统计重复 | 课酬报表关联补充档时加城市限制,消除跨城市重复 |
本次为精准修复,不涉及页面UI改动,涉及两处查询逻辑调整和一批历史数据清洗:
| # | 改动项 | 说明 |
|---|---|---|
| 1 | 变更基本档查询 — 加城市过滤 | 变更助理指导员基本档时,查询当前生效基本档需加上城市限制 |
| 2 | 工资补充报表 — 加城市过滤 | 薪酬报表关联补充档时,加上城市限制匹配 |
| 3 | 历史数据清洗 | 同城市有多条 end_time=null 的记录,保留最新一条,其余加上结束日期 |
| 场景 | 处理逻辑 |
|---|---|
| 新增指导员所属城市 | 关联城市查询(tb_base_file_ref_city),检查是否有生效基本档,没有则直接新增 |
| 修改指导员所属城市 | 关联目标城市查询 → 有:结束原档,再新增;无:走新增 |
| 补充档设置 | 关联当前城市查询 → 有:结束原档,再新增;无:走新增 |
该表仍在使用,被新增指导员时的自动分配最低档逻辑引用。仅在补充档设置的「可设置范围查询」中被注掉,该场景当前使用 %城市% 匹配 tb_base_file.name。
广州城市在自动分配基本档时存在硬编码逻辑,默认直接给一档(不取最低档)。历史遗留,本次不涉及调整。
end_time=null 的基本档,不限城市:
当指导员在某授课城市无补充档时,取该城市的最低档基本档计算课酬。
| 项目 | 说明 |
|---|---|
| 存量数据清洗 | 排查 tb_business_teacher_base_files_log 中同一 teacher_id + 同一城市有多条 end_time=null 的记录 → 保留最新一条,其余加上结束日期(设为当前日期) |
| 薪酬报表历史数据 | 已有导出记录不做回溯修正,新逻辑仅影响新查询和新导出 |
| 被误结束的基本档 | 之前因变更BUG被误结束的其他城市基本档,需要手动恢复(将 end_time 重新设为 null) |
本次需求无权限变更,沿用现有权限体系。
所有问题已确认关闭,无需进一步确认。
| # | 问题 | 结论 |
|---|---|---|
| 1 | 月中升档时课酬取价方式 | 不存在月中升档,无需处理 |
| 2 | 被误结束的其他城市基本档是否需恢复 | 需要恢复(end_time 重新设为 null) |
| 3 | 授课城市无补充档时的兜底取价策略 | 取该城市最低档基本档 |