feat(telegram): enforce canonical product routing

This commit is contained in:
ogt
2026-07-14 19:14:11 +08:00
parent 1431abba54
commit 180e708444
54 changed files with 7746 additions and 740 deletions

View File

@@ -9,8 +9,8 @@
from src.core.config import settings
from src.core.logging import get_logger
from .base import (
ExecutionStatus,
NotificationMessage,
NotificationProvider,
NotificationResult,
@@ -60,16 +60,54 @@ class TelegramWebhookProvider(NotificationProvider):
message="Telegram bot token or chat_id not configured",
)
try:
from src.services.telegram_gateway import get_telegram_gateway
from src.services.telegram_gateway import (
_telegram_send_delivery_succeeded,
get_telegram_gateway,
)
gateway = get_telegram_gateway()
text = self._format(message)
resp = await gateway.send_alert_notification(text=text, parse_mode="HTML")
resp = await gateway.send_alert_notification(
text=text,
parse_mode="HTML",
product_id="awoooi",
signal_family="incident_lifecycle",
severity="P1",
)
response_data = resp if isinstance(resp, dict) else None
if not _telegram_send_delivery_succeeded(resp):
delivery_status = (
str(resp.get("_awooop_delivery_status") or "")
if isinstance(resp, dict)
else ""
)
provider_send_performed = (
resp.get("_awooop_provider_send_performed")
if isinstance(resp, dict)
else None
)
if (
delivery_status == "blocked_no_egress"
or provider_send_performed is False
):
return NotificationResult(
status=NotificationStatus.SKIPPED,
provider=self.name,
message="Telegram notification blocked before provider send",
response_data=response_data,
)
return NotificationResult(
status=NotificationStatus.FAILED,
provider=self.name,
message="Telegram provider did not acknowledge delivery",
response_data=response_data,
error="delivery_not_acknowledged",
)
return NotificationResult(
status=NotificationStatus.SUCCESS,
provider=self.name,
message="Telegram notification sent",
response_data=resp if isinstance(resp, dict) else None,
response_data=response_data,
)
except Exception as e:
logger.exception("telegram_notification_exception", error=str(e))
@@ -88,8 +126,13 @@ class TelegramWebhookProvider(NotificationProvider):
from src.services.telegram_gateway import get_telegram_gateway
gw = get_telegram_gateway()
await gw.send_alert_notification(text="🔔 AWOOOI Telegram provider 連線測試")
return True
result = await gw.send_alert_notification(
text="AWOOOI Telegram provider no-egress policy probe",
product_id="awoooi",
signal_family="product_raw_monitoring",
severity="P3",
)
return bool(result.get("ok"))
except Exception as e:
logger.error("telegram_connection_test_failed", error=str(e))
return False