Configuration
1. Biến môi trường
Nguồn: khoá môi trường
@nx/core+common/của package này. Signal dùng khoáVerifierApplicationchuẩn cộng khoá riêng WebSocket-, Redis-, và Kafka- bên dưới.
Application & Identity
| Tên | Kiểu | Mặc định | Bắt buộc | Mô tả |
|---|---|---|---|---|
APP_ENV_APPLICATION_NAME | string | — | ✓ | Định danh service |
APP_ENV_SERVER_PORT | number | 3000 | Cổng HTTP lắng nghe (dev 31090) | |
APP_ENV_SERVER_BASE_PATH | string | /v1/api | Tiền tố route (base hiệu lực /v1/api/signal) | |
APP_ENV_IDENTITY_SERVICE_BASE_URL | string | — | ✓ | Base URL identity để xác minh JWKS |
APP_ENV_JWKS_REST_PATH | string | /jw-certs | Path endpoint JWKS | |
APP_ENV_SNOWFLAKE_WORKER_ID | number | 9 | Snowflake worker ID |
Database (core datasource)
| Tên | Kiểu | Mặc định | Bắt buộc | Mô tả |
|---|---|---|---|---|
APP_ENV_POSTGRES_* | — | — | ✓ | Khoá Postgres core chuẩn (lưu notification + authz) |
WebSocket — ECDH
| Tên | Kiểu | Mặc định | Bắt buộc | Mô tả |
|---|---|---|---|---|
APP_ENV_WEBSOCKET_ECDH_INFO | string | — | ✓ | Chuỗi info HKDF; phải khớp giá trị phía client |
WebSocket — Redis (bus pub/sub)
| Tên | Kiểu | Mặc định | Bắt buộc | Mô tả |
|---|---|---|---|---|
APP_ENV_WEBSOCKET_REDIS_MODE | single | cluster | single | Chế độ kết nối | |
APP_ENV_WEBSOCKET_REDIS_HOST | string | localhost | Host (chế độ single) | |
APP_ENV_WEBSOCKET_REDIS_PORT | number | 6379 | Port (chế độ single) | |
APP_ENV_WEBSOCKET_REDIS_DB | number | 0 | DB index (chế độ single) | |
APP_ENV_WEBSOCKET_REDIS_PASSWORD | string | — | Password | |
APP_ENV_WEBSOCKET_REDIS_MAX_RETRY | number | 5 | Max retry (chế độ single) | |
APP_ENV_WEBSOCKET_REDIS_CLUSTER_NODES | string | — | cluster | Cặp host:port ngăn cách bằng dấu phẩy (bắt buộc ở chế độ cluster) |
Đây là Redis duy nhất Signal dùng — không có Redis cache/queue riêng. Mọi publisher (Signal + emitter service) phải trỏ tới cùng instance/cluster.
Kafka — consumer activity-notification
| Tên | Kiểu | Mặc định | Bắt buộc | Mô tả |
|---|---|---|---|---|
APP_ENV_KAFKA_BROKERS | string | — | ✓ | Brokers ngăn cách bằng dấu phẩy; rỗng/chưa đặt → fail-fast lúc boot |
APP_ENV_KAFKA_CLIENT_ID | string | SVC-00090-SIGNAL_NOTIF_CONSUMER | Client id consumer | |
APP_ENV_KAFKA_GROUP_ID | string | SVC-00090-SIGNAL_NOTIF_CONSUMER_GROUP | Group id consumer | |
APP_ENV_KAFKA_SASL_ENABLE | boolean | false | Bật SASL | |
APP_ENV_KAFKA_SASL_MECHANISM | string | — | nếu SASL | vd SCRAM-SHA-512 |
APP_ENV_KAFKA_SASL_USERNAME | string | — | nếu SASL | — |
APP_ENV_KAFKA_SASL_PASSWORD | string | — | nếu SASL | — |
2. Feature Flags
Không. Hành vi hoàn toàn do env vars ở trên chi phối (công tắc chế độ: Redis single/cluster, Kafka SASL on/off).
3. Dữ liệu seed
Các process migration ở
src/migrations/processes/—alwaysRun: true, idempotent.
| File | Seed | Idempotent | Ghi chú |
|---|---|---|---|
signal-0001-seed-permissions.ts | Permission WebSocketClient.* (6) | ✓ | Upsert mỗi entry SignalPermissions theo code |
signal-0002-seed-role-permissions.ts | Grant role→permission | ✓ | Grant mọi permission signal cho OWNER, EMPLOYEE, CASHIER qua PolicyDefinition; bỏ qua cái đã grant |
Signal không có schema migration — nó không sở hữu bảng nào. Các migration này chỉ seed dữ liệu authorization vào bảng
@nx/core.
4. Lưu trữ Configuration (bảng Configuration)
Không dùng. Signal không giữ config runtime theo từng merchant.