Backend Go: - Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN. - Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError). - Sécurisation de config.go, CORS, statuts de santé et monitoring. - Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles). - Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés. - Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*. Chat server (Rust): - Refonte du pipeline JWT + sécurité, audit et rate limiting avancé. - Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing). - Nettoyage des panics, gestion d’erreurs robuste, logs structurés. - Migrations chat alignées sur le schéma UUID et nouvelles features. Stream server (Rust): - Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core. - Transactions P0 pour les jobs et segments, garanties d’atomicité. - Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION). Documentation & audits: - TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services. - Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3). - Scripts de reset et de cleanup pour la lab DB et la V1. Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
261 lines
7 KiB
Bash
Executable file
261 lines
7 KiB
Bash
Executable file
#!/bin/bash
|
||
# cleanup-uuid-migration.sh
|
||
# Script de nettoyage des fichiers legacy de la migration UUID
|
||
# À exécuter depuis la racine du monorepo
|
||
|
||
set -e # Stop on error
|
||
|
||
echo "=========================================="
|
||
echo "🧹 Nettoyage Migration UUID - Veza"
|
||
echo "=========================================="
|
||
echo ""
|
||
|
||
# Couleurs pour output
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# Fonction pour afficher les erreurs
|
||
error() {
|
||
echo -e "${RED}❌ $1${NC}" >&2
|
||
}
|
||
|
||
success() {
|
||
echo -e "${GREEN}✅ $1${NC}"
|
||
}
|
||
|
||
warning() {
|
||
echo -e "${YELLOW}⚠️ $1${NC}"
|
||
}
|
||
|
||
info() {
|
||
echo -e "ℹ️ $1"
|
||
}
|
||
|
||
# Vérifier qu'on est à la racine du monorepo
|
||
if [ ! -d "veza-backend-api" ] || [ ! -d "veza-chat-server" ]; then
|
||
error "Ce script doit être exécuté depuis la racine du monorepo"
|
||
exit 1
|
||
fi
|
||
|
||
echo "=== Étape 1: Vérification pré-cleanup ==="
|
||
echo ""
|
||
|
||
# Vérifier qu'on est sur la bonne branche
|
||
CURRENT_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||
if [ "$CURRENT_BRANCH" = "unknown" ] || [ -z "$CURRENT_BRANCH" ]; then
|
||
warning "Git n'est pas initialisé ou vous n'êtes pas dans un repo git"
|
||
read -p "Continuer quand même ? (y/N) " -n 1 -r
|
||
echo
|
||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||
exit 1
|
||
fi
|
||
else
|
||
info "Branche actuelle : $CURRENT_BRANCH"
|
||
|
||
if [ "$CURRENT_BRANCH" != "cleanup/uuid-migration" ] && [ "$CURRENT_BRANCH" != "cleanup/uuid-cleanup" ]; then
|
||
warning "Vous n'êtes pas sur une branche cleanup/uuid-*"
|
||
read -p "Créer une branche cleanup/uuid-cleanup ? (y/N) " -n 1 -r
|
||
echo
|
||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||
git checkout -b cleanup/uuid-cleanup
|
||
success "Branche cleanup/uuid-cleanup créée"
|
||
fi
|
||
fi
|
||
fi
|
||
|
||
# Vérifier que les tests passent (optionnel, peut être long)
|
||
read -p "Voulez-vous lancer les tests avant le nettoyage ? (y/N) " -n 1 -r
|
||
echo
|
||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||
info "🧪 Vérification des tests backend..."
|
||
cd veza-backend-api
|
||
if go test ./... -v 2>&1 | head -20; then
|
||
success "Tests backend OK"
|
||
else
|
||
error "Tests backend échoués"
|
||
cd ..
|
||
read -p "Continuer quand même ? (y/N) " -n 1 -r
|
||
echo
|
||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||
exit 1
|
||
fi
|
||
fi
|
||
cd ..
|
||
|
||
info "🧪 Vérification des tests chat-server..."
|
||
cd veza-chat-server
|
||
if cargo test 2>&1 | head -30; then
|
||
success "Tests chat-server OK"
|
||
else
|
||
error "Tests chat-server échoués"
|
||
cd ..
|
||
read -p "Continuer quand même ? (y/N) " -n 1 -r
|
||
echo
|
||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||
exit 1
|
||
fi
|
||
fi
|
||
cd ..
|
||
else
|
||
warning "Tests ignorés - assurez-vous qu'ils passent avant de continuer"
|
||
fi
|
||
|
||
echo ""
|
||
echo "=== Étape 2: Backup ==="
|
||
echo ""
|
||
|
||
BACKUP_DIR="backup-pre-cleanup-$(date +%Y%m%d-%H%M%S)"
|
||
mkdir -p "$BACKUP_DIR"
|
||
info "📦 Création du backup dans $BACKUP_DIR..."
|
||
|
||
# Backup migrations_legacy
|
||
if [ -d "veza-backend-api/migrations_legacy" ]; then
|
||
tar -czf "$BACKUP_DIR/migrations_legacy.tar.gz" veza-backend-api/migrations_legacy/ 2>/dev/null
|
||
if [ $? -eq 0 ]; then
|
||
success "migrations_legacy/ sauvegardé"
|
||
else
|
||
error "Échec du backup de migrations_legacy/"
|
||
exit 1
|
||
fi
|
||
else
|
||
warning "migrations_legacy/ n'existe pas (déjà supprimé ?)"
|
||
fi
|
||
|
||
# Backup main.go.legacy
|
||
if [ -f "veza-backend-api/cmd/main.go.legacy" ]; then
|
||
cp veza-backend-api/cmd/main.go.legacy "$BACKUP_DIR/" 2>/dev/null
|
||
if [ $? -eq 0 ]; then
|
||
success "main.go.legacy sauvegardé"
|
||
else
|
||
warning "Échec du backup de main.go.legacy (non critique)"
|
||
fi
|
||
else
|
||
info "main.go.legacy n'existe pas (déjà supprimé ?)"
|
||
fi
|
||
|
||
# Créer un fichier README dans le backup
|
||
cat > "$BACKUP_DIR/README.txt" << EOF
|
||
Backup créé le $(date)
|
||
Contenu :
|
||
- migrations_legacy.tar.gz : Dossier complet des migrations legacy
|
||
- main.go.legacy : Ancien point d'entrée (si présent)
|
||
|
||
Ce backup peut être supprimé après vérification que le nettoyage fonctionne correctement.
|
||
EOF
|
||
|
||
success "Backup créé dans $BACKUP_DIR"
|
||
|
||
echo ""
|
||
echo "=== Étape 3: Suppressions ==="
|
||
echo ""
|
||
|
||
# Supprimer migrations_legacy
|
||
if [ -d "veza-backend-api/migrations_legacy" ]; then
|
||
info "🗑️ Suppression de veza-backend-api/migrations_legacy/..."
|
||
rm -rf veza-backend-api/migrations_legacy/
|
||
success "migrations_legacy/ supprimé"
|
||
else
|
||
info "migrations_legacy/ n'existe pas (déjà supprimé ?)"
|
||
fi
|
||
|
||
# Supprimer main.go.legacy
|
||
if [ -f "veza-backend-api/cmd/main.go.legacy" ]; then
|
||
info "🗑️ Suppression de veza-backend-api/cmd/main.go.legacy..."
|
||
rm veza-backend-api/cmd/main.go.legacy
|
||
success "main.go.legacy supprimé"
|
||
else
|
||
info "main.go.legacy n'existe pas (déjà supprimé ?)"
|
||
fi
|
||
|
||
# Vérifier archive du chat-server
|
||
if [ -d "veza-chat-server/migrations/archive" ]; then
|
||
warning "veza-chat-server/migrations/archive/ existe"
|
||
info "Ce dossier contient des migrations archivées"
|
||
read -p "Voulez-vous le supprimer ? (y/N) " -n 1 -r
|
||
echo
|
||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||
rm -rf veza-chat-server/migrations/archive/
|
||
success "archive/ supprimé"
|
||
else
|
||
info "archive/ conservé"
|
||
fi
|
||
fi
|
||
|
||
echo ""
|
||
echo "=== Étape 4: Vérification post-cleanup ==="
|
||
echo ""
|
||
|
||
# Build backend
|
||
info "🔨 Build backend..."
|
||
cd veza-backend-api
|
||
if go build ./cmd/api 2>&1 | head -10; then
|
||
success "Build backend OK"
|
||
else
|
||
error "Build backend échoué"
|
||
cd ..
|
||
exit 1
|
||
fi
|
||
cd ..
|
||
|
||
# Build chat-server
|
||
info "🔨 Build chat-server..."
|
||
cd veza-chat-server
|
||
if cargo build --release 2>&1 | tail -5; then
|
||
success "Build chat-server OK"
|
||
else
|
||
error "Build chat-server échoué"
|
||
cd ..
|
||
exit 1
|
||
fi
|
||
cd ..
|
||
|
||
# Tests (optionnel)
|
||
read -p "Voulez-vous lancer les tests après le nettoyage ? (y/N) " -n 1 -r
|
||
echo
|
||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||
info "🧪 Tests backend..."
|
||
cd veza-backend-api
|
||
if go test ./... -v 2>&1 | head -20; then
|
||
success "Tests backend OK"
|
||
else
|
||
error "Tests backend échoués"
|
||
cd ..
|
||
exit 1
|
||
fi
|
||
cd ..
|
||
|
||
info "🧪 Tests chat-server..."
|
||
cd veza-chat-server
|
||
if cargo test 2>&1 | tail -10; then
|
||
success "Tests chat-server OK"
|
||
else
|
||
error "Tests chat-server échoués"
|
||
cd ..
|
||
exit 1
|
||
fi
|
||
cd ..
|
||
else
|
||
warning "Tests ignorés - assurez-vous de les lancer manuellement"
|
||
fi
|
||
|
||
echo ""
|
||
echo "=========================================="
|
||
echo -e "${GREEN}✅ Cleanup terminé${NC}"
|
||
echo "=========================================="
|
||
echo ""
|
||
echo "📊 Résumé :"
|
||
echo " - Backup créé dans : $BACKUP_DIR"
|
||
echo " - migrations_legacy/ : Supprimé"
|
||
echo " - main.go.legacy : Supprimé"
|
||
echo ""
|
||
echo "📝 Prochaines étapes :"
|
||
echo " 1. Review les changements : git diff"
|
||
echo " 2. Commit : git commit -m 'chore: remove legacy UUID migration files'"
|
||
echo " 3. Push : git push origin $CURRENT_BRANCH"
|
||
echo ""
|
||
echo "💡 Pour restaurer le backup :"
|
||
echo " tar -xzf $BACKUP_DIR/migrations_legacy.tar.gz"
|
||
echo ""
|
||
|