From be2daf986a78f91f7185276a2c10902da3923170 Mon Sep 17 00:00:00 2001 From: lingniu Date: Wed, 1 Jul 2026 06:30:08 +0800 Subject: [PATCH] docs: align module flow with split apps --- docs/module-data-flow.html | 77 +++++++++++++------ .../PortainerComposeResourceLimitsTest.java | 13 ++++ 2 files changed, 66 insertions(+), 24 deletions(-) diff --git a/docs/module-data-flow.html b/docs/module-data-flow.html index 74ac952d..96b97ce8 100644 --- a/docs/module-data-flow.html +++ b/docs/module-data-flow.html @@ -329,15 +329,22 @@ flowchart TB end subgraph apps["应用入口 modules/apps"] - gateway["command-gateway
HTTP 到设备命令入口"] - bootall["bootstrap-all
聚合所有 AutoConfiguration 一体启动"] + gbApp["gb32960-ingest-app
GB32960 TCP 接入"] + jtApp["jt808-ingest-app
JT808 TCP 接入"] + yutongApp["yutong-mqtt-app
宇通 MQTT 接入"] + historyApp["vehicle-history-app
历史查询与 TDengine 写入"] + analyticsApp["vehicle-analytics-app
808 日里程指标消费"] + gateway["command-gateway
可选 HTTP 设备命令入口"] end - vehicle --> gb - vehicle --> jt808 + vehicle --> gbApp + vehicle --> jtApp vehicle --> jt1078 vehicle --> jsatl12 - mqttSource --> mqtt + mqttSource --> yutongApp + gbApp --> gb + jtApp --> jt808 + yutongApp --> mqtt mqtt --> mqttProfile mqttProfile --> api commandClient --> gateway @@ -357,9 +364,11 @@ flowchart TB dispatcher --> bus bus --> mq bus --> archive - mq --> history - mq --> state - mq --> stat + mq --> historyApp + mq --> analyticsApp + historyApp --> history + analyticsApp --> stat + mq -.可选热状态.-> state history --> tdengineStore history -.兼容可选.-> fileStore @@ -372,14 +381,6 @@ flowchart TB obs -.监控.-> dispatcher obs -.监控.-> bus obs -.监控.-> mq - bootall -.装配.-> gb - bootall -.装配.-> jt808 - bootall -.装配.-> mqtt - bootall -.装配.-> mq - bootall -.装配.-> archive - bootall -.装配.-> history - bootall -.装配.-> state - bootall -.装配.-> stat classDef entry fill:#eff6ff,stroke:#2563eb,color:#1e3a8a; classDef core fill:#ecfdf3,stroke:#0f766e,color:#134e48; @@ -387,11 +388,11 @@ 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 entry; + class gb,jt808,jt1078,jsatl12,mqtt,mqttProfile,gbApp,jtApp,yutongApp,historyApp,analyticsApp entry; class api,registry,dispatcher,bus,identity core; class mq,archive,tdengineStore,fileStore sink; class gateway,session command; - class codec,obs,bootall support; + class codec,obs support;
@@ -626,17 +627,45 @@ flowchart LR modules/apps/command-gateway - HTTP 到设备下行命令入口。支持会话查询、808 位置查询、参数查询/设置、终端控制、平台通用应答、终端属性查询 0x8107、区域删除 0x8601、人工报警确认 0x8203,以及 1078 音视频属性查询、实时预览/控制、历史回放/控制、资源列表查询、文件上传/控制;通过 CommandDispatcher 复用 protocol-jt808 的在线通道、流水号和同步应答等待能力。 + 可选 HTTP 到设备下行命令入口。支持会话查询、808 位置查询、参数查询/设置、终端控制、平台通用应答、终端属性查询 0x8107、区域删除 0x8601、人工报警确认 0x8203,以及 1078 音视频属性查询、实时预览/控制、历史回放/控制、资源列表查询、文件上传/控制;通过 CommandDispatcher 复用 protocol-jt808 的在线通道、流水号和同步应答等待能力。 业务系统命令请求。 CommandDispatcher 调用、设备应答摘要。 远程控制参数设置属性查询区域删除报警确认视频控制 - modules/apps/bootstrap-all - 一体化启动模块,聚合各模块 AutoConfiguration 和运行配置。 - application.yml、Spring Boot 启动。 - 完整接入服务实例。 - 部署开关配置 + modules/apps/gb32960-ingest-app + 生产 GB32960 TCP 接入应用,只负责接收、鉴权、解析、冷存引用和 Kafka 投递。 + GB/T 32960 TCP 32960。 + vehicle.raw.gb32960.v1vehicle.event.gb32960.v1。 + 生产接入32960 + + + modules/apps/jt808-ingest-app + 生产 JT808 TCP 接入应用,只负责 808 注册/鉴权/位置等上行解析、冷存引用和 Kafka 投递。 + JT/T 808 TCP 808。 + vehicle.raw.jt808.v1vehicle.event.jt808.v1。 + 生产接入808 + + + modules/apps/yutong-mqtt-app + 生产宇通 MQTT 接入应用,按 endpoint profile 解析 MQTT 报文并投递 Kafka。 + 宇通 MQTT topic。 + vehicle.raw.mqtt-yutong.v1vehicle.event.mqtt-yutong.v1。 + 生产接入MQTT + + + modules/apps/vehicle-history-app + 生产历史应用,消费 32960、808、宇通 MQTT 的 raw/event Kafka Envelope,写 TDengine 并提供历史查询。 + Kafka Protobuf Envelope。 + TDengine raw_frames、位置表和历史查询 API。 + 历史查询raw JSON + + + modules/apps/vehicle-analytics-app + 生产指标应用,当前只消费 JT808 事件并用 GPS 总里程首末差值写每日里程指标。 + vehicle.event.jt808.v1。 + MySQL vehicle_stat_metric。 + 每日里程指标表 diff --git a/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/PortainerComposeResourceLimitsTest.java b/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/PortainerComposeResourceLimitsTest.java index a361b6a1..686e2653 100644 --- a/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/PortainerComposeResourceLimitsTest.java +++ b/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/PortainerComposeResourceLimitsTest.java @@ -150,6 +150,19 @@ class PortainerComposeResourceLimitsTest { .doesNotContain("REDIS_PASSWORD"); } + @Test + void moduleDataFlowShowsSplitProductionAppsInsteadOfDeletedBootstrapAll() throws IOException { + String moduleDataFlow = Files.readString(repositoryRoot().resolve("docs/module-data-flow.html")); + + assertThat(moduleDataFlow) + .contains("gb32960-ingest-app") + .contains("jt808-ingest-app") + .contains("yutong-mqtt-app") + .contains("vehicle-history-app") + .contains("vehicle-analytics-app") + .doesNotContain("bootstrap-all"); + } + private static void assertServiceMemoryLimit(String compose, String serviceName, String envName,