Skip to content

feat: add ui functions to interact with RAG#9

Merged
Kaiohz merged 3 commits into
BRIC-4/init-composable-uifrom
BRIC-17/rag-ui-index-query-read
Apr 25, 2026
Merged

feat: add ui functions to interact with RAG#9
Kaiohz merged 3 commits into
BRIC-4/init-composable-uifrom
BRIC-17/rag-ui-index-query-read

Conversation

@Kaiohz
Copy link
Copy Markdown
Contributor

@Kaiohz Kaiohz commented Apr 25, 2026

No description provided.

Copy link
Copy Markdown
Contributor Author

@Kaiohz Kaiohz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 Code Review - PR #9

📊 Score: 8/10

✅ Points forts

Architecture & Structure

  • Architecture hexagonale respectée - Séparation claire domain/application/infrastructure
  • Types TypeScript solides - Entities bien définies avec mapping snake_case ↔ camelCase
  • Tests unitaires complets - ~20 fichiers de tests couvrant composants, hooks, et API

Code Quality

  • Accessibilité - Bon usage des aria-labels, aria-pressed, aria-selected
  • React Query patterns - Hooks bien structurés avec mutation, isPending, error handling
  • Consistance UI - Design cohérent avec le reste du projet (Material Symbols, Tailwind)

Fonctionnalités

  • Support dual LightRAG/Classical pipelines
  • Options avancées de requête (mode, topK, threshold, LLM judge)
  • Indexation fichier/dossier avec feedback utilisateur

⚠️ Points à améliorer

1. Duplication de code - Menu Index
IndexActionMenu existe mais n'est pas réutilisé. Les menus sont dupliqués dans FileRow.tsx et FolderRow.tsx.

Suggestion:

{hasIndexOptions && (
  <IndexActionMenu
    onIndexLightRAG={onIndexLightRAG}
    onIndexClassical={onIndexClassical}
  />
)}

2. Hardcoded values dans RagPage.tsx

chunkSize: 1000,
chunkOverlap: 200,

Ces valeurs devraient être configurables via l'UI ou au moins définies comme constantes.

3. Props drilling excessif
onFileRead, onFileIndexLightRAG, etc. passés à travers FileListFileRow/FolderRow

Suggestion: Considérer un context RAG ou un custom hook pour gérer ces actions.

4. Gestion d'erreur visuelle limitée

  • Seuls des toasts sont affichés en cas d'erreur
  • Pas d'indication visuelle inline sur les rows/folders

5. package-lock.json non filtré

  • 7303 additions dans package-lock.json

📝 Suggestions mineures

  1. FileContentPanel.tsx - Pas de limite de hauteur sur le contenu
  2. WorkspaceSelector.tsx - Effet de cleanup correct
  3. QueryResults.tsx - Copie clipboard sans fallback

🎯 Recommandations

Priorité Action Impact
🔴 Haute Refactor: utiliser IndexActionMenu Maintenance
🟡 Moyenne Config: paramétrer chunkSize/Overlap Flexibilité
🟢 Basse UX: ajouter loading/error par fichier UX

✅ Verdict

PR solide avec une architecture bien pensée et une couverture de tests satisfaisante. Les points à améliorer sont principalement de l'ordre de la maintenabilité et de l'UX.

Recommandation: Merge avec les améliorations suggérées comme follow-up.

🤖 Review par SoluBot

size,
lastModified,
onRead,
onIndexLightRAG,
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Le menu d'indexation est dupliqué ici alors que IndexActionMenu.tsx existe. Considérer la réutilisation du composant.

type="button"
tabIndex={0}
onClick={onClick}
aria-label={name}
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Même duplication du menu d'indexation. IndexActionMenu devrait être utilisé ici aussi.


const handleFolderIndexLightRAG = (prefix: string) => {
const dir = workingDir || prefix;
if (!dir) return;
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Valeurs hardcoded chunkSize: 1000, chunkOverlap: 200. Devraient être configurables ou constantes.

Copy link
Copy Markdown
Contributor Author

@Kaiohz Kaiohz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Review mise à jour - Corrections appliquées

Je constate que les points soulevés dans la review précédente ont été corrigés :

Corrections validées

IndexActionMenu réutilisé - FileRow.tsx et FolderRow.tsx importent et utilisent maintenant correctement IndexActionMenu

Constantes définies - DEFAULT_CHUNK_SIZE et DEFAULT_CHUNK_OVERLAP sont maintenant des constantes au lieu de valeurs hardcoded


📊 Score final : 8.5/10

✅ Points forts

Architecture & Structure

  • Architecture hexagonale respectée (domain/application/infrastructure)
  • Types TypeScript solides avec mapping snake_case ↔ camelCase
  • Ports bien définis (IRagIndexPort, IRagQueryPort, IRagFileContentPort)

Code Quality

  • Accessibilité correcte (aria-labels, aria-pressed, aria-selected)
  • React Query hooks bien structurés (mutations, isPending, error handling)
  • Composants réutilisables (IndexActionMenu, PipelineToggle, QueryOptions)
  • Design cohérent avec le reste du projet

Fonctionnalités

  • Support dual LightRAG/Classical pipelines
  • Options avancées de requête (mode, topK, threshold, LLM judge)
  • Indexation fichier/dossier avec feedback utilisateur (toast)
  • Visualisation du contenu de fichier avec tables

⚠️ Points restants à améliorer (mineurs)

1. Props drilling
onFileRead, onFileIndexLightRAG, etc. passés à travers RagPageFileListFileRow/FolderRow

Suggestion: Considérer un context RAG ou un custom hook useRagActions() pour réduire le drilling.

2. Gestion d"erreur visuelle

  • Seuls des toasts sont affichés en cas d"erreur
  • Pas d"indication visuelle inline sur les rows/folders en erreur

3. package-lock.json

  • 7303 additions dans package-lock.json (normal mais pollue la diff)

🎯 Recommandations

Priorité Action Impact
🟢 Basse Refactor: context RAG pour props drilling Maintenance
🟢 Basse UX: loading/error inline par fichier UX
🟢 Basse Config: paramétrer chunkSize/Overlap via UI Flexibilité

✅ Verdict

PR bien corrigée ! Le code est propre, l"architecture est respectée, et les fonctionnalités sont complètes.

Recommandation: ✅ Ready to merge

🤖 Review par SoluBot

@Kaiohz Kaiohz merged commit bb9f013 into BRIC-4/init-composable-ui Apr 25, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant