關於這個系列

這是一系列關於 Jaba AI 群組點餐系統開發的技術分享文章。Jaba AI 整合了原本的 呷爸看板系統Jaba LINE Bot,重新設計為統一的後端架構。


系統特色:

  • 🤖 自然語言點餐 — 直接說「我要雞腿便當」即可點餐
  • 📸 AI 菜單辨識 — 上傳菜單圖片,自動辨識品項與價格
  • 🔄 即時看板 — Socket.IO 即時更新訂單狀態
  • 🛡️ Prompt Injection 防護 — 完整的 AI 安全機制
  • 👥 多層權限管理 — 超管、群組管理員、成員三層架構
  • ⚡ 完全非同步 — FastAPI + asyncio + asyncpg 高效能設計

總計 6 個系列、11 篇文章,適合想了解現代 Python 後端開發與 AI 整合的工程師參考。


先備知識

在閱讀系列文章之前,建議先了解以下基礎概念:

主題 文章 說明
LINE Bot 基礎 LINE Bot 開發入門:以呷爸點餐系統為例 Messaging API、Webhook 基礎
Claude AI 基礎 架構選擇:Claude CLI 整合與對話設計 CLI vs API、對話管理
Docker 基礎 Docker 基礎概念與常用指令 容器化基礎
FastAPI + Socket.IO 後端架構:FastAPI + Socket.IO 雙向通訊 即時通訊基礎

閱讀建議

完整學習

  1. 從系列一開始,了解專案整合的思路
  2. 系列二掌握核心架構設計
  3. 系列三理解 AI 安全的重要性
  4. 依序閱讀後續系列

特定需求

  • 想學架構設計 → 直接看系列二
  • 想做 AI 安全防護 → 直接看系列三
  • 想整合 LINE Bot v3 SDK → 直接看系列四
  • 想實作 AI 功能 → 直接看系列五

系列一:專案重構之路

從兩個獨立專案整合為統一後端的心路歷程

# 文章 重點
1 從 jaba + jaba-line-bot 到 jaba-ai:專案整合實戰 整合動機、架構決策、踩過的坑

這篇會談到:

  • 為什麼要整合?分散架構的痛點
  • 統一後端的好處與取捨
  • 資料庫 Schema 重新設計
  • API 路由規劃思路

系列二:後端架構設計

Repository Pattern 與事件驅動架構實戰

# 文章 重點
1 Repository Pattern 實作:讓資料層乾淨分離 分層架構、Generic CRUD、依賴注入
2 事件隊列設計:解決 Socket.IO 與 DB Commit 順序問題 ContextVar、事務化通知、一致性保證

這系列會談到:

  • Service → Repository → Model 三層架構
  • 為什麼不直接在 Service 寫 SQL?
  • 前端收到通知但 fetch 不到資料的經典問題
  • commit_and_notify() 模式的設計

系列三:AI 安全與監控

當 AI 遇上惡意輸入,如何保護系統?

# 文章 重點
1 Prompt Injection 防護實作 輸入消毒、規則檢測、安全日誌
2 AI 日誌系統:追蹤每一次對話 對話記錄、Token 統計、異常分析

這系列會談到:

  • 常見的 Prompt Injection 攻擊手法
  • 多層防護策略:輸入清理 + 規則檢測 + 輸出驗證
  • 為什麼需要記錄每一次 AI 對話?
  • 從日誌中發現潛在問題

系列四:LINE Bot 進階開發

從入門到進階,FastAPI + LINE Bot SDK v3

# 文章 重點
1 LINE Bot v3 SDK + FastAPI 非同步整合 SDK v3 差異、非同步處理、簽章驗證
2 LINE 群組權限設計:從申請到審核的完整流程 申請流程、審核機制、狀態機設計

這系列會談到:

  • LINE Bot SDK v3 與 v2 的差異
  • FastAPI 非同步處理 Webhook 事件
  • 群組申請 → 審核 → 啟用的完整流程
  • 三層權限模型的實作

系列五:AI 應用實戰

自然語言點餐與菜單圖片辨識

# 文章 重點
1 自然語言點餐:從使用者輸入到訂單建立 意圖解析、上下文理解、跟單功能
2 菜單圖片 AI 辨識:上傳照片自動建立菜單 圖片處理、Claude Vision、結構化輸出

這系列會談到:

  • 如何讓 AI 理解「我也要」、「+1」、「幫小明點」
  • 對話上下文的維護策略
  • 菜單圖片的預處理
  • 如何讓 AI 輸出結構化的菜單資料

系列六:部署與運維

一鍵啟動、服務管理、生產環境配置

# 文章 重點
1 一鍵啟動腳本設計:從開發到生產的部署體驗 Shell 腳本、參數處理、錯誤處理
2 systemd 服務配置:讓應用程式隨系統啟動 服務定義、自動重啟、日誌管理

這系列會談到:

  • 啟動腳本的設計哲學
  • --db-only--app-only--migrate 等參數設計
  • systemd service 檔案撰寫
  • journalctl 日誌查看技巧

技術棧總覽

層級 技術
後端框架 FastAPI、Uvicorn、python-socketio
資料庫 PostgreSQL 16、SQLAlchemy 2.0 (Async)、asyncpg
資料庫遷移 Alembic
LINE 整合 LINE Bot SDK v3、Messaging API
AI 引擎 Claude (Anthropic API)、Claude Code CLI
即時通訊 Socket.IO
排程任務 APScheduler
套件管理 uv
容器化 Docker Compose
服務管理 systemd

專案結構

jaba-ai/
├── app/                          # 應用程式核心
│   ├── models/                   # SQLAlchemy Models (14 個)
│   ├── repositories/             # Repository Pattern 資料存取層
│   ├── services/                 # 業務邏輯層
│   ├── routers/                  # API 路由層
│   ├── broadcast.py              # 事件隊列與 Socket.IO 廣播
│   ├── config.py                 # 環境變數管理
│   └── database.py               # 非同步資料庫連線
│
├── migrations/                   # Alembic 資料庫遷移
├── static/                       # 前端頁面 (admin, board, line-admin)
├── scripts/                      # 部署腳本 (start.sh, systemd)
├── docs/                         # 詳細文件
├── openspec/                     # OpenSpec 規格管理
│
├── main.py                       # FastAPI 應用程式入口
├── pyproject.toml                # 專案依賴配置
├── docker-compose.yml            # PostgreSQL 容器配置
└── CLAUDE.md                     # Claude Code 專案指引

相關專案文章

這個系列是 Jaba 點餐系統的第三代演進,相關文章:

專案 文章 說明
Jaba 看板 呷爸 jaba - 透過 LINE 群組輕鬆訂餐 第一代:純看板系統
Jaba LINE Bot Jaba LINE Bot - 讓點餐對話進入 LINE 第二代:LINE Bot 整合
Jaba AI 本系列文章 第三代:AI 驅動的統一後端

參考資源

官方文件

相關工具

  • Claude Code - Anthropic 官方 CLI
  • uv - 極速 Python 套件管理器
  • Alembic - 資料庫遷移工具

Happy Coding!