Files
pdf_oralia_vibe/README.md
Bertrand Benjamin 8972bcaa06 deploy: consomme l'image Docker publiée par la CI au lieu d'un build local
Le docker-compose.yml tire désormais git.opytex.org/lafrite/plesna-gerance:latest
et persiste les données dans un volume nommé (plesna-data) plutôt qu'un bind-mount.
make docker fait pull+up ; make docker-build reste disponible pour tester l'image en local.
2026-07-24 18:12:43 +02:00

121 lines
3.7 KiB
Markdown

# Plesna Gerance
Extracteur de comptes rendus de gerance Oralia/ICS.
## Prerequis
- Python >= 3.10
- [uv](https://docs.astral.sh/uv/)
- Node.js >= 22
> L'extraction de PDF utilise `pdfplumber` (Python pur) : aucun binaire
> systeme requis (plus besoin de `poppler-utils`/`pdftotext`).
## Installation
```bash
uv sync
cd frontend && npm install
```
## Developpement
Lancer backend et frontend dans deux terminaux separés :
```bash
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 :
```bash
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) :
```bash
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) :
```bash
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 :
```bash
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
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](https://ollama.com)
> installe separement. Sans Ollama, l'application fonctionne normalement et la
> page IA indique simplement que le service est indisponible.