job-scheduler-api
job-scheduler-api (branch: prod) เป็น service ชื่อทั่วไปว่า "job scheduler" แต่เนื้อในปัจจุบันมี cron job ที่ทำงานจริงอยู่เพียง หนึ่งงานเดียว — เรียก endpoint สรุปยอด incident ของอีก service (incident-management-api) วันละครั้ง ไม่มี HTTP controller ของตัวเองที่ทำ business logic ใด ๆ (AppController เป็น root ว่างเปล่า) — ดู 02-core-pipeline และ 04-scorecard สำหรับความคลาดเคลื่อนระหว่างชื่อ repo กับสิ่งที่โค้ดทำจริง
Stack และเวอร์ชัน
| ส่วน | ค่า | หลักฐาน |
|---|---|---|
| Framework | NestJS ^9.0.0 | job-scheduler-api/package.json:27-29 (branch: prod) |
| ORM | TypeORM ^0.3.10 + mysql2 (import ไว้ใน AppModule แต่ ไม่ได้ถูกเรียกใช้จริง — ดู QUAL-JOBSCHED-01) | job-scheduler-api/src/app.module.ts:1-23 |
| Cron | @nestjs/schedule ^2.2.0 | job-scheduler-api/package.json:32 |
| Auth | Passport JWT ผ่าน guard เดียวกับ template ที่ใช้ทั่วแพลตฟอร์ม | job-scheduler-api/libs/jwt/jwt-auth.guard.ts |
| Swagger | @nestjs/swagger ^6.1.3 | job-scheduler-api/package.json:33 |
Entry point
src/main.ts — bootstrap เหมือน template กลาง: global prefix {BASE_PATH}api/v1, JwtAuthGuard เป็น global guard, Swagger ที่ {BASE_PATH}docs (job-scheduler-api/src/main.ts:12-41, branch: prod)
พอร์ตและ path
| ตัวแปร | ค่า | หลักฐาน |
|---|---|---|
PORT | 9900 | job-scheduler-api/.env:4 (branch: prod) |
BASE_PATH | benefit-api/ — ไม่ตรงกับชื่อ service (ดู QUAL-JOBSCHED-02) | job-scheduler-api/.env:3 |
DB_NAME | benefit (host 10.188.128.58) | job-scheduler-api/.env:6-11 |
Deploy artifact
Dockerfile multi-stage บน node:16-alpine (develop → production), EXPOSE 3000 (ไม่ตรงกับ PORT=9900 ที่ตั้งจริงใน .env — ค่า EXPOSE เป็น documentation เฉย ๆ ไม่ผูกกับ listen port จริง) (job-scheduler-api/Dockerfile:1-26, branch: prod) docker-compose.yml map พอร์ต 9900:9900 และเข้าร่วม network ภายนอกชื่อ vtrc-api_default ร่วมกับบริการอื่นในแพลตฟอร์ม (job-scheduler-api/docker-compose.yml:8-9,18-22)