Cấu hình
Định danh được lấy từ
src/resources/app-info.json(quagetAppInfo()), không phải từ.env.development. App config được build bởicreateAppConfig()từ@nx/core. Đặt tên env theo quy ước coreAPP_ENV_*.
1. Biến môi trường
Định danh (có thẩm quyền vs env)
| Thuộc tính | app-info.json (có thẩm quyền) | .env.development (cũ) |
|---|---|---|
| Application code | SVC-00120-HELPDESK | SVC-00120-HELPDESK ✓ đã khớp (trước là SVC-00030-HELPDESK) |
| Port | 31130 | 31032 ⚠ |
| Snowflake node id | 12 | 0 ⚠ |
| Base path | /v1/api/helpdesk | /v1/api/helpdesk ✓ |
⚠ Drift định danh. Coi
app-info.jsonlà nguồn sự thật..env.developmentnên được đối chiếu vềSVC-00120/31130/12khi build được sửa. Không dựa vào giá trị định danh.env.
Runtime core
| Tên | Type | Mặc định | Bắt buộc | Mô tả |
|---|---|---|---|---|
RUN_MODE | startup|worker|migrate | startup | — | Vai trò process |
NODE_ENV | string | — | — | Bộ chọn môi trường |
APP_ENV_APPLICATION_CODE | string | từ app-info | — | Nên là SVC-00120-HELPDESK |
APP_ENV_SERVER_PORT | number | 31130 | — | Cổng HTTP lắng nghe |
APP_ENV_SERVER_BASE_PATH | string | /v1/api/helpdesk | — | Tiền tố route |
APP_ENV_SNOWFLAKE_WORKER_ID | number | 12 | ✓ | Snowflake node id |
APP_ENV_SNOWFLAKE_EPOCH_CHECKPOINT | number | 1735689600000 | — | Epoch Snowflake |
Cơ sở dữ liệu
| Tên | Type | Bắt buộc | Mô tả |
|---|---|---|---|
APP_ENV_POSTGRES_* | string/number | ✓ | Kết nối Postgres (host/port/db/credentials) qua PostgresCoreDataSource |
Redis (cache + BullMQ + WebSocket pubsub)
| Tên | Type | Mô tả |
|---|---|---|
APP_ENV_CACHE_REDIS_MODE | cluster|standalone | Chế độ cache Redis (cluster trong dev) |
APP_ENV_CACHE_REDIS_IDENTIFIER | string | ví dụ cache |
APP_ENV_CACHE_REDIS_PASSWORD | string | Auth |
APP_ENV_CACHE_REDIS_CLUSTER_NODES | string | Node cluster host:port phân tách bằng dấu phẩy |
APP_ENV_WEBSOCKET_REDIS_* | — | Identifier Redis riêng (ws) cho WebSocket pubsub |
Mail (Nodemailer)
| Tên | Type | Mô tả |
|---|---|---|
APP_ENV_MAIL_HOST | string | Host SMTP (ví dụ smtp.gmail.com) |
APP_ENV_MAIL_PORT | number | ví dụ 465 |
APP_ENV_MAIL_SECURE | boolean | TLS |
APP_ENV_MAIL_USER / APP_ENV_MAIL_PASSWORD | string | Credential SMTP |
APP_ENV_MAIL_FROM_NAME / APP_ENV_MAIL_FROM_MAIL | string | Định danh From |
APP_ENV_LOCAL_TEMPLATE_DIR | string | Thư mục email template (resources/email-templates/default) |
Kafka: không có
APP_ENV_KAFKA_*nào được tiêu thụ — dep Kafka chết. Xem API Events.
Escalation / routing hỗ trợ
Định nghĩa trong
src/shared/common/constants/common.constant.ts(ESCALATION_CONFIG), đọc từ env với fallback.
| Tên | Mặc định (fallback) | Mô tả |
|---|---|---|
APP_ENV_SUPPORT_MANAGER_EMAIL | huy.pham@nexpando.com | Người nhận escalation manager |
APP_ENV_SUPPORT_LEADERSHIP_EMAIL | huy.pham@nexpando.com | Người nhận leadership (critical) |
APP_ENV_SUPPORT_ESCALATION_SLACK | #support-escalations | Kênh Slack escalation |
APP_ENV_SUPPORT_CRITICAL_SLACK | #support-critical-escalations | Kênh Slack critical |
2. Feature Flags
Khai báo trong
app-info.jsonfeatures(cờ năng lực mô tả; không phải kill-switch runtime).
| Flag | Giá trị | Năng lực |
|---|---|---|
ticketing | true | Quản lý ticket |
slaManagement | true | Theo dõi SLA + escalation |
knowledgeBase | true | Articles + feedback |
surveys | true | Khảo sát CSAT |
analytics | true | Analytics (tên hàng đợi được dành, không đấu nối worker) |
contextEnrichment | true | Enrichment order/product |
autoAssignment | true | Phân công dựa trên rule |
3. Hằng số Tinh chỉnh SLA / Worker
Hằng số compile-time trong
src/shared/common/constants/common.constant.ts.
| Hằng số | Giá trị |
|---|---|
WORKER_CONFIG.SLA_MONITOR_INTERVAL | */1 * * * * (mỗi phút) |
WORKER_CONFIG.SLA_BATCH_SIZE | 100 |
SLA_WARNING_THRESHOLDS | YELLOW 75 / ORANGE 90 / RED 100 / CRITICAL 150 |
SLA_DEFAULTS (theo priority 10/20/30/40/50) | phút response/resolution theo từng tier |
ESCALATION_TIMING | L1→L2 45m, L2→L3 75m |
COMPENSATION_MATRIX | theo tier (STANDARD/PREMIUM/VIP) × severity → số tiền |
SYSTEM_ORGANIZER_ID / SYSTEM_MERCHANT_ID | 0000-0000-0000-0000 |
4. Dữ liệu Seed
Process migration trong
src/migrations/processes/— chạy quaRUN_MODE=migrate. Email template mặc định ship dưới dạng JSON trongsrc/resources/email-templates/default/(vòng đời ticket, cảnh báo/vi phạm SLA, level escalation, phân công, đền bù, after-hours).
| Nguồn | Seed | Ghi chú |
|---|---|---|
migrations/processes/migration-process.ts | Process migration Drizzle | Migration schema (model tập trung trong @nx/core) |
resources/email-templates/default/*.json | ~18 email template | Được Nodemailer nạp từ thư mục template |
5. Lưu trữ Cấu hình
Chính sách SLA theo merchant, rule assignment, preference/template thông báo, và định nghĩa survey được lưu dưới dạng bảng domain trong schema
helpdesk(không phải bảngConfigurationchung). Xem Domain Model.