Protokoll #7229
| ID | 7229 |
|---|---|
| Zeitstempel | 2025-12-23 07:56:25.754667 |
| Client | root |
| 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 |
| Modell | claude-sonnet-4-20250514 |
| Status | completed |
| Tokens | 1,390 (Input: 0, Output: 0) |
| Dauer | 190 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": "Edit",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/UseCases\/Pipeline\/PipelineRunStatusUseCase.php",
"old_string": "<?php\n\ndeclare(strict_types=1);\n\nnamespace UseCases\\Pipeline;\n\nuse Infrastructure\\Persistence\\PipelineRepository;\n\n\/**\n * PipelineRunStatusUseCase - Get detailed pipeline run status.\n *\n * Calculates progress, elapsed time, ETA, and detects stalled runs.\n *\/\nclass PipelineRunStatusUseCase",
"new_string": "<?php\n\ndeclare(strict_types=1);\n\nnamespace UseCases\\Pipeline;\n\n\/\/ @responsibility: Ermittelt Pipeline-Status mit Fortschritt und ETA\n\nuse Infrastructure\\Persistence\\PipelineRepository;\n\nclass PipelineRunStatusUseCase"
}
}
Response
{
"tool_response": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/UseCases\/Pipeline\/PipelineRunStatusUseCase.php",
"oldString": "<?php\n\ndeclare(strict_types=1);\n\nnamespace UseCases\\Pipeline;\n\nuse Infrastructure\\Persistence\\PipelineRepository;\n\n\/**\n * PipelineRunStatusUseCase - Get detailed pipeline run status.\n *\n * Calculates progress, elapsed time, ETA, and detects stalled runs.\n *\/\nclass PipelineRunStatusUseCase",
"newString": "<?php\n\ndeclare(strict_types=1);\n\nnamespace UseCases\\Pipeline;\n\n\/\/ @responsibility: Ermittelt Pipeline-Status mit Fortschritt und ETA\n\nuse Infrastructure\\Persistence\\PipelineRepository;\n\nclass PipelineRunStatusUseCase",
"originalFile": "<?php\n\ndeclare(strict_types=1);\n\nnamespace UseCases\\Pipeline;\n\nuse Infrastructure\\Persistence\\PipelineRepository;\n\n\/**\n * PipelineRunStatusUseCase - Get detailed pipeline run status.\n *\n * Calculates progress, elapsed time, ETA, and detects stalled runs.\n *\/\nclass PipelineRunStatusUseCase\n{\n private PipelineRepository $repository;\n\n public function __construct(?PipelineRepository $repository = null)\n {\n $this->repository = $repository ?? new PipelineRepository();\n }\n\n \/**\n * Get detailed run status with progress calculations.\n *\n * @param int $pipelineId Pipeline ID\n * @param int $runId Run ID\n * @return array{success: bool, error?: string, data?: array}\n *\/\n public function execute(int $pipelineId, int $runId): array\n {\n $run = $this->repository->findRunById($runId);\n\n if ($run === null || (int) $run['pipeline_id'] !== $pipelineId) {\n return ['success' => false, 'error' => 'Run nicht gefunden'];\n }\n\n return [\n 'success' => true,\n 'data' => $this->buildStatusData($run),\n ];\n }\n\n \/**\n * Build comprehensive status data from run record.\n *\/\n private function buildStatusData(array $run): array\n {\n $startedAt = strtotime($run['started_at'] ?? 'now');\n $elapsed = time() - $startedAt;\n\n $total = (int) ($run['documents_total'] ?? 0);\n $processed = (int) ($run['documents_processed'] ?? 0);\n $progress = $total > 0 ? min(100, round(($processed \/ $total) * 100)) : 0;\n\n \/\/ Cap processed display to not exceed total\n $processedDisplay = min($processed, $total);\n\n $estimatedRemaining = $this->calculateEta($elapsed, $processed, $total);\n\n $lastUpdate = strtotime($run['last_update_at'] ?? $run['started_at'] ?? 'now');\n $isStalled = (time() - $lastUpdate) > 60 && $run['status'] === 'running';\n\n $isTerminal = in_array($run['status'], ['completed', 'failed', 'cancelled'], true);\n\n return [\n 'status' => $run['status'],\n 'current_step' => $run['current_step'],\n 'current_document' => $run['current_document'],\n 'documents_total' => $total,\n 'documents_processed' => $processedDisplay,\n 'documents_failed' => (int) ($run['documents_failed'] ?? 0),\n 'chunks_created' => (int) ($run['chunks_created'] ?? 0),\n 'embeddings_created' => (int) ($run['embeddings_created'] ?? 0),\n 'progress' => $progress,\n 'elapsed' => $elapsed,\n 'elapsed_formatted' => gmdate('i:s', $elapsed),\n 'estimated_remaining' => $estimatedRemaining,\n 'estimated_formatted' => $estimatedRemaining !== null ? gmdate('i:s', $estimatedRemaining) : null,\n 'log_tail' => $run['log_tail'] ?? '',\n 'is_stalled' => $isStalled,\n 'is_terminal' => $isTerminal,\n 'completed_at' => $run['completed_at'],\n 'error_log' => $run['error_log'],\n ];\n }\n\n \/**\n * Calculate estimated time remaining.\n *\/\n private function calculateEta(int $elapsed, int $processed, int $total): ?int\n {\n if ($processed <= 0 || $total <= $processed) {\n return null;\n }\n\n $avgTimePerDoc = $elapsed \/ $processed;\n $remaining = $total - $processed;\n\n return (int) ($avgTimePerDoc * $remaining);\n }\n}\n",
"structuredPatch": [
{
"oldStart": 4,
"oldLines": 13,
"newStart": 4,
"newLines": 10,
"lines": [
" ",
" namespace UseCases\\Pipeline;",
" ",
"+\/\/ @responsibility: Ermittelt Pipeline-Status mit Fortschritt und ETA",
"+",
" use Infrastructure\\Persistence\\PipelineRepository;",
" ",
"-\/**",
"- * PipelineRunStatusUseCase - Get detailed pipeline run status.",
"- *",
"- * Calculates progress, elapsed time, ETA, and detects stalled runs.",
"- *\/",
" class PipelineRunStatusUseCase",
" {",
" private PipelineRepository $repository;"
]
}
],
"userModified": false,
"replaceAll": false
}
}