iT邦幫忙

2026 iThome 鐵人賽

DAY 4
0
AI Engineering

Macaron:30 天打造一位會占卜的 AI Agent系列 第 4

Day 04|資料表設計好了,但它真的有進資料庫嗎?

  • 分享至 

  • xImage
  •  

馬卡龍的成長日記 Day 04

昨天,我把一篇占卜需要的資料和六個階段整理好了,也畫出了第一版的資料庫設計。照理來說,下一步就是把這些資料表真的建立進 PostgreSQL。

但今天開始做之後,我才發現中間其實還少了一件事:我要怎麼確定放進資料庫的,就是我原本設計好的那一份?

資料表寫好了,還不能直接丟進去

假設現在有兩份檔案,第一份負責建立昨天設計好的占卜資料表,第二份負責建立之後 Discord 發文會用到的資料表。最簡單的做法,就是把它們全部放進同一個資料夾,再按照順序執行。

問題是,如果第一份已經執行過,後來又被修改了呢?或者資料夾裡突然多出一份測試用的檔案,Macaron 要不要一起執行?

這些檔案是真的會修改資料庫,所以我不希望 Macaron 看到什麼就執行什麼。

因此今天先加了一張「允許執行的清單」,裡面會明確記錄有哪些正式檔案、執行順序,以及每一份檔案的內容指紋。只要檔案內容被改過,就算檔名完全一樣,指紋也會跟原本不同,Macaron 就會停止執行。

這樣至少可以確定一件事:真正進入資料庫的內容,必須是我原本確認過的版本。

做過的事情,也要留下紀錄

另一個問題是,Macaron 要怎麼知道哪些檔案以前已經執行過?

所以資料庫裡也會有一張執行紀錄。假設第一份檔案已經成功執行過,而且現在的內容完全一樣,下一次就直接跳過;如果紀錄顯示它以前執行過,現在內容卻變了,就停止執行。

而且「修改資料庫」和「寫下執行紀錄」會被當成同一件事情。兩個都成功,這次修改才算完成。這樣就可以避免資料表建立到一半,紀錄卻沒有留下,最後連程式自己都搞不清楚做到哪裡。

如果之後真的發現第一版設計有問題,我也不會回頭修改舊檔案,而是新增下一份修正。例如第一版忘記「發布時間」,就另外新增一份「替占卜文章加入發布時間」的修改。這樣之後回頭看,才知道資料庫是怎麼一步一步變成現在的樣子。

也先替 Discord 留好位置

今天另外新增的第二份設計,則先替後面的 Discord 發文準備了三張表。

「發文登記」會記錄 Macaron 準備發布哪一篇占卜、哪一個版本;「發文收據」會保存 Discord 回傳的結果;「待送清單」則負責記錄每一則訊息現在是等待、正在傳送、需要重試,還是已經完成。

其中有一種狀況我以前完全沒想過:Macaron 已經把訊息送出去,卻剛好沒有收到 Discord 的回應。這時候它其實不知道對方到底有沒有收到,如果直接再送一次,使用者可能就會看到兩篇一模一樣的內容。

所以這些狀態,我決定從資料庫設計階段就先留下位置,而不是等真的遇到問題再補。

結果,我今天還是沒有真的建資料庫

全部準備好之後,我原本打算在自己的電腦上實際跑一次,結果發現目前沒有一個可以安全拿來測試的 PostgreSQL 資料庫。

所以今天我停在這裡。

目前可以確認的是:Macaron 已經知道哪些檔案可以執行、執行過哪些版本,以及中途失敗時該怎麼處理;但昨天設計好的那些資料表,目前還沒有真的建立進 PostgreSQL。

這也是 Day 04 我學到的事情:寫好資料表只是第一步。真正要執行之前,我還得確定它放進去的是正確版本,而且未來回頭看的時候,知道資料庫為什麼會長成現在這個樣子。

明天則要開始處理另一個我很在意的問題:Macaron 到底可以記得多少關於使用者的事情?

第一版的答案是,它刻意什麼都不記得。

馬卡龍預拌粉持續攪拌中……🍪


上一篇
Day 03|AI 可以幫我寫,但最後定案的人還是我
下一篇
Day 05|第一版的 Macaron,刻意什麼都不記得
系列文
Macaron:30 天打造一位會占卜的 AI Agent13
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言