SAMI.TECH — Retours Ecotrack

Application mobile de scan de QR codes de colis retournés, avec vérification du statut dans OM Express / Ecotrack et validation officielle du retour.

Projet totalement indépendant des autres applications SAMI.TECH : code, logique, base SQLite et fonctions propres à ce val.

Principe

  1. Déverrouillage par schéma Android 3×3 (hash PBKDF2-SHA256 salé, côté serveur).
  2. La caméra arrière démarre automatiquement après déverrouillage et ne se ferme plus.
  3. Le scanner QR reste actif en continu : QR détecté → pause logique → traitement → reprise.
  4. Le backend relit le colis dans Ecotrack et décide seul de l'éligibilité.
  5. La validation n'est proposée que pour retour_recu ou livraison_echoue_recu.

Niveaux de fiabilité (toujours distingués)

NiveauSignification
1QR détecté
2Tracking trouvé dans OM Express
3Tracking éligible au retour (retour_recu / livraison_echoue_recu)
4Retour réellement validé (returned = "success" ou confirmation après relecture)

Un QR détecté ne signifie jamais que le retour est validé.

Architecture

Rendering mermaid diagram...

Routes

MéthodeRouteRôle
GET/healthSanté ({ "ok": true })
GET/api/access/statusSchéma configuré ? session ouverte ?
POST/api/access/setupCréer le schéma (une seule fois)
POST/api/access/unlockDéverrouiller (cookie sami_access, ~12 h)
POST/api/access/logoutVerrouiller
GET/api/configapiSaved
GET/POST/DELETE/api/ecotrack/settingsToken API (jamais réaffiché)
POST/api/validateVérifier un tracking
POST/api/return/validateValider un retour (mutation)

API Ecotrack utilisée

  • Vérification token : GET /api/v1/validate/token
  • Lecture colis : GET /api/v1/get/orders?tracking=...
  • Validation retour : POST /api/v1/valid/returns avec { "trackings": ["..."] }

Routes interdites

  • /retours/recu/validated — dépendait d'une session web Ecotrack (HTTP 403).
  • /api/v1/valid/order — autre opération, ne remplace pas /valid/returns.

Codes métier backend

API_NOT_CONFIGURED, ECOTRACK_READ_ERROR, ECOTRACK_BAD_RESPONSE, TRACKING_NOT_FOUND, TRACKING_FOUND, ECOTRACK_NETWORK_ERROR, RETURN_NOT_READY, RETURN_INVALID, RETURN_API_ERROR, RETURN_NOT_ELIGIBLE, RETURN_VALIDATED, RETURN_ACCEPTED_UNCONFIRMED, RETURN_UNEXPECTED_RESPONSE, RETURN_NETWORK_ERROR.

Sécurité

  • Le token API est stocké côté serveur dans app_settings.ecotrack_api_credentials (clé ecotrack_api_credentials, format { "apiToken": "..." }).
  • Il n'est jamais renvoyé au navigateur, jamais loggé, jamais placé en URL publique.
  • Le schéma est stocké sous forme de hash salé ; les sessions ne stockent que le SHA-256 du token.
  • Les logs de validation ne contiennent que httpStatus, returned et emptyBody.

Premier lancement

  1. Ouvrir l'application — le schéma 3×3 est demandé (à créer puis confirmer).
  2. Icône ⚙ → coller le token API EcotrackENREGISTRER L'API.
  3. La caméra démarre automatiquement : scanner un QR de colis.
  4. Si le colis est éligible, VALIDER LE RETOUR apparaît ; sinon le scanner reprend seul.

La base SQLite et les réglages sont propres à ce val. Aucune donnée n'est partagée avec une autre application SAMI.TECH.