first commit
This commit is contained in:
commit
34ea15a54d
246 changed files with 18660 additions and 0 deletions
39
backend/app/services/alerts.py
Normal file
39
backend/app/services/alerts.py
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
from datetime import date, datetime, timedelta, timezone
|
||||
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.config import settings
|
||||
from app.models import AlertDispatch, OutboundClick
|
||||
from app.services.email import send_email
|
||||
|
||||
TICKET_KINDS = ("bookmyshow", "district")
|
||||
|
||||
|
||||
def maybe_notify_click_spike(db: Session) -> None:
|
||||
if not settings.smtp_configured:
|
||||
return
|
||||
|
||||
since = datetime.now(timezone.utc) - timedelta(hours=24)
|
||||
count = (
|
||||
db.query(OutboundClick)
|
||||
.filter(OutboundClick.created_at >= since, OutboundClick.link_kind.in_(TICKET_KINDS))
|
||||
.count()
|
||||
)
|
||||
if count < settings.alert_click_threshold:
|
||||
return
|
||||
|
||||
alert_key = f"click_spike_{date.today().isoformat()}"
|
||||
if db.query(AlertDispatch).filter(AlertDispatch.alert_key == alert_key).first():
|
||||
return
|
||||
|
||||
send_email(
|
||||
subject=f"Desi Clans — ticket click spike ({count} in 24h)",
|
||||
body=(
|
||||
f"Ticket outbound clicks in the last 24 hours: {count}\n"
|
||||
f"Threshold: {settings.alert_click_threshold}\n"
|
||||
f"City: Bengaluru\n"
|
||||
"Check admin analytics for details."
|
||||
),
|
||||
)
|
||||
db.add(AlertDispatch(alert_key=alert_key))
|
||||
db.commit()
|
||||
Loading…
Add table
Add a link
Reference in a new issue