docs(pont): module Intervention (fichinter) — pont sav-integration déployé + prérequis Dolibarr validés
- décision /interventions (Ticket=403 en prod) documentée - pont rebuildé depuis sav-integration (Port+Adapters, HttpDolibarrClient fichinter) - prérequis Dolibarr: extrafields numero_serie/sav_statut + fix code_client:'-1' (auto) - chaîne prouvée VPS->tunnel->pont->Dolibarr 19, aller-retour réel OK - accès NAS hors LAN via ssh -J navier-vps nas Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
68620d1a26
commit
63716ca635
|
|
@ -104,4 +104,54 @@ Montage : `VPS (client strongSwan) → 160189667.box.freepro.com (Freebox, VPN I
|
|||
- **Vérif OK** : `ping 192.168.10.104` + `curl http://192.168.10.104:4444` → 200.
|
||||
- **Mobile** : même serveur Freebox IKEv2 pour iPhone/Mac nativement (Réglages → VPN → IKEv2).
|
||||
|
||||
RESTE : pont (NAS, conteneur :8080) + NPM `api.navier-instruments.com` → `192.168.10.104:8080` + DNS `api.` → 78.138.45.8 (LWS).
|
||||
> **Accès NAS depuis n'importe quel réseau** : quand on n'est PAS sur le LAN interne, le NAS
|
||||
> reste joignable via le VPS : `ssh -J navier-vps nas` (ProxyJump — l'auth SSH reste bout‑à‑bout
|
||||
> avec la clé NAS, seul le TCP transite par le VPS+tunnel). Idem `scp`/`tar | ssh -J navier-vps nas`.
|
||||
|
||||
---
|
||||
## ✅ RÉALISÉ (2026-07-13) — Pont SAV sur module INTERVENTION (fichinter), pas Ticket
|
||||
|
||||
**DÉCISION ACTÉE (Steve + Tiago) : le SAV s'écrit en FICHE D'INTERVENTION Dolibarr (module
|
||||
`Intervention`, endpoints `/interventions`, table `llx_fichinter`), PAS en Ticket.**
|
||||
Raison : le module Ticket renvoie **403** sur l'instance de prod (`GET /tickets` → 403), alors que
|
||||
`GET /interventions` → **200**. Validé en direct sur Dolibarr **19**. Cf. commit
|
||||
`steve-dev #14 « bascule Tickets → fiches d'intervention »`, convergé dans la branche `sav-integration`.
|
||||
|
||||
**Source du pont = branche `sav-integration`** (repo `Ecosystem-Navier`, la plus à jour : pont
|
||||
modulaire *Port + Adapters* config‑driven ; `HttpDolibarrClient` écrit en `/interventions`,
|
||||
`/thirdparties`, `/stockmovements`). L'ancien build (`main`) tapait `/tickets` → remplacé.
|
||||
|
||||
### Déploiement du pont (NAS, `/volume1/docker/sav-pont`)
|
||||
- Image `navier/sav-pont:interv` buildée sur le NAS (`sudo docker build`, node 22 alpine, tsc → dist).
|
||||
Dossier possédé par SteveC (`chown -R`) pour édition sans sudo ; **docker exige `sudo`** sur DSM 6.
|
||||
- Conteneur : `sudo docker run -d --name sav-pont --restart unless-stopped -p 8080:8080
|
||||
--env-file .env -v /volume1/docker/sav-pont-data:/data navier/sav-pont:interv`.
|
||||
⚠️ **`docker restart` NE recharge PAS `--env-file`** → toujours **`rm` + `run`** après un changement `.env`.
|
||||
- **Volume data** : le pont écrit un magasin de comptes/sessions dans `/data` → le volume
|
||||
`/volume1/docker/sav-pont-data` doit appartenir à **uid 1000** (`node`) : `sudo chown -R 1000:1000`.
|
||||
Sinon boucle de crash `EACCES … accounts.tmp`.
|
||||
- `.env` (secrets jamais affichés) : adapters auto — `DOLIBARR_BASE_URL` + `DOLIBARR_API_KEY`
|
||||
remplis → **HttpDolibarrClient (fichinter)** ; `TB_BASE_URL` → HttpThingsBoard. Ajoutés vs l'ancien :
|
||||
`SESSION_SECRET` (HMAC sessions LAN, sinon sessions perdues à chaque redémarrage), `MEDIA_DIR=/data/media`,
|
||||
`SEED_SUPERVISOR_NAME=Steve` / `SEED_SUPERVISOR_PIN=1234` (**superviseur initial — CHANGER le PIN**).
|
||||
- Santé : `GET /healthz` → `{"status":"ok","deps":{"dolibarr":"http","thingsboard":"http","media":"local"}}`.
|
||||
|
||||
### Prérequis Dolibarr (fichinter) — appliqués et validés
|
||||
Conforme au schéma **officiel** (wiki Extrafields / Table llx_extrafields) — pas de bricolage :
|
||||
- **Module Intervention activé** (`GET /interventions` → 200). Compte technique `cpont-sav` (clé `DOLAPIKEY`).
|
||||
- **2 extrafields créés** sur l'élément `fichinter` (le pont les écrit en `array_options`) :
|
||||
`numero_serie` (varchar 128) + `sav_statut` (varchar 64). Créés par : ligne dans `llx_extrafields`
|
||||
(`elementtype='fichinter'`) **+** colonne ajoutée dans `llx_fichinter_extrafields`. Backup préalable :
|
||||
`/volume1/docker/dolibarr-extrafields.backup.sql`. Requête `sqlfilters=(ef.numero_serie:=:'…')` → 200.
|
||||
- **Fix pont `createThirdparty`** : ajout de **`code_client: '-1'`** (numérotation auto). Sans ça, l'API
|
||||
Dolibarr (addon `mod_codeclient_monkey`) refuse la création de tiers avec `ErrorCustomerCodeRequired`.
|
||||
`-1` = *« automatic assignment »* **documenté dans la classe `Societe`** du cœur Dolibarr. Poussé sur
|
||||
`sav-integration` (commit `fix(sav/pont): createThirdparty envoie code_client:'-1'`).
|
||||
- **Aller‑retour réel validé** : tiers (code auto) + fiche d'intervention avec `numero_serie`/`sav_statut`
|
||||
créés puis supprimés (POST/GET/DELETE → 200) sur Dolibarr 19.
|
||||
|
||||
### Chaîne complète prouvée
|
||||
`Mac (ssh -J) → VPS → tunnel IKEv2 → NAS pont :8080 (/interventions fichinter) → Dolibarr 19 réel`.
|
||||
Le pont **n'est pas exposé publiquement** : l'espace client (VPS) le relaiera en interne via le tunnel.
|
||||
|
||||
RESTE : espace client sur le VPS (proxy interne `/api` → `192.168.10.104:8080`, PAS d'`api.` public).
|
||||
|
|
|
|||
Loading…
Reference in New Issue