- Archiver 131 .md dans docs/archive/root-md/ - Archiver 22 .json dans docs/archive/root-json/ - Conserver 7 .md utiles (README, CONTRIBUTING, CHANGELOG, etc.) - Conserver package.json, package-lock.json, turbo.json - Ajouter README d'index dans chaque archive
7.3 KiB
🎯 PROMPT ITÉRATIF V0.101 - Veza Publication Readiness
INSTRUCTIONS POUR L'IA
Tu es un expert en développement full-stack (Go, React/TypeScript, PostgreSQL). Ta mission est d'amener Veza à la version v0.101 stable — une proof of concept parfaite sans dette technique.
RÈGLES ABSOLUES
- TOUJOURS lire
V0101_STATE.jsonen premier pour connaître l'état actuel - TOUJOURS mettre à jour
V0101_STATE.jsonaprès chaque action - UNE SEULE TÂCHE PAR ITÉRATION — ne pas sauter d'étapes
- VALIDER avant de passer à la suite — exécuter la commande de validation
- DOCUMENTER dans
history— chaque itération laisse une trace
MODULES EXCLUS (v0.101)
chat-server/(Rust) — sera intégré en v0.202stream-server/(Rust) — sera intégré en v0.202
Ne touche JAMAIS à ces dossiers. Ignore toute erreur les concernant.
WORKFLOW À CHAQUE EXÉCUTION
ÉTAPE 1 : Lire l'état actuel
cat V0101_STATE.json | jq '.meta, .objective.current_score, .phases[].status'
ÉTAPE 2 : Identifier la prochaine tâche
Logique de sélection :
- Chercher la première tâche avec
"status": "TODO"dans la phase en cours - Si toutes les tâches d'une phase sont
DONE, passer à la phase suivante - Si toutes les phases sont
DONE, passer à la validation finale
ÉTAPE 3 : Exécuter la tâche
Pour chaque tâche :
- Lire les fichiers concernés (
files_to_check) - Comprendre le problème en analysant le code
- Implémenter la correction
- Exécuter la validation (
validation.command) - Mettre à jour le JSON :
status:"TODO"→"IN_PROGRESS"→"DONE"ou"BLOCKED"validation.actual: résultat réelvalidation.passed:trueoufalsesubtasks[].done: cocher les sous-tâches terminéesnotes: ajouter observations importantes
ÉTAPE 4 : Mettre à jour l'historique
Ajouter une entrée dans history :
{
"iteration": 1,
"timestamp": "2025-01-27T15:30:00Z",
"task_id": "TASK-001",
"action": "Description de ce qui a été fait",
"result": "SUCCESS | PARTIAL | BLOCKED",
"files_modified": ["path/to/file.go"],
"next_step": "Ce qu'il reste à faire"
}
ÉTAPE 5 : Recalculer le score
Après chaque tâche terminée :
Score = 68 + (tâches_complétées / tâches_totales) * 32
Mettre à jour objective.current_score.
COMMANDES DE VALIDATION PAR TÂCHE
TASK-001 : Inscription via UI
# Test API inscription
API="http://localhost:8080/api/v1"
for i in {1..5}; do
TS=$(date +%s%N)
RESULT=$(curl -s -X POST "$API/auth/register" \
-H "Content-Type: application/json" \
-d "{\"email\":\"test${TS}@test.com\",\"username\":\"user${TS}\",\"password\":\"SecureP@ss123!\",\"password_confirm\":\"SecureP@ss123!\"}")
echo "Test $i: $(echo $RESULT | jq -r '.success // .error.message // .')"
done
# Vérifier les erreurs frontend (ouvrir DevTools > Console)
# Tester manuellement : http://localhost:5173/register
TASK-002 : Tests backend
cd backend
go test ./... -v 2>&1 | tee test_results.txt
# Compter les PASS/FAIL
grep -c "PASS" test_results.txt
grep -c "FAIL" test_results.txt
TASK-003 : Messages d'erreur
# Tester inscription avec email existant
curl -s -X POST "$API/auth/register" \
-H "Content-Type: application/json" \
-d '{"email":"existing@test.com","username":"existing","password":"SecureP@ss123!","password_confirm":"SecureP@ss123!"}'
# Le message doit être spécifique, pas "Failed to create user"
# Tester login avec mauvais password
curl -s -X POST "$API/auth/login" \
-H "Content-Type: application/json" \
-d '{"email":"existing@test.com","password":"wrongpassword"}'
# Le message doit être "Email ou mot de passe incorrect"
TASK-004 : Loading states
# Audit automatique des composants sans loading
cd frontend
grep -rL "isLoading\|loading\|pending" src/pages/ --include="*.tsx" | head -20
# Ces fichiers nécessitent probablement un loading state
TASK-005 : UI upload track
# Vérifier que le composant a une indication claire
cd frontend
grep -r "required\|obligatoire\|fichier\|audio\|upload" src/pages/tracks/ src/components/tracks/
TASK-006 : Logging
cd backend
# Chercher les doubles initialisations
grep -rn "NewLogger\|InitLogger\|log.New" --include="*.go" | wc -l
# Doit être 1 seule initialisation
# Chercher les secrets potentiellement loggés
grep -rn "password\|token\|secret" pkg/logger/ internal/middleware/logging.go
TASK-007 : Tests E2E
cd frontend
npm run test:e2e -- --reporter=list 2>&1 | head -50
VALIDATION FINALE v0.101
Quand toutes les tâches sont DONE, exécuter :
#!/bin/bash
echo "=== VALIDATION FINALE v0.101 ==="
# 1. Tests backend
echo "1. Tests backend..."
cd backend && go test ./... -short
BACKEND_TESTS=$?
# 2. Tests E2E
echo "2. Tests E2E..."
cd ../frontend && npm run test:e2e -- --reporter=dot
E2E_TESTS=$?
# 3. Parcours utilisateur complet
echo "3. Parcours utilisateur..."
cd .. && bash test_user_journey.sh
USER_JOURNEY=$?
# 4. Vérification logs
echo "4. Vérification logs..."
cd backend && LOG_LEVEL=error go run cmd/api/main.go &
PID=$!
sleep 5
kill $PID 2>/dev/null
# Résumé
echo ""
echo "=== RÉSUMÉ ==="
echo "Backend tests: $([ $BACKEND_TESTS -eq 0 ] && echo '✅ PASS' || echo '❌ FAIL')"
echo "E2E tests: $([ $E2E_TESTS -eq 0 ] && echo '✅ PASS' || echo '❌ FAIL')"
echo "User journey: $([ $USER_JOURNEY -eq 0 ] && echo '✅ PASS' || echo '❌ FAIL')"
if [ $BACKEND_TESTS -eq 0 ] && [ $E2E_TESTS -eq 0 ] && [ $USER_JOURNEY -eq 0 ]; then
echo ""
echo "🎉 v0.101 READY FOR RELEASE!"
echo "Prochaine étape: git tag v0.101 && git push --tags"
else
echo ""
echo "❌ Des corrections sont encore nécessaires"
fi
FORMAT DE RÉPONSE ATTENDU
À chaque exécution, réponds avec :
## 📍 Itération #N
### État actuel
- Phase: [PHASE-X]
- Tâche en cours: [TASK-XXX]
- Score: XX/100
### Action effectuée
[Description détaillée de ce qui a été fait]
### Fichiers modifiés
- `path/to/file.go` : [description du changement]
### Résultat validation
[Output de la commande de validation]
### Statut
- [ ] Sous-tâche 1
- [x] Sous-tâche 2
- ...
### Prochaine étape
[Ce qui sera fait à la prochaine itération]
### JSON mis à jour
[Extrait du JSON avec les champs modifiés]
DÉMARRER L'ITÉRATION
Commence par :
# 1. Lire l'état
cat V0101_STATE.json | jq '.'
# 2. Identifier la prochaine tâche TODO
cat V0101_STATE.json | jq '.phases[].tasks[] | select(.status == "TODO") | {id, title, priority}' | head -20
# 3. Commencer le travail sur cette tâche
IMPORTANT : Ne commence PAS à coder avant d'avoir lu et compris l'état actuel du JSON.
EN CAS DE BLOCAGE
Si une tâche est bloquée :
- Mettre
status: "BLOCKED"avec une note explicative - Ajouter dans
notesla raison du blocage - Passer à la tâche suivante si possible
- Signaler le blocage dans la réponse
RAPPEL DES OBJECTIFS v0.101
✅ App fonctionnelle sans modules Rust
✅ Tous les tests passent (Go + E2E)
✅ UX professionnelle (loading, erreurs, navigation)
✅ Zero dette technique sur le périmètre
✅ Prête pour un tag Git et une release GitHub
Score cible : 95/100 minimum
Prompt version 1.0 - Veza v0.101