chore: document local archive storage only

This commit is contained in:
lingniu
2026-07-01 15:48:15 +08:00
parent c359a0683e
commit 5971d1a8c3
4 changed files with 27 additions and 5 deletions

View File

@@ -24,7 +24,7 @@
| 会话索引 | Redis |
| 熔断/限流 | Resilience4j 2 |
| 可观测 | Micrometer + Prometheus |
| 冷存 | S3 / OSS / 本地 |
| 冷存 | 本地文件系统 |
| 构建 | Maven |
## 模块划分

View File

@@ -318,7 +318,7 @@ flowchart TB
subgraph sink["输出与明细存储 modules/sinks"]
kafka["sink-kafka<br/>VehicleEvent 到 Protobuf Envelope 到 Kafka"]
archive["sink-archive<br/>RawArchive 到本地/S3/OSS 冷存"]
archive["sink-archive<br/>RawArchive 到本地文件系统冷存"]
tdengineStore["tdengine-history-store<br/>TDengine raw_frames + locations"]
end
@@ -444,7 +444,7 @@ sequenceDiagram
</div>
<div class="callout">
<strong>原始追溯:</strong>
Dispatcher 为所有带 rawBytes 的 RawFrame 生成统一的 <code>rawArchiveKey</code>,业务事件 metadata 使用 <code>rawArchiveUri=archive://...</code> 指向同一份原始 bytes。归档文件的真实本地/S3/OSS 地址只属于 ArchiveStore查询、导出和 Kafka Envelope 使用逻辑 URI 解耦存储实现。
Dispatcher 为所有带 rawBytes 的 RawFrame 生成统一的 <code>rawArchiveKey</code>,业务事件 metadata 使用 <code>rawArchiveUri=archive://...</code> 指向同一份原始 bytes。归档文件的真实本地路径只属于 ArchiveStore查询、导出和 Kafka Envelope 使用逻辑 URI 解耦存储实现。
</div>
</section>
@@ -584,7 +584,7 @@ flowchart LR
</tr>
<tr>
<td>modules/sinks/sink-archive</td>
<td>原始报文冷存,当前本地文件系统实现,后续可替换 S3/OSS;写入键与业务事件 metadata 中的 <code>rawArchiveKey</code> 保持一致。</td>
<td>原始报文冷存,当前本地文件系统实现;写入键与业务事件 metadata 中的 <code>rawArchiveKey</code> 保持一致。</td>
<td>RawArchive 事件、附件流。</td>
<td>可回放原始文件、<code>archive://...</code> 逻辑引用。</td>
<td><span class="tag amber">问题排查</span><span class="tag amber">合规留痕</span></td>

View File

@@ -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 1078optional-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<br/>RawArchive 到本地文件系统冷存")
.contains("归档文件的真实本地路径只属于 ArchiveStore")
.contains("原始报文冷存,当前为本地文件系统实现")
.doesNotContain("本地/S3/OSS")
.doesNotContain("S3/OSS")
.doesNotContain("MinIO");
}
@Test
void yutongMqttBuildSurfaceUsesOnlyPahoClient() throws Exception {
Document pom = rootPom();

View File

@@ -9,7 +9,7 @@
</parent>
<artifactId>sink-archive</artifactId>
<name>sink-archive</name>
<description>原始报文冷存:本地文件系统实现 + S3/OSS 扩展点</description>
<description>原始报文冷存:本地文件系统实现。</description>
<dependencies>
<dependency>