Bertrand Benjamin 8d869a3dde
All checks were successful
Build and Publish Docker Image / Build App Image (push) Successful in 21s
Build and Publish Docker Image / Build Summary (push) Successful in 3s
feat: réorganise la navigation en barre latérale repliable
Les sept onglets alignés dans le header ne disaient pas que trois natures de
travail s'y mêlaient. Ils passent en colonne, sous deux titres : Saisie
alimente la base (Documents, Fiches logements), Analyse en lit le contenu
(Recettes, Dépenses, Par lot). Config quitte la rangée pour un pied de menu,
c'est un réglage et non une destination de travail.

« Logements » et « Lots » se ressemblaient trop pour deux pages qui parlent du
même objet sans faire la même chose. Elles deviennent « Fiches logements » —
ce qu'on y saisit — et « Par lot » — ce qu'on y lit. Les URL ne bougent pas,
elles circulent dans des liens déjà partagés.

Le bouton « Importer un PDF » disparaît du menu : la page Documents porte déjà
le sien en tête de liste et l'accueil garde sa zone de dépôt. Ce troisième
exemplaire n'ajoutait rien.

La barre se replie sur ses seules icônes, le libellé passant en infobulle et un
filet prenant la place des titres de groupe. Le repli est gardé en
`localStorage` : c'est un réglage d'espace de travail, le retrouver déplié à
chaque rechargement serait une corvée.

Les flèches de Recettes et Dépenses sont celles des actions rapides de
l'accueil. Replié, le menu ne montre plus que ces icônes : elles doivent
désigner la même chose d'un écran à l'autre.

Le calcul de l'état actif suit l'entrée de menu dans `NavLien`, qui la rend
dépliée ou non. Une fiche de lot (`/lots/26`) garde ainsi son entrée allumée,
comme avant le déménagement.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 11:24:32 +02:00
2026-01-22 21:23:46 +01:00
2026-07-25 19:53:17 +02:00

Plesna Gerance

Extracteur de comptes rendus de gerance Oralia/ICS.

Prerequis

  • Python >= 3.10
  • uv
  • Node.js >= 22

L'extraction de PDF utilise pdfplumber (Python pur) : aucun binaire systeme requis (plus besoin de poppler-utils/pdftotext).

Installation

uv sync
cd frontend && npm install

Developpement

Lancer backend et frontend dans deux terminaux separés :

make dev_back   # Backend sur http://localhost:8000 (auto-reload)
make dev_front  # Frontend sur http://localhost:5173 (hot-reload)

Ou les deux en parallele :

make dev

Ouvrir http://localhost:5173 — le proxy Vite redirige /api vers le backend.

Production (Docker)

Un conteneur unique : l'image embarque le frontend Vue builde, servi par le backend FastAPI (API + interface web sur le meme port). Pas de nginx.

L'image est publiee par la CI Gitea (.gitea/workflows/docker-publish.yml) sur git.opytex.org/lafrite/plesna-gerance. Le docker-compose.yml la tire directement (pas de build local) :

make docker          # podman-compose pull && podman-compose up -d
# ou : docker compose pull && docker compose up -d

Accessible sur http://localhost:8080.

Les donnees (base SQLite + documents) sont declarees via PLESNA_DATA_DIR (voir docker-compose.yml) et persistees dans un volume nomme dedie (plesna-data), donc conservees entre les redemarrages et recreations du conteneur.

Build local de l'image (test avant publication) : make docker-build (podman build -f backend.Dockerfile -t plesna-gerance:local .).

Application de bureau (Windows, sans ligne de commande)

L'application peut etre empaquetee en executable Windows autonome : un seul fichier que l'utilisateur final installe et lance via une icone, sans Python, sans Node, sans terminal. L'extraction etant en Python pur, aucun binaire externe n'est requis.

Tester le mode bureau (depuis les sources)

Sous Windows (pywebview utilise WebView2, deja present) :

uv sync --group desktop
cd frontend && npm run build && cd ..
uv run plesna-gerance desktop   # ouvre une fenetre native

Sous Linux, pywebview a besoin d'un moteur de rendu. Le groupe desktop-linux fournit un backend Qt entierement pip-installable :

uv sync --group desktop-linux
cd frontend && npm run build && cd ..
uv run plesna-gerance desktop   # necessite un environnement graphique ($DISPLAY)

Ce backend Qt ne sert qu'a tester le mode fenetre sous Linux : il n'est pas embarque dans le build Windows.

Produire l'executable + l'installeur

Deux options (le build doit se faire sur Windows, PyInstaller ne croise pas les plateformes) :

  1. Sur une machine Windows — installer uv, Node.js et (optionnel) Inno Setup 6, puis :

    powershell -ExecutionPolicy Bypass -File packaging\build_windows.ps1
    

    Produit dist\PlesnaGerance.exe et, si Inno Setup est present, dist\PlesnaGerance-Setup.exe.

  2. Sans machine Windows — via GitHub Actions : le workflow .github/workflows/build-windows.yml compile sur un runner Windows. Le declencher (onglet Actions ou en poussant un tag v*) puis telecharger l'artefact PlesnaGerance-windows.

Cote utilisateur final

Lancer PlesnaGerance-Setup.exe, suivre l'assistant (installation par utilisateur, sans droits administrateur), puis cliquer sur l'icone Plesna Gerance. Les donnees (base et documents) sont stockees dans %APPDATA%\PlesnaGerance et conservees entre les mises a jour.

Assistant IA (optionnel) : la page IA necessite Ollama installe separement. Sans Ollama, l'application fonctionne normalement et la page IA indique simplement que le service est indisponible.

Description
No description provided
Readme 1.2 MiB
Languages
Python 48.9%
Vue 39.8%
JavaScript 9.9%
CSS 0.7%
PowerShell 0.2%
Other 0.5%