R2 Transfer Service Playbook
Portée
Utilise ce skill lorsqu'une tâche touche :
- •
services/r2_transfer_service.py - •
email_processing/orchestrator.py(section delivery_links / r2_url) - •
deployment/cloudflare-worker/* - •
deployment/public_html/config_api.php,deployment/public_html/test-direct.php, pages de test R2
Pré-requis
- •ENV obligatoires :
R2_BASE_URL,R2_FETCH_TOKEN,ALLOWED_R2_DOMAINS. - •Virtualenv
/mnt/venv_ext4/venv_render_signal_serverpour les scripts/tests. - •Accès au déploiement Cloudflare Workers (wrangler).
Workflow
- •Analyse des dépendances
- •Confirmer la présence des ENV ci-dessus.
- •Vérifier les allowlists (Dropbox/FromSmash/SwissTransfer) avant toute nouvelle source.
- •Mises à jour Python
- •Toujours valider les domaines via
is_allowed_domain. - •Injecter le header
X-R2-FETCH-TOKENpour chaque requête Worker. - •Conserver les logs sans PII et retour fallback
raw_urlen cas d'échec.
- •Toujours valider les domaines via
- •Workers Cloudflare
- •Garder le mode fetch avec timeout 120s pour Dropbox
/scl/fo/. - •Mettre à jour
httpMetadata.contentDispositionpour préserver le nom de fichier. - •Exécuter
wrangler deploy --dry-run(documenter la sortie).
- •Garder le mode fetch avec timeout 120s pour Dropbox
- •PHP Logger / Diagnostics
- •Assurer que
config_api.phpcontinue d'écrire les pairessource_url/r2_url. - •Tester
deployment/public_html/test-direct.phppour valider le flux complet.
- •Assurer que
- •Tests & validation
- •Lancer le helper
./.windsurf/skills/r2-transfer-service-playbook/test_r2_worker.sh. - •Compléter si besoin avec des tests ciblés sur les nouvelles sources.
- •Lancer le helper
- •Documentation & Memory Bank
- •Mettre à jour
docs/r2_offload.mdoudocs/r2_dropbox_limitations.md. - •Ajouter une entrée dans la Memory Bank si de nouvelles sources sont supportées.
- •Mettre à jour
Ressources
- •
test_r2_worker.sh: active le venv, exécute les tests R2 et vérifie la page de test PHP.
Conseils
- •En cas de nouvelle plateforme de fichiers, créer un helper dédié (normalisation URL, validation).
- •Limiter les retries côté Worker, gérer les erreurs HTTP explicitement.
- •Garder les scripts de cleanup alignés (expiration 24h par défaut).