• Data Governance Dev's avatar
    fix(web3): resultFields.key 小写化对齐 db_adapter 列名归一 + errTip 直接用 key · b581e91a
    Data Governance Dev authored
    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()。
    b581e91a
DataQualityView.vue 13.8 KB