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>
226 lines
6.4 KiB
Markdown
226 lines
6.4 KiB
Markdown
# 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. 開發環境建置
|