Repository navigation
Promotion env/staging → main (#458, #459) - #460
Merged
Merged
Conversation
Hooks (.claude/hooks, branchés dans .claude/settings.json) : - protected-branches : pas de commit ni de push direct sur main ou env/staging - commit-identity : author et committer = Clément, aucune ligne Co-Authored-By - lint-before-commit : git diff --check, dotnet format whitespace, npm run lint:arch - no-em-dash : aucun tiret cadratin dans ce que Claude écrit - grafana-reminder : rappel quand un texte lu par un tableau Grafana disparaît Sous-agents (.claude/agents) : relecteur-pr, gardien-code (architecture et SOLID), gardien-da, gardien-rgpd. Tests : node --test .claude/hooks/tests/hooks.test.mjs (25 tests). EfCatalogueQueries.cs reformaté (seul fichier du back que dotnet format whitespace signalait). CLAUDE.md et .gitignore à jour.
Hooks et sous-agents Claude Code
Comme en prod et au staging : le journal d'un shard E2E faisait environ 29 000 lignes de SQL, et l'erreur utile s'y perdait.
Play/, Stats/, Archive/, Admin/ et Jobs/ ; le transverse (options, règles, erreurs, réponses, métriques, ports de lecture) reste à la racine. L'espace de noms ne change pas : le code Wolverine généré est identique.
Le store (écritures, agrégats suivis) est dans Domain, les ports de lecture (I…Queries, IDailyTrackUsage, IRunAccess) dans Application, les politiques du domaine dans Domain. Vérifiée sur tous les modules : aucun port ne fait exception.
Pages, fenêtres et composants de admin, account, gameplay, daily/feature et runs/feature passent chacun dans un dossier à leur nom, avec leur .html, .scss et .spec.ts. L'admin range ses composants par onglet (dashboard, challenges, pool, players, actions), sous le même nom dans feature et ui. account/testing/dom.ts rejoint account/feature/testing, seule couche qui s'en sert. Déplacements par git mv et imports corrigés, sans changement de comportement.
…routes app.config.ts importait les jetons d'adresse des clients Daily, Catalogue et Admin, ce qui embarquait les fichiers générés entiers au démarrage (501,35 kB pour un budget de 500 kB). Seul Players reste à la racine. - provideDailyApi() fournit adresse, DailyClient et DailyApi sur une route parente de DAILY_ROUTES (garde de l'archive comprise) ; - provideAdminApi() regroupe les clients admin, catalogue, daily et runs, leurs adresses, JOBS_DASHBOARD_URL et les adaptateurs, sur ADMIN_ROUTES (remplace catalogue.providers et admin-runs-api.providers) ; - provideGameplay() redonne CatalogueClient avec son adresse ; - les clients sont redonnés avec leur jeton : un client généré pris à la racine n'y trouverait pas l'adresse et appellerait le domaine du front ; - les adaptateurs passent en @Injectable() sans providedIn : hors de leur route, ils lèvent « No provider » au lieu d'utiliser un client sans adresse. Bundle initial : 501,35 kB -> 464,77 kB (budget inchangé).
…hread-y8y30y # Conflicts: # src/front/InSeconds.Client/src/app/admin/feature/actions/actions.page.spec.ts # src/front/InSeconds.Client/src/app/admin/feature/admin.routes.ts # src/front/InSeconds.Client/src/app/daily/feature/daily.routes.ts
…dit au dossier Infrastructure de dépendre des modules Le cookie du joueur, sa validation, la pose du cookie, la télémétrie du joueur, les origines de confiance du lien magique et la reprise des anciens cookies quittent Infrastructure/Auth pour Modules/Players/Auth. Restent transverses : DataProtectionSetup et les noms de policy et de rôle (AuthorizationPolicies, Roles). Nouveau test d'architecture InfrastructureDependencyTests : InSeconds.Api.Infrastructure ne dépend d'aucun module, sauf la composition et les points d'entrée nommés (ApiComposition, WolverineSetup, PlayerDataCommand, FreezeDayStatsCommand). Code Wolverine régénéré.
…le d'architecture du dossier Infrastructure
…té, genres de l'album) - Tests OpenAPI : base OpenApiDocumentTests (document sauvegardé à jour, aucun document en prod, lectures du document), les cinq classes n'y ajoutent que leurs vérifications. - UniqueViolationExceptionHandler (Infrastructure/Persistence) : la reconnaissance d'une violation d'unicité PostgreSQL et l'écriture du 409, partagées par TrackConflictExceptionHandler et AccountConflictExceptionHandler. - TrackMapping.RecordAlbumGenresAsync : les genres de l'album lu, communs à l'ajout et à l'actualisation d'un morceau.
Un joueur effacé disparaît pour de bon (AccountErasure) : la suppression logique n'était plus posée par le code. Retire Player.DeletedAt, ses filtres dans Players (requêtes, sessions, annuaire, AccountLookup et AccountUnavailable) et la jointure SQL de Daily sur players.players : les statistiques lisent daily.sessions en LINQ (ChallengeAnswers). Tests : les joueurs « supprimés » des tests Daily passent par le vrai effacement (GameApi.ErasePlayerAsync) ; les trois tests Players qui posaient deleted_at à la main sont retirés, leurs cas étant couverts par PlayerDataTests et les tests de jeton ou de cookie inconnus. Migration DropPlayerDeletedAt.
…-y8y30y # Conflicts: # src/back/CLAUDE.md
Les quatre toasts de série (invité, série perdue, gel utilisé, gel gagné) répétaient le même cadre en style en ligne : il passe dans <app-toast-frame>, avec le liseré orange (série) ou cyan (gel) en entrée et l'animation d'entrée propre à chaque toast. Opacité du fond unifiée à 0,94 (le toast invité était à 0,92), styles en ligne remplacés par des classes Tailwind à variables.
…de Daily/Application (contenu inchangé)
appButton gagne la taille lg (60 px, bouton principal d'un écran), la variante neutral (contour --border-neutral) et l'option glow ; une seule valeur par propriété, celle du bouton principal de l'accueil (hauteur par taille, capitales à 0,06 em, enfoncement à 95 %). Les 15 composants du jeu du jour, du gameplay et de Platines qui recopiaient ses classes l'utilisent désormais. Erreur de lecture : Réessayer et Passer l'un sous l'autre.
… d'étapes de la refonte Back (code, tests, props), E2E, config Playwright et Sheriff, deploy/ et .github/ : chaque commentaire garde sa raison technique sans référence historique. Code des anciens cookies décrit comme tel. Identifiants, titres de tests, messages de journal et valeurs (version OpenAPI, nom de projet Compose) inchangés. Doc : dernier merge env/staging vers main (#450, 28/10/2026), src/back/CLAUDE.md sans renvois R/§, découpage en PR du proto 1 Platines déplacé dans docs/historique/runs-proto1-decoupage.md (plan.md garde la feuille de route).
…à S16 définies src/ du front (hors clients générés) et src/front/CLAUDE.md : plus de v1/v2, de renvois au plan ni d'étapes ; la valeur v2-launch reste, expliquée comme clé historique lue par l'app. Titres E2E et Vitest qui citaient la v1 ou la v2 renommés (le découpage E2E ne lit que les noms de fichiers). src/back/CLAUDE.md : section « Règles de sécurité (S1 à S16) », une ligne par code utilisé, pour que les tests S1_…, S11_… et le test de fumée ne renvoient plus à un document d'archive.
… spec des nouveaux composants)
Nettoyage du code : bundle, deleted_at, rangement, boutons, commentaires au présent
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Requested by Clément · project thread
Contenu
PR mergées dans
env/stagingdepuis la dernière promotion (#457) :.claude/), aucun effet sur l'applicationplayers.players.deleted_at, toasts, boutons viaappButton, doublons back, un dossier par composant, sous-dossiers deDaily/Application, auth joueur dansPlayers)Migration EF
20261028162254_DropPlayerDeletedAt: supprime la colonneplayers.players.deleted_at. Appliquée par--migrate-onlydansdeploy.sh, rien à faire à la main. Suppression de colonne non réversible sans perte, mais 0 ligne renseignée en prod (vérifié par Clément le 28/10).Déploiement
deploy/: seulement des commentaires (scripts identiques à l'exécution). Rien à redéployer à la main côtédeploy/infraoudeploy/caddy.Au merge
env/stagingexiste toujours.Generated by Claude Code