Chuyển tới nội dung chính

SDK runtime cho code module tự viết

Phần này là những gì có thể dùng ngay khi viết mã bên trong module (khác với việc đóng gói và nộp ở các trang trước).

Đã có — SDK phía máy chủ (TypeScript)​

Gói @platform/sdk-web (sdk/typescript/README.md), chạy trên Node 22+. Tóm tắt những gì đã dùng được:

  • sdk.middleware() — kiểm X-Tenant-Context do Gateway ký, nạp ngữ cảnh yêu cầu.
  • sdk.auth.require(code) / sdk.auth.can(code) / sdk.auth.requireRole(role) / sdk.auth.requireSensitive(code) — kiểm quyền lớp 3, so khớp nguyên văn với permissions đã khai ở module.yaml.
  • sdk.db.tenant() — query(text, params) và transaction(fn) vào database của module cho tenant trong ngữ cảnh.
  • sdk.directory — đọc hồ sơ người dùng và phòng ban của tenant (users, usersInDepartment, departments).
  • sdk.files.sign(...) — URL ký tới object storage.
  • sdk.runJob(...) / sdk.db.tenantForJob(...) — ngữ cảnh cho tiến trình nền (worker), kiểm tenant/module còn ACTIVE.
  • createEventsApi(sdk) — phát sự kiện {code}.{entity}.{action}.
  • createAiModelsApi(sdk) — danh mục model AI đang bật cho tenant.

Đã có — SDK phía máy chủ (Java)​

Gói platform-sdk-core (sdk/java/README.md), cùng hành vi với bản TypeScript. Dùng PlatformSdk.builder(code).fromEnv(...).build(), sdk.require(...), sdk.db() (JDBC/Hikari theo tenant), sdk.context(), sdk.runJob(...). Module tham chiếu đầu tiên: modules/van-ban.

Đã có — nạp giao diện module vào cổng tenant​

Cổng tenant nạp ./App của remote Module Federation theo frontend.remote và sinh menu từ menus, truyền basePath, path, locale, getAccessToken() vào component. Xem trang Giao diện module.

⚠️ Chưa có — phải tự làm thay​

  • SDK frontend client (usePermission, provider ngữ cảnh, điều hướng trong module) — đầu việc G2-D3-4, chưa triển khai. Hiện module chỉ có bốn props ở trên; quyền phía client tự đọc từ GET /api/v1/users/me/context.
  • platform-cli (init, validate, pack, publish) — đầu việc G3-D3-2, chưa triển khai. Hiện tại không có công cụ dòng lệnh hỗ trợ đóng gói hay ký — tự viết script như ở trang Ký gói và File mẫu, hoặc dùng scripts/sinh-goi-module-demo.mjs làm khung tham khảo.
  • sdk.events.emit/on đầy đủ hai chiều, webhook X-Platform-Signature — chỉ có phần phát, chưa có phần nhận.
  • SDK Python — chưa triển khai (để giai đoạn sau).

Đọc hai README gốc ở trên để biết chi tiết biến môi trường, giới hạn hiện tại, và phần "Còn thiếu so với đặc tả" — đừng giả định một API tồn tại nếu nó không nằm trong README đó.