Configuration
1. Biến môi trường
Nguồn:
packages/core/src/common/environments.ts+ các khoá chứng chỉ của package này. Licensing service đọc tập env application/DB/Redis/auth chuẩn của core; chỉ khoá chứng chỉ là riêng của package.
Application
| Tên | Kiểu | Mặc định | Bắt buộc | Mô tả |
|---|---|---|---|---|
APP_ENV_APPLICATION_NAME | string | licensing | Tên service | |
APP_ENV_APPLICATION_CODE | string | SVC-00140-LICENSING | Service code (gán lại từ SVC-00110; xem ADR-0002) | |
APP_ENV_APPLICATION_SECRET | string | — | ✓ (cho cert) | Secret AES-256-GCM để mã hoá payload chứng chỉ |
APP_ENV_SERVER_HOST | string | localhost | Host bind | |
APP_ENV_SERVER_PORT | number | 31120 | Cổng HTTP lắng nghe | |
APP_ENV_SERVER_BASE_PATH | string | /v1/api/licensing | Tiền tố route | |
APP_ENV_SNOWFLAKE_WORKER_ID | number | 11 | ✓ | Snowflake worker ID |
Database
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
APP_ENV_POSTGRES_HOST / _PORT / _DATABASE / _USERNAME / _PASSWORD | string | ✓ | Kết nối PostgreSQL (PostgresCoreDataSource) |
Redis (component cache)
| Tên | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
APP_ENV_CACHE_REDIS_MODE | single | cluster | — | Chế độ kết nối |
APP_ENV_CACHE_REDIS_IDENTIFIER | string | cache | Định danh logic |
APP_ENV_CACHE_REDIS_HOST / _PORT | string / number | — | Endpoint chế độ single |
APP_ENV_CACHE_REDIS_CLUSTER_NODES | string | — | host:port ngăn cách bằng dấu phẩy (chế độ cluster) |
APP_ENV_CACHE_REDIS_PASSWORD | string | — | Password Redis |
Không env Kafka hay BullMQ nào được tiêu thụ — các component đó không được đăng ký.
Auth
| Tên | Kiểu | Mô tả |
|---|---|---|
APP_ENV_IDENTITY_SERVICE_BASE_URL | string | Base URL identity để xác minh JWKS |
APP_ENV_JWKS_REST_PATH | string | Path endpoint JWKS |
APP_ENV_BASIC_AUTH_USERNAME / _PASSWORD | string | Credential HTTP Basic (chiến lược auth thay thế) |
Riêng service — Chứng chỉ
| Tên | Kiểu | Mặc định | Bắt buộc | Mô tả |
|---|---|---|---|---|
APP_ENV_LICENSING_ED25519_PRIVATE_KEY | string (PEM) | — | ✓ (để ký) | Private key Ed25519 để ký chứng chỉ |
APP_ENV_LICENSING_ED25519_PUBLIC_KEY | string (PEM) | — | ✓ (consumer xác minh) | Public key Ed25519 — gửi tới service verifier qua @nx/core |
APP_ENV_LICENSING_CERT_TTL_SECONDS | number | 86400 | Cert TTL → cả Redis EX và payload certExpiresAt | |
APP_ENV_LICENSING_SERVICE_BASE_URL | string | — | Định nghĩa trong env registry của core; không dùng lúc runtime (consumer đọc cert cache, không gọi service) |
Suy giảm mềm: nếu thiếu
APP_ENV_LICENSING_ED25519_PRIVATE_KEYhoặcAPP_ENV_APPLICATION_SECRET,publishCertificate()log một cảnh báo và bỏ qua sinh cert. License vẫn phát hành, nhưngLicense.certificateởnullvà consumer nhậnnulltừLicenseMiddleware.
2. Feature Flags
| Flag | Mặc định | Owner | Mô tả |
|---|---|---|---|
| Không | — | — | Không có runtime feature flag. Entitlement PolicyFeature là dữ liệu domain, không phải flag deploy. |
3. Dữ liệu seed
Các process migration ở
src/migrations/processes/— tất cảalwaysRun: true(upsert idempotent) lúc bootstrap (RUN_MODE=migrate).
| File | Seed | Idempotent | Ghi chú |
|---|---|---|---|
licensing-0001-seed-permissions.ts | Tất cả LicensingPermissions (CRUD trên 4 subject + hành động vòng đời license) | ✓ | Upsert mỗi permission theo code |
licensing-0002-seed-free-trial-plan.ts | 1 Policy (FREE_TRIAL: TRIAL, 30 ngày, ACTIVATED, product Trial) | ✓ | Upsert theo (product, type, status) |
licensing-0003-seed-role-permissions.ts | Grant TẤT CẢ permission licensing cho OWNER, EMPLOYEE, CASHIER | ✓ | Baseline rộng — siết sau qua API policy-definition |
licensing-0004-seed-guest-permissions.ts | Grant License.issueFreeTrial cho GUEST (domain wildcard *) | ✓ | Trial tự phục vụ trước onboarding merchant |
4. Lưu trữ Configuration (bảng Configuration)
| Loại configuration | Mã hoá | Đọc bởi |
|---|---|---|
| Không | — | Licensing không dùng bảng Configuration theo từng merchant. Secret chứng chỉ đến từ env, không phải config runtime mã hoá. |