CORRECTIF URGENT: L'application chargeait toujours SQLite même avec
PostgreSQL configuré, causant une perte apparente de toutes les données.
Ajout de database-loader.js qui détecte automatiquement:
- DB_TYPE=postgres → PostgreSQL
- DATABASE_URL=postgresql:// → PostgreSQL
- Sinon → SQLite
Tous les routes et services mis à jour pour utiliser database-loader
au lieu de charger directement database.js.
Les données ne sont PAS perdues, elles sont dans PostgreSQL.
L'application se reconnectera correctement après redémarrage.
Fichiers modifiés:
- config/database-loader.js (nouveau)
- server.js
- routes/*.js (11 fichiers)
- services/*.js (2 fichiers)
Corrections pour permettre le chargement automatique des modèles IA:
- Retrait de la restriction admin sur la route GET /api/openrouter/models
- Retrait de la condition is_admin dans loadOpenRouterModels()
- Ajout d'un useEffect pour charger les modèles à l'ouverture du chatbox
- Ajout d'un indicateur "Chargement des modèles..." dans le sélecteur
- Désactivation du sélecteur pendant le chargement
Les modèles se chargent maintenant automatiquement quand l'utilisateur ouvre le chatbox, et tous les utilisateurs authentifiés peuvent y accéder (pas seulement les admins).
Ajout d'un chatbot interactif alimenté par OpenRouter API avec les fonctionnalités suivantes:
- Bouton flottant en bas à droite pour ouvrir le chat
- Sélecteur de modèles IA avec tous les modèles disponibles via l'API OpenRouter
- Interface de chat avec historique des messages (utilisateur/assistant)
- Indicateur de chargement avec animation
- Boutons pour effacer l'historique et fermer le chat
- Auto-scroll vers le dernier message
- Backend: route POST /api/openrouter/chat pour la communication avec l'API
- Service frontend: méthode sendMessage() dans OpenRouterService
Retrait du composant MadeWithDyad comme demandé.
Corrections:
- Correction de l'import des middlewares dans openrouter.routes.js
- Utilisation de authenticateToken au lieu de requireAuth
- Fix du bug qui empêchait le serveur de démarrer
Le serveur crashait avec l'erreur:
Error: Route.get() requires a callback function but got a [object Undefined]
Résolu en utilisant le bon nom de middleware.
Ajouts majeurs:
- Système de tags complet pour les notes
* Table note_tags en base de données avec indexes
* API REST pour CRUD des tags (GET/POST/DELETE)
* UI avec onglet Tags dans l'éditeur de notes
* Badges cliquables avec icônes et suppression au survol
* Modal pour ajouter des tags
- Liste automatique des modèles OpenRouter
* Nouvelle route API /api/openrouter/models
* Cache des modèles avec rafraîchissement automatique (1h)
* Dropdown dans l'admin avec tous les modèles disponibles
* Bouton "Actualiser" pour forcer le refresh
* Affichage du nom et description de chaque modèle
* Fallback sur input manuel si pas de clé API
Améliorations UI:
- Ajout de dates de création et modification dans les notes
- Affichage des dates dans les cartes et l'éditeur
- Format français pour toutes les dates
- Onglets passés de 4 à 5 colonnes pour inclure Tags
- Animation de chargement sur le bouton refresh des modèles
Architecture:
- Nouveau service TagsService.ts pour la gestion des tags
- Nouveau service OpenRouterService.ts pour l'API OpenRouter
- Nouvelles routes openrouter.routes.js
- Support Select component pour les dropdowns
- Modals InputModal utilisés pour les tags