docs: update API documentation with missing endpoints and schema corrections
This commit is contained in:
1 parent
f16e2efe0b
commit
62249e6c13
1 file changed
+284
-1
+284
-1
@@ -259,6 +259,53 @@ GET /api/articles/:id/mouvements
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### Dernier fournisseur par site
|
||||||
|
|
||||||
|
```
|
||||||
|
GET /api/articles/:id/dernier-fournisseur?site=
|
||||||
|
```
|
||||||
|
|
||||||
|
Retourne le fournisseur réel issu du dernier mouvement d'entrée en stock (`GenreMvt = 1`) pour chaque site. C'est le seul moyen fiable d'identifier quel fournisseur a livré l'exemplaire du produit actuellement en rayon.
|
||||||
|
|
||||||
|
| Paramètre | Type | Description | Défaut |
|
||||||
|
|-----------|--------|----------------------------|--------|
|
||||||
|
| `site` | string | Filtrer par site (partiel) | tous |
|
||||||
|
|
||||||
|
**Réponse** :
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"artnoid": "12345",
|
||||||
|
"fournisseurs_par_site": [
|
||||||
|
{
|
||||||
|
"site": "001",
|
||||||
|
"date_derniere_entree": "2026-05-15T00:00:00.000Z",
|
||||||
|
"codefou": "FOU01",
|
||||||
|
"nom_fournisseur": "MON FOURNISSEUR",
|
||||||
|
"qte_entree": 24,
|
||||||
|
"prmp": 10.20
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Photo de produit (Proxy)
|
||||||
|
|
||||||
|
```
|
||||||
|
GET /api/articles/:id/photo?size=
|
||||||
|
```
|
||||||
|
|
||||||
|
Proxy et met en cache l'image du produit depuis `lafoirfouille.fr` en contournant les limitations de CORS.
|
||||||
|
|
||||||
|
| Paramètre | Type | Description | Défaut |
|
||||||
|
|-----------|--------|---------------------------------------------------|----------|
|
||||||
|
| `size` | string | Taille de l'image (`large` pour 1200x1200H) | 300Wx300H|
|
||||||
|
|
||||||
|
**Réponse** : Le flux binaire de l'image avec un en-tête `Content-Type` approprié (ex: `image/jpeg`) et une directive de mise en cache HTTP.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Fournisseurs
|
## Fournisseurs
|
||||||
|
|
||||||
### Liste des fournisseurs
|
### Liste des fournisseurs
|
||||||
@@ -329,6 +376,28 @@ GET /api/fournisseurs/:code/commandes
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### Franco de port d'un fournisseur
|
||||||
|
```
|
||||||
|
GET /api/fournisseurs/:code/franco
|
||||||
|
```
|
||||||
|
Retourne le seuil de franco de port configuré pour le fournisseur (priorité à la table `fouport2` via `fouport` par rapport à la table `foucad`).
|
||||||
|
|
||||||
|
**Réponse** :
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"code": "FOU01",
|
||||||
|
"nom": "MON FOURNISSEUR SARL",
|
||||||
|
"franco_ht": 350.00,
|
||||||
|
"franco_port": 350.00,
|
||||||
|
"franco_general": 300.00,
|
||||||
|
"actif": "O",
|
||||||
|
"duree": 0,
|
||||||
|
"unite": null
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Stock
|
## Stock
|
||||||
|
|
||||||
### Stock global
|
### Stock global
|
||||||
@@ -736,6 +805,44 @@ GET /api/mouvements/synthese?dateDebut=&dateFin=&site=
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### Règlements de caisse
|
||||||
|
```
|
||||||
|
GET /api/mouvements/reglements
|
||||||
|
```
|
||||||
|
Liste l'ensemble des règlements et paiements de tickets de caisse de la table `MvtReg`.
|
||||||
|
|
||||||
|
| Paramètre | Type | Description | Défaut |
|
||||||
|
|-------------|------|--------------------------|------------|
|
||||||
|
| `dateDebut` | date | Date début `YYYY-MM-DD` | 2024-01-01 |
|
||||||
|
| `dateFin` | date | Date fin `YYYY-MM-DD` | 2099-12-31 |
|
||||||
|
| `page` | int | Numéro de page | 1 |
|
||||||
|
| `limit` | int | Lignes max (max 1000) | 100 |
|
||||||
|
|
||||||
|
**Réponse** :
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"page": 1,
|
||||||
|
"limit": 100,
|
||||||
|
"reglements": [
|
||||||
|
{
|
||||||
|
"datmvt": "2026-05-28T14:30:00.000Z",
|
||||||
|
"codtick": "TK123456",
|
||||||
|
"codcartecli": "CARD789",
|
||||||
|
"coddev": "EUR",
|
||||||
|
"mntreg": 45.90,
|
||||||
|
"mntregdev": 45.90,
|
||||||
|
"clientnom": "DUPONT JEAN",
|
||||||
|
"echeance": null,
|
||||||
|
"reference": null,
|
||||||
|
"typereg": "CB",
|
||||||
|
"suividatecreation": "2026-05-28T14:31:00.000Z"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Performance
|
## Performance
|
||||||
|
|
||||||
### Chiffre d'affaires
|
### Chiffre d'affaires
|
||||||
@@ -787,16 +894,23 @@ GET /api/performance/hitparade
|
|||||||
| `site` | string | Filtrer par site | tous |
|
| `site` | string | Filtrer par site | tous |
|
||||||
| `limit` | int | Nombre d'articles (max 500) | 50 |
|
| `limit` | int | Nombre d'articles (max 500) | 50 |
|
||||||
| `groupBy` | `ca` / `qte` / `marge`| Critère de classement | `ca` |
|
| `groupBy` | `ca` / `qte` / `marge`| Critère de classement | `ca` |
|
||||||
|
| `codefou` | string | Filtrer par code fournisseur | — |
|
||||||
|
|
||||||
**Réponse** :
|
**Réponse** :
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
"dateDebut": "2024-01-01",
|
||||||
|
"dateFin": "2099-12-31",
|
||||||
|
"site": "tous",
|
||||||
|
"codefou": null,
|
||||||
"classementPar": "ca",
|
"classementPar": "ca",
|
||||||
"hitparade": [
|
"hitparade": [
|
||||||
{
|
{
|
||||||
"codein": "ABC123",
|
"codein": "ABC123",
|
||||||
"libelle1": "MON ARTICLE",
|
"libelle1": "MON ARTICLE",
|
||||||
"site": "001",
|
"site": "001",
|
||||||
|
"code_fournisseur": "FOU01",
|
||||||
|
"fournisseur": "MON FOURNISSEUR",
|
||||||
"nb_passages": 320,
|
"nb_passages": 320,
|
||||||
"qte_vendue": 640,
|
"qte_vendue": 640,
|
||||||
"ca_ht": 5760.00,
|
"ca_ht": 5760.00,
|
||||||
@@ -840,7 +954,7 @@ GET /api/performance/ca/fournisseur?dateDebut=&dateFin=&site=
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
> La jointure se fait via `artfou1.preference = true` (fournisseur principal de l'article) → `fouident.code` pour le nom.
|
> La jointure se fait via `artfou1.preference = 1` (fournisseur principal de l'article) → `fouident.code` pour le nom.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -896,6 +1010,140 @@ GET /api/performance/ca/gamme?dateDebut=&dateFin=&site=
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### Tableau de bord quotidien (Dashboard)
|
||||||
|
```
|
||||||
|
GET /api/performance/dashboard
|
||||||
|
```
|
||||||
|
Retourne une synthèse complète du jour demandé (par rapport au même jour à N-1) ainsi que les 3 Top 10 (CA, Quantité et Marge) par site.
|
||||||
|
|
||||||
|
| Paramètre | Type | Description | Défaut |
|
||||||
|
|-----------|--------|---------------------------------------------------|------------|
|
||||||
|
| `date` | date | Date cible `YYYY-MM-DD` | hier |
|
||||||
|
| `site` | string | Filtrer par site (facultatif) | tous |
|
||||||
|
|
||||||
|
**Réponse** :
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"date": "2026-03-20",
|
||||||
|
"date_n1": "2025-03-20",
|
||||||
|
"sites": [
|
||||||
|
{
|
||||||
|
"site": "001",
|
||||||
|
"ca_ttc": 12450.00,
|
||||||
|
"ca_ttc_n1": 11800.00,
|
||||||
|
"evol_ca": "+5.5%",
|
||||||
|
"trafic": 420,
|
||||||
|
"trafic_n1": 410,
|
||||||
|
"evol_trafic": "+2.4%"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"top10_ca": [
|
||||||
|
{
|
||||||
|
"codein": "129632",
|
||||||
|
"libelle1": "ETUI 10 CARTES",
|
||||||
|
"site": "001",
|
||||||
|
"ca_ttc": 245.50,
|
||||||
|
"qte_vendue": 60,
|
||||||
|
"marge": 95.20
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"top10_qte": [
|
||||||
|
{
|
||||||
|
"codein": "129632",
|
||||||
|
"libelle1": "ETUI 10 CARTES",
|
||||||
|
"site": "001",
|
||||||
|
"ca_ttc": 245.50,
|
||||||
|
"qte_vendue": 60,
|
||||||
|
"marge": 95.20
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"top10_marge": [
|
||||||
|
{
|
||||||
|
"codein": "129632",
|
||||||
|
"libelle1": "ETUI 10 CARTES",
|
||||||
|
"site": "001",
|
||||||
|
"ca_ttc": 245.50,
|
||||||
|
"qte_vendue": 60,
|
||||||
|
"marge": 95.20
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Publicités (Ecoulement)
|
||||||
|
|
||||||
|
### Liste des publicités avec écoulement
|
||||||
|
```
|
||||||
|
GET /api/publicites
|
||||||
|
```
|
||||||
|
|
||||||
|
| Paramètre | Type | Description | Défaut |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `search` | string | Recherche dans l'intitulé ou le code | — |
|
||||||
|
| `site` | string | Filtrer par site | — |
|
||||||
|
| `dateDebut` | date | `YYYY-MM-DD` | 2000-01-01 |
|
||||||
|
| `dateFin` | date | `YYYY-MM-DD` | 2099-12-31 |
|
||||||
|
| `statut` | string | `en_cours`, `passees`, `futures`, ou `toutes` | — |
|
||||||
|
| `page` | int | Numéro de page | 1 |
|
||||||
|
| `limit` | int | Lignes par page | 50 |
|
||||||
|
|
||||||
|
### Historique des publicités (toutes les pubs)
|
||||||
|
```
|
||||||
|
GET /api/publicites/historique
|
||||||
|
```
|
||||||
|
Mêmes paramètres que `/api/publicites` (sauf site, page, limit). Retourne une liste complète incluant les publicités sans données d'écoulement.
|
||||||
|
|
||||||
|
### Détail d'une publicité (synthèse par site + articles)
|
||||||
|
```
|
||||||
|
GET /api/publicites/:code?site=
|
||||||
|
```
|
||||||
|
Retourne la synthèse de la publicité par site ainsi que les données d'écoulement de chaque article.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Commandes Automatiques
|
||||||
|
|
||||||
|
### Propositions de commandes automatiques
|
||||||
|
```
|
||||||
|
GET /api/commandes-auto?site=&codefou=
|
||||||
|
```
|
||||||
|
Retourne les propositions de commandes auto agrégées par site et fournisseur, avec comparaison au franco de port.
|
||||||
|
|
||||||
|
### Détail des articles proposés pour un fournisseur
|
||||||
|
```
|
||||||
|
GET /api/commandes-auto/:codefou?site=
|
||||||
|
```
|
||||||
|
Retourne le résumé (franco, quantités, montant) et le détail par article des propositions.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Schéma de la Base de Données
|
||||||
|
|
||||||
|
### Structure complète de la base
|
||||||
|
```
|
||||||
|
GET /api/schema
|
||||||
|
```
|
||||||
|
Retourne la structure complète de la base (tables et colonnes).
|
||||||
|
|
||||||
|
### Liste des tables (avec nombre de lignes)
|
||||||
|
```
|
||||||
|
GET /api/schema/tables?search=
|
||||||
|
```
|
||||||
|
|
||||||
|
### Top tables (par volume)
|
||||||
|
```
|
||||||
|
GET /api/schema/top?limit=
|
||||||
|
```
|
||||||
|
|
||||||
|
### Colonnes d'une table spécifique
|
||||||
|
```
|
||||||
|
GET /api/schema/tables/:tableName
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Ranking (classement réseau)
|
## Ranking (classement réseau)
|
||||||
|
|
||||||
### Recherche ranking
|
### Recherche ranking
|
||||||
@@ -1053,6 +1301,41 @@ GET /api/sync/status
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Photos (Indexation)
|
||||||
|
|
||||||
|
### Re-indexation des photos
|
||||||
|
```
|
||||||
|
POST /api/photos/reindex
|
||||||
|
```
|
||||||
|
Déclenche de façon asynchrone l'analyse des sitemaps produits de `lafoirfouille.fr` pour extraire et associer les URLs des fiches produits aux codes photos dans la table `ff_photo_index`.
|
||||||
|
|
||||||
|
**Réponse** :
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"indexed": 14258,
|
||||||
|
"elapsed_s": 32.5
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Statut de l'indexation
|
||||||
|
```
|
||||||
|
GET /api/photos/status
|
||||||
|
```
|
||||||
|
Retourne le nombre total de photos indexées, la date de la dernière indexation, et si une indexation est actuellement en cours.
|
||||||
|
|
||||||
|
**Réponse** :
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"total": 14258,
|
||||||
|
"last_index": "2026-05-28T04:15:30.000Z",
|
||||||
|
"indexing_in_progress": false
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Exemples d'intégration JavaScript
|
## Exemples d'intégration JavaScript
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
|
|||||||
Reference in new issue
Block a user