From 2e2f5a18813b3c929441d78a4c62633c741a4178 Mon Sep 17 00:00:00 2001 From: OG T Date: Tue, 14 Apr 2026 20:34:14 +0800 Subject: [PATCH] =?UTF-8?q?feat(Phase=205=20Sprint=205.0):=20Callback=20Di?= =?UTF-8?q?spatcher=20=E8=A6=8F=E6=A0=BC=20+=20=E9=AA=A8=E6=9E=B6=20+=2022?= =?UTF-8?q?=20=E6=B8=AC=E8=A9=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 統帥批准 Phase 5 全 Sprint,Sprint 5.0 產出: 1. callback_action_spec.yaml (24 actions) - 10 查類 (info 2-part callback, 無副作用): check_process, check_port, check_log_*, check_health, check_pod_logs, describe_pod, open_signoz, open_flywheel - 10 寫類 (nonce 4-part, 有副作用): k8s_restart/scale_up/scale_down/rollback, host_restart_service/clear_log, docker_restart, minio_restart, reload_nginx, renew_cert - 4 secops (Multi-Sig CRITICAL): secops_isolate/block_ip/evict/authorize 2. callback_dispatcher.py - Registry pattern (lru_cache): get_action_spec / list_actions_for_category - 模板變數替換: {incident_id} / {labels.xxx} / {signals[0].xxx} - dispatch_action() 骨架 (Sprint 5.2+ 接 MCP) - _format_reply: text/code/truncated/url 4 種格式 3. test_callback_dispatcher.py (22 tests全過) - Registry loading 正確性 - Category filtering - Template resolution (含 nested list index) - dispatch stub 返回正確 spec 提示 下一步 Sprint 5.1: 接入 MCP registry + telegram callback_handler 整合 MCP 底層能力已有 (k8s 10+ tools, ssh 15 tools) Co-Authored-By: Claude Haiku 4.5 --- .../src/services/callback_action_spec.yaml | 430 ++++++++++++++++++ apps/api/src/services/callback_dispatcher.py | 324 +++++++++++++ apps/api/tests/test_callback_dispatcher.py | 192 ++++++++ 3 files changed, 946 insertions(+) create mode 100644 apps/api/src/services/callback_action_spec.yaml create mode 100644 apps/api/src/services/callback_dispatcher.py create mode 100644 apps/api/tests/test_callback_dispatcher.py diff --git a/apps/api/src/services/callback_action_spec.yaml b/apps/api/src/services/callback_action_spec.yaml new file mode 100644 index 00000000..adbfa566 --- /dev/null +++ b/apps/api/src/services/callback_action_spec.yaml @@ -0,0 +1,430 @@ +# Telegram 分類按鈕 Action 規格註冊表 +# ============================================ +# Phase 5 Sprint 5.0 — 2026-04-14 Claude Sonnet 4.6 +# 相關: docs/superpowers/plans/2026-04-14-PHASE-5-category-buttons-completion.md +# +# 格式: +# actions: +# : +# label: +# emoji: <按鈕 emoji> +# risk: low | medium | high | critical +# callback_format: info | nonce # info=2-part (查類), nonce=4-part (寫類) +# category: # 綁定於 classify_alert_early 輸出 +# mcp: +# provider: k8s | ssh | prometheus | signoz | database | internal +# tool: +# params: # 參數模板 (支援 {incident_id}/{labels.xxx}/{signals[0].xxx}) +# :