fix: trending section blank when scores are stale + trend scorer error isolation
Dashboard _get_trending() was querying scores within 1 day only — if the nightly trend task hadn't run (e.g. worker restarted mid-run), the trending section returned empty. Now falls back through 1→3→7→30 day windows so stale scores always surface something. Trend scorer now wraps per-bill scoring in try/except so a single bad newsapi/gnews call can't abort the entire 1600-bill run. Authored by: Jack Levy
This commit is contained in:
@@ -91,24 +91,27 @@ def calculate_all_trend_scores(self):
|
||||
gtrends_scores = trends_service.get_trends_scores_batch(keyword_groups)
|
||||
|
||||
for i, bill in enumerate(batch):
|
||||
query = bill_queries[i]
|
||||
# NewsAPI + Google News counts (gnews served from 2-hour cache)
|
||||
newsapi_articles = news_service.fetch_newsapi_articles(query, days=30)
|
||||
newsapi_count = len(newsapi_articles)
|
||||
gnews_count = news_service.fetch_gnews_count(query, days=30)
|
||||
gtrends_score = gtrends_scores[i]
|
||||
try:
|
||||
query = bill_queries[i]
|
||||
# NewsAPI + Google News counts (gnews served from 2-hour cache)
|
||||
newsapi_articles = news_service.fetch_newsapi_articles(query, days=30)
|
||||
newsapi_count = len(newsapi_articles)
|
||||
gnews_count = news_service.fetch_gnews_count(query, days=30)
|
||||
gtrends_score = gtrends_scores[i]
|
||||
|
||||
composite = calculate_composite_score(newsapi_count, gnews_count, gtrends_score)
|
||||
composite = calculate_composite_score(newsapi_count, gnews_count, gtrends_score)
|
||||
|
||||
db.add(TrendScore(
|
||||
bill_id=bill.bill_id,
|
||||
score_date=today,
|
||||
newsapi_count=newsapi_count,
|
||||
gnews_count=gnews_count,
|
||||
gtrends_score=gtrends_score,
|
||||
composite_score=composite,
|
||||
))
|
||||
scored += 1
|
||||
db.add(TrendScore(
|
||||
bill_id=bill.bill_id,
|
||||
score_date=today,
|
||||
newsapi_count=newsapi_count,
|
||||
gnews_count=gnews_count,
|
||||
gtrends_score=gtrends_score,
|
||||
composite_score=composite,
|
||||
))
|
||||
scored += 1
|
||||
except Exception as exc:
|
||||
logger.warning(f"Trend scoring skipped for {bill.bill_id}: {exc}")
|
||||
|
||||
db.commit()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user