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
| ส่วน | เทคโนโลยี | เวอร์ชัน | อ้างอิง |
|---|---|---|---|
| Framework | NestJS | ^9.0.0 | package.json:27-31 |
| ภาษา | TypeScript | ^4.7.4 | package.json:70 |
| HTTP client | axios (ตรงใน LineService) | ^1.2.5 | package.json:35 |
| Auth libs | passport-jwt (global guard; endpoints เป็น @Public()) | ^4.0.0 | package.json:41 |
| ORM deps | @nestjs/typeorm + typeorm + mssql ใน package.json | ^9.0.1 / ^0.3.11 / ^9.1.1 | package.json:33,39,46 |
| Docs | @nestjs/swagger | ^6.1.3 | package.json:32 |
| Package manager | yarn (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 PORT | 8200 | .env.example:5 |
| Swagger default | PORT || 8200 | docs/document.config.ts:8 |
docker-compose.yml publish | 8200:8200 | docker-compose.yml:8-9,21-22 |
Dockerfile EXPOSE | 3000 | Dockerfile:24 |
Caller จาก 2way-api | 20.212.116.206:8200 | 2way-api/src/modules/line/line.service.ts:76,86 (branch: prod) |
พอร์ต 8200 สอดคล้องระหว่าง .env.example, compose, swagger, และ hardcode ของ 2way-api — EXPOSE 3000 ใน Dockerfile ไม่ตรง
BASE_PATH ใน .env.example ว่าง (BASE_PATH=, .env.example:3) → prefix จริงเป็น api/v1/...
Deploy
Dockerfilemulti-stagenode:16-alpine(Dockerfile:1,15) — Node 16 EOLdocker-compose.ymlมีdev/prodบน networkvtrc-api_default(external) (docker-compose.yml:14-30)- ไม่มี
nginx/ใน repo นี้ (ต่างจาก2way-batch) - ไม่พบ
bitbucket-pipelines.ymlใน listing ของ branch master
หน้าที่จริงในระบบ
เป็น thin wrapper รอบ LINE platform:
POST .../Line→ push message เดี่ยวPOST .../Line/multiCast→ multicastPOST .../Line/nextPage→ ผูก rich menu ตามisChulaDELETE .../Line/previousPage→ ลบ rich menu ของ user
ทุกเส้นเป็น @Public() — ดู 02-core-pipeline
2way-api เรียก next/previous ผ่าน IP hardcode มาที่พอร์ต 8200 — ดู 03-persistence-integrations
สารบัญ
| บท | หัวข้อ |
|---|---|
| 01 | Repository map — modules, dead entities, env |
| 02 | Core pipeline — push/multicast + rich menu flow |
| 03 | Integrations — LINE API, caller contract mismatch, no DB |
| 04 | Scorecard — public endpoints, secrets in example, Node 16 |
ดูภาพรวมกลุ่ม 2way Platform ที่ Volume 5 index.