mirror of
https://github.com/R0m1k3/CollectFlow.git
synced 2026-10-16 19:59:30 +02:00
Synchro nocturne, préchauffage de la grille (branchement à venir) et README
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LG2LLJuswrrTTPKJmunEVf
This commit is contained in:
6 files changed
+976
-36
No files matched your search
@@ -2,56 +2,60 @@
|
||||
|
||||
CollectFlow est une application de révision d'assortiment et d'analyse de performances des produits en point de vente, conçue pour consolider les données issues de plusieurs fournisseurs et magasins.
|
||||
|
||||
## Architecture
|
||||
|
||||
| Partie | Technologie | Dossier |
|
||||
|---|---|---|
|
||||
| Serveur (API, base, FF Nancy, Qlik, synchro nocturne) | **Rust** — Axum, sqlx, chromiumoxide | `server/` |
|
||||
| Interface | React 19 + Tailwind 4, compilée en fichiers statiques par Vite | `src/` |
|
||||
|
||||
Un seul binaire Rust sert l'API JSON (`/api/...`, dont l'API publique `/api/v1`) et l'interface compilée. Plus de Node.js à l'exécution.
|
||||
|
||||
## Prérequis
|
||||
|
||||
- **Node.js** 18+ (pour le développement local)
|
||||
- **Docker** et **Docker Compose** (pour le déploiement conteneurisé)
|
||||
- **PostgreSQL** 16+
|
||||
- **Docker** et **Docker Compose** (déploiement)
|
||||
- **PostgreSQL** 16+ (base séparée, non fournie par le conteneur)
|
||||
- Pour développer : **Rust** stable (`rustup`) et **Node.js** 22+
|
||||
|
||||
## Lancer avec Docker
|
||||
|
||||
Le projet est configuré pour tourner dans un conteneur Docker optimisé (mode standalone de Next.js).
|
||||
**Note :** Vous devez disposer d'une base de données PostgreSQL séparée (le conteneur ne lance que l'application web).
|
||||
L'image est construite par GitHub Actions à chaque mise à jour de `main` et publiée sur `ghcr.io/r0m1k3/collectflow:latest`. Le `docker-compose.yml` la récupère à chaque démarrage (`pull_policy: always`) : **une nouvelle version s'installe au prochain `docker compose up -d`**, sans rien compiler sur le serveur.
|
||||
|
||||
### 1. Démarrer l'application
|
||||
À la racine du projet, lancez :
|
||||
```bash
|
||||
npm run docker:build
|
||||
# ou directement
|
||||
docker-compose up -d --build
|
||||
```
|
||||
L'application sera accessible sur [http://localhost:5643](http://localhost:5643).
|
||||
# Une seule fois, si le paquet GHCR est privé (jeton GitHub avec le droit read:packages) :
|
||||
echo <JETON> | docker login ghcr.io -u <utilisateur-github> --password-stdin
|
||||
|
||||
*L'application sera attachée au réseau Docker externe `nginx_default` afin d'être exposée derrière votre reverse proxy Nginx. Assurez-vous que ce réseau existe (`docker network create nginx_default`).*
|
||||
|
||||
### 2. Arrêter l'application
|
||||
```bash
|
||||
npm run docker:down
|
||||
# ou directement
|
||||
docker-compose down
|
||||
# Démarrer / mettre à jour :
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
## Développement Local (Sans Docker)
|
||||
L'application est accessible sur [http://localhost:5643](http://localhost:5643). Elle est attachée au réseau Docker externe `nginx_default` pour être exposée derrière le reverse proxy Nginx (`docker network create nginx_default` s'il n'existe pas).
|
||||
|
||||
Si vous préférez développer en local, vous devrez configurer votre propre base de données PostgreSQL.
|
||||
Construire l'image localement plutôt que la télécharger : `docker compose build`.
|
||||
|
||||
### Données et réglages
|
||||
|
||||
Le volume `collectflow-data` (`/app/data`) conserve les réglages saisis dans **Paramètres** (`.db-config.json` : base, Qlik, API FF, synchro nocturne), les comptes de secours (`users.json`) et le secret de session (`.auth-secret`, si `AUTH_SECRET` n'est pas défini). Il est repris tel quel depuis l'ancienne version Node : comptes et mots de passe restent valables (seules les sessions ouvertes sont à refaire).
|
||||
|
||||
Variables d'environnement utiles : `DATABASE_URL`, `AUTH_SECRET`, `FF_API_BASE_URL`, `QLIK_HOST` / `QLIK_USER` / `QLIK_PWD` (et les réglages fins `QLIK_*`), `PG_STATEMENT_TIMEOUT_MS`, `FF_CACHE_TTL_S`, `RUST_LOG` (niveau de journalisation, `info` par défaut).
|
||||
|
||||
## Développement local
|
||||
|
||||
1. Installer les dépendances :
|
||||
```bash
|
||||
# Serveur (port 5643) — tables créées et compte admin/admin initialisé au premier démarrage
|
||||
cd server
|
||||
DATABASE_URL=postgres://postgres:postgres@localhost/collectflow cargo run
|
||||
|
||||
# Interface (port 5173, /api relayé vers le serveur)
|
||||
npm install
|
||||
```
|
||||
|
||||
2. Configurer la connexion DB :
|
||||
Allez sur la page des Paramètres (`/settings`) dans l'application pour configurer l'accès à votre PostgreSQL local.
|
||||
|
||||
3. Lancer le serveur de développement :
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## Structure du Projet (BMAD)
|
||||
Vérifications : `cargo test` (dans `server/`), `npm run lint`, `npm run build`.
|
||||
|
||||
Ce projet respecte l'architecture **BMAD** (Business, Model, Application/API, Data) :
|
||||
- `src/features/*` : Logique métier (Business) isolée par feature (ex: `grid`, `snapshots`)
|
||||
- `src/types/*` : Interfaces TypeScript (Model)
|
||||
- `src/app/*` : Routeurs Next.js UI et endpoints d'API (Application/API)
|
||||
- `src/db/*` : Schémas Drizzle ORM et connexions (Data)
|
||||
## Structure
|
||||
|
||||
- `server/src/` — serveur Rust, un module par domaine : `auth` (sessions, clés d'API), `ff` (base miroir et API FF Nancy), `qlik` (données réseau), `grid` (révision d'assortiment, API `/api/v1`), `produits`, `admin` (comptes, paramètres, synchronisation nocturne).
|
||||
- `server/sql/init.sql` — schéma joué (idempotent) à chaque démarrage.
|
||||
- `src/` — interface React : `features/*` par domaine, `components/` partagés, `pages/` et `router.tsx`.
|
||||
- `server/PORTING.md` — contrat entre l'interface et le serveur (actions, données de pages, routes).
|
||||
Reference in new issue
Block a user