CQL Workbench文件
文件目錄
管理後台

管理後台

管理員怎麼設定模型連線、管理帳號與角色,以及備份與還原系統設定。

管理後台在左側「管理」選單底下,只有管理員看得到,對應的 API 也只接受管理員。選單裡還有系統狀態、背景作業、Prompt 範本等頁面;這頁說明 LLM 設定、使用者與設定備份三項。

LLM 設定

分析用的每一組模型連線叫做 profile。在「管理 → LLM 設定」可以設定好幾組,再選一個 pool 策略,決定每次呼叫送往哪一組。

欄位說明
名稱辨識用的名字。
ProviderOllama,或 OpenAI 相容的服務。
Base URL服務位址。OpenAI 相容服務的網址可以含 /v1。
API Key列表只顯示末四碼;編輯時留空表示不變更。Ollama 通常不需要。
模型可以按「抓取」列出服務上有哪些模型。
啟用停用的 profile 不參與分析。
允許並行請求關閉後,送往這個 profile 的呼叫一次只送一個,其餘在 backend 排隊。
PriorityFallback 時數字越小越先試,預設 100。
WeightLoad balance 的權重,預設 1。
Timeout(秒)單次呼叫的逾時,預設 300。
Temperature、Top P留空就用服務的預設值。

pool 策略有兩種:

Fallback依 priority 由小到大依序嘗試,用第一個成功的回應。適合一主一備。
Load balance每次呼叫都依 weight 加權隨機排出順序。適合多個同等級的服務分攤流量。

兩種策略都只用啟用中的 profile。一組失敗就換下一組,全部失敗,這次呼叫才算失敗。

設定存檔後立即生效:每次呼叫都重新讀取 profile,不必重啟 backend。列表上的「測試」和編輯視窗的「測試連線」會送一個 ping,顯示連不連得上和延遲。

注意並行量:一份文件最多 4 個任務同時分析,每個任務的逐條件覆核最多 3 個同時呼叫,可以用 ANALYSIS_CONCURRENCY、NODE_REVIEW_CONCURRENCY 調整。一次只能處理一個請求的本機模型,例如單卡的 Ollama 或 llama.cpp,請關掉「允許並行請求」:否則請求會堆在模型那端,逾時照樣計算,最後逾時失敗。

資料庫裡沒有任何啟用的 profile 時,backend 改用環境變數 OLLAMA_HOST、OLLAMA_MODEL 指定的 Ollama。

每個分析階段的 prompt 都在「管理 → Prompt 範本」,存檔的版本會取代內建版本。各階段在做什麼,見分析管線。

使用者與角色

帳號有三種角色:

角色可以做什麼
管理員(admin)所有功能,包括整個管理後台,以及解鎖已鎖定的條文。
審核者(reviewer)上傳與分析文件、編輯任務、逐條件審核與整條簽核、修改邏輯、重新分析條件、把已核准的條文退回重審。
檢視者(viewer)文件、條文審核頁和工具頁都看得到,但不能上傳、分析、簽核或修改邏輯。

權限由 backend 檢查,不只是隱藏按鈕:除了健康檢查、登入和登出,所有 API 都要先登入,寫入的動作再依角色限制。

在「管理 → 使用者」可以新增帳號、改角色、重設密碼、停用或重新啟用。帳號是 2–64 個英數字或 . _ @ -,密碼 8–128 個字元,新帳號預設是審核者。

帳號不能刪除,只能停用。審核紀錄和簽核都記著是誰做的,刪掉帳號會毀掉這段歷史;停用後無法登入,紀錄全部保留。

不能停用自己的帳號,系統裡也至少要保留一位啟用中的管理員。

停用或改角色不必等對方登出:每個請求都會核對帳號目前是否啟用、角色是什麼。

上線前更換預設管理員:使用者表是空的時候,backend 啟動會建立一位管理員。帳密可以用 SEED_ADMIN_USER、SEED_ADMIN_PASSWORD 指定,沒指定就是開發用的預設值。

登入與鎖定

登入後,登入憑證存在 httpOnly cookie,24 小時後要重新登入。

同一個帳號從同一個 IP 登入失敗,15 分鐘內滿 10 次就會被擋,要等第一次失敗起算的 15 分鐘過去才能再試,畫面會提示還要等幾分鐘。登入成功會清除計數。

計數以帳號加 IP 為單位,有人在猜某個帳號的密碼,不會讓同一個辦公室的其他人登不進去。

每次失敗都寫入 audit_log(auth.login_failed),附上來源 IP。

計數存在 backend 的記憶體裡,重啟 backend 就會歸零。

設定備份

「管理 → 設定備份」把系統設定匯出成一個加密檔,可以在另一台主機、或重建之後還原。備份檔包含:

  • 所有 LLM profile 和 pool 策略,含 API Key。
  • 所有使用者帳號,含 argon2 密碼雜湊(不是明碼),還原後使用者沿用原本的密碼。
  • 其他幾項系統設定。

匯出時設定一組至少 12 個字元的加密密碼,輸入兩次,下載 .cqlbak 檔。檔案以 AES-256-GCM 加密,金鑰由這組密碼經 scrypt 推導;沒加密的部分只有匯出時間、LLM 設定數和帳號數,方便辨認是哪一份。

匯入分兩步,第一步不會寫入任何東西:

  1. 選擇備份檔,輸入它的密碼,按「解密並預覽」。畫面列出檔案內容,以及匯入後會刪除、停用哪些東西。
  2. 確認沒問題,輸入 REPLACE,按「確認匯入並覆蓋」。

匯入是覆蓋,不是合併:

項目匯入後
LLM profile 與 pool 策略整批取代:現有的 profile 全部刪除,換成檔案裡的;策略也照檔案。
檔案裡有的帳號沒有就新增,有就覆蓋密碼雜湊、顯示名稱、角色和啟用狀態。
檔案裡沒有的帳號停用,不刪除,審核紀錄保留。
其他系統設定照檔案內容覆蓋。
Prompt 範本不在備份裡,匯入不會動到。

以下情況會拒絕匯入:

  • 檔案裡沒有任何啟用中的管理員。匯入後會沒有人進得了管理後台。
  • 密碼錯誤,或檔案損毀、被竄改。解密時兩者無法分辨,一律拒絕。
  • 備份檔的版本比目前系統新。
  • 帳號缺少密碼雜湊或雜湊不是 argon2 格式,或 LLM profile 缺少名稱、模型或 Base URL。

匯入在同一個資料庫交易裡完成:要嘛全部套用,要嘛全部不變。

妥善保管備份檔:裡面有可用的 API Key 和所有帳號的密碼雜湊。加密密碼不會存在系統裡,遺失就無法還原,請和檔案分開保存。