docs: align module flow with split apps
This commit is contained in:
@@ -329,15 +329,22 @@ flowchart TB
|
|||||||
end
|
end
|
||||||
|
|
||||||
subgraph apps["应用入口 modules/apps"]
|
subgraph apps["应用入口 modules/apps"]
|
||||||
gateway["command-gateway<br/>HTTP 到设备命令入口"]
|
gbApp["gb32960-ingest-app<br/>GB32960 TCP 接入"]
|
||||||
bootall["bootstrap-all<br/>聚合所有 AutoConfiguration 一体启动"]
|
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
|
end
|
||||||
|
|
||||||
vehicle --> gb
|
vehicle --> gbApp
|
||||||
vehicle --> jt808
|
vehicle --> jtApp
|
||||||
vehicle --> jt1078
|
vehicle --> jt1078
|
||||||
vehicle --> jsatl12
|
vehicle --> jsatl12
|
||||||
mqttSource --> mqtt
|
mqttSource --> yutongApp
|
||||||
|
gbApp --> gb
|
||||||
|
jtApp --> jt808
|
||||||
|
yutongApp --> mqtt
|
||||||
mqtt --> mqttProfile
|
mqtt --> mqttProfile
|
||||||
mqttProfile --> api
|
mqttProfile --> api
|
||||||
commandClient --> gateway
|
commandClient --> gateway
|
||||||
@@ -357,9 +364,11 @@ flowchart TB
|
|||||||
dispatcher --> bus
|
dispatcher --> bus
|
||||||
bus --> mq
|
bus --> mq
|
||||||
bus --> archive
|
bus --> archive
|
||||||
mq --> history
|
mq --> historyApp
|
||||||
mq --> state
|
mq --> analyticsApp
|
||||||
mq --> stat
|
historyApp --> history
|
||||||
|
analyticsApp --> stat
|
||||||
|
mq -.可选热状态.-> state
|
||||||
history --> tdengineStore
|
history --> tdengineStore
|
||||||
history -.兼容可选.-> fileStore
|
history -.兼容可选.-> fileStore
|
||||||
|
|
||||||
@@ -372,14 +381,6 @@ flowchart TB
|
|||||||
obs -.监控.-> dispatcher
|
obs -.监控.-> dispatcher
|
||||||
obs -.监控.-> bus
|
obs -.监控.-> bus
|
||||||
obs -.监控.-> mq
|
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 entry fill:#eff6ff,stroke:#2563eb,color:#1e3a8a;
|
||||||
classDef core fill:#ecfdf3,stroke:#0f766e,color:#134e48;
|
classDef core fill:#ecfdf3,stroke:#0f766e,color:#134e48;
|
||||||
@@ -387,11 +388,11 @@ flowchart TB
|
|||||||
classDef command fill:#f5f3ff,stroke:#6d28d9,color:#4c1d95;
|
classDef command fill:#f5f3ff,stroke:#6d28d9,color:#4c1d95;
|
||||||
classDef support fill:#f8fafc,stroke:#64748b,color:#334155;
|
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 api,registry,dispatcher,bus,identity core;
|
||||||
class mq,archive,tdengineStore,fileStore sink;
|
class mq,archive,tdengineStore,fileStore sink;
|
||||||
class gateway,session command;
|
class gateway,session command;
|
||||||
class codec,obs,bootall support;
|
class codec,obs support;
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div class="legend">
|
<div class="legend">
|
||||||
@@ -626,17 +627,45 @@ flowchart LR
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>modules/apps/command-gateway</td>
|
<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>业务系统命令请求。</td>
|
||||||
<td>CommandDispatcher 调用、设备应答摘要。</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>
|
<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>
|
||||||
<tr>
|
<tr>
|
||||||
<td>modules/apps/bootstrap-all</td>
|
<td>modules/apps/gb32960-ingest-app</td>
|
||||||
<td>一体化启动模块,聚合各模块 AutoConfiguration 和运行配置。</td>
|
<td>生产 GB32960 TCP 接入应用,只负责接收、鉴权、解析、冷存引用和 Kafka 投递。</td>
|
||||||
<td>application.yml、Spring Boot 启动。</td>
|
<td>GB/T 32960 TCP 32960。</td>
|
||||||
<td>完整接入服务实例。</td>
|
<td><code>vehicle.raw.gb32960.v1</code>、<code>vehicle.event.gb32960.v1</code>。</td>
|
||||||
<td><span class="tag green">部署</span><span class="tag green">开关配置</span></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>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -150,6 +150,19 @@ class PortainerComposeResourceLimitsTest {
|
|||||||
.doesNotContain("REDIS_PASSWORD");
|
.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,
|
private static void assertServiceMemoryLimit(String compose,
|
||||||
String serviceName,
|
String serviceName,
|
||||||
String envName,
|
String envName,
|
||||||
|
|||||||
Reference in New Issue
Block a user