Backend: - schedule_tenant: NC 新容器自動 pgsql 安裝 (_nc_db_check 全新容器處理) - schedule_tenant: NC 初始化加入 Redis + APCu memcache 設定 (修正 OIDC invalid_state) - schedule_tenant: 新租戶 KC realm 自動設定 accessCodeLifespan=600s (修正 authentication_expired) - schedule_account: NC Mail 帳號自動設定 (nc_mail_result/nc_mail_done_at) - schedule_account: NC 台灣國定假日行事曆自動訂閱 (CalDAV MKCALENDAR) - nextcloud_client: 新增 subscribe_calendar() CalDAV 訂閱方法 - settings: 新增系統設定 API (site_title/version/timezone/SSO/Keycloak) - models/result: 新增 nc_mail_result, nc_mail_done_at 欄位 - alembic: 遷移 002(system_settings) 003(keycloak_admin) 004(nc_mail_result) Frontend (Admin Portal): - 新增完整管理後台 (index/tenants/accounts/servers/schedules/logs/settings/system-status) - api.js: Keycloak JS Adapter SSO 整合 (PKCE/S256, fallback KC JS 來源, 自動 token 更新) - index.html: Promise.allSettled 取代 Promise.all,防止單一 API 失敗影響整頁 - 所有頁面加入 try/catch + toast 錯誤處理 - 新增品牌 LOGO 與 favicon Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
6.4 KiB
6.4 KiB
Virtual MIS - 系統架構設計
版本: v1.0 日期: 2026-02-27 狀態: 規劃中
系統架構圖
┌─────────────────────────────────────────────────────────────┐
│ 客戶企業 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 員工 A │ │ 員工 B │ │ 員工 C │ │ 管理者 │ │
│ └─────┬────┘ └─────┬────┘ └─────┬────┘ └─────┬────┘ │
└────────┼─────────────┼─────────────┼─────────────┼─────────┘
│ │ │ │
└─────────────┴─────────────┴─────────────┘
│
┌─────────▼─────────┐
│ Virtual MIS │
│ 統一入口 (SSO) │
└─────────┬─────────┘
│
┌─────────────────┼─────────────────┐
│ │ │
┌────▼────┐ ┌────▼────┐ ┌────▼────┐
│ HR │ │ Service │ │ Billing │
│ Portal │ │ Gateway │ │ System │
└────┬────┘ └────┬────┘ └─────────┘
│ │
│ ┌──────────┼──────────┐
│ │ │ │
┌────▼────▼─┐ ┌────▼────┐ ┌──▼──────┐
│ Mail │ │Calendar │ │ Drive │
│ Service │ │Service │ │ Service │
└───────────┘ └─────────┘ └─────────┘
│
┌────▼────┐
│ Office │
│ Service │
└─────────┘
核心模組
1. 租戶開通系統 (Tenant Onboarding)
功能:
- 自動建立租戶資料
- 網域配置與 DNS 設定
- Keycloak Realm 建立
- 服務初始化
- 管理員帳號建立
API 端點:
POST /api/v1/tenant-onboarding
GET /api/v1/tenant-onboarding/{tenant_id}
PUT /api/v1/tenant-onboarding/{tenant_id}
DELETE /api/v1/tenant-onboarding/{tenant_id}
2. 服務整合閘道 (Service Integration Gateway)
功能:
- Mail System API 整合
- Calendar System API 整合
- Drive System API 整合
- Office System API 整合
- 服務健康檢查
- 統一錯誤處理
API 端點:
POST /api/v1/services/mail/create-account
POST /api/v1/services/calendar/create-calendar
POST /api/v1/services/drive/create-storage
POST /api/v1/services/office/grant-access
GET /api/v1/services/health
3. 計費管理系統 (Billing System)
功能:
- 訂閱方案管理
- 使用量追蹤
- 帳單生成
- 金流整合 (綠界/藍新)
- 自動續約/停權
API 端點:
POST /api/v1/billing/subscribe
GET /api/v1/billing/invoices
POST /api/v1/billing/payment
GET /api/v1/billing/usage/{tenant_id}
4. 管理後台 (Admin Portal)
功能:
- 租戶管理
- 服務監控儀表板
- 使用量報表
- 客戶支援工單
- 系統配置
頁面:
/admin/dashboard - 總覽儀表板
/admin/tenants - 租戶管理
/admin/services - 服務狀態
/admin/billing - 計費管理
/admin/support - 客戶支援
5. Landing Page (行銷頁面)
功能:
- 服務介紹
- 定價方案
- 免費試用申請
- 客戶見證
- 聯絡表單
頁面:
/ - 首頁
/pricing - 定價方案
/features - 功能介紹
/trial - 免費試用
/contact - 聯絡我們
資料庫設計
核心表
- tenants - 租戶資料 (繼承 HR Portal)
- subscriptions - 訂閱記錄
- invoices - 帳單記錄
- service_usage - 服務使用記錄
- support_tickets - 客戶支援工單
技術選型
後端
- 語言: Python 3.11+
- 框架: FastAPI 0.115+
- ORM: SQLAlchemy 2.0+
- 驗證: Pydantic v2
- 任務隊列: Celery + Redis
前端
- 框架: Next.js 15 (App Router)
- UI 庫: Tailwind CSS + shadcn/ui
- 狀態管理: React Hooks + Context
- 表單: React Hook Form + Zod
基礎設施
- 容器化: Docker + Docker Compose
- 反向代理: Nginx
- SSL: Let's Encrypt (Certbot)
- 監控: Prometheus + Grafana
部署架構
Internet
│
▼
┌───────────────┐
│ Nginx Proxy │ (SSL Termination)
└───────┬───────┘
│
┌───┴───┬───────┬───────┬───────┐
│ │ │ │ │
Admin Landing API HR Services
Portal Page Gateway Portal (Mail/Cal/Drive)
擴展性設計
水平擴展
- API Gateway 支援多實例
- 使用 Redis 作為共享快取
- 資料庫讀寫分離
垂直擴展
- 服務模組化設計
- 微服務架構準備
- 容器資源動態調整
安全性設計
-
認證授權:
- Keycloak SSO
- JWT Token
- RBAC 權限控制
-
資料安全:
- 資料加密傳輸 (TLS)
- 敏感資料加密儲存
- 定期備份
-
網路安全:
- CORS 配置
- Rate Limiting
- DDoS 防護
監控與告警
- 服務健康: 每分鐘檢查
- 使用量追蹤: 即時記錄
- 錯誤日誌: 集中管理
- 性能指標: CPU/記憶體/網路
下一步:
- 詳細 API 規格設計
- 資料庫 Schema 設計
- 開發環境建置