33800 Docs

← Retour

Proposition : Upload de fichiers dans Chat AI

Status : IMPLEMENTEE

Contexte

Actuellement le chat AI n'accepte que du texte. L'utilisateur ne peut pas joindre d'images, de documents ou d'autres fichiers a ses messages. Pourtant :

Ce qui existe deja

Element Etat Detail
Table ai_attachments OK Schema complet (id, message_id, conversation_id, filename, bucket_path, mime_type, size_bytes)
Supabase Storage OK Bucket ai-outputs, methodes upload/download/signedUrl
Routes download OK GET /api/ai/attachments/:id/file/* (proxy vers Storage)
Route list OK GET /api/ai/conversations/:id/attachments
Upload AI outputs OK uploadJobOutputToStorage() dans aiChat.ts
Upload utilisateur MANQUANT Pas de route ni d'UI
Affichage attachments MANQUANT ChatMessages ne rend que du texte
UI d'upload MANQUANT ChatInput n'a qu'un textarea

Plan d'implementation

1. Backend : Route d'upload (connectors-api)

Fichier : src/index.ts - nouvelle route

POST /api/ai/conversations/:id/attachments
Content-Type: multipart/form-data
Body: file (binary)

2. Backend : Modifier sendMessage pour gerer les attachments

Fichier : src/services/aiChat.ts

3. Frontend : ChatInput avec upload

Fichier : src/components/ai/ChatInput.tsx

Modifications :

Nouvelle interface :

interface ChatInputProps {
  onSend$: (content: string, attachmentIds?: string[]) => void;
  conversationId: string;
  disabled?: boolean;
}

4. Frontend : Affichage des attachments dans ChatMessages

Fichier : src/components/ai/ChatMessages.tsx

5. Frontend : API client

Fichier : src/lib/api.ts

Nouvelles methodes :

6. Integration YOLO avec fichiers uploades

Fichier : src/services/intentDetector.ts + intentExecutor.ts

Ce qui ne change PAS

Fichiers a modifier/creer

Fichier Action
connectors-api/src/index.ts Ajouter route POST upload + modifier stream route
connectors-api/src/services/aiChat.ts Gerer attachment_ids dans _processMessage
connectors-api/src/services/intentDetector.ts Accepter attachments en parametre
connectors-api/src/services/intentExecutor.ts YOLO avec fichier local
connectors-front/src/components/ai/ChatInput.tsx UI upload (bouton, preview, drag&drop)
connectors-front/src/components/ai/ChatMessages.tsx Affichage attachments
connectors-front/src/lib/api.ts uploadChatAttachment() + modifier sendChatMessageStream
connectors-front/src/routes/chat/[id]/index.tsx Passer conversationId a ChatInput, gerer attachmentIds

Ordre d'implementation

  1. Route upload backend (POST multipart, validation, stockage)
  2. Modifier stream route (accepter attachment_ids)
  3. aiChat.ts (recuperer attachments, associer au message, passer au contexte)
  4. ChatInput.tsx (bouton upload, preview, drag&drop, paste image)
  5. api.ts (uploadChatAttachment, modifier sendChatMessageStream)
  6. chat/[id]/index.tsx (wiring)
  7. ChatMessages.tsx (affichage miniatures/fichiers)
  8. Intent YOLO (fichier local au lieu d'URL)
  9. Test complet

Limites et contraintes