Files
CollectFlow/server/src/produits/mod.rs
T
Claude f232673138 Portage du module Produits : recherche Qlik d'abord, fiche produit, opportunités
- /api/produits/search (POST démarre un job, GET suit l'avancement) : Qlik
  d'abord, repli catalogue FF (source: "db"), cache mémoire 10 min des seuls
  résultats Qlik exploitables, une recherche Qlik à la fois.
- /api/produits/opportunites : produits de la même famille, local vs réseau.
- Page produit-fiche (?codein= ou ?cc=) : getProduitFiche /
  getProduitFicheByCodeCentrale, report du stock de fin de mois.
- normalizeMargePct (compare-reseau) et types JSON identiques au client.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LG2LLJuswrrTTPKJmunEVf
2026-10-12 19:56:31 +00:00

37 lines
1.2 KiB
Rust

//! Module `produits` — recherche produit (Qlik d'abord, base FF Nancy en repli)
//! et fiche produit.
//!
//! - [`search`] : recherche asynchrone (jobs en mémoire, cache 10 min) ;
//! - [`fiche`] : assemblage de la fiche produit (local + réseau) ;
//! - [`compare_reseau`] : normalisation du taux de marge réseau ;
//! - [`types`] : formes JSON partagées avec l'interface ;
//! - [`routes`] : `/api/produits/search`, `/api/produits/opportunites`, page `produit-fiche`.
pub mod compare_reseau;
pub mod fiche;
pub mod routes;
pub mod search;
pub mod types;
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/produits/search", get(routes::search_get).post(routes::search_post))
.route("/api/produits/opportunites", get(routes::opportunites))
}
/// Actions (`POST /api/actions/{nom}`) du module.
pub fn actions() -> Vec<(&'static str, Handler)> {
vec![]
}
/// Données de pages (`GET /api/pages/{nom}`) du module.
pub fn pages() -> Vec<(&'static str, Handler)> {
vec![("produit-fiche", handler!(routes::page_produit_fiche))]
}