refactor(go): map realtime fields to semantic names

This commit is contained in:
lingniu
2026-07-03 13:51:57 +08:00
parent c359930009
commit e1bf2d72e1
4 changed files with 306 additions and 51 deletions

View File

@@ -27,14 +27,14 @@ func TestRealtimeKVFieldsFromGB32960ParsedDomains(t *testing.T) {
})
values := kvMap(rows)
if values["header/vin"] != "VIN001" || values["header/command"] != "0x02" {
if values["gb32960.header/vin"] != "VIN001" || values["gb32960.header/command"] != "0x02" {
t.Fatalf("gb32960 header kv missing: %#v", values)
}
if values["data_units/0.name"] != "vehicle" || values["data_units/0.type"] != "0x01" || values["data_units/0.value.soc_percent"] != "88" {
if values["gb32960.vehicle/type"] != "0x01" || values["gb32960.vehicle/soc_percent"] != "88" {
t.Fatalf("vehicle soc kv missing: %#v", values)
}
if values["data_units/1.value.summaries.0.stack_water_outlet_temp_c"] != "63" ||
values["data_units/1.value.summaries.0.hydrogen_inlet_pressure_kpa"] != "130" {
if values["gb32960.gd_fc_stack/stack_water_outlet_temp_c"] != "63" ||
values["gb32960.gd_fc_stack/hydrogen_inlet_pressure_kpa"] != "130" {
t.Fatalf("stack pressure kv missing: %#v", values)
}
}
@@ -58,15 +58,15 @@ func TestRealtimeKVFieldsFromJT808ParsedFields(t *testing.T) {
},
})
jtValues := kvMap(jtRows)
if jtValues["header/message_id"] != "0x0200" || jtValues["header/phone"] != "13307795425" {
if jtValues["jt808.header/message_id"] != "0x0200" || jtValues["jt808.header/phone"] != "13307795425" {
t.Fatalf("jt808 header kv missing: %#v", jtValues)
}
if jtValues["location/total_mileage_km"] != "10241.2" ||
jtValues["location/longitude"] != "121.1" ||
jtValues["location/additional.0.id"] != "0x01" {
if jtValues["jt808.location/total_mileage_km"] != "10241.2" ||
jtValues["jt808.location/longitude"] != "121.1" ||
jtValues["jt808.location/additional.additional_1.id"] != "0x01" {
t.Fatalf("jt808 location kv missing: %#v", jtValues)
}
if jtValues["location/soc_percent"] != "" {
if jtValues["jt808.location/soc_percent"] != "" {
t.Fatalf("jt808 kv should not include standardized env.Fields-only values: %#v", jtValues)
}
}
@@ -96,19 +96,19 @@ func TestRealtimeKVFieldsFromYutongMQTTParsedFields(t *testing.T) {
},
})
mqttValues := kvMap(mqttRows)
if mqttValues["data/ACC_PEDAL_APT"] != "14" ||
mqttValues["data/CURRENT_OF_FC"] != "54.9" ||
mqttValues["data/HYDROGEN_LOW_PRESSURE"] != "1.41" ||
mqttValues["data/TOTAL_MILEAGE"] != "119925000" ||
mqttValues["data/fuelCellCoolInTempt"] != "59" {
if mqttValues["yutong_mqtt.data/acc_pedal_apt"] != "14" ||
mqttValues["yutong_mqtt.data/current_of_fc"] != "54.9" ||
mqttValues["yutong_mqtt.data/hydrogen_low_pressure"] != "1.41" ||
mqttValues["yutong_mqtt.data/total_mileage"] != "119925000" ||
mqttValues["yutong_mqtt.data/fuelcellcoolintempt"] != "59" {
t.Fatalf("mqtt raw data kv missing: %#v", mqttValues)
}
if mqttValues["root/device"] != "LMRKH9AC2R1004087" ||
mqttValues["metadata/endpoint"] != "yutong" ||
mqttValues["metadata/topic"] != "/ytforward/shln/3" {
if mqttValues["yutong_mqtt.root/device"] != "LMRKH9AC2R1004087" ||
mqttValues["yutong_mqtt.metadata/endpoint"] != "yutong" ||
mqttValues["yutong_mqtt.metadata/topic"] != "/ytforward/shln/3" {
t.Fatalf("mqtt metadata kv missing: %#v", mqttValues)
}
if mqttValues["data/soc_percent"] != "" || mqttValues["data/gear"] != "" {
if mqttValues["yutong_mqtt.data/soc_percent"] != "" || mqttValues["yutong_mqtt.data/gear"] != "" {
t.Fatalf("mqtt kv should not include standardized env.Fields-only values: %#v", mqttValues)
}
}