一則遲到三十分鐘的簡訊:二等座變無座,是一組沒被設計完的介面
從8月28日G116次列車二等座變無座事件看起,觀察12306的換車通知、退票規則與回應措辭如何構成一組沒被設計完的服務介面。
8月28日,G116次列車從長春西開往瀋陽北。這趟車臨時從復興號換成了和諧號,車廂編組一變,13號車廂一部分乘客手裡的二等座車票,對應的座位就消失了。一位孕婦全程站了一個多小時。乘客上車半小時後才收到退票簡訊,聯繫12306,得到的答覆是已乘車、無法退票;官方的回應則歸結為臨時調整,沒有賠償政策。
這件事過去一段時間了,回頭看它,值得留意的並不是「服務態度好不好」這一層,而是一連串介面環節:換車通知的時間點、座位資訊的重新對應、退票規則的觸發條件、回應措辭的內部一致性。每一環單獨看都像技術細節,疊在一起,就決定了一位孕婦站不站一個小時。
先看那則簡訊抵達的時間
整個事件裡最具體的一個設計缺陷,是通知的時序。乘客已經上車、已經走到13號車廂、已經發現座位沒了,三十分鐘後,退票簡訊才抵達。
一則簡訊在系統裡的意義,是把狀態變化告知使用者。換車這件事在系統內部發生的時間,必然早於乘客上車的時間。也就是說,系統知道座位將失效,卻選擇在失效之後才告知。這在介面設計裡是最基本的時序問題:告知應該發生在行為之前,而非之後。購票時螢幕上那個「13車XX號」的座位號,是整個交易裡最明確的一項承諾,而承諾被撤回的通知,落在乘客已經無法另行安排的位置之後,通知本身就失去了行動價值。收到簡訊的乘客能做什麼?什麼都做不了。這則簡訊因此從「資訊」降級為「備查」。
與我們先前觀察過的兒童票捆綁規則的介面缺失是同一類問題:規則存在,但規則與使用者行為的相對位置排錯了,介面就形同沒有設計。
座位號是一種排版,換車打破了它
二等座車票上的資訊結構很簡單:車次、日期、車廂、座位號。這幾個欄位的信任基礎,建立在列車型號與座位編號的一對一對應上。復興號與和諧號的編組不同,同樣印著「13車」的兩張票,在兩種車上指向的物理位置並不相同。
換車之後,系統做了什麼?從結果看,它撤掉了部分座位對應,但沒有重建對應,也沒有在乘客端呈現任何過渡狀態。使用者眼前的介面仍然是原樣的車票,票上仍然印著座位號,只是那個號碼所指的實體已經不存在。這種「介面與現實脫鉤」的狀態,在軟體設計裡通常會用一個明確的中間狀態來處理:置換、標註、補償方案同步呈現。在這裡,中間狀態的呈現載體只剩下車廂裡的口頭協調和乘客自己的身體,孕婦站了一個多小時,那個站姿就是系統缺失最終被渲染出來的畫面。
「已乘車無法退票」:兩套規則互相卡住
退款流程的回應同樣值得拆開看。「已乘車、無法退票」是一條真實存在的規則,它的設計目的很清楚:防止乘客坐完車又拿回票款。這條規則在平常情境下是合理的。
但換車情境觸發的是另一件事:服務方單方面變更了契約內容,從「有座」變成「無座」。這時再套用「已乘車不得退票」,等於用一條防濫用規則,去回應一件由服務方自己造成的履約落差。兩條規則各自成立,疊加起來卻把責任完整推到了乘客那一側。乘客上車這個動作,在正常流程裡是履約的完成,在這裡被讀成了放棄申訴的資格。
成都鐵路局先前回應「兩乘客買三張票放零食」時,我們在座位介面的閱讀與解釋裡提過:座位在車廂裡如何被閱讀、被解釋,本身就是一套介面。這次的方向相反,乘客買的是一個不存在的座位,而系統連「這個座位不存在」都沒有打算主動說清楚。
「無賠償政策」這五個字的措辭設計
官方回應的最後一句是「臨時調整,無賠償政策」。從措辭設計看,這句話做了兩件事:把事件命名為「臨時調整」,歸入營運常態;把「無賠償」表述為「政策」,把一個決定包裝成一個既存的、中立的規則。
「政策」這個詞的妙處在於它沒有主詞。沒有人決定不賠,只是政策如此。但賠償與否顯然是可以決定的事:臨時換車導致服務降級,鐵路系統在別的環節並非沒有補償先例可循。把「我們選擇不賠」寫成「沒有賠償政策」,是措辭層面的一次責任轉移,也是整組介面裡最後一塊被補上的板塊:系統先讓通知遲到,再讓規則互卡,最後用一個無主詞的名詞把縫隙封起來。
收在一位孕婦的站姿上
這起事件裡沒有任何一個環節需要高深的技術。通知提早發、座位對應重建或至少標註、退票規則為換車情境開一個例外入口、回應措辭把主詞放回去,任何一環補上,畫面都會不一樣。
設計的判準常常很樸素:一個拿著二等座車票的孕婦,在系統知道座位已消失的前提下,站了超過一個小時。如果一套服務介面允許這個畫面成立,那麼它的問題不在技術能力,而在環節之間沒有人負責把它們接起來。規則各自都寫好了,介面整體卻是斷的。
主題