Tribalbyte

Collecter & classer / BPMN 2.0

Photographier un ticket.
Le retrouver classé.

Une application web installable pour envoyer photos et PDF de tickets dans Google Drive, avec classement mensuel, file d’attente locale et reprise prévue après interruption réseau.

Cadre
Projet personnel
État
Publié · premier envoi réel à valider
Outils
JavaScript · PWA · API Google Drive

Le besoin

Conserver chaque ticket de caisse pour alimenter un suivi des dépenses. La capture doit prendre quelques secondes, au magasin, depuis un téléphone, y compris lorsque le réseau est instable.

L’analyse

Le point délicat n’est pas la photo : c’est l’envoi. Une capture perdue entre le téléphone et le Drive est une donnée qui disparaît sans bruit. Le processus a donc été pensé autour de trois questions : que se passe-t-il si l’utilisateur n’est pas connecté, si l’envoi est interrompu, et quand peut-on considérer le ticket comme réellement archivé ?

La réponse tient dans une file d’attente locale, un nommage fixé dès le premier envoi et une confirmation explicite de Google Drive avant de libérer la copie du téléphone.

Le processus documenté

Collecter un ticket, du magasin au Drive

BPMN 2.0 · processus collaboratif
Processus BPMN de collecte d’un ticket de caisseDeux pools : la collecte (utilisateur et application) et Google Drive. Le ticket est mis en file locale, nommé, envoyé par blocs avec reprise, puis la copie locale est libérée après confirmation.Collecte de ticketsUtilisateurApplication · navigateurGoogle DriveTicket reçuPhotographierou importerSe connecterà GoogleTicket archivéMettre en filelocale (IndexedDB)Driveconnecté ?Nommer et classer(horodatage, mois)Envoyer parblocs de 1 MoEnvoiconfirmé ?Libérer lacopie localeÉcrire le fichier(portée drive.file)tickets de caisses/yyyy.MMnonouinon : reprise à l’offset confirméouifichieraccusé

← Faire défiler le schéma →

Deux pools séparent l’application et Google Drive : seuls des messages les relient. Le flux orange matérialise la reprise après interruption.

Règles de gestion

Ce que l’outil doit respecter.

  1. RG-01Un fichier importé = un ticket. Un PDF de plusieurs pages reste un seul PDF ; rien n’est fusionné, recadré ni compressé.
  2. RG-02Nom = horodatage du premier envoi (yyyy.MM.dd.HHmmss.kkk), dans un dossier yyyy.MM de la même date — pas la date de prise de vue.
  3. RG-03Envois simultanés : la milliseconde est différenciée dans le lot pour éviter deux noms identiques.
  4. RG-04Une nouvelle tentative conserve nom, mois, compte et identifiant Drive du premier envoi : pas de doublon.
  5. RG-05« Enregistré » ne s’affiche qu’après confirmation par Google Drive ; la copie locale n’est libérée qu’à ce moment.
  6. RG-06Formats acceptés : photos courantes et PDF, jusqu’à 25 Mo par fichier.

Exigences non fonctionnelles

  • Aucun serveur de stockage intermédiaire ; les jetons Google restent en mémoire.
  • Envoi par blocs de 1 Mo, repris à l’endroit confirmé par Drive.
  • Installable sur l’écran d’accueil, sans compilation ni dépendance.

Place dans la chaîne

Cette application ne lit pas les tickets : elle les met en sécurité. L’extraction du contenu est un projet distinct.

Voir la lecture des tickets ↗
Consulter le dépôt tickets-de-caisses ↗

État au 13 octobre 2026

Une réalisation, un périmètre précis.

Ce qui est réalisé

Application publiée : capture et import, classement mensuel, nom horodaté, file d’attente et reprise d’envoi vers Google Drive.

Ce qui a été vérifié

Le site a été ouvert après publication le 12 septembre. Les échanges consultés ne confirment pas encore un envoi réel complet depuis le téléphone.

Limites actuelles

La configuration Google et le trajet téléphone–Drive doivent être validés en conditions réelles. L’application archive les pièces ; leur reconnaissance OCR relève d’un autre outil.

Prochaine étape

Effectuer un premier envoi depuis le téléphone, vérifier le fichier reçu, puis éprouver une interruption et sa reprise.

Exemples de critères de recette

Ces critères décrivent le résultat attendu. Ils ne constituent pas, à eux seuls, des tests réussis.

  1. Après confirmation de Google Drive, le ticket porte l’horodatage du premier envoi dans le dossier mensuel correspondant et l’interface annonce Enregistré.
  2. Après interruption puis reprise, le nom et la destination restent identiques ; la copie locale reste disponible tant que Drive n’a pas confirmé l’archivage.

Parlons de votre projet

Un besoin concret.
Une première discussion.

Un processus trop manuel, une donnée peu fiable ou une idée à tester ? Commençons par clarifier ce qui vous serait vraiment utile.

Échanger avec Loïc