diff --git a/docs/superpowers/specs/2026-06-29-vehicle-ingest-redesign.md b/docs/superpowers/specs/2026-06-29-vehicle-ingest-redesign.md index 801dab60..531c4f37 100644 --- a/docs/superpowers/specs/2026-06-29-vehicle-ingest-redesign.md +++ b/docs/superpowers/specs/2026-06-29-vehicle-ingest-redesign.md @@ -433,7 +433,7 @@ Realtime APIs: Realtime state APIs: - `GET /api/realtime/vehicles/{vehicleKey}` -- Reads Redis or in-memory latest state, not TDengine. +- Reads Redis latest state, not TDengine. Export: @@ -486,7 +486,7 @@ Read path: - Most high-QPS queries require vehicle key and time range. - Unbounded cross-vehicle queries are admin-only and capped. -- Realtime latest state is served from Redis/in-memory state. +- Realtime latest state is served from Redis latest-state cache. - Raw detail replay reads one raw object and decodes on demand. - Common dictionary and metadata responses are cached in memory. diff --git a/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/MavenModuleProfileTest.java b/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/MavenModuleProfileTest.java index f15006eb..3471a523 100644 --- a/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/MavenModuleProfileTest.java +++ b/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/MavenModuleProfileTest.java @@ -132,6 +132,8 @@ class MavenModuleProfileTest { String runbook = Files.readString(repositoryRoot() .resolve("docs/operations/gb32960-service-split-runbook.md")); String moduleDataFlow = Files.readString(repositoryRoot().resolve("docs/module-data-flow.html")); + String redesignSpec = Files.readString(repositoryRoot() + .resolve("docs/superpowers/specs/2026-06-29-vehicle-ingest-redesign.md")); assertThat(runbook) .contains("Session state requires Redis") @@ -143,6 +145,10 @@ class MavenModuleProfileTest { .contains("SessionStore 仅保留 Redis 后端") .doesNotContain("SessionStore 支持 memory") .doesNotContain("无 Redis 降级"); + assertThat(redesignSpec) + .contains("Reads Redis latest state") + .doesNotContain("Redis or in-memory") + .doesNotContain("Redis/in-memory"); } @Test