feat(api,ai): #72 OpenAPI 3.1 enrichie + fiabilisation de l'outil AI UI
CI / lint (push) Successful in 55s
CI / security (push) Successful in 37s
CI / test (push) Successful in 1m19s
CI / build (push) Successful in 34s
CI / e2e (push) Successful in 10m27s
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s

API (#72):
- backend/openapi_docs.py: 18 tags documentes, assignation auto par prefixe,
  securite bearerAuth/cookieAuth, erreurs 401/403/404/422/500, exemples,
  page /api autonome (liens /docs, /redoc, /openapi.json)
- backend/schemas.py: response_model Pydantic pour ~35 endpoints sans modele
- main.py: FastAPI enrichi + override app.openapi; routes /api et /api/
- ai_routes/bookslm_routes: response_model + doc SSE
- frontend: entree 'API' du menu (i18n FR/EN)
- tests/test_openapi.py (58 tests)

AI UI:
- BooksLM: requetes authentifiees (AuthManager), parsing SSE {token}/error,
  message utilisateur correct (plus le placeholder vide), barre de contexte
- AI Editor: Ctrl/Cmd+J lie une seule fois, libelles i18n, modale de
  reecriture accessible a la place de window.prompt()
- tests/frontend/ai.test.mjs (7 tests) + CI
This commit is contained in:
2026-09-11 01:40:21 -04:00
parent 75ef597ece
commit 62023acd4d
18 changed files with 2001 additions and 154 deletions
+9
View File
@@ -87,6 +87,7 @@
"ai.error_invalid_key": "Invalid API key",
"ai.explain": "Explain",
"ai.fix_spelling": "Fix spelling",
"ai.fix_spelling_hint": "Fixes spelling and grammar",
"ai.frontmatter": "Generate frontmatter",
"ai.generate": "Generate",
"ai.hint_add_details": "Adds details",
@@ -113,16 +114,20 @@
"ai.rewrite": "💬 Rewrite",
"ai.rewrite_done": "AI: text rewritten",
"ai.rewrite_prompt": "Rewrite instruction:",
"ai.rewrite_placeholder": "e.g. make the tone more formal and add a conclusion",
"ai.rewrite_title": "Rewrite text according to your instructions",
"ai.select_text": "AI: select text to process",
"ai.shorter": "Shorter",
"ai.shorter_hint": "Makes the text more concise",
"ai.simplify": "Simplify",
"ai.simplify_hint": "Simplifies the language",
"ai.summarize": "Summarize",
"ai.text_processed": "AI: text processed ✓",
"ai.text_rewritten": "AI: text rewritten",
"ai.to_canvas": "Convert to Canvas",
"ai.to_list": "Convert to list",
"ai.to_table": "Convert to table",
"ai.tone_hint": "Changes the text tone",
"ai.toolbar_edit": "Edit",
"ai.toolbar_generate": "Generate",
"ai.toolbar_rewrite": "Rewrite",
@@ -130,6 +135,7 @@
"ai.toolbar_toolbox": "Toolbox",
"ai.toolbar_translate": "Translate",
"ai.toolbox": "🧰 Toolbox",
"ai.toolbox_hint": "Conversion tools",
"ai.translate_to": "Translate to {lang}",
"auth.cannot_delete_self": "Cannot delete your own account",
"auth.logged_out": "Signed out",
@@ -624,6 +630,8 @@
"header.menu_about_desc": "Version, credits & info",
"header.menu_admin": "Administration",
"header.menu_admin_desc": "Manage users",
"header.menu_api": "API",
"header.menu_api_desc": "OpenAPI documentation",
"header.menu_config": "Settings",
"header.menu_config_desc": "Application settings",
"header.menu_help": "User guide",
@@ -1597,6 +1605,7 @@
"bookslm.export": "Export conversation",
"bookslm.toggle_sidebar": "Hide/Show AI sidebar",
"bookslm.copy": "Copy",
"bookslm.error": "AI service error",
"bookslm.regenerate": "Regenerate",
"bookslm.suggestion_summary": "Summarize this directory",
"bookslm.suggestion_themes": "What are the main themes?",
+9
View File
@@ -87,6 +87,7 @@
"ai.error_invalid_key": "clé API invalide",
"ai.explain": "Expliquer",
"ai.fix_spelling": "Corriger l'orthographe",
"ai.fix_spelling_hint": "Corrige les fautes",
"ai.frontmatter": "Générer frontmatter",
"ai.generate": "Générer",
"ai.hint_add_details": "Ajoute des détails",
@@ -113,16 +114,20 @@
"ai.rewrite": "💬 Réécrire",
"ai.rewrite_done": "AI: texte réécrit",
"ai.rewrite_prompt": "Instruction de réécriture :",
"ai.rewrite_placeholder": "Ex. : rends le ton plus formel et ajoute une conclusion",
"ai.rewrite_title": "Réécrit le texte selon vos instructions",
"ai.select_text": "AI: sélectionnez du texte à traiter",
"ai.shorter": "Raccourcir",
"ai.shorter_hint": "Rend le texte plus concis",
"ai.simplify": "Simplifier",
"ai.simplify_hint": "Simplifie le langage",
"ai.summarize": "Résumer",
"ai.text_processed": "AI: texte traité ✓",
"ai.text_rewritten": "AI: texte réécrit",
"ai.to_canvas": "Convertir en Canvas",
"ai.to_list": "Convertir en liste",
"ai.to_table": "Convertir en tableau",
"ai.tone_hint": "Change le ton du texte",
"ai.toolbar_edit": "Éditer",
"ai.toolbar_generate": "Générer",
"ai.toolbar_rewrite": "Réécrire",
@@ -130,6 +135,7 @@
"ai.toolbar_toolbox": "Toolbox",
"ai.toolbar_translate": "Traduire",
"ai.toolbox": "🧰 Boîte",
"ai.toolbox_hint": "Outils de conversion",
"ai.translate_to": "Traduire en {lang}",
"auth.cannot_delete_self": "Impossible de supprimer son propre compte",
"auth.logged_out": "Déconnecté",
@@ -624,6 +630,8 @@
"header.menu_about_desc": "Version, crédits & info",
"header.menu_admin": "Administration",
"header.menu_admin_desc": "Gérer les utilisateurs",
"header.menu_api": "API",
"header.menu_api_desc": "Documentation OpenAPI",
"header.menu_config": "Configurations",
"header.menu_config_desc": "Paramètres de l'application",
"header.menu_help": "Guide d'utilisation",
@@ -1597,6 +1605,7 @@
"bookslm.export": "Exporter la conversation",
"bookslm.toggle_sidebar": "Masquer/Afficher la sidebar AI",
"bookslm.copy": "Copier",
"bookslm.error": "Erreur du service AI",
"bookslm.regenerate": "Régénérer",
"bookslm.suggestion_summary": "Résume ce répertoire",
"bookslm.suggestion_themes": "Quels sont les thèmes principaux ?",