iT邦幫忙

2026 iThome 鐵人賽

DAY 3
0
Vibe Coding

《腦中的點子真的做得出來嗎?30 天 AI Vibe Coding 實驗》系列 第 3

Day 3|不只算誰欠誰:把分錢系統的需求說清楚

  • 分享至 

  • xImage
  •  

前兩天,我開始了這場 30 天 AI 開發實驗,也選了 AA 分錢工具作為第一個作品。原本的想法是在 30 天內嘗試不同的小工具,但看到原型後,我開始覺得,與其一直換題目,不如把一個生活中真的會遇到的問題做完整。所以今天,我決定把接下來的主題收斂成:用 AI 協作,逐步打造「一起 AA」分錢系統。

今天先不急著繼續寫程式,而是把這個系統到底要解決什麼問題整理清楚。第一版的情境很簡單,就是一個人先付款,其他人平均分攤。例如三個人一起吃飯,總共花了 1,200 元,由小明先付,最後只要告訴另外兩個人,各付 400 元給小明就好了。

但實際聚餐或出遊,通常不會只有一筆消費。可能小明先付晚餐,小美付咖啡,阿哲付車錢。而且不是每個人都參與每一筆消費,沒喝咖啡的人,就不應該分攤咖啡的費用。真正需要解決的問題,是把整場聚會的支出放在一起後,最後誰應該付多少錢給誰。

因此,我希望系統可以記錄參與成員、每筆支出的金額與代墊者,也能選擇哪些人需要分攤這筆消費。分攤方式除了平均分配,也希望支援自訂每人的金額。等所有支出都記錄完,再統整每個人的代墊與分攤結果,產生最後的付款清單,避免每筆消費都要互相還錢。

和 AI 討論功能時,只說「幫我做一個分錢系統」其實還不夠。我需要一個能手動核對的例子,確認自己和 AI 對規則的理解一致。假設小明、小美和阿哲一起出門,晚餐 1,200 元由小明代墊,三個人平均分攤;咖啡 280 元由小美代墊,只有小明和小美喝;計程車 350 元由阿哲代墊,三個人一起分攤。

在這個情境裡,晚餐每人分攤 400 元,咖啡由小明與小美各分攤 140 元。車資 350 元無法由三人整除,所以第一版先採用明確的規則:以整數元計算,剩下的零頭依成員順序分配。這樣小明與小美各分攤 117 元,阿哲分攤 116 元,加起來仍然是 350 元。

把三筆支出合起來,小明應分攤 657 元,但已經代墊 1,200 元,所以應收回 543 元。小美應分攤 657 元,已代墊 280 元,還需要付出 377 元。阿哲應分攤 516 元,已代墊 350 元,還需要付出 166 元。最後只要小美付 377 元給小明,阿哲付 166 元給小明,就能完成這次結算。這個例子也會成為後續的測試案例,每次修改分攤邏輯,都可以拿它重新檢查。

整理需求的過程中,我又想到另一個常見的情況:算得出金額,不代表大家身上的現金剛好。可能系統已經告訴我應該付 150 元,但我手上只有兩張 100 元;也可能對方沒有零錢可以找,最後大家還是得站在原地討論怎麼付。

例如小美要付小明 150 元,小美手上有兩張 100 元,小明剛好有一個 50 元。這時候就可以由小美拿出 200 元,再由小明找回 50 元。只有兩個人的時候很好理解,但人數變多,每個人手上的鈔票和硬幣不同,現場就可能開始問:「你有沒有 50?」「我只有 100,可以找嗎?」「不然我先給他,再請他給你?」

所以,我想把「現金湊款與找零」也加入這個系統的規劃。每個人可以輸入這次願意拿來結帳的現金,例如有幾張 1,000 元、500 元、100 元,以及幾個 50 元、10 元、5 元和 1 元。系統再根據大家應收、應付的金額,以及實際可用的現金,建議怎麼付款、怎麼找零。

不過,「找出最合適的方式」這句話,也需要先說清楚。最合適是指交出去的硬幣最少,還是付款與找零的次數最少?如果我自己沒有定義,AI 就只能替我猜。因此,我目前的想法是先確保金額正確,而且不能使用任何人沒有的鈔票或硬幣。在這個前提下,優先減少現金交付的次數;如果次數一樣,再比較交出的鈔票與硬幣總數。

如果沒有辦法剛好付清,系統也應該直接說明。例如大家都只有百元鈔,卻需要結清 150 元,就不能假裝存在剛好的解法,而是要提示需要換零錢,或改用轉帳。這些目前都還是需求與設計方向,尚未完成實作。之後也要分清楚「找到一個可行方案」和「證明這是最佳方案」,不能只要算出一組結果,就說它一定最好。

整理到這裡,我發現系統可以分成兩個部分。第一個部分是把帳算清楚,根據消費與代墊紀錄,算出每個人的應收、應付金額。第二個部分是安排怎麼付,選擇轉帳時顯示轉帳清單,使用現金時,再根據面額與數量安排付款和找零。兩個部分分開後,規則就比較清楚,也不會因為某個人沒有零錢,就直接改掉他原本應該分攤的金額。

加入現金找零後,這個題目已經比最初的平均分攤工具更有挑戰。因此,接下來會優先完成多筆支出、不同人代墊、指定分攤成員、平均與自訂金額,以及最後的結算明細,再逐步加入現金面額輸入與找零建議。資料保存、備份與測試也會納入安排。至於後端與登入,會依照實際進度重新衡量,避免為了增加功能,壓縮驗證計算結果的時間。銀行串接、實際轉帳、多幣別、收據辨識和即時多人協作,這一輪先不納入。

今天沒有繼續修改專案,而是先把需求寫下來。從「做一個分錢工具」,到「整理多人代墊」,再到「根據現金面額安排找零」,每多想一步,都會發現原本沒說清楚的規則。這也讓我感覺到,和 AI 一起開發時,我需要做的不只是提出功能,還需要說清楚使用情境、決定取捨,並準備例子確認它真的做對。

接下來會等準備好使用 VS Code,再整理目前的原型與既有版本紀錄,確認 Git/GitHub 的設定,接續後面的開發。Day 4,就從把原型帶進 VS Code、建立 Git 工作流程開始。


上一篇
Day 2|先做再說:第一個作品是 AA 分錢工具
下一篇
Day 4|把原型整理成專案,建立 Git 工作流程
系列文
《腦中的點子真的做得出來嗎?30 天 AI Vibe Coding 實驗》9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言