#!/usr/bin/env python3 """Test script for Brain Query API. Run with: python3 test_brain_api.py This tests the API endpoints without needing the server running. """ import asyncio import sys sys.path.insert(0, '/home/hoffmann_admin/.openclaw/workspace-socrates/hoffdesk-api') from brain.router import ( brain_query, brain_stats, brain_health, list_patterns, QueryRequest ) async def test_health(): """Test health endpoint.""" print("=== Health Check ===") health = await brain_health() print(f"Status: {health.status}") print(f"ChromaDB Available: {health.chromadb_available}") print(f"Collection Ready: {health.collection_ready}") print() async def test_stats(): """Test stats endpoint.""" print("=== Stats ===") stats = await brain_stats() print(f"Total Chunks: {stats.total_chunks}") print(f"Collection: {stats.collection_name}") print(f"Directory: {stats.persist_directory}") print() async def test_patterns(): """Test patterns endpoint.""" print("=== Available Patterns ===") patterns = await list_patterns() for name, info in patterns.items(): print(f"\n{name.upper()}:") print(f" Description: {info['description']}") print(f" Decay: {info['decay']}") print(f" Examples: {', '.join(info['examples'][:2])}") print() async def test_queries(): """Test query endpoints.""" print("=== Query Tests ===\n") test_cases = [ ("Is Friday a half-day?", "logistical"), ("What size is our HVAC filter?", "entity"), ("What was the roofer's name?", "historical"), ] for query, expected_pattern in test_cases: print(f"Query: '{query}'") print(f"Expected Pattern: {expected_pattern}") request = QueryRequest(query=query, pattern="auto", n_results=3) response = await brain_query(request) print(f"Pattern Used: {response.pattern_used}") print(f"Confidence: {response.confidence:.2f} - {response.confidence_message}") print(f"Answer: {response.answer[:150]}...") print(f"Sources: {len(response.sources)}") for s in response.sources[:2]: print(f" - {s.doc_id} ({s.type}, {s.date})") print() async def main(): """Run all tests.""" print("=" * 60) print("Brain Query Interface - API Test") print("=" * 60) print() await test_health() await test_stats() await test_patterns() await test_queries() print("=" * 60) print("All tests complete!") print("=" * 60) if __name__ == "__main__": asyncio.run(main())