抄來的合規文件變成契約義務的軟體公司
抄來的合規文件變成契約義務的軟體公司
Section titled “抄來的合規文件變成契約義務的軟體公司”本案例是教學合成案例(synthetic teaching case),不對應任何真實存在的公司、客戶、事件或人物。所有公司名稱、題數、金額、天數與內部對話都是為教學而設計的 example。設計目的是示範一個特定的結構:當一份文件描述了公司實際上沒有在做的事,這份文件不是零,而是負數——它把一個「還沒建立的做法」變成一份「有紀錄的落差」,而落差是可以被指出的,還沒建立的做法則不能。
案例 as-of 2026-07-31。Jurisdiction 未指定,而這一點在本案例中是不可退讓的前提。 隱私與資安是本教材中最依地區而異的題材之一:哪些資料算個人資料、事故要不要通報主管機關以及期限多長、資料主體的請求要在幾天內回覆、跨境傳輸需要什麼安排、以及未遵守時的後果是什麼——全部依當地法令而不同,而且會隨時間修改。
因此本案例通篇不主張任何地區的法律要求什麼,也不主張這家公司違反了任何地區的任何規定。 文中描述的所有損害都限於商業與營運層面:契約義務未履行、客戶信任流失、緊急補救的現金與人力成本、以及後續機會的喪失。至於這家公司在其所在地是否另有法規上的曝險,本案例的立場是:那是這家公司事後必須帶去問當地合格專業人士的一個開放問題,本文不回答它,讀者也不應從本文推論答案。 相關地區差異的查核框架見 隱私與數位服務的地區差異。
明示的簡化假設:
- 假設客戶與公司之間只有一份主約與一份附件,不考慮多層轉包或多方協議的複雜性。
- 假設沒有發生實際的資料外洩。本案例刻意設計成「沒有外洩也一樣出事」,用來說明損害不需要以外洩為前提。
- 不考慮保險理賠、也不考慮任何主管機關的介入。
- 假設公司內部沒有人故意隱瞞;所有人都認為自己在做當時最合理的事。
資料缺口(明列,不臆測補齊): 本案例沒有客戶內部的評估紀錄、沒有客戶最終決定不續約的完整理由、沒有其他同規模公司面對同一份問卷的做法可供比較、也沒有「若當初誠實作答會不會成交」的觀察。因此本案例無法判斷誠實作答是否會保住這筆生意,也無法判斷這家公司的遭遇在同業中是常見還是罕見。
fact / inference / example 的標示原則: 文中的金額加總(850,000 加 744,000 等於 1,594,000)是可以逐步驗算的 fact;公司名稱、題數、天數與所有敘事細節是 example;至於「抄文件導致失去客戶」這類敘述,是作者的 inference,文中會逐一標示並在後段說明為什麼它不構成證明。
「立達雲服」是一家十一人的軟體公司,提供一套排班與工時管理的雲端服務給中小型零售與餐飲業者。公司在第三年時年營收約 13,000,000 元,客戶以小型商家為主,單筆合約金額都不大。
觸發事件: 第三年第二季,一家中型連鎖零售商表達採購意願。這是公司接觸過最大的客戶,合約金額為 2,400,000 元/年,約占公司當時年營收的 2,400,000 ÷ 13,000,000 ≈ 18.5%。以三個決策位數表示約 18.5%,也就是接近五分之一的營收會來自這一個客戶。
採購流程走到最後一關時,客戶的資訊部門寄來一份供應商評估文件,包含:
- 一份 78 題的資安與隱私問卷,題目形式多為「貴公司是否有……」。
- 要求隨附四份書面文件:隱私政策、資訊安全政策、資料保留政策、事故通報程序。
- 回覆期限:5 個工作天。
兩位共同創辦人當時掌握的資訊:
- 這是公司最大的一筆潛在合約,而且對方採購窗口明確表示這一季要簽完。
- 公司沒有專職的資安或合規人員,兩位創辦人一位負責產品、一位負責業務。
- 公司確實有在做一些事:伺服器有存取控制、程式碼有審查、資料庫有加密、備份每日執行。
- 公司確實沒有的:任何一份成文的政策文件。
他們當時不知道的(這一點對評估他們的決策很重要):
- 他們不知道自己實際上把終端使用者的哪些資料存在哪些系統裡。這件事沒有人問過,因此沒有人知道。
- 他們不知道客戶會把這四份文件當成什麼用途——是內部評估的參考,還是會被附進契約。
- 他們不知道資料保留、事故通報這些承諾一旦寫下來,在營運上需要什麼樣的能力去支撐。
做出的決定: 負責業務的創辦人在網路上找到一家規模較大的同業公開的四份文件,下載後替換公司名稱與少數細節,在第四個工作天回覆問卷並附上文件。78 題問卷中,他依據那四份文件的內容作答,其中約三分之一的答案是「是」,而這些「是」對應的做法公司並沒有在執行。
這個決定在當下的樣子,必須被公平呈現: 他不認為自己在造假。他的心理模型是「這些是業界標準做法,我們遲早會做,先寫上去,之後補上」。他也不是唯一這樣想的人——另一位創辦人看過文件後說了「看起來很專業」。沒有人在這個房間裡有惡意,這正是本案例值得教學的地方:這個錯誤不需要壞人就能發生。
採取方案與 failed alternative
Section titled “採取方案與 failed alternative”文件實際承諾了什麼
Section titled “文件實際承諾了什麼”那四份抄來的文件裡,有五項承諾具體到可以被檢驗。以下並列文件所寫與公司實際狀況:
| 文件承諾 | 公司實際狀況 |
|---|---|
| 終端使用者資料於服務終止後 90 天內完成刪除 | 沒有保留期政策;備份無限期保存 |
| 每季執行一次弱點掃描並留存報告 | 從未執行過 |
| 資安事故於發現後 24 小時內通報客戶 | 沒有事故通報程序,也沒有定義何謂事故 |
| 應客戶要求,於 14 天內提供或刪除特定終端使用者的資料 | 沒有能力定位單一使用者的全部資料 |
| 全體員工每年完成資安訓練並留存紀錄 | 從未辦理過 |
五項全部為「已寫、未做」。 這張表就是本案例的核心:它不是一張「還沒做到的目標清單」,而是一張落差清單——左欄是公司在書面上告訴客戶的事,右欄是實際的事,而左欄的存在讓右欄變得可以被指認。
文件變成契約義務的那一刻
Section titled “文件變成契約義務的那一刻”合約在第三年第三季簽訂。客戶的法務把那四份文件連同問卷回覆一起編為主約的附件三,並在主約中加了一句:供應商應依附件三所述之政策與程序提供服務。
這一步是整個案例的轉折點,而且它是在公司沒有察覺的情況下發生的。 兩位創辦人看到附件時的理解是「他們把我們給的資料存檔而已」。實際發生的是:一份原本只是行銷式自我描述的文件,變成了雙方合意的服務內容的一部分。
從這一刻起,那五項承諾不再是「我們遲早會做的事」,而是公司已經同意要做、而且對方付了錢的事。這個轉換與 合約與內部控制 所處理的核心問題完全一致:契約的義務範圍不只來自主文,也來自被併入的附件,而附件常常是由不熟悉契約後果的人準備的。
落差浮現:第七個月
Section titled “落差浮現:第七個月”合作進行了七個月,一切正常。沒有資料外洩,沒有服務中斷。落差不是被事故揭穿的,而是被一個再普通不過的日常請求揭穿的。
客戶的一位門市員工(也就是本服務的終端使用者)離職後,向客戶的人資部門提出請求,希望取得自己在排班系統中的完整資料。客戶的人資照著附件三的第四項承諾,發信給立達雲服,要求在 14 天內提供該員工的全部資料。
公司內部接到這封信之後發生的事,可以逐日記錄:
- 第 1 天:業務創辦人轉給產品創辦人,附一句「這應該不難吧」。
- 第 2 至 4 天:工程師查主資料庫,找到排班紀錄與帳號基本資料。
- 第 5 天:有人想起打卡的原始紀錄存在另一套系統。查了之後發現該系統的資料沒有與主系統的使用者識別碼對應,只能用姓名加店號模糊比對。
- 第 6 至 9 天:陸續發現該使用者的資料還存在三個地方——客服工單系統、推播通知服務的第三方平台、以及一份三個月前為了除錯而匯出、至今仍留在共用雲端硬碟中的檔案。
- 第 10 天:第一次有人問出那個真正的問題:「我們到底把使用者資料存在幾個地方?」沒有人知道答案,因為公司從來沒有做過資料盤點(data inventory)。
- 第 11 至 19 天:一邊回答、一邊繼續發現新的位置。
- 第 19 個工作日:交出一份公司自己也承認不完整的答覆。
驗算承諾與實際的落差: 承諾 14 天,實際 19 個工作日。19 − 14 = 5,逾期 5 天(若把 14 天理解為日曆日,落差更大;文件沒有寫清楚是日曆日還是工作日,這個模糊本身也是抄文件的後果之一——沒有人在抄的時候想過這個區別)。
「不知道自己持有什麼資料」是本案例最根本的失敗,而它比五項承諾中的任何一項都嚴重。 一家不知道自己持有哪些資料的公司,無法回答使用者的請求、無法評估一次外洩的影響範圍、無法決定該保護什麼、也無法判斷任何一份隱私文件對自己是否誠實。資料盤點是所有其他隱私與資安工作的前提,這一點在 隱私與資安 中有完整說明;設計階段就把資料流納入考慮的原則見 設計階段納入隱私。
損害如何複合
Section titled “損害如何複合”客戶的資訊部門在收到不完整答覆後,要求說明。第一次會議上,公司選擇了誠實:兩位創辦人承認附件三的多數內容並未實施。
接下來發生的事,按時間排列:
第 8 個月: 客戶要求公司提出補救計畫並設定期限。公司找了外部顧問協助建立資料盤點、保留政策與事故通報程序,外部費用 850,000 元。
第 8 至 11 個月: 內部工程投入約 620 人時用於資料盤點、跨系統的使用者識別碼對應、刪除機制與匯出功能。以公司內部估算的 1,200 元/人時計,機會成本約 620 × 1,200 = 744,000 元。同期兩項既定的產品開發被暫停,合計 11 週。
直接與機會成本合計: 850,000 + 744,000 = 1,594,000 元。逐步驗算:620 乘 1,200,先算 600 乘 1,200 等於 720,000,再算 20 乘 1,200 等於 24,000,相加得 744,000;再與 850,000 相加得 1,594,000 元。
第 12 個月: 客戶通知不續約。年約金額 2,400,000 元。客戶給出的理由是「供應商管理上的信任問題」,並未主張任何法律上的請求。
第 12 至 14 個月的連帶影響: 另外兩家較大的客戶在得知此事後,要求重新提供文件並在續約時加入稽核權條款;一家正在評估的潛在客戶停止評估。這三項的金額影響本案例沒有資料,不予估算。
第一年的可計算損失: 補救成本 1,594,000 元,加上流失的年約 2,400,000 元,合計 1,594,000 + 2,400,000 = 3,994,000 元。這個數字不包含兩項被暫停的產品開發所造成的後續影響,也不包含團隊士氣與招募上的影響,因此應理解為下限。
Failed alternative:先抄一份過關,之後再補
Section titled “Failed alternative:先抄一份過關,之後再補”這正是公司實際採取的做法,也是本案例要標示的失敗替代方案。必須公平呈現它當時為什麼看起來合理,因為如果它看起來很蠢,讀者就學不到東西——真實世界裡會被選擇的錯誤選項,一定是看起來合理的那種。
其一,時間結構讓它看起來像唯一可行的選項。 問卷期限是 5 個工作天。誠實地建立資料盤點、寫出四份符合實際做法的政策,樂觀估計要六到八週。在「這週交出東西」與「六週後交出東西」之間,後者等於放棄這筆生意——而這筆生意是公司三年來最大的機會。
其二,抄來的文件在內容品質上確實比公司自己寫的好。 那家同業的文件寫得完整、專業、涵蓋面廣。相較之下,一份誠實但寫著「本公司目前無定期弱點掃描」的文件,在採購窗口眼裡看起來像是能力不足。這是一個真實的誘因結構:誠實的文件在評分表上會輸給不誠實的文件。 忽略這一點的教材是在說教,不是在教學。
其三,「之後再補」在心理上是真誠的。 兩位創辦人確實打算要補。他們不是在騙人,他們是在對自己的未來執行力做一個過度樂觀的估計。
它在什麼假設下失效? 這個做法隱含三個假設,三個都是錯的:
假設一:文件只會被讀,不會被援引。 錯在文件被編為附件並被主約併入,從描述變成義務。而這一步不是公司能控制的——文件交出去之後,如何被使用是對方決定的。只要文件離開了公司,它會被怎麼用就不再由公司決定。
假設二:只有出事才會被發現。 錯在揭穿它的不是資安事故,而是一個平常的使用者請求。承諾的每一項都是一個可被觸發的義務,而觸發它的門檻通常遠低於「發生事故」。這是最反直覺、也最重要的一點:本案例中沒有任何資料外洩,損害仍然完整地發生了。
假設三:補救的成本與補救的時點無關。 錯在時間壓力改變了成本。同樣一套資料盤點與刪除機制,在沒有承諾的情況下可以排進兩季的開發計畫、順著既有架構逐步做;在客戶盯著、期限已經逾期的情況下做,是趕工、是外包、是暫停其他工作。前者是投資,後者是損害控制。
還有一個更隱蔽的失效點:抄來的文件讓公司失去了發現問題的機會。 如果當初誠實地逐題作答,那 78 題問卷本身就是一份免費的、由大客戶提供的資安檢查表——每一個「否」都會指出一個具體的待辦事項,而「我們把使用者資料存在幾個地方」這個問題會在第一週就被問出來,而不是第七個月。抄文件不只是延後了工作,它還丟掉了一份現成的診斷。
預警訊號(不需要後見之明,當下就觀察得到): 有人說「先寫上去,之後補」;文件中的承諾沒有對應的內部負責人;沒有人能說出公司持有哪些資料、存在哪些系統;填問卷的人與實際執行做法的人不是同一批人,而且兩者沒有對過;以及——最直接的一項——公司內部沒有任何一個人,能夠指著文件中的某一項說出上次執行它是什麼時候。
結果與因果限制
Section titled “結果與因果限制”觀察到的結果(fact,均可從前述敘述直接驗算):
- 文件中五項具體承諾,全部為「已寫、未做」。
- 使用者資料請求的承諾期限為 14 天,實際交付於第 19 個工作日,
19 − 14 = 5,且交付內容不完整。 - 補救的外部顧問費用 850,000 元,內部工程 620 人時、以 1,200 元/人時估算為 744,000 元,合計
850,000 + 744,000 = 1,594,000元。 - 客戶於第 12 個月通知不續約,該合約金額為 2,400,000 元/年。
- 第一年可計算的損失合計
1,594,000 + 2,400,000 = 3,994,000元,且此為下限。 - 事後的資料盤點顯示,終端使用者資料實際存在於六個位置,其中三個位置在請求發生前無人知悉。
- 整個過程中沒有發生資料外洩。
本案例的 outcome 標記為 failure,意義被限定為:公司想達成的主要結果——用文件通過採購評估並保住這個客戶——沒有達成,而且付出了遠高於誠實作答成本的代價。 failure 不表示這家公司沒有任何可取之處:在落差被指出後,兩位創辦人選擇誠實承認而非繼續掩飾,這個決定很可能限制了損害的擴大,也是本案例中唯一做對的重大判斷。
因果限制,必須逐項說清楚:
- 沒有對照組。 我們沒有觀察到「同一家公司、同一個客戶、誠實作答」會發生什麼。有可能誠實作答會直接失去這筆生意——一家 11 人的公司,在 78 題中有三分之二要回答「否」,被大型採購流程刷掉是完全可能的結果。本案例不主張誠實作答就會成交。 它主張的是範圍窄得多的事:誠實作答的最壞結果是失去這筆生意;抄文件的最壞結果是失去這筆生意、加上補救成本、加上其他客戶的信任,而且在時間上更晚才發生,因此更難處理。這是一個關於結果分布的比較,不是關於哪個選項會成功的預測。
- 不能主張「抄文件導致不續約」。 客戶不續約可能還有其他原因——採購策略調整、內部系統整併、預算變動、或對產品本身的評價。本案例只觀察到客戶給出的理由是信任問題,但一方在終止關係時給出的理由,不必然是完整或唯一的理由。「抄文件是不續約的原因」是 inference,不是 fact。
- 不能主張這些金額有代表性。 850,000 元、620 人時、1,200 元/人時全部是為了讓算術清楚而設計的 example,不是從真實母體抽樣得到的。
- 不能反推「有真實文件就不會出事」。 一家有完整文件而且確實執行的公司,一樣可能發生事故、一樣可能失去客戶。文件與執行一致所消除的是「落差」這一類問題,不是所有問題。這與 事前補齊書面權利鏈 的結論結構相同:把事情做對能移除一類失敗的理由,不能保證成功。
- 法規面的曝險,本案例明確不予評估。 這家公司在其所在地是否另有通報義務、是否有主管機關可以介入、以及其終端使用者的請求在當地是否另有法定權利與期限——本案例一律不回答。這些是這家公司事後帶去問當地合格法律專業人士的問題,不是可以從本文推論的東西。本案例敘述的全部損害都是商業與營運性質的。
可轉移的教訓
Section titled “可轉移的教訓”可泛化的機制(與地區、產業無關,因為它是結構性的):
第一,一份描述你沒在做的事的文件,比沒有文件更糟,因為它是證據。這句話值得逐字理解。沒有文件時,公司的狀態是「尚未建立某項做法」——這是一個可以被排進計畫的待辦事項。有了不實文件之後,公司的狀態變成「已書面承諾但未執行」——這是一份可以被對方指著看的落差紀錄。同樣的實際做法,因為多了一份文件,從待辦事項變成了違諾。文件沒有讓公司變得更安全,只是讓公司變得更容易被指認。
第二,交出去的文件,用途不再由你決定。本案例的關鍵轉折不是抄文件,而是文件被編為附件併入主約——而那一步是對方的法務做的,公司甚至沒有察覺。可泛化的判斷方法是:在把任何描述公司做法的文件交給外部之前,先假設它會被當成承諾。若在這個假設下你不願意交出它,就不要交出它。
第三,承諾會被日常請求觸發,不需要等到出事。本案例中沒有任何資料外洩,損害仍然完整發生。每一項寫下來的承諾都是一個等待被觸發的義務,而觸發門檻通常低得多——一封客服信、一次續約前的稽核、一位使用者的普通詢問。用「應該不會出事」來評估不實文件的風險,是把觸發條件想得太窄。
第四,資料盤點是所有隱私與資安工作的前提。不知道自己持有什麼資料的公司,無法回答請求、無法評估外洩影響、無法決定保護什麼、也無法判斷任何一份文件對自己是否誠實。本案例中那個第 10 天才被問出的問題——「我們到底把使用者資料存在幾個地方」——應該是第一天就要有答案的問題。
第五,問卷是免費的診斷,抄文件會把它丟掉。一份 78 題的客戶問卷,若誠實逐題作答,會產出一份由對方出資設計的待辦清單。這是抄文件的隱藏成本中最少被談到的一項。
第六,誠實的文件在評分上會輸給不誠實的文件,這個誘因結構是真的。承認這一點才能討論怎麼處理它。可行的處理方式是把「否」寫成有時程的承諾:不是「本公司無定期弱點掃描」,而是「本公司目前無定期弱點掃描;若成為供應商,將於簽約後 90 天內建立並提供第一次報告」。這仍然是誠實的,但它給了採購窗口一個可以往上呈報的答案。這個做法不保證有效,本案例也沒有觀察到它的結果——它只是把選項從「說謊或出局」擴大成三個。
不可泛化的部分:
- 哪些資料算個人資料、事故通報的對象與期限、使用者請求的法定回應時間、跨境傳輸的要求、以及未遵守時的後果——全部依 jurisdiction 而不同,本案例對這些問題一律不給答案。 見 隱私與數位服務的地區差異,並尋求當地合格的法律專業協助。
- 78 題、5 個工作天、14 天、90 天全部是設計出來的 example,不是任何產業的標準。不同客戶的問卷長度與期限差異極大。
- 2,400,000 元、850,000 元、620 人時、1,200 元/人時都是為了算術清楚而設定的數字,不具參考價值。
- 「客戶集中度接近兩成」這個處境會放大本案例中的每一項後果。一家客戶分散的公司面對同樣的錯誤,損害的形狀會不同。
讀者可以怎麼用:
第一,拿出公司現有的每一份對外文件——隱私政策、資安說明、服務水準描述、問卷回覆——逐句問一個問題:這句話描述的事,公司上一次做是什麼時候? 答不出來的每一句,都是一項落差。把它們列成表,這就是最小可行的第一版 風險清單。
第二,在回答下一份客戶問卷之前,先做資料盤點。四個欄位:什麼資料、存在哪個系統、誰有權存取、保留多久。填不出來的欄位不要在問卷上編答案,據實寫未知並附上處理時程。
第三,檢查已簽合約的附件。翻出每一份合約,看看有哪些文件被列為附件並被主文併入。多數公司在這一步會發現至少一項自己不知道已經承諾的事。
第四,若已經交出過不實的文件,處理順序是先盤點、再告知、後補救,而不是等對方發現。本案例中公司唯一做對的事是被問到時選擇誠實,而那已經是被動的時點了。至於主動告知在契約與法律上的具體後果為何,那是必須帶去問當地合格專業人士的問題,不是本案例能回答的。
第五,把它和相反的做法對照著看。事前補齊書面權利鏈 中的公司在沒有外部壓力時做了一次完整清點,付出約 275,000 元與 240 小時;本案例的公司延後到有壓力時才做,第一年可計算的損失是 3,994,000 元。兩個數字不能直接相比——不同的公司、不同的題材、不同的規模,而且兩者都是合成的 example。 可以相比的只有結構:在沒有壓力時把事情做對,是一項可以排程、可以控制範圍的工作;在有壓力時做同一件事,是損害控制。
Cybersecurity Framework(NIST)支持本案例的兩項框架性判斷。其一,該框架的六項核心功能為 Govern、Identify、Protect、Detect、Respond、Recover,而 Identify 排在 Protect 之前——也就是說,先弄清楚自己有什麼資產與資料,是保護工作的前提而不是它的一部分。本案例中「第 10 天才有人問出我們把使用者資料存在幾個地方」正是這個順序被顛倒的後果:公司在沒有 Identify 的情況下,書面承諾了屬於 Protect、Detect 與 Respond 的多項做法。其二,該資源自我定位為協助組織理解與改善資安風險管理的自願性指引,供產業、政府與各類組織使用,而不是法規要求。本案例據此明確區分:文中五項承諾的未執行是商業與契約層面的落差,不等於任何地區的法規不遵循。適用範圍限制: 該框架由美國國家標準暨技術研究院發布,是非強制性的方法論工具,既不是任何地區的法定義務,也無法用來判斷任何公司的做法是否合規;本案例僅將其作為「盤點先於保護」這個順序的依據。Accessed 2026-07-31。
IFC Corporate Governance Methodology Tools(International Finance Corporation)支持本案例的一項限制性主張:治理與控制的設計沒有一體適用的標準,必須依公司規模、所有權型態與業務性質調整,該資源本身即針對不同類型的企業提供不同工具。本案例據此指出,抄用另一家規模較大的同業的政策文件,在方法論上從一開始就有問題——那些文件所描述的控制措施是為另一種規模、另一種資源條件的組織設計的,即使公司真心想執行,也未必是它在十一人規模下應該採用的做法。換句話說,抄文件的錯誤不只在於誠實與否,也在於它假設控制措施可以脫離組織條件被複製。 適用範圍限制: 該資源提供的是方法論工具,不是特定地區的法規要求,也無法用來判斷任何具體公司的做法是否合規。Accessed 2026-07-31。
未能取用的來源(誠實記錄): 作者曾嘗試取用 OECD 的隱私保護與個人資料跨境流通指導原則頁面,以及 ISO/IEC 27001 的標準頁面,兩者在 2026-07-31 的自動化取用均回傳 HTTP 403,頁面內容未能取得。因此本案例未引用這兩份文件,正文中也未依據它們作出任何主張;相關內容不以記憶重建。
關於本案例數字的來源: 公司名稱、題數(78)、天數(5、14、19)、金額(2,400,000、850,000、744,000、1,594,000、2,400,000、3,994,000)、人時與所有敘事細節全部是教學 example,不來自上述任何來源,也不對應任何真實個體或事件。兩筆來源支持的是判斷框架與適用邊界,不是本案例的事實。