feat: technical, news, and social analysis agents
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
33
agents/social.py
Normal file
33
agents/social.py
Normal file
@@ -0,0 +1,33 @@
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
class SocialAgent:
|
||||
def analyze(self, sentiment: dict, mention_trend: float = 1.0) -> float:
|
||||
total = sentiment.get("total", 0)
|
||||
if total == 0:
|
||||
return 50.0
|
||||
try:
|
||||
pos = sentiment.get("positive", 0)
|
||||
ratio = pos / total
|
||||
sentiment_score = ratio * 100
|
||||
|
||||
if mention_trend > 2.0:
|
||||
trend_bonus = 15
|
||||
elif mention_trend > 1.5:
|
||||
trend_bonus = 10
|
||||
elif mention_trend > 1.0:
|
||||
trend_bonus = 5
|
||||
elif mention_trend < 0.5:
|
||||
trend_bonus = -10
|
||||
else:
|
||||
trend_bonus = 0
|
||||
|
||||
if ratio < 0.4 and mention_trend > 1.5:
|
||||
trend_bonus = -15
|
||||
|
||||
score = sentiment_score + trend_bonus
|
||||
return round(max(0, min(100, score)), 1)
|
||||
except Exception as e:
|
||||
logger.error(f"Social analysis error: {e}")
|
||||
return 50.0
|
||||
Reference in New Issue
Block a user