Documentation du plan d'hébergement sur Scaleway Start-2-S-SATA :
- Choix du serveur dédié (4.99€/mois, 4GB RAM, 1TB HDD)
- Architecture multi-projets (ConfluentTranslator + autres apps)
- Setup Gitea pour Git privé avec LFS (fini les .gitignore massifs)
- Stack Docker complète (PostgreSQL, Redis, Nginx)
- Plan de migration en 5 phases
- Estimation performance et coûts réels
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Nouvelle architecture modulaire avec src/api, src/core, src/utils
- Séparation claire docs/ (admin, changelog, dev, security) et tests/ (unit, integration, scripts)
- server.js devient un simple point d'entrée
- Ajout de STRUCTURE.md documentant l'architecture
- Archivage ancien-confluent/ avec générateur de lexique complet
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Problèmes résolus:
- Polling toutes les 3s vers /api/llm/limit (1200 req/h par user)
- Rate limiters par IP bloquaient légitimement les traductions
- globalLimiter (200/15min) et translationLimiter (10/min) redondants
Changements:
- Suppression setInterval 3s dans index.html
- Mise à jour compteur LLM uniquement après traductions
- Suppression globalLimiter et translationLimiter
- Garde uniquement checkLLMLimit() (par API key, 20/jour)
- Fix affichage: utilise data.remaining de l'API
Résultat: système de quotas simple, clair et fonctionnel
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Ajout support custom API keys (Anthropic/OpenAI) dans localStorage
- Backend utilise custom keys si fournis (pas de déduction rate limit)
- Tentative fix rate limiter pour /api/llm/limit (skip globalLimiter)
- Fix undefined/undefined dans compteur requêtes
- Ajout error loop prevention (stop après 5 erreurs)
- Reset quotidien à minuit pour compteur LLM
Note: Problème 429 persiste, à débugger à la maison
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Backend:
- auth.js: Système de tokens avec API keys UUID
- rateLimiter.js: Rate limiting multi-tiers (global, traduction, admin)
- logger.js: Logging des requêtes avec rotation automatique
- adminRoutes.js: Routes admin pour gestion des tokens
- server.js: Intégration de tous les middlewares de sécurité
Frontend:
- Interface de connexion modale élégante
- Stockage sécurisé API key dans localStorage
- Bouton déconnexion dans le header
- authFetch() wrapper pour toutes les requêtes protégées
- Protection automatique des endpoints de traduction
Sécurité:
- Token admin généré automatiquement au premier lancement
- Limites quotidiennes par token configurables
- Rate limiting pour prévenir les abus
- Logs détaillés de toutes les requêtes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Nouvel onglet Settings (⚙️) permettant de configurer:
Paramètres globaux:
- Niveau de langue (Proto/Ancien Confluent)
→ S'applique aux traductions et au lexique
→ Supprimé des onglets individuels
Configuration LLM:
- Provider (Anthropic/OpenAI)
- Modèle (avec mise à jour dynamique selon provider)
- Température (slider 0.0-2.0 pour créativité)
Interface:
- Thème clair/sombre avec CSS complet
- Mode verbose (checkbox pour détails)
- Application immédiate du thème
API Keys (optionnel):
- Anthropic API Key
- OpenAI API Key
- Placeholder pour utilisation clés serveur
Fonctionnalités:
- localStorage pour persistance
- Bouton sauvegarde avec message confirmation
- Paramètres appliqués à tous les onglets
- Valeurs par défaut définies
Interface simplifiée: choix de langue retiré des autres onglets
car centralisé dans Settings.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Modifications de l'interface HTML:
- Ajout onglet "Confluent → Français" avec traducteur brut
- Appel API vers /api/translate/conf2fr
- Renommage onglet "Traduction" → "Français → Confluent"
- Suppression section "Configuration" (provider/model)
- Simplification: seul le choix langue cible reste
- Nettoyage code JS (loadConfig, saveConfig simplifiés)
Interface plus simple et focalisée sur les fonctionnalités essentielles.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Ajout de 've' (origine) et 'eol' (habituel) dans 00-grammaire.json
- Documentation détaillée des incohérences dans test-results-radical-system.md
- Alerte sur suffixes 'aran' et 'vis' non documentés dans grammaire officielle
- Révision objectifs coverage: 94% réaliste après ajout ve/eol
- Recommandation: valider texte de test avant ajout de nouveaux suffixes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Correction du principe : racines MANUELLES avec dénominateur commun optimal
- Exemples corrigés : "compar" (6L), "compr" (5L), pas juste 4 lettres
- Structure JSON avec champ racine_fr déclaré dans le lexique
- Code simplifié : word.startsWith(entry.racine_fr) au lieu d'extraction auto
- Liste verbes revue avec notes sur ce qui est couvert par racine vs synonymes_fr
- Workflow complet documenté du matching
- Estimation revue : ~40min au lieu de 1h15
- Ajout résumé avantages système hybride intelligent
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Prompt système strict avec Chain-of-Thought obligatoire
- Retrait des racines en dur du prompt (context skimming pur)
- Amélioration logique fallback (activation si <50% couverture)
- Ajout lexique : loup, frère, manger + fichier famille
- Debug endpoint /api/debug/prompt pour inspection
- Documentation complète système racines françaises
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
Nouveau système qui analyse le texte français et génère des prompts optimisés en incluant uniquement le vocabulaire pertinent du lexique, réduisant drastiquement le nombre de tokens.
# Backend
- contextAnalyzer.js : Analyse contextuelle avec lemmatisation française
- Tokenization avec normalisation des accents
- Recherche intelligente (correspondances exactes, synonymes, formes conjuguées)
- Calcul dynamique du nombre max d'entrées selon longueur (30/50/100)
- Expansion sémantique niveau 1 (modulaire pour futur)
- Fallback racines (309 racines si mots inconnus)
- promptBuilder.js : Génération de prompts optimisés
- Templates de base sans lexique massif
- Injection ciblée du vocabulaire pertinent
- Formatage par type (racines sacrées, standards, verbes)
- Support fallback avec toutes les racines
- server.js : Intégration API avec structure 3 layers
- Layer 1: Traduction pure
- Layer 2: Métadonnées contextuelles (mots trouvés, optimisation)
- Layer 3: Explications du LLM (décomposition, notes)
- lexiqueLoader.js : Fusion du lexique simple data/lexique-francais-confluent.json
- Charge 636 entrées (516 ancien + 120 merged)
# Frontend
- index.html : Interface 3 layers collapsibles
- Layer 1 (toujours visible) : Traduction avec mise en valeur
- Layer 2 (collapsible) : Contexte lexical + statistiques d'optimisation
- Layer 3 (collapsible) : Explications linguistiques du LLM
- Design dark complet (fix fond blanc + listes déroulantes)
- Animations smooth pour expand/collapse
# Documentation
- docs/PROMPT_CONTEXTUEL_INTELLIGENT.md : Plan complet validé
- Architecture technique détaillée
- Cas d'usage et décisions de design
- Métriques de succès
# Tests
- Tests exhaustifs avec validation exigeante
- Économie moyenne : 81% de tokens
- Économie minimale : 52% (même avec fallback)
- Context skimming opérationnel et validé
# Corrections
- ancien-confluent/lexique/02-racines-standards.json : Fix erreur JSON ligne 527
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Forme épithète : na + ADJ + NOM (phrase)
- Forme compositionnelle : NOM-ii-ADJ (concept figé)
- Documentation complète dans 03-GRAMMAIRE.md et nouveau 06-ADJECTIFS.md
- Liste d'adjectifs de base (taille, qualité, âge, lumière, couleurs)
- Particule na documentée avec double usage (possession + adjectif)
- TODO.md mis à jour : adjectifs terminés ✅
- Archive de PROMPT_FILL_LEXIQUE.md
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Structure:
- proto-confluent/lexique/ et proto-confluent/docs/
- ancien-confluent/lexique/ et ancien-confluent/docs/
Chaque niveau de langue a maintenant son propre dossier unifié.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Ajout onglet "Lexique" dans ConfluentTranslator
- Recherche en temps réel à chaque lettre tapée
- Sélecteur Proto/Ancien Confluent
- Affichage français → confluent avec compteur
- Endpoint /lexique dans server.js
- Structure modulaire lexique-ancien/ (21 fichiers)
- Format ultra-flexible : normalisation FR, multi-traductions, métadonnées
- 20 domaines thématiques (castes, lieux, émotions, actions...)
- ~500-600 mots à remplir (listés en commentaire _mots_a_gerer)
- Structure modulaire lexique-proto/ (6 fichiers)
- Racines monosyllabiques primitives
- ~150-200 racines à remplir
- README explicatif des différences Proto/Ancien
Format JSON supporte :
- Synonymes FR (chevaux → cheval)
- Plusieurs traductions CF par mot FR
- Compositions avec racines + sens littéral
- Évolution Proto → Ancien
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Restructuration docs en dossiers séparés (langue/, culture/, archive/)
- Création 6 fichiers langue: phonologie, morphologie, grammaire, syntaxe, vocabulaire, lexique complet
- Ajout SYSTEM_PROMPT_LLM.md pour contextualiser un LLM
- Ajout data/lexique.json v2.0 (173 racines structurées)
- Lexique complet avec 77% de mots composés utilisant les 16 liaisons sacrées
- Archive du plan original dans docs/archive/
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Ajout section "CE QUI MANQUE POUR UNE LANGUE COMPLÈTE" :
- 8 domaines identifiés (relatives, rituels, vocabulaire, adjectifs, connecteurs, pronoms, subordination, JSON)
- Format condensé (~90 lignes vs verbosité initiale)
- Verdict clair : langue prête pour JDR avec workarounds temporaires
- Approche organique recommandée (artefact multi-générationnel)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Racines tisa (proche) et tova (loin)
- Composition avec liaison -i- : tisikari, tovikari...
- Pluriel après le composé : tisikari su
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Verbes CVCVC (5 lettres, fin consonne)
- 14 conjugateurs (temps, aspects, modes, évidentiel)
- Structure SOV avec particules de cas (va, vo, vi, ve, vu, na, ni, no)
- Négation (zo, zom, zob, zoe) et questions (ka, ki, ke, ko, ku)
- Pluriel (su après le mot)
- Règles de cumul des modes
- Exemples de phrases complexes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Résumé des règles linguistiques validées
- Tableau des 16 liaisons sacrées
- Vocabulaire validé (castes, lieux, peuple)
- Prochaines étapes et conventions de travail
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Système des 16 liaisons sacrées (I, U, A, O, E)
- 67 racines (15 sacrées, 52 standards)
- Règles phonétiques (CV final, C initial standard, V initial sacré)
- Noms des 6 castes (Nakukeko, Nakuura, Ariaska, Akoazana, Takitosa, Oraumi)
- Noms des 6 lieux (Uraakota, Vukuura, Kekutoka, Rikuvela, Talusavu, Ekakova)
- Lexique de référence complet de la civilisation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>