# Laravel 12

Der Branch `feature/laravel_12` aktualisiert den zuvor gesicherten PHP-8.2-Stand
von Laravel 5.8.30 auf Laravel 12.69.1. PHP bleibt auf 8.2; MariaDB, Daten,
Indizes und die vorhandenen Docker-Umgebungsvariablen bleiben unveraendert.
Es werden keine Migrationen oder Seeder automatisch ausgefuehrt.

## Aenderungen

- Laravel 12, Carbon 3, aktuelle kompatible Excel-3.1- und DataTables-12-Pakete.
- `konekt/html` ersetzt das eingestellte LaravelCollective-Paket und erhaelt
  die verwendete Formular-API. `laravel/ui` erhaelt die bestehenden Loginseiten.
- Laravel-eigene Proxy-/Wartungs-Middleware, Throwable-Fehlerbehandlung,
  typisierte DataTables-Callbacks und PHP-8-Arrayzugriffe.
- Die Laravel-5.8-Vendor-Patches und der Deprecation-Unterdruecker entfallen.
- Aktuelle PHPUnit-Konfiguration, Klassen-Factory und korrigierter
  PSR-4-Dateiname fuer die Hilfsklasse. Vorhandene Views, Datenbankmodelle,
  Suchfilter und Performance-Anpassungen bleiben erhalten.
- Vier schon zuvor defekte, nicht verwendete Routen entfernt: zwei Verweise
  auf den fehlenden AjaxCountdownController sowie die POST-Store-Routen der
  beiden Crawler-Uebersichten. Die verwendeten Ajax-Bearbeitungsrouten bleiben.

## Installation und Start

`composer.lock` und der bereits bisher versionierte `vendor`-Ordner gehoeren
zusammen. Eine frische Installation erfolgt ohne Plattform-Ausnahmen:

```sh
composer install --no-dev --prefer-dist --no-interaction
composer check-platform-reqs --no-dev
```

APP_KEY, Datenbankverbindungen und Serviceadressen aus der bisherigen Umgebung
beibehalten; keine `.env` aus dem Repository ueber eine laufende Konfiguration
kopieren. Lokale Docker-Adressen zeigen innerhalb eines Containers auf diesen
Container, sofern nicht explizit ein anderer Host angegeben wird.

Vor dem Codewechsel Anwendung und Bootstrap-Cache sichern. Anschliessend alte
generierte PHP-Dateien in `bootstrap/cache` entfernen, Paketerkennung sowie
Config-/View-Caches erneuern, die Schreibrechte fuer Laufzeitverzeichnisse
pruefen und Apache/PHP-FPM neu laden. Keine generierten Cache-Dateien aus der
alten Framework-Version weiterverwenden.

Die Docker-Builddateien verhindern alte Bootstrap-Caches im Image; der
Entrypoint erneuert sie auch im persistenten Volume vor dem Apache-Start.
Mit der vorhandenen lokalen `compose.yaml` und `docker/asp.env`:

```sh
docker compose build app
docker compose up -d --no-deps app
```

Diese beiden lokalen Konfigurationsdateien mit Zugangsdaten werden nicht
eingecheckt. Das Upgrade-Image wurde als `asp-app:laravel12-12.69.1` gebaut.
Code und Bootstrap-Cache des vorherigen Containers liegen gesichert unter
`storage/app/deploy-backups/laravel12-before/` im persistenten Storage-Volume.

Die alte Anleitung `PHP82.md` beschreibt ausschliesslich den historischen
Laravel-5.8-Stand. Deren `--ignore-platform-req=php` und Patch-Script gelten hier
nicht mehr. DB-Index-Scripte unter `performance` sind separate Betriebsschritte
und werden durch dieses Upgrade nicht ausgefuehrt.

## Pruefung

```sh
php artisan --version
php artisan route:list
php vendor/bin/phpunit
# Optional gegen die vorhandene, korrekt konfigurierte lokale Datenbank:
ASP_READONLY_DB_TESTS=1 php vendor/bin/phpunit
composer audit
```

Die Standardtests verwenden fuer Loginversuche einen simulierten Provider,
pruefen CSRF/Validierung und aendern keine vorhandenen Konten. Die optionalen
Datenbanktests pruefen Seiten, Paginierung und exakte Zaehler lesend. Kein
`migrate:fresh`, kein Seeder und keine Testdaten in der vorhandenen Datenbank.

## Verbleibende Grenzen

Die externen Services sind lokal weiterhin nicht eingerichtet. Der separate
Stagingdump fehlt; die Vorselektion zeigt dann den vorhandenen Hinweis und
der Daten-Endpunkt liefert HTTP 503. Vollstaendige Import-, Export-, Loesch-
und Matchingablaeufe gegen diese Services sind deshalb nicht abgenommen.
Die bereits dokumentierte Importmodell-Mass-Assignment-Konfiguration wird
nicht pauschal entsperrt. Die Seite mit kommenden Auktionen hat weiterhin
eine langsame Datenbankabfrage; das Framework-Upgrade ersetzt deren
Performance-Optimierung nicht.

Quellen: [Laravel-Upgradehinweise](https://laravel.com/docs/12.x/upgrade),
[DataTables 12](https://yajrabox.com/docs/laravel-datatables/12.0),
[Konekt HTML](https://github.com/artkonekt/html).
