# Palettenreport: Erfassung im Pilot

Die echte CSV enthält zunächst nur den Kopf. Eine Zeile bedeutet eine vollständig gezählte, tatsächlich eingegangene Palette. Keine Hochrechnung auf 50 Paletten. Die separate Beispieldatei ist synthetisch und darf niemals in die echte CSV übernommen werden. `EXAMPLE-`-IDs in der echten Datei brechen die Validierung ab.

UTF-8, Komma als Trennzeichen, Dezimalpunkt. Felder mit Komma oder JSON in doppelte Anführungszeichen setzen; innere Anführungszeichen verdoppeln. Pflichtfelder ohne Leerwerte; `notes` darf leer sein. Datumsangaben ISO YYYY-MM-DD, nicht in der Zukunft.

| Deutsches Feld | English key | Definition |
|---|---|---|
| Palettenkennung | pallet_id | Eindeutige interne Kennung, kein Kunden-/Lieferantenname; öffentlich durch P-0001 usw. ersetzt |
| Eingangsdatum | received_date | Tatsächlicher Wareneingang |
| Herkunft | source | amazon, shein oder other; Herkunftsnachweis intern aufbewahren |
| Palettentyp | pallet_type | Festes Vokabular: mixed, fashion, electronics, household, other |
| Gezählt | pieces_counted | Positive ganze Artikelzahl, vollständig gezählt |
| A-Ware | pieces_a | Ganze Zahl: neu/unbenutzt und beim dokumentierten Funktionstest ohne Befund |
| B-Ware | pieces_b | Ganze Zahl: funktionsfähig, Gebrauchsspuren oder Verpackungsmangel |
| C-Ware | pieces_c | Ganze Zahl: ungeprüft oder unvollständig, ohne gesicherten Defektbefund |
| Defekt | pieces_defect | Ganze Zahl: dokumentierter Defekt; nicht zusätzlich C zählen |
| Kategorieanteile | category_shares | JSON-Objekt mit Anteilen 0–1; Schlüssel women, men, children, accessories, beauty, electronics, household, other; Summe = 1. Pro Artikel genau eine Kategorie |
| Bruttogewicht | gross_weight_kg | Gemessene kg inklusive Palette und Verpackung, größer 0 |
| Einkaufspreis je Stück | purchase_tier_price_per_piece | Tatsächlicher Nettopreis in EUR, 0.10–500; keine UVP |
| Notizen | notes | Interne Messmethode, Prüfumfang, Belegverweis; keine Veröffentlichung |
| Erfasst von | recorded_by | Reale verantwortliche Person, Pflicht; bleibt intern |
| Geprüft von | verified_by | Reale prüfende Person, Pflicht; keine automatische Behauptung einer unabhängigen Prüfung |

A+B+C+Defekt muss exakt `pieces_counted` ergeben. Vor Veröffentlichung Zählprotokoll, Waage, Prüfumfang und Belege manuell prüfen; Software kann keine erfundene reale Kennung erkennen. Die Validierung erkennt Beispiele und strukturelle Widersprüche, bestätigt aber keine physische Erhebung.

Öffentliche Kopie: nur feste Messfelder, anonymisierte Kennung, Eingangsmonat statt Tag; keine notes, recorded_by, verified_by oder frei formulierten Typen. Kategorieanteile im Report werden nach Artikelzahl gewichtet; Qualitätsanteile = Summe je Klasse / Summe gezählter Stücke. Mittlere Stückzahl = Summe Stücke / Anzahl Paletten. Erfassungsstand und Zeitraum im gebauten Index.

Prüfen: `npm run preisindex:validate`. Nach Änderung: `npm run preisindex:build` und erneut validieren. Der Builder validiert Eingaben vor dem Schreiben. JSON-Schema: `pallet-study.schema.json`; ausführbare Regeln: `scripts/preisindex/lib/schemas.mjs`.
