=====================================================================
  Saké Zen — Service d'impression des commandes
  Guide d'installation pas à pas pour le PC du restaurant
=====================================================================


A QUOI CA SERT
--------------
Ce service tourne en continu sur le PC du restaurant. Il surveille
les nouvelles commandes passees depuis le site internet et les imprime
automatiquement sur les imprimantes thermiques :

  - 1 imprimante en caisse : ticket complet (client, adresse, detail,
    total, mode de paiement)
  - 1 imprimante en cuisine : 2 tickets successifs (froid puis chaud)
    pour que chaque cuisinier ait sa liste de plats a preparer

Les desserts et boissons n'apparaissent que sur le ticket caisse
(c'est le preparateur qui les prend au comptoir).


AVANT DE COMMENCER
------------------
Tu dois avoir :

[ ] 2 imprimantes thermiques reseau (ex. Epson TM-T20III-ETH)
    branchees en Ethernet sur la box internet du restaurant.

[ ] Une IP fixe pour chaque imprimante (reservation DHCP dans
    l'interface de la box, ou IP fixe configuree directement dans
    l'imprimante). Note les 2 IPs sur un papier, ex :
        caisse   -> 192.168.1.101
        cuisine  -> 192.168.1.102

[ ] Un PC Windows ou Linux connecte au meme reseau local que les
    imprimantes, allume pendant les heures d'ouverture.

[ ] La cle SUPABASE_SERVICE_ROLE_KEY.
    (Dashboard Supabase -> Project Settings -> API -> "service_role"
    -> copier la valeur longue qui commence par eyJ...)

[ ] Le dossier printer-service/ copie sur le PC (cle USB ou autre).



=====================================================================
  INSTALLATION SUR WINDOWS
=====================================================================

ETAPE 1 — Installer Node.js
  1. Va sur https://nodejs.org
  2. Telecharge la version LTS (bouton vert de gauche).
  3. Lance l'installeur, clique "Suivant" partout, termine.
  4. Verifie : ouvre l'invite de commandes (Win+R, taper "cmd",
     Entree), puis tape :
         node --version
     Tu dois voir quelque chose comme "v20.x.x".


ETAPE 2 — Copier le dossier
  Copie le dossier "printer-service" dans C:\sakezen\
  Tu dois obtenir :
         C:\sakezen\printer-service\install.bat
         C:\sakezen\printer-service\index.js
         ... etc


ETAPE 3 — Lancer l'installation
  Ouvre le dossier C:\sakezen\printer-service\
  Double-clic sur le fichier :  install.bat

  Une fenetre noire s'ouvre et te pose 3 questions :

    1) SUPABASE_SERVICE_ROLE_KEY : colle la cle (clic droit dans la
       fenetre pour coller).

    2) IP imprimante CAISSE : tape l'IP que tu as notee, ex :
           192.168.1.101

    3) IP imprimante CUISINE : tape l'IP de l'imprimante cuisine.
       ATTENTION : meme si tu as une seule imprimante en cuisine,
       c'est ici qu'on met son IP. Le service imprimera 2 tickets
       successifs dessus (froid puis chaud).

  Le script enchaine tout seul :
    - installation des dependances (environ 1 min)
    - test d'impression (3 tickets sortent : 1 caisse + 2 cuisine)
    - creation d'un raccourci dans le dossier de demarrage Windows
    - demarrage du service en arriere-plan

  Si les 3 tickets sont bien sortis -> c'est gagne.


ETAPE 4 — Verifier
  Le service tourne maintenant en arriere-plan. Tu peux fermer la
  fenetre noire.

  Au prochain redemarrage du PC, il se relancera automatiquement.

  Pour voir les logs en cas de probleme :
    C:\sakezen\printer-service\printer.log
  (ouvre-le avec le Bloc-notes)



=====================================================================
  INSTALLATION SUR LINUX (Ubuntu / Debian / Raspberry Pi)
=====================================================================

ETAPE 1 — Installer Node.js
  Ouvre un terminal et tape :
      sudo apt update
      sudo apt install -y nodejs npm

  Verifie la version (doit etre >= 18) :
      node --version

  Si ta distrib a une version trop vieille, installe nvm :
      curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
      source ~/.bashrc
      nvm install --lts


ETAPE 2 — Copier le dossier
  Place "printer-service" dans ton home, par exemple :
      /home/pi/printer-service
      (sur Raspberry Pi)
  ou
      /home/monuser/printer-service


ETAPE 3 — Lancer l'installation
  Ouvre un terminal dans le dossier et tape :
      cd ~/printer-service
      bash install.sh

  Le script te pose 3 questions (cle Supabase, IP caisse, IP cuisine)
  puis :
    - installe les dependances
    - lance un test d'impression
    - cree et active un service systemd "sakezen-printer"
    - te demande ton mot de passe sudo pour l'installation systemd

  Si les tickets sortent -> installation reussie.


ETAPE 4 — Verifier et gerer le service
  Voir l'etat :
      sudo systemctl status sakezen-printer

  Voir les logs en direct :
      journalctl -u sakezen-printer -f

  Arreter / demarrer :
      sudo systemctl stop   sakezen-printer
      sudo systemctl start  sakezen-printer

  Desactiver le demarrage auto :
      sudo systemctl disable sakezen-printer



=====================================================================
  AU QUOTIDIEN
=====================================================================

Il n'y a RIEN a faire. Le service tourne en permanence et imprime
chaque commande confirmee en admin.

Quand un client passe une commande sur le site :
  1) Tu la vois arriver dans l'admin (dashboard avec beep sonore).
  2) Tu cliques "Confirmer".
  3) Les tickets sortent automatiquement sur la caisse + la cuisine.


CAS PARTICULIERS
----------------
- Commande annulee avant confirmation -> aucun ticket imprime.

- Reimprimer un ticket perdu -> dans l'admin, chaque commande a
  4 boutons : [Tout] [Caisse] [Froid] [Chaud]. Clique sur celui
  dont tu as besoin, le ticket repart sur la bonne imprimante
  (dans les 8 secondes suivantes).

- Le PC a redemarre -> rien a faire, le service se relance seul.

- Une imprimante est tombee en panne -> les autres continuent.
  Change-la, verifie son IP, et clique "Tout" dans l'admin sur
  les commandes concernees pour les reimprimer.



=====================================================================
  PROBLEMES COURANTS
=====================================================================

"Node.js introuvable" a l'install
  -> Node n'est pas installe ou pas dans le PATH. Refais l'etape 1.

Test d'impression : "ECONNREFUSED"
  -> L'IP est mauvaise, ou l'imprimante a le port RAW/9100 desactive.
     Va sur http://<IP-imprimante> dans un navigateur, cherche les
     reglages reseau et active "RAW" ou "Port 9100".

Test d'impression : "ETIMEDOUT"
  -> L'imprimante est eteinte, debranchee, ou son IP a change.
     Verifie le cable, l'alimentation, et que l'IP est toujours
     la bonne (un ping depuis le PC peut aider :
         ping 192.168.1.102
     ).

Les accents sont casses sur les tickets
  -> Ouvre le fichier printer-service/printer.js et change la ligne :
         encoding: 'CP858'
     Essaie 'CP850' ou 'CP1252' selon le modele d'imprimante.

Ticket trop large / etroit
  -> Dans .env, change PRINTER_WIDTH :
         48  pour du papier 80 mm (standard)
         32  pour du papier 58 mm

Double impression des memes commandes
  -> La cle SUPABASE_SERVICE_ROLE_KEY est fausse : le service
     imprime mais n'arrive pas a marquer la commande "imprimee",
     donc il reimprime au tick suivant. Relance install.bat /
     install.sh pour re-saisir la bonne cle.



=====================================================================
  RECONFIGURER PLUS TARD
=====================================================================

Relance simplement install.bat (Windows) ou "bash install.sh" (Linux).
Le script detecte la config existante et te propose de la modifier
(nouvelles IPs, nouvelle cle, etc.).



=====================================================================
  BESOIN D'AIDE ?
=====================================================================

Contact : sakezen13@gmail.com
