15.1 · Deployment inventory
ตารางนี้รวบรวม deploy artifact ของทุก repo ที่มีโค้ดจริง (25 repo, ไม่รวม 8 placeholder repo ที่ว่างเปล่าทุก branch — ดู Canonical Truths)
15.1.1 · Legacy Core
| Repo | Deploy artifact | Base image | หมายเหตุ | หลักฐาน |
|---|---|---|---|---|
vtrc-api | ไม่พบ Dockerfile/docker-compose ที่ยืนยันได้ในรอบสำรวจนี้ | UNVERIFIED | โฟกัสการสำรวจอยู่ที่ application layer (GraphQL pipeline, controllers) ไม่ใช่ infra — deploy artifact ต้องยืนยันเพิ่มกับทีม DevOps | vtrc-api/index |
cu-central-api | Dockerfile (main-api, FROM node:12.18.3) + Dockerfile-nginx + Dockerfile-redis + docker-compose.yml (3x replica + redis + nginx) | node:12.18.3 — EOL เมษายน 2022 | มี ecosystem.config.js (PM2 config) ที่ comment ว่า "legacy, ไม่ได้ใช้ prod" — เคย deploy ด้วย PM2 มาก่อนแล้วเปลี่ยนเป็น Docker | cu-central-api/01-repository-map-bootstrap |
centralize-api | ไม่ได้ตรวจสอบละเอียดในรอบนี้ (NestJS มาตรฐาน สันนิษฐานว่ามี Dockerfile ตาม pattern ทั่วไปของ NestJS service อื่น) | UNVERIFIED | centralize-api/index |
15.1.2 · Web Frontends — static build committed to git
| Repo | Deploy artifact | หมายเหตุ | หลักฐาน |
|---|---|---|---|
vtrc-backoffice | Dockerfile เป็นแค่ FROM nginx:1.18 + nginx-extras — ไม่ build จาก source ใน image | dev รัน npm run build บนเครื่อง (หรือ CI นอก repo) → commit ผลลัพธ์ลง build/ (~47 MB) → docker-compose mount ./build:/usr/share/nginx/html ตรง | vtrc-backoffice/index §build tooling |
vtrc-backoffice-new | รูปแบบเดียวกับ vtrc-backoffice (fork) | ไม่ได้ตรวจ Dockerfile ต่างจากต้นฉบับในรอบนี้ (สันนิษฐานว่าเหมือนกัน — UNVERIFIED ระดับไฟล์) | vtrc-backoffice-new/index |
vtrc-rc-backoffice | ไม่ได้ตรวจ Dockerfile โดยละเอียดในรอบนี้ | ตาม workspace rule มี build/ ที่ commit เข้า git (Webpack/CRA output) เช่นเดียวกับกลุ่มนี้ทั้งหมด | Canonical Truths |
vtrc-web | ไม่ได้ตรวจ Dockerfile โดยละเอียดในรอบนี้ | เดียวกับข้างบน (build/ commit เข้า git) | Canonical Truths |
รูปแบบร่วมของทั้งกลุ่ม — ไม่มี frontend ตัวใดใน Web Frontends group ที่ build image จาก source code จริง ทุกตัว deploy ด้วยการ commit ผลลัพธ์ build (build/ directory) เข้า git แล้วให้ nginx serve เป็น static file ตรง — ไม่มี CI ที่ build ให้อัตโนมัติที่ยืนยันได้ในโค้ดที่ตรวจสอบ
15.1.3 · 2way Platform
| Repo | Deploy artifact | Base image | CI | หลักฐาน |
|---|---|---|---|---|
2way-api | 3 Dockerfile แยกตาม environment (Dockerfile, Dockerfile.prod, Dockerfile.uat) multi-stage | node:16-alpine (build) → node:18-alpine (runtime) — build stage EOL เมษายน 2024 | Bitbucket Pipelines (bitbucket-pipelines.yml) | 2way-api/index |
2way-batch | Dockerfile เดียว + nginx/conf.d/, nginx/conf/ ในตัว repo | node:16-alpine — EOL | ไม่พบ CI file | 2way-batch/index |
2way-line-service | Dockerfile เดียว + docker-compose.yml | UNVERIFIED (ไม่ได้ยืนยัน base image เจาะจง) | ไม่พบ CI file | 2way-line-service/index |
2way-vtrc-api | Dockerfile เดียว, ไม่มี multi-stage (รัน ts-node ตรงใน container ไม่ compile ก่อน) | node:18-alpine3.15 | ไม่พบ CI file | 2way-vtrc-api/index |
2way-meeting-backoffice | Next.js — build artifact ไม่ได้ตรวจ Dockerfile โดยละเอียดในรอบนี้ | UNVERIFIED | มี Sentry webpack plugin (next.config.js) — บ่งชี้ CI/build pipeline ที่ upload source map ให้ Sentry | 2way-meeting-backoffice/index |
15.1.4 · Domain Microservices
| Repo | Deploy artifact | Base image | หมายเหตุ | หลักฐาน |
|---|---|---|---|---|
benefit-api | Dockerfile (+ docker-compose.yml ที่ root, ไม่ได้อ่านรายละเอียด) | node:20-alpine + chromium/font libs (puppeteer) | yarn install --frozen-lockfile | benefit-api/index |
recruitment-api | Dockerfile | node:20-alpine + chromium/nmap/harfbuzz/freetype/nss | nmap ที่ติดตั้งไม่ทราบเหตุผล (UNVERIFIED) | recruitment-api/index |
ai-recruitment-api | Dockerfile | node:18-alpine + python3/make/g++/cairo-dev/pango-dev/giflib-dev/jpeg-dev/libpng-dev (native addon canvas) | เก่ากว่า benefit-api/recruitment-api 1 major version | ai-recruitment-api/index |
pms-api | Dockerfile | node:20-alpine + chromium/nmap/harfbuzz/freetype/nss (ชุดเดียวกับ benefit-api) | yarn install ไม่มี --frozen-lockfile — เสี่ยง version drift ระหว่าง build | pms-api/index |
chat-center-api | Dockerfile single-stage | node:18-alpine | ไม่มี EXPOSE, ไม่มี docker-compose.yml ใน repo — วิธี orchestrate จริง UNVERIFIED | chat-center-api/index |
job-scheduler-api | Dockerfile multi-stage + docker-compose.yml (join network vtrc-api_default) | node:16-alpine — EOL | EXPOSE 3000 ไม่ตรง PORT=9900 จริง | job-scheduler-api/index |
workflow-api | Dockerfile multi-stage | node:22-alpine + pnpm (corepack) | ใหม่สุดในทั้งแพลตฟอร์ม (Node 22, NestJS 10) | workflow-api/index |
sso-api | ไม่มี Dockerfile/docker-compose.yml/CI file ใดเลย | UNVERIFIED | repo ยังอยู่สถานะพัฒนาตอนต้น — ไม่มี .env/.env.example ด้วย | sso-api/index |
vtrc-common | Dockerfile multi-stage (develop→production) | node:18-alpine | รันเป็น container process ค้างไว้ฟัง port 9310 ไม่ใช่ npm package artifact | vtrc-common/02-core-pipeline |
15.1.5 · Meeting Platform
| Repo | Deploy artifact | หมายเหตุ | หลักฐาน |
|---|---|---|---|
meeting-vtrc-api | ไม่มี Dockerfile ในโฟลเดอร์ root — มี docker-compose.yml ที่สั่ง build: context: . ตรงจาก source | Dockerfile อาจถูก generate จากที่อื่น (CI) — UNVERIFIED; deploy บน on-prem host (hrappladmin user, mount volume /home/hrappladmin/storage/meeting) ไม่ใช่ GCR | meeting-vtrc-api/index |
meeting-backoffice | Next.js — ไม่ได้ตรวจ Dockerfile โดยละเอียด | มี @sentry/nextjs เต็มชุด — บ่งชี้ CI/build pipeline ที่ upload source map | meeting-backoffice/index |
meeting-backoffice-new | React (CRA) — ไม่ได้ตรวจ Dockerfile โดยละเอียด | ไม่มี Sentry เลย (ต่างจาก meeting-backoffice) | meeting-backoffice-new/index |
15.1.6 · Mobile
| Repo | Deploy artifact | หมายเหตุ |
|---|---|---|
vtrc-mobile | React Native build (Android APK/AAB + iOS IPA ผ่าน keystore/certificate ที่ commit ใน repo) | Android release keystore password หลุดเข้า git — ดู Volume 8 scorecard |
new-vtrc-mobile | React Native build เหมือนกัน แต่ยังเป็น early-stage (6 screen) | RSA private key เดียวกับ vtrc-mobile หลุดเข้า git |
vtrc-application-front | Static HTML — เก็บไฟล์ .ipa ที่ compile แล้วไว้ในตัว repo เอง (enterprise distribution ผ่าน itms-services) | ไม่ใช่ Cordova app ตามที่คาดไว้เดิม |
15.1.7 · OCR & Auxiliary
| Repo | Deploy artifact | หมายเหตุ | หลักฐาน |
|---|---|---|---|
vtrc-ocr-api | ไม่มี Dockerfile/docker-compose.yml/bitbucket-pipelines.yml ใดเลย | UNVERIFIED ว่าเคย deploy ขึ้น production จริงหรือไม่ — repo อยู่สถานะ scaffold (3 commit) | vtrc-ocr-api/index |
report-log | ไม่มี — เป็น script ที่รันด้วยมือ (node app.js) ไม่ใช่ service ที่ deploy ค้างไว้ | เป็น offline log consumer ไม่ใช่ service | report-log/02-core-pipeline |
recruitment-web | ไม่ได้ตรวจ Dockerfile โดยละเอียด — React CRA | เชื่อมกับ recruitment-api เป็น backend | recruitment-web/index |
interns_playground | ไม่เกี่ยว production — sandbox ฝึกฝนภายในทีม | ไม่ต้องมี deploy artifact จริง | interns_playground/index |
15.1.8 · สรุป pattern deploy ที่พบ
| Pattern | Repo ที่ใช้ | ความเสี่ยง |
|---|---|---|
| Multi-stage Docker build จาก source | 2way-api, job-scheduler-api, vtrc-common, workflow-api | มาตรฐาน — ความเสี่ยงต่ำสุด |
| Single-stage Docker build จาก source | benefit-api, recruitment-api, ai-recruitment-api, pms-api, chat-center-api, 2way-batch, 2way-line-service, 2way-vtrc-api | build time ยาวกว่า multi-stage (ไม่ trim dev dependency) |
| Docker image ที่ไม่ build จาก source (serve static ที่ commit ไว้แล้ว) | vtrc-backoffice (ยืนยัน), vtrc-backoffice-new/vtrc-rc-backoffice/vtrc-web (สันนิษฐานจาก pattern เดียวกัน) | build reproducibility ต่ำ — ไม่มีใครรู้ว่า build/ ที่ commit ตรงกับ src/ เวอร์ชันไหนจริง 100% ถ้าไม่เช็ค commit timestamp |
| ไม่มี deploy artifact ใดเลยในโค้ด | sso-api, vtrc-ocr-api | ไม่สามารถยืนยันว่า service เคย deploy ขึ้น production จริงหรือไม่ |
| Docker Compose ที่ build จาก context ตรง ไม่มี Dockerfile แยก | meeting-vtrc-api | ต้องพึ่งพา Docker Compose รู้วิธี build เอง — ไม่มี Dockerfile ให้ review แยกจาก compose |
ไม่พบ Kubernetes manifest, Helm chart, หรือ Terraform/infra-as-code ใดในทั้ง 25 repo ที่สำรวจ — ทุก deploy ที่ตรวจสอบได้เป็น Docker Compose หรือ Docker image ตรงบน VM/on-prem host เท่านั้น