Cấu hình
1. Biến môi trường
Nguồn:
EnvironmentKeystrong@nx/core/src/common/environments.ts. Service đọc quaapplicationEnvironment.get<T>(key).
Core runtime
| Tên | Kiểu | Mặc định | Bắt buộc | Mô tả |
|---|---|---|---|---|
APP_ENV_PORT | number | 3000 | Cổng lắng nghe HTTP (container) | |
APP_ENV_HOST | string | 0.0.0.0 | Địa chỉ bind | |
APP_ENV_BASE_PATH | string | /v1/api/sale | Tiền tố route | |
APP_ENV_NODE_ID | number | — | ✓ | Snowflake worker ID — phải là 3 cho sale |
APP_ENV_LOG_LEVEL | info|debug|warn|error | info | Cấp độ logger | |
APP_ENV_NODE_ENV | string | development | Nạp qua dotenv-flow | |
RUN_MODE | migrate|server | migrate chuyển sang entry migration |
Database
| Tên | Kiểu | Mặc định | Bắt buộc | Mô tả |
|---|---|---|---|---|
APP_ENV_DB_URL | string | — | ✓ | URL kết nối PostgreSQL |
APP_ENV_DB_POOL_MAX | number | 10 | Kích thước pool tối đa |
Redis (chỉ cache auth)
| Tên | Kiểu | Mặc định | Bắt buộc | Mô tả |
|---|---|---|---|---|
APP_ENV_REDIS_HOST | string | — | Tùy chọn — auth cache tắt khi không đặt | |
APP_ENV_REDIS_PORT | number | 6379 | — | |
APP_ENV_REDIS_PASSWORD | string | — | — | |
APP_ENV_REDIS_DB | number | 0 | — |
Kafka (chỉ producer)
| Tên | Kiểu | Mặc định | Bắt buộc | Mô tả |
|---|---|---|---|---|
APP_ENV_KAFKA_BROKERS | csv | — | ✓ | Danh sách broker, phân tách bằng dấu phẩy |
APP_ENV_KAFKA_CLIENT_ID | string | SVC-00030-SALE_PRODUCER | Client id của producer | |
APP_ENV_KAFKA_SASL_ENABLE | 'true'|'false' | false | Bật/tắt xác thực SASL | |
APP_ENV_KAFKA_SASL_MECHANISM | enum | NA | Khi SASL bật | |
APP_ENV_KAFKA_SASL_USERNAME | string | NA | Khi SASL bật | |
APP_ENV_KAFKA_SASL_PASSWORD | string | NA | Khi SASL bật |
Sale chỉ đăng ký Producer — không có Kafka consumer trong package này.
Authentication
| Tên | Kiểu | Mặc định | Bắt buộc | Mô tả |
|---|---|---|---|---|
APP_ENV_JWKS_URL | url | — | ✓ | Endpoint JWKS của identity service |
APP_ENV_BASIC_AUTH_* | string | — | Credential basic cho service-to-service |
Mạng sister-service
| Tên | Kiểu | Mặc định | Bắt buộc | Mô tả |
|---|---|---|---|---|
APP_ENV_PRICING_BASE_URL | url | — | ✓ | Base HTTP @nx/pricing cho PricingNetworkService |
APP_ENV_COMMERCE_BASE_URL | url | — | ✓ | Base HTTP @nx/commerce (đọc liên package) |
2. Feature Flags
Hiện không có feature flag toàn cục. Toggle policy hủy đơn / pricing v2 nằm trong các bản ghi
Configurationper-merchant (xem §4).
3. Dữ liệu Seed
Process migration trong
src/migrations/processes/. Chạy khi bootstrap (prestart→bun run rebuild→migrate.ts).
| File | Phạm vi | Idempotency Key | Ghi chú |
|---|---|---|---|
sale-0001-seed-permissions.ts | Permission (catalogue RBAC) | code | Tổng hợp tất cả nhóm permission của sale (controllers/permissions.ts) |
sale-0002-create-pos-session-report.ts | Bootstrap schema DB cho PosSessionReport | n/a (DDL) | Tạo bảng report nếu chưa có — tách khỏi runner migration chính |
4. Lưu trữ Configuration (bảng Configuration)
| Loại configuration | Mã hóa | Đọc bởi |
|---|---|---|
| Credential payment provider per-merchant (chỉ đọc ở đây) | AES-256-GCM (mã hóa bởi @nx/payment) | PaymentWebhookService (hiếm — phần lớn đọc tại MQ-Pay; sale chủ yếu dùng webhook payload) |
| Tỷ lệ quy đổi điểm loyalty per-merchant | — | CustomerPointService.awardPointsForOrder |
Sale đọc từ
Configuration; ghi do service phát hành sở hữu (vd: payment).
5. Thứ tự Boot
6. Trang liên quan
- Vận hành — triển khai + observability
- API Sự kiện — constant cho topic Kafka
- Quyết định