A smart LINE Bot for Taiwan weather updates.
| 📖 English | 🚀 K8s 部署 | 📝 系列文章 |
|---|---|---|
| README.en.md | weamind-infra | 文章清單 |
WeaMind 是一個智慧天氣 LINE Bot,透過簡單的操作或文字查詢,提供即時台灣天氣資訊。
本服務完全免費,歡迎贊助我一杯咖啡,或點擊右上角的 ⭐️ 支持我。
加入 WeaMind 為好友後,點擊聊天視窗下方的「功能選單」即可開始使用。
- 直接輸入「二級行政區」名稱,例如「
大安區」、「水上」、「中壢」,就能快速查詢。 - 系統會自動識別地點並回傳天氣資訊。
- 透過「
設定地點」功能,預先設定常用地址。 - 點擊「
查住家」或「查公司」即可立即查詢天氣。
- 「
最近查過」會記錄您最近查詢的 5 個地點(不含住家與公司)。 - 點擊即可重新查詢,無需重複輸入。
- 點擊「
地圖查詢」開啟 LINE 地圖介面。 - 在地圖上選擇任意位置,系統會自動查詢該地點的天氣。
- 不限於目前所在位置,可查詢任何地點的天氣。
- 掃描下方 QR Code(推薦)或搜尋 LINE ID
@370ndhmf加入 WeaMind。 - 點擊功能選單即可開始查詢。
立即體驗智慧天氣查詢!
graph TB
LINE[LINE Platform]
REDIS[(Redis<br/>分散式鎖)]
DB[(PostgreSQL<br/>主資料庫)]
DATA[weamind-data<br/>微服務]
subgraph FASTAPI["FastAPI LINE Bot App"]
WEB[Webhook Handler]
BG[Background Tasks]
end
LINE -->|Webhook| WEB
WEB -->|Fast ACK<br/>數十毫秒| LINE
WEB -->|非阻塞| BG
BG -->|選擇性鎖定| REDIS
BG <-->|資料讀寫| DB
BG -->|回應用戶<br/>< 2 秒| LINE
DATA -->|每 6 小時<br/>ETL 更新| DB
- 數十毫秒 ACK:Webhook Handler 收到請求後立即驗證並回應 LINE Platform,避免平台重送。
- 2 秒內回應:快速 ACK → 背景處理 → 回應用戶。
- 非阻塞設計:使用 FastAPI
BackgroundTasks處理業務邏輯,不阻塞 webhook 回應。
- 2 秒鎖定機制:避免用戶快速連點造成重複處理。
- 異常降級策略:Redis 異常時核心服務繼續運作。
- 選擇性加鎖:僅對按鈕操作加鎖,文字查詢不受影響。
- 領域模組劃分:
core(基礎設施)、user(使用者管理)、line(LINE Bot)、weather(天氣服務)。 - 分層架構實踐:每個領域模組包含
router.py、service.py、models.py實現三層分離。
- 95% 測試覆蓋率:32+ 測試檔案涵蓋 core、line、weather、user 各模組。
- 獨立測試環境:SQLite 記憶體資料庫 + fixtures,每個測試獨立運行不互相干擾。
- Codecov 監控:每次 PR 自動檢查覆蓋率變化,防止新功能降低測試覆蓋率。
- uv 套件管理:統一的 Python 套件與虛擬環境管理,所有指令使用
uv run執行。 - Ruff 檢查與格式化:取代 Pylint、Black、isort 的全方位工具。
- Pyright 型別檢查:100% Type Hints 覆蓋,確保型別安全。
- pre-commit 自動化:Git commit 前自動執行格式化與檢查。
- 安全掃描工具:Bandit(靜態安全分析)、pip-audit(CVE 檢查)、detect-secrets(敏感資料防護)。
- 自動化品質檢查:每次 push 執行 Ruff → Pyright → Bandit → pip-audit → pytest + Codecov 完整流程。
- Image 建置與發布:main 分支在 CI 成功後自動發布
latestimage 到 GHCR(支援 amd64/arm64);正式版則由 release workflow 發布語意化版本 tags,例如1.2.2、1.2、1。 - 三重安全掃描:主 CI 流程 + CodeQL(程式碼安全掃描)+ SonarCloud(技術債與品質監控)。
- Release 驅動的 CD 流程:遵循 Semantic Versioning,Git tag 會自動發布正式版 image,並對 weamind-infra 建立版本更新 PR,完成 app repo 在 CD 中應負責的交付流程。
進一步了解:
- 專案介紹:WeaMind 專案解析:從單機 LINE Bot 到 K8s 叢集
- 系列文章:WeaMind 系列文章
- 開發者文件:WeaMind DeepWiki

