Files

43 lines
1.3 KiB
Python

"""通知与续费提醒路由"""
from typing import Optional
from fastapi import APIRouter, Depends, Query
from sqlmodel import Session
from app.core.security import require_api_key
from app.database import get_session
from app.services import notification_service, renewal_service
router = APIRouter(prefix="/api/notify", tags=["notify"])
@router.get("/channels", summary="已配置的通知渠道")
def channels() -> dict:
return {"channels": notification_service.configured_channels()}
@router.post(
"/test",
summary="测试通知渠道",
dependencies=[Depends(require_api_key)],
)
def test_notify() -> dict:
results = notification_service.notify(
"✅ 这是一条来自 vps-manager 的测试通知", subject="vps-manager 测试"
)
return {"notifications": results}
@router.post(
"/renewals",
summary="检查续费并发送提醒",
dependencies=[Depends(require_api_key)],
)
def check_renewals(
threshold: Optional[int] = Query(default=None, description="提醒阈值天数,默认取配置"),
send: bool = Query(default=True, description="是否实际发送(false 仅预览)"),
session: Session = Depends(get_session),
) -> dict:
return renewal_service.check_renewals(session, threshold_days=threshold, send=send)