企業病理案例檔
專題系列:Enterprise Pathology Case Files(企業病理案例檔) Case File 001

Tagline: Case Files show how I diagnose(展示真實企業病理診斷手藝)

一個停車 App,怎麼讓整座城市與自己為敵

🗓 2026.09.09 · ⏱ 13 分鐘閱讀 · ✍️ Haanzo Lim · 🌐 English Version
一個停車 App,怎麼讓整座城市與自己為敵

一個停車 App,怎麼讓整座城市與自己為敵

馬來西亞一座小城的智慧停車病理解剖

Case File 001 — 領域:公共數位基礎設施 | 病理:Rollout Debt / UX Debt / Governance Debt | 證據層級:公開資料 + 直接民眾回報 | 治療狀態:提出方案

發生了什麼

2026 年 1 月,馬來西亞一座城市推出了手機停車 App,與原本的紙本停車券並行。

市議會給了市民半年的適應期:紙本停車券可以繼續使用到 6 月 30 日。大部分時間裡,多數司機還是照舊使用紙券;App 是一個「遲早要面對,但現在還不用管」的東西。

半年過去了。

7 月 1 日,紙券正式停用。

一個已經有半年時間準備的系統,卻在全面執法的第一天就出問題了。

很快地,事情演變成全國新聞。

有人停好車後,還在等待網路與付款處理,就已經被開了 RM10 的罰單。

有人開始改騎摩托車進市區,只為了避開這個 App。

白天的市中心變得冷清,有些人乾脆把原本白天要辦的事情拖到晚上。

月票使用者收到「幽靈罰單」——車牌看起來相似,卻根本不是自己的車。這種誤讀多到不能再當成單一事件:一名律師申訴,她員工的車——車牌 WYG7345,已在 App 內付費並確認——收到的罰單卻寫著 WYG7745——她的車根本沒有這組車牌。市議會主席公開將多數誤讀歸因於非標準車牌,例如字母 O、Q 被讀成數字 0,並宣稱標準車牌的辨識準確率高達 99%——換句話說,每一百輛車就有一輛被讀錯。一名已購月票的車主因車牌被誤讀而收到 RM10 罰單,申訴後才獲得退款。

已經花錢買了紙券的市民,要等 7 個工作天,由人工把餘額轉成電子額度。

而當 App 終於載入時,有人的進度條甚至跑到了:

1633%。

事情沒有在第一波抱怨後結束。

有一名市民把車停在市中心一條主街,透過 App 付款,結果還是被開罰。

他把兩個時間拿來比較,發現罰單是在付款成功前 10 秒 開出的。

他拿付款紀錄給執法人員看,得到的答案是:去申訴。

車主在車旁看著擋風玻璃上的罰單與手機 App 付款畫面
停好車、掏出手機、等待連線付款,而罰單已經在十秒前夾上了雨刷。

地方民代陸續收到大量類似投訴,也開始公開追問:為什麼 App 還在出問題,紙券卻已經停掉?為什麼月票使用者還會收到罰單?為什麼這座城市的停車費甚至比州首府還高?

從 7 月 1 日紙券停用,到 7 月 13 日宣布調整,過了 12 天。

市議會延長過渡期至 12 月 31 日,降低部分超時停車費用,重新接受紙券,也重開櫃台給不會或不願意使用手機的人。

於是現在,紙券和 App 又同時存在。

這些調整都是真的。

但真正的讓步,是在整座城市已經吵到無法忽視之後,才出現的。

而這個 App 也不是什麼邊緣試驗。

它已經有超過 105,000 名註冊使用者——而且這數字是在爭議最激烈的時候繼續成長的:市議會一邊公開為系統辯護,一邊承認它的失敗。

一套系統可以一邊持續產生交易與收入,一邊累積治理與使用者問題。

到了這個規模,推行階段的錯誤,就不再只是「使用者體驗不夠好」。

它會變成公共服務失敗。

有人或許會說:系統不是一直在改善嗎?

紙券恢復了。

櫃台重新開放了。

部分罰款也調低了。

而且早在 7 月,市議會就已經宣布,電子停車券可以在全市通用,剩餘時間也可以帶到下一個地點。

問題是:到了 8 月底,App 的購買畫面仍然要求司機選擇「市區」或「非市區」。

介面仍然保留著舊的「分區鎖定」思維。

而且 App 裡也沒有告訴使用者:你剩下的停車時間,其實可以帶去下一個地方。

以前是很多條街。

後來變成兩個區域。

簡化的是數量,不是模型。

政策已經改了。

介面卻還活在以前。

介面和政策彼此矛盾,最後付出代價的是市民。

這個問題其實甚至不需要什麼大型工程。

購買畫面上只要多一行:你的剩餘時間可以帶到下一個停車地點。

就能解決大量理解問題。

但到了 8 月底,政策公布接近兩個月後,市議會官員仍然需要透過新聞公開解釋這件事。

新聞解釋了。

App 沒有。

最後形成的,是另一套人工補救程序:被錯誤開罰的人去投訴。工作人員人工查證。再一張一張取消。

原本可能只需要一行文字的問題,變成了持續存在的行政成本。

而更深層的問題也還在。

到了 8 月底,市議會主席仍然公開承認,系統最主要的投訴之一仍然是付款失敗。

而「付款成功前 10 秒就先收到罰單」這類事件也仍然存在。

2026 年 9 月更新: 購買流程後來又簡化了一次。「市區/非市區」的選擇器消失了,App 現在直接顯示「購買電子固本即可在全市使用」——這正是早前政策改變需要的那種介面修復:規則終於出現在市民真正做決定的地方。8 月簡化的是數量;9 月改變的是模型。這個修復值得肯定。但它沒有觸及本文記錄的更深層失敗:付款可靠性、車牌誤讀,以及敏感文件的重複收集——因為這些問題從來就不在那個區域選擇器裡。

延後,不等於修好。

現在,它只是靠著補救措施暫時撐住。

這些症狀,對一個做系統的人來說代表什麼

我過去 16 年,一直在設計與營運市政規模的基礎設施。

本文檢視的大部分症狀,都已經可以在公開資料裡看到;凡是使用直接民眾回報的地方,我會明確標示。

1633% 不是普通的網路問題

進度條不應該出現 1633%。

底層到底發生了什麼,我們沒有公開證據,不應該亂猜。

至少可以確定的是:客戶端允許重複或不一致的進度更新,累積成一個本來不應存在的狀態。

網路不穩可能是觸發條件。

但軟體沒有安全地把這個異常狀態限制住。

1633% 本身,就是狀態管理出問題的症狀。

沒有寬限,最先被懲罰的是網路條件最差的人

停車到付款之間的幾秒鐘,被直接當成違規。

當整個系統最不可靠的一環是網路時,這種設計,最後一定會讓網路條件最差的市民承擔最多成本。

那張「付款成功前 10 秒就先被開出」的罰單,就是最乾淨的例子。

不管這是設計結果、趕著上線,還是單純因為身在系統裡而沒有看到市民真正的使用過程,結果都一樣:

系統把自己的失敗成本,轉嫁給了市民。

「Smart」被當成了名字,而不是能力

把紙本停車券搬到手機上:選區域。選時間。付款。人在太陽底下一步一步操作。

這叫數位化。

甚至可以說,它帶給使用者的認知負擔,比刮一張紙券還高。

但這不叫智慧。

司機在大太陽下站在路旁皺眉操作手機 App
把紙本停車券搬到手機上,人在太陽底下一步一步操作——這叫 digitization,甚至比刮紙券的認知負擔還高。

更值得注意的是:這個系統本來就一直在產生交易、付款、執法和營運訊號。

可是從公開紀錄看不到,這些訊號在 7 月 1 日全面執法前,成功轉化成足夠的介入。

Volume is a storage problem. Value is a decision problem.

資料很多不是重點。

有沒有因此做出更好的決定,才是。

長者月票,反映了系統怎麼理解「資格」

面對反彈,市議會推出了 RM40 一個月的長者停車月票。

規則是:一張 IC,一輛車,而且身分證、駕照和車輛註冊文件上的姓名必須完全一致。

最後這個條件值得仔細看。

假設一輛車是孩子買的,登記在孩子名下,但每天真正使用這輛車的是年長父母,用來買菜、看醫生、處理日常生活。

按照這個規則,父母不符合資格。

因為車輛註冊文件上的名字,不是父母的名字。

這套規則驗證的是法律上的車主身分(legal ownership)。

但政策真正想服務的,應該是長者日常的出行能力。

這條規則以「法律上的車主身分」作為長者資格的替代指標——但兩者根本不是同一回事。

驗證,不等於保存

問題並不在於「完全不能看這些文件」。

市議會可能有合理理由查看:IC,用來確認年齡與身分。駕照,用來確認駕駛資格。車輛註冊文件,用來確認申請人與車輛之間的關係。

真正的治理問題,是從「看完之後」才開始。

Verification is not retention.

公開公告沒有說明:提交的文件副本會不會在核對後被保留?保留多久?誰可以存取?是否會掃描進系統?不再需要時,如何銷毀?

一名親自到櫃台申請的市民告訴我,他提交的文件副本被市議會留下,而不是在核對後退還。

但我沒有找到公開公告說明這是否為標準做法,也沒有找到公開資料說明文件保存多久、誰能存取、是否數位化,或最後如何銷毀。

同一套證明,為什麼要再收一次?

8 月 27 日公布的 Auto Payment Link,公開的申請要求同樣列出這三份文件;而因為線上申請當時尚未開放,申請者需要親自到停車部門辦公室辦理。

如果一名長者同時申請 RM40 月票和 Auto Payment Link,按照公開要求來看,同一套證明就可能被重複要求——除非市議會重用先前已經完成的驗證。

這套系統看起來是在重複收集同一套證明,而不是重用已經驗證完成的事實。

長者在服務櫃台前手持文件等待查驗,桌面放置顯示錯誤的智慧手機與堆疊卷宗
驗證不等於保存——同一份敏感身分證明反覆索取,而櫃台前依然堆疊著無法消化的官僚與紙本程序。

更好的設計應該是:驗證一次,然後保存驗證結果——age verified、licence verified、vehicle relationship verified、verified date、reviewer。

而不是每多一個相關功能,就重新收一次完整敏感文件。

如果未來的線上申請要求上傳這些文件,治理問題會進一步擴大:儲存、加密、存取控制、供應商存取、備份、刪除,以及資料外洩的風險。

而目前的公告本身,並沒有說明這些問題會如何處理。

更有意思的是,兩套政策對「家庭關係」的理解並不一致。

一套政策承認家庭關係可以用來付款。

另一套政策卻不承認同樣的家庭關係可以用在車輛日常使用上。

一套公共服務既然要求市民提交 IC 和車輛註冊文件,就應該能夠清楚說明:核對完成之後,這些文件會發生什麼事?

尤其是在另一個相關服務可能再次要求同一套證明的情況下。

排除某些人,不是意外,而是整個設計留下的形狀

公開投訴裡可以看到一個很明顯的模式:

外地店主因為不會用 App,乾脆不想開車進來。

老人沒有智慧手機。

有人沒有上網方案。

有些街道收訊不好。

有一名 60 多歲的退休人士,平常不使用智慧手機。

紙券停用後,他只能試著用 App:停好車,正要完成停車與付款——還沒來得及,罰單已經開出。

現在他乾脆避免進市中心。

如果一個公共服務,必須先要求市民擁有特定裝置、網路條件和數位能力,才能正常使用,那它就不能算是人人都能用的公共服務。

它變成了一道篩選器。

如果由我重新設計

這些想法,不是任何一家供應商的方案。

它們都來自一個很簡單的原則:

城市系統應該替市民吸收摩擦,而不是把摩擦全部丟回給市民。

1. Quick Park —— 非同步寬限

不要逼一個人停好車後,在太陽底下跟幾秒鐘的計時賽跑。

先掃描。

讓司機有 72 小時完成付款。

後台再做自動對帳,已付款的紀錄自動核銷。

這樣,執法就從街頭衝突,變成平靜的後台行政作業。

「付款前 10 秒被開罰」這件事會直接消失。

因為根本沒有那個時鐘要跟它比賽。

寬限期也改變了誰能用這套系統、以及何時必須與它互動:不會操作 App 的老人也能停車——手機桌面一個 Quick Park 捷徑,按一次,停好車就走——當天稍晚回家的孩子,可以在時限前代為繳費。學習新介面的能力,會隨年齡下降;對不曾長期接觸科技產品的老人來說,App 裡的每一步,都是一道門檻。入口應該短到一步——每多一步,都可能有人被擋在門外。趕著赴約的人可以先停車,回程再付款。停車不再必須在離開前的幾秒內完成,也不再要求「停車的人」必須是「付款的人」。

如果允許時段自動延長,系統必須在延長前先提醒、延長發生時再明確通知:到期前的提醒要帶有停止延長的選項;延長完成後,再以視覺、聲音與震動確認扣了多少錢、以及如何結束停車——因為公共系統不能靜默地從市民身上扣錢,正如不能靜默地對市民開罰。扣款之後才送達的通知,是收據,不是警告。戶外環境很吵;光有鈴聲不算通知。

2. 開放代付

把一張停車單,變成一個可由任何付款人掃描的 QR 支付憑證(bearer token)。

老人可以拿現金去附近的咖啡店(kopitiam——集合各家攤位的餐飲館)。

店家掃一下,就幫他完成付款。

店家不需要部署任何專用的新硬體。

也不需要每個老人都擁有智慧手機。

外地訪客也不必為了停一次車,就先註冊一個帳戶。

一個城市最小的商店,本來就可以成為它最分散的付款基礎設施。

年長者在傳統咖啡店櫃台手持紙鈔,店員手持智慧手機協助代付停車費
老人拿現金到咖啡店(kopitiam)櫃台,店家用手機掃碼代付——一個城市最小的商店,本來就可以成為它最分散的付款基礎設施。

付款也不一定要掃描:停車時段登記在車牌底下,任何人輸入車牌號碼,就能替那輛車繳費。忘了帶手機的人,打個電話回家,家人輸入車牌,就把款付了。

而現在的長者 Auto Payment Link,需要先申請、交三份身分文件、還要綁定帳戶。

這個設計全部都不需要。同樣的機制也可以成為地方商業工具:kopitiam、鄰里雜貨店或路邊攤,可以選擇為顧客支付部分或全部停車費,作為服務或促銷——把停車從到店消費的摩擦,變成地方商家可以主動利用的促銷工具。至於這是否真的能增加本地消費,取決於定價、地點與商家的經濟條件——但基礎設施至少讓這個選擇成為可能。

3. 資料最小化——驗證必要的,保存必要的

只要求足以建立資格的最低限度證明。

如果某份文件只需要「看過並核對」,那麼就保存驗證結果,而不是預設保存原始文件本身。

相關服務之間,也應該重用既有的驗證結果,而不是重新收集同一套證明。

Verify what is necessary. Retain only what is necessary.

如果一套服務連已經掌握的資料都無法充分保護,就沒有理由繼續擴大它所要求的資料範圍。

4. RFID/NFC 識別——根本不要讀車牌

統一車牌字體只能降低一部分誤讀,但系統依然把「從影像猜出車輛身分」這件事,交給視覺辨識。真正的結構性修復,是讓車輛識別根本不再依賴讀取車牌——直接拿掉這一整類錯誤,而不是只把誤讀率壓低。

RFID 適合機器對車輛的識別——讀取器檢查一輛經過的車;NFC 適合由市民主動發起的驗證——司機在終端機上感應。使用具備加密驗證的 NFC 標籤,可以提供較強的抗複製能力;兩者怎麼選,是安全與互動設計的取捨,不只是成本考量。

誤讀不只是實作上的 bug——它是攝影機式車牌辨識的已知失敗模式。 雨水、反光、角度都會讓它失誤,還有一組看起來相似的字符——O 與 0、Q 與 O、I 與 1、B 與 8——即使是在完全標準的車牌上。主席把誤讀歸因於「非標準車牌」,其實錯過了重點:歧義存在於字母本身——而一個系統如果單憑一次有歧義的讀取就開罰,等於沒有第二道防線。

一張低成本卡或標籤就能識別車輛,系統完全不必從視覺上相似的字母與數字去推斷身分——造成「罰錯人」的那種歧義,根本不在這條路徑上。它也為這套系統排除掉的市民開了一條路:卡片不需要智慧手機、不需要帳戶、不需要上網方案——而且可以在同一個已經在受理現場申請的停車部門辦公室申辦。

它也有自己的代價——憑證可能遺失、共用、被複製或發放錯誤——但這些都屬於憑證或發放層面的失敗,可以撤銷、更正或替換;它不會像車牌辨識那樣,因為一次模稜兩可的讀取,就靜默地罰錯市民。如果執法仍然需要視覺證明,攝影機可以保留——作為證據記錄,而不是作為身分的唯一來源。 識別、觀察與證據是分離的功能——這個設計不讓一次模稜兩可的讀取同時扮演三者。這不是新點子;它是我多年公開寫作的一部分。

這個案例真正能帶走的是什麼

這個案例不需要知道所有內部細節,也已經有足夠的公開紀錄,加上明確標示的直接民眾回報,去診斷目前看得到的病理。

這正是重點。

你不需要知道系統內部發生的每一件事,才有辦法看見它對外造成了什麼。

我們也不需要先假設開發者或營運者無能,或者有惡意。

更深層的問題是結構性的:

建造和營運一套系統的人,本來就身在系統裡。

而當一個人身在其中,最難看見的,往往就是外面真正使用它的人所走過的那條路。

數位化,不等於智慧。

沒有寬限的執法,不等於秩序。

收集自己無法保護的資料,不等於治理。

而一套公共系統,如果連網路條件最差、數位能力最低的市民都無法服務,那它就稱不上是真正普遍可及的公共服務。

它更像是一種披著「Smart」外衣、由最脆弱的人承擔成本的制度。

類似的故事,正在不同的數位化專案裡不斷重演。

App 不一樣。

城市不一樣。

但病的形狀很相似。

真正的修復,不只是做一個更好的 App。

而是停止要求市民用自己的時間、金錢與信任,替系統償還它的設計債務(Design Debt)。

從小做到大並不難。
真正難的是,做大之後還能不能保持紀律。

本系列文章規劃

Enterprise Pathology Case Files(企業病理案例檔) — Case Files show how I diagnose(展示真實企業病理診斷手藝)

Essay 01
一個停車 App,怎麼讓整座城市與自己為敵 馬來西亞一座小城的智慧停車病理解剖
目前閱讀