Skip to content

Volume 7 · Meeting Platform

เล่มนี้รวบรวม 3 repository ที่ประกอบกันเป็นระบบบริหารการประชุมของ VTRC — 1 backend และ 2 frontend back office ที่ทำหน้าที่คล้ายกันแต่ deploy คนละวิธี

RepoBranch canonicalไฟล์ (git ls-files)หน้าที่
meeting-vtrc-apiprod-meeting-vtrc-api180Backend เดียวของระบบประชุม — Express + TypeScript + Sequelize/MSSQL
meeting-backofficeUAT (default master มีโค้ดน้อยกว่า)72Back office ตั้งค่ากลุ่ม/ผู้อนุมัติ — Next.js 12, deploy เป็น service เดี่ยว
meeting-backoffice-newUAT (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 แต่หลักฐานจากโค้ดชี้ไปทางอื่น

หลักฐานที่ใช้สรุป

  1. Timelinemeeting-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 ด่วน" มากกว่างานพัฒนาต่อเนื่อง
  2. โค้ดเหมือนกันแทบทุกไฟล์ — 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_* vs REACT_APP_*) — ดู 7.3.1 และ 7.3.2
  3. วิธี deploy ต่างกันโดยสิ้นเชิง
    • meeting-backoffice: docker-compose.yml ชี้ image จริงบน gcr.io/vtrc-nonprod/meeting-backoffice:latest, ผูก network uat-vtrc-backoffice-network, mount path /meetingbo — deploy เป็น service เดี่ยวจริงจัง
    • meeting-backoffice-new: docker-compose.yml เป็น local dev config เปล่า ๆ (service meetingbodev1, ไม่มี image registry, ไม่มี network) — ไม่ใช่วิธี deploy จริง
  4. หลักฐานชี้ขาด — hash ไฟล์ build ตรงกัน — ไฟล์ meeting-backoffice-new/build/static/js/main.633a23c6.js ที่ commit ไว้ใน repo (ผลจาก react-scripts build) มี shasum ae9f070679b81ea977bf6ea091b7b5e7da0ffd63 ตรงกันเป๊ะ กับไฟล์ vtrc-backoffice/meeting/static/js/main.633a23c6.js และ vtrc-backoffice-new/meeting/static/js/main.633a23c6.js (ตรวจสอบด้วย shasum เมื่อ 2026-07-13) — vtrc-backoffice commit โฟลเดอร์ meeting/ นี้ด้วย commit เดียวชื่อ "update meeting" เมื่อ 2022-11-30 21:12:59 (vtrc-backoffice git log) ซึ่งอยู่ห่างจาก commit ล่าสุดของ meeting-backoffice-new เอง (21:08:49 วันเดียวกัน) เพียง 4 นาที — ยืนยันว่ามีคน build meeting-backoffice-new แล้ว copy ผลลัพธ์เข้า vtrc-backoffice/meeting/ (และ vtrc-backoffice-new/meeting/) ด้วยมือในเซสชันเดียวกัน
  5. package.json name/homepage สนับสนุนเรื่องนี้meeting-backoffice-new/package.json:5 ตั้ง "homepage": "/meeting-backoffice" ตรงกับ path ที่พบ embed จริง ในขณะที่ path basename ที่ 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-api221014
meeting-backoffice0369
meeting-backoffice-new0145

ประเด็นที่กระทบมากกว่า 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-api commit .envdev/.envuat/.envprod, meeting-backoffice commit .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 ที่: