Đặc tả Kỹ thuật: Shell
Tài liệu này chi tiết về kiến trúc kỹ thuật, công nghệ và các mẫu tích hợp của Shell, bộ điều phối trung tâm của nền tảng VENI-AI.
1. Kiến trúc Cấp cao
Shell hoạt động như một Container (Host) trong kiến trúc Micro-frontend (MFE) và là Nhà cung cấp Danh tính (IdP) trong hệ sinh thái Hệ thống Tự vận hành (SCS).
Sơ đồ Thành phần
2. Stack Công nghệ
Backend (API)
- Runtime: Bun (v1.0+)
- Framework: Ignis Framework + Hono
- ORM: Drizzle ORM
- Cơ sở dữ liệu: PostgreSQL 15+
- Bảo mật: Casbin (RBAC) + Keycloak (OIDC)
- Giao tiếp S2S: Connect Protocol (tương thích gRPC)
Frontend (UI)
- Thư viện: React 18+ với TypeScript
- Công cụ Build: Vite với Module Federation
- Bộ UI: ARDOR (Tailwind CSS v4 + Radix UI)
- Icons: Lucide React
3. Logic Triển khai Cốt lõi
3.1 Điểm vào Module Thống nhất (ShellEntry)
Mỗi ứng dụng từ xa PHẢI xuất một ./ShellEntry thông qua Module Federation. Điểm vào này cho phép Shell gắn kết (mount) và gỡ bỏ (unmount) các ứng dụng một cách linh hoạt mà không cần tải lại trang.
// Mẫu ShellEntry cho Remote App
export const mount = (container: HTMLElement) => {
const root = createRoot(container);
root.render(<App />);
return () => root.unmount();
};3.2 Xác thực Token Hỗn hợp
Shell cấp phát một platform JWT chuẩn RS256. Các dịch vụ từ xa có thể:
- Xác thực tại chỗ: Sử dụng điểm cuối JWKS của Shell (
/.well-known/jwks.json). - Trao đổi: Gọi
/auth/exchangeđể lấy token cụ thể cho dịch vụ với thời hạn ngắn và audience được giới hạn.
3.3 Tích hợp Casbin RBAC
Ủy quyền được quản lý thông qua các chính sách Casbin lưu trữ trong cơ sở dữ liệu Shell.
- Chính sách: Được định nghĩa theo mẫu
p, sub, obj, act(ví dụ:p, role:admin, drive:files, write). - Thực thi: Các decorator như
@authorize()ở backend đảm bảo truy cập zero-trust.
4. Các Mẫu Tích hợp
4.1 Cô lập Đa thuê bao
Shell thực thi cô lập thuê bao ở cấp độ cơ sở dữ liệu bằng cách sử dụng cột org_id bắt buộc trên tất cả các bảng liên quan đến thuê bao. Shell API tự động đưa bộ lọc này vào các truy vấn dựa trên phiên làm việc của người dùng đã xác thực.
4.2 Khám phá Dịch vụ
Shell duy trì một danh mục các module satellite đang hoạt động. Khi tải, Shell UI sẽ truy xuất danh mục này để hiển thị thanh điều hướng và launchpad ứng dụng.
5. Bảo mật & Quản trị
- Mã hóa: Tất cả giao tiếp chéo dịch vụ (S2S) được mã hóa qua TLS.
- Nhật ký Kiểm toán: Mọi thay đổi cấp nền tảng (mời người dùng, thay đổi vai trò, cập nhật tổ chức) đều được ghi lại trong nhật ký kiểm toán bất biến.
- Bảo vệ Thông tin xác thực: Shell không bao giờ lưu trữ mật khẩu văn bản thuần; nó ủy thác việc lưu trữ danh tính nhạy cảm cho Keycloak hoặc sử dụng băm Argon2 cho các tài khoản cục bộ.
Liên kết liên quan