diff --git a/README.md b/README.md
index 3ab20276..710a4ff6 100644
--- a/README.md
+++ b/README.md
@@ -24,7 +24,7 @@
| 会话索引 | Redis |
| 熔断/限流 | Resilience4j 2 |
| 可观测 | Micrometer + Prometheus |
-| 冷存 | S3 / OSS / 本地 |
+| 冷存 | 本地文件系统 |
| 构建 | Maven |
## 模块划分
diff --git a/docs/module-data-flow.html b/docs/module-data-flow.html
index 89d7ba19..3220eba3 100644
--- a/docs/module-data-flow.html
+++ b/docs/module-data-flow.html
@@ -318,7 +318,7 @@ flowchart TB
subgraph sink["输出与明细存储 modules/sinks"]
kafka["sink-kafka
VehicleEvent 到 Protobuf Envelope 到 Kafka"]
- archive["sink-archive
RawArchive 到本地/S3/OSS 冷存"]
+ archive["sink-archive
RawArchive 到本地文件系统冷存"]
tdengineStore["tdengine-history-store
TDengine raw_frames + locations"]
end
@@ -444,7 +444,7 @@ sequenceDiagram
原始追溯:
- Dispatcher 为所有带 rawBytes 的 RawFrame 生成统一的 rawArchiveKey,业务事件 metadata 使用 rawArchiveUri=archive://... 指向同一份原始 bytes。归档文件的真实本地/S3/OSS 地址只属于 ArchiveStore,查询、导出和 Kafka Envelope 使用逻辑 URI 解耦存储实现。
+ Dispatcher 为所有带 rawBytes 的 RawFrame 生成统一的 rawArchiveKey,业务事件 metadata 使用 rawArchiveUri=archive://... 指向同一份原始 bytes。归档文件的真实本地路径只属于 ArchiveStore,查询、导出和 Kafka Envelope 使用逻辑 URI 解耦存储实现。
@@ -584,7 +584,7 @@ flowchart LR
| modules/sinks/sink-archive |
- 原始报文冷存,当前有本地文件系统实现,后续可替换 S3/OSS;写入键与业务事件 metadata 中的 rawArchiveKey 保持一致。 |
+ 原始报文冷存,当前为本地文件系统实现;写入键与业务事件 metadata 中的 rawArchiveKey 保持一致。 |
RawArchive 事件、附件流。 |
可回放原始文件、archive://... 逻辑引用。 |
问题排查合规留痕 |
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 93a2d3d7..6596d66e 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
@@ -191,6 +191,7 @@ class MavenModuleProfileTest {
.contains("Eclipse Paho " + projectProperty(pom, "paho-mqtt.version"))
.contains("session-core/ 设备会话 + 鉴权 + Token + Redis SessionStore")
.contains("| 事件流 | **Kafka**(唯一生产消息通道,vin 分区,保证单车有序) |")
+ .contains("| 冷存 | 本地文件系统 |")
.contains("| 构建 | Maven |")
.contains("protocol-jt1078/ JT/T 1078(optional-command-gateway profile")
.contains("protocol-jsatl12/ 苏标主动安全报警附件(optional-attachments profile)")
@@ -210,6 +211,7 @@ class MavenModuleProfileTest {
.doesNotContain("其他 MQ 后端")
.doesNotContain("Spotless")
.doesNotContain("ArchUnit")
+ .doesNotContain("S3 / OSS / 本地")
.doesNotContain("mvn clean install -DskipTests")
.doesNotContain("-DskipTests")
.doesNotContain("Caffeine 内存降级")
@@ -224,6 +226,26 @@ class MavenModuleProfileTest {
.doesNotContain("| 消息队列 |");
}
+ @Test
+ void archiveBuildSurfaceDocumentsLocalFilesystemOnly() throws Exception {
+ String archivePom = Files.readString(repositoryRoot().resolve("modules/sinks/sink-archive/pom.xml"));
+ String moduleDataFlow = Files.readString(repositoryRoot().resolve("docs/module-data-flow.html"));
+
+ assertThat(archivePom)
+ .contains("原始报文冷存:本地文件系统实现。")
+ .doesNotContain("S3/OSS")
+ .doesNotContain("MinIO")
+ .doesNotContain("software.amazon.awssdk")
+ .doesNotContain("com.aliyun.oss");
+ assertThat(moduleDataFlow)
+ .contains("sink-archive
RawArchive 到本地文件系统冷存")
+ .contains("归档文件的真实本地路径只属于 ArchiveStore")
+ .contains("原始报文冷存,当前为本地文件系统实现")
+ .doesNotContain("本地/S3/OSS")
+ .doesNotContain("S3/OSS")
+ .doesNotContain("MinIO");
+ }
+
@Test
void yutongMqttBuildSurfaceUsesOnlyPahoClient() throws Exception {
Document pom = rootPom();
diff --git a/modules/sinks/sink-archive/pom.xml b/modules/sinks/sink-archive/pom.xml
index aafc63af..08d269e7 100644
--- a/modules/sinks/sink-archive/pom.xml
+++ b/modules/sinks/sink-archive/pom.xml
@@ -9,7 +9,7 @@
sink-archive
sink-archive
- 原始报文冷存:本地文件系统实现 + S3/OSS 扩展点。
+ 原始报文冷存:本地文件系统实现。