From f0c1983867587ce02e2c00e8904843adab30e32f Mon Sep 17 00:00:00 2001 From: lingniu Date: Wed, 1 Jul 2026 02:13:43 +0800 Subject: [PATCH] refactor: remove xinda from default production surface --- deploy/portainer/docker-compose.yml | 1 - docs/module-data-flow.html | 18 ++------------ .../LocationHistoryController.java | 4 ++-- .../RawFrameHistoryController.java | 2 +- pom.xml | 24 +++++++++++-------- 5 files changed, 19 insertions(+), 30 deletions(-) diff --git a/deploy/portainer/docker-compose.yml b/deploy/portainer/docker-compose.yml index 39f3dc00..4c3f064f 100644 --- a/deploy/portainer/docker-compose.yml +++ b/deploy/portainer/docker-compose.yml @@ -85,7 +85,6 @@ services: <<: *common-env HTTP_PORT: 20500 MQTT_ENABLED: "true" - XINDA_PUSH_ENABLED: "false" KAFKA_CONSUMER_ENABLED: "false" KAFKA_NODE_ID: ${KAFKA_NODE_ID_MQTT:-yutong-mqtt-portainer} KAFKA_TOPIC_PARTNER_EVENT: ${KAFKA_TOPIC_MQTT_EVENT:-vehicle.event.mqtt-yutong.v1} diff --git a/docs/module-data-flow.html b/docs/module-data-flow.html index f28432b2..f38807f7 100644 --- a/docs/module-data-flow.html +++ b/docs/module-data-flow.html @@ -258,7 +258,7 @@

一、系统定位

当前项目不是业务库写入服务。它的核心职责是把 GB/T 32960、JT/T 808、JT/T 1078、JSATL12、 - MQTT、信达 Push 等不同来源的车辆数据统一转换为 VehicleEvent 和全字段 TelemetrySnapshot, + MQTT 等不同来源的车辆数据统一转换为 VehicleEvent 和全字段 TelemetrySnapshot, 再通过 Kafka、原始报文归档、Parquet 明细文件库、Redis 热状态和独立统计模块交给下游业务。

@@ -289,7 +289,6 @@ flowchart TB subgraph external["外部来源"] vehicle["车辆终端
GB/T 32960 / JT808 / JT1078"] mqttSource["车企或平台 MQTT"] - xindaSource["信达 Push"] commandClient["业务系统 / 运维平台
HTTP 下行命令"] end @@ -303,7 +302,6 @@ flowchart TB subgraph inbound["入口适配 modules/inbound"] mqtt["inbound-mqtt
MQTT endpoint 生命周期、PEM TLS"] mqttProfile["MqttProfileRegistry
按 endpoint profile 解析/映射"] - xinda["inbound-xinda-push
HTTP Push 适配"] end subgraph protocolBase["核心与公共能力 modules/core"] @@ -341,7 +339,6 @@ flowchart TB mqttSource --> mqtt mqtt --> mqttProfile mqttProfile --> api - xindaSource --> xinda commandClient --> gateway gb --> codec @@ -351,8 +348,6 @@ flowchart TB gb --> api jt808 --> api - xinda --> api - xinda --> dispatcher jsatl12 --> archive jsatl12 --> jt808 @@ -371,7 +366,6 @@ flowchart TB session --> gb identity --> jt808 identity --> mqttProfile - identity --> xinda obs -.监控.-> dispatcher obs -.监控.-> bus @@ -379,7 +373,6 @@ flowchart TB bootall -.装配.-> gb bootall -.装配.-> jt808 bootall -.装配.-> mqtt - bootall -.装配.-> xinda bootall -.装配.-> mq bootall -.装配.-> archive bootall -.装配.-> fileStore @@ -393,7 +386,7 @@ flowchart TB classDef command fill:#f5f3ff,stroke:#6d28d9,color:#4c1d95; classDef support fill:#f8fafc,stroke:#64748b,color:#334155; - class gb,jt808,jt1078,jsatl12,mqtt,mqttProfile,xinda entry; + class gb,jt808,jt1078,jsatl12,mqtt,mqttProfile entry; class api,registry,dispatcher,bus,identity core; class mq,archive,fileStore sink; class gateway,session command; @@ -580,13 +573,6 @@ flowchart LR 统一 RawFrame、Realtime、Location、Passthrough。 车企平台接入profile 扩展身份映射双向 TLS错误隔离 - - modules/inbound/inbound-xinda-push - 信达 Push 接入适配,基于 PushClient 接收真实协议帧并统一转换为 RawFrame;入站 RawFrame 和事件映射均接入统一车辆身份解析,冷存和事件 metadata 均携带内部 vin,并保留 externalVin、phone、deviceId、plateNo、identityResolved、identitySource;0200 映射 Location,并将 totalMileage、mileage 等里程别名归一为内部字段 total_mileage_km;0300 映射标准 AlarmPayload,氢气泄漏类报警统一提升为 HYDROGEN_LEAK/CRITICAL 并标记 hydrogenLeakDetected、hydrogenLeakActionRequired,报警元数据保留 alarmType、alarmName、alarmLevel;未知业务 cmd、非法十六进制 cmd、JSON 异常、身份解析/业务处理异常、启动配置缺失、启动异常、登录拒绝和坏登录应答均兜底为 Passthrough,运行类错误按 vin=unknown、identityResolved=false、identitySource=UNKNOWN 归档,非法 cmd 命令码归零并标记 malformedCommand,业务消息 JSON 异常会在 RawArchive metadata 和最终 Passthrough 事件同时保留 parseErrorMessage,业务处理异常会保留原始 payload 并标记 operationalError、phase=message 和 reason,便于归档追溯。 - 信达 Push payload。 - RawFrame、Location、Passthrough、operational error。 - 第三方平台接入统一 Dispatcher身份映射 - modules/sinks/sink-mq Kafka Sink。把 VehicleEvent 转成 Protobuf Envelope,按 VIN 分区投递;业务事件携带全字段 TelemetrySnapshot 和 rawArchiveUri,显式 RawArchive Envelope 会填充 archive:// 逻辑 URI 与 size,默认 Kafka Sink 仍不发送原始 bytes 本体;同时提供 KafkaEnvelopeConsumerFactory、KafkaEnvelopeConsumerRunner、KafkaEnvelopeConsumerWorker 和 KafkaEnvelopeDeadLetterSink,统一服务侧 Kafka 消费启动、独立 group 绑定、死信发布和 topic 到 EnvelopeConsumerProcessor 的分发。 diff --git a/modules/services/event-history-service/src/main/java/com/lingniu/ingest/eventhistory/LocationHistoryController.java b/modules/services/event-history-service/src/main/java/com/lingniu/ingest/eventhistory/LocationHistoryController.java index 7ac4c90c..abeb17f4 100644 --- a/modules/services/event-history-service/src/main/java/com/lingniu/ingest/eventhistory/LocationHistoryController.java +++ b/modules/services/event-history-service/src/main/java/com/lingniu/ingest/eventhistory/LocationHistoryController.java @@ -44,11 +44,11 @@ public final class LocationHistoryController { summary = "查询车辆位置历史", description = "按协议、车辆标识和时间范围查询 TDengine 位置点。分页使用 cursorTs + cursorId,不使用 offset。") public LocationPageResponse locations( - @Parameter(description = "协议名,例如 GB32960、JT808、MQTT_YUTONG、XINDA_PUSH。", required = true, example = "MQTT_YUTONG") + @Parameter(description = "协议名,例如 GB32960、JT808、MQTT_YUTONG。", required = true, example = "MQTT_YUTONG") @RequestParam String protocol, @Parameter(description = "内部车辆键。传入后优先使用。", example = "LMRKH9AC2R1004087") @RequestParam(required = false) String vehicleKey, - @Parameter(description = "VIN。GB32960、宇通、信达通常可直接用 VIN。", example = "LMRKH9AC2R1004087") + @Parameter(description = "VIN。GB32960、宇通通常可直接用 VIN。", example = "LMRKH9AC2R1004087") @RequestParam(required = false) String vin, @Parameter(description = "JT808 终端手机号或终端标识;JT808 会自动映射为 jt808:。", example = "g7gps") @RequestParam(required = false) String phone, diff --git a/modules/services/event-history-service/src/main/java/com/lingniu/ingest/eventhistory/RawFrameHistoryController.java b/modules/services/event-history-service/src/main/java/com/lingniu/ingest/eventhistory/RawFrameHistoryController.java index bd117cac..71f0b797 100644 --- a/modules/services/event-history-service/src/main/java/com/lingniu/ingest/eventhistory/RawFrameHistoryController.java +++ b/modules/services/event-history-service/src/main/java/com/lingniu/ingest/eventhistory/RawFrameHistoryController.java @@ -57,7 +57,7 @@ public final class RawFrameHistoryController { description = "按 protocol、vehicleKey、VIN、phone、messageId、parseStatus 和时间范围查询 TDengine raw_frames。" + "返回 metadataJson 与 rawUri,分页使用 cursorTs + cursorId。") public RawFramePageResponse rawFrames( - @Parameter(description = "协议类型,例如 GB32960、JT808、MQTT_YUTONG、XINDA_PUSH。", example = "JT808") + @Parameter(description = "协议类型,例如 GB32960、JT808、MQTT_YUTONG。", example = "JT808") @RequestParam String protocol, @Parameter(description = "内部车辆键;传入后精确过滤 vehicle_key。", example = "jt808:g7gps") @RequestParam(required = false) String vehicleKey, diff --git a/pom.xml b/pom.xml index 397c842d..774a239b 100644 --- a/pom.xml +++ b/pom.xml @@ -52,6 +52,20 @@ modules/inbound/inbound-xinda-push modules/apps/xinda-push-app + + + + com.lingniu.ingest + inbound-xinda-push + ${project.version} + + + com.lingniu.ingest + xinda-push-app + ${project.version} + + + @@ -253,11 +267,6 @@ inbound-mqtt ${project.version} - - com.lingniu.ingest - inbound-xinda-push - ${project.version} - com.lingniu.ingest command-gateway @@ -278,11 +287,6 @@ yutong-mqtt-app ${project.version} - - com.lingniu.ingest - xinda-push-app - ${project.version} - com.lingniu.ingest vehicle-history-app