Mise en place de la sélection des source que l'on souhaite que ce soit la partie RAG ou la partie analyse approfondie : on est plus obligé d'envoyer tous les PDFs qu'on a dans la partie atelier PDF + IA.
Some checks failed
Build & Push Images / build (brain) (push) Successful in 1m41s
Build & Push Images / build (core) (push) Failing after 1m46s
Build & Push Images / build-switcher (push) Successful in 26s
Build & Push Images / build (web) (push) Successful in 1m54s

Les réponses ne ce baseront que sur les sources que l'on aura cocher au préalable
This commit is contained in:
2026-06-12 15:58:45 +02:00
parent 8cc90bd24d
commit 6740ed2177
9 changed files with 113 additions and 16 deletions

View File

@@ -125,6 +125,13 @@ public class NotebookController {
.map(m -> new NotebookChatStreamer.Msg(m.getRole(), m.getContent()))
.toList();
List<String> sourceIds = service.readySourceIds(id);
if (req.sourceIds() != null) {
// Sélection de l'UI (cases cochées) : on ne garde que les sources qui
// appartiennent bien à CE notebook et sont prêtes — un id étranger est
// ignoré. Limite le coût (ex. analyse approfondie sur 1 PDF au lieu de 5).
var wanted = new java.util.HashSet<>(req.sourceIds());
sourceIds = sourceIds.stream().filter(wanted::contains).toList();
}
String context = service.buildContext(nb.getCampaignId());
boolean deep = req.deep() != null && req.deep();
@@ -220,5 +227,10 @@ public class NotebookController {
public record CreateRequest(String campaignId, String name) {}
public record RenameRequest(String name) {}
public record ChatRequest(String message, Boolean deep) {}
/**
* @param sourceIds Optionnel : sous-ensemble de sources à utiliser pour ce tour
* (cases cochées dans l'UI). Null = toutes les sources prêtes.
* Toujours intersecté avec les sources du notebook (sécurité).
*/
public record ChatRequest(String message, Boolean deep, List<String> sourceIds) {}
}