Crawler Phase 5 – PHP-Präsentation unter /crawler (T-060..T-069)

ID758
Statuscompleted
Typai_task
Erstellt vonmcp-tasks (ai)
Erstellt2026-04-21 03:08:10.487355
Abgeschlossen2026-04-21 03:18:30.544317

Beschreibung

PHP-MVC-Integration im bestehenden dev.campus.systemische-tools.de: Route /crawler, ReadModels in src/Domain/Crawler/, Infrastructure-Adapter gegen crawler-DB, CrawlerController, HTMX-Views (Liste, Detail, URL, Diff, Errors, Trigger). MaxLOC 80 hart.

Aktionen

Bearbeiten

Ergebnisse

claude (claude) success
Tokens- (In: -, Out: -)
Dauer-
Zeit2026-04-21 03:18:30
Antwort:
Phase 5 PHP-Präsentation abgeschlossen.

Struktur:
- Domain/Crawler/ (ReadModels): CrawlSummary, PageSummary, PageDetail, LinkSummary, ErrorSummary, CrawlStats. Alle final + public readonly properties (P4.1-konform), @responsibility-Header je Datei.
- Infrastructure/Crawler/: CrawlerConnection (PDO-Singleton gegen crawler-DB), CrawlerCrawlRepository, CrawlerPageRepository, CrawlerLinkRepository, CrawlerErrorRepository, CrawlerStatsRepository. Alle Repositories final, je Klasse ≤ 80 LOC, Hydration-Helpers privat.
- ServiceProvider/CrawlerServiceProvider: registriert pdo.crawler + 5 Repos in DI-Container. In services.php eingehängt.
- Controller/ (alle via Constructor-DI, H4-konform):
  * CrawlerController (index, show, errors)
  * CrawlerPageController (show)
  * CrawlerDiffController (show)
  * CrawlerTriggerController (trigger via POST, CSRF-Pflicht, exec() in Background)
- View/crawler/ (alle mit declare(strict_types=1) + @responsibility):
  * index.php — Crawl-Liste + HTMX-Trigger-Formular (CSRF-Header)
  * show.php — Crawl-Detail (Metadaten, Histogramme, erste 200 Seiten)
  * page.php — Page-Detail (SEO-Felder, Quality-Flags, Links)
  * errors.php — Fehleruebersicht
  * diff.php — Diff-Formular
- config/database.php: CRAWLER_DB_* Konstanten.
- routes/web.php: 6 neue Routes unter /crawler.

Quality-Gateways:
- /var/www/scripts/php-check.sh (PHPStan Level 8 strict, PHP-CS-Fixer, Composer Audit, Semgrep OWASP, DI-Check, Interface-Check) — alle grün
- HTMX-Linter (HTMX-C1..C5): PASS auf View/crawler
- Live-Test: curl https://dev.campus.systemische-tools.de/crawler → HTTP 200, enthaelt <h1>Crawler</h1>

Trigger-Flow: POST /crawler/trigger (HTMX + CSRF) → exec() startet Python-CLI im Hintergrund → HTMX-Success-Alert.

← Zurück zur Task-Liste