Skip to content

A.4 Debt ID index — cross-reference ของ debt

cross-reference ระหว่าง debt ID กับ volume ที่อ้างถึง debt นั้น

แหล่งความจริงของชื่อ/คำอธิบายสั้น = Volume 14 (docs/volume-15-tech-debt/) — ตารางนี้ต้อง MATCH ชื่อใน Vol 14 เสมอ

วิธีใช้

เมื่อแก้ debt ตัวใดตัวหนึ่งใน codebase ให้ดูตารางนี้เพื่อหา volume ทั้งหมดที่อ้างถึง — ต้องอัปเดต volume เหล่านั้นด้วย (ตาม correction protocol ใน A.8)

Security debt (SEC-1 ถึง SEC-11)

IDคำอธิบายสั้น (ตาม Vol 14)ความรุนแรงอ้างถึงใน volume
SEC-1Command injection ผ่าน qpdf execSyncCritical2.8, 3.7, 3.10, 9.6, 14.1, 15.0, 15.2
SEC-2GraphQL playground + introspection เปิดใน productionCritical3.2, 9.5, 14.1, 15.2
SEC-3Production device keys เก็บใน source codeCritical2.8, 3.10, 9.5, 14.1, 15.2
SEC-4JWT_SECRET เป็นค่า default 'secret'Critical3.2, 9.5, 14.1, 15.2
SEC-5centralize-api CORS origin '*'Critical5.5, 9.5, 14.1, 15.2
SEC-6trustServerCertificate: true บน MSSQLHigh5.5, 9.5, 14.2
SEC-7axois typosquat และ axios หายจาก node_modulesHigh4.8, 14.2, 15.2
SEC-8PII ใน URL pathHigh3.10, 9.5, 14.2
SEC-9typosquat และ placeholder packages ใน dependenciesHigh14.2, 15.2
SEC-10ไม่มี rate limiting ทุก endpointHigh9.5, 14.2
SEC-11GCP service account key commit ใน repoCritical2.8, 14.1, 15.2

Performance debt (PERF-1 ถึง PERF-8)

IDคำอธิบายสั้น (ตาม Vol 14)ความรุนแรงอ้างถึงใน volume
PERF-1execSync ใน request handlerCritical2.8, 3.7, 3.10, 14.3, 15.2
PERF-2Apollo fetchPolicy 'no-cache' ทุก queryHigh6.3, 7.3, 14.3, 15.3
PERF-3Session lookup ด้วย JSON LIKEHigh8.10, 8.11, 14.3, 15.3, 15.7
PERF-4N+1 RBAC query ทุก fieldHigh3.10, 9.4, 14.3
PERF-5Approval-chain fetch ข้าม service แบบ synchronousHigh3.10, 14.3
PERF-6God controller 3,179 บรรทัดHigh3.10, 11.3, 14.3, 15.4
PERF-7phpMyAdmin เปิดสู่สาธารณะบน port 8093Critical12.4, 14.1, 14.3, 15.2, 15.8
PERF-8network_mode: host ใน docker-composeHigh12.4, 14.3, 15.8

Correctness debt (CORR-1 ถึง CORR-9)

IDคำอธิบายสั้น (ตาม Vol 14)ความรุนแรงอ้างถึงใน volume
CORR-1Cross-schema write ไม่มี transaction boundaryCritical3.10, 8.10, 8.11, 14.4, 15.4, 15.7
CORR-2Transaction ถูก swallow ใน session repositoryCritical8.10, 8.11, 14.4, 15.3
CORR-3responError throw เสมอ แต่ caller เขียนต่อHigh3.10, 14.4
CORR-4ตรรกะ RBAC ไม่สม่ำเสมอCritical3.10, 8.10, 9.4, 9.11, 14.4, 15.3
CORR-5centralize-api log SQL ใน productionHigh5.5, 14.4, 15.2
CORR-6syncModelToTable รันทุกครั้งที่ bootCritical3.10, 8.4, 8.11, 14.4, 15.2
CORR-7คอลัมน์ซ้ำใน Sequelize modelHigh8.11, 14.4, 15.2
CORR-8PDF deletion raceHigh3.10, 14.4
CORR-9httpRequest.js พังใน cu-central-apiMed4.10, 14.4, 15.2

Legacy debt (LEG-1 ถึง LEG-30)

หมายเหตุ: รายการทั้งหมดอยู่ใน Vol 14.5–14.8 — ชื่อด้านล่าง MATCH Vol 14

IDคำอธิบายสั้น (ตาม Vol 14)ความรุนแรงอ้างถึงใน volume
LEG-1Node 12 runtimeCritical2.8, 14.5, 15.3
LEG-2esm shim ล็อค Node 12Critical3.2, 14.5, 15.3
LEG-3Apollo Server v2 EOLHigh3.2, 14.5, 15.3
LEG-4React 16 EOL + Apollo Client v2 EOLHigh6.2, 7.2, 14.5, 15.5
LEG-5AntD กระจาย major version สองตัวHigh6.8, 7.8, 14.6, 15.3
LEG-6react-scripts 3.4.3 (CRA deprecated)High7.2, 14.6
LEG-7Webpack 4 EOL + html-webpack-plugin betaHigh6.2, 14.6
LEG-8ldapjs ไม่ได้รับการพัฒนาHigh4.3, 14.6, 15.3
LEG-9jsonwebtoken v8High9.5, 14.6, 15.2
LEG-10html-pdf + node-qpdf ไม่ได้รับการพัฒนาHigh3.10, 14.6, 15.3
LEG-11mariaDB v2 + mysql2 v2 ทั้งคู่Med3.5, 14.6
LEG-12redis v3 (callback API)Med3.5, 14.6, 15.3
LEG-13s, stream, findit — package ไม่ได้ใช้Med14.6
LEG-14_bk files 131 ไฟล์ใน sourceHigh6.1, 7.1, 14.7, 15.3
LEG-15centralize-api ไม่มี lockfileMed5.2, 14.8, 15.2
LEG-16vtrc-web มีทั้ง yarn.lock และ package-lock.jsonMed6.2, 14.8, 15.2
LEG-17TypeScript safety ปิดอยู่Med5.2, 14.8
LEG-18ไม่มี engines field ทุก package.jsonMed14.8, 15.2
LEG-19In-process node-schedule สำหรับ cronHigh3.8, 12.11, 14.8
LEG-20axios instances 16+ ตัวใน backofficeHigh7.6, 14.8
LEG-21GraphQL operations ไฟล์ใหญ่High6.3, 7.3, 14.7
LEG-22Role-based route duplicationHigh7.1, 14.7
LEG-23Resolver ไฟล์เดียว 3,716 บรรทัดHigh3.6, 14.7
LEG-24console.log 77 ครั้งในไฟล์เดียวMed3.7, 14.7
LEG-25Typo ใน ENUM ที่ productionMed3.5, 14.7
LEG-26UI library ซ้อนกัน 4 ตัวMed7.8, 14.7
LEG-27xlsx (SheetJS community) มี prototype-pollution CVEHigh3.10, 14.6, 15.2
LEG-28sha512crypt-nodeMed4.3, 14.6
LEG-29firebase-admin v9 + googleapis v59Med14.6
LEG-30Error message ผสม TH/ENMed3.10, 14.7

สรุปจำนวน debt

Prefixรวม (ตาม Vol 14 index)
SEC11
PERF8
CORR9
LEG30
รวม58

หลักการอัปเดต

เมื่อแก้ debt ตัวใดใน codebase:

  1. อัปเดต row ข้างต้น (ลบ row หรือเปลี่ยนสถานะเป็น "แก้แล้ว")
  2. อัปเดต volume ที่อ้างถึง debt นั้น (ดู column "อ้างถึงใน volume")
  3. บันทึกใน A.8 Changelog ว่า debt ตัวนั้นถูกแก้เมื่อไหร่
  4. ห้ามสลับชื่อ SEC/LEG ระหว่าง ID — ชื่อต้องตรง Vol 14 เสมอ