py程式設計(三)課程網站
第 7 週 · 單元 3-1 · 專案一

記帳網站(二):四條功能,一條一條打通

照著吃貨站的節奏,每條功能都走「讀 PROJECT.md → 建置 → 對答案 → 存檔」。差別是這次的提示詞要你自己寫,老師只提供對答案的表格。

W7記帳網站功能實作

本週結束時你會

今天的時間安排

0:00–0:10檢查 M1:示範資料已匯入、PROJECT.md 前三段完成
0:10–0:45功能 1【自己做,有範例提示詞】記帳列表
0:45–1:20功能 2【自己做】記一筆
1:20–1:30休息
1:30–1:55功能 3【自己做】刪除與確認
1:55–2:30功能 4【自己做】月統計;週誌、本週檢核

進度較快的學生會一次要求 AI 做兩三條功能。請他們停下來,指出「一次一條」的理由:每條功能都要先對答案才存檔,出錯時才知道是哪一條造成的。進度落後的學生,優先完成功能 1、2、4,刪除可以延到下週前半。

寫提示詞的格式

每條功能的提示詞都包含這五個部分,缺一不可:

  1. 請先讀 PROJECT.md
  2. 只做這一條功能:功能名稱與網址
  3. 需求細節:從需求說明書抄過來,越具體越好
  4. 限制:只修改哪些檔案、SQL 用 ? 參數、伺服器端要檢查
  5. 完成後:告訴我怎麼手動測試,並更新 PROJECT.md 功能進度

功能 1:記帳列表

範例提示詞 Antigravity
請先讀 PROJECT.md。現在只做這一條功能:「記帳列表」。
1. 首頁 / 顯示一個月份的支出,網址參數 ?month=2026-10;沒有參數或格式錯誤時顯示本月
2. 日期新到舊;同一天的依新增順序,後新增的在前
3. 上方顯示月份、本月合計(千分位)與筆數;提供「上個月」「下個月」連結(12 月的下個月是隔年 1 月)
4. 該月沒有資料時顯示「這個月還沒有紀錄」
5. 只修改 app.py 與 templates/,SQL 用 ? 參數
完成後告訴我怎麼測試,並更新 PROJECT.md 的功能進度。
網址正確結果
/?month=2026-10合計 4,898 元、40 筆;第一筆是 10/30 午餐 139 元,第二筆 10/29 YouBike 6 元
/?month=2026-09合計 3,946 元、40 筆
/?month=2025-01顯示「這個月還沒有紀錄」
/?month=2026-13不會出錯,顯示本月
在 2026-12 按「下個月」變成 2027-01

存檔並推上 GitHub:「功能1:記帳列表」。

功能 2:記一筆

自己寫提示詞。需求:日期(預設今天)、金額、項目、類別;錯誤時回應 400、顯示中文訊息、保留已輸入的內容、不寫入資料庫;成功後回到該筆所在月份的列表。

輸入正確結果
2026-10-31、100、測試、餐飲回到 2026-10 列表,合計變成 4,998 元
金額 0、-5、abc、1.5、1000001全部顯示「金額必須是 1 到 1,000,000 的整數」
日期 2026-02-30顯示日期錯誤
項目空白、項目 31 個字分別顯示必填、最多 30 個字
類別「旅遊」(用開發者工具改選項送出)顯示請選擇類別
巡堂重點

2026-02-30 被接受:AI 只用正規表示式檢查格式。要用 datetime.date.fromisoformat() 這類方法確認日期真的存在。

1.5 被當成 1:AI 用了 int(float(...))。整數規則要先檢查是不是整數字串。

測試完畢,執行 init-db 與 import-csv 讓資料回到 80 筆。

存檔並推上 GitHub:「功能2:記一筆」。

功能 3:刪除

自己寫提示詞。需求:列表每一筆有「刪除」連結;點了先到確認頁,顯示這筆的內容與「確定刪除」「取消」;只有按下確定(POST)才刪除;刪除後回到該月列表。

操作正確結果
點 10/30 午餐的「刪除」出現確認頁,資料還沒被刪
按「取消」回到列表,合計仍是 4,898 元
再點一次並按「確定刪除」合計變成 4,759 元(4,898 − 139)
直接開已刪除那筆的刪除網址404

為什麼刪除一定要用 POST:GET 是「看」,POST 是「改」。如果用一般連結(GET)就能刪除,瀏覽器的預先載入或搜尋引擎爬蟲點過去,資料就不見了。

測試完重新匯入資料,存檔並推上 GitHub:「功能3:刪除」。

功能 4:月統計

自己寫提示詞。需求:/summary?month=,各類別合計由高到低、筆數、占全月百分比(四捨五入到整數)與長條;上方顯示本月合計,並和上個月比較增加或減少多少。

類別(2026-10)金額筆數占比
餐飲2,1652244%
學習1,462430%
娛樂824317%
日用27826%
交通16993%

與上個月比較:9 月 3,946 元,10 月 增加 952 元。

巡堂重點

占比加起來不是 100%:四捨五入造成的,這份資料剛好是 100%,其他月份可能是 99% 或 101%,屬於正常現象,可以在頁面加註說明。

上個月沒有資料時出錯:例如看 2026-09 時,8 月是 0 元。要確認除以 0 或「沒有資料」都有處理。

存檔並推上 GitHub:「功能4:月統計」。

本週檢核

第 8 週預告:自動測試、把資料庫換成 Neon,正式上線並發表 Demo。