docs: clarify default data flow

This commit is contained in:
lingniu
2026-07-01 16:19:03 +08:00
parent f4ce4557c0
commit ccf77b4596
2 changed files with 11 additions and 2 deletions

View File

@@ -154,6 +154,8 @@ source of truth for historical queries.
## Data Flow ## Data Flow
Default production flow:
```mermaid ```mermaid
flowchart LR flowchart LR
vehicle["Vehicles / Platforms"] --> ingest["Protocol apps"] vehicle["Vehicles / Platforms"] --> ingest["Protocol apps"]
@@ -161,12 +163,14 @@ flowchart LR
ingest --> kafka["Kafka<br/>event + raw envelopes"] ingest --> kafka["Kafka<br/>event + raw envelopes"]
kafka --> history["vehicle-history-app"] kafka --> history["vehicle-history-app"]
kafka --> analytics["vehicle-analytics-app"] kafka --> analytics["vehicle-analytics-app"]
kafka --> state["vehicle-state-service"]
history --> tdengine["TDengine<br/>raw_frames + locations"] history --> tdengine["TDengine<br/>raw_frames + locations"]
analytics --> mysql["MySQL<br/>vehicle_stat_metric"] analytics --> mysql["MySQL<br/>vehicle_stat_metric"]
state --> redisState["Redis<br/>latest state"]
``` ```
Optional latest-state flow, enabled only with `-Poptional-latest-state`, consumes
the same Kafka envelopes and rebuilds Redis snapshots outside the default
production deployment.
## Failure Handling ## Failure Handling
- Protocol apps continue accepting traffic when history, analytics, or Redis - Protocol apps continue accepting traffic when history, analytics, or Redis

View File

@@ -494,6 +494,7 @@ class MavenModuleProfileTest {
@Test @Test
void productionDocsMatchCompactHistoryAndJt808OnlyAnalyticsSurface() throws Exception { void productionDocsMatchCompactHistoryAndJt808OnlyAnalyticsSurface() throws Exception {
String moduleDataFlow = Files.readString(repositoryRoot().resolve("docs/module-data-flow.html")); String moduleDataFlow = Files.readString(repositoryRoot().resolve("docs/module-data-flow.html"));
String targetArchitecture = Files.readString(repositoryRoot().resolve("docs/target-architecture.md"));
String tdengineVerification = Files.readString(repositoryRoot() String tdengineVerification = Files.readString(repositoryRoot()
.resolve("docs/operations/vehicle-ingest-tdengine-verification.md")); .resolve("docs/operations/vehicle-ingest-tdengine-verification.md"));
String runbook = Files.readString(repositoryRoot() String runbook = Files.readString(repositoryRoot()
@@ -511,6 +512,10 @@ class MavenModuleProfileTest {
.contains("| `vehicle.event.gb32960.v1` | `gb32960-ingest-app` | `vehicle-history-app` |") .contains("| `vehicle.event.gb32960.v1` | `gb32960-ingest-app` | `vehicle-history-app` |")
.contains("| `vehicle.event.jt808.v1` | `jt808-ingest-app` | `vehicle-history-app`, `vehicle-analytics-app` |") .contains("| `vehicle.event.jt808.v1` | `jt808-ingest-app` | `vehicle-history-app`, `vehicle-analytics-app` |")
.doesNotContain("| `vehicle.event.gb32960.v1` | `gb32960-ingest-app` | `vehicle-history-app`, `vehicle-analytics-app` |"); .doesNotContain("| `vehicle.event.gb32960.v1` | `gb32960-ingest-app` | `vehicle-history-app`, `vehicle-analytics-app` |");
assertThat(targetArchitecture)
.contains("vehicle-state-service is absent from the default Maven reactor")
.doesNotContain("kafka --> state[\"vehicle-state-service\"]")
.doesNotContain("state --> redisState[\"Redis<br/>latest state\"]");
} }
@Test @Test