155 lines
4.4 KiB
Bash
155 lines
4.4 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
# Test script for AI Intelligence Layer (no jq required)
|
||
|
|
|
||
|
|
BASE_URL="http://localhost:9000"
|
||
|
|
|
||
|
|
echo "=== AI Intelligence Layer Test Script ==="
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Test 1: Health check
|
||
|
|
echo "1. Testing health endpoint..."
|
||
|
|
curl -s "$BASE_URL/api/health" | python3 -m json.tool
|
||
|
|
echo ""
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Test 2: Brainstorm strategies
|
||
|
|
echo "2. Testing brainstorm endpoint..."
|
||
|
|
echo " (This may take 15-30 seconds...)"
|
||
|
|
|
||
|
|
# Create a temporary Python script to build the request
|
||
|
|
python3 << 'PYEOF' > /tmp/test_request.json
|
||
|
|
import json
|
||
|
|
|
||
|
|
# Load sample data
|
||
|
|
with open('sample_data/sample_enriched_telemetry.json') as f:
|
||
|
|
telemetry = json.load(f)
|
||
|
|
|
||
|
|
with open('sample_data/sample_race_context.json') as f:
|
||
|
|
context = json.load(f)
|
||
|
|
|
||
|
|
# Build request
|
||
|
|
request = {
|
||
|
|
"enriched_telemetry": telemetry,
|
||
|
|
"race_context": context
|
||
|
|
}
|
||
|
|
|
||
|
|
# Write to file
|
||
|
|
print(json.dumps(request, indent=2))
|
||
|
|
PYEOF
|
||
|
|
|
||
|
|
# Make the brainstorm request
|
||
|
|
curl -s -X POST "$BASE_URL/api/strategy/brainstorm" \
|
||
|
|
-H "Content-Type: application/json" \
|
||
|
|
-d @/tmp/test_request.json > /tmp/brainstorm_result.json
|
||
|
|
|
||
|
|
# Parse and display results
|
||
|
|
python3 << 'PYEOF'
|
||
|
|
import json
|
||
|
|
|
||
|
|
try:
|
||
|
|
with open('/tmp/brainstorm_result.json') as f:
|
||
|
|
data = json.load(f)
|
||
|
|
|
||
|
|
if 'strategies' in data:
|
||
|
|
strategies = data['strategies']
|
||
|
|
print(f"✓ Generated {len(strategies)} strategies")
|
||
|
|
print("\nSample strategies:")
|
||
|
|
for s in strategies[:3]:
|
||
|
|
print(f" {s['strategy_id']}. {s['strategy_name']}")
|
||
|
|
print(f" Stops: {s['stop_count']}, Risk: {s['risk_level']}")
|
||
|
|
else:
|
||
|
|
print("✗ Error in brainstorm response:")
|
||
|
|
print(json.dumps(data, indent=2))
|
||
|
|
except Exception as e:
|
||
|
|
print(f"✗ Failed to parse brainstorm result: {e}")
|
||
|
|
PYEOF
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Test 3: Analyze strategies
|
||
|
|
echo "3. Testing analyze endpoint..."
|
||
|
|
echo " (This may take 20-40 seconds...)"
|
||
|
|
|
||
|
|
# Build analyze request
|
||
|
|
python3 << 'PYEOF' > /tmp/analyze_request.json
|
||
|
|
import json
|
||
|
|
|
||
|
|
# Load brainstorm result
|
||
|
|
try:
|
||
|
|
with open('/tmp/brainstorm_result.json') as f:
|
||
|
|
brainstorm = json.load(f)
|
||
|
|
|
||
|
|
if 'strategies' not in brainstorm:
|
||
|
|
print("Error: No strategies found in brainstorm result")
|
||
|
|
exit(1)
|
||
|
|
|
||
|
|
# Load sample data
|
||
|
|
with open('sample_data/sample_enriched_telemetry.json') as f:
|
||
|
|
telemetry = json.load(f)
|
||
|
|
|
||
|
|
with open('sample_data/sample_race_context.json') as f:
|
||
|
|
context = json.load(f)
|
||
|
|
|
||
|
|
# Build analyze request
|
||
|
|
request = {
|
||
|
|
"enriched_telemetry": telemetry,
|
||
|
|
"race_context": context,
|
||
|
|
"strategies": brainstorm['strategies']
|
||
|
|
}
|
||
|
|
|
||
|
|
print(json.dumps(request, indent=2))
|
||
|
|
except Exception as e:
|
||
|
|
print(f"Error building analyze request: {e}")
|
||
|
|
exit(1)
|
||
|
|
PYEOF
|
||
|
|
|
||
|
|
# Make the analyze request
|
||
|
|
curl -s -X POST "$BASE_URL/api/strategy/analyze" \
|
||
|
|
-H "Content-Type: application/json" \
|
||
|
|
-d @/tmp/analyze_request.json > /tmp/analyze_result.json
|
||
|
|
|
||
|
|
# Parse and display results
|
||
|
|
python3 << 'PYEOF'
|
||
|
|
import json
|
||
|
|
|
||
|
|
try:
|
||
|
|
with open('/tmp/analyze_result.json') as f:
|
||
|
|
data = json.load(f)
|
||
|
|
|
||
|
|
if 'top_strategies' in data:
|
||
|
|
print("✓ Analysis complete!")
|
||
|
|
print("\nTop 3 strategies:")
|
||
|
|
for s in data['top_strategies']:
|
||
|
|
print(f"\n{s['rank']}. {s['strategy_name']} ({s['classification']})")
|
||
|
|
print(f" Predicted: P{s['predicted_outcome']['finish_position_most_likely']}")
|
||
|
|
print(f" P3 or better: {s['predicted_outcome']['p1_probability'] + s['predicted_outcome']['p2_probability'] + s['predicted_outcome']['p3_probability']}%")
|
||
|
|
print(f" Risk: {s['risk_assessment']['risk_level']}")
|
||
|
|
|
||
|
|
# Show recommended strategy details
|
||
|
|
rec = data['top_strategies'][0]
|
||
|
|
print("\n" + "="*60)
|
||
|
|
print("RECOMMENDED STRATEGY DETAILS:")
|
||
|
|
print("="*60)
|
||
|
|
print(f"\nEngineer Brief: {rec['engineer_brief']['summary']}")
|
||
|
|
print(f"\nDriver Radio: \"{rec['driver_audio_script']}\"")
|
||
|
|
print(f"\nECU Commands:")
|
||
|
|
print(f" Fuel: {rec['ecu_commands']['fuel_mode']}")
|
||
|
|
print(f" ERS: {rec['ecu_commands']['ers_strategy']}")
|
||
|
|
print(f" Engine: {rec['ecu_commands']['engine_mode']}")
|
||
|
|
|
||
|
|
print("\n" + "="*60)
|
||
|
|
else:
|
||
|
|
print("✗ Error in analyze response:")
|
||
|
|
print(json.dumps(data, indent=2))
|
||
|
|
except Exception as e:
|
||
|
|
print(f"✗ Failed to parse analyze result: {e}")
|
||
|
|
PYEOF
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "=== Test Complete ==="
|
||
|
|
echo "Full results saved to:"
|
||
|
|
echo " - /tmp/brainstorm_result.json"
|
||
|
|
echo " - /tmp/analyze_result.json"
|