iT邦幫忙

2025 iThome 鐵人賽

DAY 18
0

第十八日:耳朵長好了,專家驗收來了

一、開場:從「啞巴吉祥物」到「會聽的 Bot」

昨天才剛解決資料庫撞名的插曲,今天總算回到正軌。
前幾天我們忙著蓋牆、裝門鎖(API Key)、建倉庫(Redis)、請工人(Worker)。
但如果 Bot 不會「聽」,那這一切都只是花俏的基建,毫無靈魂。

所以今天的主題很單純:讓 Bot 長出耳朵
而且還不是隨便聽,而是能正確接收 Teams Bot Framework 傳來的訊息。


二、Codex 的工地進展:耳朵上線

Codex 今天的主要任務就是讓 /messages endpoint 正式開張。

  1. Repository Upsert 功能

    • 加入 installation upsert,避免 Bot 反覆安裝時,資料庫重複或遺失紀錄。
    • 現在就算多次安裝,DB 也能乾淨維護。
  2. Messages Service & Handler

    • 新增 messages service,專責處理 Teams 活動。
    • /messages endpoint 上線,開始能接收 webhook。
  3. 文件同步更新

    • OpenAPI 規格與 README 都同步補齊。
    • 這次沒偷懶,不會再出現「API 跑得動但文件找不到」的窘境。
  4. 測試全綠

    • 單元測試 & smoke 測試都通過 ✅。
    • go test ./... 看著滿屏綠燈,開發者心情也綠油油。
  5. 程式碼整理

    • gofmt 一鍵排版,commit 訊息乾淨俐落:
      feat(messages): ingest teams bot activities
      

一句話:Bot 從木頭人升級成錄音筆,可以聽 Teams 的聲音了。


三、Gemini 的專家驗收:不只耳朵,還要腦袋

光能聽是不夠的,Gemini 充當專案的「驗收顧問」,直接丟下一份診斷書:

  1. 整體評價

    • 架構完整:API Server + Redis + Worker 已經能跑通非同步通知。
    • 模組清晰:介面分層良好(NotificationBroadcasterTeamsTokenProvider)。
    • 測試健全:Worker 整合測試提供了高信心度。

    📝 結論:這專案已經不是 demo,而是準備邁向 production 的雛型。

  2. 改進建議

    • Dead-Letter Queue (DLQ):失敗任務不能直接丟掉,至少要留倉庫追蹤。
    • 設定管理更專業:目前 config 分散,建議導入 viper 管理多來源設定。
    • 監控指標更細緻:除了 expvar,還要有請求延遲直方圖、queue 長度、錯誤率。
    • HTTP Server 優雅關閉:導入 http.Server.Shutdown,避免強制中斷。
    • TeamsBroadcastService 要補完:目前能拿 token,但發訊息的 payload 還很陽春。

一句話:現在有耳朵了,下一步該長腦袋,能聽、能想、能管。


四、復盤:今天的進展與反思

今天的工作把「聽」這件事補齊,從此 Bot 不是啞巴吉祥物,而是真正能接收訊息的成員。
但也很清楚一件事:
👉 系統從「能跑」到「能管」之間,還有一大段路。

  • 技術亮點:messages handler 上線、文件更新及測試同步補齊。
  • 不足缺口:沒有 DLQ,沒有細緻監控,broadcast 還是 prototype。

這就像工地開幕,雖然裝了麥克風(webhook),能收音,但還沒接上音控台(監控與管理)。


五、明日計畫

  1. 完成 /messages/proactive/test,讓 Bot 不只聽,還能「主動說話」。
  2. 補 Dead-Letter Queue 原型,失敗訊息不再沉默蒸發。
  3. 新增 Prometheus /metrics endpoint,讓系統能被監控。
  4. 開始設計 TeamsBroadcastService 的 payload handler,避免訊息炸裂。

✍️ Day18 收工感言
今天的專案像是給 Bot 裝上了耳朵,終於能聽進 Teams 的聲音。
更重要的是,專家驗收提醒我:別只顧功能跑得動,還要顧架構能維護、能量產。
所以,今天是「從耳朵到腦袋」的里程碑。
明天,要讓這位 Bot 真的能開口說話,把訊息送出去! 🚀


上一篇
第十七日:資料庫鬧雙胞,工地現場小插曲
下一篇
第十九日:Queue 大改造,優先序三明治
系列文
Vibe Code與context engineering來打造個人專屬夥伴20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言