Files
ewoooc/tests/test_notification_samples.py
ogt 1b4f3a7bbe
Some checks failed
CD Pipeline / deploy (push) Failing after 59s
feat: EwoooC 初始化 — 完整專案推版至 Gitea
- 建立 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>
2026-04-19 01:21:13 +08:00

227 lines
8.8 KiB
Python
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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()