Phase 7 kickoff — Retry Transfers, Admin Dashboard & Deep Health. Absorbs v0.604 backlog. Updates SCOPE_CONTROL, PROJECT_STATE, .cursorrules.
4.5 KiB
4.5 KiB
Smoke Test v0.701 — Retry Transfers, Admin Dashboard & Deep Health
Objectif : Valider toutes les fonctionnalités v0.701 et vérifier l'absence de régressions.
Prérequis
- Backend Go compile sans erreur (
go build ./...) - Frontend build OK (
npm run builddansapps/web) - Base de données migrée (migration 116 appliquée)
- Variables d'environnement configurées :
TRANSFER_RETRY_ENABLED,TRANSFER_RETRY_MAX,TRANSFER_RETRY_INTERVAL_MIN
1. Transfer Retry Worker (Lot R1)
1.1 Retry automatique
- Créer un SellerTransfer avec status
faileden DB - Démarrer le backend avec
TRANSFER_RETRY_ENABLED=true - Le worker retente le transfert dans le délai configuré
- En cas de succès : status passe à
completed, retry_count incrémenté - En cas d'échec : retry_count incrémenté, next_retry_at calculé (backoff exponentiel)
1.2 Max retries
- Un transfert avec retry_count >= max_retries n'est plus retenté
- Status passe à
permanently_failed
1.3 Backoff exponentiel
- Délai entre retries augmente : base * 2^retry_count
- next_retry_at est correctement calculé et stocké
1.4 Prometheus metrics
veza_transfer_retry_totalest incrémenté à chaque tentativeveza_transfer_retry_successest incrémenté en cas de succèsveza_transfer_retry_failuresest incrémenté en cas d'échec
2. Admin Transfers Dashboard (Lot A1)
2.1 Backend
GET /admin/transfersretourne la liste paginée (200)- Filtre par status fonctionne (
?status=failed) - Filtre par seller_id fonctionne (
?seller_id=uuid) - Filtre par date range fonctionne (
?from=...&to=...) - Pagination fonctionne (
?limit=10&offset=0) - Non-admin reçoit 403
2.2 Retry manuel
POST /admin/transfers/:id/retryretry un transfert failed (200)- Transfer non-failed retourne erreur appropriée (400)
- Transfer inexistant retourne 404
- Non-admin reçoit 403
2.3 Frontend
- Route
/admin/transfersest accessible pour un admin - Table affiche : seller, order, montant net, fee, status, retry_count, date
- Badge de status coloré (completed=vert, failed=rouge, permanently_failed=gris)
- Bouton Retry visible uniquement sur les transferts
failed - Clic Retry → appel API → table rafraîchie
- État Loading (skeleton) visible au chargement
- État Empty visible si aucun transfert
3. Deep Health Checks (Lot H1)
3.1 Endpoint
GET /health/deepretourne JSON avec status global et par service- DB healthy → ping réussi, latency_ms renseigné
- Redis healthy → ping réussi, latency_ms renseigné
- S3 indisponible → status
degraded(pas unhealthy), error renseigné - DB indisponible → status
unhealthy
3.2 Startup validation
- JWT_SECRET vide → log fatal + exit
- DATABASE_URL invalide → log fatal + exit
- PLATFORM_FEE_RATE > 1 → log fatal + exit
- STRIPE_CONNECT_ENABLED=true sans STRIPE_SECRET_KEY → log warning
- En mode dev : warnings au lieu de fatals pour configs non-critiques
3.3 Prometheus
veza_health_check_statusgauge exposé par service (1=healthy, 0=unhealthy)
4. Documentation API (Lot D1)
docs/API_REFERENCE.mdexiste et couvre les endpoints clés- Exemples curl pour auth (login, register)
- Exemples curl pour marketplace (products, orders)
- Exemples curl pour admin (transfers)
- Exemples curl pour health (deep)
docs/MIGRATIONS.mdinclut migration 116
5. Flux existants (non-régressions)
5.1 Commerce
- Création de produit marketplace fonctionne
- Création de commande fonctionne
- Webhook payment succeeded → licences créées + transfer déclenché
5.2 Seller
- GET /sell/transfers retourne l'historique du vendeur (inchangé)
- SellerDashboard affiche les transferts (inchangé)
5.3 Auth
- Login/register fonctionnent
- JWT refresh fonctionne
5.4 Backend
go test ./...— tous les tests passent- GET /health retourne 200 (endpoint basique inchangé)
5.5 Frontend
npm run build— build OK- Storybook : AdminTransfersView stories sans erreur
6. Documentation & Release
- CHANGELOG.md mis à jour avec section v0.701
- PROJECT_STATE.md mis à jour
- FEATURE_STATUS.md mis à jour
- SCOPE_CONTROL.md pointe vers v0.702 (prochaine)
- RETROSPECTIVE_V0701.md créé
- Tag
v0.701créé