CENTRALCHAT PHASE 2B - CONNECTOR DEPLOY PACKAGE
=================================================

PENTING:
ZIP ini BUKAN untuk upload ke root sistem StesenPrint.
JANGAN upload ZIP ini ke folder seperti:
- /home/gudangm1/stesenprint.com/v3/
- /public_html/stesenprint.com/
- root sistem StesenPrint utama

ZIP ini hanya untuk SERVER/SUBDOMAIN CONNECTOR:
- https://connector.stesenprint.com

Flow final:
1. StesenPrint/CentralChat CRM kekal di server lama:
   https://stesenprint.com/centralchat

2. Connector Node.js diletakkan di server/subdomain lain:
   https://connector.stesenprint.com

3. Staff/admin tetap guna page StesenPrint sahaja.
   Connector cuma engine belakang untuk QR, receive message, send message.


FOLDER DALAM ZIP
================
centralchat-connector/
  server.js
  package.json
  .env.example
  ecosystem.config.js
  storage/
  logs/

Upload folder centralchat-connector ini ke server connector sahaja.


LOKASI LETAK FILE - JIKA GUNA VPS
=================================
Cadangan path:
/home/centralchat/centralchat-connector

Contoh command:
mkdir -p /home/centralchat
cd /home/centralchat
unzip centralchat_phase2b_connector_deploy.zip
cd centralchat-connector

Jangan letak dalam root StesenPrint utama.


LOKASI LETAK FILE - JIKA GUNA CPANEL NODE.JS APP
================================================
Jika cPanel connector.stesenprint.com support Node.js App:

App root/path cadangan:
/home/USERNAME/centralchat-connector

Startup file:
server.js

Application URL / subdomain:
https://connector.stesenprint.com

Node.js version:
18 ke atas

Environment variables ikut .env.example.


SETUP ENV
=========
Dalam folder centralchat-connector:

1. Copy .env.example jadi .env
   cp .env.example .env

2. Edit .env:

PORT=3020
PUBLIC_BASE_URL=https://connector.stesenprint.com
CENTRALCHAT_TOKEN=ISI_TOKEN_PANJANG_YANG_SAMA_DALAM_STESENPRINT
CRM_WEBHOOK_URL=https://stesenprint.com/centralchat/api/incoming_webhook.php
CRM_WEBHOOK_SECRET=ISI_WEBHOOK_SECRET_YANG_SAMA_DALAM_STESENPRINT
SESSION_DIR=./storage/session
LOG_LEVEL=info

PENTING:
- CENTRALCHAT_TOKEN mesti sama dengan Connector API Token dalam StesenPrint:
  CentralChat -> Tetapan Channel -> Connector API Token

- CRM_WEBHOOK_SECRET mesti sama dengan Webhook Secret dalam StesenPrint:
  CentralChat -> Tetapan Channel -> Webhook Secret


INSTALL DI VPS
==============
Pastikan Node.js 18+ ada.

Command:
cd /home/centralchat/centralchat-connector
npm install
npm start

Test health:
curl https://connector.stesenprint.com/health

Production dengan PM2:
npm install -g pm2
pm2 start ecosystem.config.js
pm2 save
pm2 status

Jika VPS reboot, setup startup PM2:
pm2 startup
# ikut command yang PM2 beri
pm2 save


REVERSE PROXY CONTOH NGINX
==========================
Jika connector jalan di port 3020 dan domain connector.stesenprint.com perlu proxy:

server {
    listen 80;
    server_name connector.stesenprint.com;

    location / {
        proxy_pass http://127.0.0.1:3020;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Lepas SSL aktif, guna HTTPS.


ENDPOINT CONNECTOR
==================
Dikawal oleh StesenPrint melalui secure token.

Public/health:
GET /health

Protected endpoints:
GET  /status
GET  /qr
POST /send-message
POST /send-media       (placeholder, media phase nanti)
POST /logout
POST /restart-session

Header wajib untuk protected endpoints:
X-CentralChat-Token: token_yang_sama


CARA TEST LEPAS DEPLOY
======================
1. Buka:
   https://connector.stesenprint.com/health

Expected:
{"ok":true,"service":"centralchat-connector",...}

2. Di StesenPrint buka:
   CentralChat -> Tetapan Channel

Isi:
Connector Base URL: https://connector.stesenprint.com
Connector API Token: sama dengan CENTRALCHAT_TOKEN dalam .env connector
Webhook Secret: sama dengan CRM_WEBHOOK_SECRET dalam .env connector

3. Buka:
   CentralChat -> Connector QR

4. Tekan refresh/start QR.

5. Scan QR guna nombor WhatsApp rasmi.

6. Hantar test WhatsApp daripada nombor lain ke nombor rasmi.

7. Chat patut masuk ke:
   CentralChat -> Belum Diambil / Inbox Semua


JANGAN BUAT
===========
- Jangan upload package ini ke root StesenPrint.
- Jangan buka connector sebagai sistem staff.
- Jangan guna connector untuk broadcast/spam.
- Jangan delete folder storage/session kecuali mahu reconnect QR.


NOTA PHASE
==========
Phase 2A sudah dibuat di StesenPrint: setting page, connector proxy, webhook receiver.
Phase 2B ini hanya untuk deploy Node.js connector di connector.stesenprint.com.
Phase 3 nanti ialah test penuh incoming webhook + send reply dari CentralChat.
