变更审计记录:助教等级映射硬编码修复(P2-9)
| 字段 |
值 |
| 日期 |
2026-03-19 |
| 关联问题 |
P2-9(RNS1 系列审计遗留项) |
| 违反规则 |
feiqiu-data-rules 规则 6:等级名称禁止硬编码 |
操作摘要
fdw_queries.py 中两处 _level_map = {1: "junior", 2: "middle", 3: "senior", 4: "star"} 硬编码存在双重问题:
- 违反 feiqiu-data-rules 规则 6(等级必须从配置表读取)
- 映射值域完全错误——
v_dim_assistant.level 实际值为 8/10/20/30/40,硬编码的 1/2/3/4 永远匹配不上,所有助教的 level 字段始终返回空字符串
改动方案
新增函数
get_level_map(conn, site_id) — 从 app.v_cfg_assistant_level_price 动态读取 level_code → level_name 映射,查询失败返回空 dict
修改函数
get_assistant_info() — 删除硬编码 _level_map,改用 get_level_map() 动态查询
get_all_assistants() — 同上
验证
- 配置表实际数据:
{8: "助教管理", 10: "初级", 20: "中级", 30: "高级", 40: "星级"}
v_dim_assistant.level 实际值域:8(1), 10(35), 20(34), 30(6), 40(4)
影响范围
| 接口 |
影响 |
| BOARD-1 助教看板 |
get_all_assistants() 返回的 level 从空字符串变为中文等级名 |
| COACH-1 助教详情 |
get_assistant_info() 返回的 level 从空字符串变为中文等级名 |
| 前端 |
需确认前端是否依赖英文 level 值(junior/middle/senior/star)做逻辑判断 |
风险评估
- 风险等级:低
- level 字段之前始终返回空字符串(映射不上),现在返回中文名称,是功能修正而非破坏性变更
- 降级机制:配置表查询失败返回空 dict,level 字段回退为空字符串(与修复前行为一致)
文件清单
| 文件 |
操作 |
apps/backend/app/services/fdw_queries.py |
修改(新增 get_level_map(),修改 2 处调用) |
docs/audit/changes/2026-03-19__level-map-hardcode-fix.md |
新增(本文件) |