Files
Neo-ZQYY/docs/audit/changes/2026-03-19__level-map-hardcode-fix.md
Neo 14a12342b5 chore(audit): 补追 96 份未入仓审计孤本 — 覆盖 2026-02-26 ~ 2026-04-08
这些审计记录原本堆积在 docs/audit/changes/changes/ 嵌套误产物目录下(由开发机迁移
79d3c2e 前后的不明批量操作产生)。由于同期 .gitignore 屏蔽了 docs/audit/ 全目录,
它们从未入过 git 任何分支 history。删除即永久丢失。

按 docs/specs/audit-gap-recovery/tasks.md 阶段 1 执行,将全部 96 份 D 类孤本
(主目录无同名、git history 亦无记录)复制到 docs/audit/changes/ 主目录入仓。

涵盖主题: P1-P18 全栈集成 / 多模块累积变更 / ETL bug 修复 / 业务日切 /
   召回与任务引擎改造 / 租户管理与审批 / 董事会财务 / 客户与助教详情 /
   DDL 基线合并 / Kiro 到 Claude Code 迁移

阶段 2(B 类内容漂移 1 份)和阶段 4(嵌套目录删除)独立推进。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 06:35:42 +08:00

2.0 KiB
Raw Blame History

变更审计记录助教等级映射硬编码修复P2-9

字段
日期 2026-03-19
关联问题 P2-9RNS1 系列审计遗留项)
违反规则 feiqiu-data-rules 规则 6等级名称禁止硬编码

操作摘要

fdw_queries.py 中两处 _level_map = {1: "junior", 2: "middle", 3: "senior", 4: "star"} 硬编码存在双重问题:

  1. 违反 feiqiu-data-rules 规则 6等级必须从配置表读取
  2. 映射值域完全错误——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 字段之前始终返回空字符串(映射不上),现在返回中文名称,是功能修正而非破坏性变更
  • 降级机制:配置表查询失败返回空 dictlevel 字段回退为空字符串(与修复前行为一致)

文件清单

文件 操作
apps/backend/app/services/fdw_queries.py 修改(新增 get_level_map(),修改 2 处调用)
docs/audit/changes/2026-03-19__level-map-hardcode-fix.md 新增(本文件)