{
"event": "PreToolUse",
"tool_name": "Read",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Controller\/ConfigController.php",
"limit": 45
}
}
{
"tool_response": {
"type": "text",
"file": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Controller\/ProtokollController.php",
"content": "<?php\n\nnamespace Controller;\n\nuse Framework\\Controller;\nuse Infrastructure\\Config\\DatabaseFactory;\n\n\/**\n * ProtokollController - KI-Protokoll Ansicht\n *\n * Zeigt KI-Interaktionen aus ki_dev.protokoll.\n * Nur Lesen, kein Erstellen\/Bearbeiten.\n *\/\nclass ProtokollController extends Controller\n{\n private \\PDO $db;\n\n public function __construct()\n {\n $this->db = DatabaseFactory::dev();\n }\n\n \/**\n * GET \/protokoll\n * Liste aller Protokoll-Einträge\n *\/\n public function index(): void\n {\n \/\/ Statistiken\n $stats = $this->db->query(\n 'SELECT\n COUNT(*) as total,\n SUM(CASE WHEN status = \"completed\" THEN 1 ELSE 0 END) as completed,\n SUM(CASE WHEN status = \"error\" THEN 1 ELSE 0 END) as errors,\n COALESCE(SUM(tokens_total), 0) as tokens_total,\n COALESCE(SUM(duration_ms), 0) as duration_total\n FROM protokoll'\n )->fetch();\n\n \/\/ Einträge mit Pagination\n $page = max(1, (int) ($_GET['page'] ?? 1));\n $limit = 50;\n $offset = ($page - 1) * $limit;\n\n $search = $_GET['search'] ?? '';\n $status = $_GET['status'] ?? '';\n $model = $_GET['model'] ?? '';\n\n $sql = 'SELECT id, timestamp, client_name, model_name, status, tokens_total, duration_ms,\n LEFT(request, 200) as request_preview\n FROM protokoll WHERE 1=1';\n $countSql = 'SELECT COUNT(*) FROM protokoll WHERE 1=1';\n $params = [];\n\n if ($search !== '') {\n $sql .= ' AND (request LIKE :search OR response LIKE :search2 OR client_name LIKE :search3)';\n $countSql .= ' AND (request LIKE :search OR response LIKE :search2 OR client_name LIKE :search3)';\n $params['search'] = '%' . $search . '%';\n $params['search2'] = '%' . $search . '%';\n $params['search3'] = '%' . $search . '%';",
"numLines": 60,
"startLine": 1,
"totalLines": 162
}
}
}