161 lines
5.2 KiB
Markdown
161 lines
5.2 KiB
Markdown
# Métamodèle Arcadia & Intégration Oracle
|
|
|
|
Ce document résume les principes d'intégration avec les bases de données Oracle du SI Arcadia (`REFP`, `METAP`, `GCP`).
|
|
|
|
---
|
|
|
|
## 1. Documentation Vivante des Tables & Vues (Living Documentation)
|
|
|
|
La structure complète des 56 tables et vues, leurs types de données réels, clés primaires et commentaires SQL sont maintenus directement dans le code source sous :
|
|
|
|
👉 **[`database/arcadia-replicate/`](../../database/arcadia-replicate/)**
|
|
- **Tables REFP & METAP :** [`database/arcadia-replicate/Tables/`](../../database/arcadia-replicate/Tables/)
|
|
- **Vues REFP & GCP :** [`database/arcadia-replicate/Views/`](../../database/arcadia-replicate/Views/)
|
|
- **Orchestrateur & Migrations :** [`database/arcadia-replicate/Migrator.php`](../../database/arcadia-replicate/Migrator.php)
|
|
|
|
> [!TIP]
|
|
> En cas d'évolution du métamodèle Arcadia, modifiez uniquement la classe PHP concernée dans `database/arcadia-replicate/`. Aucun fichier Markdown de structure n'a besoin d'être maintenu manuellement.
|
|
|
|
---
|
|
|
|
## 2. Requêtes SQL de Référence (Adapters Oracle)
|
|
|
|
### A. Fiche Produit INCO & Nutrition (`REFP.INCO` + `REFP.INCO_COMPO`)
|
|
Liaison principale : `REFP.INCO.REF_COMPO = REFP.INCO_COMPO.ID_INCO`
|
|
|
|
```sql
|
|
SELECT
|
|
i.NO_ART AS id,
|
|
i.DENOM_LEG AS name,
|
|
i.DESCRIPTIF AS description,
|
|
i.ASTUCES AS tips,
|
|
i.CONSEIL_PREPA AS preparation_advices,
|
|
i.ARG_VENTE AS sell_arguments,
|
|
i.ALLEGATIONS AS allegations,
|
|
i.ALLEGAT_SANTE AS allegations_health,
|
|
i.ALLEGAT_NUTRIT AS allegations_nutrition,
|
|
i.LST_ING AS ingredients,
|
|
i.NB_PORTION AS portions,
|
|
i.LST_ALLERGENE AS allergens,
|
|
i.NUTRISCORE_ON_PACK AS nutriscore,
|
|
i.PDS_NET_UVC AS pdsNetUvc,
|
|
i.PDS_BRUT_UVC AS pdsBrutUvc,
|
|
i.CONDIT_CONSERV AS conditConserv,
|
|
i.LST_ADDITIF AS lstAdditif,
|
|
i.PROD_SAISON AS is_seasonal,
|
|
i.REF_COMPO AS compo,
|
|
i.DAT_CRE AS created_at,
|
|
i.DAT_MAJ AS updated_at,
|
|
c.ID AS compo_id,
|
|
c.VAL_ENERG_KJ_R AS compo_valEnergKjReference,
|
|
c.VAL_ENERG_KCAL_R AS compo_valEnergKcalReference,
|
|
c.MAT_GRASS_R AS compo_matGrassReference,
|
|
c.AGS_R AS compo_acideGrasSatureReference,
|
|
c.GLUCIDES_R AS compo_glucidesReference,
|
|
c.SUCRE_R AS compo_sucreReference,
|
|
c.FIB_ALIM_R AS compo_fibAlimReference,
|
|
c.PROTEINE_R AS compo_proteineReference,
|
|
c.SEL_R AS compo_selReference,
|
|
c.SCORE_NUTRI_2022 AS compo_scoreNutri2022,
|
|
c.NUTRI_SCORE_2022 AS compo_nutriScore2022
|
|
FROM REFP.INCO i
|
|
LEFT JOIN REFP.INCO_COMPO c
|
|
ON i.REF_COMPO = c.ID_INCO;
|
|
```
|
|
|
|
### B. Référentiel Salariés SIRH (`REFP.RU_PERSONNE_SIRH`)
|
|
```sql
|
|
SELECT
|
|
e.MATRICULE_FIC AS matricule,
|
|
e.NOM_FIC AS lastname,
|
|
e.PRENOM_FIC AS firstname,
|
|
e.DATE_DEB_FIC AS start_date,
|
|
e.DATE_FIN_FIC AS end_date,
|
|
e.ETAB_FIC AS establishment,
|
|
e.SITE_FIC AS site,
|
|
e.SERVICE_FIC AS service,
|
|
e.DAT_CRE AS created_at,
|
|
e.DAT_MAJ AS updated_at
|
|
FROM REFP.RU_PERSONNE_SIRH e;
|
|
```
|
|
|
|
### C. Utilisateurs Référents (`METAP.META_UTIL`)
|
|
```sql
|
|
SELECT
|
|
i.NO_ART AS id,
|
|
i.UTIL_CMCL AS util_cmcl_code,
|
|
u_cmcl.LIB_UTIL AS util_cmcl_libelle,
|
|
u_cmcl.EMAIL AS util_cmcl_email,
|
|
i.UTIL_MKT AS util_mkt_code,
|
|
u_mkt.LIB_UTIL AS util_mkt_libelle,
|
|
u_mkt.EMAIL AS util_mkt_email,
|
|
i.UTIL_QUAL AS util_qual_code,
|
|
u_qual.LIB_UTIL AS util_qual_libelle,
|
|
u_qual.EMAIL AS util_qual_email
|
|
FROM REFP.INCO i
|
|
LEFT JOIN METAP.META_UTIL u_cmcl ON i.UTIL_CMCL = u_cmcl.COD_UTIL
|
|
LEFT JOIN METAP.META_UTIL u_mkt ON i.UTIL_MKT = u_mkt.COD_UTIL
|
|
LEFT JOIN METAP.META_UTIL u_qual ON i.UTIL_QUAL = u_qual.COD_UTIL;
|
|
```
|
|
|
|
### D. Référentiel des Marques (`REFP.MARQUE`)
|
|
|
|
#### Requête SQL Oracle de référence
|
|
```sql
|
|
SELECT
|
|
m.COD_MARQ AS id,
|
|
m.LIB_MARQ AS name,
|
|
m.COD_RGPT_MARQ AS rgpt_code,
|
|
m.COMMENTAIRE AS "comment",
|
|
m.TYPE_MARQUE AS type,
|
|
m.SOCIETE AS societe,
|
|
m.MARQUE_PROPRE AS is_own_brand,
|
|
m.GLN_SOC AS gln
|
|
FROM REFP.MARQUE m
|
|
ORDER BY m.COD_MARQ ASC;
|
|
```
|
|
|
|
#### Requête HTTP API
|
|
|
|
```http
|
|
GET /api/v1/brands
|
|
Authorization: Bearer <API_TOKEN>
|
|
Accept: application/json
|
|
```
|
|
|
|
**Exemple avec cURL :**
|
|
```bash
|
|
curl -X GET "https://api.arcadia.ldc.fr/api/v1/brands" \
|
|
-H "Authorization: Bearer YOUR_API_TOKEN" \
|
|
-H "Accept: application/json"
|
|
```
|
|
|
|
**Exemple de réponse JSON (200 OK) :**
|
|
```json
|
|
{
|
|
"data": [
|
|
{
|
|
"id": "1",
|
|
"name": "LE GAULOIS"
|
|
},
|
|
{
|
|
"id": "2",
|
|
"name": "MAITRE COQ"
|
|
},
|
|
{
|
|
"id": "3",
|
|
"name": "LOUÉ"
|
|
}
|
|
],
|
|
"links": {
|
|
"self": "http://localhost/api/v1/brands"
|
|
}
|
|
}
|
|
```
|
|
|
|
#### Commande CLI Artisan
|
|
|
|
```bash
|
|
php artisan arcadia:brand:list
|
|
```
|
|
|