Skip to content

[feature] 整合框架 + Simpany 電子發票 + Wise 唯讀同步 + 員工多帳戶 - #71

Merged
YJack0000 merged 30 commits into
mainfrom
claude/finance-integrations
Sep 28, 2026
Merged

YJack0000 merged 30 commits into
mainfrom
claude/finance-integrations

Conversation

@YJack0000

Copy link
Copy Markdown
Contributor

做了什麼

四件事,共用一層欄位加密:

  1. 整合框架(設定 › 整合):每個組織的外部整合預設關閉,owner/admin 連接(server 端實測通過才存)後手動開啟。憑證以 AES-GCM 加密(FIELD_ENCRYPTION_KEY),永不回傳給 client / MCP。Google 日曆移到同一頁。MCP list_integrations。
  2. Simpany 電子發票(非官方 API,帳密加密保存、token 過期自動重登):同步發票進 invoices(含作廢、課稅別、零稅率原因)並自動綁收款/請款期;開立一定兩段式(preview 存 invoice_drafts → 只憑 draftId 開立,防重複);作廢。MCP simpany_* 7 支;發票頁「從 Simpany 同步」、請款看板「在 Simpany 開立」。
  3. Wise(唯讀):程式碼層只允許三個 GET 端點。Wise balance ↔ 帳本帳戶對應 + 切換日,對帳單逐筆同步進帳(以 referenceNumber 去重、預設未分類、標「待確認」),換匯記成單腳轉帳。MCP wise_* 3 支(sync 預設 dry run)。
  4. 員工多帳戶:employee_bank_accounts(加密帳號、薪資/報銷預設),發薪與報銷記錄匯入帳戶;身分證改加密;員工寫入改為限 owner/admin(原本任何成員都能改、都看得到完整帳號);完整帳號只有 owner/admin 能顯示且留稽核紀錄。

MCP server 1.4.0 → 1.6.0,共 85 支工具。

部署前必做(順序很重要)

  1. wrangler secret put FIELD_ENCRYPTION_KEY(值在 patchbay internal-field-encryption-key / p-drive _secret/internal-pathors-com/)
  2. 在 prod 依序套用 migrations/0023–0026(全部 additive,舊程式碼不受影響)— 一定要在 merge 前,新程式碼會讀新欄位
  3. merge → CD 部署
  4. 部署後:bun run scripts/migrate-employee-pii.ts(先 dry run)把舊 salary_account / national_id 搬成加密欄位

驗證

  • tsc --noEmit、bun run lint、bun run build 全過
  • 沒有對 Simpany 呼叫開立/作廢(會產生真的發票);Simpany 讀取端點與 Wise 端點形狀是在開發前用真實帳號唯讀驗證過的
  • 上線後在 prod 驗:連接 Simpany / Wise、Simpany 同步、Wise dry run

設計提案:https://claude.ai/artifact/ShXrQofYAJTJARTJyXo3YD

- migrations/0023:org_integrations(一列 = 一組織一整合,預設關閉,憑證密文)
- src/lib/integrations:types / catalog(simpany、wise)/ registry(空,待實作登記)/ store
- i18n:integrations namespace、操作紀錄的 integration 實體名稱
- 設定區加左側次級導覽(基本資料 / 整合 / MCP)
- /dashboard/settings/integrations:每個整合一列(狀態、開關、連接/重新連接/中斷)
- 連接用 Sheet:測試並連接、錯誤就地顯示、未存修改關閉前確認;中斷用 AlertDialog 確認
- server actions 限 owner/admin,回傳值不含任何憑證
- Google 日曆設定搬進整合頁(#google-calendar),清單上以一列顯示狀態
- 新增 shadcn Switch 元件
- tools-integrations.ts:list_integrations(不含任何憑證)
- requireIntegrationForTool / auditIntegrationCall 給之後的 provider 工具用
- SERVER_VERSION 1.3.0 → 1.4.0
@github-actions

github-actions Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

✅ SonarQube Quality Gate passed — pathorsAI_internal

0 open issues on this PR.

@YJack0000
YJack0000 merged commit abe8186 into main Sep 28, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants