Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,062 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WeaMind CI CodeQL codecov SonarCloud Ask DeepWiki Ruff uv

WeaMind

A smart LINE Bot for Taiwan weather updates.

📖 English 🚀 K8s 部署 📝 系列文章
README.en.md weamind-infra 文章清單

WeaMind 是一個智慧天氣 LINE Bot,透過簡單的操作或文字查詢,提供即時台灣天氣資訊。

本服務完全免費,歡迎贊助我一杯咖啡,或點擊右上角的 ⭐️ 支持我。

快速導覽

使用說明

加入 WeaMind 為好友後,點擊聊天視窗下方的「功能選單」即可開始使用。

WeaMind

1. 智慧文字搜尋

  • 直接輸入「二級行政區」名稱,例如「大安區」、「水上」、「中壢」,就能快速查詢。
  • 系統會自動識別地點並回傳天氣資訊。

2. 設定住家、公司,一鍵查詢天氣

  • 透過「設定地點」功能,預先設定常用地址。
  • 點擊「查住家」或「查公司」即可立即查詢天氣。

3. 快速重複查詢

  • 最近查過」會記錄您最近查詢的 5 個地點(不含住家與公司)。
  • 點擊即可重新查詢,無需重複輸入。

4. 地圖查詢

  • 點擊「地圖查詢」開啟 LINE 地圖介面。
  • 在地圖上選擇任意位置,系統會自動查詢該地點的天氣。
  • 不限於目前所在位置,可查詢任何地點的天氣。

加入好友,開始使用

  1. 掃描下方 QR Code(推薦)或搜尋 LINE ID @370ndhmf 加入 WeaMind。
  2. 點擊功能選單即可開始查詢。

立即體驗智慧天氣查詢!

WeaMind QR Code


開發者技術亮點

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
Loading

Fast ACK Webhook 架構

  • 數十毫秒 ACK:Webhook Handler 收到請求後立即驗證並回應 LINE Platform,避免平台重送。
  • 2 秒內回應:快速 ACK → 背景處理 → 回應用戶。
  • 非阻塞設計:使用 FastAPI BackgroundTasks 處理業務邏輯,不阻塞 webhook 回應。

Redis 分散式鎖

  • 2 秒鎖定機制:避免用戶快速連點造成重複處理。
  • 異常降級策略:Redis 異常時核心服務繼續運作。
  • 選擇性加鎖:僅對按鈕操作加鎖,文字查詢不受影響。

Domain-Driven Design 架構

  • 領域模組劃分core(基礎設施)、user(使用者管理)、line(LINE Bot)、weather(天氣服務)。
  • 分層架構實踐:每個領域模組包含 router.pyservice.pymodels.py 實現三層分離。

pytest 單元測試體系

  • 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(敏感資料防護)。

CI/CD Pipeline

  • 自動化品質檢查:每次 push 執行 Ruff → Pyright → Bandit → pip-audit → pytest + Codecov 完整流程。
  • Image 建置與發布:main 分支在 CI 成功後自動發布 latest image 到 GHCR(支援 amd64/arm64);正式版則由 release workflow 發布語意化版本 tags,例如 1.2.21.21
  • 三重安全掃描:主 CI 流程 + CodeQL(程式碼安全掃描)+ SonarCloud(技術債與品質監控)。
  • Release 驅動的 CD 流程:遵循 Semantic Versioning,Git tag 會自動發布正式版 image,並對 weamind-infra 建立版本更新 PR,完成 app repo 在 CD 中應負責的交付流程。

進一步了解:

About

Your smart LINE assistant for instant Taiwan weather.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages