Skip to content

Configuration

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

Các khoá cốt lõi đến từ @venizia/ignis / @nx/core; khoá riêng của service nằm trong src/common/environments.ts.

Core / Runtime

TênKiểuMặc địnhBắt buộcMô tả
APP_ENV_SERVER_PORTnumber1190 ⚠️Cổng HTTP lắng nghe (lẻ so với các anh em 310x0)
APP_ENV_BASE_PATHstring/v1/apiTiền tố route (không có segment riêng cho service)
APP_ENV_KAFKA_BROKERSstringBrokers ngăn cách bằng dấu phẩy
APP_ENV_KAFKA_CLIENT_IDstringSVC-00150-INVOICE_CONSUMERMặc định fallback (${ServiceCodes.INVOICE}_CONSUMER); env đặt SVC-00150-INVOICE
APP_ENV_KAFKA_GROUP_IDstringSVC-00150-INVOICE_CONSUMER_GROUPConsumer group; env đặt SVC-00150-INVOICE-LOCAL
APP_ENV_APPLICATION_TIMEZONEstringAsia/Ho_Chi_MinhTimezone cho cron

BullMQ Redis

TênKiểuMặc địnhBắt buộcMô tả
APP_ENV_INVOICE_BULLMQ_REDIS_MODEsingle|clusterChế độ kết nối
APP_ENV_INVOICE_BULLMQ_REDIS_HOST / _PORTstring/numberHost/port chế độ single
APP_ENV_INVOICE_BULLMQ_REDIS_PASSWORD / _DATABASEstring/numberAuth / db index
APP_ENV_INVOICE_BULLMQ_REDIS_CLUSTER_NODESstringNodes chế độ cluster
APP_ENV_INVOICE_BULLMQ_REDIS_MAX_RETRYnumberRetry kết nối
APP_ENV_INVOICE_ISSUANCE_WORKER_CONCURRENCYnumber10Concurrency worker phát hành (claim-expiry cố định 3)

Providers & Webhooks

TênKiểuBắt buộcMô tả
APP_ENV_VNIS_DEFAULT_TAX_CODE / _CLIENT_ID / _CLIENT_SECRETstringKết nối VNIS mặc định (seed vào Configuration)
APP_ENV_TVAN_API_KEYstringCredential T-VAN (seed, đã mã hoá)
APP_ENV_VNPAY_TVAN_NAME / _API_KEYstringTên/khoá T-VAN của VNPAY
APP_ENV_INVOICE_WEBHOOK_SECRETstringWebhook merchant→platform (callback VNPAY/iiapi)
APP_ENV_INVOICE_WEBHOOK_INTERNAL_SECRETstringWebhook nội bộ iiapi/commerce→platform (HMAC-SHA256)
APP_ENV_INVOICE_WEBHOOK_CALLBACK_URL / _INTERNAL_BASE_URLstringURL callback
APP_ENV_INVOICE_CREDENTIALS_KEYstringKhoá AES-256-GCM — đúng 32 byte / 64 hex (openssl rand -hex 32)
APP_ENV_INVOICE_CLAIM_BASE_URLstringBase link tự khai báo của người mua

⚠️ APP_ENV_..._WORKER_ID (snowflake) chưa được cấu hình — xem Operations.

2. Feature Flags

FlagNguồnMặc địnhMô tả
Phát hành định kỳhàng Configuration INVOICE_SCHEDULED_ISSUANCE.jValue.enabledtrueBật/tắt phát hành theo lô bằng cron
Issuance modeInvoiceProviderConfig.issuanceModeMANUALTheo từng config: REAL_TIME / MANUAL / SCHEDULED / BUYER_SELF_SERVICE
autoRelease / autoSign / autoSendCqt / isSendMailInvoiceProviderConfigfalseChính sách xuất theo từng config

3. Dữ liệu seed

Các process migration ở src/migrations/processes/ — idempotent (kiểm tra tồn tại), chạy qua bun run migrate:dev.

FileSeedIdempotent
invoice-0001-seed-configurations.ts3 hàng Configuration (VNIS, T-VAN, phát hành định kỳ)
invoice-0002-seed-webhook-configs.tswebhook config commerce (INVOICE_COMMERCE_EVENTSORGANIZER_HQ_CHANGED)
invoice-0003-seed-permissions.tspermissions invoice
invoice-0004-seed-role-permissions.tsgrant role↔permission
(dữ liệu hành chính VN)tỉnh / phường / đơn vị hành chính

4. Lưu trữ Configuration (bảng Configuration)

Config runtime theo từng môi trường; credential được mã hoá AES-256-GCM qua encryptText.

CodejValueCredentialĐọc bởi
VNIS_DEFAULT_CONNECTION{ taxCode, provider, clientId }clientSecret (đã mã hoá)InvoiceProviderConnectionComponent
TVAN_DEFAULT_CONNECTION{ provider, name }apiKey (đã mã hoá)TVanConnectionComponent
INVOICE_SCHEDULED_ISSUANCE{ enabled, cronTime: '0 23 * * *', batchSize: 200 }CronComponent / InvoiceScheduledIssuanceService

Credential theo từng merchant (InvoiceProvider.password, .webhookSecret) được mã hoá trên hàng provider, không phải trong Configuration.

5. Trang liên quan

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