8.3 KiB
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 → contacts2025_04_15_200002_phase2_rename_lead_to_inquiries.php— RENAME TABLE lead → inquiries2025_04_15_200003_phase2_rename_booking_lead_id_to_inquiry_id.php— Spaltebooking.lead_id→booking.inquiry_id
Phase 3 (2 Dateien):
2025_04_15_300001_phase3_create_participants_unified_table.php2025_04_15_300002_phase3_drop_old_participant_tables.php
Phase 4 (6 Dateien):
2025_04_15_400001_phase4_create_communications_table.php2025_04_15_400002_phase4_create_notices_table.php2025_04_15_400003_phase4_create_attachments_table.php2025_04_15_400004_phase4_drop_old_communication_tables.php2025_04_15_400005_phase4_drop_old_notice_tables.php2025_04_15_400006_phase4_drop_old_attachment_tables.php
Offers (7 Dateien):
2026_04_17_100001_create_offers_table.php2026_04_17_100002_create_offer_versions_table.php2026_04_17_100003_create_offer_items_table.php2026_04_17_100004_create_offer_templates_table.php2026_04_17_100005_create_offer_files_table.php2026_04_17_100006_create_offer_access_tokens_table.php2026_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 inapp/Models/Offer.php; Legacy-Version ist inHEAD^bzw. Commit389d5d1)OfferVersion.phpOfferItem.phpOfferTemplate.phpOfferFile.phpOfferAccessToken.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: nurHasFactory+$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— entfernteoffer-Disk (komplett zurückgerollt; Datei jetzt identisch mit HEAD^)Repositories.full.diff/Repositories.phase1-only.diff— BookingPDFRepository (Laravel-10-UpgradeStorage::disk()->path()), LeadRepository, CustomerMailRepositoryControllers.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.phpdatabase/migrations/2025_04_15_100002_phase1_add_soft_delete_to_customer_table.phpapp/Models/Contact.php(mit$table = 'customer')app/Repositories/ContactRepository.phpapp/Http/Controllers/ContactController.phpapp/Console/Commands/ContactsFindDuplicates.phpapp/Console/Commands/ContactsMergeDuplicates.phpresources/views/contact/*.blade.php(5 Dateien)
Modifizierte Dateien (Phase 1 + Laravel 10 Upgrade)
app/Models/Customer.php— SoftDeletes, Merge-Fields, Global Scope, Relationsapp/Models/Booking.php— HasFactory,$dates→$casts datetimeapp/Models/Lead.php— Phase-1-$casts-Refactoring- Viele weitere Models mit Laravel-10-Upgrade-Änderungen
app/Repositories/BookingPDFRepository.php—Storage::disk()->path()statt deprecatedgetAdapter()->getPathPrefix()routes/web.php—/contacts,/contact/*Routenresources/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 dev/backups/phase2-offers-2026-04-17/restore.sh
Das Script:
- Prüft, ob Phase 2 auf Live eingespielt wurde (erfordert bewusste Bestätigung)
- Spielt die 18 Migrations-Dateien zurück nach
database/migrations/ - Spielt die 6 Offer-Models zurück nach
app/Models/(inkl. Überschreiben der Legacy-Offer.php) - 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)
- Zeigt einen abschließenden
git statuszur Verifikation
Manuell
Falls das Script fehlschlägt oder man einzelne Teile prüfen möchte:
Migrations zurück:
cp dev/backups/phase2-offers-2026-04-17/FILES/migrations/*.php database/migrations/
Models zurück (WARNUNG: überschreibt Legacy-Offer.php):
cp dev/backups/phase2-offers-2026-04-17/FILES/models/*.php app/Models/
Code-Änderungen aus dem WIP-Sicherheits-Commit (e3dc1af) zurückholen:
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:
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:
# 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