feat: alerta de coste — aviso si sesión supera COST_ALERT_THRESHOLD
Build & Deploy ResearchOwl / build-and-push (push) Successful in 5s
Build & Deploy ResearchOwl / build-and-push (push) Successful in 5s
This commit is contained in:
@@ -112,8 +112,23 @@ async def run_scheduled_research(bot, chat_id: int, topic: str,
|
|||||||
f"🔍 Investigación completada — analizando novedades…"
|
f"🔍 Investigación completada — analizando novedades…"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
|
async def get_session_cost(session_id: int) -> float:
|
||||||
|
try:
|
||||||
|
stats = await db.get_usage_stats(session_id)
|
||||||
|
return sum(s.get("total_cost", 0) for s in stats)
|
||||||
|
except Exception:
|
||||||
|
return 0.0
|
||||||
|
|
||||||
|
session_cost = await get_session_cost(session_id)
|
||||||
|
cost_warning = ""
|
||||||
|
if session_cost > settings.cost_alert_threshold:
|
||||||
|
cost_warning = (
|
||||||
|
f"\n⚠️ Coste: ${session_cost:.4f}"
|
||||||
|
f" (umbral: ${settings.cost_alert_threshold:.2f})"
|
||||||
|
)
|
||||||
await reporter.done(
|
await reporter.done(
|
||||||
f"✅ Listo — `{scraped}` fuentes · `{chunk_count}` chunks · usa /generate <tipo>"
|
f"✅ Listo — `{scraped}` fuentes · `{chunk_count}` chunks · usa /generate <tipo>"
|
||||||
|
f"{cost_warning}"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
await reporter.done(
|
await reporter.done(
|
||||||
|
|||||||
@@ -33,6 +33,9 @@ class Settings(BaseSettings):
|
|||||||
chunk_overlap: int = Field(100, env="CHUNK_OVERLAP")
|
chunk_overlap: int = Field(100, env="CHUNK_OVERLAP")
|
||||||
quality_threshold: float = Field(0.3, env="QUALITY_THRESHOLD") # 0-1, chunks below discarded
|
quality_threshold: float = Field(0.3, env="QUALITY_THRESHOLD") # 0-1, chunks below discarded
|
||||||
|
|
||||||
|
# Alerts
|
||||||
|
cost_alert_threshold: float = Field(0.15, env="COST_ALERT_THRESHOLD")
|
||||||
|
|
||||||
# App
|
# App
|
||||||
log_level: str = Field("INFO", env="LOG_LEVEL")
|
log_level: str = Field("INFO", env="LOG_LEVEL")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user