Skip to Content
核心概念Decimal 幣別與單位

Decimal 貨幣與計量單位

ct.units major 1 為儲存型 decimal 欄位加入選擇啟用的維度 metadata,不是貨幣換算。既有無單位 decimal 仍可用且行為不變,精確字串傳輸格式仍適用。

宣告一種選擇方式

{"name":"Amount","type":"decimal","precision":18,"scale":2,"allow_negative":true,"unit":{"kind":"currency","fixed":"TWD"}}

也可用 unit: {kind: "uom", unit_column: "UOM"},由各列選擇單位。kind 只能是 currency 或 uom,fixed 與 unit_column 恰選一個。fixed 是 1–128 字元、首尾無空白的非空識別,不是經貨幣登錄表驗證的代碼。unit_column 指向 string、select 或單一原生 link 欄位;顯示名稱會正規化為內部鍵。link 選擇欄使用已授權的原生目標識別,不用顯示文字。缺少、隱藏、不可讀或無法解析的選擇欄不能當成無單位。

REST 欄位編輯與原生 IaC 保留 unit;IaC 以欄位 ref 轉譯 unit_column。請求形狀不符可回 422,語意不符則回 400 ct.unit_config_invalid。只有儲存型 decimal 可宣告 unit;計算欄位從運算元推導維度,不另宣告獨立單位。

計算與拒絕

  • 加、減及比較要求維度相容。貨幣/UOM 種類不同、所選識別不同,或在要求相容處混用有維度與無單位運算元,會回 ct.unit_mismatch。
  • 乘法最多一個有維度運算元;兩個有維度值相乘會拒絕,不自動形成複合單位。除以無單位值保留分子維度;相容的有維度值相除得到無單位比率。
  • Decimal sum/average/min/max 及計算 rollup 會傳遞維度,對參與的非 null 值若缺單位或混用單位則拒絕。Count 與 distinct count 無單位。請刻意分組/篩選,讓每個數值聚合只處理相容單位,不能先加總不同貨幣再貼標籤。
  • Formula、lookup、rollup、REST/Command SQL 查詢及 CT Analyst/Agent 分析在支援途徑保留維度檢查。目前列/欄位/連結目標權限仍適用。缺少或隱藏選擇欄回型別化拒絕,不回隱藏 ID 或部分總額;轉成文字不會取得算術權限。

共用單位錯誤為 400 {detail: {code: "ct.unit_missing" | "ct.unit_mismatch" | "ct.unit_config_invalid", message: "Decimal units are missing or incompatible"}};外層 Command/工具/計算途徑可保留自己的拒絕封套,不能一律當成規則的 detail.error。不查匯率、不換算 UOM、不隱含四捨五入,也不重寫數值。

Schema 變更

重送相同單位設定是 no-op。表內只要有有效或回收桶資料列,更改或移除單位設定就回 409 ct.unit_config_immutable。有維度欄位或被引用的單位選擇欄也不能變更型別;不能刪除被引用的選擇欄。請在載入資料前準備單位,或另行設計明確遷移,不要只改既有數值的標籤。

另見欄位、查詢聚合、IaC 欄位行及能力探索。此處可用代表已合併後端契約,不代表已部署、瀏覽器驗收或實測效能。

Last updated on