Files
Loki/internal
MichaelandClaude Opus 5.5 e9c0555ab7 Discussions : la recherche trouve aussi les mots du texte, pas seulement les titres (index plein-texte chiffré, repris d'AJEAN 558d3b4d, #98)
Index inversé dans le bucket chatsearch (chat_search.go) : une fiche
légère par discussion (« d| » : version, date d'indexation, aperçu), sa
liste de mots (« t| ») et, par mot, la liste des discussions (« p| »).
Mots repliés sans accents, correspondance par début de mot, titre compté
double, comme chez l'amont. Chiffré quand la mémoire l'est
(encryptedBuckets) ; verrouillée, la recherche le dit (state=locked).

Adapté au modèle de Loki : toutes les discussions vivent dans
bkChat/conv:<id>. L'index suit chaque écriture de l'écrivain différé
(chat_persist.go, avant que le lot soit marqué traité : une suppression
passe toujours après) et ne touche que les mots ajoutés ou retirés. Il
suit aussi les écritures de la façade Rust, qui passent par
/internal/v1/store : le Go reste le seul à tenir l'index, la route
/api/conversations/search est servie ici et relayée par la façade comme
toute route qu'elle ne connaît pas (test de garde des deux côtés). Pas de
second écrivain, donc pas de test de parité à tenir.

Rattrapage en fond au démarrage, au déverrouillage et quand une recherche
trouve l'index incomplet : discussions absentes ou plus anciennes que leur
dernière écriture. La discussion ouverte est cherchée dans son journal en
RAM quand ce process la tient. L'extrait est pris autour du mot trouvé,
relu dans le corps des seuls résultats de la page.

Tests repris d'AJEAN (chat_search_test.go), adaptés, plus les écritures
de la façade, l'extrait en contexte, la mise à jour incrémentale et
l'index périmé.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 11:23:18 +02:00
..