Skip to content

Volume 4 · Web Frontends

กลุ่ม "Web Frontends" ประกอบด้วย 4 repositories ที่เป็นเว็บแอปสำหรับพนักงานและ HR/Admin ของสภากาชาดไทย ทั้งหมดคุยกับ backend เดียวกันคือ vtrc-api (Legacy Core — ดู Volume 3) ผ่าน GraphQL

ภาพรวม repo ในกลุ่ม

Repoผู้ใช้งานBranch canonicalไฟล์AntD versionสารบัญ
vtrc-webพนักงานทั่วไป (employee portal)master (default)v33 บท (condensed จาก v1)
vtrc-rc-backofficeHR/Adminmaster (default)v4.15.43 บท (condensed จาก v1)
vtrc-backofficeHR/Adminmaster (default; develop มี commit เพิ่มแต่ไม่ตรวจรอบนี้)769v4.15.4index + 4 บท
vtrc-backoffice-newHR/Adminuat (default master ว่างกว่า)773v4.15.4index + 4 บท

การแก้ไขจาก docs/index.md — ตารางกลุ่มแพลตฟอร์มหลักระบุ "AntD v3/v4" แบบรวม ๆ ให้ทั้งกลุ่ม แต่จากการตรวจสอบจริง มีเพียง vtrc-web เท่านั้นที่ใช้ AntD v3 ส่วนอีก 3 repo (vtrc-rc-backoffice, vtrc-backoffice, vtrc-backoffice-new) resolve ไปที่ AntD v4.15.4 ตรงกันหมด ควรแก้ไข claim ที่ docs/index.md ให้เจาะจงตามนี้

ความสัมพันธ์ระหว่าง 4 repo — สรุปจากหลักฐานโค้ด

vtrc-backoffice vs vtrc-backoffice-new — fork ไม่ใช่ rewrite

vtrc-backoffice-new คือ fork/copy โครงสร้างทั้งชุดของ vtrc-backoffice ที่พัฒนาต่อแยก repository กัน ไม่ใช่การเขียนใหม่:

  • package.json ทั้งสอง repo ระบุชื่อ "vtrc-backoffice" เหมือนกัน และ dependency ทุกตัวตรงกัน (React, AntD ^4.6.6 → resolve 4.15.4, Apollo v2, Recoil)
  • โครงสร้าง src/ ตรงกัน 99%+ — จากไฟล์ 700+ ไฟล์ต่างกันเพียง 3 ไฟล์ (ทั้งหมดมีเฉพาะใน -new: src/config/appllo_bk.js [ไฟล์เปล่า], src/graphql/mutations_api-prd.js, src/pages/Login/index_prd.js)
  • src/pages/ มี 41 module ชื่อตรงกันทุกตัวอักษร ยกเว้น -new ปิดเมนู "ข้อมูลองค์กร/หน่วยงาน" (WorkForce) และ "ยกเว้นการลงเวลา" (Attendance) ที่ vtrc-backoffice ยังเปิดอยู่ (vtrc-backoffice-new/src/config/routes.js:272-295,718-743, branch: uat) — ไม่มีหลักฐานเหตุผลทางธุรกิจ (UNVERIFIED)
  • ทั้งสอง repo ใช้ checkLinkURL() (window.location.href-based) ชี้ไปที่ vtrc-api domain เดียวกัน — ไม่มี backend ที่ต่างกัน
  • -new อัปเดต token-refresh flow เป็น query refreshTokenBO (comment: "change endpoint to support UAM") ขณะที่ vtrc-backoffice ยังใช้ refreshToken เดิม (vtrc-backoffice-new/src/config/apollo.js:63-80, branch: uat)
  • ทั้งสอง repo ใช้ device apiKey UUID เดียวกันทั้ง prod และ UAT — vtrc-api มองเป็น APP_TYPE เดียวกัน ไม่แยก device key

สรุป (มีหลักฐานสนับสนุนหนักแน่นแต่ไม่ยืนยัน deploy status จริง)vtrc-backoffice-new มีแนวโน้มเป็นเวอร์ชันที่กำลังพัฒนาต่อ ส่วน vtrc-backoffice เดิมอาจหยุดพัฒนาแล้วที่ fork point แต่ ไม่มีหลักฐานจากโค้ดว่า vtrc-backoffice ถูก decommission จริงหรือยัง (DNS/deploy สถานะปัจจุบัน — UNVERIFIED ต้องยืนยันกับทีม DevOps)

SSO handoff cross-repo — ยืนยันทั้งฝั่งส่งและฝั่งรับ

พบ finding ข้าม repo ที่สำคัญที่สุดของ volume นี้ — ทั้ง 3 backoffice apps (vtrc-rc-backoffice, vtrc-backoffice, vtrc-backoffice-new) เชื่อมกันด้วยกลไก SSO handoff ผ่าน URL:

  1. ฝั่งส่งvtrc-backoffice-new เรียก query checkEmployeeCU(empCode) หลัง login สำเร็จ เมื่อ status เป็น false จะ clear local storage และ hard-redirect ไปที่ vtrc-rc-backoffice ด้วย path /pathLogin/:accessToken/:refreshToken — ส่ง token จริงผ่าน URL (vtrc-backoffice-new/src/pages/Login/index.js:83-103, branch: uat)
  2. ฝั่งรับvtrc-rc-backoffice/src/containers/App/index.js:24 มี route /pathLogin/:token/:refreshToken (component PathLogin) รับ token จาก URL params แล้วเก็บลง storage โดยตรง
  3. vtrc-backoffice (ตัวเดิม ไม่มีคำ new) ไม่มี logic ฝั่งส่งนี้เลย — ยืนยันด้วย full-text search string checkEmployeeCU ไม่พบใน vtrc-backoffice/src
  4. vtrc-web ไม่มี SSO handoff pattern นี้ — เป็น pattern เฉพาะกลุ่ม backoffice 3 แอป ไม่ใช่ทุกแอปในกลุ่ม Web Frontends
  5. ทั้ง 3 backoffice apps ใช้ device apiKey UUID เดียวกันต่อ environment (คนละค่าระหว่าง prod/UAT แต่ทั้ง 3 แอปใช้ค่าเดียวกันในแต่ละ environment)

ผลกระทบด้านความปลอดภัย — การส่ง access/refresh token ผ่าน URL path (ไม่ใช่ header/body) ทำให้ token หลุดไปอยู่ใน browser history, server access log, และ referrer header ได้ ถือเป็นช่องโหว่ร่วมที่ต้องแก้ทั้ง 2 ฝั่ง (ผู้ส่งและผู้รับ) พร้อมกัน — ดู SEC-BONEW-01 (ฝั่งส่ง, vtrc-backoffice-new) และ debt ที่เกี่ยวข้องใน vtrc-rc-backoffice/03-state-security-scorecard.md (ฝั่งรับ)

Scorecard สรุปรวมทั้ง 4 repo

RepoCriticalHighMediumLow
vtrc-webดู scorecard (S-1…S-8 security, P-1…P-7 performance)
vtrc-rc-backoffice3420
vtrc-backoffice0281
vtrc-backoffice-new1161

รายละเอียดเต็มของแต่ละ debt item อยู่ใน scorecard ของแต่ละ repo (04-scorecard.md หรือ 03-state-security-scorecard.md) และจะถูกรวมเข้า Volume 17 · Technical Debt Register ทั้งหมด — รายการ Critical จะเข้า Volume 18 · Security Review Findings เพิ่มเติม

อ้างอิงข้าม