# Backup: Phase-2 + Offers (Rückbau für Phase-1-Live-Deploy) **Erstellt:** 2026-04-17 **Zweck:** Der Workspace enthielt gemischt Phase 1 + Phase 2 (Code-Umstellung `inquiry_id`, `$table='contacts'/'inquiries'`) + Offers-Modul. Phase 1 muss zuerst auf Live, dann erst Phase 2 + Offers. Dieses Backup sichert alle **Phase-2- und Offers-Artefakte**, damit sie nach erfolgreichem Phase-1-Live-Deploy per `restore.sh` wieder in den Workspace eingespielt werden können. Parallel dazu existiert ein **Tarball-Backup** des gesamten Workspace-Zustands vor dem Rückbau unter `../../../../../backups-safety/workspace-pre-phase1-rollback-2026-04-17.tar.gz` (182 MB) und ein **Git-Commit** `e3dc1af` (lokal auf `master`, nicht gepusht) als doppeltes Sicherheitsnetz. --- ## Was im Backup liegt ### `FILES/migrations/` (18 Migrations-Dateien) **Phase 2 (3 Dateien):** - `2025_04_15_200001_phase2_rename_customer_to_contacts.php` — RENAME TABLE customer → contacts - `2025_04_15_200002_phase2_rename_lead_to_inquiries.php` — RENAME TABLE lead → inquiries - `2025_04_15_200003_phase2_rename_booking_lead_id_to_inquiry_id.php` — Spalte `booking.lead_id` → `booking.inquiry_id` **Phase 3 (2 Dateien):** - `2025_04_15_300001_phase3_create_participants_unified_table.php` - `2025_04_15_300002_phase3_drop_old_participant_tables.php` **Phase 4 (6 Dateien):** - `2025_04_15_400001_phase4_create_communications_table.php` - `2025_04_15_400002_phase4_create_notices_table.php` - `2025_04_15_400003_phase4_create_attachments_table.php` - `2025_04_15_400004_phase4_drop_old_communication_tables.php` - `2025_04_15_400005_phase4_drop_old_notice_tables.php` - `2025_04_15_400006_phase4_drop_old_attachment_tables.php` **Offers (7 Dateien):** - `2026_04_17_100001_create_offers_table.php` - `2026_04_17_100002_create_offer_versions_table.php` - `2026_04_17_100003_create_offer_items_table.php` - `2026_04_17_100004_create_offer_templates_table.php` - `2026_04_17_100005_create_offer_files_table.php` - `2026_04_17_100006_create_offer_access_tokens_table.php` - `2026_04_17_100007_add_offer_refs_to_offers_and_bookings.php` ### `FILES/models/` (6 Offer-Models) - `Offer.php` — **neues** Offer-Model des Offers-Moduls (überschreibt das Legacy-Reliese-Model in `app/Models/Offer.php`; Legacy-Version ist in `HEAD^` bzw. Commit `389d5d1`) - `OfferVersion.php` - `OfferItem.php` - `OfferTemplate.php` - `OfferFile.php` - `OfferAccessToken.php` ### `PATCHES/` (Diffs für Phase-2/Offers-Rückbau) Jede Datei enthält den **vollständigen** oder **Phase-1-only**-Diff gegen `HEAD^` (= `389d5d1`, Basis-Live-Stand): - `Booking.php.full.diff` — kompletter Vorher-Diff (inkl. Phase-2 + Offers-Änderungen, die zurückgebaut wurden) - `Booking.php.phase1-only.diff` — was nach Rückbau übrig blieb: **nur** `HasFactory` + `$dates`→`$casts datetime` (Laravel-10-Upgrade) - `Customer.php.phase1-only.diff` — Phase-1-Arbeit (SoftDeletes, Merge-Fields, Relations, Global Scope); `$table = 'contacts'` zurück auf `'customer'` - `Lead.php.phase1-only.diff` — `$table = 'inquiries'` zurück auf `'lead'` (+ Phase-1-$casts-Refactoring) - `Contact.php.phase1-only.diff` — komplett neue Datei (Contacts-Modul); `$table = 'contacts'` zurück auf `'customer'` - `filesystems.php.full.diff` — entfernte `offer`-Disk (komplett zurückgerollt; Datei jetzt identisch mit HEAD^) - `Repositories.full.diff` / `Repositories.phase1-only.diff` — BookingPDFRepository (Laravel-10-Upgrade `Storage::disk()->path()`), LeadRepository, CustomerMailRepository - `Controllers.phase1-only.diff` — RequestController (Phase-1-$casts), API/BookingController, Admin/Report*, LeadController, CustomerController, ContactController (komplett neu) - `Services-Commands.phase1-only.diff` — BookingImport, SyncNewsletterKulturreisen (neu), Contacts*Duplicates (neu) - `Views.phase1-only.diff` — (leer, reine Phase-2-Views wurden zurückgerollt) --- ## Was im Workspace VERBLEIBT (Phase 1 + Laravel 10) **Deploy-ready auf Live** — alle Phase-1-Artefakte, die auf Test bereits laufen: ### Neue Dateien (Phase 1) - `database/migrations/2025_04_15_100001_phase1_add_merge_fields_to_customer_table.php` - `database/migrations/2025_04_15_100002_phase1_add_soft_delete_to_customer_table.php` - `app/Models/Contact.php` (mit `$table = 'customer'`) - `app/Repositories/ContactRepository.php` - `app/Http/Controllers/ContactController.php` - `app/Console/Commands/ContactsFindDuplicates.php` - `app/Console/Commands/ContactsMergeDuplicates.php` - `resources/views/contact/*.blade.php` (5 Dateien) ### Modifizierte Dateien (Phase 1 + Laravel 10 Upgrade) - `app/Models/Customer.php` — SoftDeletes, Merge-Fields, Global Scope, Relations - `app/Models/Booking.php` — HasFactory, `$dates`→`$casts datetime` - `app/Models/Lead.php` — Phase-1-$casts-Refactoring - Viele weitere Models mit Laravel-10-Upgrade-Änderungen - `app/Repositories/BookingPDFRepository.php` — `Storage::disk()->path()` statt deprecated `getAdapter()->getPathPrefix()` - `routes/web.php` — `/contacts`, `/contact/*` Routen - `resources/views/layouts/includes/layout-sidenav.blade.php` — Contacts-Menüpunkt - Weitere modifizierte Dateien, u.a. diverse Views, Tests (`tests/Feature/*`, `tests/Unit/*`), Konfiguration (`phpunit.xml`, `config/trustedproxy.php`), Composer/Package-Dateien - `app/Services/MailDirService.php` (neu) - `database/factories/BookingFactory.php`, `CustomerFactory.php`, `LeadFactory.php` (neu) **Alle diese Dateien gehen mit dem Phase-1-Live-Deploy mit.** --- ## Restore-Anleitung ### Automatisch (empfohlen) ```bash bash dev/backups/phase2-offers-2026-04-17/restore.sh ``` Das Script: 1. Prüft, ob Phase 2 auf Live eingespielt wurde (erfordert bewusste Bestätigung) 2. Spielt die 18 Migrations-Dateien zurück nach `database/migrations/` 3. Spielt die 6 Offer-Models zurück nach `app/Models/` (inkl. Überschreiben der Legacy-`Offer.php`) 4. Wendet die Phase-2/Offers-Änderungen wieder an (Booking.php inquiry_id + offer()-Relation, Customer/Lead/Contact $table, Repositories, Controllers, Services, Commands, Views, filesystems.php) 5. Zeigt einen abschließenden `git status` zur Verifikation ### Manuell Falls das Script fehlschlägt oder man einzelne Teile prüfen möchte: **Migrations zurück:** ```bash cp dev/backups/phase2-offers-2026-04-17/FILES/migrations/*.php database/migrations/ ``` **Models zurück (WARNUNG: überschreibt Legacy-Offer.php):** ```bash cp dev/backups/phase2-offers-2026-04-17/FILES/models/*.php app/Models/ ``` **Code-Änderungen aus dem WIP-Sicherheits-Commit (`e3dc1af`) zurückholen:** ```bash git checkout e3dc1af -- app/Models/Booking.php app/Models/Customer.php app/Models/Contact.php app/Models/Lead.php git checkout e3dc1af -- app/Repositories/BookingPDFRepository.php app/Repositories/LeadRepository.php app/Repositories/CustomerMailRepository.php git checkout e3dc1af -- app/Http/Controllers/RequestController.php app/Http/Controllers/API/BookingController.php git checkout e3dc1af -- app/Http/Controllers/Admin/ReportController.php app/Http/Controllers/Admin/ReportProviderController.php app/Http/Controllers/Admin/ReportLeadsController.php git checkout e3dc1af -- app/Http/Controllers/LeadController.php app/Http/Controllers/CustomerController.php app/Http/Controllers/ContactController.php git checkout e3dc1af -- app/Services/BookingImport.php git checkout e3dc1af -- app/Console/Commands/SyncNewsletterKulturreisen.php app/Console/Commands/ContactsFindDuplicates.php app/Console/Commands/ContactsMergeDuplicates.php git checkout e3dc1af -- resources/views/customer/mail/modal-show-mail-inner.blade.php resources/views/pdf/components/booking_head.blade.php resources/views/pdf/components/booking_header.blade.php git checkout e3dc1af -- config/filesystems.php ``` **Alternative — kompletter Restore aus dem Git-Commit:** ```bash git checkout e3dc1af -- . ``` (Aber dann sind auch die Phase-2-Migrationen in `database/migrations/` wieder da, was richtig ist.) --- ## Notfall-Rollback (alles rückgängig, auch Phase-1-Rückbau) Falls der Phase-1-Rückbau komplett falsch war und man zum Ausgangszustand zurück will: ```bash # Option A: Git git reset --hard e3dc1af # setzt Workspace auf den WIP-Sicherheits-Commit # Option B: Tarball (falls Git nicht funktioniert) cd /workspace/mein.sterntours.de rm -rf * .[a-z]* # Vorsicht! Löscht alles außer dem übergeordneten Dir tar -xzf ../backups-safety/workspace-pre-phase1-rollback-2026-04-17.tar.gz ```