Skip to content

7.2.4 · Scorecard — meeting-backoffice

branch: UAT

Legend:

  • 🔴 Critical = active security/data-loss/availability risk
  • 🟡 High = correctness/maintainability hazard, real impact
  • 🟢 Medium = friction/hygiene, ยังไม่เป็นอันตรายทันที

ตารางสรุป

IDSeverityคำอธิบายหลักฐานการแก้ที่เสนอ
SEC-MTBO-01🟡 HighX-API-Key: "01010101" hardcode ใน frontend bundlepages/[token].tsx:20ย้าย secret ออกจาก client; ใช้ BFF/API route
SEC-MTBO-02🟡 High.env (UAT API URLs + placeholders) commit ใน git.env:1-16.gitignore + .env.example; อย่า commit ค่าจริง
SEC-MTBO-03🟡 HighToken เก็บ localStorage; หน้า CRUD ไม่แนบ token — UI ไม่มี route guardauth.tsx:5-11, _app.tsx:20-35ออกแบบ auth จริง (middleware + Authorization ทุก /secure) หรือยอมรับว่าพึ่ง backend อย่างเดียวแล้ว document ให้ชัด
CORR-MTBO-01🟡 HighgetStaticProps list ไม่มี revalidate — ข้อมูลค้างตาม buildpages/index.tsx:29-48, listapproverISR หรือ getServerSideProps / client fetch
CORR-MTBO-02🟢 MediumDockerfile รัน yarn dev ไม่ใช่ production build+startDockerfile:17,20multi-stage yarn build + yarn start
QUAL-MTBO-01🟢 Mediumpackage name reportmonitor ไม่ตรงแอปpackage.json:2-3เปลี่ยนชื่อให้ตรง
QUAL-MTBO-02🟢 MediumignoreBuildErrors: truenext.config.js:13-18ปิดแล้วไล่ type error
QUAL-MTBO-03🟢 MediumSidebar ไม่มีลิงก์ editgroup / createapproverSidebar.tsx:52-59เพิ่มเมนูหรือ document ว่าเข้าจากปุ่มใน list
QUAL-MTBO-04🟢 Mediumlocales มี de ไม่มี th; UI ไทย hardcode ใน JSXpublic/locales/de/, Sidebar.tsx:46ตัด locale ไม่ใช้ / ย้ายข้อความเข้า i18n
OBS-MTBO-01🟡 HighSentry.init comment ออกทั้ง client/server แต่ยังมี @sentry/nextjs + withSentryConfig + _error capture — สถานะ observability คลุมเครือsentry.client.config.js:5-17, next.config.js:38, _error.jsเปิด init + DSN จาก env หรือลบ dependency/plugin ให้สอดคล้อง
OBS-MTBO-02🟢 Mediumไม่มี runtime env switch — เปลี่ยน backend ต้อง rebuild.env:13-14, ไม่มี checkLinkURLdocument ชัดใน runbook; หรือ inject ตอน container start

สรุปภาพรวม

  1. หน้าที่จริง = group + approver admin ของ meeting-vtrc-api
  2. Auth ฝั่ง UI อ่อน — มีแค่ bypass หน้า [token] แล้วเก็บ token ที่แทบไม่ถูกใช้ต่อ
  3. Sentry บน UAT ไม่ได้ init ใน config มาตรฐาน
  4. Docker บน UAT รัน dev server; compose เป็น local build meetingbodev1 ไม่ใช่ gcr image
  5. อย่าสับสนกับ meeting-backoffice-new ซึ่งเป็นตัวที่ embed ใน legacy backoffice
  6. Canonical branch ของเอกสารเล่มนี้คือ UAT — อย่าอ่านจาก master ที่เบาบางกว่า

Checklist ก่อนแก้โค้ด

  1. ยืนยันว่าแก้ repo ถูกตัว (Next /meetingbo vs CRA /meeting-backoffice)
  2. ถ้าแตะ list หน้าแรก — จำว่าเป็น SSG
  3. ถ้าแตะ auth — ตรวจทั้ง frontend key และ meeting-vtrc-api redirectbypass
  4. หลังเปลี่ยน .env ต้อง rebuild
  5. อย่าอ้าง Sentry ทำงานจนกว่าจะ uncomment init และตรวจ DSN

Debt ที่โยงข้าม repo

Debt ฝั่งนี้โยงไป
SEC-MTBO-01 (X-API-Key ใน bundle)ต้องสอดคล้องกับ API_KEY ใน meeting-vtrc-api env
CORR-MTBO-01 (SSG stale list)ผู้ใช้เห็นข้อมูลคนละชุดกับ meeting-backoffice-new ที่ fetch ตอน runtime
sourceDB hardcode dbHRMI_RC_C_repต้องตรง schema/HR DB ที่ meeting API คาดหวัง

ถ้าแก้ key หรือ path /secure/* ฝั่ง API โดยไม่ sync UI ทั้งสองตัว (Next + CRA embed) จะได้พฤติกรรมแตกกันโดยเงียบ

เอกสาร twin: meeting-backoffice-new · backend: meeting-vtrc-api