交付與交換 / X4.1 · 檔位兩欄

CSV 為什麼同時有 Rating 和 Circle,兩欄為什麼會互相矛盾

SlateX 的 CSV 是逐機位一行,沒有機位的條也會輸出一行;目前的表頭與欄序寫死,只能在既有順序之後追加,不能把現有的欄重排。Rating 和 Circle 看起來都像在描述同一個現場檔位,但它們並不是兩路現場狀態:兩欄都從檔位數值派生,而且派生條件不同,所以同一條記錄可以在兩欄裡給出看起來不一致的結果。

Rating 與 Circle 都是從檔位數值派生的交付欄位,不應把它們當成兩路獨立的現場圈選狀態。

CSV 的行形態先按機位展開

一條 Take 有幾台機位,CSV 就按機位展開成對應的資料行;如果這一條沒有機位,仍然會輸出一行,只是機位相關欄的缺值形態各不相同:有的留空,有的落到預設值,接收方應逐欄核對。表頭使用固定的英文欄名,欄序也由常數定義,不會跟著 App 介面語言切換。

這一點與《CSV 交付比 ALE 多帶什麼、少帶什麼》的口徑一致:CSV 的欄位結構要按檔案本身核對,不能從另一種交付檔案推斷它會帶有同一套欄。

Rating 把檔位數值翻成固定英文文字

Rating 的對應關係是固定的:數值 4 寫 Circle,3 寫 Keep,2 寫 Hold,1 寫 N/G,沒有標檔時寫空字串。這組交付文字是英文常數,不跟著介面語言變化。

因此 Rating 是「檔位數值的文字化結果」,不是另外讀一份現場狀態。中文介面、英文介面或其他介面語言可以各有各的顯示文案,但 CSV 這裡仍按固定的英文詞輸出。

Circle 只檢查是不是第 4 檔

Circle 的規則更窄:只有檔位數值等於 4 時寫 TRUE,其他情況一律寫 FALSE。這一欄沒有空值分支,因此未標檔、Keep、Hold、N/G 都會得到一個明確的假值,而不是留空。

這就產生了標題所問的那個矛盾。現場把一條標為 Keep 時,內部還有一個圈選狀態位會在某些寫入路徑裡一起被置為真;但 CSV 的 Circle 並不讀取那個狀態位,它只看檔位是不是 4,所以這一條在 CSV 裡會是 Rating=Keep、Circle=FALSE。

兩欄都不讀現場狀態或圈選標誌

Rating 和 Circle 都不讀取現場狀態文字,也不讀取那個內部的圈選狀態位。它們只是把同一個檔位數字走兩套不同的派生規則。因此接收方不能把 Circle 這一欄解釋成「現場有沒有圈選」的直接記錄,也不能把兩欄當作互相校驗的獨立來源。

能下的結論只能是:檔位在不同交付物裡的可見形態並不相同,這裡給出的只是 CSV 兩欄各自的來源。這兩欄都不攜帶那個內部狀態位,所以既不能把 Circle 還原成現場圈選,也不能反過來說現場狀態完整地跟著 CSV 走。

Keep 條可以同時得到 Rating=Keep 與 Circle=FALSE;這是兩套派生條件不同,不是兩路現場狀態互相否定。

CSV 還有兩條需要同時看的形態邊界

表頭由常數直接拼接,不經過欄位轉義;資料欄位裡的換行與製表符會先被壓成空格,而不是保留換行之後靠引號包裹。因此不能把這份輸出概括成「符合 RFC4180」。這裡說的是目前的生成形態,不替任何下游試算表或剪輯系統判斷它會怎樣解讀檔案。

欄名也是固定的英文常數,不會跟著 App 語言切換。《ALE 每一欄的值從哪裡來》和《拿到 ALE,先核對這些欄位》所強調的接收原則在這裡同樣成立:接收方應按自己的匯入範本逐欄核對實際欄名、值形態與來源。

FAQ

Rating 會跟著介面語言變化嗎?

不會。CSV 裡的檔位文字是固定的英文常數,未標檔時 Rating 寫空字串。

Circle 為空是不是表示沒有圈選?

Circle 沒有空值分支。檔位等於 4 寫 TRUE,其他情況寫 FALSE。

為什麼 Keep 會得到 Circle=FALSE?

因為 Circle 只檢查檔位是不是 4;Keep 對應的是另一個檔位,因此會寫 FALSE,即使那個內部圈選狀態位在寫入路徑裡為真。

可以把 Circle 當成現場圈選狀態嗎?

不能這樣解釋。它只由「是不是第 4 檔」這個條件派生;接收方應結合 Rating 與自己的匯入規則核對含義。


Axiom One LLC — SlateX。以上數字截至 2026-09-24。