33800 Docs

← Retour

Conversations persistantes Phase 1

Date: 13/02/2026 Status: TERMINE Projets: ulias-org, ulias-org-web

Objectif

Ajouter la persistance des conversations dans ulias-org pour que les messages (user, assistant, events) soient sauvegardes en DB et restaures au rechargement de page. Sidebar laterale style ChatGPT/Claude.

Changements

Backend (ulias-org) - commit df49fce

  1. Schema SQL (db/schema.sql):

    • Table agents.conversations: id, user_id, title, status, message_count, last_message_at
    • Table agents.chat_messages: id, conversation_id, user_id, role, content, event_type, event_data, objective_id
    • 2 indexes sur user_id et conversation_id
  2. DB layer (db/index.ts):

    • Interfaces DBConversation, DBChatMessage
    • 7 methodes CRUD: createConversation, getConversations, getConversation, updateConversation, deleteConversation, saveChatMessage, getChatMessages
  3. REST endpoints (index.ts):

    • GET /api/conversations — liste sidebar
    • POST /api/conversations — creer
    • PATCH /api/conversations/:id — renommer/archiver
    • DELETE /api/conversations/:id — supprimer
    • GET /api/conversations/:id/messages — messages pagines
  4. WS persistence (index.ts):

    • Nouveau type WS set_conversation pour definir la conversation active
    • Auto-creation de conversation au 1er message (titre = 80 premiers chars)
    • Persistance user messages, assistant responses, events milestones
    • Set PERSIST_EVENT_TYPES: objective_created, routing, complete, objective_completed, objective_failed, briefing_question, briefing_summary, subtask_started, subtask_completed

Frontend (ulias-org-web) - commit f18ba42

  1. ConversationSidebar.tsx (nouveau): sidebar retractable avec liste, renommage, suppression, bouton "+"
  2. layout.tsx: layout 2 colonnes, chargement derniere conversation au startup, switch via events
  3. ChatMessages.tsx: ecoute ulias:load-history et ulias:clear-chat
  4. ws-manager.ts: methode setConversation()
  5. types.ts: types APIConversation, APIChatMessage, ConversationCreatedEvent, ConversationSetEvent

Tests