""" Notification Endpoints """ from datetime import datetime from typing import Literal from uuid import UUID, uuid4 from fastapi import APIRouter from pydantic import BaseModel router = APIRouter() class NotificationChannel(BaseModel): id: str type: Literal["telegram", "slack", "line", "email", "discord", "webhook"] name: str enabled: bool class NotificationRequest(BaseModel): channel_id: str message: str template_id: str | None = None variables: dict | None = None priority: Literal["low", "normal", "high", "urgent"] = "normal" class NotificationResult(BaseModel): id: UUID status: Literal["queued", "sent", "failed"] sent_at: datetime | None = None error: str | None = None # Mock channels MOCK_CHANNELS: list[NotificationChannel] = [ NotificationChannel( id="telegram-ops", type="telegram", name="Ops Team", enabled=True, ), NotificationChannel( id="slack-alerts", type="slack", name="Alerts Channel", enabled=True, ), NotificationChannel( id="email-oncall", type="email", name="On-Call Email", enabled=True, ), ] @router.get("/channels", response_model=list[NotificationChannel]) async def list_notification_channels() -> list[NotificationChannel]: """列出通知頻道""" return MOCK_CHANNELS @router.post("/send", response_model=NotificationResult, status_code=202) async def send_notification(request: NotificationRequest) -> NotificationResult: """發送通知""" # TODO: 實際發送通知 return NotificationResult( id=uuid4(), status="queued", )