21: --- """Seed demo data for local end-to-end QA: subjects, template, authorized Gmail account (with fake token — sends will fail at the Gmail API boundary, which is exactly what we want to observe in the monitor), recipient list exists already. Run: python3 scripts/seed_demo.py """ import asyncio import sys from datetime import datetime, timedelta, timezone from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parents[1])) from sqlalchemy import select # noqa: E402 from app.db.session import AsyncSessionLocal # noqa: E402 from app.models import ( # noqa: E402 Campaign, EmailTemplate, GmailAccount, OAuthToken, RecipientList, SubjectLine, User, ) DEMO_EMAIL = "tester@example.com" SUBJECTS = [ "Invoice %RandomInvoiceNumber% for %CompanyName%", "Payment reminder for %FirstName%", "Balance due: %RandomTotal% — due %DueDate%", ] TPL_HTML = """