2way-batch
2way-batch (branch: master, 96 tracked files) เป็น NestJS worker ที่ scaffold จาก skeleton เดียวกับ 2way-api / 2way-line-service แต่ AppModule เปิดใช้งานจริงแค่ cron สำหรับแบบสำรวจ (survey) ผ่าน SurveyTaskModule — โมดูล HTTP อื่นถูก comment ปิดทั้งหมด (2way-batch/src/app.module.ts:37-44)
ชื่อ package ตรงกับชื่อ repo (2way-batch/package.json:2) — ต่างจาก 2way-api / 2way-line-service ที่ยังใช้ชื่อ vtrc-restfull-v2
ณ สถานะโค้ดปัจจุบัน cron ตื่นทุก 10 วินาทีแต่เรียกแค่ stub ที่ log ข้อความ — logic แจ้งเตือน LINE จริงถูก comment ปิดใน handleCron() (2way-batch/src/crontab/survey/survey.task.service.ts:32-37) — ดู 02-core-pipeline
Stack
| ส่วน | เทคโนโลยี | เวอร์ชัน | อ้างอิง |
|---|---|---|---|
| Framework | NestJS | ^9.0.0 | package.json:28-31 |
| ภาษา | TypeScript | ^4.7.4 | package.json:74 |
| ORM | TypeORM | ^0.3.11 | package.json:49 |
| DB driver | mssql | ^9.1.1 | package.json:42 |
| Cron | @nestjs/schedule | ^2.2.0 | package.json:33 |
| HTTP client | @nestjs/axios + axios | ^2.0.0 / ^1.2.5 | package.json:27,38 |
| Auth libs | passport-jwt (global guard มี แต่ไม่มี controller live) | ^4.0.0 | package.json:44 |
| Docs | @nestjs/swagger | ^6.1.3 | package.json:34 |
| Package manager | yarn (yarn ใน Dockerfile) | — | Dockerfile:11 |
Entrypoint / พอร์ต
src/main.ts bootstrap:
- global prefix
${BASE_PATH}api/v1(main.ts:23-25) - static assets
/uploadsที่ prefix/2way-batch/(main.ts:26-28) - global
HttpExceptionFilter,JwtAuthGuard,ValidationPipe(main.ts:31-33) - CORS
origin: '*'(main.ts:34-38) - Swagger ที่
${BASE_PATH}docs(main.ts:40-41) - listen
config.get('port') \|\| 3000บน0.0.0.0(main.ts:21,42)
| แหล่ง | ค่า | อ้างอิง |
|---|---|---|
main.ts fallback | 3000 | main.ts:21 |
| Swagger server default | PORT || 9340 | docs/document.config.ts:8 |
nginx proxy_pass สำหรับ /2way-batch/ | 0.0.0.0:9340 | nginx/conf.d/default.conf:8 |
| Hardcoded LINE push target | 10.188.128.126:9340 | src/modules/line/line.service.ts:26 |
ไม่มี .env.example ใน repo — ค่า PORT / BASE_PATH / DB ที่ deploy จริงเป็น UNVERIFIED จากไฟล์ env ใน git; ใช้ 9340 เป็นค่าที่ปรากฏใน nginx + swagger + hardcode มากที่สุด
Deploy
Dockerfilemulti-stage:node:16-alpineทั้ง develop และ production (Dockerfile:1,15) — Node 16 EOL- build ด้วย
yarn+yarn build, รันyarn start:prod→node dist/src/main(Dockerfile:11-13,22,package.json:18) EXPOSE 3000(Dockerfile:24) — ไม่ตรงกับ 9340 ที่ nginx/swagger อ้าง- มี
nginx/conf+nginx/conf.d/default.confใน repo - CI:
bitbucket-pipelines.yml— branchmaster/uat/prod/developbuild image แล้ว push GCP registry (bitbucket-pipelines.yml:114-137)
หน้าที่จริงในระบบ
จาก wiring ใน AppModule — service นี้ตั้งใจเป็น batch/cron สำหรับ survey notification ที่:
- อ่าน MSSQL ผ่าน TypeORM connection name
'main' - หาแบบสำรวจตาม status/flow
- เรียก
LineService.pushMassage→ HTTP ไป IP hardcode - อัปเดตสถานะผ่าน
SurveysService.updateSurveys
แต่ขั้นตอนธุรกิจของ fetchApproval / fetchCreateOutScope ถูก comment ออกจาก handleCron เหลือแค่ log stub — ดู 02 และ 03
สารบัญ
| บท | หัวข้อ |
|---|---|
| 01 | Repository map — modules, entities, nginx, dead code |
| 02 | Core pipeline — cron lifecycle, stub vs dead methods, hardcoded IP |
| 03 | Persistence & integrations — MSSQL entities, LINE HTTP hop, config maps |
| 04 | Scorecard — cron waste, hardcode IP, Node 16 EOL |
ดูภาพรวมกลุ่ม 2way Platform ที่ Volume 5 index.