# 🎯 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 1. **TOUJOURS lire `V0101_STATE.json` en premier** pour connaĂźtre l'Ă©tat actuel 2. **TOUJOURS mettre Ă  jour `V0101_STATE.json`** aprĂšs chaque action 3. **UNE SEULE TÂCHE PAR ITÉRATION** — ne pas sauter d'Ă©tapes 4. **VALIDER avant de passer Ă  la suite** — exĂ©cuter la commande de validation 5. **DOCUMENTER dans `history`** — chaque itĂ©ration laisse une trace ### MODULES EXCLUS (v0.101) - `chat-server/` (Rust) — sera intĂ©grĂ© en v0.202 - `stream-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 ```bash cat V0101_STATE.json | jq '.meta, .objective.current_score, .phases[].status' ``` ### ÉTAPE 2 : Identifier la prochaine tĂąche Logique de sĂ©lection : 1. Chercher la premiĂšre tĂąche avec `"status": "TODO"` dans la phase en cours 2. Si toutes les tĂąches d'une phase sont `DONE`, passer Ă  la phase suivante 3. Si toutes les phases sont `DONE`, passer Ă  la validation finale ### ÉTAPE 3 : ExĂ©cuter la tĂąche Pour chaque tĂąche : 1. **Lire les fichiers concernĂ©s** (`files_to_check`) 2. **Comprendre le problĂšme** en analysant le code 3. **ImplĂ©menter la correction** 4. **ExĂ©cuter la validation** (`validation.command`) 5. **Mettre Ă  jour le JSON** : - `status`: `"TODO"` → `"IN_PROGRESS"` → `"DONE"` ou `"BLOCKED"` - `validation.actual`: rĂ©sultat rĂ©el - `validation.passed`: `true` ou `false` - `subtasks[].done`: cocher les sous-tĂąches terminĂ©es - `notes`: ajouter observations importantes ### ÉTAPE 4 : Mettre Ă  jour l'historique Ajouter une entrĂ©e dans `history` : ```json { "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 ```bash # 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 ```bash 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 ```bash # 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 ```bash # 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 ```bash # 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 ```bash 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 ```bash 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 : ```bash #!/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 : ```markdown ## 📍 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 : ```bash # 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 : 1. Mettre `status: "BLOCKED"` avec une note explicative 2. Ajouter dans `notes` la raison du blocage 3. Passer Ă  la tĂąche suivante si possible 4. 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*