Passer au contenu principal
Solya est une application Next.js soutenue par deux magasins de données ayant des rôles distincts.

Les composants

Application Next.js

App Router + React Server Components. Les actions serveur et les routes /api/ contiennent la logique métier.

Base de données opérationnelle

PostgreSQL (Drizzle ORM) stocke les entités gérées par l’application : plans, règles, alertes, étiquettes, paramètres, audit.

Analyse (Databricks)

Les couches gold/silver contiennent les données de détail nettoyées et prêtes à l’emploi métier pour l’analyse, les prévisions et les décisions.

Deux magasins de données, deux rôles

  • PostgreSQL (opérationnel) — tout ce que les utilisateurs créent dans Solya : plans d’inventaire et articles, règles métier et jeux de règles, alertes, étiquettes et règles de tagging, workflows, paramètres, modèles de navigation et le journal d’audit. Limité à l’organisation via organizationId.
  • Databricks (analyse) — tout ce qui est ingéré et calculé : ventes, commandes, mouvements, stock, dimensions, résumés, prévisions et vecteurs de décision. Rempli par la plateforme données (ETL des systèmes POS) et lu par l’application pour les tableaux de bord, KPIs, la recherche, les alertes et les recommandations. Voir Modèle de données.

Flux de demande

  1. Un utilisateur (navigateur) ou une intégration (token API) appelle une action serveur ou une route /api/.
  2. L’appel est authentifié et résolu en une organisation (voir Authentification & multi-tenancy).
  3. Les services exécutent la logique métier — lectures/écritures PostgreSQL et/ou requêtes Databricks — et les règles métier encadrent les mutations où applicable (voir Moteur de règles métier).
  4. Les réponses utilisent une enveloppe cohérente avec des codes d’erreur stables (voir Codes d’erreur).

La plateforme données

Les travaux lourds — ingestion, évaluation d’étiquettes/alertes et calcul de recommandations/décisions — s’exécutent sur la plateforme données (Databricks). L’application les déclenche en tant qu’ exécutions et suit leur statut et leurs journaux (exécutions d’ingestion, exécutions d’évaluation d’étiquettes/alertes, exécutions de workflow), pour que les travaux de longue durée restent observables à partir de l’interface utilisateur et de l’API.