Volume 7 · Meeting Platform
เล่มนี้รวบรวม 3 repository ที่ประกอบกันเป็นระบบบริหารการประชุมของ VTRC — 1 backend และ 2 frontend back office ที่ทำหน้าที่คล้ายกันแต่ deploy คนละวิธี
| Repo | Branch canonical | ไฟล์ (git ls-files) | หน้าที่ |
|---|---|---|---|
meeting-vtrc-api | prod-meeting-vtrc-api | 180 | Backend เดียวของระบบประชุม — Express + TypeScript + Sequelize/MSSQL |
meeting-backoffice | UAT (default master มีโค้ดน้อยกว่า) | 72 | Back office ตั้งค่ากลุ่ม/ผู้อนุมัติ — Next.js 12, deploy เป็น service เดี่ยว |
meeting-backoffice-new | UAT (default master ว่างเปล่า) | 56 | หน้าที่เดียวกับ meeting-backoffice — Create React App, ฝังเป็น static sub-app ใน vtrc-backoffice |
จำนวนไฟล์ที่ตรวจสอบจริงตรงกับที่ระบุไว้ตอนมอบหมายงานทั้ง 3 repo (180/72/56) — ไม่มี discrepancy ด้าน branch หรือ file count
Cross-reference กับ 2way Platform (Volume 5)
meeting-vtrc-api เรียกออกไปหา service ที่ตัวเอง query ชื่อ fetchListEmployeeForTwoWay/getUserByCondition ("TwoWay" employee directory) เพื่อแปลง userID เป็นชื่อ-นามสกุล-อีเมล (ดู 7.1.3) เช่นเดียวกับ meeting-backoffice/meeting-backoffice-new ที่เรียก REACT_APP_2WAY_API/NEXT_PUBLIC_APP_2WAY_API ตรงจาก frontend — ทั้งหมดนี้เป็น outbound call ไปหา "2way" service ไม่ใช่หลักฐานว่า 2way-meeting-backoffice เรียกเข้ามาที่ meeting-vtrc-api
ได้ grep หา reference คำว่า meeting-vtrc-api / /meeting/secure / MEETING_API ใน 2way-meeting-backoffice แล้ว ไม่พบหลักฐานใด ๆ — ความสัมพันธ์ทิศทางนั้น (2way-meeting-backoffice → meeting-vtrc-api) ยังเป็น UNVERIFIED ทีม Volume 5 ควรตรวจสอบเพิ่มจากฝั่ง 2way-meeting-backoffice เองว่ามีการเรียกเข้ามาที่ path /meeting/... ของ meeting-vtrc-api หรือไม่
meeting-backoffice vs meeting-backoffice-new — ทั้งสองไม่ใช่ "เวอร์ชันเก่า/ใหม่ของกันและกัน" ตรง ๆ แต่เป็นการ deploy คนละรูปแบบของแอปหน้าที่เดียวกัน
ชื่อ -new ทำให้ดูเหมือนเป็น successor ของ meeting-backoffice แต่หลักฐานจากโค้ดชี้ไปทางอื่น
หลักฐานที่ใช้สรุป
- Timeline —
meeting-backoffice(Next.js) เริ่ม 2022-07-26 มี 25 commit ต่อเนื่องถึง 2022-11-29 พร้อม ticket reference จริง (VTMM-119,VTMM-120,VTMM-121) ส่วนmeeting-backoffice-new(CRA) เริ่ม วันรุ่งขึ้นทันที คือ 2022-11-30 มีแค่ 6 commit ข้อความกว้าง ๆ ("update", "update for BAS UAT") จบภายในวันเดียว — ลักษณะเหมือนงาน "port ด่วน" มากกว่างานพัฒนาต่อเนื่อง - โค้ดเหมือนกันแทบทุกไฟล์ — component/layout/types ของทั้งสอง repo ชื่อไฟล์และโครงสร้างตรงกันเกือบ 100% (
Sidebar.tsx,Navbar.tsx,DataGrid.tsx,ListApprover.tsx,Listsgroup.tsx,InputSelect.tsx,CommonButton.tsxฯลฯ) endpoint ที่เรียกก็ตรงกันทุกตัว ต่างกันแค่ prefix env var (NEXT_PUBLIC_*vsREACT_APP_*) — ดู 7.3.1 และ 7.3.2 - วิธี deploy ต่างกันโดยสิ้นเชิง —
meeting-backoffice:docker-compose.ymlชี้ image จริงบนgcr.io/vtrc-nonprod/meeting-backoffice:latest, ผูก networkuat-vtrc-backoffice-network, mount path/meetingbo— deploy เป็น service เดี่ยวจริงจังmeeting-backoffice-new:docker-compose.ymlเป็น local dev config เปล่า ๆ (servicemeetingbodev1, ไม่มี image registry, ไม่มี network) — ไม่ใช่วิธี deploy จริง
- หลักฐานชี้ขาด — hash ไฟล์ build ตรงกัน — ไฟล์
meeting-backoffice-new/build/static/js/main.633a23c6.jsที่ commit ไว้ใน repo (ผลจากreact-scripts build) มี shasumae9f070679b81ea977bf6ea091b7b5e7da0ffd63ตรงกันเป๊ะ กับไฟล์vtrc-backoffice/meeting/static/js/main.633a23c6.jsและvtrc-backoffice-new/meeting/static/js/main.633a23c6.js(ตรวจสอบด้วยshasumเมื่อ 2026-07-13) —vtrc-backofficecommit โฟลเดอร์meeting/นี้ด้วย commit เดียวชื่อ "update meeting" เมื่อ 2022-11-30 21:12:59 (vtrc-backofficegit log) ซึ่งอยู่ห่างจาก commit ล่าสุดของmeeting-backoffice-newเอง (21:08:49 วันเดียวกัน) เพียง 4 นาที — ยืนยันว่ามีคน buildmeeting-backoffice-newแล้ว copy ผลลัพธ์เข้าvtrc-backoffice/meeting/(และvtrc-backoffice-new/meeting/) ด้วยมือในเซสชันเดียวกัน package.jsonname/homepage สนับสนุนเรื่องนี้ —meeting-backoffice-new/package.json:5ตั้ง"homepage": "/meeting-backoffice"ตรงกับ path ที่พบ embed จริง ในขณะที่ pathbasenameที่ asset-manifest ของไฟล์ที่ฝังอยู่ในvtrc-backoffice/meeting/asset-manifest.json:3-8ก็ชี้/meeting-backoffice/...เหมือนกันทุกจุด
ข้อสรุป
meeting-backoffice-new ไม่ใช่ เวอร์ชันที่มาแทน meeting-backoffice — ทั้งสองเป็นแอปหน้าที่เดียวกัน (ตั้งค่ากลุ่ม/ผู้อนุมัติของระบบประชุม) ที่ถูก port จาก Next.js ไปเป็น CRA เพื่อวัตถุประสงค์การฝัง (embed) เป็น static sub-app เข้าไปใน vtrc-backoffice/vtrc-backoffice-new (legacy backoffice หลัก) ที่ path /meeting-backoffice/ แทนที่จะรันเป็น service เดี่ยวเหมือน meeting-backoffice เดิมที่รันที่ /meetingbo
ทั้งสองน่าจะยัง live คู่กันในคนละบทบาท ไม่ใช่ตัวใดตัวหนึ่งถูกเลิกใช้ไปแล้ว:
meeting-backoffice(Next.js,/meetingbo) — service เดี่ยว รับ token redirect จากระบบภายนอกผ่าน[token].tsxเป็นทางเข้าหลักmeeting-backoffice-new(CRA,/meeting-backoffice) — ฝังอยู่ใน legacy backoffice หลัก (vtrc-backoffice,vtrc-backoffice-new) น่าจะเป็นทางเข้าสำหรับผู้ใช้ที่ login เข้า backoffice หลักอยู่แล้ว
ทั้งสองมี commit ล่าสุดปี 2022 เหมือนกัน (ไม่มีการอัปเดตต่อเนื่องหลังจากนั้นทั้งคู่) — UNVERIFIED ว่าปัจจุบัน (2026) ทั้งสองยังถูกเข้าถึงจริงในโปรดักชันหรือถูกเลิกใช้ไปแล้วทั้งคู่ เพราะ workspace นี้ไม่มีข้อมูล deploy log/analytics ให้ตรวจสอบ
พบ 1 ปมที่ยังไขไม่ออก — commit ข้อความ "update for BAS UAT" (meeting-backoffice-new, 2022-11-30) ไม่พบความหมายของคำว่า "BAS" ในโค้ดหรือ config ใด ๆ ของทั้ง 3 repo ในสโคปนี้ — UNVERIFIED ว่า "BAS" หมายถึงอะไร (อาจเป็นชื่อ environment/ทีม/ระบบภายในที่ไม่ปรากฏหลักฐานในสโคปนี้)
Scorecard summary (รายละเอียดเต็มอยู่ในแต่ละ repo)
| Repo | 🔴 Critical | 🟡 High | 🟢 Medium | รวม |
|---|---|---|---|---|
meeting-vtrc-api | 2 | 2 | 10 | 14 |
meeting-backoffice | 0 | 3 | 6 | 9 |
meeting-backoffice-new | 0 | 1 | 4 | 5 |
ประเด็นที่กระทบมากกว่า 1 repo:
- X-API-Key แบบ static ผูกกันสองฝั่ง (
01010101) —meeting-backoffice/src/pages/[token].tsx:20(ฝัง client bundle) ↔meeting-vtrc-api/.envprod:1(ฝัง env ที่ commit เข้า git) — รั่วสองทางพร้อมกัน - secret/committed-env เป็น pattern ซ้ำ —
meeting-vtrc-apicommit.envdev/.envuat/.envprod,meeting-backofficecommit.env— ไม่มี repo ใดใน 3 ตัวนี้ที่ทำ secret management แบบแยกจาก git - path/basePath ผูกตายตัวตอน build ทั้ง 2 frontend (
basePathของ Next.js,homepage/PUBLIC_URLของ CRA) — ไม่มี runtime env switching แบบcheckLinkURL()ที่ legacy frontends อื่นในแพลตฟอร์มใช้ (ดูdocs/_audit-method/canonical-truths.md)
ดูรายละเอียด debt ID ทั้งหมดพร้อม file:line ที่: