mirror of
https://github.com/R0m1k3/CollectFlow.git
synced 2026-10-20 05:28:11 +02:00
Les pages Stock (stock négatif, stock sans vente, sans vente depuis 6 mois) joignaient obligatoirement le fournisseur principal (artfou1.preference = 1) et sa fiche fouident : un article sans principal — ou sans aucune ligne artfou1, comme le codein 504202 — était purement retiré de la liste. Les jointures deviennent facultatives et le fournisseur suit partout la même règle : le principal, sinon le fournisseur référencé le plus récent, sinon celui des données du réseau (cache Qlik, par code centrale), sinon « Sans fournisseur ». Même repli pour le CA par fournisseur, la dernière réception (cadencier), le Hit Parade, la recherche produit et les opportunités. Dans la recherche, ce repli ne masque plus le fournisseur que Qlik vient de renvoyer. Test d'intégration opt-in (FF_FOURNISSEUR_TEST_DATABASE_URL) qui rejoue les quatre cas ; il échoue sur l'ancien code (1 article listé sur 4). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DhSZx8CCuqoKrDw7unFqGq
58 lines
1.9 KiB
Rust
58 lines
1.9 KiB
Rust
//! Module `ff` — données FF Nancy : base miroir PostgreSQL (`pg`), API REST
|
|
//! (`api`), lectures partagées en cache (`cache`), diagnostic de l'API
|
|
//! (`diagnostic`), routes, actions et données de pages.
|
|
|
|
pub mod actions;
|
|
pub mod api;
|
|
pub mod cache;
|
|
pub mod diagnostic;
|
|
pub mod js;
|
|
pub mod pages;
|
|
pub mod pg;
|
|
pub mod routes;
|
|
|
|
#[cfg(test)]
|
|
mod fixture_tests;
|
|
#[cfg(test)]
|
|
mod tests_fournisseur_db;
|
|
|
|
use crate::handler;
|
|
use crate::rpc::Handler;
|
|
use axum::routing::get;
|
|
use axum::Router;
|
|
|
|
/// Routes HTTP du module.
|
|
pub fn router() -> Router {
|
|
Router::new()
|
|
.route("/api/ff-status", get(routes::ff_status))
|
|
.route("/api/diag", get(routes::diag))
|
|
.route("/api/diag/stock-fournisseur", get(routes::diag_stock_fournisseur))
|
|
.route("/api/test-db", get(routes::test_db))
|
|
.route("/api/commandes-auto", get(routes::commandes_auto))
|
|
}
|
|
|
|
/// Actions (`POST /api/actions/{nom}`) du module.
|
|
pub fn actions() -> Vec<(&'static str, Handler)> {
|
|
vec![
|
|
("getFournisseurs", handler!(actions::get_fournisseurs)),
|
|
("getMagasins", handler!(actions::get_magasins)),
|
|
("getFournisseursPourCadence", handler!(actions::get_fournisseurs_pour_cadence)),
|
|
("listCadences", handler!(actions::list_cadences)),
|
|
("upsertCadence", handler!(actions::upsert_cadence)),
|
|
("toggleCadence", handler!(actions::toggle_cadence)),
|
|
("removeCadence", handler!(actions::remove_cadence)),
|
|
]
|
|
}
|
|
|
|
/// Données de pages (`GET /api/pages/{nom}`) du module.
|
|
pub fn pages() -> Vec<(&'static str, Handler)> {
|
|
vec![
|
|
("dashboard", handler!(pages::page_dashboard)),
|
|
("analytics", handler!(pages::page_analytics)),
|
|
("hit-parade", handler!(pages::page_hit_parade)),
|
|
("stock-negatif", handler!(pages::page_stock_negatif)),
|
|
("commandes-auto", handler!(pages::page_commandes_auto)),
|
|
("publicites", handler!(pages::page_publicites)),
|
|
]
|
|
}
|