Skip to content

fix(poste-neuf): cinq defauts d'installation, et deux demandes du comptoir - #16

Merged
lostmind84 merged 4 commits into
mainfrom
fix/poste-neuf-et-catalogue
Jul 29, 2026
Merged

lostmind84 merged 4 commits into
mainfrom
fix/poste-neuf-et-catalogue

Conversation

@lostmind84

Copy link
Copy Markdown
Owner

La v0.5 posee sur un poste neuf le 29/07/2026 tournait de bout en bout, mais aucune des etapes 4 a 7 de INSTALLATION.md n'etait faisable sans ligne de commande. Cette serie ferme les cinq defauts qui restaient, plus les deux demandes rapportees du comptoir.

Les cinq defauts

L'adresse d'ecoute etait jetee par le repli. Le profil neutre remplacait le bloc network du fichier meme quand il n'etait pas fautif : le service se posait sur 127.0.0.1:8085 pendant que le kiosque, qui lit le meme fichier et le lit sans peine puisqu'une configuration fautive reste lisible, ouvrait l'adresse declaree. Ecran client noir, sur le poste meme que le repli existe pour garder vivant. Le repli garde desormais network entier tant qu'aucune faute ne le nomme, comme il gardait deja admin.

A noter : l'entree n. 1 du lot L8 de SUIVI.md annoncait un correctif --listen « non applique » qui etait livre depuis le 26/07. Le fichier se contredisait, et le banc du 29/07 a paye une demi-heure a cette contradiction.

Le retour arriere a 60 s detruisait des donnees de production. Il n'ecrivait pas le fichier d'avant mais ce sur quoi le poste tourne, c'est-a-dire le profil d'usine : cooperative videe, paliers de prix 2 vers 1, remise adherent perdue. Le pilote preview manquait au registre alors que la conception annonce trois valeurs, ce qui cassait le cycle lire-modifier-ecrire de l'administration entiere sur tout poste fraichement installe. Il est livre.

Le voile « Poste hors service » couvrait le bouton Reglages, seule entree vers l'administration : un poste sortait de l'installeur dans le seul etat ou on ne peut pas le regler. La touche passe au-dessus ; le voile garde inset: 0, donc la grille reste couverte et Reimprimer reste inactif pendant une panne.

« Detecter automatiquement » ne pouvait jamais reussir : options serie construites sans Baud, Bits, Parity ni Stop, ouverture refusee avant d'essayer, et un message qui accusait un port occupe pour une struct vide. Un benevole lisait « COM7 est deja utilise » sur un port libre. Les huit tests existants injectaient tous un ouvreur aveugle : ils ne pouvaient pas voir ce defaut.

Les volets de la page Materiel se refermaient en 2,9 s, ou vivent les deux seuls champs qui nomment un port serie. La cause ecrite dans SUIVI.md etait fausse : ce n'est pas le <details> qui est re-rendu, c'est que open est une propriete du DOM, compilee en affectation directe non memoisee. Un banc interdit le retour du motif.

Les deux demandes

« Recharger le catalogue » rend enfin compte. Il repondait « Le catalogue va etre relu. » — une promesse au futur, ecrite en dur avant tout acces au support — puis se taisait definitivement quand le fichier n'etait pas la. Le poste savait deja tout dire : nom du fichier, resultat, heure, inventaire, source surveillee, tout etait en base et deja servi. Rien n'a ete invente. La reponse reste un 202 : la rendre synchrone rebatirait le second chemin d'import que le code interdit noir sur blanc. Le seul fait que le code ne produisait jamais — « aucun fichier la ou le poste guette » — est rendu par un os.Stat borne.

Les produits vendus a l'unite sont masques par defaut. Ils ne l'etaient nulle part : 15 produits 0499 du vrai catalogue etaient sous le doigt du client, et une tuile a l'unite imprime une etiquette sans jamais lire la balance. La grille passe de 331 a 316 tuiles. Le filtre est cote client : le poser cote serveur ferait diverger en permanence deux compteurs et declencherait un rechargement du catalogue dix fois par seconde, silencieusement. L'option vit dans l'administration seule, sur la page Catalogue.

Le meme chantier a ventile l'ecart des 24 lignes entre 355 et 331 que SUIVI.md citait deux fois sans jamais l'expliquer : 16 anomalies de zone reservee, 7 preemballes, 1 code interne. Aucune n'est un produit vendu a l'unite — c'est un defaut des donnees Odoo, pas d'affichage.

Verification

Controle Resultat
go test ./... 2 572 tests, 0 echec, 5 ecartes (2 352 avant)
npm --prefix web test 764 tests sur 34 fichiers, 0 echec (686 sur 31 avant)
gofmt -l . / go vet ./... propre / vert
svelte-check 338 fichiers, 0 erreur, 0 avertissement
make boundary / make deps verts
budget de l'ecran client 79 429 o gzip, 70,5 % de 112 640
internal/web/dist reconstruit, conforme aux sources

La passe -race n'a pas pu etre jouee sur ce poste : elle exige cgo et le depot est en zero cgo, sans gcc. La CI Linux est seule a la couvrir.

Ce qui reste ouvert

  • Aucune mesure au navigateur sur le voile : les bancs tiennent l'ordre declare des couches, pas le rendu. Il reste a demarrer un poste en configuration invalide et a verifier qu'un clic sur l'engrenage ouvre le tableau de bord.
  • Basculer l'interrupteur des produits a l'unite ne change rien a un ecran client deja ouvert tant qu'il n'est pas recharge. Defaut existant que ce chantier rend visible.
  • WebDAV reste muet sur la presence d'un fichier : l'os.Stat ne vaut que pour une source locale.
  • L'ajout de la cle change l'empreinte de tous les postes, meme regles a l'identique. Documente dans TROUBLESHOOTING.md.
  • Un ecart de chiffre non tranche : SUIVI.md annonce quinze codes-barres mal saisis dans Odoo ; recalcule sur l'export authentique, il y en a seize. Les deux comptes viennent de sources differentes — les deux sont laisses cote a cote, personne ne tranche a la place de qui configure les nomenclatures.

…ptoir

La v0.5 posee sur un poste neuf le 29/07/2026 tournait de bout en bout mais
aucune des etapes 4 a 7 de la notice n'etait faisable sans ligne de commande.
Cinq defauts fermes ici, plus les deux demandes rapportees du comptoir.

Le repli en profil neutre jetait le bloc network DU FICHIER meme quand il
n'etait pas fautif. Le service se posait sur 127.0.0.1:8085 pendant que le
kiosque, qui lit le meme fichier et le lit sans peine puisqu'une configuration
fautive reste lisible, ouvrait l'adresse declaree : ecran client noir sur le
poste meme que le repli existe pour garder vivant. Le repli garde desormais
network entier -- listen et admin_on_lan ensemble -- tant qu'aucune faute ne le
nomme, exactement comme il gardait deja admin. Le profil neutre remplace ce sur
quoi le poste TOURNE, jamais la facon dont on l'ATTEINT pour le reparer. Le
banc qui manquait separe enfin l'adresse du fichier de celle du drapeau : les
deux portaient la meme valeur, donc aucun test ne pouvait dire laquelle etait
servie. L'entree n. 1 du lot L8 annoncait un correctif « non applique » livre
depuis le 26/07 ; le banc du 29/07 a paye une demi-heure a cette contradiction.

Le retour arriere a 60 s ne restaurait pas le fichier d'avant : il ecrivait ce
sur quoi le poste tourne, c'est-a-dire le profil d'usine. Mesure sur un vrai
poste : cooperative videe, paliers de prix 2 -> 1, remise adherent perdue,
pilote passe en apercu. Et ensuite l'ecran ne pouvait plus rien enregistrer,
parce que printer.type « preview » etait servi par GET et refuse par PUT. Le
pilote apercu manquait au registre depuis toujours, alors que la conception
annonce trois valeurs : il est livre, et il ecrit dans un repertoire a lui. Un
second enregistrement pendant qu'une confirmation est attendue est refuse.

Le voile « Poste hors service » couvrait le bouton Reglages, seule entree vers
l'administration : un poste sortait de l'installeur dans le seul etat ou on ne
peut pas le regler. La touche passe au-dessus ; le voile garde inset: 0, donc la
grille reste couverte et Reimprimer reste inactif pendant une panne.

« Detecter automatiquement » ne pouvait jamais reussir : les options serie
etaient construites sans Baud, Bits, Parity ni Stop, l'ouverture etait refusee
avant d'essayer, et l'ecran accusait alors un port occupe pour une struct vide
-- un benevole lisait « COM7 est deja utilise » sur un port libre. Les huit
tests existants injectaient tous un ouvreur aveugle : ils ne pouvaient pas voir
ce defaut. La completion est explicite au point d'appel, et le banc traverse
desormais la vraie validation.

Les volets de la page Materiel se refermaient en 2,9 s, ou vivent les deux seuls
champs qui nomment un port serie. La cause n'est pas celle qui avait ete ecrite
: `open` est une propriete du DOM, compilee en affectation directe non
memoisee, fondue dans l'effet de gabarit que le sondage rejoue. Un banc interdit
le retour du motif.

« Recharger le catalogue » repondait « Le catalogue va etre relu. » -- une
promesse au futur, ecrite en dur avant tout acces au support, suivie d'un
silence definitif quand le fichier n'est pas la. Le poste savait deja tout dire
: nom du fichier, resultat, inventaire, source surveillee, tout est en base et
deja servi. Le bouton nomme maintenant ce qui est surveille, puis l'issue arrive
par le sondage qui existait deja. Le seul fait que le code ne produisait jamais
-- « aucun fichier la ou le poste guette » -- est rendu par un os.Stat borne. La
reponse reste un 202 : la rendre synchrone rebatirait le second chemin d'import
que le code interdit.

Les produits vendus a l'unite n'etaient pas masques, contrairement a ce qu'on
croyait : 15 produits 0499 du vrai catalogue etaient affiches, et l'ecart de 24
lignes entre 355 et 331 que SUIVI.md citait deux fois sans l'expliquer se
ventile en 16 anomalies de zone reservee, 7 preemballes et 1 code interne.
ui.show_by_unit_products les masque par defaut ; la grille passe a 316. Le
filtre est cote client : le poser cote serveur ferait diverger en permanence
deux compteurs et declencherait un rechargement du catalogue dix fois par
seconde, silencieusement. Masquer est un affichage et non un refus, mais la
recherche ne rattrape pas une tuile masquee.

Verifie sur ce poste : 2 562 tests Go sur 31 paquets (2 352 avant), 764 tests
front sur 34 fichiers (686 avant), 0 echec ; gofmt propre, vet vert,
svelte-check 338 fichiers sans erreur ; boundary et deps verts ; bundle client
79 429 o gzip, 70,5 % du budget. La passe -race n'a pas pu etre jouee ici : elle
exige cgo et le projet est en zero cgo, sans gcc sur ce poste -- la CI Linux la
couvre.
Passe documentaire des sept chantiers, chaque affirmation verifiee contre le
code plutot que recopiee des rapports.

Deux paragraphes de SUIVI.md donnaient une CAUSE FAUSSE, ce qui coute plus cher
qu'un document muet parce que quelqu'un la croira : celui des volets attribuait
le defaut a un re-rendu du bloc depliant, et la note « il n'existe aucune autre
entree » vers l'administration etait fausse au sens strict -- GET /admin est
bien servi, mais hors de portee au poste en kiosque, et la touche restait
atteignable au clavier tout en etant peinte sous un voile opaque.

Le fichier se contredisait aussi : l'entree n. 1 du lot L8 annoncait un
correctif « non applique » que le paragraphe du 26/07 enregistrait deja comme
livre. Elle est reecrite sur le defaut reellement restant.

Le compte des tests etait fige depuis plusieurs sessions. Trois citations
fichier:ligne avaient derive du fait de cette serie meme ; les numeros sont
retires, les fichiers gardes.

La section « Bugs actifs » annonce quinze codes-barres mal saisis dans Odoo.
Recalcule le 29/07/2026 sur testdata/catalog/flv.csv, l'export authentique en
compte SEIZE, tous distincts par code et par identifiant. Le quinze vient de
l'analyse du legacy et n'a pas ete remesure depuis : les deux chiffres sont
laisses cote a cote, l'ecart nomme, et personne ne tranche a la place de qui
configure les nomenclatures.

ADR-041 ouvre le masquage des produits vendus a l'unite, et dit ce qu'on perd :
un poste qui masque ne peut plus imprimer d'etiquette a l'unite depuis sa
grille, et la cle entre dans l'empreinte partagee -- la seule montee de version
change donc l'empreinte de tous les postes, meme regles a l'identique. Un
benevole qui ne l'a pas lu conclurait a une panne. Le compte d'ADR etait faux
dans les deux fichiers qui l'annoncent : 36 dans SUIVI.md, 33 dans CLAUDE.md,
41 dans le document.

§11.3 change de contrat et pas de precision : la phrase « sert la liste des
fautes sur http://127.0.0.1:8085 » ne vaut plus que dans un cas, celui ou
l'adresse elle-meme est la faute. Un exploitant qui a appris « en cas de doute,
8085 » doit lire pourquoi.

Deux commentaires devenus faux, sans changement de code : deploy/linux/update.sh
justifiait sa double sonde par un comportement que ce lot supprime, et la
docstring de web/src/admin/mount.ts decrivait encore l'appui de trois secondes
dans un coin neutre, geste supprime par ADR-032 -- elle etait de surcroit en
francais la ou la convention impose l'anglais. Aucun banc ne la voyait.
…antiers

Aucun conflit de code : leur travail vit dans internal/kiosk, que la serie ne
touche pas. Deux conflits dans SUIVI.md, tous deux resolus en gardant les deux
recits -- les compteurs de la serie et le diagnostic du demarrage a froid
portent sur le meme poste et le meme jour.

Le compte des tests Go passe de 2 562 a 2 572 : les dix tests que le correctif
kiosque apporte. Mesure refaite apres fusion plutot que recopiee.
La CI a refuse la fusion sur « internal/web/dist est en retard sur web/src »
alors que la garde etait verte sur le poste de developpement. Ce n'est pas le
dist qui etait en retard : il etait construit ailleurs.

Trois sources reecrites pendant la serie l'avaient ete avec des CRLF --
web/src/admin/lib/api.ts, pages/Catalog.svelte et pages/Dashboard.svelte, plus
web/test/admin-catalog.test.ts. .gitattributes normalise en LF dans l'objet,
donc le depot etait sain et la CI extrayait du LF ; mais le build local lisait
le DISQUE, avec ses CRLF. Vite hache le contenu produit : trois noms d'actifs
divergeaient donc entre les deux plateformes. Le CSS, lui, etait identique des
deux cotes -- c'est ce qui a designe les fins de ligne plutot qu'une divergence
de dependances.

Le diagnostic a failli etre faux : `git diff --stat` ne montre pas les fichiers
non suivis, si bien que la CI listait mes trois actifs en SUPPRESSION totale
sans nommer ceux qu'elle venait de produire. Cela ressemblait a un dist ampute.

Sources reextraites depuis git, bundle reconstruit. Aucune ligne de code ne
change ; seuls les trois noms haches bougent. 2 572 tests Go et 764 tests front
toujours verts, budget inchange a 79 429 o gzip.
@lostmind84
lostmind84 merged commit b75eecf into main Jul 29, 2026
6 checks passed
@lostmind84
lostmind84 deleted the fix/poste-neuf-et-catalogue branch July 29, 2026 19:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant