Protokoll #24444

ID24444
Zeitstempel2025-12-27 23:15:59.794636
Clientroot
IP145.224.72.140
Modellclaude-sonnet-4-20250514
Statuscompleted
Tokens1,195 (Input: 94, Output: 1,101)
Dauer120 ms
Request-Zeit2025-12-27 23:15:59.794636
Response-Zeit2025-12-27 23:15:59.914671

Request

{
    "event": "PreToolUse",
    "tool_name": "Edit",
    "tool_input": {
        "file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/UseCases\/Pipeline\/PipelineRunStatusUseCase.php",
        "old_string": "$isStalled = (time() - $lastUpdate) > 60 && $run['status'] === 'running';",
        "new_string": "$isStalled = (time() - $lastUpdate) > Constants::SECONDS_PER_MINUTE && $run['status'] === 'running';"
    }
}

Response

{
    "tool_response": {
        "filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/UseCases\/Pipeline\/PipelineRunStatusUseCase.php",
        "oldString": "$isStalled = (time() - $lastUpdate) > 60 && $run['status'] === 'running';",
        "newString": "$isStalled = (time() - $lastUpdate) > Constants::SECONDS_PER_MINUTE && $run['status'] === 'running';",
        "originalFile": "<?php\n\ndeclare(strict_types=1);\n\nnamespace UseCases\\Pipeline;\n\n\/\/ @responsibility: Ermittelt Pipeline-Status mit Fortschritt und ETA\n\nuse Domain\\Constants;\nuse Domain\\Repository\\PipelineRepositoryInterface;\n\nclass PipelineRunStatusUseCase\n{\n    public function __construct(\n        private PipelineRepositoryInterface $repository\n    ) {\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(Constants::PERCENT_FULL, round(($processed \/ $total) * Constants::PERCENT_FULL)) : 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": 55,
                "oldLines": 7,
                "newStart": 55,
                "newLines": 7,
                "lines": [
                    "         $estimatedRemaining = $this->calculateEta($elapsed, $processed, $total);",
                    " ",
                    "         $lastUpdate = strtotime($run['last_update_at'] ?? $run['started_at'] ?? 'now');",
                    "-        $isStalled = (time() - $lastUpdate) > 60 && $run['status'] === 'running';",
                    "+        $isStalled = (time() - $lastUpdate) > Constants::SECONDS_PER_MINUTE && $run['status'] === 'running';",
                    " ",
                    "         $isTerminal = in_array($run['status'], ['completed', 'failed', 'cancelled'], true);",
                    " "
                ]
            }
        ],
        "userModified": false,
        "replaceAll": false
    }
}
← Vorheriger Zur Liste Nächster →