{
"event": "PreToolUse",
"tool_name": "Write",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/test_taxonomy_search.php",
"content": "<?php\n\/**\n * CLI Test for EnhancedSearchUseCase with Taxonomy Filter\n *\/\n\ndeclare(strict_types=1);\n\nrequire_once __DIR__ . '\/src\/services.php';\n\nuse UseCases\\Search\\EnhancedSearchUseCase;\n\n\/\/ Get container\n$container = require __DIR__ . '\/src\/services.php';\n\necho \"=== Taxonomy Search Test ===\\n\\n\";\n\n\/\/ Test 1: Get chunks filtered by taxonomy term \"Coaching\" (ID: 7)\necho \"[1] Testing chunk_taxonomy table directly...\\n\";\n\n$pdo = $container->get('pdo.content');\n$stmt = $pdo->prepare(\"\n SELECT c.id, ct.confidence, tt.name as taxonomy, LEFT(c.content, 100) as preview\n FROM chunks c\n JOIN chunk_taxonomy ct ON c.id = ct.chunk_id\n JOIN taxonomy_terms tt ON ct.taxonomy_term_id = tt.id\n WHERE tt.name = ?\n ORDER BY ct.confidence DESC\n\");\n$stmt->execute(['Coaching']);\n$results = $stmt->fetchAll(PDO::FETCH_ASSOC);\n\necho \" Found \" . count($results) . \" chunks with 'Coaching' taxonomy:\\n\";\nforeach ($results as $r) {\n echo \" - Chunk {$r['id']} (conf: {$r['confidence']}): \" . substr($r['preview'], 0, 60) . \"...\\n\";\n}\n\n\/\/ Test 2: Verify ChunkTaxonomyRepository\necho \"\\n[2] Testing ChunkTaxonomyRepository...\\n\";\n\ntry {\n $chunkTaxRepo = $container->get(\\Infrastructure\\Persistence\\ChunkTaxonomyRepository::class);\n $mappings = $chunkTaxRepo->findByTaxonomyTermId(7); \/\/ Coaching\n echo \" Repository returned \" . count($mappings) . \" mappings for term ID 7\\n\";\n foreach ($mappings as $m) {\n if (is_array($m)) {\n echo \" - chunk_id: {$m['chunk_id']}, confidence: {$m['confidence']}\\n\";\n } else {\n echo \" - chunk_id: {$m->getChunkId()}, confidence: {$m->getConfidence()->value()}\\n\";\n }\n }\n} catch (Throwable $e) {\n echo \" ERROR: \" . $e->getMessage() . \"\\n\";\n}\n\n\/\/ Test 3: Full taxonomy overview\necho \"\\n[3] Taxonomy Statistics...\\n\";\n$stmt = $pdo->query(\"\n SELECT tt.name, COUNT(ct.id) as chunk_count\n FROM taxonomy_terms tt\n LEFT JOIN chunk_taxonomy ct ON tt.id = ct.taxonomy_term_id\n GROUP BY tt.id, tt.name\n HAVING chunk_count > 0\n ORDER BY chunk_count DESC\n\");\n$stats = $stmt->fetchAll(PDO::FETCH_ASSOC);\n\necho \" Taxonomy terms with mapped chunks:\\n\";\nforeach ($stats as $s) {\n echo \" - {$s['name']}: {$s['chunk_count']} chunks\\n\";\n}\n\necho \"\\n=== Test Complete ===\\n\";\n"
}
}
{
"tool_response": {
"type": "create",
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/test_taxonomy_search.php",
"content": "<?php\n\/**\n * CLI Test for EnhancedSearchUseCase with Taxonomy Filter\n *\/\n\ndeclare(strict_types=1);\n\nrequire_once __DIR__ . '\/src\/services.php';\n\nuse UseCases\\Search\\EnhancedSearchUseCase;\n\n\/\/ Get container\n$container = require __DIR__ . '\/src\/services.php';\n\necho \"=== Taxonomy Search Test ===\\n\\n\";\n\n\/\/ Test 1: Get chunks filtered by taxonomy term \"Coaching\" (ID: 7)\necho \"[1] Testing chunk_taxonomy table directly...\\n\";\n\n$pdo = $container->get('pdo.content');\n$stmt = $pdo->prepare(\"\n SELECT c.id, ct.confidence, tt.name as taxonomy, LEFT(c.content, 100) as preview\n FROM chunks c\n JOIN chunk_taxonomy ct ON c.id = ct.chunk_id\n JOIN taxonomy_terms tt ON ct.taxonomy_term_id = tt.id\n WHERE tt.name = ?\n ORDER BY ct.confidence DESC\n\");\n$stmt->execute(['Coaching']);\n$results = $stmt->fetchAll(PDO::FETCH_ASSOC);\n\necho \" Found \" . count($results) . \" chunks with 'Coaching' taxonomy:\\n\";\nforeach ($results as $r) {\n echo \" - Chunk {$r['id']} (conf: {$r['confidence']}): \" . substr($r['preview'], 0, 60) . \"...\\n\";\n}\n\n\/\/ Test 2: Verify ChunkTaxonomyRepository\necho \"\\n[2] Testing ChunkTaxonomyRepository...\\n\";\n\ntry {\n $chunkTaxRepo = $container->get(\\Infrastructure\\Persistence\\ChunkTaxonomyRepository::class);\n $mappings = $chunkTaxRepo->findByTaxonomyTermId(7); \/\/ Coaching\n echo \" Repository returned \" . count($mappings) . \" mappings for term ID 7\\n\";\n foreach ($mappings as $m) {\n if (is_array($m)) {\n echo \" - chunk_id: {$m['chunk_id']}, confidence: {$m['confidence']}\\n\";\n } else {\n echo \" - chunk_id: {$m->getChunkId()}, confidence: {$m->getConfidence()->value()}\\n\";\n }\n }\n} catch (Throwable $e) {\n echo \" ERROR: \" . $e->getMessage() . \"\\n\";\n}\n\n\/\/ Test 3: Full taxonomy overview\necho \"\\n[3] Taxonomy Statistics...\\n\";\n$stmt = $pdo->query(\"\n SELECT tt.name, COUNT(ct.id) as chunk_count\n FROM taxonomy_terms tt\n LEFT JOIN chunk_taxonomy ct ON tt.id = ct.taxonomy_term_id\n GROUP BY tt.id, tt.name\n HAVING chunk_count > 0\n ORDER BY chunk_count DESC\n\");\n$stats = $stmt->fetchAll(PDO::FETCH_ASSOC);\n\necho \" Taxonomy terms with mapped chunks:\\n\";\nforeach ($stats as $s) {\n echo \" - {$s['name']}: {$s['chunk_count']} chunks\\n\";\n}\n\necho \"\\n=== Test Complete ===\\n\";\n",
"structuredPatch": [],
"originalFile": null
}
}