140 lines
4.0 KiB
Markdown
140 lines
4.0 KiB
Markdown
# 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
|