Skip to content

Commit a600b20

Browse files
committed
fix(pr): Some PR review fixes
1 parent 666f7bd commit a600b20

8 files changed

Lines changed: 14 additions & 29 deletions

File tree

src/main/java/ai/labs/eddi/datastore/postgres/PostgresContentHashStore.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ public boolean shouldIngest(String sourceId, String documentId, String content)
110110
"ON CONFLICT (source_id, document_id) DO UPDATE SET " +
111111
" hash = EXCLUDED.hash, " +
112112
" stale = false, " +
113+
" stale_at = NULL, " +
113114
" ingested_at = CASE WHEN rag_ingestion_hashes.hash = EXCLUDED.hash THEN rag_ingestion_hashes.ingested_at ELSE ? END, "
114115
+
115116
" updated_at = ? " +

src/main/java/ai/labs/eddi/modules/ingestion/FetchResult.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
*/
55
package ai.labs.eddi.modules.ingestion;
66

7-
import ai.labs.eddi.configs.ingestion.model.SourceConfig;
8-
97
import java.util.List;
108
import java.util.Map;
119

src/main/java/ai/labs/eddi/modules/ingestion/HtmlToMarkdownConverter.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,8 @@
1212
import org.jsoup.nodes.TextNode;
1313
import org.jsoup.select.Elements;
1414

15-
import java.net.MalformedURLException;
1615
import java.net.URI;
1716
import java.net.URISyntaxException;
18-
import java.net.URL;
1917

2018
/**
2119
* Converts HTML to clean Markdown format using JSoup.

src/main/java/ai/labs/eddi/modules/ingestion/MongoContentHashStore.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ public boolean shouldIngest(String sourceId, String documentId, String content)
100100
Updates.set("ingestedAt", now),
101101
Updates.set("updatedAt", now),
102102
Updates.set("stale", false),
103+
Updates.set("staleAt", null),
103104
Updates.setOnInsert("sourceId", sourceId),
104105
Updates.setOnInsert("documentId", documentId));
105106

@@ -142,7 +143,7 @@ public int markStaleDocuments(String sourceId, List<String> documentIds) {
142143
filter,
143144
new Document("$set", new Document()
144145
.append("stale", true)
145-
.append("staleAt", Instant.now().toString())));
146+
.append("staleAt", Instant.now())));
146147

147148
int markedStale = (int) result.getModifiedCount();
148149
if (markedStale > 0) {

src/main/java/ai/labs/eddi/modules/ingestion/RagIngestionDirectExecutor.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import jakarta.inject.Inject;
1313
import org.jboss.logging.Logger;
1414

15+
import java.util.regex.Pattern;
16+
1517
/**
1618
* Direct schedule executor for RAG ingestion.
1719
* <p>
@@ -29,7 +31,7 @@ public class RagIngestionDirectExecutor implements DirectScheduleExecutor {
2931

3032
private static final Logger LOGGER = Logger.getLogger(RagIngestionDirectExecutor.class);
3133

32-
private static final String OBJECTID_PATTERN = "^[0-9a-fA-F]{24}$";
34+
private static final Pattern OBJECTID_PATTERN = Pattern.compile("^[0-9a-fA-F]{24}$");
3335

3436
private final RagIngestionService ingestionService;
3537
private final IRagIngestionSourceStore sourceStore;
@@ -64,7 +66,7 @@ public void execute(ScheduleConfiguration schedule) throws Exception {
6466
sourceId = stripIdParams(sourceId);
6567

6668
// Validate sourceId is a valid MongoDB ObjectId (24-char hex)
67-
if (!sourceId.matches(OBJECTID_PATTERN)) {
69+
if (!OBJECTID_PATTERN.matcher(sourceId).matches()) {
6870
throw new IllegalArgumentException(
6971
"Schedule metadata field 'sourceId' is not a valid MongoDB ObjectId "
7072
+ "(expected 24-character hex string, got '" + sourceId + "' of length "

src/main/java/ai/labs/eddi/modules/ingestion/RagIngestionService.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import java.util.List;
3333
import java.util.Map;
3434
import java.util.Optional;
35-
import java.util.stream.Collectors;
3635

3736
/**
3837
* Orchestrates the RAG ingestion pipeline: fetch → convert → dedup → chunk →

src/main/java/ai/labs/eddi/modules/ingestion/RagIngestionTask.java

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import ai.labs.eddi.engine.lifecycle.exceptions.LifecycleException;
1111
import ai.labs.eddi.engine.lifecycle.exceptions.WorkflowConfigurationException;
1212
import ai.labs.eddi.engine.memory.IConversationMemory;
13-
import ai.labs.eddi.engine.memory.IData;
1413
import ai.labs.eddi.engine.memory.IDataFactory;
1514
import ai.labs.eddi.engine.runtime.client.configuration.IResourceClientLibrary;
1615
import ai.labs.eddi.configs.workflows.model.ExtensionDescriptor;
@@ -26,6 +25,7 @@
2625
import java.util.Map;
2726

2827
import static ai.labs.eddi.utils.LogSanitizer.sanitize;
28+
import static ai.labs.eddi.utils.RestUtilities.extractResourceId;
2929

3030
/**
3131
* Lifecycle task for RAG ingestion.
@@ -161,7 +161,8 @@ public Object configure(Map<String, Object> configuration, Map<String, Object> e
161161
RagIngestionSource sourceConfig = resourceClientLibrary.getResource(uri, RagIngestionSource.class);
162162

163163
// Extract source ID from URI path
164-
String sourceId = extractSourceId(uriStr);
164+
var resourceId = extractResourceId(uri);
165+
String sourceId = resourceId != null ? resourceId.getId() : "unknown";
165166

166167
LOGGER.infof("[INGESTION TASK] Configured with source: %s (type=%s, name=%s)",
167168
sanitize(sourceId), sanitize(sourceConfig.type()), sanitize(sourceConfig.name()));
@@ -174,23 +175,6 @@ public Object configure(Map<String, Object> configuration, Map<String, Object> e
174175
}
175176
}
176177

177-
private String extractSourceId(String uriStr) {
178-
// Extract ID from URI like:
179-
// eddi://ai.labs.ingestion/ingestionstore/ingestionsources/{id}?version=1
180-
try {
181-
int lastSlash = uriStr.lastIndexOf('/');
182-
int queryStart = uriStr.indexOf('?', lastSlash);
183-
if (queryStart > lastSlash) {
184-
return uriStr.substring(lastSlash + 1, queryStart);
185-
} else if (lastSlash > 0) {
186-
return uriStr.substring(lastSlash + 1);
187-
}
188-
} catch (Exception e) {
189-
LOGGER.warnf("Could not extract source ID from URI: %s", sanitize(uriStr));
190-
}
191-
return "unknown";
192-
}
193-
194178
@Override
195179
public ExtensionDescriptor getExtensionDescriptor() {
196180
ExtensionDescriptor descriptor = new ExtensionDescriptor(TASK_ID);

src/test/java/ai/labs/eddi/engine/exception/ExceptionMappersTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,17 @@ void returns500() {
4444
class IllegalArgMapper {
4545

4646
@Test
47-
@DisplayName("should return 400 with exception message")
47+
@DisplayName("should return 400 with JSON body")
48+
@SuppressWarnings("unchecked")
4849
void returns400() {
4950
var mapper = new IllegalArgumentExceptionMapper();
5051
var ex = new IllegalArgumentException("Invalid parameter");
5152

5253
Response response = mapper.toResponse(ex);
5354

5455
assertEquals(400, response.getStatus());
55-
assertEquals("Invalid parameter", response.getEntity());
56+
var entity = (Map<String, String>) response.getEntity();
57+
assertEquals("Invalid parameter", entity.get("message"));
5658
}
5759
}
5860

0 commit comments

Comments
 (0)