一個停車 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 還在出問題,紙券卻已經停掉?為什麼月票使用者還會收到罰單?為什麼這座城市的停車費甚至比州首府還高?
從 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」被當成了名字,而不是能力
把紙本停車券搬到手機上:選區域。選時間。付款。人在太陽底下一步一步操作。
這叫數位化。
甚至可以說,它帶給使用者的認知負擔,比刮一張紙券還高。
但這不叫智慧。

把紙本停車券搬到手機上,人在太陽底下一步一步操作——這叫 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(展示真實企業病理診斷手藝)