fix(01): revise plans based on checker feedback

- Remove AbstractClickHouseIT and application-test.yml from Plan 01-01,
  move to Plan 01-03 Task 1 (reduces 01-01 from 15 to 13 files)
- Change Plan 01-02 Task 1 tdd="true" to tdd="false" (compile-only verify)
- Add DiagramRepository and MetricsRepository flush key_links to Plan 01-02
- Update VALIDATION.md: INGST-06 TTL maps to HealthControllerIT#ttlConfigured*
  instead of non-existent ClickHouseTtlIT

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
hsiegeln
2026-03-11 11:40:20 +01:00
parent e808b567cd
commit da09e5fda7
4 changed files with 67 additions and 74 deletions

View File

@@ -60,7 +60,15 @@ must_haves:
- from: "ClickHouseFlushScheduler.java"
to: "ClickHouseExecutionRepository.java"
via: "insertBatch call"
pattern: "repository\\.insertBatch"
pattern: "executionRepository\\.insertBatch"
- from: "ClickHouseFlushScheduler.java"
to: "ClickHouseDiagramRepository.java"
via: "store call after drain"
pattern: "diagramRepository\\.store"
- from: "ClickHouseFlushScheduler.java"
to: "ClickHouseMetricsRepository.java"
via: "insertBatch call after drain"
pattern: "metricsRepository\\.insertBatch"
---
<objective>
@@ -127,7 +135,7 @@ public class IngestionConfig {
<tasks>
<task type="auto" tdd="true">
<task type="auto" tdd="false">
<name>Task 1: IngestionService, ClickHouse repositories, and flush scheduler</name>
<files>
cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/IngestionService.java,
@@ -136,15 +144,6 @@ public class IngestionConfig {
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
</files>
<behavior>
- IngestionService.acceptExecutions(list) delegates to WriteBuffer.offerBatch, returns boolean
- IngestionService.acceptDiagram(graph) computes content hash, delegates to WriteBuffer.offer
- IngestionService.acceptMetrics(list) delegates to WriteBuffer.offerBatch
- ClickHouseExecutionRepository.insertBatch uses JdbcTemplate.batchUpdate with all columns including Array columns for processor executions
- ClickHouseDiagramRepository.store computes SHA-256 content hash and does INSERT with content_hash dedup
- ClickHouseFlushScheduler runs on @Scheduled(fixedDelayString="${ingestion.flush-interval-ms:1000}"), drains each buffer and calls respective repository.insertBatch
- ClickHouseFlushScheduler implements SmartLifecycle for graceful shutdown (flush remaining on stop)
</behavior>
<action>
1. Create IngestionService in core module (no Spring annotations -- it's a plain class):
- Constructor takes three WriteBuffer instances (executions, diagrams, metrics)