Deux exécutions du même fournisseur D005, même code, même jour : 04:17 → OpenDoc en 78 s, succès en 479 s 06:13 → OpenDoc en 233 s, « code 15 / Request aborted » après 333 s Le moteur Qlik est trois fois plus lent à 6 h qu'à 4 h et finit par abandonner la requête. Les reprises par requête de rpcWithRetry ne servent à rien ici : c'est toute l'extraction qui tombe, et la sync repartait à zéro sans réessayer. L'extraction est désormais relancée entièrement sur erreur transitoire (code 15 ou « Request aborted »), une fois par défaut, après une pause de 60 s — pas immédiatement : relancer aussitôt ne ferait qu'ajouter de la charge au serveur qui vient de renoncer. Réglable via QLIK_EXTRACTION_RETRIES et QLIK_EXTRACTION_RETRY_PAUSE_MS. Le reste du comportement est préservé : le refus de publier une fenêtre 12 mois incomplète, et la reprise sur point de contrôle hors fenêtre datée, s'appliquent comme avant une fois les reprises épuisées. Le checkpoint est vidé entre deux tentatives pour ne pas mélanger deux extractions. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y26nRZxTR57K7h8yqsF675
CollectFlow
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.
Prérequis
- Node.js 18+ (pour le développement local)
- Docker et Docker Compose (pour le déploiement conteneurisé)
- PostgreSQL 16+
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).
1. Démarrer l'application
À la racine du projet, lancez :
npm run docker:build
# ou directement
docker-compose up -d --build
L'application sera accessible sur http://localhost:5643.
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
npm run docker:down
# ou directement
docker-compose down
Développement Local (Sans Docker)
Si vous préférez développer en local, vous devrez configurer votre propre base de données PostgreSQL.
- Installer les dépendances :
npm install
-
Configurer la connexion DB : Allez sur la page des Paramètres (
/settings) dans l'application pour configurer l'accès à votre PostgreSQL local. -
Lancer le serveur de développement :
npm run dev
Structure du Projet (BMAD)
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)