YachtMemory Stay Processing - Phase 1C v1
===========================================

Ziel
----
Persistenter Arbeitszustand pro Stay in yachtmemory_derived.

Dieses Paket implementiert bewusst noch NICHT:
- keinen Worker
- keinen systemd-Timer
- keine Geocodierung
- keine Klassifikation
- keine Retry-Logik
- keine Änderungen an SilentMessDB oder anderen Telemetrie-Datenbanken
- keine Änderungen an StayDetector oder StayEnricher

Dateien
-------
shared_dashboard/sql/05_stay_processing_table.sql
src/services/StayProcessingWriter.php
shared_dashboard/scripts/test_stay_processing_persistence.php

Initialzustand
--------------
Für einen Stay mit bereits vorhandenem stay_enrichment:
  enrichment_status     = COMPLETE
  geography_status      = PENDING
  classification_status = PENDING
  overall_status        = PENDING

Fehlt das Enrichment:
  enrichment_status     = PENDING

Bereits vorhandene stay_processing-Zeilen werden von diesem
Initialisierungswerkzeug nicht verändert.

Installation / Test
-------------------
1. SQL-Tabelle in yachtmemory_derived anlegen:
   mysql yachtmemory_derived < shared_dashboard/sql/05_stay_processing_table.sql

2. Syntax prüfen:
   php -l src/services/StayProcessingWriter.php
   php -l shared_dashboard/scripts/test_stay_processing_persistence.php

3. DRY RUN:
   php shared_dashboard/scripts/test_stay_processing_persistence.php 1

Nach dem validierten Phase-1B-Stand mit 36 Enrichments wird erwartet:
   Stays: 36 | INSERT: 36 | UNCHANGED: 0

und für jeden Stay:
   enrichment=COMPLETE
   geography=PENDING
   classification=PENDING
   overall=PENDING

4. Erst nach Prüfung schreiben:
   php shared_dashboard/scripts/test_stay_processing_persistence.php 1 --apply

5. Danach erneut DRY RUN:
   php shared_dashboard/scripts/test_stay_processing_persistence.php 1

Erwartung:
   Stays: 36 | INSERT: 0 | UNCHANGED: 36
