chore: rename cameleer3 to cameleer
Rename Java packages from com.cameleer3 to com.cameleer, module directories from cameleer3-* to cameleer-*, and all references throughout workflows, Dockerfiles, docs, migrations, and pom.xml. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,17 +6,17 @@ wave: 1
|
||||
depends_on: []
|
||||
files_modified:
|
||||
- clickhouse/init/02-search-columns.sql
|
||||
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchRequest.java
|
||||
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchResult.java
|
||||
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchEngine.java
|
||||
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchService.java
|
||||
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/ExecutionSummary.java
|
||||
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/DetailService.java
|
||||
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/ExecutionDetail.java
|
||||
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/ProcessorNode.java
|
||||
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/ExecutionRepository.java
|
||||
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseExecutionRepository.java
|
||||
- cameleer3-server-app/src/test/java/com/cameleer3/server/app/AbstractClickHouseIT.java
|
||||
- cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchRequest.java
|
||||
- cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchResult.java
|
||||
- cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchEngine.java
|
||||
- cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchService.java
|
||||
- cameleer-server-core/src/main/java/com/cameleer/server/core/search/ExecutionSummary.java
|
||||
- cameleer-server-core/src/main/java/com/cameleer/server/core/detail/DetailService.java
|
||||
- cameleer-server-core/src/main/java/com/cameleer/server/core/detail/ExecutionDetail.java
|
||||
- cameleer-server-core/src/main/java/com/cameleer/server/core/detail/ProcessorNode.java
|
||||
- cameleer-server-core/src/main/java/com/cameleer/server/core/storage/ExecutionRepository.java
|
||||
- cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseExecutionRepository.java
|
||||
- cameleer-server-app/src/test/java/com/cameleer/server/app/AbstractClickHouseIT.java
|
||||
autonomous: true
|
||||
requirements:
|
||||
- SRCH-01
|
||||
@@ -38,21 +38,21 @@ must_haves:
|
||||
- path: "clickhouse/init/02-search-columns.sql"
|
||||
provides: "Schema extension DDL for Phase 2 columns and skip indexes"
|
||||
contains: "exchange_bodies"
|
||||
- path: "cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchEngine.java"
|
||||
- path: "cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchEngine.java"
|
||||
provides: "Search backend abstraction interface"
|
||||
exports: ["SearchEngine"]
|
||||
- path: "cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchRequest.java"
|
||||
- path: "cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchRequest.java"
|
||||
provides: "Immutable search criteria record"
|
||||
exports: ["SearchRequest"]
|
||||
- path: "cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseExecutionRepository.java"
|
||||
- path: "cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseExecutionRepository.java"
|
||||
provides: "Extended with new columns in INSERT, plus query methods"
|
||||
min_lines: 100
|
||||
key_links:
|
||||
- from: "cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchService.java"
|
||||
- from: "cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchService.java"
|
||||
to: "SearchEngine"
|
||||
via: "constructor injection"
|
||||
pattern: "SearchEngine"
|
||||
- from: "cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseExecutionRepository.java"
|
||||
- from: "cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseExecutionRepository.java"
|
||||
to: "clickhouse/init/02-search-columns.sql"
|
||||
via: "INSERT and SELECT SQL matching schema"
|
||||
pattern: "exchange_bodies|processor_depths|diagram_content_hash"
|
||||
@@ -79,22 +79,22 @@ Output: Schema migration SQL, updated ingestion INSERT with new columns, core se
|
||||
@.planning/phases/02-transaction-search-diagrams/02-RESEARCH.md
|
||||
|
||||
@clickhouse/init/01-schema.sql
|
||||
@cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/ExecutionRepository.java
|
||||
@cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/DiagramRepository.java
|
||||
@cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseExecutionRepository.java
|
||||
@cameleer3-server-app/src/test/java/com/cameleer3/server/app/AbstractClickHouseIT.java
|
||||
@cameleer-server-core/src/main/java/com/cameleer/server/core/storage/ExecutionRepository.java
|
||||
@cameleer-server-core/src/main/java/com/cameleer/server/core/storage/DiagramRepository.java
|
||||
@cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseExecutionRepository.java
|
||||
@cameleer-server-app/src/test/java/com/cameleer/server/app/AbstractClickHouseIT.java
|
||||
|
||||
<interfaces>
|
||||
<!-- Existing interfaces the executor needs -->
|
||||
|
||||
From cameleer3-server-core/.../storage/ExecutionRepository.java:
|
||||
From cameleer-server-core/.../storage/ExecutionRepository.java:
|
||||
```java
|
||||
public interface ExecutionRepository {
|
||||
void insertBatch(List<RouteExecution> executions);
|
||||
}
|
||||
```
|
||||
|
||||
From cameleer3-server-core/.../storage/DiagramRepository.java:
|
||||
From cameleer-server-core/.../storage/DiagramRepository.java:
|
||||
```java
|
||||
public interface DiagramRepository {
|
||||
void store(RouteGraph graph);
|
||||
@@ -103,7 +103,7 @@ public interface DiagramRepository {
|
||||
}
|
||||
```
|
||||
|
||||
From cameleer3-common (decompiled — key fields):
|
||||
From cameleer-common (decompiled — key fields):
|
||||
```java
|
||||
// RouteExecution: routeId, status (ExecutionStatus enum: COMPLETED/FAILED/RUNNING),
|
||||
// startTime (Instant), endTime (Instant), durationMs (long), correlationId, exchangeId,
|
||||
@@ -145,15 +145,15 @@ Existing ClickHouse schema (01-schema.sql):
|
||||
<name>Task 1: Schema extension and core domain types</name>
|
||||
<files>
|
||||
clickhouse/init/02-search-columns.sql,
|
||||
cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchRequest.java,
|
||||
cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchResult.java,
|
||||
cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchEngine.java,
|
||||
cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchService.java,
|
||||
cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/ExecutionSummary.java,
|
||||
cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/DetailService.java,
|
||||
cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/ExecutionDetail.java,
|
||||
cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/ProcessorNode.java,
|
||||
cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/ExecutionRepository.java
|
||||
cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchRequest.java,
|
||||
cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchResult.java,
|
||||
cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchEngine.java,
|
||||
cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchService.java,
|
||||
cameleer-server-core/src/main/java/com/cameleer/server/core/search/ExecutionSummary.java,
|
||||
cameleer-server-core/src/main/java/com/cameleer/server/core/detail/DetailService.java,
|
||||
cameleer-server-core/src/main/java/com/cameleer/server/core/detail/ExecutionDetail.java,
|
||||
cameleer-server-core/src/main/java/com/cameleer/server/core/detail/ProcessorNode.java,
|
||||
cameleer-server-core/src/main/java/com/cameleer/server/core/storage/ExecutionRepository.java
|
||||
</files>
|
||||
<action>
|
||||
1. Create `clickhouse/init/02-search-columns.sql` with ALTER TABLE statements to add Phase 2 columns to route_executions:
|
||||
@@ -172,14 +172,14 @@ Existing ClickHouse schema (01-schema.sql):
|
||||
- Add tokenbf_v1 skip indexes on exchange_bodies and exchange_headers (GRANULARITY 4, same as idx_error)
|
||||
- Add tokenbf_v1 skip index on error_stacktrace (it has no index yet, needed for SRCH-05 full-text search across stack traces)
|
||||
|
||||
2. Create core search domain types in `com.cameleer3.server.core.search`:
|
||||
2. Create core search domain types in `com.cameleer.server.core.search`:
|
||||
- `SearchRequest` record: status (String, nullable), timeFrom (Instant), timeTo (Instant), durationMin (Long), durationMax (Long), correlationId (String), text (String — global full-text), textInBody (String), textInHeaders (String), textInErrors (String), offset (int), limit (int). Compact constructor validates: limit defaults to 50 if <= 0, capped at 500; offset defaults to 0 if < 0.
|
||||
- `SearchResult<T>` record: data (List<T>), total (long), offset (int), limit (int). Include static factory `empty(int offset, int limit)`.
|
||||
- `ExecutionSummary` record: executionId (String), routeId (String), agentId (String), status (String), startTime (Instant), endTime (Instant), durationMs (long), correlationId (String), errorMessage (String), diagramContentHash (String). This is the lightweight list-view DTO — NOT the full processor arrays.
|
||||
- `SearchEngine` interface with methods: `SearchResult<ExecutionSummary> search(SearchRequest request)` and `long count(SearchRequest request)`. This is the swappable backend (ClickHouse now, OpenSearch later per user decision).
|
||||
- `SearchService` class: plain class (no Spring annotations, same pattern as IngestionService). Constructor takes SearchEngine. `search(SearchRequest)` delegates to engine.search(). This thin orchestration layer allows adding cross-cutting concerns later.
|
||||
|
||||
3. Create core detail domain types in `com.cameleer3.server.core.detail`:
|
||||
3. Create core detail domain types in `com.cameleer.server.core.detail`:
|
||||
- `ProcessorNode` record: processorId (String), processorType (String), status (String), startTime (Instant), endTime (Instant), durationMs (long), diagramNodeId (String), errorMessage (String), errorStackTrace (String), children (List<ProcessorNode>). This is the nested tree node.
|
||||
- `ExecutionDetail` record: executionId (String), routeId (String), agentId (String), status (String), startTime (Instant), endTime (Instant), durationMs (long), correlationId (String), exchangeId (String), errorMessage (String), errorStackTrace (String), diagramContentHash (String), processors (List<ProcessorNode>). This is the full detail response.
|
||||
- `DetailService` class: plain class (no Spring annotations). Constructor takes ExecutionRepository. Method `getDetail(String executionId)` returns `Optional<ExecutionDetail>`. Calls repository's new `findDetailById` method, then calls `reconstructTree()` to convert flat arrays into nested ProcessorNode tree. The `reconstructTree` method: takes parallel arrays (ids, types, statuses, starts, ends, durations, diagramNodeIds, errorMessages, errorStackTraces, depths, parentIndexes), creates ProcessorNode[] array, then wires children using parentIndexes (parentIndex == -1 means root).
|
||||
@@ -190,7 +190,7 @@ Existing ClickHouse schema (01-schema.sql):
|
||||
Actually, use a different approach per the layering: add a `findRawById(String executionId)` method that returns `Optional<RawExecutionRow>` — a new record containing all parallel arrays. DetailService takes this and reconstructs. Create `RawExecutionRow` as a record in the detail package with all fields needed for reconstruction.
|
||||
</action>
|
||||
<verify>
|
||||
<automated>cd C:/Users/Hendrik/Documents/projects/cameleer3-server && mvn compile -pl cameleer3-server-core</automated>
|
||||
<automated>cd C:/Users/Hendrik/Documents/projects/cameleer-server && mvn compile -pl cameleer-server-core</automated>
|
||||
</verify>
|
||||
<done>Schema migration SQL exists, all core domain types compile, SearchEngine interface and SearchService defined, ExecutionRepository extended with query method, DetailService has tree reconstruction logic</done>
|
||||
</task>
|
||||
@@ -198,9 +198,9 @@ Existing ClickHouse schema (01-schema.sql):
|
||||
<task type="auto" tdd="true">
|
||||
<name>Task 2: Update ingestion to populate new columns and verify with integration test</name>
|
||||
<files>
|
||||
cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseExecutionRepository.java,
|
||||
cameleer3-server-app/src/test/java/com/cameleer3/server/app/AbstractClickHouseIT.java,
|
||||
cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/IngestionSchemaIT.java
|
||||
cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseExecutionRepository.java,
|
||||
cameleer-server-app/src/test/java/com/cameleer/server/app/AbstractClickHouseIT.java,
|
||||
cameleer-server-app/src/test/java/com/cameleer/server/app/storage/IngestionSchemaIT.java
|
||||
</files>
|
||||
<behavior>
|
||||
- Test: After inserting a RouteExecution with processors that have exchange snapshots and nested children, the route_executions row has non-empty exchange_bodies, exchange_headers, processor_depths (correct depth values), processor_parent_indexes (correct parent wiring), processor_input_bodies, processor_output_bodies, processor_input_headers, processor_output_headers, processor_diagram_node_ids, and diagram_content_hash columns
|
||||
@@ -231,7 +231,7 @@ Existing ClickHouse schema (01-schema.sql):
|
||||
- Verifies a second insertion with null snapshots succeeds with empty defaults
|
||||
</action>
|
||||
<verify>
|
||||
<automated>cd C:/Users/Hendrik/Documents/projects/cameleer3-server && mvn test -pl cameleer3-server-app -Dtest=IngestionSchemaIT</automated>
|
||||
<automated>cd C:/Users/Hendrik/Documents/projects/cameleer-server && mvn test -pl cameleer-server-app -Dtest=IngestionSchemaIT</automated>
|
||||
</verify>
|
||||
<done>All new columns populated correctly during ingestion, tree metadata (depth/parent) correct for nested processors, exchange data concatenated for search, existing ingestion tests still pass</done>
|
||||
</task>
|
||||
@@ -239,9 +239,9 @@ Existing ClickHouse schema (01-schema.sql):
|
||||
</tasks>
|
||||
|
||||
<verification>
|
||||
- `mvn compile -pl cameleer3-server-core` succeeds (core domain types compile)
|
||||
- `mvn test -pl cameleer3-server-app -Dtest=IngestionSchemaIT` passes (new columns populated correctly)
|
||||
- `mvn test -pl cameleer3-server-app` passes (all existing tests still green with schema extension)
|
||||
- `mvn compile -pl cameleer-server-core` succeeds (core domain types compile)
|
||||
- `mvn test -pl cameleer-server-app -Dtest=IngestionSchemaIT` passes (new columns populated correctly)
|
||||
- `mvn test -pl cameleer-server-app` passes (all existing tests still green with schema extension)
|
||||
</verification>
|
||||
|
||||
<success_criteria>
|
||||
|
||||
Reference in New Issue
Block a user