158 lines
8.3 KiB
Markdown
158 lines
8.3 KiB
Markdown
# 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
|
|
```
|