iT邦幫忙

2026 iThome 鐵人賽

DAY 30
0
AI Engineering

30天用 Claude Code + LangGraph 實作個人化 AI 學習教練系列 第 30 篇

Day 30:發表與收尾 - 從 Prototype 到 Product

  • 分享至 

  • xImage
  •  

Day 30:發表與收尾 - 從 Prototype 到 Product

30 天走到最後。系統已經有登入、AI 生成計畫、排程提醒、測試和雲端部署,但別人看不懂怎麼用、怎麼跑起來,它就只能待在電腦裡。

今天不寫新功能,只做三件事:寫一份能讓新人快速上手的 README、畫一張架構圖、把端對端流程走一遍。最後回頭看 30 天的收穫。


一、README:讓人 5 分鐘內跑起來

README 是專案首頁,至少要回答四個問題:這是什麼、能做什麼、怎麼跑、怎麼部署。

專案簡介

用 FastAPI 做後端、Next.js 做前端、LangGraph 做 Agent,搭配本機 Ollama 模型。不依賴雲端 LLM API,資料留在自己的機器上。

核心功能

  • 用戶註冊與登入(JWT)
  • AI 依學習目標生成計畫,使用者可審核與調整
  • 每日排程提醒與週回顧
  • 每日測驗,低分主題自動排進複習
  • 和教練流式對話
  • 儀表板顯示完成率、學習時數與進度

快速開始

# 1. 準備模型
ollama pull llama3.1:8b

# 2. 後端
cd backend && pip install -r requirements.txt && uvicorn main:app --reload

# 3. 前端
cd frontend && npm install && npm run dev

後端跑在 http://localhost:8000,前端跑在 http://localhost:3000。

已知限制

  • SQLite 不適合正式環境,應換成 PostgreSQL
  • 測驗題目全由 LLM 生成,還沒有自訂題庫
  • 還沒有郵件或推播通知

完整的架構說明放在 ARCHITECTURE.md,演示步驟放在 DEMO.md。


二、架構圖

        用戶瀏覽器 (Next.js)
                │ HTTP
                ▼
        FastAPI API 層
   ┌────────────┼─────────────┐
   ▼            ▼             ▼
 業務邏輯      認證 (JWT)     排程 (APScheduler)
   │
   ▼
 Agent 層 (LangGraph) ──▶ Ollama (本機 LLM)
   │
   ▼
 資料庫 (SQLite / PostgreSQL)

這張圖回答三個問題:請求從哪裡進來、業務邏輯交給誰、資料存在哪裡。


三、端對端演示

從註冊到看到儀表板,大概 9 個階段:

  1. 註冊:建立帳號,自動取得 token
  2. 建立學習檔案:設定程度、每週可用時間與目標
  3. AI 生成計畫:輸入目標,Ollama 產出計畫草案
  4. 審核計畫:可以提出回饋,再批准進入執行
  5. 查看今日任務:排程系統已經推送提醒
  6. 完成任務:記錄實際花時、難度與心得
  7. 和教練對話:回應逐字出現,追問會接著前文
  8. 查看儀表板:完成率、學習時數、連續天數與能力評分
  9. 檢查權限:每個用戶只能看到自己的資料

完整步驟寫在 DEMO.md,這篇只留流程。


四、30 天的收穫

1. 測試抓到手動測試漏掉的 bug

Day 28 補測試時,發現權限檢查漏了某個端點,用戶 A 能看到用戶 B 的資料。手動點過去完全看不出來。

2. 部署環境和本機不一樣

Day 29 上 Render 時,SECRET_KEY 寫死在程式裡、CORS 沒設定、資料庫路徑也不對。教訓是設定要用環境變數,越早測部署,越不會最後才出事。

3. 寫文件會逼自己想清楚

README 和架構文件看起來只是整理,但寫的時候要解釋「為什麼」,才發現有些決策沒有想透。


結語

30 天,一個人,一個想法,變成一套能跑、能部署、能讓別人看懂的系統。不完美,但可以用。


上一篇
Day 29:部署上線(簡化版) - 從本地到生產環境
系列文
30天用 Claude Code + LangGraph 實作個人化 AI 學習教練 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
pst
iT邦新手 5 級 ‧ 2026-10-14 10:44:43

耶!結束了

我要留言

立即登入留言