2025-12-01 15:30:04 +09:00
|
|
|
# =============================================================================
|
|
|
|
|
# Customer Portal Backend (BFF) - Production Environment
|
|
|
|
|
# =============================================================================
|
|
|
|
|
# Copy to portal-backend.env and configure values marked with CHANGE_ME
|
|
|
|
|
# Variables with defaults can be omitted unless you need to override them
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
2025-12-11 18:47:24 +09:00
|
|
|
# REQUIRED - Must be configured (no defaults)
|
2025-12-01 15:30:04 +09:00
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
|
2025-09-01 15:11:42 +09:00
|
|
|
NODE_ENV=production
|
2025-12-01 15:30:04 +09:00
|
|
|
DATABASE_URL=postgresql://portal:CHANGE_ME@database:5432/portal_prod?schema=public
|
|
|
|
|
JWT_SECRET=CHANGE_ME_GENERATE_WITH_openssl_rand_base64_32
|
|
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
# Core Application
|
|
|
|
|
# -----------------------------------------------------------------------------
|
2025-09-01 15:11:42 +09:00
|
|
|
|
2025-12-11 18:47:24 +09:00
|
|
|
# APP_NAME=customer-portal-bff # default
|
2025-12-01 15:30:04 +09:00
|
|
|
APP_BASE_URL=https://your-domain.com
|
2025-12-11 18:47:24 +09:00
|
|
|
# BFF_PORT=4000 # default
|
2025-09-01 15:11:42 +09:00
|
|
|
|
2025-12-01 15:30:04 +09:00
|
|
|
# -----------------------------------------------------------------------------
|
2025-12-11 18:47:24 +09:00
|
|
|
# Cache & Session
|
2025-12-01 15:30:04 +09:00
|
|
|
# -----------------------------------------------------------------------------
|
2025-09-01 15:11:42 +09:00
|
|
|
|
|
|
|
|
REDIS_URL=redis://cache:6379/0
|
|
|
|
|
|
2025-12-11 18:47:24 +09:00
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
# Security
|
|
|
|
|
# -----------------------------------------------------------------------------
|
2025-09-01 15:11:42 +09:00
|
|
|
|
2025-12-01 15:30:04 +09:00
|
|
|
CORS_ORIGIN=https://your-domain.com
|
2025-09-01 15:11:42 +09:00
|
|
|
TRUST_PROXY=true
|
|
|
|
|
|
2025-12-11 18:47:24 +09:00
|
|
|
# CSRF Protection (generate: openssl rand -base64 32)
|
2025-12-01 15:30:04 +09:00
|
|
|
CSRF_SECRET_KEY=CHANGE_ME_GENERATE_WITH_openssl_rand_base64_32
|
|
|
|
|
|
2025-12-11 18:47:24 +09:00
|
|
|
# JWT (defaults shown)
|
|
|
|
|
# JWT_EXPIRES_IN=7d
|
|
|
|
|
# BCRYPT_ROUNDS=14
|
2025-12-01 15:30:04 +09:00
|
|
|
|
2025-12-11 18:47:24 +09:00
|
|
|
# Redis token handling
|
|
|
|
|
# AUTH_ALLOW_REDIS_TOKEN_FAILOPEN=false # default
|
|
|
|
|
# AUTH_REQUIRE_REDIS_FOR_TOKENS=false # default
|
|
|
|
|
# AUTH_MAINTENANCE_MODE=false # default
|
2025-12-01 15:30:04 +09:00
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
2025-12-11 18:47:24 +09:00
|
|
|
# Rate Limiting (defaults shown - uncomment to override)
|
2025-12-01 15:30:04 +09:00
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
|
2025-12-11 18:47:24 +09:00
|
|
|
# RATE_LIMIT_TTL=60
|
|
|
|
|
# RATE_LIMIT_LIMIT=100
|
|
|
|
|
# AUTH_RATE_LIMIT_TTL=900
|
|
|
|
|
# AUTH_RATE_LIMIT_LIMIT=3
|
|
|
|
|
# LOGIN_RATE_LIMIT_TTL=900
|
|
|
|
|
# LOGIN_RATE_LIMIT_LIMIT=5
|
2025-09-06 14:05:18 +09:00
|
|
|
|
2025-12-11 18:47:24 +09:00
|
|
|
# CAPTCHA (optional)
|
|
|
|
|
# AUTH_CAPTCHA_PROVIDER=none # 'none', 'turnstile', or 'hcaptcha'
|
|
|
|
|
# AUTH_CAPTCHA_SECRET=
|
2025-09-06 17:38:42 +09:00
|
|
|
|
2025-12-01 15:30:04 +09:00
|
|
|
# -----------------------------------------------------------------------------
|
2025-12-11 18:47:24 +09:00
|
|
|
# EXTERNAL SERVICES - Configure all that apply
|
2025-12-01 15:30:04 +09:00
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
|
2025-12-11 18:47:24 +09:00
|
|
|
# --- WHMCS (Billing) ---
|
2025-09-01 15:11:42 +09:00
|
|
|
WHMCS_BASE_URL=https://accounts.asolutions.co.jp
|
2025-12-11 18:47:24 +09:00
|
|
|
WHMCS_API_IDENTIFIER=CHANGE_ME
|
|
|
|
|
WHMCS_API_SECRET=CHANGE_ME
|
2025-12-01 15:30:04 +09:00
|
|
|
|
2025-12-15 17:29:28 +09:00
|
|
|
# WHMCS Client custom fields (IDs from WHMCS Admin → Custom Fields)
|
|
|
|
|
# Customer Number is typically 198; Gender and DOB are your instance-specific IDs.
|
|
|
|
|
WHMCS_CUSTOMER_NUMBER_FIELD_ID=198
|
|
|
|
|
WHMCS_GENDER_FIELD_ID=200
|
|
|
|
|
WHMCS_DOB_FIELD_ID=201
|
|
|
|
|
# WHMCS_NATIONALITY_FIELD_ID=
|
|
|
|
|
|
2025-12-11 18:47:24 +09:00
|
|
|
# Queue settings (defaults shown)
|
|
|
|
|
# WHMCS_QUEUE_CONCURRENCY=15
|
|
|
|
|
# WHMCS_QUEUE_INTERVAL_CAP=300
|
|
|
|
|
# WHMCS_QUEUE_TIMEOUT_MS=30000
|
2025-12-01 15:30:04 +09:00
|
|
|
|
2025-12-11 18:47:24 +09:00
|
|
|
# --- Salesforce (CRM) ---
|
2025-09-01 15:11:42 +09:00
|
|
|
SF_LOGIN_URL=https://asolutions.my.salesforce.com
|
2025-12-11 18:47:24 +09:00
|
|
|
SF_CLIENT_ID=CHANGE_ME
|
|
|
|
|
SF_USERNAME=CHANGE_ME
|
2025-12-01 15:30:04 +09:00
|
|
|
SF_PRIVATE_KEY_PATH=/app/secrets/sf-private.key
|
2025-09-26 17:02:36 +09:00
|
|
|
|
2025-12-11 18:47:24 +09:00
|
|
|
# Queue settings (defaults shown)
|
|
|
|
|
# SF_QUEUE_CONCURRENCY=15
|
|
|
|
|
# SF_QUEUE_LONG_RUNNING_CONCURRENCY=22
|
|
|
|
|
# SF_QUEUE_INTERVAL_CAP=600
|
|
|
|
|
# SF_QUEUE_TIMEOUT_MS=30000
|
|
|
|
|
# SF_QUEUE_LONG_RUNNING_TIMEOUT_MS=600000
|
|
|
|
|
# SF_DAILY_API_LIMIT=100000
|
|
|
|
|
|
|
|
|
|
# Token management (defaults shown)
|
|
|
|
|
# SF_AUTH_TIMEOUT_MS=30000
|
|
|
|
|
# SF_TOKEN_TTL_MS=720000
|
|
|
|
|
# SF_TOKEN_REFRESH_BUFFER_MS=60000
|
2025-09-01 15:11:42 +09:00
|
|
|
|
2025-12-01 15:30:04 +09:00
|
|
|
# Platform Events
|
2025-09-06 10:01:44 +09:00
|
|
|
SF_EVENTS_ENABLED=true
|
2025-12-11 18:47:24 +09:00
|
|
|
# SF_EVENTS_REPLAY=LATEST # default
|
|
|
|
|
# SF_PUBSUB_ENDPOINT=api.pubsub.salesforce.com:7443 # default
|
|
|
|
|
# SF_PUBSUB_NUM_REQUESTED=25 # default
|
|
|
|
|
# SF_PUBSUB_QUEUE_MAX=100 # default
|
2025-11-06 16:32:29 +09:00
|
|
|
|
2025-12-11 18:47:24 +09:00
|
|
|
# --- Freebit (SIM Management) ---
|
2025-12-01 15:30:04 +09:00
|
|
|
FREEBIT_BASE_URL=https://i1.mvno.net/emptool/api
|
2025-12-11 18:47:24 +09:00
|
|
|
FREEBIT_OEM_KEY=CHANGE_ME
|
|
|
|
|
# FREEBIT_OEM_ID=PASI # default
|
|
|
|
|
# FREEBIT_TIMEOUT=30000 # default
|
|
|
|
|
# FREEBIT_RETRY_ATTEMPTS=3 # default
|
|
|
|
|
|
2025-12-12 11:47:17 +09:00
|
|
|
# --- SFTP (SIM Call/SMS history imports) ---
|
|
|
|
|
# SFTP_HOST=fs.mvno.net # default
|
|
|
|
|
# SFTP_PORT=22 # default
|
|
|
|
|
# SFTP_USERNAME=PASI # default
|
|
|
|
|
SFTP_PASSWORD=CHANGE_ME
|
|
|
|
|
# Optional but recommended (MITM protection): server host key fingerprint
|
|
|
|
|
# You can paste OpenSSH-style values (prefix "SHA256:" is ignored).
|
|
|
|
|
# SFTP_HOST_KEY_SHA256=CHANGE_ME
|
|
|
|
|
|
2025-12-11 18:47:24 +09:00
|
|
|
# --- SendGrid (Email) ---
|
|
|
|
|
SENDGRID_API_KEY=CHANGE_ME
|
|
|
|
|
# EMAIL_ENABLED=true # default
|
|
|
|
|
# EMAIL_USE_QUEUE=true # default
|
2025-09-01 15:11:42 +09:00
|
|
|
EMAIL_FROM=no-reply@asolutions.jp
|
2025-12-11 18:47:24 +09:00
|
|
|
# EMAIL_FROM_NAME=Assist Solutions # default
|
|
|
|
|
# SENDGRID_SANDBOX=false # default
|
2025-09-01 15:11:42 +09:00
|
|
|
|
2025-12-01 15:30:04 +09:00
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
# Portal Configuration
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
|
2025-12-11 18:47:24 +09:00
|
|
|
PORTAL_PRICEBOOK_ID=CHANGE_ME
|
|
|
|
|
# PORTAL_PRICEBOOK_NAME=Portal # default
|
2025-12-01 15:30:04 +09:00
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
# Logging
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
LOG_LEVEL=info
|
2025-12-11 18:47:24 +09:00
|
|
|
# PRETTY_LOGS=false # auto-disabled in production
|
2025-12-01 15:30:04 +09:00
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
# Node Runtime
|
|
|
|
|
# -----------------------------------------------------------------------------
|
2025-09-06 14:05:18 +09:00
|
|
|
|
2025-09-01 15:11:42 +09:00
|
|
|
NODE_OPTIONS=--max-old-space-size=512
|
|
|
|
|
|
2025-12-01 15:30:04 +09:00
|
|
|
|
|
|
|
|
# =============================================================================
|
2025-12-11 18:47:24 +09:00
|
|
|
# SALESFORCE FIELD MAPPINGS (Advanced)
|
2025-12-01 15:30:04 +09:00
|
|
|
# =============================================================================
|
2025-12-11 18:47:24 +09:00
|
|
|
# All fields have sensible defaults matching standard SF field API names.
|
|
|
|
|
# Only uncomment if your Salesforce org uses non-standard field names.
|
2025-12-01 15:30:04 +09:00
|
|
|
# =============================================================================
|
|
|
|
|
|
2025-12-11 18:47:24 +09:00
|
|
|
# --- Account Fields ---
|
2025-12-01 15:30:04 +09:00
|
|
|
# ACCOUNT_INTERNET_ELIGIBILITY_FIELD=Internet_Eligibility__c
|
|
|
|
|
# ACCOUNT_CUSTOMER_NUMBER_FIELD=SF_Account_No__c
|
|
|
|
|
# ACCOUNT_PORTAL_STATUS_FIELD=Portal_Status__c
|
|
|
|
|
# ACCOUNT_PORTAL_STATUS_SOURCE_FIELD=Portal_Registration_Source__c
|
|
|
|
|
# ACCOUNT_PORTAL_LAST_SIGNED_IN_FIELD=Portal_Last_SignIn__c
|
|
|
|
|
|
2025-12-11 18:47:24 +09:00
|
|
|
# --- Product Fields ---
|
2025-12-01 15:30:04 +09:00
|
|
|
# PRODUCT_SKU_FIELD=StockKeepingUnit
|
|
|
|
|
# PRODUCT_PORTAL_CATEGORY_FIELD=Product2Categories1__c
|
|
|
|
|
# PRODUCT_PORTAL_CATALOG_FIELD=Portal_Catalog__c
|
|
|
|
|
# PRODUCT_PORTAL_ACCESSIBLE_FIELD=Portal_Accessible__c
|
|
|
|
|
# PRODUCT_ITEM_CLASS_FIELD=Item_Class__c
|
|
|
|
|
# PRODUCT_BILLING_CYCLE_FIELD=Billing_Cycle__c
|
|
|
|
|
# PRODUCT_WHMCS_PRODUCT_ID_FIELD=WH_Product_ID__c
|
|
|
|
|
# PRODUCT_WHMCS_PRODUCT_NAME_FIELD=WH_Product_Name__c
|
|
|
|
|
# PRODUCT_INTERNET_PLAN_TIER_FIELD=Internet_Plan_Tier__c
|
|
|
|
|
# PRODUCT_INTERNET_OFFERING_TYPE_FIELD=Internet_Offering_Type__c
|
|
|
|
|
# PRODUCT_DISPLAY_ORDER_FIELD=Catalog_Order__c
|
|
|
|
|
# PRODUCT_SIM_DATA_SIZE_FIELD=SIM_Data_Size__c
|
|
|
|
|
# PRODUCT_SIM_PLAN_TYPE_FIELD=SIM_Plan_Type__c
|
|
|
|
|
# PRODUCT_SIM_HAS_FAMILY_DISCOUNT_FIELD=SIM_Has_Family_Discount__c
|
|
|
|
|
# PRODUCT_VPN_REGION_FIELD=VPN_Region__c
|
|
|
|
|
|
2025-12-11 18:47:24 +09:00
|
|
|
# --- Order Fields ---
|
2025-12-01 15:30:04 +09:00
|
|
|
# ORDER_TYPE_FIELD=Type
|
|
|
|
|
# ORDER_ACTIVATION_TYPE_FIELD=Activation_Type__c
|
|
|
|
|
# ORDER_ACTIVATION_SCHEDULED_AT_FIELD=Activation_Scheduled_At__c
|
|
|
|
|
# ORDER_ACTIVATION_STATUS_FIELD=Activation_Status__c
|
|
|
|
|
# ORDER_SIM_TYPE_FIELD=SIM_Type__c
|
|
|
|
|
# ORDER_EID_FIELD=EID__c
|
|
|
|
|
# ORDER_MNP_APPLICATION_FIELD=MNP_Application__c
|
|
|
|
|
# ORDER_MNP_RESERVATION_FIELD=MNP_Reservation_Number__c
|
|
|
|
|
# ORDER_MNP_EXPIRY_FIELD=MNP_Expiry_Date__c
|
|
|
|
|
# ORDER_MNP_PHONE_FIELD=MNP_Phone_Number__c
|
|
|
|
|
# ORDER_WHMCS_ORDER_ID_FIELD=WHMCS_Order_ID__c
|
|
|
|
|
|
2025-12-11 18:47:24 +09:00
|
|
|
# --- CDC Channels ---
|
2025-12-01 15:30:04 +09:00
|
|
|
# SF_CATALOG_PRODUCT_CDC_CHANNEL=/data/Product2ChangeEvent
|
|
|
|
|
# SF_CATALOG_PRICEBOOKENTRY_CDC_CHANNEL=/data/PricebookEntryChangeEvent
|
|
|
|
|
# SF_ORDER_CDC_CHANNEL=/data/OrderChangeEvent
|
|
|
|
|
# SF_ORDER_ITEM_CDC_CHANNEL=/data/OrderItemChangeEvent
|