feat(rust) : serveur réécrit en Rust, Node retiré ; Calendrier en tête du menu (#571)

- Serveur Rust (server-rs/, axum + sqlx) : les 148 adresses de l'API,
  l'interface, les migrations de démarrage et les tâches de fond ; même
  comportement que Node (banc : 2027 cas, 0 écart hors écarts déclarés
  USERS-02, RAPPRO-21, R4, R5).
- Node retiré : server/, dépendances serveur, image Docker sans Node
  (51 Mo), docker-compose à un seul service applicatif.
- R4 : écritures d'un autre site refusées (Sec-Fetch-Site / Origin).
- R5 : « aujourd'hui » et sauvegarde automatique à l'heure de Paris.
- R6 : mainteneur dans .github/CODEOWNERS.
- Menu latéral : Accueil puis Calendrier en tête.
- Plan et état : docs/PLAN-MIGRATION-RUST.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ke2qyS8rgacP3ap5iezDbM
This commit is contained in:
LogiFlowandClaude Opus 5.5 authored and GitHub committed 2026-10-15 20:31:14 +02:00
1 parent 6760f43e87
commit 600627c632
146 files changed
+31521 -20331

No files matched your search

+32 -12
View File
@@ -1,5 +1,22 @@
version: '3.8'
# logiflow : serveur Rust (server-rs/), qui sert l'API et l'interface, applique
# les migrations au démarrage et lance les tâches de fond (sauvegardes, purge).
x-logiflow-env: &logiflow-env
NODE_ENV: production
DATABASE_URL: postgresql://logiflow_admin:LogiFlow2025!@logiflow-db:5432/logiflow_db
SESSION_SECRET: LogiFlow_Super_Secret_Session_Key_2025_Production
USE_LOCAL_AUTH: "true"
POSTGRES_USER: logiflow_admin
POSTGRES_PASSWORD: LogiFlow2025!
POSTGRES_DB: logiflow_db
BACKUP_DIR: /app/backups
# Clé(s) de l'API externe de rapprochement, lues depuis le .env de l'hôte (vide = API désactivée)
EXTERNAL_API_KEYS: ${EXTERNAL_API_KEYS:-}
# Origines acceptées en plus de l'adresse du site pour les écritures (décision R4)
ALLOWED_ORIGINS: ${ALLOWED_ORIGINS:-}
services:
logiflow:
build:
@@ -8,17 +25,9 @@ services:
target: production
restart: unless-stopped
environment:
NODE_ENV: production
DATABASE_URL: postgresql://logiflow_admin:LogiFlow2025!@logiflow-db:5432/logiflow_db
SESSION_SECRET: LogiFlow_Super_Secret_Session_Key_2025_Production
<<: *logiflow-env
PORT: 3000
USE_LOCAL_AUTH: "true"
POSTGRES_USER: logiflow_admin
POSTGRES_PASSWORD: LogiFlow2025!
POSTGRES_DB: logiflow_db
BACKUP_DIR: /app/backups
# Clé(s) de l'API externe de rapprochement, lues depuis le .env de l'hôte (vide = API désactivée)
EXTERNAL_API_KEYS: ${EXTERNAL_API_KEYS:-}
RUST_LOG: info
ports:
- "3000:3000"
networks:
@@ -27,13 +36,24 @@ services:
logiflow-db:
condition: service_healthy
volumes:
- ./migrations:/app/migrations
- backup_data:/app/backups
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
logiflow-db:
condition: service_healthy
volumes:
- ./migrations:/app/migrations
- backup_data:/app/backups
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3001/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
logiflow-db:
@@ -66,4 +86,4 @@ volumes:
networks:
nginx_default:
external: true
external: true