diff --git a/DECISIONS.md b/DECISIONS.md index affc2ebb..d80b4e3c 100644 --- a/DECISIONS.md +++ b/DECISIONS.md @@ -90,3 +90,12 @@ 2. vehicle-state-service 仅保留在 `optional-latest-state` profile,需要 Redis 最新状态查询能力时显式构建。 3. 默认优化和验证优先覆盖活跃接入、TDengine 历史和 MySQL 指标链路。 - **Consequences**: 默认构建和部署边界继续收窄;最新状态能力保持源码可用,但其测试需要通过 `-Poptional-latest-state` 显式运行。 + +## ADR-014 raw-archive-store 原型实现:Optional only +- **Status**: Accepted +- **Context**: 默认生产 raw bytes 写入由 `sink-archive` 负责,历史查询通过 TDengine `raw_frames` 和 `archive://...` 引用追溯;`raw-archive-store` 当前只是独立读写接口和本地实现原型,没有默认 app 或 service 依赖。 +- **Decision**: + 1. `raw-archive-store` 不进入默认 Maven reactor。 + 2. raw-archive-store 仅保留在 `optional-raw-archive-store` profile,需要验证本地读写原型时显式构建。 + 3. 默认生产链路继续以 `sink-archive`、Kafka raw topic、TDengine raw_frames 为准。 +- **Consequences**: 默认构建少一个未部署模块;本地 raw archive 原型仍可通过 `-Poptional-raw-archive-store` 保留和验证。 diff --git a/docs/target-architecture.md b/docs/target-architecture.md index a9181609..cda92c87 100644 --- a/docs/target-architecture.md +++ b/docs/target-architecture.md @@ -188,6 +188,8 @@ flowchart LR `optional-attachments`. - vehicle-state-service is absent from the default Maven reactor and available through `optional-latest-state`. +- raw-archive-store is absent from the default Maven reactor and available + through `optional-raw-archive-store`. - History APIs read from TDengine by default; Parquet/DuckDB is optional compatibility only. - Raw frame queries can return complete parsed JSON through `payloadJson.parsed`. 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 d55a8cb1..c1098584 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 @@ -52,6 +52,17 @@ class MavenModuleProfileTest { .containsExactly("modules/services/vehicle-state-service"); } + @Test + void rawArchiveStorePrototypeIsOptionalAndOutsideDefaultProductionReactor() throws Exception { + Document pom = rootPom(); + + assertThat(defaultModules(pom)) + .doesNotContain("modules/sinks/raw-archive-store"); + + assertThat(profileModules(pom, "optional-raw-archive-store")) + .containsExactly("modules/sinks/raw-archive-store"); + } + @Test void xindaIsLegacyOnlyAndOutsideDefaultProductionReactor() throws Exception { Document pom = rootPom(); @@ -121,6 +132,7 @@ class MavenModuleProfileTest { .contains("Xinda Push 仅保留在 `legacy-xinda` profile") .contains("JSATL12 仅保留在 `optional-attachments` profile") .contains("vehicle-state-service 仅保留在 `optional-latest-state` profile") + .contains("raw-archive-store 仅保留在 `optional-raw-archive-store` profile") .doesNotContain("## ADR-004 信达 Push:保留模块但彻底重写\n- **Status**: Accepted") .doesNotContain("Spring Boot 3.4.x"); } diff --git a/pom.xml b/pom.xml index 0ac5f217..3e549617 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,6 @@ modules/core/observability modules/sinks/sink-mq modules/sinks/sink-archive - modules/sinks/raw-archive-store modules/sinks/event-file-store modules/sinks/tdengine-history-store modules/services/event-history-service @@ -61,6 +60,12 @@ modules/services/vehicle-state-service + + optional-raw-archive-store + + modules/sinks/raw-archive-store + + legacy-xinda