Write-Host "=== Configuration complète du projet GTA ===" -ForegroundColor Cyan # 1. Créer la structure Write-Host "`n1. Création de la structure..." -ForegroundColor Yellow $dirs = @( "C:\GTA\project\public\backend", "C:\GTA\project\public\backend\uploads", "C:\GTA\project\src" ) foreach ($dir in $dirs) { if (!(Test-Path $dir)) { New-Item -Path $dir -ItemType Directory -Force | Out-Null Write-Host " ✓ Créé: $dir" -ForegroundColor Green } } # 2. Backend package.json Write-Host "`n2. Création de package.json..." -ForegroundColor Yellow $backendPackage = @" { "name": "gta-backend", "version": "1.0.0", "description": "GTA Backend API", "main": "server.js", "scripts": { "start": "node server.js", "dev": "nodemon server.js" }, "dependencies": { "express": "^4.18.2", "mysql2": "^3.6.5", "cors": "^2.8.5", "dotenv": "^16.3.1", "multer": "^1.4.5-lts.1", "@microsoft/microsoft-graph-client": "^3.0.7", "@azure/identity": "^4.0.0", "body-parser": "^1.20.2" }, "engines": { "node": ">=18.0.0" } } "@ Set-Content -Path "C:\GTA\project\backend\package.json" -Value $backendPackage Write-Host " ✓ package.json créé" -ForegroundColor Green # 3. Backend .env Write-Host "`n3. Création de .env..." -ForegroundColor Yellow $envContent = @" DB_HOST=mysql DB_USER=wpuser DB_PASSWORD=-2b/)ru5/Bi8P[7_ DB_NAME=DemandeConge PORT=3000 NODE_ENV=production AZURE_TENANT_ID=9840a2a0-6ae1-4688-b03d-d2ec291be0f9 AZURE_CLIENT_ID=4bb4cc24-bac3-427c-b02c-5d14fc67b561 AZURE_CLIENT_SECRET=gvf8Q~545Bafn8yYsgjW~QG_P1lpzaRe6gJNgb2t AZURE_GROUP_ID=c1ea877c-6bca-4f47-bfad-f223640813a0 EMAIL_FROM=gtanoreply@ensup.eu UPLOAD_DIR=./uploads MAX_FILE_SIZE=5242880 "@ Set-Content -Path "C:\GTA\project\backend\.env" -Value $envContent Write-Host " ✓ .env créé" -ForegroundColor Green # 4. Backend server.js Write-Host "`n4. Création de server.js..." -ForegroundColor Yellow $serverJs = @" require('dotenv').config(); const express = require('express'); const cors = require('cors'); const app = express(); const PORT = process.env.PORT || 3000; app.use(cors()); app.use(express.json()); app.get('/health', (req, res) => { res.json({ status: 'ok', timestamp: new Date().toISOString(), env: { dbHost: process.env.DB_HOST, dbName: process.env.DB_NAME } }); }); app.get('/api/test', (req, res) => { res.json({ message: 'Backend GTA opérationnel!' }); }); app.listen(PORT, '0.0.0.0', () => { console.log(\`✓ Serveur démarré sur le port \${PORT}\`); }); "@ Set-Content -Path "C:\GTA\project\backend\server.js" -Value $serverJs Write-Host " ✓ server.js créé" -ForegroundColor Green # 5. Backend Dockerfile Write-Host "`n5. Création de Dockerfile..." -ForegroundColor Yellow $dockerfile = @" FROM node:18-alpine AS base RUN apk add --no-cache curl mysql-client WORKDIR /app COPY package*.json ./ RUN if [ -f package-lock.json ]; then \ npm ci --omit=dev; \ else \ npm install --production; \ fi && npm cache clean --force COPY . . RUN mkdir -p /app/uploads && chmod 755 /app/uploads RUN addgroup -g 1001 -S nodejs && \ adduser -S nodejs -u 1001 && \ chown -R nodejs:nodejs /app USER nodejs EXPOSE 3000 HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \ CMD curl -f http://localhost:3000/health || exit 1 CMD ["node", "server.js"] "@ Set-Content -Path "C:\GTA\project\backend\DockerfileGTA.backend" -Value $dockerfile Write-Host " ✓ Dockerfile créé" -ForegroundColor Green # 6. Afficher le résumé Write-Host "`n=== Configuration terminée ===" -ForegroundColor Green Write-Host "`nFichiers créés:" -ForegroundColor Cyan Get-ChildItem C:\GTA\project\public\Backend | Select-Object Name, Length Write-Host "`n=== Prochaines étapes ===" -ForegroundColor Yellow Write-Host "1. cd C:\GTA" -ForegroundColor White Write-Host "2. docker-compose up --build -d" -ForegroundColor White Write-Host "3. docker-compose logs -f backend" -ForegroundColor White