前端與 API
兩套 Next.js + TypeScript 介面;Node.js + TypeScript 用戶 API、管理 API 和共用領域模組。
NEXUS-LEARN / 技術架構總覽
從系統邊界、六層技術組成、具體功能到跨系統資料流,逐層查看目標架構。
已確認 系統邊界與業務規則 技術建議 接口與部署設計 待確認 外部契約及運行指標
四個業務系統、一套用戶端、一套統一後台管理系統。M1 招聘入職與 M1B 試用期合併為人員管理系統;M5 是統一後台內的審計中心。兩端透過共用 Node.js 領域邏輯操作同一組業務資料庫。
箭頭表示主要調用方向。五個邏輯資料庫可先部署在同一 PostgreSQL 實例,仍保留獨立帳號及寫入權限。
| 來源 | 目的系統 | 接口/同步內容 | 資料權威方 |
|---|---|---|---|
| 人員 | LMS/合規 | 入職、員工 ID、在職狀態;Outbox | personnel_db |
| LMS | 人員/合規 | 完課結果及 LearningHoursAwarded;事件與只讀 API | 學習:lms_db;台帳:compliance_db |
| 合規 | 審計/看板 | LicenceLedgerUpdated:入帳分錄與規則版本 | compliance_db |
| LMS | 商城 | 課程版本、排期及容量;事件+即時校驗 | lms_db |
| 商城 | LMS | 付款、席位啟用、退款;Outbox 事件 | 交易:commerce_db;報名:lms_db |
| 四個業務系統 | 審計中心 | 操作事件及證據引用;Outbox | 源事實留原庫;鏈存 admin_audit_db |
| 統一管理端 | 各業務庫 | 管理寫入走領域模組;跨庫報表走授權只讀查詢 | 各業務系統 |
兩套 Next.js + TypeScript 介面;Node.js + TypeScript 用戶 API、管理 API 和共用領域模組。
PostgreSQL 五個邏輯庫、Outbox、Node.js Worker、物件儲存和不可改寫證據快照。
OIDC、MFA、RBAC/ABAC、KMS、OpenTelemetry、備份與恢復演練。
flowchart LR
subgraph 公網[公網及受限入口]
USER[候選人/員工/買家/檢查人員]
WAF[WAF/限流/回調驗簽]
UWEB[Next.js 用戶端]
AWEB[Next.js 統一管理端]
end
subgraph 私網[私網應用區]
API[Node.js 用戶/管理 API 與領域模組]
QUERY[授權跨庫只讀查詢]
WORK[Node.js Worker 與 Outbox]
AUDIT[M5 審計處理]
end
subgraph 資料[受限資料區]
PDB[(personnel_db)]
CDB[(compliance_db)]
LDB[(lms_db)]
SDB[(commerce_db)]
ADB[(admin_audit_db)]
OBJ[(物件儲存/WORM)]
end
subgraph 外部[外部與共用服務]
IAM[OIDC/MFA/KMS]
PARTNER[ReportNOW/支付/電子簽署/監管渠道]
end
USER --> WAF --> UWEB & AWEB
UWEB & AWEB --> API
API --> PDB & CDB & LDB & SDB & ADB
AWEB --> QUERY
QUERY -. 授權只讀 .-> PDB & CDB & LDB & SDB
API --> WORK & AUDIT
WORK --> PDB & CDB & LDB & SDB
WORK --> AUDIT
AUDIT --> ADB & OBJ
API --> IAM & PARTNER
WORK --> PARTNER & OBJ此圖不預設雲廠商或可用區。同步業務操作由 API 直接訪問相應領域模組及資料庫;Worker 處理投遞、計算與長任務。
| 身份/角色 | 關聯與操作 | 資料控制 |
|---|---|---|
| 候選人 → 員工/學員 | candidate_id 入職後關聯穩定 person_id;學員帳號引用同一人 | 本人僅查本人資料;主管僅查授權下屬。 |
| 買家/實際學員/企業管理員 | buyer_user_id 可不同於 learner_user_id;企業以 enterprise_org_id 管理席位 | 企業管理員只分配本企業席位,不能查看證件、考試答案或內部牌照。 |
| 業務管理員 | HR、合規、LMS、商城經各自領域 API 寫入其業務庫 | 跨庫連線只讀;按角色、組織、案件及字段授權與脫敏。 |
| 審計員/監管檢查人員 | 審計查獲授權事件;檢查者只查分配案件 | 只讀視圖及短期下載授權;查詢、導出及敏感存取留痕。 |
OIDC 僅負責認證;業務資料以內部 person_id、組織及角色有效期控制。ReportNOW 雙向狀態衝突不能按最後寫入覆蓋,須核對來源。
| 指標/邊界 | 待確定的輸入與驗收口徑 | 確認責任 |
|---|---|---|
| 心跳與學習負載 | 同時在線學員峰值、每 10 秒心跳峰值、原始事件保存及聚合延遲 | 業務負責人、技術負責人 |
| 事件與外部同步 | Outbox 最大積壓、可接受延遲、重試與死信處理時間、渠道可用性 | 技術負責人、外部接口負責人 |
| 可用性與災備 | 目標可用性、RTO/RPO、備份頻率、恢復演練及跨區域限制 | 業務負責人、運維、合規 |
| 資料治理 | 香港資料駐留、HKID/教材/學習紀錄/審計快照保留及刪除條件 | 合規、資料保護負責人 |
| 外部接口範圍 | ReportNOW、支付、電子簽署、MPFA 渠道調用及回執格式 | 產品負責人、對應機構接口負責人 |
未確認的數值不構成性能、災備或外部接口承諾。