- Nouvelles pages publiques sans routeur externe (History API minimale, useRoute/RouteLink) : accueil, /architecture (état réel du projet, honnête sur les limites), /statut (télémétrie live de tripoli-edge lue directement sur /healthz et /metrics, aucune donnée simulée). - Recherche façon Spotlight dans TopBar : nouvel endpoint GET /api/search côté tripoli-api, recherche plein texte Postgres (tsvector généré + index GIN) sur le nom ET le contenu des fichiers texte extrait à l'upload (formats texte/code, borné à 5 Mio) ; extraits de résultat via ts_headline. - AuthLayout : logo cliquable vers l'accueil. Vérifié : tsc --noEmit propre, npm run build propre, cargo build -p tripoli-api propre. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
13 lines
657 B
SQL
13 lines
657 B
SQL
-- Recherche plein texte façon Spotlight : sur le nom du fichier *et* sur
|
|
-- son contenu extrait à l'upload (voir files::upload). Colonne générée
|
|
-- STORED plutôt que calculée à la volée dans chaque requête : l'index
|
|
-- GIN a besoin d'une colonne matérialisée pour être utilisable.
|
|
ALTER TABLE files ADD COLUMN content_text TEXT;
|
|
|
|
ALTER TABLE files ADD COLUMN search_vector tsvector
|
|
GENERATED ALWAYS AS (
|
|
setweight(to_tsvector('french', coalesce(filename, '')), 'A') ||
|
|
setweight(to_tsvector('french', coalesce(content_text, '')), 'B')
|
|
) STORED;
|
|
|
|
CREATE INDEX files_search_vector_idx ON files USING GIN (search_vector);
|