Files
vmis/docs/architecture/01-系統架構設計.md
VMIS Developer 62baadb06f feat(vmis): 租戶自動開通完整流程 + Admin Portal SSO + NC 行事曆訂閱
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>
2026-03-15 15:31:37 +08:00

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                 - 聯絡我們

資料庫設計

核心表

  1. tenants - 租戶資料 (繼承 HR Portal)
  2. subscriptions - 訂閱記錄
  3. invoices - 帳單記錄
  4. service_usage - 服務使用記錄
  5. 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 作為共享快取
  • 資料庫讀寫分離

垂直擴展

  • 服務模組化設計
  • 微服務架構準備
  • 容器資源動態調整

安全性設計

  1. 認證授權:

    • Keycloak SSO
    • JWT Token
    • RBAC 權限控制
  2. 資料安全:

    • 資料加密傳輸 (TLS)
    • 敏感資料加密儲存
    • 定期備份
  3. 網路安全:

    • CORS 配置
    • Rate Limiting
    • DDoS 防護

監控與告警

  • 服務健康: 每分鐘檢查
  • 使用量追蹤: 即時記錄
  • 錯誤日誌: 集中管理
  • 性能指標: CPU/記憶體/網路

下一步:

  1. 詳細 API 規格設計
  2. 資料庫 Schema 設計
  3. 開發環境建置