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 | Port HTTP listen (container) | |
APP_ENV_HOST | string | 0.0.0.0 | Bind address | |
APP_ENV_BASE_PATH | string | /v1/api/inventory | Tiền tố route | |
APP_ENV_NODE_ID | number | — | ✓ | Snowflake worker ID (phải là 5 cho inventory) |
APP_ENV_LOG_LEVEL | info|debug|warn|error | info | Mức logger | |
APP_ENV_NODE_ENV | string | development | Load 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ỉ auth cache)
| Tên | Kiểu | Mặc định | Bắt buộc | Mô tả |
|---|---|---|---|---|
APP_ENV_REDIS_HOST | string | — | Tùy chọn — nếu không set, auth cache bị tắt | |
APP_ENV_REDIS_PORT | number | 6379 | — | |
APP_ENV_REDIS_PASSWORD | string | — | — | |
APP_ENV_REDIS_DB | number | 0 | — |
Kafka
| 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 — service từ chối khởi động nếu rỗng |
APP_ENV_KAFKA_CLIENT_ID | string | SVC-00050-INVENTORY_PRODUCER / _CONSUMER | Override producer/consumer | |
APP_ENV_KAFKA_GROUP_ID | string | SVC-00050-INVENTORY_CONSUMER_GROUP | Consumer group | |
APP_ENV_KAFKA_SASL_ENABLE | 'true'|'false' | false | Bật/tắt SASL auth | |
APP_ENV_KAFKA_SASL_MECHANISM | enum | NA | Khi bật SASL | |
APP_ENV_KAFKA_SASL_USERNAME | string | NA | Khi bật SASL | |
APP_ENV_KAFKA_SASL_PASSWORD | string | NA | Khi bật SASL |
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 (/jw-certs) |
APP_ENV_BASIC_AUTH_* | string | — | Credentials basic cho service-to-service (nếu bật) |
2. Feature Flags
| Cờ | Lưu ở | Mặc định | Mô tả |
|---|---|---|---|
metadata.inventory.allowOversell | row Material | false | Khi true, adjustStock bỏ qua guard forceNonNegative cho material đó |
metadata.inventory.isInventoryTracked | row Material | true | Khi false, material không được seed vào InventoryItem lúc tạo |
Hôm nay chưa có service feature-flag toàn cục. Chỉ có cờ metadata theo từng row.
3. Dữ liệu Seed
Migration process trong
src/migrations/processes/. Tất cả idempotent. Chạy lúc bootstrap (prestart→bun run rebuild→migrate.ts).
| File | Phạm vi | Idempotency Key | Số row xấp xỉ | Ghi chú |
|---|---|---|---|---|
inventory-0002-seed-permissions.ts | Permission (catalog RBAC) | code | ~131 | Tổng hợp InventoryPermissions từ 15 nhóm controller (controllers/permissions.ts) |
inventory-0003-seed-unit-of-measures.ts | UnitOfMeasure (toàn hệ thống, merchantId=NULL) | code | ~40 | Categories: COUNT (unit, pair, pack, dozen…), WEIGHT (kg, g, lb…), VOLUME (L, ml, gal…), TIME (sec, min, hr, day…); base unit mỗi category có ratio=1 |
inventory-0004-seed-discrimination-types.ts | DiscriminationType (reference data) | (scope, type) | ~100 | Scopes: tracking_reason, tracking_reference_type, tracking_type, location_type, identifier_scheme, ticket_partner_type, material_type, material_identifier_scheme, uom_category, costing_method |
inventory-0005-backfill-vendor-item.ts | Materialize VendorItem từ lịch sử PO | (merchantId, vendorId, itemType, itemId) | one-shot | Snapshot dòng PO non-cancelled mới nhất theo từng nhóm |
inventory-0006-backfill-merchant-id.ts | Backfill denorm InventoryStock.merchantId | mỗi row thiếu merchantId | one-shot | Lấy từ InventoryItem.merchantId |
Mỗi file seed extends
MigrationProcesstừ@nx/corevà tôn trọng cờalwaysRun. Backfill (0005,0006) là one-shot — chạy lại là no-op.
4. Lưu trữ Cấu hình (bảng Configuration)
N/A. Inventory không dùng bảng Configuration per-merchant cho cấu hình runtime (không có credential mã hóa, không có feature toggle per-merchant trong package này).
5. Boot Order
6. Trang liên quan
- Vận hành — deployment + observability
- API Sự kiện — hằng số Kafka topic
- Quyết định