- ImpactScoreService: implement getFeedbackBonus() (ST_Distance query on UserFeedback within 20km/6h) - ImpactScoreService: trigger PushNotificationService when score >= 70 - PushNotificationService: send VAPID WebPush to spot subscribers, clean expired subs - PushController: GET vapid-public-key, POST/DELETE subscribe with rate limiting - SentinelHubClient: add optional $collection param, add Sentinel-3 OLCI FAI evalscript (MCI) - IngestionService: add $collection param + HighCloudCoverageException for fallback logic - IngestionService: add ingestWithFallback() — tries S2, falls back to S3 on high cloud - IngestSentinelCommand: --source=auto (default) triggers ingestWithFallback - FeedbackController: rate limiting via apiFeedbackLimiter - Migration: push_subscription table - rate_limiter.yaml: api_read(120/min), api_feedback(10/min), api_push(5/min) - sw.js: service worker handling push events + notificationclick - usePushSubscription hook: subscribe/unsubscribe lifecycle with VAPID - SpotPanel: PushButton component integrated - SpotPanel.css + TimelineSlider.css: mobile responsive (bottom-sheet on small screens) - Caddyfile: SPA served at / with try_files fallback, sw.js served from root scope - vite.config.js: build outDir → backend/public (not /spa) - deploy/post-receive.sh: full deploy script (composer, npm build, migrations, cache, docker up) - docs/roadmap.md: all Phase 3 + transversal items marked done Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
43 lines
1.5 KiB
Bash
43 lines
1.5 KiB
Bash
#!/bin/bash
|
|
# post-receive hook — à copier dans /opt/barerepos/radarsargasses971.git/hooks/post-receive
|
|
# puis : chmod +x /opt/barerepos/radarsargasses971.git/hooks/post-receive
|
|
|
|
set -e
|
|
|
|
DEPLOY_DIR="/opt/apps/radarsargasses971"
|
|
REPO_DIR="/opt/barerepos/radarsargasses971.git"
|
|
|
|
echo "==> [post-receive] Déploiement Sargasse-Sentry"
|
|
|
|
# 1. Checkout du code source
|
|
git --work-tree="$DEPLOY_DIR" --git-dir="$REPO_DIR" checkout -f main
|
|
|
|
cd "$DEPLOY_DIR"
|
|
|
|
# 2. Dépendances PHP (sans scripts en prod pour éviter les erreurs de conteneur)
|
|
echo "==> composer install"
|
|
docker compose exec -T php composer install \
|
|
--no-dev --no-interaction --optimize-autoloader --no-scripts 2>&1 || \
|
|
docker run --rm -v "$DEPLOY_DIR/backend":/app -w /app \
|
|
composer:2 install --no-dev --no-interaction --optimize-autoloader
|
|
|
|
# 3. Build React → backend/public
|
|
echo "==> npm run build"
|
|
docker run --rm -v "$DEPLOY_DIR/frontend":/app -w /app \
|
|
node:20-alpine sh -c "npm ci --silent && npm run build"
|
|
|
|
# 4. Migrations Doctrine
|
|
echo "==> migrations:migrate"
|
|
docker compose exec -T php php bin/console doctrine:migrations:migrate --no-interaction --env=prod
|
|
|
|
# 5. Vidage du cache Symfony
|
|
echo "==> cache:clear"
|
|
docker compose exec -T php php bin/console cache:clear --env=prod --no-warmup
|
|
docker compose exec -T php php bin/console cache:warmup --env=prod
|
|
|
|
# 6. Redémarrage des conteneurs si la config Docker a changé
|
|
echo "==> docker compose up -d"
|
|
docker compose up -d --remove-orphans
|
|
|
|
echo "==> Déploiement terminé."
|