Some checks failed
CD Pipeline / deploy (push) Failing after 59s
- 建立 Gitea Actions CD pipeline (.gitea/workflows/cd.yaml) - 部署模式: rsync Python 檔案至 188 → docker restart (volume mount) - Dockerfile/requirements 變動時自動重建 Docker image - 部署通知: Telegram (開始/成功/失敗) - 健康檢查: https://mo.wooo.work/health (最多 5 次重試) - 同步最新 CLAUDE.md / ADR-008 / memory (2026-04-19) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
227 lines
8.8 KiB
Python
227 lines
8.8 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
測試通知範例 - 發送所有通知類型的範例到 Telegram 和 Line
|
||
讓用戶可以看到實際通知效果並決定是否需要調整
|
||
"""
|
||
import sys
|
||
import os
|
||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||
|
||
from services.notification_manager import NotificationManager
|
||
from datetime import datetime
|
||
|
||
def send_notification_samples():
|
||
"""發送所有通知範例"""
|
||
notifier = NotificationManager()
|
||
|
||
print("=" * 60)
|
||
print("📱 開始發送通知範例...")
|
||
print("=" * 60)
|
||
|
||
# 1. 商品看板爬蟲更新通知
|
||
print("\n1. 發送商品看板爬蟲更新通知...")
|
||
momo_message = (
|
||
"🛍️ 商品看板 更新通知 (2026-01-13 18:30)\n"
|
||
"詳細數據請參閱儀表板: https://mo.wooo.work\n"
|
||
"=========================\n"
|
||
"📈 本日異動摘要:\n"
|
||
" - ▲ 漲價商品: 217 件\n"
|
||
" - ▼ 跌價商品: 217 件\n"
|
||
" - 🟢 新上架: 2 件\n"
|
||
" - 總處理分類: 85 個\n"
|
||
" - 總價格記錄: 4,358 筆"
|
||
)
|
||
notifier._send_line_messages([momo_message])
|
||
notifier._send_telegram_messages([momo_message])
|
||
print(" ✅ 已發送")
|
||
|
||
# 2. EDM 限時搶購更新通知
|
||
print("\n2. 發送 EDM 限時搶購更新通知...")
|
||
edm_message = (
|
||
"📊 🔥 限時搶購 更新通知 (2026-01-13 16:19)\n"
|
||
"完整內容請看:\n"
|
||
"==================================\n"
|
||
"https://mo.wooo.work/edm\n"
|
||
"==================================\n\n"
|
||
"✨ 本輪重點摘要:\n"
|
||
" - 🟢 新增商品: 10 件\n"
|
||
" - 📉 價格下跌: 8 件\n"
|
||
" - ℹ️ 資訊更新: 15 件\n"
|
||
" - 🗑️ 商品下架: 5 件\n\n"
|
||
"--- 📉 價格下跌範例 ---\n\n"
|
||
"Apple iPhone 15 Pro Max 256GB\n"
|
||
"💰 $35,900 (▼ 原 $39,900)\n\n"
|
||
"Sony WH-1000XM5 無線降噪耳機\n"
|
||
"💰 $8,990 (▼ 原 $10,900)"
|
||
)
|
||
notifier._send_line_messages([edm_message])
|
||
notifier._send_telegram_messages([edm_message])
|
||
print(" ✅ 已發送")
|
||
|
||
# 3. 購物節活動更新通知
|
||
print("\n3. 發送購物節活動更新通知...")
|
||
festival_message = (
|
||
"📊 🎉 1.1狂歡購物節 更新通知 (2026-01-13 19:00)\n"
|
||
"完整內容請看:\n"
|
||
"==================================\n"
|
||
"https://mo.wooo.work/edm\n"
|
||
"==================================\n\n"
|
||
"✨ 本輪重點摘要:\n"
|
||
" - 🟢 新增商品: 25 件\n"
|
||
" - 📉 價格下跌: 12 件\n"
|
||
" - 📈 價格上漲: 5 件\n"
|
||
" - ℹ️ 資訊更新: 8 件\n"
|
||
" - ⏳ 時段結束: 5 件"
|
||
)
|
||
notifier._send_line_messages([festival_message])
|
||
notifier._send_telegram_messages([festival_message])
|
||
print(" ✅ 已發送")
|
||
|
||
# 4. Google Drive 自動匯入成功通知
|
||
print("\n4. 發送 Google Drive 自動匯入成功通知...")
|
||
import_success_message = (
|
||
"📊 當日業績自動匯入通知 (2026-01-13 14:30)\n"
|
||
"==============================\n"
|
||
"✅ 匯入狀態:成功\n"
|
||
"📁 處理檔案數:2 個\n"
|
||
"📝 匯入記錄數:1,245 筆\n"
|
||
"📌 訊息:成功匯入 2 個檔案\n"
|
||
"==============================\n"
|
||
"詳細資料請至系統查看"
|
||
)
|
||
notifier._send_line_messages([import_success_message])
|
||
notifier._send_telegram_messages([import_success_message])
|
||
print(" ✅ 已發送")
|
||
|
||
# 5. Google Drive 自動匯入失敗通知
|
||
print("\n5. 發送 Google Drive 自動匯入失敗通知...")
|
||
import_fail_message = (
|
||
"⚠️ 當日業績自動匯入失敗 (2026-01-13 14:30)\n"
|
||
"==============================\n"
|
||
"❌ 匯入狀態:失敗\n"
|
||
"📌 錯誤訊息:Google Drive 連線超時\n"
|
||
"==============================\n"
|
||
"請檢查 Google Drive 設定或手動匯入"
|
||
)
|
||
notifier._send_line_messages([import_fail_message])
|
||
notifier._send_telegram_messages([import_fail_message])
|
||
print(" ✅ 已發送")
|
||
|
||
print("\n" + "=" * 60)
|
||
print("✅ 已完成的通知範例發送完畢!")
|
||
print("=" * 60)
|
||
print("\n請檢查您的 Telegram 和 Line,查看通知效果。")
|
||
print("\n接下來將發送「建議添加的通知」範例...")
|
||
print("=" * 60)
|
||
|
||
# 6. 廠商缺貨郵件發送通知(建議添加)
|
||
print("\n6. 發送廠商缺貨郵件發送通知(建議)...")
|
||
vendor_email_message = (
|
||
"📧 廠商缺貨通知郵件發送報告 (2026-01-13 10:00)\n"
|
||
"==============================\n"
|
||
"✅ 發送狀態:完成\n"
|
||
"📊 總計:\n"
|
||
" - 成功發送:15 個廠商\n"
|
||
" - 失敗:2 個廠商\n"
|
||
" - 缺貨商品總數:87 件\n"
|
||
"==============================\n\n"
|
||
"✅ 成功發送廠商(前3名):\n"
|
||
" - 台灣三星電子(15件)\n"
|
||
" - 華碩電腦(12件)\n"
|
||
" - 微星科技(8件)\n\n"
|
||
"❌ 失敗廠商:\n"
|
||
" - 廠商A(未設定郵件)\n"
|
||
" - 廠商B(郵件發送失敗)"
|
||
)
|
||
notifier._send_line_messages([vendor_email_message])
|
||
notifier._send_telegram_messages([vendor_email_message])
|
||
print(" ✅ 已發送")
|
||
|
||
# 7. 系統錯誤警報通知(建議添加)
|
||
print("\n7. 發送系統錯誤警報通知(建議)...")
|
||
error_alert_message = (
|
||
"🚨 系統錯誤警報 (2026-01-13 15:30)\n"
|
||
"==============================\n"
|
||
"❌ 錯誤類型:爬蟲連續失敗\n"
|
||
"📌 詳細資訊:\n"
|
||
" - EDM 爬蟲已連續失敗 3 次\n"
|
||
" - 最後錯誤:網頁載入超時\n"
|
||
" - 時間:15:15, 15:20, 15:25\n"
|
||
"==============================\n"
|
||
"⚠️ 請立即檢查系統狀態"
|
||
)
|
||
notifier._send_line_messages([error_alert_message])
|
||
notifier._send_telegram_messages([error_alert_message])
|
||
print(" ✅ 已發送")
|
||
|
||
# 8. 備份完成通知(建議添加)
|
||
print("\n8. 發送備份完成通知(建議)...")
|
||
backup_message = (
|
||
"💾 系統備份完成通知 (2026-01-13 02:00)\n"
|
||
"==============================\n"
|
||
"✅ 備份狀態:成功\n"
|
||
"📁 備份檔案:momo_pro_system_backup_20260113_020000_V9.4.zip\n"
|
||
"📦 檔案大小:261 MB\n"
|
||
"⏱️ 備份時間:35 秒\n"
|
||
"📍 備份位置:/backups/\n"
|
||
"=============================="
|
||
)
|
||
notifier._send_line_messages([backup_message])
|
||
notifier._send_telegram_messages([backup_message])
|
||
print(" ✅ 已發送")
|
||
|
||
# 9. 手動匯入完成通知(建議添加)
|
||
print("\n9. 發送手動匯入完成通知(建議)...")
|
||
manual_import_message = (
|
||
"📊 手動業績匯入通知 (2026-01-13 16:45)\n"
|
||
"==============================\n"
|
||
"✅ 匯入狀態:成功\n"
|
||
"👤 操作者:管理員\n"
|
||
"📁 檔案名稱:即時業績_當日_20260113.xlsx\n"
|
||
"📝 匯入記錄數:1,458 筆\n"
|
||
"⏱️ 處理時間:2.3 秒\n"
|
||
"=============================="
|
||
)
|
||
notifier._send_line_messages([manual_import_message])
|
||
notifier._send_telegram_messages([manual_import_message])
|
||
print(" ✅ 已發送")
|
||
|
||
# 10. 每日系統健康報告(建議添加 - 可選)
|
||
print("\n10. 發送每日系統健康報告(建議 - 可選)...")
|
||
daily_health_message = (
|
||
"📊 每日系統健康報告 (2026-01-13 08:00)\n"
|
||
"==============================\n"
|
||
"✅ 系統狀態:正常運行\n\n"
|
||
"📈 昨日統計:\n"
|
||
" - 商品爬蟲:執行 24 次,成功 24 次\n"
|
||
" - EDM 爬蟲:執行 24 次,成功 23 次\n"
|
||
" - 自動匯入:執行 48 次,成功 3 次\n\n"
|
||
"💾 資料庫狀態:\n"
|
||
" - 資料庫大小:574 MB\n"
|
||
" - 商品記錄:286,787 筆\n"
|
||
" - 價格記錄:1,245,678 筆\n\n"
|
||
"💻 服務器狀態:\n"
|
||
" - 記憶體使用:1.6GB / 7.8GB (20%)\n"
|
||
" - 磁碟使用:9.9GB / 20GB (52%)\n"
|
||
" - CPU 使用率:12%\n"
|
||
"=============================="
|
||
)
|
||
notifier._send_line_messages([daily_health_message])
|
||
notifier._send_telegram_messages([daily_health_message])
|
||
print(" ✅ 已發送")
|
||
|
||
print("\n" + "=" * 60)
|
||
print("🎉 所有通知範例已發送完畢!")
|
||
print("=" * 60)
|
||
print("\n請檢查您的 Telegram 和 Line 收到的通知。")
|
||
print("\n討論要點:")
|
||
print("1. 通知內容長度是否合適?")
|
||
print("2. 格式是否易讀?")
|
||
print("3. Emoji 使用是否恰當?")
|
||
print("4. 哪些通知是必要的?哪些可以省略?")
|
||
print("5. 是否需要縮減或調整某些通知的內容?")
|
||
print("\n等待您的反饋... 😊")
|
||
|
||
if __name__ == "__main__":
|
||
send_notification_samples()
|