Files
awoooi/apps/api/src/services/awooop_deeplinks.py
Your Name e8d5eafb9f
Some checks failed
CD Pipeline / build-and-deploy (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / tests (push) Has been cancelled
Code Review / ai-code-review (push) Has been cancelled
fix(api): 連結修復候選草案工作項
2026-06-11 18:40:06 +08:00

81 lines
2.1 KiB
Python

"""Shared AwoooP operator deeplinks used by Telegram-facing services."""
from urllib.parse import quote
from urllib.parse import urlencode
AWOOOP_WEB_BASE_URL = "https://awoooi.wooo.work"
def incident_runs_url(
incident_id: str,
*,
project_id: str = "awoooi",
locale: str = "zh-TW",
) -> str:
safe_project_id = quote(str(project_id or "awoooi"), safe="")
safe_incident_id = quote(str(incident_id or ""), safe="")
return (
f"{AWOOOP_WEB_BASE_URL}/{locale}/awooop/runs"
f"?project_id={safe_project_id}&incident_id={safe_incident_id}"
)
def incident_alerts_url(
incident_id: str,
*,
project_id: str = "awoooi",
locale: str = "zh-TW",
) -> str:
safe_project_id = quote(str(project_id or "awoooi"), safe="")
safe_incident_id = quote(str(incident_id or ""), safe="")
return (
f"{AWOOOP_WEB_BASE_URL}/{locale}/alerts"
f"?project_id={safe_project_id}&incident_id={safe_incident_id}"
)
def incident_truth_chain_button_row(
incident_id: str,
*,
project_id: str = "awoooi",
) -> list[dict[str, str]]:
if not incident_id:
return []
return [
{
"text": "🔎 真相鏈",
"url": incident_alerts_url(incident_id, project_id=project_id),
},
{
"text": "🧭 Runs",
"url": incident_runs_url(incident_id, project_id=project_id),
},
]
def incident_truth_chain_reply_markup(
incident_id: str,
*,
project_id: str = "awoooi",
) -> dict | None:
row = incident_truth_chain_button_row(incident_id, project_id=project_id)
if not row:
return None
return {"inline_keyboard": [row]}
def work_item_url(
work_item_id: str,
*,
incident_id: str = "",
project_id: str = "awoooi",
locale: str = "zh-TW",
) -> str:
params = {
"project_id": str(project_id or "awoooi"),
"work_item_id": str(work_item_id or ""),
}
if incident_id:
params["incident_id"] = str(incident_id)
return f"{AWOOOP_WEB_BASE_URL}/{locale}/awooop/work-items?{urlencode(params)}"