2.1 · 7 กลุ่มแพลตฟอร์ม
docs/index.md มีตารางกลุ่มแพลตฟอร์มแบบย่อสำหรับผู้ที่เพิ่งเปิดคู่มือ — บทนี้ขยายตารางนั้นให้ละเอียดขึ้น พร้อมแก้ไข claim ที่การตรวจสอบจริงในระหว่างเขียน Volume 3-10 พบว่าไม่ตรงกับที่ระบุไว้แต่เดิม (ทั้งใน docs/index.md และในบางจุดของ Canonical Truths รุ่นแรก)
2.1.1 · Legacy Core
| Repository | vtrc-api, cu-central-api, centralize-api |
| Stack จริง | Node.js + Express + Apollo GraphQL + Sequelize + MariaDB (vtrc-api) / Sequelize + MSSQL + LDAP/AD (cu-central-api) / NestJS + TypeORM + MSSQL (centralize-api) |
| บทบาท | แกนกลางของแพลตฟอร์มมาตั้งแต่ก่อนแยกเป็น microservices — ทุก request จาก Web Frontends และ Mobile ไหลผ่าน vtrc-api ก่อนไปถึงข้อมูล HR จริงที่ cu-central-api เป็นเจ้าของ |
| จุดที่ต้องระวัง | โฟลเดอร์ centralize/ และ env END_POINT_CENTRALIZE ใน vtrc-api ชี้ไป cu-central-api (Node + GraphQL) ไม่ใช่ NestJS centralize-api (REST) แม้ชื่อจะคล้ายกันมาก — centralize-api เองยังไม่มีหลักฐาน caller ที่ยืนยันได้ (debt E-08) |
รายละเอียดเต็มที่ Volume 3 · Legacy Core
2.1.2 · Web Frontends
| Repository | vtrc-web, vtrc-rc-backoffice, vtrc-backoffice, vtrc-backoffice-new |
| Stack จริง | React 16 + Webpack/CRA + Apollo Client v2 — AntD ไม่ใช่ "v3/v4" แบบรวมกลุ่มตามที่ docs/index.md เคยระบุ: มีเพียง vtrc-web ที่ใช้ AntD v3 ส่วนอีก 3 repo (vtrc-rc-backoffice, vtrc-backoffice, vtrc-backoffice-new) resolve เป็น v4.15.4 ตรงกันหมด |
| บทบาท | เว็บแอปสำหรับพนักงาน (vtrc-web) และ HR/Admin (อีก 3 repo) คุยกับ backend เดียวกันคือ vtrc-api ผ่าน GraphQL |
| จุดที่ต้องระวัง | vtrc-backoffice-new เป็น fork ของ vtrc-backoffice ไม่ใช่ rewrite — โครงสร้าง src/ ตรงกัน 99%+ (ต่างกันแค่ 3 ไฟล์จาก 700+ ไฟล์) ทั้งสองยังมีแนวโน้ม live คู่กัน (deploy status จริง — UNVERIFIED) |
รายละเอียดเต็มที่ Volume 4 · Web Frontends
2.1.3 · 2way Platform
| Repository | 2way-api, 2way-batch, 2way-line-service, 2way-meeting-backoffice, 2way-vtrc-api |
| Stack จริง | ไม่ใช่ NestJS ล้วนตามที่ระบุไว้เดิม — เป็นระบบสองยุคซ้อนกัน: 2way-api/2way-batch/2way-line-service เป็น NestJS 9 + TypeORM + MSSQL (จัดการเฉพาะบาง feature เช่น survey/announce admin CRUD) ส่วน 2way-vtrc-api เป็น Express.js + Sequelize (MSSQL) legacy monolith ที่เป็น backend หลักจริงที่ frontend ฝั่งพนักงานเรียกใช้งาน — 2way-meeting-backoffice เป็น Next.js 12 + React 17 + MUI |
| บทบาท | ฟีเจอร์ "สื่อสารสองทาง" ระหว่าง HR/แอดมินกับพนักงานผ่าน LINE OA — ประกาศ, แบบสำรวจ, เรื่องร้องเรียน, incident, FAQ, chat center |
| จุดที่ต้องระวัง | ชื่อ 2way-meeting-backoffice ทำให้เข้าใจผิดว่าเกี่ยวกับระบบประชุม — ไม่เกี่ยวเลย; 2way-api เชื่อม 2way-line-service ด้วย hardcoded IP ไม่ผ่าน DNS |
รายละเอียดเต็มที่ Volume 5 · 2way Platform
2.1.4 · Domain Microservices
| Repository | benefit-api, chat-center-api, job-scheduler-api, workflow-api, recruitment-api, ai-recruitment-api, pms-api, sso-api, vtrc-common |
| Stack จริง | NestJS 9 + TypeORM/MSSQL เป็นหลัก ยกเว้น ai-recruitment-api ที่เป็น Express — ไม่มี MongoDB ในกลุ่มนี้ ต่างจากที่ docs/index.md เคยระบุว่าใช้ "Mongoose/Sequelize" รวมกลุ่ม |
| บทบาท | แยกออกมาจาก legacy core เพื่อรับผิดชอบงาน HR เฉพาะด้าน (สวัสดิการ, สรรหา, performance, แชท) |
| จุดที่ต้องระวัง | vtrc-common ไม่ใช่ shared npm library — เป็น standalone HTTP microservice (Dockerfile + .env + MSSQL DB ของตัวเอง, พอร์ต 9310) ไม่มี repo ใดประกาศเป็น npm dependency; workflow-api เป็นข้อยกเว้นเดียวที่ไม่มี global JWT guard บังคับจริง |
รายละเอียดเต็มที่ Volume 6 · Domain Microservices
2.1.5 · Meeting Platform
| Repository | meeting-vtrc-api, meeting-backoffice, meeting-backoffice-new |
| Stack จริง | ไม่ใช่ "Express + Mongoose" ตามที่ docs/index.md เคยระบุ — meeting-vtrc-api เป็น Express + TypeScript + Sequelize + MSSQL; mongoose เป็น dead dependency ที่ comment ทิ้งทั้งไฟล์ — meeting-backoffice เป็น Next.js 12, meeting-backoffice-new เป็น CRA |
| บทบาท | บริหารการประชุม — 1 backend (meeting-vtrc-api) + 2 frontend backoffice ที่ทำหน้าที่เดียวกันแต่ deploy คนละวิธี |
| จุดที่ต้องระวัง | meeting-backoffice-new ไม่ใช่ เวอร์ชันที่มาแทน meeting-backoffice — เป็นแอปหน้าที่เดียวกันที่ถูก port จาก Next.js ไปเป็น CRA เพื่อฝัง (embed) เป็น static sub-app เข้าไปใน vtrc-backoffice(-new) แทนที่จะรันเป็น service เดี่ยว — หลักฐานชี้ขาดคือ shasum ของไฟล์ build ตรงกันเป๊ะระหว่าง 3 repo |
รายละเอียดเต็มที่ Volume 7 · Meeting Platform
2.1.6 · Mobile
| Repository | vtrc-mobile, new-vtrc-mobile, vtrc-application-front |
| Stack จริง | React Native 0.63.2 (vtrc-mobile, แอปหลักที่ใช้งานจริง 121 screen) / React Native 0.78.0 + React 19 (new-vtrc-mobile, rewrite ระยะเริ่มต้น 6 screen) / Static HTML/CSS ล้วน ไม่มี framework (vtrc-application-front) |
| บทบาท | แอปมือถือหลักของพนักงาน + โปรเจกต์ rewrite ระยะเริ่มต้น + หน้า landing page แจกลิงก์ติดตั้งแอป |
| จุดที่ต้องระวัง | vtrc-application-front ไม่ใช่ Cordova app ตามที่เคยคาดไว้ — เป็นหน้า static HTML download-center ที่มีไฟล์ .ipa compile แล้ว commit ไว้ในตัว repo เอง; ทั้งสองแอปมือถือไม่มี runtime endpoint switching แบบ checkLinkURL() ของเว็บ — ต้อง comment/uncomment source แล้ว rebuild ทุกครั้งที่สลับ environment |
รายละเอียดเต็มที่ Volume 8 · Mobile
2.1.7 · OCR & Auxiliary
| Repository | vtrc-ocr-api, report-log, recruitment-web, interns_playground |
| Stack จริง | Express + Swagger (vtrc-ocr-api) / Node.js script (report-log, ไม่ใช่ HTTP service) / React 18 (CRA) + Ant Design 5 (recruitment-web) / Express + TypeScript + PostgreSQL (interns_playground) |
| บทบาท | บริการเสริมที่ไม่ใช่แกนกลาง — OCR ที่ยังเป็น mock ทั้งหมด, สคริปต์วิเคราะห์ log แบบ offline, เว็บสมัครงานสาธารณะ, sandbox ฝึกฝนของทีม i3dev |
| จุดที่ต้องระวัง | interns_playground ไม่ใช่ production — ไม่มี reference ถึงระบบ VTRC ใดในโค้ดเลย; ความเสี่ยงสูงสุดของกลุ่มนี้คือ PII/secret รั่วผ่าน git (report-log มีเลขบัตรประชาชนจริงใน log ที่ commit ไว้, recruitment-web มี production encryption key commit ไว้) |
รายละเอียดเต็มที่ Volume 9 · OCR & Auxiliary