Crawler Phase 5 – PHP-Präsentation unter /crawler (T-060..T-069)
| ID | 758 |
|---|---|
| Status | completed |
| Typ | ai_task |
| Erstellt von | mcp-tasks (ai) |
| Erstellt | 2026-04-21 03:08:10.487355 |
| Abgeschlossen | 2026-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
Ergebnisse
claude (claude)
success
| Tokens | - (In: -, Out: -) |
|---|---|
| Dauer | - |
| Zeit | 2026-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.