chore(wip): lot #165-169 validé QA + rework foreground #163 (KO - preuve device/toolchain insuffisante)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -1,8 +1,8 @@
|
||||
---
|
||||
issueRef: "#136"
|
||||
version: 8
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedAt: 1785244375293
|
||||
version: 9
|
||||
updatedBy: {"kind":"user"}
|
||||
updatedAt: 1785252649210
|
||||
---
|
||||
|
||||
## #136 — Cadrage UX (2026-07-28)
|
||||
|
||||
@ -2,15 +2,15 @@
|
||||
id: "cd125c5f-5e37-4100-8b61-58cbaab5eac1"
|
||||
number: 136
|
||||
title: "[Bug] \"passer le repos\" sur la montre ne fonctionne pas"
|
||||
status: "qa"
|
||||
status: "closed"
|
||||
priority: "medium"
|
||||
sprint: "abc4f969-b169-45f7-988c-daeeab762201"
|
||||
links: []
|
||||
agentRefs: []
|
||||
createdBy: {"kind":"user"}
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedBy: {"kind":"user"}
|
||||
createdAt: 1785141207792
|
||||
updatedAt: 1785244375293
|
||||
version: 8
|
||||
updatedAt: 1785252649210
|
||||
version: 9
|
||||
---
|
||||
Le bouton "passer le repos" sur la montre ne fonctionne pas, il me renvoie sur l'écran de la séance sur la montre mais ne passe pas le repos sur le téléphone
|
||||
@ -1,6 +1,6 @@
|
||||
---
|
||||
issueRef: "#157"
|
||||
version: 4
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedAt: 1785248859176
|
||||
version: 5
|
||||
updatedBy: {"kind":"user"}
|
||||
updatedAt: 1785252668623
|
||||
---
|
||||
|
||||
@ -2,15 +2,15 @@
|
||||
id: "4ba5c5bc-c575-4afc-bb55-93feb7e7ad9c"
|
||||
number: 157
|
||||
title: "[DevFrontend] Distance live montre sur séance en cours"
|
||||
status: "qa"
|
||||
status: "open"
|
||||
priority: "medium"
|
||||
sprint: "d5c18b44-0eec-46db-b8ab-506cfee0bfea"
|
||||
links: [{"target":"#142","kind":"blocks"},{"target":"#106","kind":"relatesTo"},{"target":"#145","kind":"dependsOn"}]
|
||||
agentRefs: []
|
||||
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedBy: {"kind":"user"}
|
||||
createdAt: 1785180656723
|
||||
updatedAt: 1785248859176
|
||||
version: 4
|
||||
updatedAt: 1785252668623
|
||||
version: 5
|
||||
---
|
||||
Ajouter la distance parcourue live remontée par la montre compatible, avec affichage léger côté téléphone pendant la séance et réutilisation côté montre dans le panneau secondaire. Dégradation silencieuse si donnée indisponible.
|
||||
@ -1,6 +1,6 @@
|
||||
---
|
||||
issueRef: "#160"
|
||||
version: 4
|
||||
version: 5
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedAt: 1785248859257
|
||||
updatedAt: 1785254327417
|
||||
---
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
id: "b5b4fe80-952f-4376-9271-de98817add32"
|
||||
number: 160
|
||||
title: "[DevFrontend] Graphiques historiques statistiques montre"
|
||||
status: "inProgress"
|
||||
status: "qa"
|
||||
priority: "medium"
|
||||
sprint: "d5c18b44-0eec-46db-b8ab-506cfee0bfea"
|
||||
links: [{"target":"#106","kind":"relatesTo"},{"target":"#145","kind":"dependsOn"}]
|
||||
@ -10,7 +10,7 @@ agentRefs: []
|
||||
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
createdAt: 1785180656778
|
||||
updatedAt: 1785248859257
|
||||
version: 4
|
||||
updatedAt: 1785254327417
|
||||
version: 5
|
||||
---
|
||||
Implémenter les graphiques et écrans d'historique pour les statistiques montre conservées : fréquence cardiaque avec détail par étape/série/exercice, distance parcourue, calories consommées. S'appuie sur la persistance historique et reste silencieux si certaines séries de données sont absentes.
|
||||
@ -1,6 +1,6 @@
|
||||
---
|
||||
issueRef: "#163"
|
||||
version: 5
|
||||
version: 6
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedAt: 1785248859271
|
||||
updatedAt: 1785254327435
|
||||
---
|
||||
|
||||
@ -10,7 +10,7 @@ agentRefs: [{"agentId":"57695b92-24d0-4876-837c-76116e70a6ae","role":"assigned"}
|
||||
createdBy: {"kind":"user"}
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
createdAt: 1785242433447
|
||||
updatedAt: 1785248859271
|
||||
version: 5
|
||||
updatedAt: 1785254327435
|
||||
version: 6
|
||||
---
|
||||
Quand l'écran de la montre est éteint, la fréquence cardiaque n'est aps actualisée (l'affichage est assombris sur le téléphone et la fréquance ne change pas). Pour les statistiques il fauit que la fréquence cardiaque continue d'être enregistrée
|
||||
6
.ideai/tickets/165/carnet.md
Normal file
6
.ideai/tickets/165/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#165"
|
||||
version: 5
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedAt: 1785254327333
|
||||
---
|
||||
16
.ideai/tickets/165/issue.md
Normal file
16
.ideai/tickets/165/issue.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
id: "35ff6501-b5fd-4dd3-8b88-dc20e3c6c07d"
|
||||
number: 165
|
||||
title: "[Bug] impossible de lancer un chrono depuis la montre"
|
||||
status: "qa"
|
||||
priority: "high"
|
||||
sprint: "abc4f969-b169-45f7-988c-daeeab762201"
|
||||
links: []
|
||||
agentRefs: [{"agentId":"57695b92-24d0-4876-837c-76116e70a6ae","role":"assigned"}]
|
||||
createdBy: {"kind":"user"}
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
createdAt: 1785250763662
|
||||
updatedAt: 1785254327333
|
||||
version: 5
|
||||
---
|
||||
J'ai encore des cas ou je ne peux pas lancer de chrono depuis al montre. Par exemple j'avais deux étapes qui s'enchainaient et qui avaient un chrono, quand j'ai fais passer l'étape depuis la montre, je ne pouvais pas lancer le chrono de l'étape suivante
|
||||
67
.ideai/tickets/166/carnet.md
Normal file
67
.ideai/tickets/166/carnet.md
Normal file
@ -0,0 +1,67 @@
|
||||
---
|
||||
issueRef: "#166"
|
||||
version: 8
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedAt: 1785254327361
|
||||
---
|
||||
|
||||
## #166/#167/#169 — Cadrage UX coordonné : slot "donnée dominante sans chrono" (UX, 2026-07-28)
|
||||
|
||||
Statut : **cadrage exploitable, à traiter comme une seule mini-refonte**, pas trois patchs indépendants (voir point 4). Détail complet ici sur #166, #167 et #169 pointent vers ce carnet + leur delta propre.
|
||||
|
||||
Base : écran `Séance active` déjà révisé par #161 (fermé) — un chrono/donnée dominante + un bouton d'action unique sur la même ligne, un seul libellé, FC en icône en pied d'écran. Ce lot traite les **cas où il n'y a pas de chrono actif**, laissés de côté par #161.
|
||||
|
||||
### Constat commun
|
||||
Quand il n'y a pas de chrono actif, l'écran retombe aujourd'hui sur des solutions par défaut peu utiles : le compteur `SÉRIE X/Y` se répète en donnée dominante alors qu'il est déjà affiché en en-tête (#167), aucune action rapide n'est proposée pour une étape à répétitions alors que c'est justement l'action la plus probable à cet instant (#166), et un sous-titre `Prêt pour la série suivante` occupe une ligne entière pour une information déjà déductible du reste de l'écran (#169).
|
||||
|
||||
### 1. Comportement attendu par ticket
|
||||
|
||||
**#166** : sur une étape à répétitions (sans chrono), un bouton de validation/passage à l'étape suivante est visible directement sur l'écran principal — pas besoin de swiper vers `Actions`. Ce bouton déclenche la même commande que `Étape suivante` (valide l'étape, avance), pas un `Passer l'étape` (qui reste une action de contournement, toujours dans `Actions`).
|
||||
|
||||
**#167** : sur une étape à répétitions (sans chrono), la donnée dominante centrale devient le nombre de répétitions à faire pour cette étape, et non plus le nombre de séries de l'exercice (déjà visible en en-tête `SÉRIE X/Y`, donc redondant).
|
||||
|
||||
**#169** : le sous-titre `Prêt pour la série suivante` est supprimé, sans remplacement — l'écran (nom d'exercice + bouton `Démarrer l'exercice`) reste compréhensible sans lui.
|
||||
|
||||
### 2. Disposition recommandée — écran principal, cas étape reps-only
|
||||
|
||||
Réutilise **exactement** le template ligne chrono+bouton posé par #161, appliqué à la donnée reps au lieu du chrono :
|
||||
|
||||
```text
|
||||
SÉRIE 2 / 5
|
||||
Pompes tempo
|
||||
Passage 1 / 3 · Étape 2 / 4
|
||||
|
||||
Répétitions
|
||||
10 [✓]
|
||||
|
||||
♥ 132
|
||||
```
|
||||
|
||||
- Légende `Répétitions` une seule fois, au-dessus de la valeur — même règle que le libellé de chrono (#161).
|
||||
- Bouton icône `[✓]` (valider/étape suivante) à droite de la valeur, même ligne, même cible tactile ≥48dp que le bouton pause/play (#128/#161) — pas un nouveau composant, le même gabarit rejoue avec une icône différente.
|
||||
- Un seul bouton d'action visible à la fois sur cette ligne : jamais `[✓]` et `[⏸]` en même temps. Si l'étape a aussi un chrono (score chrono d'étape, cas #140), ce cas reste géré par le layout dédié `_ManualScoreContent` existant, non touché par ce lot.
|
||||
- Cœur FC inchangé, en pied d'écran (#161).
|
||||
|
||||
### 3. Disposition recommandée — écran `Prêt pour la série suivante`
|
||||
|
||||
```text
|
||||
SÉRIE 3 / 5
|
||||
Pompes tempo
|
||||
|
||||
|
||||
[Démarrer l'exercice]
|
||||
```
|
||||
|
||||
Le sous-titre disparaît, l'espace libéré n'est **pas** réutilisé pour un nouvel élément (contrainte explicite : ne pas ajouter de bruit) — juste un espacement plus respirant entre le nom d'exercice et le bouton.
|
||||
|
||||
### 4. Garde-fous de lisibilité / priorité visuelle
|
||||
- Un seul élément "action" par écran, toujours à droite de la donnée dominante quand il y en a une (chrono → `[⏸]`, reps → `[✓]`) — jamais empilé en dessous, jamais dupliqué ailleurs. C'est la même règle que #161, appliquée maintenant au cas reps.
|
||||
- Ne jamais afficher deux fois la même information sous deux formes (le principe qui motive #167) : si une donnée est déjà visible ailleurs sur l'écran (ex. `SÉRIE X/Y` en en-tête), elle n'a pas sa place une seconde fois dans le slot dominant.
|
||||
- Suppression de texte (#169) : ne jamais compenser par un ajout ailleurs sauf besoin explicite ; le vide contrôlé est préférable au bruit, conformément à la contrainte utilisateur de ce lot.
|
||||
- Icône `[✓]` distincte visuellement de `[⏸]`/`[▶]` pour éviter toute ambiguïté entre "valider l'étape" et "mettre en pause la séance" — même style (or sur fond `#141824`, anneau crimson au tap, cf. #128) mais pictogramme différent.
|
||||
|
||||
### 5. Coordination des 3 tickets
|
||||
**Oui, à traiter comme une seule mini-refonte cohérente**, pas trois patchs séparés :
|
||||
- #166 et #167 modifient la **même zone d'écran** (slot donnée dominante + bouton d'action pour une étape reps-only) — les livrer séparément risquerait qu'un commit écrase la mise en page de l'autre, ou que le bouton `[✓]` soit ajouté sans que la redondance `SÉRIE X/Y` soit corrigée en même temps (ou l'inverse).
|
||||
- #169 touche un état adjacent du même écran (`Séance active` sans chrono actif) et applique le même principe (pas de texte qui ne porte pas d'action ni de donnée nécessaire) — le traiter isolément ferait revivre exactement la dérive de densité déjà diagnostiquée et corrigée par #161 (accumulation de correctifs isolés qui perdent la cohérence d'ensemble).
|
||||
- Recommandation : un seul lot Architect/DevFrontend pour les trois, avec cette section comme spec unique de référence.
|
||||
16
.ideai/tickets/166/issue.md
Normal file
16
.ideai/tickets/166/issue.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
id: "71f99d03-7ac8-435f-92ef-087e61c0f873"
|
||||
number: 166
|
||||
title: "[UI] mettre un bouton sur l'écran principal de la montre pour passer à l'étape suivante dans le cas de répétitions dans une étape"
|
||||
status: "qa"
|
||||
priority: "medium"
|
||||
sprint: "d5c18b44-0eec-46db-b8ab-506cfee0bfea"
|
||||
links: []
|
||||
agentRefs: [{"agentId":"57695b92-24d0-4876-837c-76116e70a6ae","role":"assigned"}]
|
||||
createdBy: {"kind":"user"}
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
createdAt: 1785250931982
|
||||
updatedAt: 1785254327361
|
||||
version: 8
|
||||
---
|
||||
Quand on a une étape qui ne demande qu'un nombre de répétitions, il faudrait que le bouton pour calider l'étape directement sur l'écran principal de la montre.
|
||||
10
.ideai/tickets/167/carnet.md
Normal file
10
.ideai/tickets/167/carnet.md
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
issueRef: "#167"
|
||||
version: 7
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedAt: 1785254327381
|
||||
---
|
||||
|
||||
## #167 — Cadrage UX (2026-07-28)
|
||||
|
||||
Spec complète et coordination avec #166/#169 : voir carnet #166 (« Cadrage UX coordonné : slot "donnée dominante sans chrono" »). Ce ticket = le remplacement de la donnée dominante (série → répétitions de l'étape) dans le template partagé décrit là-bas. Ne pas traiter séparément de #166 : même zone d'écran, même livraison.
|
||||
16
.ideai/tickets/167/issue.md
Normal file
16
.ideai/tickets/167/issue.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
id: "a321767d-8f07-45fc-aff6-935540009aa5"
|
||||
number: 167
|
||||
title: "[UI] Afficher le nombre de répétition à faire pour une étape sur la montre"
|
||||
status: "qa"
|
||||
priority: "medium"
|
||||
sprint: "d5c18b44-0eec-46db-b8ab-506cfee0bfea"
|
||||
links: []
|
||||
agentRefs: [{"agentId":"57695b92-24d0-4876-837c-76116e70a6ae","role":"assigned"}]
|
||||
createdBy: {"kind":"user"}
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
createdAt: 1785251047775
|
||||
updatedAt: 1785254327381
|
||||
version: 7
|
||||
---
|
||||
Il est important que l'utilisateur sache ce qu'il a a faire directement depuis sa montre. Dans le cas d'une étape qui demande un nombre de répétitions, il faut que l'utilisateur ai le nombre de répétition à faire sur la montre. Actuellement, si l'étape n'a que des répétition, on affiche le nombre de série de l'exercice, je préfèrerais avoir le nombre de répétition à faire plutot à la place
|
||||
10
.ideai/tickets/169/carnet.md
Normal file
10
.ideai/tickets/169/carnet.md
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
issueRef: "#169"
|
||||
version: 6
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedAt: 1785254327400
|
||||
---
|
||||
|
||||
## #169 — Cadrage UX (2026-07-28)
|
||||
|
||||
Spec complète et coordination avec #166/#167 : voir carnet #166 (« Cadrage UX coordonné : slot "donnée dominante sans chrono" »), section 3. Suppression du sous-titre `Prêt pour la série suivante`, sans remplacement — l'espace libéré n'est pas réutilisé (contrainte explicite : pas d'ajout de bruit visuel). Peut être livré avec #166/#167 dans le même lot pour cohérence, mais son changement est indépendant techniquement (écran différent : `Prêt pour la série suivante`, pas l'écran étape reps-only).
|
||||
16
.ideai/tickets/169/issue.md
Normal file
16
.ideai/tickets/169/issue.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
id: "7e5b1ba4-5f5c-46d1-b05a-6d6f5af73f23"
|
||||
number: 169
|
||||
title: "[UI] Enlever \"Prêt pour la série suivante\" sur la montre"
|
||||
status: "qa"
|
||||
priority: "medium"
|
||||
sprint: "d5c18b44-0eec-46db-b8ab-506cfee0bfea"
|
||||
links: []
|
||||
agentRefs: [{"agentId":"57695b92-24d0-4876-837c-76116e70a6ae","role":"assigned"}]
|
||||
createdBy: {"kind":"user"}
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
createdAt: 1785251491623
|
||||
updatedAt: 1785254327400
|
||||
version: 6
|
||||
---
|
||||
Je pense que le titre "Prêt pour la série suivante" est a enlever de la montre, il prend de la place pour pas grand chose
|
||||
@ -1,3 +1,3 @@
|
||||
{
|
||||
"nextNumber": 165
|
||||
"nextNumber": 170
|
||||
}
|
||||
@ -1461,11 +1461,11 @@
|
||||
"issueRef": "#136",
|
||||
"path": "136",
|
||||
"title": "[Bug] \"passer le repos\" sur la montre ne fonctionne pas",
|
||||
"status": "qa",
|
||||
"status": "closed",
|
||||
"priority": "medium",
|
||||
"sprint": "abc4f969-b169-45f7-988c-daeeab762201",
|
||||
"assignedAgentIds": [],
|
||||
"updatedAt": 1785244375293
|
||||
"updatedAt": 1785252649210
|
||||
},
|
||||
{
|
||||
"issueRef": "#137",
|
||||
@ -1693,11 +1693,11 @@
|
||||
"issueRef": "#157",
|
||||
"path": "157",
|
||||
"title": "[DevFrontend] Distance live montre sur séance en cours",
|
||||
"status": "qa",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"sprint": "d5c18b44-0eec-46db-b8ab-506cfee0bfea",
|
||||
"assignedAgentIds": [],
|
||||
"updatedAt": 1785248859176
|
||||
"updatedAt": 1785252668623
|
||||
},
|
||||
{
|
||||
"issueRef": "#158",
|
||||
@ -1723,11 +1723,11 @@
|
||||
"issueRef": "#160",
|
||||
"path": "160",
|
||||
"title": "[DevFrontend] Graphiques historiques statistiques montre",
|
||||
"status": "inProgress",
|
||||
"status": "qa",
|
||||
"priority": "medium",
|
||||
"sprint": "d5c18b44-0eec-46db-b8ab-506cfee0bfea",
|
||||
"assignedAgentIds": [],
|
||||
"updatedAt": 1785248859257
|
||||
"updatedAt": 1785254327417
|
||||
},
|
||||
{
|
||||
"issueRef": "#161",
|
||||
@ -1763,7 +1763,7 @@
|
||||
"assignedAgentIds": [
|
||||
"57695b92-24d0-4876-837c-76116e70a6ae"
|
||||
],
|
||||
"updatedAt": 1785248859271
|
||||
"updatedAt": 1785254327435
|
||||
},
|
||||
{
|
||||
"issueRef": "#164",
|
||||
@ -1774,6 +1774,54 @@
|
||||
"sprint": "abc4f969-b169-45f7-988c-daeeab762201",
|
||||
"assignedAgentIds": [],
|
||||
"updatedAt": 1785244375351
|
||||
},
|
||||
{
|
||||
"issueRef": "#165",
|
||||
"path": "165",
|
||||
"title": "[Bug] impossible de lancer un chrono depuis la montre",
|
||||
"status": "qa",
|
||||
"priority": "high",
|
||||
"sprint": "abc4f969-b169-45f7-988c-daeeab762201",
|
||||
"assignedAgentIds": [
|
||||
"57695b92-24d0-4876-837c-76116e70a6ae"
|
||||
],
|
||||
"updatedAt": 1785254327333
|
||||
},
|
||||
{
|
||||
"issueRef": "#166",
|
||||
"path": "166",
|
||||
"title": "[UI] mettre un bouton sur l'écran principal de la montre pour passer à l'étape suivante dans le cas de répétitions dans une étape",
|
||||
"status": "qa",
|
||||
"priority": "medium",
|
||||
"sprint": "d5c18b44-0eec-46db-b8ab-506cfee0bfea",
|
||||
"assignedAgentIds": [
|
||||
"57695b92-24d0-4876-837c-76116e70a6ae"
|
||||
],
|
||||
"updatedAt": 1785254327361
|
||||
},
|
||||
{
|
||||
"issueRef": "#167",
|
||||
"path": "167",
|
||||
"title": "[UI] Afficher le nombre de répétition à faire pour une étape sur la montre",
|
||||
"status": "qa",
|
||||
"priority": "medium",
|
||||
"sprint": "d5c18b44-0eec-46db-b8ab-506cfee0bfea",
|
||||
"assignedAgentIds": [
|
||||
"57695b92-24d0-4876-837c-76116e70a6ae"
|
||||
],
|
||||
"updatedAt": 1785254327381
|
||||
},
|
||||
{
|
||||
"issueRef": "#169",
|
||||
"path": "169",
|
||||
"title": "[UI] Enlever \"Prêt pour la série suivante\" sur la montre",
|
||||
"status": "qa",
|
||||
"priority": "medium",
|
||||
"sprint": "d5c18b44-0eec-46db-b8ab-506cfee0bfea",
|
||||
"assignedAgentIds": [
|
||||
"57695b92-24d0-4876-837c-76116e70a6ae"
|
||||
],
|
||||
"updatedAt": 1785254327400
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user