generated from srsk7896/pipeline-vibecoding
[Correction] Fausse alerte d'horloge et commande de remise à l'heure erronée (fuseau du serveur ignoré) #3
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problème
Pour savoir si l'horloge d'un boîtier est juste, l'outil la compare à l'heure du serveur. Or le conteneur de production tourne en UTC (temps universel), alors que les boîtiers sont réglés à l'heure française.
Pour un boîtier OneOS v5, qui n'indique pas son fuseau, l'outil voit donc 1 h (hiver) ou 2 h (été) d'écart là où il n'y en a aucun. Il affiche une alerte « horloge non à jour » et propose une commande (FEAT-11) qui recule réellement l'horloge du boîtier de 1 ou 2 heures.
Comportement observé
Reproduit par un test jetable lors de l'audit : boîtier v5 affichant
Current system time : 24/06/26 14:01:40, à l'heure exacte de Paris (été), et serveur en UTC.2h0m0s,Notable = true.date 24/06/26puistime 12:01:40.En OneOS v6, l'écart est bien calculé, car le boîtier fournit son décalage
±hhmm. En revanche, la commandetime …est rédigée à l'heure UTC du serveur, pas dans le fuseau du boîtier.Comportement attendu
Europe/Parisen v5, décalage lu sur le boîtier en v6.Étapes de reproduction
TZ=UTC, ou dans l'image Docker publiée (aucune variableTZ, basedistroless/static).Current system timecorrespond à l'heure de Paris actuelle.timedécalée de 1 à 2 h.Hypothèse de cause
internal/web/server.go:210:now := time.Now(), qui prend le fuseau du processus (UTC dans le conteneur).internal/analysis/analyze.go:117-141(clockSkew) : en v5,nowet l'heure du boîtier sont comparés comme des « heures affichées », sans tenir compte du fuseau.internal/analysis/remediation.go:40-50(clockCmd) :now.Format("02/01/06")/now.Format("15:04:05")dans le fuseau du serveur.Dockerfile: aucune variableTZ, et le binaire n'embarque pastime/tzdata.Hypothèse : la commande OneOS
time hh:mm:ssrègle l'heure locale du boîtier, ce qui est le fonctionnement habituel. Si elle réglait l'heure UTC, le défaut ne toucherait que la v5.Proposition / solution
Option la plus simple, sans nouvelle configuration :
import _ "time/tzdata"danscmd/pluganalytics/main.go) et définir un fuseau de référence uniqueEurope/Paris, documenté dans_projet/design.mdà côté des règles métier versionnées.time.Now().In(paris)) et la transmettre àanalysis.Evaluate, ou bien convertir dansclockSkewetbuildRemediations.SystemTimeHasTZ = true), rédiger la commande dans le fuseau du boîtier :now.In(eq.SystemTime.Location()).internal/web/templates/diagnostic.gohtml:280), comme le fait déjà le PDF (internal/export/pdf.go:69).README.md, section Configuration.Ne pas ajouter de variable d'environnement de fuseau tant qu'aucun besoin hors métropole n'est exprimé.
Critères d'acceptation
internal/analysis: serveur UTC et boîtier v5 à l'heure de Paris, en été et en hiver →Notable = falseet aucune remédiation.timeégale à l'heure de Paris.+0200→ commandetimedans ce décalage.TZ=UTC go test ./...)._projet/design.mdmentionnent le fuseau de référence.Priorité proposée
Haute : en production, toutes les analyses v5 sont concernées, et l'outil donne une consigne qui dégrade le boîtier et fausse les historiques suivants.
Périmètre estimé
internal/analysis,cmd/pluganalytics), interface (un libellé), documentationQuestions ouvertes
Labels proposés
type:bugpriority:higharea:backend