ccairn
荒野旅人 ERP · 開發者平台

讓 agent 直接
操作整套旅行社 ERP

cairn 把後台每個動作都暴露成一條 cairn CLI 命令與一個版本化 /api/v1 端點——同一套 core 邏輯、同權限、同稽核。給 AI agent 與工程師, 一個指令就能下單、派工、請款、對帳。

255
CLI 命令
278
API 端點
32
資源領域
1
套 core operation(兩 transport 共用)
cairn — agent session
$ cairn orders list --status pending_payment
orders (3/3) — page 1/1
 ord_8K2…  pending_pay  玉山主峰3日 · 王小明

$ cairn orders assign ord_8K2 --assignee usr_op7
✓ 訂單 ord_8K2 已派發

$ cairn control room-auto-pair-preview dep_44
auto-pair 建議分組(2 組)
 [1] shared:王小明、李大華

為什麼是 cairn

不是把資料庫包一層 REST,而是把整套營運語意(金流、權限、稽核)原封不動端到 API。

Dual-transport,零漂移

每個操作有後台 server action 與 /api/v1 兩個 transport,委派同一個 @cairn/core operation、同權限、同模組閘、同稽核。後台做得到的,API 一定做得到。

Agent-native

OAuth device-flow 登入、穩定的 { ok, data } / { ok, error } envelope、自我描述的 cairn help。為 AI agent 與自動化而生,不是事後補的整合層。

權限即邊界

resource.action RBAC 經 better-auth 強制;owner-scope(sales 只能動自己的單)與 child↔parent 綁定在 server 端重推,絕不信任 client。

文件自 code 生成

這個站的每條命令與端點都從 command registry 與路由樹生成。code 一改,文件跟著動——你看到的永遠是真的。

快速上手

CLI 不存帳密。cairn login 走 OAuth 2.0 Device Authorization Grant:CLI 取得 device code → 你在瀏覽器 /device 核准 → CLI 換得 bearer token 存本機。 之後每個請求帶 Authorization: Bearer …。對 production 的寫入需 --confirm

cairn target add wildtw https://wildtw.example.com
cairn target use wildtw
cairn login            # 開瀏覽器核准 device code
cairn whoami

# 下單、派工、請款核可——都是一行
cairn orders create --trip trp_… --departure dep_… --email a@b.c \
  --party-size 2 --payment-method atm --travelers '[{"fullName":"王小明"}]'
cairn orders assign ord_… --assignee usr_…
cairn payment-requests approve pay_… --confirm

回應外殼

# 成功
{ "ok": true, "data": <payload> }

# 失敗
{ "ok": false,
  "error": { "code": "validation",
             "message": "…",
             "issues": [ … ] } }

方案模組閘

部分端點需租戶已啟用對應模組,否則 403 module_disabled

lodging訂房產品線
climbing登山(資格審核、出團前期限)
accounting進階會計(內外帳、結算、損益、供應商)
lottery抽籤名額分配
overseas海外

錯誤碼

HTTPcode意義
401unauthorized未帶 / 無效 bearer token
403forbidden通過認證但無此權限
403module_disabled租戶未啟用該方案模組
404not_found資源不存在或不在你的 owner-scope 內
409conflict狀態機 / 業務規則衝突
409invariant金流不變式違反
422validation輸入驗證失敗(附 issues[])
500internal伺服器內部錯誤(細節不外洩)

533 個操作,等你叫

⌘K 搜尋任何命令或端點,或從參考頁讀起。

Command Palette

Search for a command to run...