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) | — | v3 | 3 บท (condensed จาก v1) |
vtrc-rc-backoffice | HR/Admin | master (default) | — | v4.15.4 | 3 บท (condensed จาก v1) |
vtrc-backoffice | HR/Admin | master (default; develop มี commit เพิ่มแต่ไม่ตรวจรอบนี้) | 769 | v4.15.4 | index + 4 บท |
vtrc-backoffice-new | HR/Admin | uat (default master ว่างกว่า) | 773 | v4.15.4 | index + 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→ resolve4.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-apidomain เดียวกัน — ไม่มี backend ที่ต่างกัน -newอัปเดต token-refresh flow เป็น queryrefreshTokenBO(comment: "change endpoint to support UAM") ขณะที่vtrc-backofficeยังใช้refreshTokenเดิม (vtrc-backoffice-new/src/config/apollo.js:63-80, branch: uat)- ทั้งสอง repo ใช้ device
apiKeyUUID เดียวกันทั้ง 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:
- ฝั่งส่ง —
vtrc-backoffice-newเรียก querycheckEmployeeCU(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) - ฝั่งรับ —
vtrc-rc-backoffice/src/containers/App/index.js:24มี route/pathLogin/:token/:refreshToken(componentPathLogin) รับ token จาก URL params แล้วเก็บลง storage โดยตรง vtrc-backoffice(ตัวเดิม ไม่มีคำ new) ไม่มี logic ฝั่งส่งนี้เลย — ยืนยันด้วย full-text search stringcheckEmployeeCUไม่พบในvtrc-backoffice/srcvtrc-webไม่มี SSO handoff pattern นี้ — เป็น pattern เฉพาะกลุ่ม backoffice 3 แอป ไม่ใช่ทุกแอปในกลุ่ม Web Frontends- ทั้ง 3 backoffice apps ใช้ device
apiKeyUUID เดียวกันต่อ 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
| Repo | Critical | High | Medium | Low |
|---|---|---|---|---|
vtrc-web | ดู scorecard (S-1…S-8 security, P-1…P-7 performance) | |||
vtrc-rc-backoffice | 3 | 4 | 2 | 0 |
vtrc-backoffice | 0 | 2 | 8 | 1 |
vtrc-backoffice-new | 1 | 1 | 6 | 1 |
รายละเอียดเต็มของแต่ละ debt item อยู่ใน scorecard ของแต่ละ repo (04-scorecard.md หรือ 03-state-security-scorecard.md) และจะถูกรวมเข้า Volume 17 · Technical Debt Register ทั้งหมด — รายการ Critical จะเข้า Volume 18 · Security Review Findings เพิ่มเติม
อ้างอิงข้าม
- Volume 3 · Legacy Core —
vtrc-apibackend ที่ทั้ง 4 frontend คุยด้วย - Canonical Truths —
checkLinkURL()endpoint-resolution pattern, branch topology - Volume 17 · Technical Debt Register — debt IDs ทั้งหมดของ volume นี้