fix(web3): resultFields.key 小写化对齐 db_adapter 列名归一 + errTip 直接用 key
T4 任务(task_id=16,GJ_DWRYBD 表,39 字段全是大写 YWBH/FCRS/...)跑完查询,
前端表格所有单元格都显示 (NULL),但备注列能正确显示「fcrs: 100到200之间」。
根因(列名大小写不匹配):
- 后端 db_adapter._rows_as_dicts 全局把列名归一为小写
(normalize_column_name line 188)
- row dict 的 key 全是小写(ywbh / fcrs / ...)
- 后端 _evaluate_row 用 cf.field_key = f.field_key.lower() 访问,
所以规则匹配正常(备注列能正确显示就是证据)
- 但前端 resultFields.key 用了 f.field_key 原值(大写 FCRS)
- ResultTable 里 row[col.key] → row['FCRS'] → undefined → (NULL)
两处表现是同一个根因:
- 单元格全 (NULL):row[col.key] 大写找不到
- 错误 tooltip 永远 fallback「该字段不合法」:
原版 errTip 用 col.cn(大写)找 row.issues[].field(小写),
永远匹配不上
改动:
DataQualityView.vue resultFields 里:
key: (f.field_key || '').toLowerCase() // 跟 row dict 小写对齐
cn: f.field_key // 表头显示保留原大小写
ResultTable.vue errTip:
直接用 col.key(小写)找 row.issues[].field(小写),
去掉 col.cn 那一跳
教训:「DB 列名大小写 × 字段名大小写 × 后端归一化策略」是反复出现的坑。
db_adapter 全局归一为小写是契约,前端落 key 时必须主动 .toLowerCase()。
Showing
Please register or sign in to comment