Protokoll #23884

ID23884
Zeitstempel2025-12-27 15:29:22.878077
Clientroot
IP
Warning: Undefined array key "request_ip" in /var/www/dev.campus.systemische-tools.de/src/View/protokoll/show.php on line 13

Deprecated: htmlspecialchars(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/dev.campus.systemische-tools.de/src/View/protokoll/show.php on line 13
Modellclaude-sonnet-4-20250514
Statuscompleted
Tokens2,614 (Input: 0, Output: 0)
Dauer95 ms
Request-Zeit
Warning: Undefined array key "request_timestamp" in /var/www/dev.campus.systemische-tools.de/src/View/protokoll/show.php on line 18
Response-Zeit-

Warning: Undefined array key "error_message" in /var/www/dev.campus.systemische-tools.de/src/View/protokoll/show.php on line 22

Request

{
    "event": "PreToolUse",
    "tool_name": "mcp__mcp-docs__docs_get",
    "tool_input": {
        "id": 58
    }
}

Response

{
    "tool_response": [
        {
            "type": "text",
            "text": "{\n  \"success\": true,\n  \"doc\": {\n    \"id\": 58,\n    \"parent_id\": 55,\n    \"slug\": \"deployment\",\n    \"path\": \"\/betrieb\/deployment\",\n    \"title\": \"Deployment\",\n    \"description\": \"Synchronisiert Code-Änderungen von der Entwicklungsumgebung zur Produktion. Ermöglicht sicheres Testen auf dev bevor Änderungen live gehen. Bei Problemen kann auf den letzten Stand zurückgerollt werden.\",\n    \"content\": \"<nav class=\\\"breadcrumb\\\">\\n    <a href=\\\"\/docs\\\">Dokumentation<\/a> &raquo; <a href=\\\"\/docs\/server\\\">Server<\/a> &raquo; Deployment\\n<\/nav>\\n\\n<h1>Deployment & Rollback<\/h1>\\n<p>Synchronisiert Code-Änderungen von der Entwicklungsumgebung zur Produktion. Ermöglicht sicheres Testen auf dev bevor Änderungen live gehen. Bei Problemen kann auf den letzten Stand zurückgerollt werden.<\/p>\\n\\n<table>\\n    <tr><th>Script<\/th><td>\/opt\/scripts\/sync-dev-prod.sh<\/td><\/tr>\\n    <tr><th>Richtung<\/th><td>dev → prod<\/td><\/tr>\\n    <tr><th>Pre-Checks<\/th><td>Contract Validation, PHPStan, PHP-CS-Fixer, Composer Audit, Semgrep, PHPUnit<\/td><\/tr>\\n    <tr><th>Rollback<\/th><td>Aus \/backup\/ wiederherstellen<\/td><\/tr>\\n<\/table>\\n\\n<h2>Pre-Deployment Checks<\/h2>\\n<p>Das Sync-Script führt automatisch alle Quality- und Security-Checks durch. Bei Fehlern wird der Sync abgebrochen.<\/p>\\n\\n<h3>Check 1: Contract Validation<\/h3>\\n<table>\\n    <tr><th>Contract<\/th><th>Prüft<\/th><th>Blockiert bei<\/th><\/tr>\\n    <tr><td>View Structure v1.0<\/td><td>CRUD-Views, Struktur<\/td><td>Critical<\/td><\/tr>\\n    <tr><td>HTML Tables v1.0<\/td><td>Modals, Aktionen-Spalte<\/td><td>Critical<\/td><\/tr>\\n    <tr><td>CSS Contract v1.0<\/td><td>Stylelint-Regeln<\/td><td>Major<\/td><\/tr>\\n    <tr><td>Python Pipeline v1.0<\/td><td>Ruff, mypy<\/td><td>Major<\/td><\/tr>\\n    <tr><td>Layered Architecture v1.0<\/td><td>Layer-Grenzen<\/td><td>Critical<\/td><\/tr>\\n    <tr><td>Betriebsdokumentation v1.1<\/td><td>Docs-Struktur<\/td><td>Major<\/td><\/tr>\\n<\/table>\\n<p><strong>Script:<\/strong> <code>\/opt\/scripts\/contract-check.sh<\/code><\/p>\\n<p><strong>Dokumentation:<\/strong> <a href=\\\"\/docs\/modul\/contracts\\\">Contracts<\/a><\/p>\\n\\n<h3>Check 2: PHP Quality Check<\/h3>\\n<table>\\n    <tr><th>Tool<\/th><th>Prüft<\/th><th>Blockiert bei<\/th><\/tr>\\n    <tr><td>PHPStan + Strict Rules<\/td><td>Typen, Null-Safety, Bugs<\/td><td>Errors<\/td><\/tr>\\n    <tr><td>PHP-CS-Fixer<\/td><td>PSR-12 Code Style<\/td><td>Style Issues<\/td><\/tr>\\n    <tr><td>Composer Audit<\/td><td>Dependency CVEs<\/td><td>Vulnerabilities<\/td><\/tr>\\n    <tr><td>Semgrep<\/td><td>OWASP Security<\/td><td>Security Findings<\/td><\/tr>\\n<\/table>\\n\\n<h3>Check 3: PHPUnit Tests<\/h3>\\n<p>Alle Unit-Tests im <code>tests\/<\/code> Verzeichnis müssen bestehen.<\/p>\\n\\n<h3>Bei fehlgeschlagenen Checks<\/h3>\\n<pre><code># Contract Validation fehlgeschlagen:\\n❌ SYNC ABGEBROCHEN: Contract Validation fehlgeschlagen\\n   Behebe die Contract-Violations und versuche es erneut.\\n   Tipp: \/opt\/scripts\/contract-check.sh\\n\\n# PHP Quality Check fehlgeschlagen:\\n❌ SYNC ABGEBROCHEN: PHP Quality Check fehlgeschlagen\\n   Behebe die Fehler und versuche es erneut.\\n   Tipp: \/opt\/scripts\/php-check.sh \/var\/www\/dev.campus.systemische-tools.de --fix<\/code><\/pre>\\n\\n<h2>Deployment ausführen<\/h2>\\n\\n<h3>Standard-Deployment<\/h3>\\n<pre><code>\/opt\/scripts\/sync-dev-prod.sh<\/code><\/pre>\\n\\n<h3>Erwartete Ausgabe (Erfolg)<\/h3>\\n<pre><code>=== Sync Dev → Prod: Sat Dec 20 10:00:00 CET 2025 ===\\n\\n=== Contract Validation ===\\n[1\/6] View Structure Contract v1.0\\n  OK tasks\/*\\n  OK content\/*\\n[2\/6] HTML Tables Contract v1.0\\n  OK HTML Tables geprüft\\n[3\/6] CSS Contract v1.0\\n  OK Stylelint passed\\n[4\/6] Python Pipeline Contract v1.0\\n  OK Ruff + mypy passed\\n[5\/6] Layered Architecture Contract v1.0\\n  OK Layer-Grenzen eingehalten\\n[6\/6] Betriebsdokumentation Contract v1.1\\n  OK Dokumentation strukturell korrekt\\n\\n=== Ergebnis ===\\nCritical: 0\\nMajor: 0\\nMinor: 0\\n\\nPASSED: Alle Contracts erfüllt\\n\\n=== PHP Quality Check ===\\n[1\/4] PHPStan - Static Analysis + Strict Rules\\n✓ PHPStan: OK\\n[2\/4] PHP-CS-Fixer - Code Style (PSR-12)\\n✓ PHP-CS-Fixer: OK\\n[3\/4] Composer Audit - Dependency Vulnerabilities\\n✓ Composer Audit: No vulnerabilities\\n[4\/4] Semgrep - OWASP Security Scan\\n✓ Semgrep: No vulnerabilities\\n\\n=== Summary ===\\nAll checks passed!\\n\\n=== PHPUnit Tests ===\\nPHPUnit 12.5.4\\n✓ All tests passed!\\n\\nsending incremental file list\\nsrc\/Controller\/\\nsrc\/Controller\/HomeController.php\\n...\\n=== Sync abgeschlossen ===<\/code><\/pre>\\n\\n<h2>Was wird synchronisiert<\/h2>\\n<table>\\n    <tr><th>Verzeichnis<\/th><th>Inhalt<\/th><th>rsync-Flags<\/th><\/tr>\\n    <tr><td>src\/<\/td><td>Backend (MVC)<\/td><td>--delete (entfernt gelöschte Dateien)<\/td><\/tr>\\n    <tr><td>app\/<\/td><td>Frontend (MVP)<\/td><td>--delete<\/td><\/tr>\\n    <tr><td>routes\/<\/td><td>Web-Routes<\/td><td>-av<\/td><\/tr>\\n    <tr><td>config\/<\/td><td>Autoloader (ohne config.php)<\/td><td>--exclude='config.php'<\/td><\/tr>\\n    <tr><td>public\/css\/<\/td><td>Stylesheets<\/td><td>--exclude='static-docs'<\/td><\/tr>\\n    <tr><td>public\/js\/<\/td><td>JavaScript<\/td><td>-av<\/td><\/tr>\\n    <tr><td>public\/images\/<\/td><td>Bilder<\/td><td>-av<\/td><\/tr>\\n    <tr><td>public\/index.php<\/td><td>Entry Point<\/td><td>-av<\/td><\/tr>\\n    <tr><td>public\/.htaccess<\/td><td>Apache Config<\/td><td>-av<\/td><\/tr>\\n<\/table>\\n\\n<h2>Was wird NICHT synchronisiert<\/h2>\\n<ul>\\n    <li><strong>config\/config.php<\/strong> - Umgebungsspezifische Einstellungen (APP_DEBUG=false, DB-Credentials)<\/li>\\n    <li><strong>storage\/<\/strong> - Logs, Cache, Sessions (Verzeichnis existiert nur lokal)<\/li>\\n    <li><strong>*.log in src\/, app\/<\/strong> - Log-Dateien werden via --exclude ausgeschlossen<\/li>\\n    <li><strong>public\/static-docs\/<\/strong> - Statische Dokumentation<\/li>\\n<\/ul>\\n\\n<h2>Nach dem Sync<\/h2>\\n<p>Das Script führt automatisch <code>\/opt\/scripts\/fix-permissions.sh<\/code> aus, um die Dateiberechtigungen (www-data:www-data, 755) zu setzen.<\/p>\\n\\n<h2>Rollback-Verfahren<\/h2>\\n<p>Bei Problemen nach dem Deployment kann der vorherige Stand aus dem Backup wiederhergestellt werden.<\/p>\\n\\n<h3>Schritt 1: Backup identifizieren<\/h3>\\n<pre><code># Verfügbare Backups anzeigen\\nls -la \/backup\/\\n\\n# Beispiel-Ausgabe:\\n# drwxr-xr-x 2 root root 4096 Dec 19 23:39 2025-12-19_23-38\\n# drwxr-xr-x 2 root root 4096 Dec 20 03:00 2025-12-20_03-00<\/code><\/pre>\\n\\n<h3>Schritt 2: Backup-Inhalt prüfen<\/h3>\\n<pre><code># Inhalt des Backups anzeigen\\nls -lh \/backup\/2025-12-20_03-00\/\\n\\n# Dateien im www-Archiv auflisten\\ntar -tzf \/backup\/2025-12-20_03-00\/www.tar.gz | head -20<\/code><\/pre>\\n\\n<h3>Schritt 3a: Vollständiger Rollback (prod)<\/h3>\\n<pre><code># Prod-Verzeichnis komplett wiederherstellen\\ncd \/\\ntar -xzf \/backup\/2025-12-20_03-00\/www.tar.gz var\/www\/prod.campus.systemische-tools.de\\n\\n# Berechtigungen setzen\\n\/opt\/scripts\/fix-permissions.sh<\/code><\/pre>\\n\\n<h3>Schritt 3b: Einzelne Dateien wiederherstellen<\/h3>\\n<pre><code># Nur bestimmte Datei extrahieren\\ntar -xzf \/backup\/2025-12-20_03-00\/www.tar.gz \\\\\\n    -C \/ var\/www\/prod.campus.systemische-tools.de\/src\/Controller\/HomeController.php\\n\\n# Ganzes Verzeichnis extrahieren\\ntar -xzf \/backup\/2025-12-20_03-00\/www.tar.gz \\\\\\n    -C \/ var\/www\/prod.campus.systemische-tools.de\/src\/Controller\/<\/code><\/pre>\\n\\n<h3>Schritt 4: Datenbank-Rollback (falls nötig)<\/h3>\\n<pre><code># Dump entpacken\\ngunzip -k \/backup\/2025-12-20_03-00\/mariadb_all.sql.gz\\n\\n# Datenbank wiederherstellen\\nmariadb < \/backup\/2025-12-20_03-00\/mariadb_all.sql\\n\\n# Oder einzelne Datenbank:\\n# 1. Aus Dump extrahieren\\nsed -n '\/^-- Current Database: `ki_system`\/,\/^-- Current Database:\/p' \\\\\\n    \/backup\/2025-12-20_03-00\/mariadb_all.sql > \/tmp\/ki_system.sql\\n\\n# 2. Wiederherstellen\\nmariadb ki_system < \/tmp\/ki_system.sql<\/code><\/pre>\\n\\n<h3>Schritt 5: Verifizieren<\/h3>\\n<pre><code># Website prüfen\\ncurl -I https:\/\/campus.systemische-tools.de\\n\\n# Logs prüfen\\ntail -20 \/var\/www\/prod.campus.systemische-tools.de\/storage\/logs\/*.log<\/code><\/pre>\\n\\n<h2>Notfall-Rollback (Schnell)<\/h2>\\n<p>Wenn die Produktion sofort wiederhergestellt werden muss:<\/p>\\n<pre><code># Letztes Backup finden\\nLATEST=$(ls -1d \/backup\/*\/ | tail -1)\\n\\n# Vollständiger Prod-Rollback\\ncd \/ && tar -xzf \\\"${LATEST}www.tar.gz\\\" var\/www\/prod.campus.systemische-tools.de\\n\\n# Berechtigungen\\n\/opt\/scripts\/fix-permissions.sh\\n\\n# Verifizieren\\ncurl -I https:\/\/campus.systemische-tools.de<\/code><\/pre>\\n\\n<h2>Workflow<\/h2>\\n<pre><code>┌─────────────────────────────────────────────────────────────┐\\n│                    DEPLOYMENT WORKFLOW                       │\\n├─────────────────────────────────────────────────────────────┤\\n│                                                              │\\n│  1. ENTWICKLUNG                                              │\\n│     └── Änderungen auf dev.campus.systemische-tools.de      │\\n│                          ↓                                   │\\n│  2. TESTEN                                                   │\\n│     └── Funktionalität auf dev prüfen                       │\\n│                          ↓                                   │\\n│  3. PRE-CHECKS (automatisch)                                │\\n│     ├── Contract Validation (6 Contracts)                   │\\n│     ├── PHPStan (Typen, Bugs)                               │\\n│     ├── PHP-CS-Fixer (Style)                                │\\n│     ├── Composer Audit (CVEs)                               │\\n│     ├── Semgrep (Security)                                  │\\n│     └── PHPUnit (Tests)                                     │\\n│              ↓ OK              ↓ FAIL                        │\\n│  4. SYNC                    ABBRUCH                          │\\n│     └── rsync dev → prod       └── Fehler beheben           │\\n│              ↓                                               │\\n│  5. VERIFIZIEREN                                            │\\n│     └── Produktion prüfen                                   │\\n│              ↓ OK              ↓ PROBLEM                     │\\n│        FERTIG              ROLLBACK                          │\\n│                                └── Aus Back... [TRUNCATED-e9a727adbaca8fc0]"
        }
    ]
}
← Vorheriger Zur Liste Nächster →