From eb7eead5556adbde0c8a73410105916a8388d6e0 Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Sun, 26 Jul 2026 12:14:27 +0200 Subject: [PATCH] feat: masque la section IA derriere un interrupteur de fonctionnalite MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La section IA n'est pas prete a etre utilisee. Plutot que de supprimer le code, deux interrupteurs alignes la retirent de l'application : - frontend/src/features.js : onglet de navigation, page /ia (redirigee vers l'accueil pour ne pas casser un signet) et section « Configuration LLM » de la page Config. La page n'est plus embarquee dans le bundle. - src/plesna_gerance/features.py : les routes /api/ia ne sont plus montees, les endpoints n'existent donc pas du tout. Les settings Ollama restent en base : repasser les deux interrupteurs a true suffit a tout reactiver, sans ressaisie. Co-Authored-By: Claude Opus 5 --- frontend/src/App.vue | 3 ++- frontend/src/features.js | 9 +++++++++ frontend/src/pages/ConfigPage.vue | 10 ++++++---- frontend/src/router.js | 22 ++++++++++++++++------ src/plesna_gerance/api/app.py | 4 +++- src/plesna_gerance/features.py | 10 ++++++++++ 6 files changed, 46 insertions(+), 12 deletions(-) create mode 100644 frontend/src/features.js create mode 100644 src/plesna_gerance/features.py diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 24921c1..072147a 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -46,6 +46,7 @@ import { ref } from 'vue' import { useRouter } from 'vue-router' import { pendingFile } from './store' +import { FEATURE_IA } from './features' const router = useRouter() const fileInput = ref(null) @@ -55,7 +56,7 @@ const navLinks = [ { to: '/documents', label: 'Documents' }, { to: '/revenus', label: 'Revenus' }, { to: '/analytics', label: 'Depenses' }, - { to: '/ia', label: 'IA' }, + ...(FEATURE_IA ? [{ to: '/ia', label: 'IA' }] : []), { to: '/config', label: 'Config' } ] diff --git a/frontend/src/features.js b/frontend/src/features.js new file mode 100644 index 0000000..a5c4bc7 --- /dev/null +++ b/frontend/src/features.js @@ -0,0 +1,9 @@ +// Interrupteurs de fonctionnalités du front. +// +// FEATURE_IA masque toute la section IA (onglet de navigation, page /ia, +// section « Configuration LLM » de la page Config) en attendant qu'elle soit +// prête. Le code reste en place : repasser à `true` la réactive partout. +// +// Le backend a son propre interrupteur dans src/plesna_gerance/features.py +// (il monte ou non les routes /api/ia) : les deux doivent rester alignés. +export const FEATURE_IA = false diff --git a/frontend/src/pages/ConfigPage.vue b/frontend/src/pages/ConfigPage.vue index 8bbc820..0046d04 100644 --- a/frontend/src/pages/ConfigPage.vue +++ b/frontend/src/pages/ConfigPage.vue @@ -5,15 +5,15 @@ -
+
-
+

Configuration LLM (Ollama)

@@ -130,6 +130,7 @@ diff --git a/frontend/src/router.js b/frontend/src/router.js index 45ed659..cbbb962 100644 --- a/frontend/src/router.js +++ b/frontend/src/router.js @@ -6,8 +6,22 @@ import RevenusPage from './pages/RevenusPage.vue' import DocumentsPage from './pages/DocumentsPage.vue' import EditDocumentPage from './pages/EditDocumentPage.vue' import ReExtractionPage from './pages/ReExtractionPage.vue' -import IAPage from './pages/IAPage.vue' import ConfigPage from './pages/ConfigPage.vue' +import { FEATURE_IA } from './features' + +// Section IA masquée : /ia reste une route valide mais ramène à l'accueil, pour +// qu'un signet ou une entrée d'historique n'aboutisse pas sur une page vide. +// La page n'est chargée (et embarquée dans le bundle) que si la feature est active. +const iaRoute = FEATURE_IA + ? { + path: '/ia', + name: 'ia', + component: () => import('./pages/IAPage.vue') + } + : { + path: '/ia', + redirect: '/' + } const routes = [ { @@ -30,11 +44,7 @@ const routes = [ name: 'revenus', component: RevenusPage }, - { - path: '/ia', - name: 'ia', - component: IAPage - }, + iaRoute, { path: '/config', name: 'config', diff --git a/src/plesna_gerance/api/app.py b/src/plesna_gerance/api/app.py index 477122f..27b048c 100644 --- a/src/plesna_gerance/api/app.py +++ b/src/plesna_gerance/api/app.py @@ -9,6 +9,7 @@ from fastapi.staticfiles import StaticFiles from .. import __version__ from ..database import init_db +from ..features import FEATURE_IA from ..paths import resource_path from .routes import ( analytics_router, @@ -51,7 +52,8 @@ app.include_router(tags_router) app.include_router(analytics_router) app.include_router(dashboard_router) app.include_router(revenus_router) -app.include_router(ia_router) +if FEATURE_IA: + app.include_router(ia_router) app.include_router(config_router) diff --git a/src/plesna_gerance/features.py b/src/plesna_gerance/features.py new file mode 100644 index 0000000..c89f5f5 --- /dev/null +++ b/src/plesna_gerance/features.py @@ -0,0 +1,10 @@ +"""Interrupteurs de fonctionnalités du backend. + +FEATURE_IA conditionne le montage des routes /api/ia. Désactivé, les endpoints +n'existent pas du tout : le code reste en place, il n'est simplement pas exposé. + +Le front a son propre interrupteur dans frontend/src/features.js (onglet, page +et section Config) : les deux doivent rester alignés. +""" + +FEATURE_IA = False