7:    engine the app uses) with a dedicated test database created per session
27:TEST_DATABASE_URL = os.environ.get(
28:    "TEST_DATABASE_URL",
33:def _probe_postgres() -> bool:
36:        from sqlalchemy import create_engine, text
38:        eng = create_engine(POSTGRES_ADMIN_URL, pool_pre_ping=True)
54:def test_app():
59:    from sqlalchemy import create_engine, text
62:    admin = create_engine(POSTGRES_ADMIN_URL, pool_pre_ping=True, isolation_level="AUTOCOMMIT")
72:    config_mod.settings.DATABASE_URL = TEST_DATABASE_URL
84:    eng = create_engine(TEST_DATABASE_URL, pool_pre_ping=True)
93:    admin = create_engine(POSTGRES_ADMIN_URL, pool_pre_ping=True, isolation_level="AUTOCOMMIT")
110:def api(test_app):
113:    from sqlalchemy import create_engine, text
116:    eng = create_engine(TEST_DATABASE_URL)
138:def db_engine(test_app):
139:    from sqlalchemy import create_engine
141:    eng = create_engine(TEST_DATABASE_URL, pool_pre_ping=True)
147:def db(db_engine):
151:    with Session(db_engine, expire_on_commit=False) as s:
155:def csrf_of(client) -> str:
===DLQ===
    """Dead-letter queue (Redis list dlq:send): jobs that exhausted retries."""
    import redis as redis_lib
    from app.core.config import settings
    r = redis_lib.Redis.from_url(settings.REDIS_URL, decode_responses=True)
    try:
        items = r.lrange("dlq:send", 0, -1)
    except Exception as e:  # Redis down — don't 500 the whole logs page
        return {"dlq": [], "total": 0, "error": f"Redis unavailable: {e}"}
    import json as _json
    out = []
    for raw in items:
        try:
            out.append(_json.loads(raw))
        except Exception:
            out.append({"raw": raw[:200]})
    total = len(out)
    start = (page - 1) * page_size
    return {"dlq": out[start:start + page_size], "total": total,
            "page": page, "page_size": page_size}


@router.get("/export")
async def export_logs(campaign_id: int = Query(0),
                      outcome: str = Query(""),
                      db: AsyncSession = Depends(get_db),
                      user: User = Depends(get_current_user)):
