# Application CONCIERGE ## Généralités Nom d'application: lassistanoque Objectif : Le but de l'application est d'être à la fois un outil de chat, mais surtout un lieu ou l'utilisateur peut créer des agents autonomes, à la fois dans un contexte professionnel et personnel. Fonctionnalité : - Espace de chat - Espace de visualisation/gestion des tâches (tâches longues ou tâches récurrente) - Paramétrage : - Sélection et paramétrage du/des modèles de LLM - Outils et serveurs MCP - Canaux de communication (en lecture et écriture) - Paramétrage de la mémoire Cibles : - Petite entreprise - Particulier (en selfhosting) Il doit permettre parexemple à une PME d'automatiser les réponse à son adresse de contact, faire des études de marché, sourcer des produits, codes des applications, ... ## Technologies Composants - backend : Go avec le framework Echo - Base de données : turso - frontend web : pure HTML 5 + tailwind + Typescript - frontend desktop : Wails Style : - Style épuré, minimaliste - 2 thèmes fournis : light et dark - Tailwind Authentification : - multi-utilisateur - connexion en Openid Connect ou bien par utilisateur/mot de passe Développe : - le squelette du backend + app web - le squelette de l'application Wail - la gestion des utilisateurs - les thèmes Ne développe pas tout de suite : - L'accès aux LLM Simule : - L'accès au LLM - La création des tâches Le projet doit être structuré selon les règles de l'art. Le code doit être maintenable par un développeur moyen. Privilégie la création d'un seul exécutable pour le serveur (avec go embed pour embarquer l'app web), et un executable pour l'app desktop. Un mode d'installation docker-compose doit être proposée. ## Mode Web et mode Desktop Le mode web et le mode desktop utilisent la même authentification. Le mode Desktop est juste la même applicatoin que l'application web, mais davantage intégrée à l'OS (system tray, notifications, accès par touche de raccourci, ...). Le mode Desktop se connecte soit à un serveur distant, soit lance lui-même un serveur lorsqu'aucun serveur distant n'est configuré. Dans le dernier cas, le serveur doit être tué à la fermeture de l'application. ## Tâches les tâches sont créer lors de conversation de Chat. Par exemple si l'utilisateur demande : "Regarde tous les jours sur ebay si tu trouve des timbres rares, et enregistre les annonces intéressantes dans ma base Grist (table Timbres). Envoie-moi un email de compte-rendu de tes recherches" Les tâches peuvent aussi être modifié par Chat. Les tâche peuvent être répétitives ou ponctuelles, longues avec Harness ou non. ## Base de données Table provider : Fournisseurs de LLM - id -> uuid - name -> string - provider -> string - key -> string - url -> string Table models : Modèles LLM - id -> uuid - provider_uuid -> uuid - name -> string - modelname -> string - configuration -> json Table system : Configuration system - chat_model_uuid -> uuid - default_lang -> string - port -> string - register_enabled -> bool - password_enabled -> bool - oidc_wellknown_url -> string - oidc_client_id -> string - oidc_client_secret -> string Table users : Utilisateur - id -> uuid - name -> string - picture -> blob - ... Table user_adresses : Adresse de contact de l'utilisateur - id -> uuid - user_uuid : uuid - type (email, telegram, whatsapp, ...) -> string Table channels : Canaux de communication utilisés par l'agent - id -> uuid - name -> string - enabled -> boolean - type (email, telegram, whatsapp, ...) -> string - configuration -> json Table tools : Paramétrage des outils - id -> uuid - name -> string - enabled -> boolean - configuration -> json Table tasks : Tâches - id -> uuid - owner_uuid -> uuid - model_uuid -> uuid - name -> string - prompt -> string - cron -> string - status (scheduled, done, paused, error) -> string - next_datetime -> datetime Table task_history : Historique de tâche - id -> uuid - task_uuid -> uuid - start_datetime -> datetime - enb_datetime -> datetime - prompt -> string - log -> string - response -> string