第350章 一億兩千萬條數據!德勤的秘密標記!
2004年四月二十八號。周三。
早上七點半,林遠到工作室的時候,趙強已經在工位上了。屏幕上密密麻麻的數據流正在滾動。
"數據來了。凌晨兩點發的郵件。"趙強頭也不抬,"壓縮包三個G,解壓後大概十五到二十G。韓委員那邊轉發的,附了說明文檔。"
林遠放下背包,湊過去看文件索引。
"審計底稿七千二百份,時間跨度一九九九到二零零三,五個財年。準則覆蓋——"他眯了眯眼,"中國獨立審計準則、國際審計準則、國際財報準則、US GAAP。四個標準。"
韓委員說的只有兩個標準,實際給了四個。這信息量比預期的大得多。
"這家企業有海外子公司。"趙強翻到附加文件清單,"國內三家全資子公司,海外兩家合資——一家在香港,一家在開曼。不同法域用不同準則編制報表,合併的時候再統一調整為國際財報準則。"
"所以衝突可能出現在三個層面。"林遠掰著手指,"子公司自身報表層面、合併調整層面、最終合併報表層面。三個層次疊在一起,複雜度是指數級的。"
趙強敲了幾下鍵盤,算出總數。"按每份底稿均值估算,審計對象總量大約一億兩千萬條。"
一億兩千萬。
上次集成測試的數據量是兩千零三萬。這次是六倍。而且那是乾淨的測試數據,這是真實生產環境的審計底稿——格式混亂、欄位缺失、數據冗餘,什麼髒數據都可能存在。
林遠深吸一口氣,在腦子裡快速過了一遍引擎的處理流程。數據預處理層是第一道關卡——如果預處理做不好,後面審計引擎跑出來的結果全廢。
"先搭預處理框架。"林遠拉過白板,拿起馬克筆,"格式標準化、數據清洗、準則歸屬標記、完整性校驗——四層流水線。今天打通前兩層,明天跑後兩層,後天正式盲測。"
上午九點,全員就位。
白板上畫出了完整的數據預處理流程圖。王晨負責格式轉換模塊,張浩然和周凱負責數據清洗管線,李哲做準則歸屬的映射邏輯。趙強統籌全局,同時盯每條管線的進度。
林遠先讓小艾分析DAF格式的結構特徵。
"DAF基於XBRL 2.0標準,擴展了約15%的自定義欄位。"小艾很快在腦海里給出分析結果,"主要集中在三個區域:合併抵消分錄的層級標記、跨境子公司準則映射表、審計師判斷備註。"
"判斷備註是自由文本還是結構化數據?"林遠在心裡追問。
"自由文本。格式不統一,不能直接參與衝突檢測。"小艾在腦海里答道。
"先不管,單獨存一份。後面如果要做文本分析再考慮。"林遠開口對趙強等人說。
趙強花四十分鐘把七千二百份底稿的文件頭全部掃了一遍,結果讓他皺起了眉。
"問題不少。"他說,"日期格式混亂——大約八百多份底稿的日期格式不統一。二零零一年的老數據,那時候DAF標準還沒完全統一。有的用DD/MM/YYYY,有的MM-DD-YYYY,還有少數用了中文日期格式。"
"寫多格式解析器。"林遠說,"正則匹配加優先級排序,自動識別。YYYY-MM-DD優先,然後DD/MM/YYYY,再MM-DD-YYYY。識別不了的fallback到人工標記隊列,今晚集中處理。"
"中文日期呢?"
"單獨寫規則。正則匹配'二零零一年三月十五日'這種格式,轉換成標準日期。工作量不大但容易出錯——月份有中文和阿拉伯數字混用的情況。"
"金額欄位呢?"
"統一轉ISO代碼。'HK'→USD,'€'→EUR。"
趙強記下這些,繼續翻分析結果。"還有千分位問題——有的底稿金額寫'1,234,567.89',有的寫'1234567.89',還有極少數寫'1 234 567.89'用空格分隔的。"
"全部去掉千分位分隔符,統一成純數字格式。"
【記住本站域名看書就上 TW 看書網,精彩盡在𝐬𝐡𝐮.𝐭𝐰】
"還有一類——金額為空。"
"空值怎麼區分?"
"兩種情況。"趙強說,"一種是整張底稿幾乎都空——大概率是新設子公司還沒正式運營,屬於結構性空值。另一種是其他欄位都有數據,只有某個特定欄位空了——可能是審計師漏填。"
"那就分兩類標記。結構性空值標'不適用',異常空值標'待補充'。引擎檢測的時候,對前者直接跳過,對後者標記為數據質量問題,不納入衝突統計。"
蘇明遠買了盒飯回來,看著白板上越列越長的異常清單,嘆了口氣。"這才一上午,就冒出四五個坑。"
"韓委員說得對——真實數據就是泥潭。"林遠扒了一口飯,"但這才是真正考驗引擎魯棒性的時候。測試數據再大也是乾淨的,實戰才是試金石。"
"時間夠嗎?"蘇明遠問。
"原定明天跑盲測。今天一天搞不定預處理——至少需要兩天。框架搭建加調試一天,明天跑通全量數據驗證,後天正式盲測。"
"時間表要後移一天了。2004年四月三十號跑盲測,2004年五月一號出結果。"
"對,我去跟韓委員說一聲。"
下午兩點,林遠給韓委員打了電話。
韓委員聽完匯報,沉吟了幾秒。"延期一天可以。但2004年五月一號中午十二點之前,我必須看到結果。不管是終版報告還是中間結果——我要有東西可以提前發給Morrison。"
"明白。"
"另外提醒你一件事。"韓委員的聲音低了下來,"Hayes不知道你們在做盲測。這是他單方面提出的要求,Morrison也是事後才告訴我的。2004年五月十二號演示的時候,他大概率會帶著審計師的原始結論,現場逐條對照你們的結果。"
林遠沉默了一秒。
"也就是說,演示現場就是盲測的揭曉時刻。"
"對。他會在場,會當場比對。"
林遠反而笑了。"這倒是好事。"
"怎麼說?"
"如果他手裡有報告,演示的時候他可以直接對照。我們的引擎找到四十七組,他的審計師也找到四十七組——當場驗證,比事後看報告更有衝擊力。"
韓委員笑了一聲。"你倒是會借力。"
"借力的前提是——引擎真的能找到。"
"好。那就看你後天的了。"
掛了電話,林遠回到工位。
"剛接到消息——演示當天,Hayes會拿著德勤審計師的原始結論,現場逐條比對。誤差容忍度基本為零。"
趙強抬頭看了他一眼。"壓力更大了。"
"不。"林遠說,"目標沒變——不是通過盲測,是超越。"
晚上八點。
格式標準化基本完成,第一版預處理管線跑通。趙強在最後跑完整性校驗的時候,突然停住了。
"有點意思。"
"什麼?"
"合併抵消分錄裡面,有大約三百條記錄被標記為'已審核'。"
"審計師標的?"
"不像。"趙強點開一條記錄的詳情,把屏幕轉向林遠,"你看——標記格式不是DAF的標準欄位,是後期追加的擴展欄位。時間戳顯示二零零三年十月——比底稿的創建時間晚了整整兩年。而且標記方式完全統一,像是批量操作。"
林遠眯起眼睛。"沒有署名?"
"沒有。DAF標準欄位里沒有操作者記錄。但這個擴展欄位的命名很規範——'INTERNALREVIEWFLAG'。不是隨手加的。"
"像某個腳本自動打的標記。"
"對。而且只標記了合併抵消分錄這一類——其他類型的底稿都沒有。"
兩個人對視了一眼。
審計完成後兩年,有人用腳本專門針對合併抵消分錄做了一次系統性的複查。這不是常規審計流程——常規審計在出報告的時候就結束了。這是額外的操作,是審計之後的"第二遍"。
"德勤對這批合併抵消分錄不放心。"林遠說。
"不放心就意味著有問題。"趙強說。
"把這三百條單獨標出來。盲測的時候,重點跑這批數據。"
"如果引擎找到了德勤工具沒發現的問題呢?"
林遠笑了。"那就不是通過盲測——是揭底牌了。"
趙強嘴角動了一下——這是他為數不多的表情變化。
王晨走過來。"格式標準化完成了。下一步?"
"欄位映射。"林遠說,"DAF的Schema文檔在壓縮包根目錄——你打開,把自定義欄位和標準欄位一一對應。"
"好。"
林遠走到白板前,在時間表最下面寫下兩個字:
盲測。
早上七點半,林遠到工作室的時候,趙強已經在工位上了。屏幕上密密麻麻的數據流正在滾動。
"數據來了。凌晨兩點發的郵件。"趙強頭也不抬,"壓縮包三個G,解壓後大概十五到二十G。韓委員那邊轉發的,附了說明文檔。"
林遠放下背包,湊過去看文件索引。
"審計底稿七千二百份,時間跨度一九九九到二零零三,五個財年。準則覆蓋——"他眯了眯眼,"中國獨立審計準則、國際審計準則、國際財報準則、US GAAP。四個標準。"
韓委員說的只有兩個標準,實際給了四個。這信息量比預期的大得多。
"這家企業有海外子公司。"趙強翻到附加文件清單,"國內三家全資子公司,海外兩家合資——一家在香港,一家在開曼。不同法域用不同準則編制報表,合併的時候再統一調整為國際財報準則。"
"所以衝突可能出現在三個層面。"林遠掰著手指,"子公司自身報表層面、合併調整層面、最終合併報表層面。三個層次疊在一起,複雜度是指數級的。"
趙強敲了幾下鍵盤,算出總數。"按每份底稿均值估算,審計對象總量大約一億兩千萬條。"
一億兩千萬。
上次集成測試的數據量是兩千零三萬。這次是六倍。而且那是乾淨的測試數據,這是真實生產環境的審計底稿——格式混亂、欄位缺失、數據冗餘,什麼髒數據都可能存在。
林遠深吸一口氣,在腦子裡快速過了一遍引擎的處理流程。數據預處理層是第一道關卡——如果預處理做不好,後面審計引擎跑出來的結果全廢。
"先搭預處理框架。"林遠拉過白板,拿起馬克筆,"格式標準化、數據清洗、準則歸屬標記、完整性校驗——四層流水線。今天打通前兩層,明天跑後兩層,後天正式盲測。"
上午九點,全員就位。
白板上畫出了完整的數據預處理流程圖。王晨負責格式轉換模塊,張浩然和周凱負責數據清洗管線,李哲做準則歸屬的映射邏輯。趙強統籌全局,同時盯每條管線的進度。
林遠先讓小艾分析DAF格式的結構特徵。
"DAF基於XBRL 2.0標準,擴展了約15%的自定義欄位。"小艾很快在腦海里給出分析結果,"主要集中在三個區域:合併抵消分錄的層級標記、跨境子公司準則映射表、審計師判斷備註。"
"判斷備註是自由文本還是結構化數據?"林遠在心裡追問。
"自由文本。格式不統一,不能直接參與衝突檢測。"小艾在腦海里答道。
"先不管,單獨存一份。後面如果要做文本分析再考慮。"林遠開口對趙強等人說。
趙強花四十分鐘把七千二百份底稿的文件頭全部掃了一遍,結果讓他皺起了眉。
"問題不少。"他說,"日期格式混亂——大約八百多份底稿的日期格式不統一。二零零一年的老數據,那時候DAF標準還沒完全統一。有的用DD/MM/YYYY,有的MM-DD-YYYY,還有少數用了中文日期格式。"
"寫多格式解析器。"林遠說,"正則匹配加優先級排序,自動識別。YYYY-MM-DD優先,然後DD/MM/YYYY,再MM-DD-YYYY。識別不了的fallback到人工標記隊列,今晚集中處理。"
"中文日期呢?"
"單獨寫規則。正則匹配'二零零一年三月十五日'這種格式,轉換成標準日期。工作量不大但容易出錯——月份有中文和阿拉伯數字混用的情況。"
"金額欄位呢?"
"統一轉ISO代碼。'HK'→USD,'€'→EUR。"
趙強記下這些,繼續翻分析結果。"還有千分位問題——有的底稿金額寫'1,234,567.89',有的寫'1234567.89',還有極少數寫'1 234 567.89'用空格分隔的。"
"全部去掉千分位分隔符,統一成純數字格式。"
【記住本站域名看書就上 TW 看書網,精彩盡在𝐬𝐡𝐮.𝐭𝐰】
"還有一類——金額為空。"
"空值怎麼區分?"
"兩種情況。"趙強說,"一種是整張底稿幾乎都空——大概率是新設子公司還沒正式運營,屬於結構性空值。另一種是其他欄位都有數據,只有某個特定欄位空了——可能是審計師漏填。"
"那就分兩類標記。結構性空值標'不適用',異常空值標'待補充'。引擎檢測的時候,對前者直接跳過,對後者標記為數據質量問題,不納入衝突統計。"
蘇明遠買了盒飯回來,看著白板上越列越長的異常清單,嘆了口氣。"這才一上午,就冒出四五個坑。"
"韓委員說得對——真實數據就是泥潭。"林遠扒了一口飯,"但這才是真正考驗引擎魯棒性的時候。測試數據再大也是乾淨的,實戰才是試金石。"
"時間夠嗎?"蘇明遠問。
"原定明天跑盲測。今天一天搞不定預處理——至少需要兩天。框架搭建加調試一天,明天跑通全量數據驗證,後天正式盲測。"
"時間表要後移一天了。2004年四月三十號跑盲測,2004年五月一號出結果。"
"對,我去跟韓委員說一聲。"
下午兩點,林遠給韓委員打了電話。
韓委員聽完匯報,沉吟了幾秒。"延期一天可以。但2004年五月一號中午十二點之前,我必須看到結果。不管是終版報告還是中間結果——我要有東西可以提前發給Morrison。"
"明白。"
"另外提醒你一件事。"韓委員的聲音低了下來,"Hayes不知道你們在做盲測。這是他單方面提出的要求,Morrison也是事後才告訴我的。2004年五月十二號演示的時候,他大概率會帶著審計師的原始結論,現場逐條對照你們的結果。"
林遠沉默了一秒。
"也就是說,演示現場就是盲測的揭曉時刻。"
"對。他會在場,會當場比對。"
林遠反而笑了。"這倒是好事。"
"怎麼說?"
"如果他手裡有報告,演示的時候他可以直接對照。我們的引擎找到四十七組,他的審計師也找到四十七組——當場驗證,比事後看報告更有衝擊力。"
韓委員笑了一聲。"你倒是會借力。"
"借力的前提是——引擎真的能找到。"
"好。那就看你後天的了。"
掛了電話,林遠回到工位。
"剛接到消息——演示當天,Hayes會拿著德勤審計師的原始結論,現場逐條比對。誤差容忍度基本為零。"
趙強抬頭看了他一眼。"壓力更大了。"
"不。"林遠說,"目標沒變——不是通過盲測,是超越。"
晚上八點。
格式標準化基本完成,第一版預處理管線跑通。趙強在最後跑完整性校驗的時候,突然停住了。
"有點意思。"
"什麼?"
"合併抵消分錄裡面,有大約三百條記錄被標記為'已審核'。"
"審計師標的?"
"不像。"趙強點開一條記錄的詳情,把屏幕轉向林遠,"你看——標記格式不是DAF的標準欄位,是後期追加的擴展欄位。時間戳顯示二零零三年十月——比底稿的創建時間晚了整整兩年。而且標記方式完全統一,像是批量操作。"
林遠眯起眼睛。"沒有署名?"
"沒有。DAF標準欄位里沒有操作者記錄。但這個擴展欄位的命名很規範——'INTERNALREVIEWFLAG'。不是隨手加的。"
"像某個腳本自動打的標記。"
"對。而且只標記了合併抵消分錄這一類——其他類型的底稿都沒有。"
兩個人對視了一眼。
審計完成後兩年,有人用腳本專門針對合併抵消分錄做了一次系統性的複查。這不是常規審計流程——常規審計在出報告的時候就結束了。這是額外的操作,是審計之後的"第二遍"。
"德勤對這批合併抵消分錄不放心。"林遠說。
"不放心就意味著有問題。"趙強說。
"把這三百條單獨標出來。盲測的時候,重點跑這批數據。"
"如果引擎找到了德勤工具沒發現的問題呢?"
林遠笑了。"那就不是通過盲測——是揭底牌了。"
趙強嘴角動了一下——這是他為數不多的表情變化。
王晨走過來。"格式標準化完成了。下一步?"
"欄位映射。"林遠說,"DAF的Schema文檔在壓縮包根目錄——你打開,把自定義欄位和標準欄位一一對應。"
"好。"
林遠走到白板前,在時間表最下面寫下兩個字:
盲測。