當這個專案從「需求」走到「實作」的階段時,我們面臨的第一個現實問題,就是硬體來源。
所有設備都是透過志工與善心人士眾籌而來的。這聽起來溫暖,但也代表一件事:硬體規格完全不一致。
它們雖然都掛著「安卓系統」的名字,但實際版本卻從 Android 5.0 到 14.0 不等,甚至還混雜著一些 toybox 型態的嵌入式安卓系統。對我來說,這是一場惡夢:沒有一份完整的規格文件,唯一能參考的只有一張「報價單」。
很多時候,必須靠志工在現場拍照,或者錄下使用效果,回傳給我做分析。這些「照片」與「片段影像」成了我設計與除錯的依據。
當地人的使用習慣也出乎我意料。他們會把電視立起來使用,像手機一樣直立,但這些設備大多數都 沒有陀螺儀。這意味著系統無法自動旋轉畫面。
那怎麼辦?最後的解法是 「用畫的」。我透過 CSS 的重新繪製 (repaint),把原始畫面旋轉 90 度,硬生生模擬出直立的顯示效果。這是一種「妥協」的解法,但在資源有限的場域裡,能運作就是勝利。
這也是我在這個專案裡學到的第一課:不要期待完美的硬體支援,而是要思考怎麼用現有的條件,找到一個能走下去的解答。
在開發這套系統之前,我訪談了許多台灣的醫療院所,甚至包含大型醫療集團。他們對叫號系統的需求往往很簡單:
就這樣而已。
但是,當這套邏輯搬到菲律賓的義診中心時,馬上就卡住了。因為這裡的患者很多是 眼科病患,代表有可能出現:
如果只是單純顯示名字,很多人根本無法辨識。於是我們必須重新設計:
這些都是在台灣的醫院裡不太會被考慮到的細節,但在義診現場卻是必須。
系統的流程是這樣運作的:
這看似簡單,但在高人流的情況下,效能與即時性成為關鍵。
我們採用了 WebSocket + MQTT 雙軌架構:
這樣的設計,讓系統能夠應對義診現場幾百人同時等待的狀況。
另一個大挑戰是語音。義診現場需要 Tagalog + 英文 的雙語叫號,對某些年長者而言,還必須用到中文輔助。
我們設計了一個「組裝式」語音系統:
這套流程,聽起來繁瑣,但每一個細節都與「使用者體驗」緊緊相扣。
很多人會問:這樣的系統,是不是 AI 幫忙做的?
答案是:是,也不是。
整個架構的思考方式,很多是透過 RAG 型態的對話去反覆驗證的。比如:
這過程讓我更清楚:AI 不是不能做大系統,而是需要縝密的規劃與拆解。
如果能把專案分成一個一個小模組,AI 就能提供很大的助力。
換句話說,這套系統並不是「AI 一次生成的成果」,而是「人類判斷 + AI 輔助 + 實際測試」共同完成的。
這個專案用到的技術橫跨了多個層面:
但這些技術的目的,最終都落在「使用者體驗」上:
換句話說,這不是技術炫技,而是為了讓現場的每一個人都能真正用得上。
回顧這段開發過程,我覺得它像是一場馬拉松。沒有哪一個環節是輕鬆的,每一個挑戰都可能讓系統無法運作。但正因為這樣,我們才不斷被提醒:這不是單純的技術專案,而是一個與現場共生的系統。
硬體規格不一?就用 CSS 重繪。
廣播音量不足?就接上擴音設備。
語音不清楚?就加提示音、放大音量。
患者看不清楚?就用高對比設計。
所有的答案,都不是「最完美」的,而是「最適合當下的」。
這個案子到現在仍然在持續進行中,每一次改動都還在累積。
而我最深的體會是:AI 可以是一位強大的協作者,但唯有人,才能讓系統最終落地並被信任。