mirror of
https://github.com/arkorty/B.Tech-Project-III.git
synced 2026-04-19 12:41:48 +00:00
init
This commit is contained in:
73
thirdeye/scripts/test_m3.py
Normal file
73
thirdeye/scripts/test_m3.py
Normal file
@@ -0,0 +1,73 @@
|
||||
"""Test Milestone 3: Signal Extractor, Classifier, and Context Detector working."""
|
||||
import asyncio, os, sys
|
||||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
|
||||
|
||||
DEV_CHAT = """[Alex]: Hey team, I think we should go with PostgreSQL for the main DB. MongoDB is overkill for our relational data.
|
||||
[Priya]: Agreed on Postgres. I'll set up the schema today.
|
||||
[Raj]: Payment module webhook integration is looking tricky. I'll handle it myself since I know the Stripe API best.
|
||||
[Alex]: I'm just gonna hardcode the API URL for now, we'll add env vars when we dockerize.
|
||||
[Sam]: The timeout error on the checkout endpoint is happening again. Third time this week.
|
||||
[Alex]: Just restart the pod for now, I'll look at it after the sprint."""
|
||||
|
||||
PRODUCT_CHAT = """[Lisa]: Users keep asking about dark mode, it comes up in every demo.
|
||||
[Mike]: I think we should prioritize the mobile app over the API this sprint.
|
||||
[Sarah]: No way, API stability is way more important. Two enterprise clients complained last week.
|
||||
[Lisa]: Sarah from Acme literally said 'I would pay double if you had SSO integration.'
|
||||
[Mike]: Competitor X just launched a mobile-first version. We're falling behind."""
|
||||
|
||||
async def test_signal_extractor():
|
||||
from backend.agents.signal_extractor import extract_signals
|
||||
|
||||
print("Testing Signal Extractor (DevLens)...")
|
||||
signals = await extract_signals(DEV_CHAT, "test-dev", lens="dev")
|
||||
print(f" Extracted {len(signals)} signals:")
|
||||
for s in signals:
|
||||
print(f" - [{s.type}] {s.summary[:70]}...")
|
||||
assert len(signals) >= 2, f"Expected >=2 signals, got {len(signals)}"
|
||||
print(f" ✅ DevLens extraction working ({len(signals)} signals)")
|
||||
|
||||
print("\nTesting Signal Extractor (ProductLens)...")
|
||||
signals2 = await extract_signals(PRODUCT_CHAT, "test-product", lens="product")
|
||||
print(f" Extracted {len(signals2)} signals:")
|
||||
for s in signals2:
|
||||
print(f" - [{s.type}] {s.summary[:70]}...")
|
||||
assert len(signals2) >= 2, f"Expected >=2 signals, got {len(signals2)}"
|
||||
print(f" ✅ ProductLens extraction working ({len(signals2)} signals)")
|
||||
|
||||
async def test_classifier():
|
||||
from backend.agents.signal_extractor import extract_signals
|
||||
from backend.agents.classifier import classify_signal
|
||||
|
||||
print("\nTesting Classifier Agent...")
|
||||
signals = await extract_signals(DEV_CHAT, "test-classify", lens="dev")
|
||||
if signals:
|
||||
classified = await classify_signal(signals[0])
|
||||
print(f" Signal: {classified.summary[:60]}")
|
||||
print(f" Sentiment: {classified.sentiment}, Urgency: {classified.urgency}")
|
||||
print(f" Keywords: {classified.keywords}")
|
||||
print(f" ✅ Classifier working")
|
||||
else:
|
||||
print(f" ⚠️ No signals to classify (extractor returned empty)")
|
||||
|
||||
async def test_context_detector():
|
||||
from backend.agents.context_detector import detect_context
|
||||
|
||||
print("\nTesting Context Detector...")
|
||||
result = await detect_context(DEV_CHAT)
|
||||
print(f" Detected: {result['detected_lens']} (confidence: {result['confidence']})")
|
||||
print(f" Evidence: {result['evidence']}")
|
||||
assert result["detected_lens"] == "dev", f"Expected 'dev', got '{result['detected_lens']}'"
|
||||
print(f" ✅ Correctly detected as 'dev'")
|
||||
|
||||
result2 = await detect_context(PRODUCT_CHAT)
|
||||
print(f" Detected: {result2['detected_lens']} (confidence: {result2['confidence']})")
|
||||
assert result2["detected_lens"] == "product", f"Expected 'product', got '{result2['detected_lens']}'"
|
||||
print(f" ✅ Correctly detected as 'product'")
|
||||
|
||||
async def main():
|
||||
await test_signal_extractor()
|
||||
await test_classifier()
|
||||
await test_context_detector()
|
||||
print("\n🎉 MILESTONE 3 PASSED — Core agents working")
|
||||
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user