{
"tool_response": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/View\/semantic-explorer\/index.php",
"oldString": " <div class=\"stat-card stat-card--success\">\n <span class=\"stat-card__value\"><?= number_format($chunkStats['embedded'] ?? 0) ?><\/span>\n <span class=\"stat-card__label\">In Qdrant<\/span>\n <\/div>\n<\/div>\n\n<h2>Bereiche<\/h2>",
"newString": " <div class=\"stat-card stat-card--success\">\n <span class=\"stat-card__value\"><?= number_format($chunkStats['embedded'] ?? 0) ?><\/span>\n <span class=\"stat-card__label\">In Qdrant<\/span>\n <\/div>\n<\/div>\n\n<h2>Semantik-Analyse Coverage<\/h2>\n<div class=\"stats-grid\">\n <div class=\"stat-card stat-card--<?= ($textSemanticStats['coverage'] ?? 0) >= 90 ? 'success' : (($textSemanticStats['coverage'] ?? 0) >= 50 ? 'warning' : 'danger') ?>\">\n <span class=\"stat-card__value\"><?= $textSemanticStats['coverage'] ?? 0 ?>%<\/span>\n <span class=\"stat-card__label\">Text-Semantik (<?= number_format($textSemanticStats['analyzed'] ?? 0) ?>\/<?= number_format($textSemanticStats['total'] ?? 0) ?>)<\/span>\n <div class=\"progress-bar\" style=\"margin-top: 0.5rem;\">\n <div class=\"progress-bar__fill\" style=\"width: <?= $textSemanticStats['coverage'] ?? 0 ?>%; background: var(--color-success);\"><\/div>\n <\/div>\n <\/div>\n <div class=\"stat-card stat-card--<?= ($knowledgeSemanticStats['coverage'] ?? 0) >= 90 ? 'success' : (($knowledgeSemanticStats['coverage'] ?? 0) >= 50 ? 'warning' : 'danger') ?>\">\n <span class=\"stat-card__value\"><?= $knowledgeSemanticStats['coverage'] ?? 0 ?>%<\/span>\n <span class=\"stat-card__label\">Knowledge-Semantik (<?= number_format($knowledgeSemanticStats['analyzed'] ?? 0) ?>\/<?= number_format($knowledgeSemanticStats['total'] ?? 0) ?>)<\/span>\n <div class=\"progress-bar\" style=\"margin-top: 0.5rem;\">\n <div class=\"progress-bar__fill\" style=\"width: <?= $knowledgeSemanticStats['coverage'] ?? 0 ?>%; background: var(--color-info);\"><\/div>\n <\/div>\n <\/div>\n<\/div>\n\n<?php if (!empty($textSemanticStats['by_statement_form']) || !empty($knowledgeSemanticStats['by_semantic_role'])): ?>\n<div class=\"grid grid--2\">\n <?php if (!empty($textSemanticStats['by_statement_form'])): ?>\n <div class=\"card\">\n <h3>Text-Semantik: Aussageformen<\/h3>\n <div class=\"tags\">\n <?php foreach ($textSemanticStats['by_statement_form'] as $sf): ?>\n <span class=\"badge badge--primary\"><?= htmlspecialchars($sf['statement_form']) ?> <small>(<?= $sf['count'] ?>)<\/small><\/span>\n <?php endforeach; ?>\n <\/div>\n <?php if (!empty($textSemanticStats['by_intent'])): ?>\n <h4 style=\"margin-top: 1rem;\">Absichten<\/h4>\n <div class=\"tags\">\n <?php foreach ($textSemanticStats['by_intent'] as $intent): ?>\n <span class=\"badge badge--info\"><?= htmlspecialchars($intent['intent']) ?> <small>(<?= $intent['count'] ?>)<\/small><\/span>\n <?php endforeach; ?>\n <\/div>\n <?php endif; ?>\n <\/div>\n <?php endif; ?>\n <?php if (!empty($knowledgeSemanticStats['by_semantic_role'])): ?>\n <div class=\"card\">\n <h3>Knowledge-Semantik: Rollen<\/h3>\n <div class=\"tags\">\n <?php foreach ($knowledgeSemanticStats['by_semantic_role'] as $role): ?>\n <span class=\"badge badge--success\"><?= htmlspecialchars($role['semantic_role']) ?> <small>(<?= $role['count'] ?>)<\/small><\/span>\n <?php endforeach; ?>\n <\/div>\n <?php if (!empty($knowledgeSemanticStats['by_functional_category'])): ?>\n <h4 style=\"margin-top: 1rem;\">Kategorien<\/h4>\n <div class=\"tags\">\n <?php foreach ($knowledgeSemanticStats['by_functional_category'] as $cat): ?>\n <span class=\"badge badge--warning\"><?= htmlspecialchars($cat['functional_category']) ?> <small>(<?= $cat['count'] ?>)<\/small><\/span>\n <?php endforeach; ?>\n <\/div>\n <?php endif; ?>\n <\/div>\n <?php endif; ?>\n<\/div>\n<?php endif; ?>\n\n<h2>Bereiche<\/h2>",
"originalFile": "<?php ob_start(); ?>\n\n<nav class=\"breadcrumb\">\n <a href=\"\/\">Campus KI<\/a> » Semantic Explorer\n<\/nav>\n\n<h1>Semantic Explorer<\/h1>\n<p>Nutzdaten aus Nextcloud mit Chunking und Vektor-Embeddings.<\/p>\n\n<div class=\"stats-grid\">\n <div class=\"stat-card stat-card--primary\">\n <span class=\"stat-card__value\"><?= number_format($docStats['total'] ?? 0) ?><\/span>\n <span class=\"stat-card__label\">Dokumente<\/span>\n <\/div>\n <div class=\"stat-card stat-card--success\">\n <span class=\"stat-card__value\"><?= number_format($docStats['processed'] ?? 0) ?><\/span>\n <span class=\"stat-card__label\">Verarbeitet<\/span>\n <\/div>\n <div class=\"stat-card stat-card--warning\">\n <span class=\"stat-card__value\"><?= number_format($docStats['errors'] ?? 0) ?><\/span>\n <span class=\"stat-card__label\">Fehler<\/span>\n <\/div>\n <div class=\"stat-card stat-card--info\">\n <span class=\"stat-card__value\"><?= number_format($chunkStats['total'] ?? 0) ?><\/span>\n <span class=\"stat-card__label\">Chunks<\/span>\n <\/div>\n <div class=\"stat-card\">\n <span class=\"stat-card__value\"><?= number_format($chunkStats['tokens'] ?? 0) ?><\/span>\n <span class=\"stat-card__label\">Tokens<\/span>\n <\/div>\n <div class=\"stat-card stat-card--success\">\n <span class=\"stat-card__value\"><?= number_format($chunkStats['embedded'] ?? 0) ?><\/span>\n <span class=\"stat-card__label\">In Qdrant<\/span>\n <\/div>\n<\/div>\n\n<h2>Bereiche<\/h2>\n<table data-sortable>\n <thead>\n <tr>\n <th data-sort=\"bereich\">Bereich<\/th>\n <th data-sort=\"beschreibung\">Beschreibung<\/th>\n <th data-sort=\"anzahl\">Anzahl<\/th>\n <\/tr>\n <\/thead>\n <tbody>\n <tr>\n <td><a href=\"\/semantic-explorer\/dokumente\">Dokumente<\/a><\/td>\n <td>PDFs, DOCX, PPTX aus Nextcloud<\/td>\n <td><?= $docStats['total'] ?? 0 ?><\/td>\n <\/tr>\n <tr>\n <td><a href=\"\/semantic-explorer\/chunks\">Chunks<\/a><\/td>\n <td>Semantische Textabschnitte mit Embeddings<\/td>\n <td><?= number_format($chunkStats['total'] ?? 0) ?><\/td>\n <\/tr>\n <tr>\n <td><a href=\"\/semantic-explorer\/entitaeten\">Entitäten<\/a><\/td>\n <td>Personen, Organisationen, Konzepte<\/td>\n <td><?= number_format($semanticStats['entities'] ?? 0) ?><\/td>\n <\/tr>\n <tr>\n <td><a href=\"\/semantic-explorer\/relationen\">Relationen<\/a><\/td>\n <td>Beziehungen zwischen Entitäten<\/td>\n <td><?= number_format($semanticStats['relations'] ?? 0) ?><\/td>\n <\/tr>\n <tr>\n <td><a href=\"\/semantic-explorer\/graph\"><strong>Graph<\/strong><\/a><\/td>\n <td>Visualisierung aller Entitäten und Relationen<\/td>\n <td><?= number_format(($semanticStats['entities'] ?? 0) + ($semanticStats['relations'] ?? 0)) ?><\/td>\n <\/tr>\n <tr>\n <td><a href=\"\/semantic-explorer\/taxonomie\">Taxonomie<\/a><\/td>\n <td>Hierarchische Kategorisierung<\/td>\n <td><?= number_format($semanticStats['taxonomy'] ?? 0) ?><\/td>\n <\/tr>\n <tr>\n <td><a href=\"\/semantic-explorer\/ontologie\">Ontologie<\/a><\/td>\n <td>Konzept-Klassen und Eigenschaften<\/td>\n <td><?= number_format($semanticStats['ontology'] ?? 0) ?><\/td>\n <\/tr>\n <tr>\n <td><a href=\"\/semantic-explorer\/semantik\">Semantik<\/a><\/td>\n <td>Sentiment, Keywords, Zusammenfassungen<\/td>\n <td><?= number_format($semanticStats['semantics'] ?? 0) ?><\/td>\n <\/tr>\n <tr>\n <td><a href=\"\/semantic-explorer\/stopwords\">Stopwords<\/a><\/td>\n <td>Filter fuer Entity-Extraction<\/td>\n <td><?= number_format($semanticStats['stopwords'] ?? 0) ?><\/td>\n <\/tr>\n <tr>\n <td><a href=\"\/semantic-explorer\/suche\">Suche<\/a><\/td>\n <td>Semantische Vektor-Suche<\/td>\n <td>-<\/td>\n <\/tr>\n <\/tbody>\n<\/table>\n\n<?php if (!empty($documents)): ?>\n<h2>Dokumente<\/h2>\n<table data-sortable>\n <thead>\n <tr>\n <th data-sort=\"filename\">Datei<\/th>\n <th data-sort=\"mime_type\">Typ<\/th>\n <th data-sort=\"status\">Status<\/th>\n <th data-sort=\"chunk_count\">Chunks<\/th>\n <th data-sort=\"imported_at\">Importiert<\/th>\n <\/tr>\n <\/thead>\n <tbody>\n <?php foreach ($documents as $doc): ?>\n <tr>\n <td><a href=\"\/semantic-explorer\/dokumente\/<?= $doc['id'] ?>\"><?= htmlspecialchars($doc['filename']) ?><\/a><\/td>\n <td><code><?= htmlspecialchars($doc['mime_type'] ?? '-') ?><\/code><\/td>\n <td><span class=\"badge badge--<?= $doc['status'] ?>\"><?= $doc['status'] ?><\/span><\/td>\n <td><?= $doc['chunk_count'] ?><\/td>\n <td><?= date('d.m.Y H:i', strtotime($doc['imported_at'])) ?><\/td>\n <\/tr>\n <?php endforeach; ?>\n <\/tbody>\n<\/table>\n<?php endif; ?>\n\n<?php if (!empty($recentChunks)): ?>\n<h2>Neueste Chunks<\/h2>\n<table>\n <thead>\n <tr>\n <th>ID<\/th>\n <th>Dokument<\/th>\n <th>Tokens<\/th>\n <th>Status<\/th>\n <th>Inhalt<\/th>\n <\/tr>\n <\/thead>\n <tbody>\n <?php foreach ($recentChunks as $c): ?>\n <tr>\n <td><a href=\"\/semantic-explorer\/chunks\/<?= $c['id'] ?>\">#<?= $c['id'] ?><\/a><\/td>\n <td><?= htmlspecialchars($c['filename']) ?><\/td>\n <td><?= $c['token_count'] ?><\/td>\n <td><?php if ($c['qdrant_id']): ?><span class=\"badge badge--success\">synced<\/span><?php else: ?><span class=\"badge\">pending<\/span><?php endif; ?><\/td>\n <td><?= htmlspecialchars(substr($c['content'], 0, 80)) ?>...<\/td>\n <\/tr>\n <?php endforeach; ?>\n <\/tbody>\n<\/table>\n<?php endif; ?>\n\n<p class=\"links-bar\">\n <a href=\"\/explorer\">Zurueck zum Explorer<\/a> |\n <a href=\"\/semantic-explorer\/suche\">Semantische Suche<\/a>\n<\/p>\n\n<?php $content = ob_get_clean(); ?>\n<?php require VIEW_PATH . '\/layout.php'; ?>\n",
"structuredPatch": [
{
"oldStart": 34,
"oldLines": 6,
"newStart": 34,
"newLines": 65,
"lines": [
" <\/div>",
" <\/div>",
" ",
"+<h2>Semantik-Analyse Coverage<\/h2>",
"+<div class=\"stats-grid\">",
"+ <div class=\"stat-card stat-card--<?= ($textSemanticStats['coverage'] ?? 0) >= 90 ? 'success' : (($textSemanticStats['coverage'] ?? 0) >= 50 ? 'warning' : 'danger') ?>\">",
"+ <span class=\"stat-card__value\"><?= $textSemanticStats['coverage'] ?? 0 ?>%<\/span>",
"+ <span class=\"stat-card__label\">Text-Semantik (<?= number_format($textSemanticStats['analyzed'] ?? 0) ?>\/<?= number_format($textSemanticStats['total'] ?? 0) ?>)<\/span>",
"+ <div class=\"progress-bar\" style=\"margin-top: 0.5rem;\">",
"+ <div class=\"progress-bar__fill\" style=\"width: <?= $textSemanticStats['coverage'] ?? 0 ?>%; background: var(--color-success);\"><\/div>",
"+ <\/div>",
"+ <\/div>",
"+ <div class=\"stat-card stat-card--<?= ($knowledgeSemanticStats['coverage'] ?? 0) >= 90 ? 'success' : (($knowledgeSemanticStats['coverage'] ?? 0) >= 50 ? 'warning' : 'danger') ?>\">",
"+ <span class=\"stat-card__value\"><?= $knowledgeSemanticStats['coverage'] ?? 0 ?>%<\/span>",
"+ <span class=\"stat-card__label\">Knowledge-Semantik (<?= number_format($knowledgeSemanticStats['analyzed'] ?? 0) ?>\/<?= number_format($knowledgeSemanticStats['total'] ?? 0) ?>)<\/span>",
"+ <div class=\"progress-bar\" style=\"margin-top: 0.5rem;\">",
"+ <div class=\"progress-bar__fill\" style=\"width: <?= $knowledgeSemanticStats['coverage'] ?? 0 ?>%; background: var(--color-info);\"><\/div>",
"+ <\/div>",
"+ <\/div>",
"+<\/div>",
"+",
"+<?php if (!empty($textSemanticStats['by_statement_form']) || !empty($knowledgeSemanticStats['by_semantic_role'])): ?>",
"+<div class=\"grid grid--2\">",
"+ <?php if (!empty($textSemanticStats['by_statement_form'])): ?>",
"+ <div class=\"card\">",
"+ <h3>Text-Semantik: Aussageformen<\/h3>",
"+ <div class=\"tags\">",
"+ <?php foreach ($textSemanticStats['by_statement_form'] as $sf): ?>",
"+ <span class=\"badge badge--primary\"><?= htmlspecialchars($sf['statement_form']) ?> <small>(<?= $sf['count'] ?>)<\/small><\/span>",
"+ <?php endforeach; ?>",
"+ <\/div>",
"+ <?php if (!empty($textSemanticStats['by_intent'])): ?>",
"+ <h4 style=\"margin-top: 1rem;\">Absichten<\/h4>",
"+ <div class=\"tags\">",
"+ <?php foreach ($textSemanticStats['by_intent'] as $intent): ?>",
"+ <span class=\"badge badge--info\"><?= htmlspecialchars($intent['intent']) ?> <small>(<?= $intent['count'] ?>)<\/small><\/span>",
"+ <?php endforeach; ?>",
"+ <\/div>",
"+ <?php endif; ?>",
"+ <\/div>",
"+ <?php endif; ?>",
"+ <?php if (!empty($knowledgeSemanticStats['by_semantic_role'])): ?>",
"+ <div class=\"card\">",
"+ <h3>Knowledge-Semantik: Rollen<\/h3>",
"+ <div class=\"tags\">",
"+ <?php foreach ($knowledgeSemanticStats['by_semantic_role'] as $role): ?>",
"+ <span class=\"badge badge--success\"><?= htmlspecialchars($role['semantic_role']) ?> <small>(<?= $role['count'] ?>)<\/small><\/span>",
"+ <?php endforeach; ?>",
"+ <\/div>",
"+ <?php if (!empty($knowledgeSemanticStats['by_functional_category'])): ?>",
"+ <h4 style=\"margin-top: 1rem;\">Kategorien<\/h4>",
"+ <div class=\"tags\">",
"+ <?php foreach ($knowledgeSemanticStats['by_functional_category'] as $cat): ?>",
"+ <span class=\"badge badge--warning\"><?= htmlspecialchars($cat['functional_category']) ?> <small>(<?= $cat['count'] ?>)<\/small><\/span>",
"+ <?php endforeach; ?>",
"+ <\/div>",
"+ <?php endif; ?>",
"+ <\/div>",
"+ <?php endif; ?>",
"+<\/div>",
"+<?php endif; ?>",
"+",
" <h2>Bereiche<\/h2>",
" <table data-sortable>",
" <thead>"
]
}
],
"userModified": false,
"replaceAll": false
}
}