# Structure BDD - MatosBox (reference)

## Base
- SQLite par defaut : `matosbox.db`
- Postgres optionnel : base `matosbox`

## Tables principales

### Objet
Champs :
- id
- nom
- description
- quantite
- prix_achat
- date_achat
- boutique
- numero_serie
- numero_modele
- fabricant
- statut (enum: en_stock, pret, hors_service, archive)
- caracteristiques (JSONB)

Relations :
- 1..n `PieceJointe`
- 1..n `ChampPersonnalise`
- n..n `Emplacement` via `LienObjetEmplacement`

### Categorie
Champs :
- id
- nom
- parent_id
- slug
- icone

Relations :
- auto-reference (parent/enfant)

### Emplacement
Champs :
- id
- nom
- parent_id
- slug
- piece
- meuble
- numero_boite
- icone

Relations :
- auto-reference (parent/enfant)

### LienObjetEmplacement
Champs :
- id
- objet_id
- emplacement_id
- type (enum: stocke, utilise_dans)

### ChampPersonnalise
Champs :
- id
- objet_id
- nom_champ
- type_champ (string/int/bool/date)
- valeur
- unite

### PieceJointe
Champs :
- id
- objet_id
- nom_fichier
- chemin
- type_mime
- est_principale
- categorie (image/pdf_notice/markdown_tuto)

### HistoriqueAchat
Champs :
- id
- objet_id
- boutique
- numero_commande
- prix
- date
- quantite

### Pret
Champs :
- id
- objet_id
- a_utilisateur
- date_debut
- date_fin
- notes

### MouvementStock
Champs :
- id
- objet_id
- delta_quantite
- raison
- date

### Garantie
Champs :
- id
- objet_id
- fournisseur
- duree_mois
- date_debut
- preuve (piece_jointe_id)

## Relations notables
- Arbres recursifs pour `Categorie` et `Emplacement`.
- Historique achats, prets et mouvements relies a `Objet`.
- Pieces jointes liees a `Objet`.

## Notes migration
- Migrations via Goose/Atlas.
- SQLite WAL a activer.
- Export/Import via CSV/JSON ou pgloader pour Postgres.
