Opérations & infra
1. Déploiement
Section intitulée « 1. Déploiement »🔵 Depuis repo/ :
docker compose build api web && docker compose up -d api webL’image web est standalone : MESSIER_BACKEND_URL est baké au next build
(rewrites figés). En next dev il est lu au runtime — d’où le workflow de vérif local :
MESSIER_BACKEND_URL=http://localhost:8000 npx next dev -p 3100. Les migrations DB se font en
live : docker exec repo-db-1 psql -U disease_linker -d disease_linker -c "ALTER …" (le
init_v1.sql reste idempotent pour les fresh installs).
2. Matériel & stockage
Section intitulée « 2. Matériel & stockage »🔵 Ubuntu 24.04, RTX 4090 24 Go (CUDA), Docker + NVIDIA Container Toolkit.
| Disque | Rôle |
|---|---|
| système (LVM) | Ubuntu, repo, venv (~750 Go libres) |
SSD interne NTFS /mnt/old-windows | assets statiques : models/, knowledge-bases/, sources/, datasets/ |
⚠️ Les tailles de dossiers NTFS peuvent afficher « 0 » à tort → se fier au contenu réel et à
/health (kb_concepts), pas au ls -la.
3. Runner host + timer systemd
Section intitulée « 3. Runner host + timer systemd »🔵 Les builds d’index tournent hors conteneur (l’API monte l’index RO et n’embarque pas
les builders). Le runner consomme la table ontology_builds :
sequenceDiagram participant UI as UI (admin) participant API as API participant DB as Postgres participant R as Runner host (timer ~30s) participant V as Volume index UI->>API: POST /ontology-imports/builds API->>DB: ontology_builds = queued R->>DB: claim (SKIP LOCKED) → running R->>R: kb_builders → dossier temp R->>V: move fichiers en place (os.replace) R->>DB: done (+ durée, version, log) Note over R,API: UMLS : restart API (carte chargée au démarrage)
Activation in-place (os.replace, atomique par fichier) car l’index est un bind mount :
un swap par rename de dossier ne serait pas vu par le conteneur, et on évite un restart. Units :
messier-compositional/deploy/messier-build-runner.{service,timer} (one-shot). Installé/activé :
sudo systemctl enable --now messier-build-runner.timer. → Gestion des ontologies.
4. Authentification
Section intitulée « 4. Authentification »🔵 Aujourd’hui : authentification Credentials Auth.js (stub de développement) ; un token API protège le backend. Jalon 10d : OIDC réel (SWITCH edu-ID / IdP d’un CHU partenaire).
5. Tests
Section intitulée « 5. Tests »🔵 Backend pytest (linking, émission, staging, terminologies, exports, runner…) ; frontend Playwright e2e ; contract test. Conventions apprises : e2e self-contained ; pour la curation, utiliser des mentions non validées et non-onco déterministes (le cache cross-projet et la file onco piègent les tests naïfs).
6. Accès distant
Section intitulée « 6. Accès distant »🔵 Tailscale (SSH + consultation UI iPhone/desktop). Tester l’UI tôt sur iPhone (bugs invisibles en desktop-only).
Voir aussi
Section intitulée « Voir aussi »- Architecture (topologie) · Référence (variables d’env).