# @adva/schemas

Zod-Schemas + abgeleitete TypeScript-Typen fuer die vier Daten-Artefakte des Voice-Agent-PoC
(plus den `visits.json`-Index fuers Frontend). **Single Source of Truth** fuer alle Feldnamen.

## Regeln
- **JSON-Keys sind Deutsch (CAS-nah)** und muessen exakt den Fixtures unter `../../kunden/<id>/` (Default `demo`) entsprechen.
- **IDs nie erfinden:** `Gguid` = `0x`-Hex (branded), `TempId` = Prefix `tmp-`. Auf Typ-Ebene erzwungen.
- **`status`/`phase` von CRM-Objekten sind `z.string()`** – bewusst keine harten Enums, weil es
  Tenant-Platzhalter sind (siehe Root-`CLAUDE.md`). Nur Workflow-Werte sind Enums (`report.status`).
- TS-Typen werden per `z.infer` abgeleitet, nie handgeschrieben.

## Artefakte -> Schema
| Datei | Schema | Export-Typ |
|---|---|---|
| `benutzer.json` | `BenutzerVerzeichnis` | `BenutzerVerzeichnis` |
| `visits/<id>/preparation.json` | `Vorbereitung` | `Vorbereitung` |
| `visits/<id>/transkript.json` | `Transkript` | `Transkript` |
| `visits/<id>/report.json` | `Besuchsbericht` | `Besuchsbericht` |
| `visits.json` | `VisitsIndex` | `VisitsIndex` |

## Enums (`src/enums.ts`)
`Delta`, `Rolle`/`BearbeiterTyp`, `BearbeiterAufloesung`, `ReportStatus`, `NaechsterSchrittTyp`,
`Aktion`, `TranskriptRolle`.

## Test
`pnpm --filter @adva/schemas test` – validiert alle mitgelieferten Fixtures gegen ihr Schema
(Akzeptanzkriterium Phase 1).
