Anwendungen
KI-Chat
Content Studio
Content Pipeline
Semantic Explorer
Nextcloud
Entwicklung
Tasks
Protokoll
Contracts
Content-Config
Prompts
System Explorer
Ressourcen
Dokumentation
Code Hygiene
File Backup
Contracts
»
layered-architecture-pruefung_v1.0
» Bearbeiten
Contract bearbeiten
Aktuelle Version:
3.2
Neue Version *
Muss sich von der aktuellen Version unterscheiden.
Änderungsbeschreibung
YAML-Inhalt *
contract: name: layered-architecture version: "3.2" status: active description: | Validierung der Schichtenarchitektur (MVC in /src, MVP in /app). v3.0: Erweitert um Supervision-Regeln (Controller als Transport-Layer). v3.1: Pfade korrigiert (src/ Prefix für in_files). v3.2: Regex-Patterns escaped für korrekte Validierung. created: "2025-12-20" updated: "2025-12-22" author: system_generated_under_supervision scope: paths: - "/src/**/*.php" - "/app/**/*.php" excludes: - "/tests/**" - "/scripts/**" - "/public/**" - "/config/**" - "/src/View/docs/**" rules: # === CONTROLLER-REGELN (aus Supervision) === - id: no-pdo-in-controller check_type: forbidden_pattern patterns: - "private PDO" - "->query" - "->prepare" in_files: "src/Controller/**/*.php" severity: critical description: "Controller dürfen kein direktes PDO/SQL verwenden" - id: no-new-repository-in-controller check_type: forbidden_pattern patterns: - "new .*Repository" in_files: "src/Controller/**/*.php" severity: critical description: "Controller dürfen Repositories nicht selbst instanziieren" - id: no-new-service-in-controller check_type: forbidden_pattern patterns: - "new .*Service" in_files: "src/Controller/**/*.php" severity: major description: "Controller dürfen Services nicht selbst instanziieren" - id: no-sql-in-controller check_type: forbidden_pattern patterns: - "SELECT .* FROM" - "INSERT INTO" - "UPDATE .* SET" - "DELETE FROM" in_files: "src/Controller/**/*.php" severity: critical description: "SQL-Statements gehören in Repositories" - id: no-echo-in-controller check_type: forbidden_pattern patterns: - "echo '" - 'echo "' in_files: "src/Controller/**/*.php" severity: major description: "Controller dürfen kein direktes Output erzeugen - nutze view()/partial()/json()" - id: no-parsedown-in-controller check_type: forbidden_pattern patterns: - "new Parsedown" - "Parsedown::" in_files: "src/Controller/**/*.php" severity: major description: "Markdown-Formatierung gehört in Formatter-Klassen" # === DOMAIN-REGELN === - id: no-superglobals-in-domain check_type: forbidden_pattern patterns: - "_GET" - "_POST" - "_SESSION" - "_REQUEST" in_files: "src/Domain/**/*.php" severity: critical description: "Domain darf keine Superglobals verwenden" # === PRESENTER-REGELN === - id: no-sql-in-presenter check_type: forbidden_pattern patterns: - "->query" - "->prepare" - "new PDO" in_files: "app/Presenter/**/*.php" severity: critical description: "Presenter darf kein direktes SQL enthalten" # === PLATZIERUNGS-REGELN === - id: presenter-in-app check_type: forbidden_pattern patterns: - "class .* extends .*Presenter" in_files: "src/**/*.php" severity: critical description: "Presenter gehören nach /app/Presenter, nicht nach /src" - id: controller-not-in-app check_type: forbidden_pattern patterns: - "class .* extends .*Controller" in_files: "app/**/*.php" severity: critical description: "Controller gehören nach /src/Controller, nicht nach /app" enforcement: on_violation: block hook: "/var/www/tools/ki-protokoll/claude-hook/architecture_guard.py" pass_threshold: critical_max: 0 major_max: 2 minor_max: 5 supervision_reference: problems_addressed: - "#1: Controller greifen direkt auf PDO und SQL zu" - "#3: Controller enthalten Geschäfts- und Workflow-Logik" - "#5: Präsentationslogik im Controller" - "#6: Inkonsistente Response-Strategien" - "#8: Controller bauen Abhängigkeiten selbst"
Neue Version speichern
Abbrechen