21 lines
2.3 KiB
Markdown
21 lines
2.3 KiB
Markdown
---
|
|
issueRef: "#221"
|
|
version: 6
|
|
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
|
updatedAt: 1786825279605
|
|
---
|
|
2026-08-15 — Ouverture du bug.
|
|
|
|
Signalement utilisateur : l'heure affichée sur les messages ne correspond pas a l'heure reelle; toutes les heures semblent a 1:00.
|
|
|
|
Cadrage UX : l'heure doit etre fiable, coherente et rendue dans la timezone locale utilisateur. Verifier aussi date hors jour courant, passage minuit, DST, fallback timestamp invalide, coherence desktop/mobile.
|
|
|
|
Cadrage Architecture : suspect principal = timestamp minuscule ou en secondes interprete comme epoch ms (symptome compatible avec new Date(1) => 01:00 Europe/Paris). Point UI cite : frontend/src/features/agents/CustomAgentChatView.tsx autour du formatage `new Date(receivedAtMs)`. Strategie recommandee : corriger l'unite a la source si besoin, ajouter une garde frontend contre timestamps absurdes et centraliser la normalisation.
|
|
|
|
Implementation DevFrontend : cause racine trouvee dans le replay de scrollback au reattach. Le code faisait `reattached.scrollback.reduce(foldChunk, ...)`; `Array.reduce` passait l'index en 3e argument, interprete par `foldChunk` comme `receivedAtMs`. Les messages rejoues recevaient donc `0`, `1`, `2` ms, ce qui rendait `new Date(1)` a 01:00 en Europe/Paris. Correctif applique dans `frontend/src/features/agents/CustomAgentChatView.tsx` : wrapper explicite autour de `foldChunk` dans le `reduce`, plus normalisation/garde centralisee avant rendu des heures. Test de regression ajoute dans `frontend/src/features/agents/CustomAgentChatView.test.tsx`.
|
|
|
|
Resultats annonces par DevFrontend : `npm test -- CustomAgentChatView.test.tsx` OK (51 tests), `npm run typecheck` OK.
|
|
|
|
Validation QA 2026-08-15 : VERT sur `fix/221-message-time-frozen`. Verifications reelles : `git rev-parse --abbrev-ref HEAD` => `fix/221-message-time-frozen`; `npm run test -- src/features/agents/CustomAgentChatView.test.tsx` => 51/51 OK; `npm run typecheck` => OK. Limite residuelle QA : pas de scenario E2E/UI manuel complet execute.
|
|
|
|
Note produit/contrat : le contrat backend de scrollback ne porte pas d'horodatage metier sur les `ReplyChunk`; apres reattach l'UI evite des heures absurdes mais ne peut pas reconstituer l'heure historique exacte du chunk sans evolution de contrat. |