Skip to content

Cấu hình

1. Biến môi trường

Khóa core từ EnvironmentKeys (@nx/core + @venizia/ignis); commerce thêm khóa Redis BullMQ trong src/common/environments.ts. Đọc qua applicationEnvironment.get<T>(key).

Runtime core

TênTypeMặc địnhBắt buộcMô tả
APP_ENV_PORTnumber3000Cổng HTTP lắng nghe (container)
APP_ENV_HOSTstring0.0.0.0Địa chỉ bind
APP_ENV_BASE_PATHstring/v1/api/commerceTiền tố route
APP_ENV_NODE_IDnumberSnowflake worker ID — phải là 2
APP_ENV_WORKERScsv|ALLBật SyncProductWorker (+ CDC consumer ở vai trò WORKER)
RUN_MODEmigrate|servermigrate chuyển sang điểm vào migration

Cơ sở dữ liệu

TênTypeMặc địnhBắt buộcMô tả
APP_ENV_DB_URLstringURL kết nối PostgreSQL

Cache / authorization Redis

TênTypeMặc địnhBắt buộcMô tả
APP_ENV_REDIS_*Cache Redis (useCacheRedis); cũng là authorization Redis (getAuthorizationRedisConnection) và cache footer-summary

BullMQ Redis (kết nối riêng)

TênTypeMặc địnhBắt buộcMô tả
APP_ENV_BULLMQ_REDIS_MODEsingle|clustersingleChế độ kết nối
APP_ENV_BULLMQ_REDIS_HOSTstringlocalhostHost single-mode
APP_ENV_BULLMQ_REDIS_PORTnumber6379
APP_ENV_BULLMQ_REDIS_PASSWORDstring
APP_ENV_BULLMQ_REDIS_DATABASEnumber0
APP_ENV_BULLMQ_REDIS_MAX_RETRYnumber5
APP_ENV_BULLMQ_REDIS_CLUSTER_NODESstringclusterBắt buộc khi mode=cluster
APP_ENV_BULLMQ_WORKER_CONCURRENCYnumber1Concurrency của SyncProductWorker

WebSocket Redis

TênTypeMặc địnhBắt buộcMô tả
APP_ENV_WEBSOCKET_REDIS_MODEsingle|clustersingle
APP_ENV_WEBSOCKET_REDIS_HOST/PORT/PASSWORD/DB/MAX_RETRYhost localhost, port 6379, db 0, retry 5Kết nối WebSocketEmitter single-mode
APP_ENV_WEBSOCKET_REDIS_CLUSTER_NODESstringclusterBắt buộc khi mode=cluster

Kafka (chỉ producer)

TênTypeMặc địnhBắt buộcMô tả
APP_ENV_KAFKA_BROKERScsvDanh sách broker phân tách bằng dấu phẩy (rỗng ⇒ không broker)
APP_ENV_KAFKA_CLIENT_IDstringSVC-00020-COMMERCE_PRODUCERClient id producer
APP_ENV_KAFKA_SASL_ENABLE'true'|'false'falseBật/tắt SASL
APP_ENV_KAFKA_SASL_MECHANISM/USERNAME/PASSWORDstringNAKhi SASL được bật

Cấu hình producer: requestTimeout 60_000ms, connectTimeout 30_000ms, serializer giá trị JSON. Producer được bind nhưng không được gọi trong src/.

Bảo mật / tích hợp

TênTypeMặc địnhBắt buộcMô tả
APP_ENV_APPLICATION_SECRETstring✓ (cho tích hợp provider)Khóa AES-256-GCM cho EncryptService
APP_ENV_JWKS_URLurlEndpoint JWKS của identity
APP_ENV_BASIC_AUTH_*stringThông tin đăng nhập basic service-to-service

Các component search/asset (@nx/search, @nx/asset) đọc env riêng của chúng (node Typesense, endpoint/key Minio, cấu hình embedding) — xem các package đó.

2. Feature Flags

Không có feature flag toàn cục. Hành vi runtime được kiểm soát bởi:

CổngCơ chế
Bật Worker / CDCAPP_ENV_WORKERS (SyncProductWorker; CDC consumer ở vai trò WORKER)
Cờ strictCategoryDeletion / cascade theo merchantDeletionPolicyService (chính sách theo merchant)
Đồng bộ sản phẩm tới merchant phụsự hiện diện của merchantIds[] / syncMerchantIds trong request aggregate

3. Dữ liệu Seed

Các process migration trong src/migrations/processes/. Chạy khi bootstrap (prestartbun run rebuildmigrate.ts); theo từng dev qua bun run migrate:dev.

ProcessSeed / backfill
commerce-0002-seed-permissionsDanh mục quyền RBAC
commerce-0003-seed-typesense-embedding-configsCấu hình embedding tìm kiếm ngữ nghĩa
commerce-0005-seed-default-finance-accountsConfig tài khoản tài chính mặc định hệ thống
commerce-0006-seed-merchant-fnb-sectorsPhân loại ngành FnB
commerce-0007-seed-category-templatesMẫu category SYSTEM
commerce-0008-seed-search-pipeline-configConfig search pipeline
commerce-0009-seed-role-permissionsCấp quyền Role→permission
commerce-0010-seed-guest-permissionsQuyền cho vai trò guest
commerce-0011-backfill-merchant-onboardingBackfill cờ metadata.onboarding

4. Lưu trữ Cấu hình (bảng Configuration)

LoạiMã hóaKhóa phạm vi
Thông tin đăng nhập tích hợp providerAES-256-GCM (EncryptService)(group, code, principalId, principalType, environment)
Config hệ thống (tài khoản tài chính, mẫu category, search pipeline)group=SYSTEM, principalId/Type=null

Định dạng mã credential: {type}:{provider}:{credentialAction}:{credentialType}. Response trả về giá trị hiển thị được che; getDecryptedCredential chỉ nội bộ (không bao giờ phơi bày qua controller).

5. Trang liên quan

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.