## Task 8: GitHub Action di generazione

**Files:**
- Create: `.github/workflows/generate-pdf.yml`

**Interfaces:**
- Consumes: `npx tsx scripts/pdf/generate.ts` (Task 4); secrets repo `DATABASE_URL`, `DATABASE_AUTH_TOKEN`, `R2_ACCOUNT_ID`, `R2_ACCESS_KEY_ID`, `R2_SECRET_ACCESS_KEY`, `R2_BUCKET`.

- [ ] **Step 1: Workflow**

```yaml
name: Genera PDF DVR
on:
  repository_dispatch:
    types: [generate-dvr-pdf]
  workflow_dispatch:
    inputs:
      agenzia_id:
        description: 'ID agenzia oppure "all"'
        required: true
        default: 'all'
jobs:
  generate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: '20', cache: 'npm', cache-dependency-path: app/package-lock.json }
      - name: Install deps
        working-directory: app
        run: npm ci
      - name: Genera PDF
        working-directory: app
        env:
          DATABASE_URL: ${{ secrets.DATABASE_URL }}
          DATABASE_AUTH_TOKEN: ${{ secrets.DATABASE_AUTH_TOKEN }}
          R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }}
          R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
          R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
          R2_BUCKET: ${{ secrets.R2_BUCKET }}
        run: npx tsx scripts/pdf/generate.ts "${{ github.event.client_payload.agenzia_id || github.event.inputs.agenzia_id }}"
```

- [ ] **Step 2: Configura i secrets del repo**

Su GitHub (repo → Settings → Secrets and variables → Actions) aggiungi i 6 secrets sopra con i valori da `infrastruttura_alleanza` (memoria).

- [ ] **Step 3: Test manuale del workflow**

Su GitHub → Actions → "Genera PDF DVR" → Run workflow → `agenzia_id = 467`. Verifica run verde, oggetto R2 aggiornato, `dvr_pdf` 467 `ready`. Misura la durata (atteso ~1-2 min incluso setup).

- [ ] **Step 4: Commit**

```bash
git add .github/workflows/generate-pdf.yml
git commit -m "PDF: workflow GitHub Actions (Chromium) su repository_dispatch"
```

---

