diff --git a/.github/workflows/deploy-prod.yml b/.github/workflows/deploy-prod.yml
index db9a8e20..681c0e25 100644
--- a/.github/workflows/deploy-prod.yml
+++ b/.github/workflows/deploy-prod.yml
@@ -269,14 +269,41 @@ jobs:
fi
- name: Send Telegram Notification
- # 沿用 AIOPS 寫法:直接寫 Token (Self-Hosted Runner 內網安全)
+ # Phase 8: 升級為結構化 HTML + Inline Keyboard UX
run: |
STATUS="${{ steps.status.outputs.status }}"
BUILD_TAG="${{ needs.build.outputs.image_tag }}"
+ SHORT_SHA="${{ github.sha }}"
+ SHORT_SHA="${SHORT_SHA:0:7}"
RUN_URL="${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
- if [ "$STATUS" = "success" ]; then EMOJI="✅"; MSG="部署成功"; else EMOJI="❌"; MSG="部署失敗"; fi
- TEXT="${EMOJI} AWOOOI ${MSG} | Env: Prod | Tag: ${BUILD_TAG} | Actor: ${{ github.actor }} | ${RUN_URL}"
- curl -s -X POST "https://api.telegram.org/bot8569720657:AAHdvKf_P2ms-QKFTyqTLtLiqEggz8cpjMk/sendMessage" -d chat_id="5619078117" -d text="${TEXT}"
+ ACTOR="${{ github.actor }}"
+
+ # 根據狀態設定 Emoji 與標題
+ if [ "$STATUS" = "success" ]; then
+ EMOJI="✅"
+ TITLE="部署成功"
+ elif [ "$STATUS" = "warning" ]; then
+ EMOJI="⚠️"
+ TITLE="部署警告"
+ else
+ EMOJI="❌"
+ TITLE="部署失敗"
+ fi
+
+ # HTML 結構化訊息 (使用 \n 換行)
+ MESSAGE="${EMOJI} AWOOOI 部署通知\n\n━━━━━━━━━━━━━━━━━\n📦 狀態: ${TITLE}\n🌍 環境: Production\n🏷️ 版本: ${BUILD_TAG}\n🔗 Commit: ${SHORT_SHA}\n👤 觸發者: ${ACTOR}\n━━━━━━━━━━━━━━━━━"
+
+ # Inline Keyboard 按鈕 (成功時多一個按鈕)
+ if [ "$STATUS" = "success" ]; then
+ KEYBOARD='{"inline_keyboard":[[{"text":"📋 查看部署紀錄","url":"'"${RUN_URL}"'"},{"text":"🚀 開啟正式站","url":"https://awoooi.wooo.work"}]]}'
+ else
+ KEYBOARD='{"inline_keyboard":[[{"text":"📋 查看部署紀錄","url":"'"${RUN_URL}"'"}]]}'
+ fi
+
+ # 發送 Telegram 訊息 (JSON payload with HTML + Inline Keyboard)
+ curl -s -X POST "https://api.telegram.org/bot8569720657:AAHdvKf_P2ms-QKFTyqTLtLiqEggz8cpjMk/sendMessage" \
+ -H "Content-Type: application/json" \
+ -d "{\"chat_id\":\"5619078117\",\"text\":\"${MESSAGE}\",\"parse_mode\":\"HTML\",\"reply_markup\":${KEYBOARD}}"
- name: Send OpenClaw Webhook
if: always()