## Task 5 Report: Trigger della GitHub Action via repository_dispatch

### Cosa implementato

- `app/src/lib/server/pdf/dispatch.ts` — esporta `triggerPdfGeneration(agenziaId: number): Promise<void>`
  - Legge `GITHUB_DISPATCH_TOKEN` da `$env/dynamic/private`; lancia se mancante
  - POSTa a `https://api.github.com/repos/paoloalby/alleanza-dvr/dispatches`
  - Headers: `Authorization: Bearer <token>`, `Accept: application/vnd.github+json`, `Content-Type: application/json`, `User-Agent: alleanza-dvr`
  - Body: `{ event_type: 'generate-dvr-pdf', client_payload: { agenzia_id: agenziaId } }`
  - Lancia se `!res.ok`

- `app/src/lib/server/pdf/dispatch.test.ts` — test verbatim dal brief; verifica URL esatto, method POST, body, header Authorization

### TDD RED/GREEN

**RED** (modulo inesistente):
```
npx vitest run src/lib/server/pdf/dispatch.test.ts
→ FAIL: Error: Cannot find module '/src/lib/server/pdf/dispatch'
```

**GREEN** (dopo implementazione):
```
npx vitest run src/lib/server/pdf/dispatch.test.ts
→ Tests  1 passed (1)
```

### Esito suite completa

```
Tests  12 passed (12)   [erano 11 prima del task]
Test Files  3 passed (3)
```

### Output check

```
svelte-check: 0 ERRORS, 3 WARNINGS (pre-esistenti in ValutazioneCard.svelte, non introdotti da questo task)
```

### File creati

- `app/src/lib/server/pdf/dispatch.ts`
- `app/src/lib/server/pdf/dispatch.test.ts`

### Concern

Nessuno. Il mock `vi.mock('$env/dynamic/private', ...)` ha avuto la precedenza sull'alias di `vitest.config.ts` come previsto dal brief. Nessuna chiamata di rete reale effettuata.
