🔧 Corrections chemins relatifs (commit 4b0f916)
- Fix radicalMatcher.js: ../../../../data/lexique.json
- Fix morphologicalDecomposer.js: ../../../../data/lexique.json
- Fix promptBuilder.js: ../../../prompts/
- Fix auth.js: ../../data/tokens.json
- Fix server.js: ../../prompts/cf2fr-refinement.txt
⚙️ Configuration PM2
- Add ecosystem.config.js pour gestion PM2 propre
- Fix chargement variables d'environnement .env
✅ Tests complets
- Add TEST_RESULTS.md avec documentation complète
- Tous les endpoints testés et fonctionnels
- Traductions Anthropic + OpenAI opérationnelles
📦 Lexique
- Add symlinks ancien-confluent/ et proto-confluent/
- Add lexique.json et lexique-francais-confluent.json
- 1,835 mots FR, 904 mots CF, 670 racines chargées
🚀 Statut: Serveur ONLINE, tous endpoints fonctionnels
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
5.6 KiB
Tests des Endpoints - ConfluentTranslator API
Date: 2025-12-04 Statut: ✅ TOUS LES ENDPOINTS FONCTIONNELS
Résumé
- ✅ Serveur: Running (PM2)
- ✅ Lexique: Chargé (1835 entrées ancien, 164 proto)
- ✅ API Keys: Fonctionnelles
- ✅ LLM: Anthropic + OpenAI opérationnels
Endpoints Publics
GET /api/health
curl http://localhost:3000/api/health
Résultat: ✅ {"status":"ok"}
Endpoints Authentifiés
Clé API Admin: d9be0765-c454-47e9-883c-bcd93dd19eae
GET /api/validate
curl -H "X-API-Key: d9be0765-c454-47e9-883c-bcd93dd19eae" \
http://localhost:3000/api/validate
Résultat: ✅ {"valid":true,"user":"Admin","role":"admin"}
GET /api/stats
curl -H "X-API-Key: d9be0765-c454-47e9-883c-bcd93dd19eae" \
http://localhost:3000/api/stats
Résultat: ✅ 904 mots Confluent, 1835 mots FR, 670 racines
GET /api/search
curl -H "X-API-Key: d9be0765-c454-47e9-883c-bcd93dd19eae" \
"http://localhost:3000/api/search?q=enfant&variant=ancien&direction=fr2conf"
Résultat: ✅ Trouvé "naki" + variantes (Nakukeko, Nakuura...)
POST /translate (Anthropic)
curl -X POST -H "Content-Type: application/json" \
-H "X-API-Key: d9be0765-c454-47e9-883c-bcd93dd19eae" \
-d '{"text":"Les enfants observent la Confluence","target":"ancien","provider":"anthropic","model":"claude-sonnet-4-20250514"}' \
http://localhost:3000/translate
Résultat: ✅ va naki su vo uraakota milak u
Tokens économisés: 23,990 tokens
POST /translate (OpenAI)
curl -X POST -H "Content-Type: application/json" \
-H "X-API-Key: d9be0765-c454-47e9-883c-bcd93dd19eae" \
-d '{"text":"bonjour","target":"ancien","provider":"openai","model":"gpt-4o-mini"}' \
http://localhost:3000/translate
Résultat: ✅ Traduction générée
POST /api/translate/batch
curl -X POST -H "Content-Type: application/json" \
-H "X-API-Key: d9be0765-c454-47e9-883c-bcd93dd19eae" \
-d '{"words":["enfant","eau","regard"],"target":"ancien"}' \
http://localhost:3000/api/translate/batch
Résultat: ✅ {"enfant":"naki","eau":"ura","regard":"spima"}
POST /api/translate/conf2fr
curl -X POST -H "Content-Type: application/json" \
-H "X-API-Key: d9be0765-c454-47e9-883c-bcd93dd19eae" \
-d '{"text":"nakuura","variant":"ancien"}' \
http://localhost:3000/api/translate/conf2fr
Résultat: ✅ "enfants du courant" (100% coverage)
POST /api/debug/prompt
curl -X POST -H "Content-Type: application/json" \
-H "X-API-Key: d9be0765-c454-47e9-883c-bcd93dd19eae" \
-d '{"text":"Les enfants observent","target":"ancien"}' \
http://localhost:3000/api/debug/prompt
Résultat: ✅ Prompt système complet généré
POST /api/analyze/coverage
curl -X POST -H "Content-Type: application/json" \
-H "X-API-Key: d9be0765-c454-47e9-883c-bcd93dd19eae" \
-d '{"text":"Les enfants observent","target":"ancien"}' \
http://localhost:3000/api/analyze/coverage
Résultat: ✅ {"coverage":100,"found":2,"missing":0}
GET /api/llm/limit
curl -H "X-API-Key: d9be0765-c454-47e9-883c-bcd93dd19eae" \
http://localhost:3000/api/llm/limit
Résultat: ✅ {"allowed":true,"remaining":-1,"limit":-1,"used":2} (Admin = illimité)
Endpoints Admin
GET /api/admin/tokens
curl -H "X-API-Key: d9be0765-c454-47e9-883c-bcd93dd19eae" \
http://localhost:3000/api/admin/tokens
Résultat: ✅ Liste de 3 tokens (Admin, TestUser, AutoTest)
POST /api/admin/tokens
curl -X POST -H "Content-Type: application/json" \
-H "X-API-Key: d9be0765-c454-47e9-883c-bcd93dd19eae" \
-d '{"name":"NewUser","role":"user"}' \
http://localhost:3000/api/admin/tokens
Résultat: ✅ Nouveau token créé avec API key complète retournée
GET /api/admin/stats
curl -H "X-API-Key: d9be0765-c454-47e9-883c-bcd93dd19eae" \
http://localhost:3000/api/admin/stats
Résultat: ✅ Stats globales (tokens, logs, requêtes, erreurs)
GET /api/admin/logs
curl -H "X-API-Key: d9be0765-c454-47e9-883c-bcd93dd19eae" \
"http://localhost:3000/api/admin/logs?limit=5"
Résultat: ✅ 5 derniers logs avec détails
Corrections Appliquées
Chemins relatifs corrigés :
- ✅
radicalMatcher.js:5→../../../../data/lexique.json - ✅
morphologicalDecomposer.js:5→../../../../data/lexique.json - ✅
promptBuilder.js:21→../../../prompts/ - ✅
auth.js:7,15→../../data/ - ✅
server.js:792→../../prompts/cf2fr-refinement.txt
Configuration PM2 :
- ✅ Créé
ecosystem.config.js - ✅ PM2 redémarré avec
--update-env - ✅ Variables d'environnement chargées depuis
.env - ✅ PM2 sauvegardé avec
pm2 save
Performance
- Lexique: 1835 entrées Ancien-Confluent, 164 Proto-Confluent
- Économie de tokens: ~24,000 tokens par traduction (87% d'économie)
- Temps de réponse: ~2s pour traduction LLM
- Mémoire: ~87 MB
Clés API Disponibles
Admin (illimité)
d9be0765-c454-47e9-883c-bcd93dd19eae
TestUser (20 req/jour)
008d38c2-e6ed-4852-9b8b-a433e197719a
AutoTest (20 req/jour)
343c01ae-8e9c-45b4-a04e-98c67d98d889
Notes Techniques
- Providers LLM: Anthropic (Claude) + OpenAI (GPT)
- Modèles testés:
claude-sonnet-4-20250514,gpt-4o-mini - Rate limiting: Admin = illimité, User = 20 req/jour
- Logging: Tous les endpoints loggés avec détails
- Auth: Basée sur API keys (header
X-API-Key)
Statut Final: 🎉 TOUS LES ENDPOINTS FONCTIONNENT PARFAITEMENT