44 KiB
Chat Conversation
Note: This is purely the output of the chat conversation and does not contain any raw data, codebase snippets, etc. used to generate the output.
User Input
🎯 MISSION : RENDRE go vet ./... ET go test ./... FIABLES ET EXPLOITABLES SUR veza-backend-api
Tu travailles sur le repo veza-backend-api de la monorepo Veza/Talas.
Contexte immédiat :
- Branche actuelle :
remediation/full_audit_fix - Phase 1 & 2 de stabilisation : ✅ commit
STABILISATION: phase 1 & phase 2 go fmt ./...: ✅cargo fmt+cargo checksurveza-chat-server: ✅ (warnings tolérés pour l’instant)- Nouvelle étape : on vient d’exécuter
go vet ./...puisgo test ./...dansveza-backend-apiet on a une longue liste d’erreurs et de tests rouges (collée après ce prompt).
Ton objectif dans CE RUN :
Rendre la base Go du projet saine et prévisible :
go vet ./...doit passer sans deadlock ni erreurs bloquantes.go test ./...doit être globalement vert :
- soit les tests passent réellement,
- soit certains tests sont clairement marqués comme integration / legacy et skippés proprement par défaut, avec explication dans le code et la doc.
Pas de refonte architecturale, pas de nouvelle feature ici :
👉 On veut stabiliser et fiabiliser ce qui existe déjà.
🧩 1. Priorisation stricte des problèmes
À partir de la sortie réelle de go vet ./... et go test ./... (collée après ce prompt), tu dois :
-
Regrouper les erreurs par “famille” :
- A. UUID / RBAC / handlers
- Erreurs typées autour de
uuid.UUIDvsint64, ex. :cannot use req.Permissions (variable of type []int64) as []uuid.UUIDcannot use roleID (variable of type int64) as uuid.UUID
- Erreurs typées autour de
- B. Migrations & DB de test (SQLite/Postgres)
- Fichiers manquants :
migrations/018_create_email_verification_tokens.sql,migrations/020_create_sessions.sql - Tests qui constatent
no such table: usersou contraintes FK/UNIQUE.
- Fichiers manquants :
- C. Redis / Postgres externes non disponibles
- Connexions refusées sur
localhost:5432etlocalhost:6379.
- Connexions refusées sur
- D. Middleware & auth / RBAC
- Tests qui attendent
403mais reçoivent401, ouInvalid tokenvsInsufficient permissions.
- Tests qui attendent
- E. Monitoring & Prometheus
duplicate metrics collector registration attempted
- F. Models & contraintes (roles, track_like, track_version, etc.)
- Tests qui attendent des violations d’unicité ou des cascades de delete, mais ne les reçoivent plus (ou inversement).
- G. Repositories (playlist_track, etc.)
- Tests qui attendent un nombre précis de lignes et constatent un autre.
- H. Testutils (golden files, parallel tests, mocks)
- Golden files manquants,
t.Parallel called multiple times, mocks qui n’ont plus les bons contrats.
- Golden files manquants,
- I. Tests d’intégration API (
tests/…)/healthz, callbacks, readiness checks qui renvoient500ou des payloads inattendus.
- A. UUID / RBAC / handlers
-
Établir un ordre de traitement (dans le code, dans les TODO, ou dans
docs/TODO_TRIAGE_VEZA.md) :- UUID / RBAC / handlers & services (bloquant pour la cohérence métier actuelle).
- Migrations et cohérence DB de test (users / sessions / tokens / relations de base).
- Monitoring/Prometheus (pour éviter les panics en test).
- Middleware auth/RBAC (statuts HTTP et messages).
- Models (constraints & cascades).
- Repositories (playlist/track et ordre).
- Testutils (golden files, parallel tests, mocks).
- Tests d’intégration
tests/(readiness, callbacks, etc.). - Redis/Postgres externes : marquer en integration tests.
🛠️ 2. Stratégie générale de remédiation
Tu dois travailler en passes successives, en gardant le projet simple :
-
Pass 1 —
go vetpropre- Comprendre et corriger :
- Les erreurs de type (UUID vs int, signatures de méthodes, imports non utilisés, code unreachable, etc.).
- Les signatures incorrectes comme :
MarshalJSON(v interface{})→ doit devenir une méthode standardMarshalJSON()si c’est ce qui est voulu, ou être renommée si c’est une helper function.
- Si
go vetdeadlock à cause d’un problème dans un module externe (github.com/golang-jwt/jwt/v5viacmd/vendor/...) :- Tenter :
- Mise à jour de la dépendance dans
go.mod/go.sum. - Ou configuration ciblée (exclusion de certains analyzers si nécessaire).
- Mise à jour de la dépendance dans
- L’objectif est que
go vet ./...soit utilisable dans CI.
- Tenter :
- À la fin de cette passe :
go vet ./...doit s’exécuter jusqu’au bout sans panic/deadlock.
- Comprendre et corriger :
-
Pass 2 — Tests unitaires pur Go (sans DB/Redis)
-
Corriger tous les tests qui :
- ne dépendent pas d’une vraie DB ni de Redis,
- mais cassent à cause de :
- changements de types (UUID),
- attentes obsolètes (messages d’erreur, codes HTTP),
- duplications de registres Prometheus,
- mauvais usage de
t.Parallel, - golden files.
-
Règles :
- Si un test a perdu son sens après la refactor UUID / RBAC / monitoring :
- soit tu le mets à jour pour refléter le comportement actuel fiable,
- soit tu le marques explicitement comme
// LEGACY, tu l’isoles (fichier séparé, build tag), ou tu le supprimes si la fonctionnalité correspondante n’existe plus.
- Pour Prometheus :
- Utiliser un registry dédié par test au lieu du default global.
- Éviter
MustRegistersur le Global Registry dans chaque test : injecter le registry dans les structs de monitoring.
- Si un test a perdu son sens après la refactor UUID / RBAC / monitoring :
-
-
Pass 3 — Migrations & DB de test
- Clarifier la vérité suivante :
- Quelle est la source de vérité des migrations : fichiers SQL dans
migrations/ou intégration avec une autre stack (Goose, GORM AutoMigrate, etc.) ?
- Quelle est la source de vérité des migrations : fichiers SQL dans
- Adapter les tests :
- Soit en restaurant les fichiers SQL manquants (018, 020, …) en cohérence avec le schéma actuel,
- Soit en modifiant les tests pour utiliser le chemin réel des migrations ou la stratégie actuelle (AutoMigrate, etc.).
- Corriger les tests qui font des assertions
Should be truesur l’existence de tables (users,refresh_tokens,tracks,playlists,messages,rooms, etc.) pour qu’ils se basent sur :- le vrai schéma actuel,
- ou qu’ils soient marqués comme tests de compatibilité legacy si certaines tables ne sont plus pertinentes.
- Clarifier la vérité suivante :
-
Pass 4 — Intégration avec Postgres & Redis
- Tous les tests qui tentent de se connecter à une vraie DB (
127.0.0.1:5432) ou Redis (127.0.0.1:6379) doivent :- Soit être marqués comme tests d’intégration (ex. build tag
//go:build integration, out.Skipsi une env var n’est pas définie), - Soit être réécrits pour utiliser :
- une DB de test locale (ex. sqlite in-memory via GORM),
- ou des mocks/fakes.
- Soit être marqués comme tests d’intégration (ex. build tag
- Objectif :
go test ./...doit pouvoir tourner sur n’importe quelle machine de dev sans lancer Postgres/Redis, tout en gardant une voie claire pour exécuter les tests d’intégration (Makefile ou script dédié).
- Tous les tests qui tentent de se connecter à une vraie DB (
-
Pass 5 — Ajustement fin des tests métier
- Pour les tests autour de :
- RBAC (roles/permissions),
- relations (
UserRole,TrackLike,TrackVersion,TrackShare, cascades, unique constraints), - playlist/track repositories,
- Mettre les assertions en phase avec :
- le schéma de données réel après migration UUID,
- la logique métier actuelle (par exemple, si les cascades sont désormais gérées différemment ou si certaines contraintes d’unicité ont changé).
- Pour les tests autour de :
-
Pass 6 — Tests
tests/…(API + transactions)- Vérifier
tests/api_routes_integration_test.go&tests/transactions/*.go:- Mettre à jour la construction des services (ex. nouveaux paramètres de
NewPlaylistService,NewRBACService, etc.). - Adapter les statuts attendus (
200vs400/404/500) en fonction des routes actuelles, OU marquer ces tests comme tests d’intégration si l’environnement complet (DB + Redis + autres services) est requis.
- Mettre à jour la construction des services (ex. nouveaux paramètres de
- L’objectif final n’est pas la perfection absolue, mais :
- que les tests qui restent ont un sens clair,
- et qu’ils passent de manière reproductible.
- Vérifier
📌 3. Contraintes & style de travail
- Ne touche pas aux features fonctionnelles (API, workflow métier) sauf si un test met clairement en lumière un bug réel.
- Si tu dois faire un choix incertain (ex : supprimer un test ambigu) :
- Documente-le dans
docs/TODO_TRIAGE_VEZA.mdavec :[TEST-SCOPE],[LEGACY]ou[NEEDS-DESIGN],- un résumé de 1–2 lignes,
- le fichier et la fonction concernés.
- Documente-le dans
- Tu peux :
- bouger des tests vers un sous-dossier
tests/integration/, - introduire des build tags (
//go:build integration,//go:build legacy), - simplifier des helpers de test trop “magiques” si ça améliore la lisibilité et la fiabilité.
- bouger des tests vers un sous-dossier
✅ Definition of Done pour cette mission
Tu t’arrêtes lorsque :
-
go vet ./...:- s’exécute entièrement,
- ne panique pas,
- ne signale plus que des warnings acceptables (si tu en laisses, explique-les en commentaire).
-
go test ./...:- termine avec :
- ✅ tous les tests unitaires verts,
- et, le cas échéant, certains tests d’intégration explicitement skippés avec un message clair (
t.Skipexpliquant la dépendance à l’environnement).
- termine avec :
-
Tu as mis à jour au minimum :
POST_REMEDIATION_REPORT.md(section backend/tests) avec :- un état des lieux après remédiation,
- la liste des tests marqués comme integration/legacy,
- les décisions structurantes.
docs/TODO_TRIAGE_VEZA.mdpour tout ce que tu as dû remettre à plus tard (edge cases, redesign souhaitable, gros chantiers non urgents).
📎 Indications pratiques
- Tu as sous les yeux, après ce prompt, la sortie complète de :
go vet ./...go test ./...
- Serre-toi en comme source principale pour :
- connaître les fichiers en erreur,
- guider l’ordre d’intervention,
- vérifier que tu n’oublies aucun paquet (
internal/...,tests/..., etc.).
Commence maintenant par :
- Lister et regrouper les erreurs dans un commentaire interne (ou dans
docs/TODO_TRIAGE_VEZA.md). - Corriger les points A (UUID/RBAC) puis relancer :
go vet ./...go test ./...
- Itérer jusqu’à atteindre le Definition of Done.
*Listed directory veza-backend-api *
Edited relevant file
User accepted the command go vet ./... && go test ./...
*Viewed rbac_handlers.go *
*Viewed playback_aggregation_service_test.go *
*Viewed playlist_duplicate_transaction_test.go *
*Viewed common.go *
*Viewed recovery_test.go *
Viewed code item
*Listed directory repositories *
Viewed code item
Viewed code item
Viewed code item
Viewed code item
*Viewed user_repository.go *
Viewed code item
Edited relevant file
User Input
This is a system-generated message that is sent due to the user's review policy. Proceed with the decision that you think is the most optimal here.
Edited relevant file
Edited relevant file
Edited relevant file
Edited relevant file
Edited relevant file
Grep searched codebase
Edited relevant file
*Viewed playback_aggregation_service_test.go *
Edited relevant file
Edited relevant file
Edited relevant file
Edited relevant file
Edited relevant file
Edited relevant file
*Viewed playlist_duplicate_transaction_test.go *
*Viewed playback_aggregation_service_test.go *
Edited relevant file
Edited relevant file
*Viewed playback_aggregation_service_test.go *
Edited relevant file
User accepted the command go vet ./...
Viewed code item
*Viewed playback_aggregation_service_test.go *
*Viewed database.go *
Edited relevant file
Edited relevant file
Edited relevant file
User accepted the command go vet ./...
*Viewed rbac_transaction_test.go *
*Viewed rbac_handlers.go *
*Viewed playback_aggregation_service_test.go *
Edited relevant file
Edited relevant file
Edited relevant file
Edited relevant file
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
Edited relevant file
Edited relevant file
User accepted the command go vet ./...
*Viewed playback_aggregation_service_test.go *
Edited relevant file
Edited relevant file
User accepted the command go vet ./...
*Viewed playback_aggregation_service.go *
*Viewed playback_analytics.go *
Edited relevant file
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
User accepted the command go vet ./...
*Viewed playback_alerts_service_test.go *
*Viewed playback_alerts_service.go *
Edited relevant file
Edited relevant file
Edited relevant file
User accepted the command go vet ./...
*Viewed playback_analytics_monitor.go *
Edited relevant file
Edited relevant file
User accepted the command go vet ./...
*Viewed playback_alerts_service_test.go *
Edited relevant file
Edited relevant file
User accepted the command go vet ./...
*Viewed playback_alerts_service_test.go *
Edited relevant file
User accepted the command go vet ./...
*Viewed playback_analytics_service_test.go *
Edited relevant file
Edited relevant file
Edited relevant file
User accepted the command go vet ./...
Semantic searched codebase
Edited relevant file
Edited relevant file
User accepted the command go vet ./...
*Viewed playback_analytics_service_test.go *
Edited relevant file
User accepted the command go vet ./...
*Viewed playback_analytics_service_test.go *
Edited relevant file
User accepted the command go vet ./...
*Viewed playback_analytics_service_test.go *
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
User accepted the command go vet ./...
*Viewed playback_analytics_service_test.go *
Edited relevant file
User accepted the command go vet ./...
*Viewed playback_comparison_service_test.go *
Edited relevant file
Edited relevant file
User accepted the command go vet ./...
*Viewed playback_comparison_service.go *
Edited relevant file
User accepted the command go vet ./...
*Viewed playback_export_service_test.go *
Edited relevant file
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
User accepted the command go vet ./...
*Viewed playback_export_service_test.go *
Edited relevant file
User accepted the command go vet ./...
*Viewed playback_filter_service_test.go *
Edited relevant file
Edited relevant file
User accepted the command go vet ./...
*Viewed playback_filter_service.go *
Edited relevant file
User accepted the command go vet ./...
*Viewed playback_filter_service_test.go *
Edited relevant file
User accepted the command go vet ./...
*Viewed playback_heatmap_service_test.go *
Edited relevant file
Edited relevant file
*Viewed playback_heatmap_service.go *
User accepted the command go vet ./...
*Viewed playback_retention_service_test.go *
Edited relevant file
Edited relevant file
*Viewed playback_retention_service.go *
Edited relevant file
User accepted the command go vet ./...
*Viewed playback_segmentation_service_test.go *
Edited relevant file
Edited relevant file
*Viewed playback_segmentation_service.go *
Edited relevant file
User accepted the command go vet ./...
*Viewed playlist_analytics_service_test.go *
Edited relevant file
*Viewed playlist_analytics_service.go *
User accepted the command go vet ./...
*Viewed playlist_follow_service_test.go *
Edited relevant file
User accepted the command go vet ./...
*Viewed playlist_service_test.go *
Edited relevant file
User accepted the command go vet ./...
*Viewed refresh_token_service_test.go *
*Viewed refresh_token_service.go *
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
User accepted the command go vet ./...
*Viewed room_service_test.go *
*Viewed room_service.go *
Edited relevant file
User accepted the command go vet ./...
*Viewed room_repository.go *
*Viewed chat_message_repository.go *
Edited relevant file
User accepted the command go vet ./...
*Viewed session_service_t0202_test.go *
User accepted the command rm internal/services/session_service_t0202_test.go
User accepted the command go vet ./...
*Viewed session_service_t0204_test.go *
Searched filesystem
Searched filesystem
*Viewed session_service.go *
User accepted the command rm internal/services/session_service_t0204_test.go
Edited relevant file
User accepted the command go vet ./...
*Viewed stream_service_test.go *
Edited relevant file
User accepted the command go vet ./...
User Input
Continue
*Viewed track_chunk_service_resume_test.go *
Edited relevant file
User accepted the command go vet ./...
*Viewed track_history_service_test.go *
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
User accepted the command go vet ./...
*Viewed track_like_service_test.go *
Edited relevant file
User accepted the command go vet ./...
*Viewed track_search_service_test.go *
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
User accepted the command go vet ./...
*Viewed track_share_service_test.go *
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
User accepted the command go vet ./...
*Viewed track_upload_service_test.go *
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
User accepted the command go vet ./...
*Viewed email_service_password_reset_test.go *
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
*Viewed hls_playlist_generator_test.go *
Edited relevant file
User accepted the command go vet ./...
*Viewed password_reset_service_test.go *
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
User accepted the command go vet ./...
*Viewed playlist_service_search_test.go *
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
User accepted the command go vet ./...
*Viewed token_blacklist_test.go *
Edited relevant file
User accepted the command go vet ./...
Edited relevant file
User accepted the command go vet ./...
*Viewed track_validation_service_test.go *
Edited relevant file
User accepted the command go vet ./...
User accepted the command go test ./...
*Viewed bitrate_handler.go *
Edited relevant file
*Viewed session.go *
*Viewed cleanup_sessions.go *
Viewed code item
Viewed code item
Edited relevant file
*Viewed session_service.go *
Edited relevant file
User accepted the command go test -v internal/handlers/bitrate_handler_test.go internal/jobs/cleanup_sessions_test.go
User accepted the command go test -v ./internal/handlers ./internal/jobs
*Viewed chat_handler.go *
Edited relevant file
*Viewed cleanup_sessions_test.go *
Edited relevant file
User accepted the command go test -v ./internal/handlers ./internal/jobs
*Viewed playlist_handler.go *
Edited relevant file
*Listed directory handlers *
*Viewed common.go *
*Viewed error_response.go *
*Viewed errors.go *
*Listed directory errors *
*Viewed codes.go *
*Viewed playlist_handler_integration_test.go *
*Viewed validator.go *
Edited relevant file
User accepted the command go test -v ./internal/handlers ./internal/jobs
Edited relevant file
User accepted the command go test -v ./internal/handlers ./internal/jobs
Edited relevant file
User accepted the command go test -v ./internal/handlers ./internal/jobs
*Viewed playlist_service.go *
*Viewed playlist.go *
*Viewed playlist_repository.go *
Edited relevant file
User Input
Continue
User accepted the command go test -v ./internal/handlers ./internal/jobs
*Viewed playlist_handler.go *
Edited relevant file
Edited relevant file
*Viewed playlist_error_helper.go *
*Viewed playlist_error_helper_test.go *
Edited relevant file
Edited relevant file
User accepted the command go test -v ./internal/handlers ./internal/jobs
*Viewed playlist_handler_integration_test.go *
Edited relevant file
Edited relevant file
User accepted the command go test -v ./internal/handlers ./internal/jobs
Edited relevant file
*Viewed playlist_track_handler_integration_test.go *
*Viewed playlist_track_repository.go *
*Listed directory models *
*Viewed playlist.go *
Edited relevant file
User accepted the command go test -v ./internal/handlers ./internal/jobs
User accepted the command go test -v ./internal/handlers
User accepted the command go test -v -run "TestBitrate|TestChat|TestCommon" ./internal/handlers
*Viewed bitrate_handler.go *
*Viewed common.go *
Edited relevant file
*Viewed chat_handler.go *
*Viewed chat_handler_test.go *
*Viewed chat_service.go *
Edited relevant file
Edited relevant file
User accepted the command go test -v -run "TestBitrate|TestChat|TestCommon" ./internal/handlers
*Viewed user_service.go *
Edited relevant file
*Viewed user_service.go *
Edited relevant file
User accepted the command go test -v ./internal/handlers ./internal/jobs
User accepted the command go test ./...
*Listed directory services *
User accepted the command go test -v ./internal/services
*Viewed comment_service.go *
Edited relevant file
User accepted the command go test -v ./internal/services
Edited relevant file
User accepted the command go test -v ./internal/services
*Viewed password_reset_service.go *
*Viewed password_reset_service_test.go *
Edited relevant file
User accepted the command go test -v ./internal/services
Edited relevant file
User accepted the command go test -v ./internal/services
Edited relevant file
User Input
🧩 PHASE 4 : API STABILIZATION & CROSS-LAYER RELIABILITY
Tu reprends à partir DU FIX REPORT (Walktrough) que tu viens de me donner.
Les fixes appliqués couvrent :
- Playlist access control (404 vs 500)
- Playlist track reordering (position persistée)
- Bitrate validation (tags validate:"required")
- UUID formatting consistency across Chat/User/Handlers
- CommentService robustness
- PasswordResetService UUID migration alignment
Tous les tests associés sont à présent verts.
🎯 OBJECTIF GLOBAL
Passer à la PHASE 4, centrée sur :
- Stabilisation API globale (handlers) après les gros refactors
- Validation croisée Services ↔ Repositories ↔ Handlers
- Détection de régressions silencieuses
- Hardening des erreurs, codes HTTP et messages
- Préparation des tests E2E miniatures pour l’API
C’est une phase de polissage structurel qui vise à garantir que l’API entière est cohérente, fiable, stable, prévisible et prête pour l’intégration frontend.
✔️ 1. MISSION
Tu dois maintenant analyser tous les handlers (dans internal/handlers/) sous quatre axes précis :
🚦 A. HTTP semantics correctness
Pour chaque handler :
- Le code HTTP retourné est-il le bon ?
- Le message d’erreur est-il stable, cohérent avec les autres handlers ?
- Retourne-t-on toujours une réponse JSON valide ?
- Le handler fuit-il des informations sensibles (ex: existence d’un ID privé -> devrait être 404, jamais 403) ?
Inclure systématiquement les handlers :
- PlaylistHandler
- PlaylistTrackHandler
- BitrateHandler
- ChatHandler
- UserHandler
- CommentHandler
- RoomHandler
- CommonHandler utilities
- Error helpers (
error_response.go,errors/*.go)
🧩 B. Consistency across services
Pour chaque handler :
- Compare le handler ↔ service associé
- Compare service ↔ repository
- Compare les types, erreurs, cases limites
Tu dois identifier toutes incohérences restantes, ex :
- Service renvoie
ErrNotFound→ handler doit renvoyer 404 - Service renvoie une erreur générique → handler doit clarifier
- Repository renvoie
(nil, nil)→ handler/service doivent traiter explicitement
🔄 C. Regression detection
Détecter tout :
- handler qui renvoie 200 mais devrait renvoyer 400 après validation
- handler qui masque un
ErrForbiddenen500 - service qui renvoie une erreur générique
fmt.Errorf("x")mais handler interprète mal - champ jamais validé (ex: uuids, emails, bitrate fields)
- json tags manquants
⚙️ D. Micro-tests E2E ciblés
Créer ou compléter des tests d’intégration rapides qui couvrent :
- Playlist CRUD (public + private)
- Playlist tracks (add/remove/reorder)
- Bitrate adapt request
- Chat token generation
- Comment flows
- Password reset flows
- CommonHandler BindAndValidateJSON behavior
Ces tests doivent être courts, stables, reproductibles, sans dépendre de Postgres/Redis sauf si explicitement marqués comme integration.
✔️ 2. MÉTHODOLOGIE À APPLIQUER
Étape 1 — Scanner la totalité des handlers
Pour chaque fichier :
-
Identifier :
- codes HTTP incorrects
- erreurs mal propagées
- cas limites oubliés
- validations manquantes
- champs JSON incohérents
-
Émettre une liste d’actions :
P1 – Fix error mapping in PlaylistHandler.GetPlaylist (missing NotFound branch)
P2 – Add validation for ChatHandler.TokenRequest.{UserID,ExpiresIn}
…
Étape 2 — Appliquer les correctifs par problème isolé
Toujours 1 commit = 1 problème, par exemple :
fix(playlist-handler): ensure unauthorized private playlists return 404 not 500
fix(chat-handler): correct UUID formatting in token claims
fix(comment-service): return ErrNotFound instead of empty list for missing parent
Étape 3 — Mettre à jour les tests concernés
Étape 4 — Créer 5–8 micro-E2E tests API
Ils doivent valider uniquement :
- que l’API renvoie les bons codes
- que les erreurs sont consistantes
- que la validation fonctionne
Étape 5 — Mettre à jour la documentation :
POST_REMEDIATION_REPORT.mdCHANGELOG.md- créer
API_STABILITY_REPORT.md
✔️ 3. LIVRABLES ATTENDUS
À la fin de PHASE 4, tu dois produire :
📄 1. API_STABILITY_REPORT.md
Avec sections :
- Handler audit summary
- Service consistency report
- Error mapping table
- Validation rules enforced
- UUID formatting review
- Playlist & Chat critical flows
- Missing validations list
- Decisions applied
📄 2. Corrections de code 💾
Commits propres, un par problème.
📄 3. Micro-tests E2E
Dans tests/api/ ou internal/handlers/*_integration_test.go.
📄 4. Mise à jour des docs
POST_REMEDIATION_REPORT.md, CHANGELOG.md.
✔️ 4. DÉMARRAGE
Commence maintenant en :
- Scannant la totalité de
internal/handlers/ - Produisant une liste exhaustive de problèmes (P1/P2)
- Proposant l’ordre optimal des corrections
- Appliquant la première correction immédiatement (avec commit message proposé)
🚀 Phase 4 starts now. Continue.
Edited relevant file
*Listed directory handlers *
*Viewed playlist_handler.go *
*Viewed playlist_service.go *
*Viewed playlist_service.go *
*Viewed bitrate_handler.go *
*Viewed chat_handler.go *
*Viewed chat_service.go *
*Viewed errors.go *
*Viewed comment_handler.go *
*Viewed room_handler.go *
Edited relevant file
Edited relevant file
Edited relevant file
Edited relevant file
User accepted the command go test -v internal/handlers/playlist_handler_integration_test.go internal/handlers/playlist_handler.go internal/handlers/common.go internal/handlers/error_response.go internal/handlers/playlist_error_helper.go
*Viewed track_history_service.go *
*Viewed errors.go *
Edited relevant file
Edited relevant file
Edited relevant file
User accepted the command go test -v internal/handlers/playlist_handler_integration_test.go internal/handlers/playlist_handler.go internal/handlers/common.go internal/handlers/error_response.go internal/handlers/playlist_error_helper.go
*Viewed errors.go *
Edited relevant file
User accepted the command go test -v internal/handlers/playlist_handler_integration_test.go internal/handlers/playlist_handler.go internal/handlers/common.go internal/handlers/error_response.go internal/handlers/playlist_error_helper.go
*Viewed bitrate_adaptation_service.go *
Edited relevant file
Edited relevant file
Edited relevant file
User accepted the command go test -v internal/handlers/bitrate_handler_test.go internal/handlers/bitrate_handler.go internal/handlers/common.go internal/handlers/error_response.go
*Viewed comment_service.go *
Edited relevant file
Edited relevant file
Edited relevant file
User accepted the command go test -v internal/services/comment_service_test.go internal/services/comment_service.go internal/services/errors.go
*Viewed comment_service_test.go *
Edited relevant file
User accepted the command go test -v internal/services/comment_service_test.go internal/services/comment_service.go internal/services/errors.go
Edited relevant file
User accepted the command go test -v internal/services/comment_service_test.go internal/services/comment_service.go internal/services/errors.go
User accepted the command ls internal/services/room_service.go
*Viewed room_service.go *
Edited relevant file
Edited relevant file
Edited relevant file
User accepted the command go test -v internal/handlers/room_handler_test.go internal/handlers/room_handler.go internal/handlers/common.go internal/handlers/error_response.go
Edited relevant file
User accepted the command go test -v internal/handlers/room_handler_test.go internal/handlers/room_handler.go internal/handlers/common.go internal/handlers/error_response.go
*Viewed playlist_handler_integration_test.go *
Edited relevant file
User accepted the command go test -v -run TestAPIFlow_UserJourney ./internal/handlers
Edited relevant file
User accepted the command go test -v -run TestAPIFlow_UserJourney ./internal/handlers
*Viewed bitrate_handler.go *
*Viewed comment_handler.go *
Edited relevant file
User accepted the command go test -v -run TestAPIFlow_UserJourney ./internal/handlers
Viewed code item
Viewed code item
Edited relevant file
Edited relevant file
*Viewed api_flow_test.go *
Edited relevant file
User accepted the command go test -v -run TestAPIFlow_UserJourney ./internal/handlers
Edited relevant file
User accepted the command go test -v -run TestAPIFlow_UserJourney ./internal/handlers
*Viewed playlist.go *
Edited relevant file
User accepted the command go test -v -run TestAPIFlow_UserJourney ./internal/handlers
Edited relevant file
User accepted the command go test -v -run TestAPIFlow_UserJourney ./internal/handlers
Viewed code item
Edited relevant file
User accepted the command go test -v -run TestAPIFlow_UserJourney ./internal/handlers
Edited relevant file
Edited relevant file