# Daily GDPR data cleanup for the pitch deck. # Calls /api/admin/cleanup which runs runDataCleanup(): # - anonymizes investors inactive 30+ days # - anonymizes never-activated invites after 90 days # - deletes sessions + magic links older than 30 days # - anonymizes IPs in audit logs older than 30 days # # Requires Gitea Actions secret: PITCH_ADMIN_SECRET name: Pitch deck — GDPR cleanup on: schedule: - cron: '0 2 * * *' jobs: cleanup: runs-on: docker container: image: alpine:3.19 steps: - name: Run data cleanup env: PITCH_ADMIN_SECRET: ${{ secrets.PITCH_ADMIN_SECRET }} run: | apk add --no-cache curl RESPONSE=$(curl -sSf -w "\n%{http_code}" -X POST \ -H "Authorization: Bearer $PITCH_ADMIN_SECRET" \ -H "Content-Type: application/json" \ https://pitch.breakpilot.com/api/admin/cleanup) \ || { echo "Cleanup request failed"; exit 1; } HTTP_CODE=$(echo "$RESPONSE" | tail -n1) BODY=$(echo "$RESPONSE" | head -n-1) echo "Response: $BODY" [ "$HTTP_CODE" = "200" ] || { echo "Unexpected status $HTTP_CODE"; exit 1; } echo "GDPR cleanup completed successfully"