docs: align module flow with split apps

This commit is contained in:
lingniu
2026-07-01 06:30:08 +08:00
parent 3e19c72915
commit be2daf986a
2 changed files with 66 additions and 24 deletions

View File

@@ -329,15 +329,22 @@ flowchart TB
end
subgraph apps["应用入口 modules/apps"]
gateway["command-gateway<br/>HTTP 到设备命令入口"]
bootall["bootstrap-all<br/>聚合所有 AutoConfiguration 一体启动"]
gbApp["gb32960-ingest-app<br/>GB32960 TCP 接入"]
jtApp["jt808-ingest-app<br/>JT808 TCP 接入"]
yutongApp["yutong-mqtt-app<br/>宇通 MQTT 接入"]
historyApp["vehicle-history-app<br/>历史查询与 TDengine 写入"]
analyticsApp["vehicle-analytics-app<br/>808 日里程指标消费"]
gateway["command-gateway<br/>可选 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;
</pre>
</div>
<div class="legend">
@@ -626,17 +627,45 @@ flowchart LR
</tr>
<tr>
<td>modules/apps/command-gateway</td>
<td>HTTP 到设备下行命令入口。支持会话查询、808 位置查询、参数查询/设置、终端控制、平台通用应答、终端属性查询 0x8107、区域删除 0x8601、人工报警确认 0x8203以及 1078 音视频属性查询、实时预览/控制、历史回放/控制、资源列表查询、文件上传/控制;通过 CommandDispatcher 复用 protocol-jt808 的在线通道、流水号和同步应答等待能力。</td>
<td>可选 HTTP 到设备下行命令入口。支持会话查询、808 位置查询、参数查询/设置、终端控制、平台通用应答、终端属性查询 0x8107、区域删除 0x8601、人工报警确认 0x8203以及 1078 音视频属性查询、实时预览/控制、历史回放/控制、资源列表查询、文件上传/控制;通过 CommandDispatcher 复用 protocol-jt808 的在线通道、流水号和同步应答等待能力。</td>
<td>业务系统命令请求。</td>
<td>CommandDispatcher 调用、设备应答摘要。</td>
<td><span class="tag">远程控制</span><span class="tag">参数设置</span><span class="tag">属性查询</span><span class="tag">区域删除</span><span class="tag">报警确认</span><span class="tag">视频控制</span></td>
</tr>
<tr>
<td>modules/apps/bootstrap-all</td>
<td>一体化启动模块,聚合各模块 AutoConfiguration 和运行配置</td>
<td>application.yml、Spring Boot 启动</td>
<td>完整接入服务实例</td>
<td><span class="tag green">部署</span><span class="tag green">开关配置</span></td>
<td>modules/apps/gb32960-ingest-app</td>
<td>生产 GB32960 TCP 接入应用,只负责接收、鉴权、解析、冷存引用和 Kafka 投递</td>
<td>GB/T 32960 TCP 32960</td>
<td><code>vehicle.raw.gb32960.v1</code><code>vehicle.event.gb32960.v1</code></td>
<td><span class="tag green">生产接入</span><span class="tag">32960</span></td>
</tr>
<tr>
<td>modules/apps/jt808-ingest-app</td>
<td>生产 JT808 TCP 接入应用,只负责 808 注册/鉴权/位置等上行解析、冷存引用和 Kafka 投递。</td>
<td>JT/T 808 TCP 808。</td>
<td><code>vehicle.raw.jt808.v1</code><code>vehicle.event.jt808.v1</code></td>
<td><span class="tag green">生产接入</span><span class="tag">808</span></td>
</tr>
<tr>
<td>modules/apps/yutong-mqtt-app</td>
<td>生产宇通 MQTT 接入应用,按 endpoint profile 解析 MQTT 报文并投递 Kafka。</td>
<td>宇通 MQTT topic。</td>
<td><code>vehicle.raw.mqtt-yutong.v1</code><code>vehicle.event.mqtt-yutong.v1</code></td>
<td><span class="tag green">生产接入</span><span class="tag">MQTT</span></td>
</tr>
<tr>
<td>modules/apps/vehicle-history-app</td>
<td>生产历史应用,消费 32960、808、宇通 MQTT 的 raw/event Kafka Envelope写 TDengine 并提供历史查询。</td>
<td>Kafka Protobuf Envelope。</td>
<td>TDengine <code>raw_frames</code>、位置表和历史查询 API。</td>
<td><span class="tag green">历史查询</span><span class="tag amber">raw JSON</span></td>
</tr>
<tr>
<td>modules/apps/vehicle-analytics-app</td>
<td>生产指标应用,当前只消费 JT808 事件并用 GPS 总里程首末差值写每日里程指标。</td>
<td><code>vehicle.event.jt808.v1</code></td>
<td>MySQL <code>vehicle_stat_metric</code></td>
<td><span class="tag green">每日里程</span><span class="tag">指标表</span></td>
</tr>
</tbody>
</table>

View File

@@ -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,