fix: Pass user_id to Gemini for AI cost tracking
ZOPK news evaluation now properly attributes AI token usage to the user who triggered the evaluation. This enables: - Per-user cost tracking in AI monitoring dashboard - User rankings by AI token consumption - Company-level cost aggregation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
b21b3739d7
commit
421d7c8e89
@ -586,13 +586,14 @@ Przykłady odpowiedzi:
|
||||
{{"relevant": false, "score": 1, "reason": "News sportowy bez związku z przemysłem"}}"""
|
||||
|
||||
|
||||
def evaluate_news_relevance(news_item, gemini_service=None) -> Dict:
|
||||
def evaluate_news_relevance(news_item, gemini_service=None, user_id: int = None) -> Dict:
|
||||
"""
|
||||
Evaluate a single news item for ZOPK relevance using Gemini AI.
|
||||
|
||||
Args:
|
||||
news_item: ZOPKNews object or dict with title, description, source_name, published_at
|
||||
gemini_service: Optional GeminiService instance (uses global if not provided)
|
||||
user_id: ID of the user triggering the evaluation (for cost tracking)
|
||||
|
||||
Returns:
|
||||
Dict with keys: relevant (bool), reason (str), evaluated (bool)
|
||||
@ -636,7 +637,8 @@ def evaluate_news_relevance(news_item, gemini_service=None) -> Dict:
|
||||
response = gemini_service.generate_text(
|
||||
prompt,
|
||||
temperature=0.1,
|
||||
feature='zopk_news_evaluation'
|
||||
feature='zopk_news_evaluation',
|
||||
user_id=user_id
|
||||
)
|
||||
|
||||
# Parse JSON response
|
||||
@ -717,7 +719,7 @@ def reevaluate_news_without_score(db_session, limit: int = 50, user_id: int = No
|
||||
}
|
||||
|
||||
for news in news_to_rescore:
|
||||
result = evaluate_news_relevance(news, gemini)
|
||||
result = evaluate_news_relevance(news, gemini, user_id=user_id)
|
||||
|
||||
if result['evaluated']:
|
||||
news.ai_relevant = result['relevant']
|
||||
@ -798,7 +800,7 @@ def evaluate_pending_news(db_session, limit: int = 50, user_id: int = None) -> D
|
||||
}
|
||||
|
||||
for news in pending_news:
|
||||
result = evaluate_news_relevance(news, gemini)
|
||||
result = evaluate_news_relevance(news, gemini, user_id=user_id)
|
||||
|
||||
if result['evaluated']:
|
||||
news.ai_relevant = result['relevant']
|
||||
|
||||
Loading…
Reference in New Issue
Block a user