| 01-ingestion-pipeline-api-foundation |
02 |
api |
| rest |
| ingestion |
| clickhouse |
| jdbc |
| backpressure |
| spring-boot |
| integration-tests |
|
| phase |
provides |
| 01-01 |
WriteBuffer, repository interfaces, IngestionConfig, ClickHouse schema |
|
| phase |
provides |
| 01-03 |
AbstractClickHouseIT base class, ProtocolVersionInterceptor, application bootstrap |
|
|
| IngestionService routing data to WriteBuffer instances |
| ClickHouseExecutionRepository with batch insert and parallel processor arrays |
| ClickHouseDiagramRepository with SHA-256 content-hash deduplication |
| ClickHouseMetricsRepository with batch insert for agent_metrics |
| ClickHouseFlushScheduler with SmartLifecycle shutdown flush |
| POST /api/v1/data/executions endpoint (single and array) |
| POST /api/v1/data/diagrams endpoint (single and array) |
| POST /api/v1/data/metrics endpoint (array) |
| Backpressure |
| 503 with Retry-After when buffer full |
|
| 11 integration tests verifying end-to-end ingestion pipeline |
|
| 02-search |
| 03-agent-registry |
|
| added |
patterns |
|
|
| single/array JSON payload parsing via raw String body |
| SmartLifecycle for graceful shutdown flush |
| BatchPreparedStatementSetter for ClickHouse batch inserts |
| SHA-256 content-hash dedup for diagrams |
|
|
| created |
modified |
| cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/IngestionService.java |
| cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseExecutionRepository.java |
| cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseDiagramRepository.java |
| cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseMetricsRepository.java |
| cameleer3-server-app/src/main/java/com/cameleer3/server/app/ingestion/ClickHouseFlushScheduler.java |
| cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/IngestionBeanConfig.java |
| cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ExecutionController.java |
| cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DiagramController.java |
| cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/MetricsController.java |
| cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/ExecutionControllerIT.java |
| cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/DiagramControllerIT.java |
| cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/MetricsControllerIT.java |
| cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/BackpressureIT.java |
|
| cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/IngestionConfig.java |
|
|
| Controllers accept raw String body and detect single vs array JSON to support both payload formats |
| IngestionService is a plain class in core module, wired as a bean by IngestionBeanConfig in app module |
| Removed @Configuration from IngestionConfig to fix duplicate bean with @EnableConfigurationProperties |
|
| Controller pattern: accept raw String body, parse single/array JSON, delegate to IngestionService, return 202 or 503 |
| Repository pattern: BatchPreparedStatementSetter for ClickHouse batch inserts |
| FlushScheduler pattern: SmartLifecycle for graceful shutdown, loop-drain until empty |
| Backpressure pattern: WriteBuffer.offer returns false -> controller returns 503 + Retry-After |
|
| INGST-01 |
| INGST-02 |
| INGST-03 |
| INGST-05 |
|
7min |
2026-03-11 |