First-attempt commit3a5c6e184only captured the .gitignore change; the pre-commit hook silently dropped the 343 staged moves/deletes during lint-staged's "no matching task" path. This commit re-applies the intended J1 content on top ofbec75f143(which was pushed in parallel). Uses --no-verify because: - J1 only touches .md/.json/.log/.png/binaries — zero code that would benefit from lint-staged, typecheck, or vitest - The hook demonstrated it corrupts pure-rename commits in this repo - Explicitly authorized by user for this one commit Changes (343 total: 169 deletions + 174 renames): Binaries purged (~167 MB): - veza-backend-api/{server,modern-server,encrypt_oauth_tokens,seed,seed-v2} Generated reports purged: - 9 apps/web/lint_report*.json (~32 MB) - 8 apps/web/tsc_*.{log,txt} + ts_*.log (TS error snapshots) - 3 apps/web/storybook_*.json (1375+ stored errors) - apps/web/{build_errors*,build_output,final_errors}.txt - 70 veza-backend-api/coverage*.out + coverage_groups/ (~4 MB) - 3 veza-backend-api/internal/handlers/*.bak Root cleanup: - 54 audit-*.png (visual regression baselines, ~11 MB) - 9 stale MVP-era scripts (Jan 27, hardcoded v0.101): start_{iteration,mvp,recovery}.sh, test_{mvp_endpoints,protected_endpoints,user_journey}.sh, validate_v0101.sh, verify_logs_setup.sh, gen_hash.py Session docs archived (not deleted — preserved under docs/archive/): - 78 apps/web/*.md → docs/archive/frontend-sessions-2026/ - 43 veza-backend-api/*.md → docs/archive/backend-sessions-2026/ - 53 docs/{RETROSPECTIVE_V,SMOKE_TEST_V,PLAN_V0_,V0_*_RELEASE_SCOPE, AUDIT_,PLAN_ACTION_AUDIT,REMEDIATION_PROGRESS}*.md → docs/archive/v0-history/ README.md and CONTRIBUTING.md preserved in apps/web/ and veza-backend-api/. Note: The .gitignore rules preventing recurrence were already pushed in3a5c6e184and remain in place — this commit does not modify .gitignore. Refs: AUDIT_REPORT.md §11
4.8 KiB
PR7b — Resilience & Performance (PARTIAL)
Résumé
Cette PR commence les corrections pour MOD-P2-006 et MOD-P2-003 :
- MOD-P2-006: Retry HTTP externes ✅ (complété pour oauth_service)
- MOD-P2-003: AppError partout ⚠️ (partiellement complété - ~10 occurrences converties)
- MOD-P2-007: Circuit breakers ⏳ (non commencé - documenté)
- MOD-P2-008: File I/O asynchrone ⏳ (non commencé - documenté)
Note: PR7b est partiellement complétée. Les items restants sont documentés dans docs/PR7B_REMAINING_WORK.md.
Items Corrigés (Partiellement)
MOD-P2-006: Retry HTTP Externes ✅
Fichiers:
internal/services/oauth_service.go:311-332(modifié)
Problème:
- Pas de retry dans
oauth_service.gopour requêtes OAuth externes
Fix:
- Retry avec backoff exponentiel: Ajouté dans
GetOAuthUser()- 3 tentatives maximum
- Backoff exponentiel: 1s, 2s, 4s
- Gestion d'erreurs améliorée
État:
- ✅
stream_service.go: Déjà avait retry - ✅
webhook_service.go: Déjà avait retry - ✅
oauth_service.go: Retry ajouté
Validation:
go build ./internal/services
# ✅ Succès
MOD-P2-003: AppError Partout ⚠️ (Partiel)
Fichiers:
internal/core/track/handler.go(modifié - quelques occurrences)
Problème:
- 53 occurrences de
gin.H{"error":...}danshandler.go - Incohérence format erreur
Fix:
-
Quelques occurrences converties:
LikeTrack: Converti versrespondWithErrorUnlikeTrack: Converti versrespondWithErrorGetTrackLikes: Converti versrespondWithErrorGetTrackByShareToken: Converti versrespondWithError
-
Helper existant:
respondWithErrorutilise déjàRespondWithAppError
État:
- ✅ ~10 occurrences converties
- ⏳ ~45 occurrences restantes
Recommandation:
- Convertir les occurrences restantes progressivement
- Prioriser les handlers les plus utilisés
Validation:
go build ./internal/core/track
# ✅ Succès
grep -n "gin\.H.*error" internal/core/track/handler.go | wc -l
# → ~45 occurrences restantes
Items Non Commencés (Documentés)
MOD-P2-007: Circuit Breakers ⏳
Status: Documenté dans docs/PR7B_REMAINING_WORK.md
Action requise:
- Ajouter dépendance
github.com/sony/gobreaker - Créer wrapper pour services externes
- Intégrer dans stream_service, oauth_service
- Tests unitaires
Effort estimé: 4h
MOD-P2-008: File I/O Asynchrone ⏳
Status: Documenté dans docs/PR7B_REMAINING_WORK.md
Action requise:
- Rendre
os.Createetio.Copyasynchrones - Utiliser goroutines avec channels
- Gérer synchronisation
- Tests unitaires
Effort estimé: 4h
Fichiers Modifiés
-
internal/services/oauth_service.go- Ajout retry avec backoff exponentiel dans
GetOAuthUser()(lignes 311-332)
- Ajout retry avec backoff exponentiel dans
-
internal/core/track/handler.go- Conversion de quelques occurrences
gin.H{"error":...}versrespondWithError - Handlers: LikeTrack, UnlikeTrack, GetTrackLikes, GetTrackByShareToken
- Conversion de quelques occurrences
-
docs/PR7B_REMAINING_WORK.md(nouveau)- Documentation des items restants
Commandes de Validation
Build
# Compilation
go build ./internal/services
# ✅ Succès
go build ./internal/core/track
# ✅ Succès
# Build complet
go build ./cmd/api/main.go
# ✅ Succès
Tests
# Tous les tests
go test ./... -count=1 -short
# ✅ Tests unitaires passent
Détails Techniques
Corrections Apportées
-
MOD-P2-006 (Retry HTTP):
- Pattern: Retry avec backoff exponentiel (1s, 2s, 4s)
- Tentatives: 3 maximum
- Gestion erreurs: Retourne erreur après toutes les tentatives
-
MOD-P2-003 (AppError):
- Helper: Utilise
respondWithErrorqui appelleRespondWithAppError - Conversion: Quelques handlers critiques convertis
- Reste: ~45 occurrences à convertir progressivement
- Helper: Utilise
Risques / Limitations
-
MOD-P2-003 partiel: Beaucoup d'occurrences restantes
- Impact: Incohérence format erreur persiste
- Mitigation: Conversion progressive, prioriser handlers critiques
-
MOD-P2-007 et MOD-P2-008 non commencés:
- Impact: Améliorations de qualité/performance non implémentées
- Mitigation: Documentés pour phase ultérieure
Prochaines Étapes
- ⏳ Compléter MOD-P2-003 (convertir occurrences restantes)
- ⏳ Implémenter MOD-P2-007 (circuit breakers)
- ⏳ Implémenter MOD-P2-008 (file I/O asynchrone)
Note: Les items P2 restants sont des améliorations de qualité/performance, pas critiques pour la production. Le système est fonctionnel avec les corrections P0/P1 complétées.
Statut: ⚠️ PARTIAL - Some items completed, others documented for future work
Effort: ~3h (sur ~17h estimé)
Breaking Changes: Aucun