記帳網站(一):這次六步都由你帶著 AI 走
吃貨站是老師帶著做;記帳網站只給你一份需求說明書。今天完成前三步與專案規劃,交出提案書、時程表與 PROJECT.md。
本週結束時你會
今天的時間安排
| 0:00–0:15 | 讀需求說明書;回顧吃貨站的專案回顧,挑一條「這次要改進的地方」 |
| 0:15–0:45 | 專案規劃【自己做】提案書、時程與里程碑 |
| 0:45–1:15 | 步驟 ①②③【自己做】使用者故事、頁面、資料表 |
| 1:15–1:25 | 休息 |
| 1:25–2:05 | 建立專案、匯入示範資料、對答案 |
| 2:05–2:30 | 推上 GitHub、連結 Vercel、本週檢核 |
今天老師不示範程式。巡堂時只看兩件事:PROJECT.md 的使用者故事有沒有「才能…」、資料表能不能存下需求說明書的每個欄位。看到學生直接叫 AI「做一個記帳網站」,請他先回到規劃。
拿到的材料
| 檔案 | 內容 |
|---|---|
需求說明書.md | 委託人的話、四個必要功能、規則、驗收標準 |
資料/expenses_範例.csv | 2026 年 9–10 月共 80 筆虛構支出 |
| 專案工具包:提案書、時程與里程碑 | 本週要填的兩份規劃文件 |
四個必要功能:記一筆、記帳列表(月份切換)、刪除(先確認)、月統計(占比與上月比較)。不做登入、不做匯出。
專案規劃:提案書與時程
打開專案工具包的「① 提案書」。大部分內容可以從需求說明書找到,但「不做的事」和「完成的定義」要你自己判斷。
接著填「② 時程與里程碑」,把三週排好:
| 里程碑 | 產出 | 建議完成 |
|---|---|---|
| M1 規劃完成 | 提案書、PROJECT.md 前三段、示範資料已匯入 | 第 6 週 |
| M2 第一條功能 | 記帳列表可以看、可以切換月份 | 第 7 週前半 |
| M3 所有功能 | 記一筆、刪除、月統計 | 第 7 週 |
| M4 驗收通過 | 自動測試全過、一位同學試用 | 第 8 週前半 |
| M5 上線 | Vercel+Neon 公開網址、Demo | 第 8 週 |
步驟 ①②③:寫 PROJECT.md
建立 程式設計三/ledger-web/,放入 PROJECT_模板.md(改名成 PROJECT.md)與課程套件。
我要做一個記帳網站,需求說明書如下: (貼上需求說明書全文) 請先不要寫程式。依照六步建站法的前三步,問我問題、幫我整理,最後寫進 PROJECT.md: 1. 使用者故事(3–5 條,身為…我想…才能…) 2. 頁面清單(頁面名稱、網址、內容) 3. 資料表設計(欄位、型別、必填、限制),並說明你為什麼這樣設計 技術固定為 Flask、SQLite、Jinja、Pico.css。
檢查你的資料表設計
需求說明書的每一條規則,都要能在資料表或程式中找到對應:
| 規則 | 資料表可以怎麼擋 |
|---|---|
| 金額 1–1,000,000 整數 | INTEGER 加上 CHECK (amount BETWEEN 1 AND 1000000) |
| 項目必填、最多 30 字 | NOT NULL 加上 CHECK (length(item) BETWEEN 1 AND 30) |
| 類別五選一 | CHECK (category IN (…)),或另外建一張類別表 |
一張表或兩張表都可以,重點是你說得出理由。
參考版 PROJECT.md 在 practice/s3-3-1_記帳網站/參考解答/ledger-web/PROJECT.md。參考版只用一張表,因為使用者只有一人、類別固定;學生若設計成兩張表(類別獨立成表)也正確,可以請他說明好處與代價。
建立專案並匯入示範資料
請先讀 PROJECT.md。建立 Flask 專案骨架(先不做任何頁面功能): 1. 虛擬環境 .venv、requirements.txt、.gitignore(排除 .venv、instance/、__pycache__、*.db、.env) 2. 依 PROJECT.md 的資料表寫 schema.sql,加一個指令 flask --app app init-db 3. 再加一個指令 flask --app app import-csv 檔案路徑:匯入 date,amount,item,category 格式的 CSV。每一列都要用和網頁相同的規則檢查,格式錯誤的列略過並告訴我第幾列、什麼原因 4. 首頁先只顯示「記帳網站建置中」 完成後執行 init-db 與 import-csv ../資料/expenses_範例.csv(路徑依實際位置調整),再用 SQL 告訴我 2026-10 的合計金額與筆數。
對答案
| 檢查 | 正確結果 |
|---|---|
| 匯入結果 | 匯入 80 筆,略過 0 筆 |
| 2026-10 合計 | 4,898 元,40 筆 |
| 2026-09 合計 | 3,946 元,40 筆 |
數字對了,用 git-save 存檔:「建立專案與匯入示範資料」。
推上 GitHub,並連結 Vercel
現在首頁只有一行字,正是第一次連結 Vercel 的好時機:出問題時,要排查的東西最少。
- 對 Antigravity 說:「推上 GitHub。儲存庫名稱 ledger-web,Public。」
- 到 Vercel →「Add New…」→「Project」→ 匯入 ledger-web。Vercel 會自動偵測到 Flask(因為根目錄有 app.py),直接按「Deploy」。
- 打開公開網址,看到「記帳網站建置中」就成功了。
現在線上網站只有首頁能用。不要在線上新增資料:Vercel 主機上的 SQLite 檔案是暫時的,第 8 週換成 Neon 雲端資料庫之前,寫進去的資料都會消失。
部署失敗或打開是錯誤畫面
對 Antigravity 說「準備上線到 Vercel,請做上線前檢查」(vercel-deploy-check skill),並把 Vercel 的 Deployments → Logs 錯誤訊息一起貼上。最常見的原因是 requirements.txt 少了套件,或首頁一打開就去讀還不存在的資料庫。