Skip to content

2way-line-service

2way-line-service (branch: master, 52 tracked files) เป็น NestJS gateway ขนาดเล็กสำหรับ LINE Messaging API — push / multicast ข้อความ และสลับ rich menu (nextPage / previousPage) ของ LINE Official Account

สร้างจาก skeleton เดียวกับ 2way-api / 2way-batch (package.json ชื่อ vtrc-restfull-v2, 2way-line-service/package.json:2) แต่ตัด module อื่นออกจนเหลือแค่ LineModule (2way-line-service/src/app.module.ts:9-19)


Stack

ส่วนเทคโนโลยีเวอร์ชันอ้างอิง
FrameworkNestJS^9.0.0package.json:27-31
ภาษาTypeScript^4.7.4package.json:70
HTTP clientaxios (ตรงใน LineService)^1.2.5package.json:35
Auth libspassport-jwt (global guard; endpoints เป็น @Public())^4.0.0package.json:41
ORM deps@nestjs/typeorm + typeorm + mssql ใน package.json^9.0.1 / ^0.3.11 / ^9.1.1package.json:33,39,46
Docs@nestjs/swagger^6.1.3package.json:32
Package manageryarn (yarn ใน Dockerfile)Dockerfile:11

AppModule ไม่ได้ตั้ง TypeOrmModule.forRootAsync (app.module.ts:9-19) แม้ dependency และโฟลเดอร์ src/entities/ จะมีอยู่ — service นี้ไม่เชื่อม DB ในเส้นทางที่ต่อสายทำงาน


Entrypoint / พอร์ต

src/main.ts:

  • global prefix ${BASE_PATH}api/v1 (main.ts:21-23)
  • ไม่มี useStaticAssets (ต่างจาก 2way-batch / 2way-api)
  • global HttpExceptionFilter, JwtAuthGuard, ValidationPipe (main.ts:26-28)
  • CORS origin: '*' (main.ts:29-33)
  • Swagger ที่ ${BASE_PATH}docs (main.ts:35-36)
  • listen config.get('port') \|\| 3000 บน 0.0.0.0 (main.ts:19,37)
แหล่งค่าอ้างอิง
.env.example PORT8200.env.example:5
Swagger defaultPORT || 8200docs/document.config.ts:8
docker-compose.yml publish8200:8200docker-compose.yml:8-9,21-22
Dockerfile EXPOSE3000Dockerfile:24
Caller จาก 2way-api20.212.116.206:82002way-api/src/modules/line/line.service.ts:76,86 (branch: prod)

พอร์ต 8200 สอดคล้องระหว่าง .env.example, compose, swagger, และ hardcode ของ 2way-apiEXPOSE 3000 ใน Dockerfile ไม่ตรง

BASE_PATH ใน .env.example ว่าง (BASE_PATH=, .env.example:3) → prefix จริงเป็น api/v1/...


Deploy

  • Dockerfile multi-stage node:16-alpine (Dockerfile:1,15) — Node 16 EOL
  • docker-compose.yml มี dev / prod บน network vtrc-api_default (external) (docker-compose.yml:14-30)
  • ไม่มี nginx/ ใน repo นี้ (ต่างจาก 2way-batch)
  • ไม่พบ bitbucket-pipelines.yml ใน listing ของ branch master

หน้าที่จริงในระบบ

เป็น thin wrapper รอบ LINE platform:

  1. POST .../Line → push message เดี่ยว
  2. POST .../Line/multiCast → multicast
  3. POST .../Line/nextPage → ผูก rich menu ตาม isChula
  4. DELETE .../Line/previousPage → ลบ rich menu ของ user

ทุกเส้นเป็น @Public() — ดู 02-core-pipeline

2way-api เรียก next/previous ผ่าน IP hardcode มาที่พอร์ต 8200 — ดู 03-persistence-integrations


สารบัญ

บทหัวข้อ
01Repository map — modules, dead entities, env
02Core pipeline — push/multicast + rich menu flow
03Integrations — LINE API, caller contract mismatch, no DB
04Scorecard — public endpoints, secrets in example, Node 16

ดูภาพรวมกลุ่ม 2way Platform ที่ Volume 5 index.