Files
lassistanoque/spec.md
T
2026-08-07 00:03:15 +02:00

4.0 KiB

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