fix: mover alerta de coste a /generate donde está el gasto real
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:
+12
-15
@@ -112,23 +112,8 @@ 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(
|
||||||
@@ -382,6 +367,18 @@ async def cmd_generate(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
|
|||||||
else:
|
else:
|
||||||
await send_chunked(update.message, output)
|
await send_chunked(update.message, output)
|
||||||
|
|
||||||
|
try:
|
||||||
|
stats = await db.get_usage_stats(session_id)
|
||||||
|
total_cost = sum(s.get("total_cost", 0) for s in stats)
|
||||||
|
if total_cost > settings.cost_alert_threshold:
|
||||||
|
await update.message.reply_text(
|
||||||
|
f"⚠️ Coste acumulado de esta sesión: `${total_cost:.4f}`"
|
||||||
|
f" (umbral: `${settings.cost_alert_threshold:.2f}`)",
|
||||||
|
parse_mode=ParseMode.MARKDOWN
|
||||||
|
)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error("Generate failed", error=str(e))
|
logger.error("Generate failed", error=str(e))
|
||||||
await update.message.reply_text(f"❌ Generation failed: {str(e)[:200]}")
|
await update.message.reply_text(f"❌ Generation failed: {str(e)[:200]}")
|
||||||
|
|||||||
Reference in New Issue
Block a user