一 證據索引先於截圖
報表爭議時,截圖只能證明某個時間的畫面,不能取代CSV、查詢條件或資料來源。先建立evidence_id,例如EV-20260917-003,記錄產生者、平台版本、查詢起訖、時區和原始檔sha256。截圖檔名以此編號連結,畫面數字不能單獨作結算依據。
虛構案例中HMI在09:12:30顯示流量125.4 L/min,班組質疑報表124.9。查EV-003的CSV與快照後,發現截圖是瞬時值,報表是[09:12:00,09:13:00)這一分鐘內有效樣本的算術平均,兩者取樣意義不同。
索引還要列設備、報表名、操作者、檔案清單和保存期限;原始檔缺失時標MissingSource,不能把截圖重新輸入成假原始資料。
| 證據 | 可回答 | 不能回答 |
|---|---|---|
| 截圖 | 畫面顯示 | 原始計算 |
| CSV | 列值與時間 | 儀表校正 |
| 快照 | 篩選條件 | 未保存操作 |
索引中的事件時間應以來源資料為準,接收時間用來重建傳輸延遲。若兩台設備時鐘相差18秒,報表比較時保留原始時鐘偏移,不用截圖上的本機時間替換。
若資料來源為歷史資料庫,索引保存查詢名稱和參數版本;不要只記畫面標題,因同一標題可能由不同命名查詢產生。
證據索引中的source_uri、exporter_version與schema_version要一起保存,因同一查詢在版本升級後可能產生不同欄位。接收者先確認版本,再比較數值。
若同一報表有手動註記,註記也用事件包中的comment_id連結,不能直接覆蓋原始數值。
保留週期到期時依組織政策銷毀,並留下包ID與銷毀紀錄。
二 保存原始檔與查詢條件
匯出先保存查詢條件,再產生CSV,成功後算雜湊,再建立索引;即時畫面另記截圖時間與來源時間,不能假設後截的現值與先匯出的歷史同一刻。資料以唯讀封存,修訂另建新evidence_id。來源時間與接收時間分開,因離線重送會改變到達時刻。
案例查詢範圍為LINE-2、[09:00,10:00)、UTC+8,結果每分鐘一列。爭議的09:12列使用09:12:00的124.4及09:12:30的125.4兩筆Good樣本,算術平均(124.4+125.4)÷2=124.9 L/min。畫面瞬時值取09:12:30那筆125.4;這是離線簡化樣本,不是時間加權平均。
排查順序是比對id、驗雜湊和列數、讀schema與快照、最後看截圖。雜湊不符就停止解讀,列數相同也不能忽略內容被改動。
查詢條件還要記錄聚合函式、採樣間隔、缺值處理和排序。平均、最後值與最大值即使畫面同時顯示,也各自是不同證據。
若CSV含Bad列,原始包保留全部列,報表視圖才依快照排除。這樣日後能解釋為何總列數和報表列數不同。
查詢重跑時保存實際輸出檔與執行結果,若資料庫已變更,註明重跑不是原始結果。
封存版本不只保存檔案,也保存產生系統和查詢工具版本。若工具升級導致平均值不同,將差異寫入新驗證報告並保留舊結果,讓稽核者知道是哪個版本產生哪個數字。
CSV欄位的單位與小數位要取自schema,截圖若只顯示一位小數,報表說明仍保留原始精度。
三 對齊畫面與資料
截圖應包含畫面名、設備篩選、起訖時間、時區、品質條件和匯出批次。若畫面放不下,完整資訊放索引,畫面至少保留evidence_id。
驗收三張圖:09:12:30瞬時值、09:00至10:00的逐分鐘表且選中09:12列、Bad品質提示。三張可指向同一事件包但各有view_id;不能把瞬時值誤當平均。
截圖與CSV不一致時先查刷新週期、時區和快取,不可改CSV配合畫面,應新增說明與報表版本。
封存目錄宜採package_id固定名稱,內含README、manifest與驗證結果。任何重新匯出的檔案都產生新版本,保留前一版本的索引連結。
截圖時間以檔案metadata為輔助,不能取代畫面內的時間標示,因複製或轉檔可能改變檔案時間。
證據包交付前由非產生者抽查一筆,確認能從索引一路開到來源列。
若發生重新匯出,新的package_id與查詢快照另存,schema只有欄位契約改變時才升版,舊包維持唯讀。這樣可以逐批比較來源,而不是把後來的結果悄悄覆蓋原證據。
事件包應保存產生失敗的日誌摘要,讓稽核者知道是否有重試、漏頁或部分完成。
四 事件包與權限
事件包可含manifest、CSV、截圖、README與驗證報告。manifest記大小和sha256,README說明資料不是安全控制依據。讀者可看封存包,僅授權角色可新增修訂。
財務只需報表CSV,維修需品質欄位,稽核需全包;可分角色提供視圖,但都回指同一evidence_id。分享版可遮罩設備名,原始包不可替換。
若平台不能匯出查詢條件,標QueryUnavailable並保存操作員聲明,這是證據限制,不偽造完整快照。
權限測試要以操作員、工程師和稽核者三個角色登入,確認可讀範圍、可新增備註和不可改原檔的差異。
稽核抽查時從索引反向找到CSV、快照和截圖,若任何連結斷掉就標為追溯失敗,不能只看包目錄存在。
若查詢資料跨越夏令時間或設備時區,索引同時保存原始offset與顯示時區。報表重跑必須使用原先的絕對起訖,不能用「最近一小時」等相對描述。對每一列保留品質狀態與來源識別,才能說明為何畫面有值而報表排除了它。證據包的驗證報告列出抽查列號、工具版本、執行者和結果;抽查失敗時整包進入待釐清狀態。
對跨日查詢明確寫end是否包含,否則兩個相鄰包可能重疊或漏掉邊界列。
五 驗收與限制
驗收故意改CSV一字,雜湊應失敗;把end從10:00改成10:01,快照差異應被發現;再用原包重建124.9。每項記工具版本與時間。
證據鏈能回答來源、產生方式和保存責任,不能證明儀表校正正確,仍要查校正紀錄與系統事件。
問:截圖能當唯一證據嗎?答:不能,至少要有原始檔、查詢條件和版本索引。
問:CSV重新排序怎麼辦?答:以新包保存並說明排序。
問:可有多張截圖嗎?答:可以,同一id配不同view_id。
問:來源時間缺失?答:保存arrival並標示不完整。
| 驗收 | 輸入 | 預期 |
|---|---|---|
| 雜湊 | CSV | 相符 |
| 重跑 | 快照 | 列值一致 |
| 權限 | 分享角色 | 不可改包 |
報告交付前再由第二人依索引開啟CSV和截圖,檢查設備和單位一致,時間區間與瞬時/聚合差異都有解釋,並將結果寫入驗收表。
若操作員手動裁切截圖,索引記錄裁切範圍和原因;不可裁掉時間軸後宣稱完整。
最後的報表交付應同時提供人可讀README與機器可讀manifest。README列出事件包用途、時間基準、缺值和品質規則;manifest列出檔案大小、雜湊、schema版本與產生者。稽核人員先驗manifest,再依索引開啟截圖與CSV,若截圖顯示125.4而CSV平均為124.9,便能依取樣條件解釋差異。若發現原包曾被替換,保留舊檔、計算新雜湊並建立新證據版本,絕不在原索引上覆寫。這套流程讓截圖成為可定位的輔助證據,而不是脫離來源的數字。
交付時將索引、原始包和驗證報告設為同一批次,保存接收者簽名與時間。若有人提出數字爭議,先回到批次再比較畫面,不直接複製截圖數字。
參考:W3C Tabular Data Model:表格資料、欄位與資料描述模型