feat: Meshy.ai — raw cost in cout_fixe, margin in variable, per-job margin %
Deploy via Portainer / deploy (push) Successful in 1s

This commit is contained in:
Jo
2026-07-16 14:54:13 +02:00
parent 15ae5c5d77
commit 0619559190
4 changed files with 60 additions and 34 deletions
+23 -9
View File
@@ -61,6 +61,10 @@ Dernières migrations ajoutées (à la fin de la liste) :
'ALTER TABLE calendar_blocks ADD COLUMN date_end TEXT DEFAULT NULL'
'ALTER TABLE jobs ADD COLUMN marge_pct_on_ht REAL DEFAULT 0'
'ALTER TABLE jobs ADD COLUMN source_nc_path TEXT DEFAULT ""'
'ALTER TABLE jobs ADD COLUMN meshy_enabled INTEGER DEFAULT 0'
'ALTER TABLE jobs ADD COLUMN meshy_credits_used INTEGER DEFAULT 0'
'ALTER TABLE jobs ADD COLUMN meshy_cost REAL DEFAULT 0'
'ALTER TABLE jobs ADD COLUMN meshy_margin_pct REAL DEFAULT 0'
```
---
@@ -99,6 +103,15 @@ Colonne `date_end` optionnelle. Requêtes avec `COALESCE(date_end, date)` pour c
- À la création d'un job depuis Nextcloud, le path est sauvegardé dans un hidden input
- Au chargement de `new_job` avec `clone_from`, `autoParseOnClone()` appelle `/api/nextcloud/parse?path=...` et reconstitue le sélecteur de plateaux
### Intégration Meshy.ai
- Abonnement annuel + crédits mensuels configurables dans Paramètres (`meshy_annual_cost`, `meshy_monthly_credits`, `meshy_default_margin_pct`)
- Coût brut : `meshy_raw = credits × (annual_cost / 12 / monthly_credits)` → va dans **cout_fixe** (comme l'électricité)
- Marge Meshy : `meshy_margin = meshy_raw × meshy_margin_pct / 100` → va dans **total_marge** (partie variable)
- La `gross_margin_pct` s'applique aussi sur `cout_fixe` qui contient `meshy_raw` : double levier intentionnel
- Champ `meshy_margin_pct` saisi par job (défaut = `meshy_default_margin_pct` dans settings)
- Colonne `meshy_cost` en DB = coût brut ; `meshy_margin_amount` = calculé à la volée (`meshy_cost × meshy_margin_pct / 100`)
- Dans `job_detail.html` : `meshy_cost` affiché dans section Cout fixe, `meshy_margin_amount` dans Partie variable
---
## Bugs résolus dans cette session
@@ -127,7 +140,7 @@ Colonne `date_end` optionnelle. Requêtes avec `COALESCE(date_end, date)` pour c
### À surveiller
- **jobs.html** : toujours utiliser le script Python pour modifier, vérifier la syntaxe Jinja2 après chaque modif avec `python3 -c "import jinja2; ..."`
- **app.py** : après ajout de docstrings avec des accents, vérifier `python3 -m py_compile app.py` — les chaînes avec apostrophes dans les docstrings `"""` sont valides mais certaines substitutions de texte peuvent créer des conflits
- **INSERT jobs** : 38 colonnes = 38 `?`. Si on ajoute une colonne, ajouter aussi le `?` ET la valeur dans le tuple
- **INSERT jobs** : 42 colonnes = 42 `?`. Si on ajoute une colonne, ajouter aussi le `?` ET la valeur dans le tuple
### Fonctionnalité pas encore implémentée
- Recalcul de `marge_pct_on_ht` pour les jobs existants (valeur = 0 pour les anciens jobs)
@@ -171,14 +184,15 @@ git commit -m "description"
Derniers commits :
```
3da19f5 feat: auto-reparse Nextcloud 3mf on job clone
0069ab2 fix: INSERT jobs missing ? for marge_pct_on_ht
80307ac feat: plate_name and total_marge in jobs list
f51a789 fix: HA sync per-printer autocommit connections
522a0c5 fix: WAL mode SQLite
b55edce fix: skip capacity/overlap when already_done=true
7824124 fix: replace deprecated utcnow()
1899165 fix: gantt starts 12h before now
(à committer) feat: Meshy.ai — raw cost in cout_fixe, margin in variable, per-job margin %
3da19f5 feat: auto-reparse Nextcloud 3mf on job clone
0069ab2 fix: INSERT jobs missing ? for marge_pct_on_ht
80307ac feat: plate_name and total_marge in jobs list
f51a789 fix: HA sync per-printer autocommit connections
522a0c5 fix: WAL mode SQLite
b55edce fix: skip capacity/overlap when already_done=true
7824124 fix: replace deprecated utcnow()
1899165 fix: gantt starts 12h before now
```
---