Protokoll #24723
| ID | 24723 |
|---|---|
| Zeitstempel | 2025-12-28 01:09:05.907965 |
| 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 | 2,665 (Input: 0, Output: 0) |
| Dauer | 91 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": "Read",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Infrastructure\/Config\/PipelineStepConfig.php"
}
}
Response
{
"tool_response": {
"type": "text",
"file": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Infrastructure\/Config\/PipelineStepConfig.php",
"content": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Infrastructure\\Config;\n\n\/\/ @responsibility: Konfiguration für Pipeline-Schritte und Collections\n\nfinal class PipelineStepConfig\n{\n \/**\n * Get all available step types with their configuration.\n *\n * @return array<string, array<string, mixed>>\n *\/\n public static function getStepTypes(): array\n {\n return [\n \/\/ Phase 1: Vorverarbeitung\n 'detect' => [\n 'label' => 'Erkennung',\n 'description' => 'Dateien scannen und Format prüfen',\n 'phase' => 'Vorverarbeitung',\n 'storage' => null,\n ],\n 'validate' => [\n 'label' => 'Validierung',\n 'description' => 'Datei-Prüfung auf Lesbarkeit und Korruption',\n 'phase' => 'Vorverarbeitung',\n 'storage' => null,\n ],\n 'page_split' => [\n 'label' => 'Seitenzerlegung',\n 'description' => 'PDF in Einzelseiten zerlegen für Referenz und Vision-Analyse',\n 'phase' => 'Vorverarbeitung',\n 'storage' => 'ki_content.document_pages',\n ],\n 'vision_analyze' => [\n 'label' => 'Bildanalyse',\n 'description' => 'Seiten via Vision-Modell analysieren, Bilder und Grafiken erkennen',\n 'phase' => 'Vorverarbeitung',\n 'storage' => 'ki_content.document_pages (vision_analysis)',\n 'uses_vision' => true,\n ],\n 'extract' => [\n 'label' => 'Textextraktion',\n 'description' => 'Text extrahieren, OCR für Bilder mit Text',\n 'phase' => 'Vorverarbeitung',\n 'storage' => null,\n ],\n 'structure' => [\n 'label' => 'Strukturerkennung',\n 'description' => 'Überschriften, Listen und Hierarchie erkennen',\n 'phase' => 'Vorverarbeitung',\n 'storage' => 'ki_content.document_sections',\n ],\n 'segment' => [\n 'label' => 'Abschnitte',\n 'description' => 'Logische Dokumentgliederung nach Struktur',\n 'phase' => 'Vorverarbeitung',\n 'storage' => 'ki_content.document_sections',\n ],\n 'chunk' => [\n 'label' => 'Textbausteine',\n 'description' => 'Chunks erstellen (max 800 Token) mit Seitenreferenz',\n 'phase' => 'Vorverarbeitung',\n 'storage' => 'ki_content.chunks',\n ],\n \/\/ Phase 2: Speicherung & Vektorisierung\n 'metadata_store' => [\n 'label' => 'DB-Speicherung',\n 'description' => 'Dokument, Seiten und Chunks in MariaDB speichern',\n 'phase' => 'Speicherung',\n 'storage' => 'ki_content.documents, .document_pages, .chunks',\n ],\n 'embed' => [\n 'label' => 'Vektorisierung',\n 'description' => 'Embeddings erstellen für Vektor-Suche',\n 'phase' => 'Speicherung',\n 'storage' => 'Qdrant: {collection}',\n 'fixed_model' => 'mxbai-embed-large (1024-dim)',\n 'has_collection' => true,\n ],\n 'collection_setup' => [\n 'label' => 'Collection',\n 'description' => 'Qdrant-Collection einrichten falls nötig',\n 'phase' => 'Speicherung',\n 'storage' => 'Qdrant: {collection}',\n ],\n 'vector_store' => [\n 'label' => 'Vektorspeicherung',\n 'description' => 'Vektoren in Qdrant mit MariaDB-ID als Referenz',\n 'phase' => 'Speicherung',\n 'storage' => 'Qdrant: {collection}',\n ],\n 'index_optimize' => [\n 'label' => 'Index-Optimierung',\n 'description' => 'HNSW-Index für schnelle Suche optimieren',\n 'phase' => 'Speicherung',\n 'storage' => 'Qdrant: {collection}',\n ],\n \/\/ Phase 3: Wissensextraktion\n 'knowledge_page' => [\n 'label' => 'Seiten-Wissen',\n 'description' => 'Pro Seite: Entitäten → Semantik → Ontologie → Taxonomie',\n 'phase' => 'Wissen',\n 'storage' => 'ki_content.page_knowledge, .entities, .entity_semantics',\n 'uses_llm' => true,\n ],\n 'knowledge_section' => [\n 'label' => 'Abschnitt-Wissen',\n 'description' => 'Pro Kapitel: Aggregierte Wissensrepräsentation',\n 'phase' => 'Wissen',\n 'storage' => 'ki_content.section_knowledge',\n 'uses_llm' => true,\n ],\n 'knowledge_document' => [\n 'label' => 'Dokument-Wissen',\n 'description' => 'Konsolidierte Gesamtsicht des Dokuments',\n 'phase' => 'Wissen',\n 'storage' => 'ki_content.document_knowledge',\n 'uses_llm' => true,\n ],\n 'knowledge_validate' => [\n 'label' => 'Wissens-Validierung',\n 'description' => 'Abgleich mit DB, Duplikate zusammenführen, neue validieren',\n 'phase' => 'Wissen',\n 'storage' => 'ki_content.entities (merged)',\n ],\n \/\/ Legacy Analyse-Schritte\n 'entity_extract' => [\n 'label' => 'Entitäten (Legacy)',\n 'description' => 'Personen, Organisationen, Konzepte, Methoden erkennen',\n 'phase' => 'Analyse',\n 'storage' => 'ki_content.chunk_entities',\n 'uses_llm' => true,\n ],\n 'relation_extract' => [\n 'label' => 'Beziehungen (Legacy)',\n 'description' => 'Relationen zwischen Entitäten extrahieren',\n 'phase' => 'Analyse',\n 'storage' => 'ki_content.entity_relations',\n 'uses_llm' => true,\n ],\n 'taxonomy_build' => [\n 'label' => 'Taxonomie (Legacy)',\n 'description' => 'Hierarchische Kategorisierung aufbauen',\n 'phase' => 'Analyse',\n 'storage' => 'ki_content.chunk_taxonomy, .taxonomy_terms',\n 'uses_llm' => true,\n ],\n 'semantic_analyze' => [\n 'label' => 'Semantik (Legacy)',\n 'description' => 'Bedeutungs-Analyse, Konzepte und Definitionen',\n 'phase' => 'Analyse',\n 'storage' => 'ki_content.chunk_semantics',\n 'uses_llm' => true,\n ],\n 'summarize' => [\n 'label' => 'Zusammenfassung',\n 'description' => 'Dokument- und Seiten-Zusammenfassungen erstellen',\n 'phase' => 'Analyse',\n 'storage' => 'ki_content.documents (summary), .document_pages',\n 'uses_llm' => true,\n ],\n 'question_generate' => [\n 'label' => 'Fragengenerierung',\n 'description' => 'Beispielfragen für RAG-Chat erstellen',\n 'phase' => 'Analyse',\n 'storage' => 'ki_content.generated_questions',\n 'uses_llm' => true,\n ],\n 'finalize' => [\n 'label' => 'Abschluss',\n 'description' => 'Status finalisieren und Job beenden',\n 'phase' => 'Analyse',\n 'storage' => 'ki_content.documents (status)',\n ],\n 'analyze' => [\n 'label' => 'Analyse (Legacy)',\n 'description' => 'Kombinierte Analyse (veraltet)',\n 'phase' => 'Analyse',\n 'storage' => 'ki_content.chunk_entities, .chunk_semantics',\n 'uses_llm' => true,\n ],\n ];\n }\n\n \/**\n * Get available Qdrant collections.\n *\n * @return array<string, string>\n *\/\n public static function getCollections(): array\n {\n return [\n 'documents' => 'Documents (Schulungsunterlagen)',\n 'mail' => 'Mail (E-Mails)',\n 'entities' => 'Entities (Entitäten)',\n 'knowledge' => 'Knowledge (Wissensbasis)',\n ];\n }\n\n \/**\n * Get default steps for new pipelines.\n *\n * @return array<array<string, mixed>>\n *\/\n public static function getDefaultSteps(): array\n {\n return [\n ['step_type' => 'detect', 'config' => ['hash_algorithm' => 'sha256'], 'sort_order' => 1, 'enabled' => 1],\n ['step_type' => 'extract', 'config' => ['ocr_enabled' => true, 'ocr_language' => 'deu'], 'sort_order' => 2, 'enabled' => 1],\n ['step_type' => 'chunk', 'config' => ['min_size' => 100, 'max_size' => 2000, 'overlap' => 0.1], 'sort_order' => 3, 'enabled' => 1],\n ['step_type' => 'embed', 'config' => ['model' => 'mxbai-embed-large', 'collection' => 'documents', 'dimensions' => 1024], 'sort_order' => 4, 'enabled' => 1],\n ['step_type' => 'analyze', 'config' => ['extract_entities' => true, 'extract_relations' => true, 'classify_taxonomy' => true], 'sort_order' => 5, 'enabled' => 0],\n ];\n }\n\n \/**\n * Get default file extensions.\n *\n * @return array<string>\n *\/\n public static function getDefaultExtensions(): array\n {\n return ['.pdf', '.docx', '.pptx', '.md', '.txt'];\n }\n\n \/**\n * Parse extension string into array.\n *\n * @param string $input\n * @return array<string>\n *\/\n public static function parseExtensions(string $input): array\n {\n $extensions = [];\n $parts = preg_split('\/[\\s,;]+\/', $input);\n\n if ($parts === false) {\n return self::getDefaultExtensions();\n }\n\n foreach ($parts as $ext) {\n $ext = trim($ext);\n if ($ext === '') {\n ... [TRUNCATED-27741db15bfc7a28]",
"numLines": 259,
"startLine": 1,
"totalLines": 259
}
}
}