Skip to content

vtrc-ocr-api — Scorecard

Legend:

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

repo นี้ (branch: main) ยังไม่ประมวลผลข้อมูลจริง (mock ทั้งหมด) จึงไม่มีรายการ Critical จากการรั่วข้อมูล OCR — ความเสี่ยงหลักคือ hygiene, hardening ที่ยังไม่ทำ, และความเข้าใจผิดว่ามี OCR จริง


Scorecard table

IDSeverityคำอธิบายหลักฐาน (file:line)การแก้ไข
QUAL-OCRAPI-01HighPOST /api/ocr/process ไม่มี OCR engine จริง — คืน 'Sample OCR result text' / confidence: 0.95 เสมอservices/ocr.service.js:26-34implement OCR จริง หรือคืน 501 Not Implemented ชัดเจน
QUAL-OCRAPI-02Highสถานะเก็บใน in-memory Map เท่านั้น — restart แล้ว record หาย / poll ได้ 404models/ocr.model.js:5; config/database.js stub ไม่ถูกเรียกเชื่อม DB จริงก่อนเปิดใช้ production
SEC-OCRAPI-01Mediumcors() เปิดกว้าง; config.cors มีใน config แต่ไม่ได้ถูกส่งเข้า cors()app.js:16 vs config/config.js:15-18app.use(cors(config.cors))
SEC-OCRAPI-02Mediumไม่มี auth บน OCR endpoints — ใครก็สร้าง/อ่าน history ใน memory ของ process ได้ (ผลกระทบจำกัดเพราะเป็น mock แต่จะอันตรายเมื่อมี OCR จริง)app.js:14-19; ไม่มี guard ใน controllersเพิ่ม API key/JWT ก่อนเปิด public
QUAL-OCRAPI-03Mediumerror.middleware.js ไม่ถูก wire; app.js มี error handler คนละ shapemiddleware/error.middleware.js:2-29, app.js:58-64ใช้ชุดเดียว
QUAL-OCRAPI-04Mediumutils/response.js ไม่ถูกเรียกจาก controllerutils/response.js; ocr.controller.js:8-11รวม format หรือลบ helper
QUAL-OCRAPI-05Mediumไม่มี .env.example ทั้งที่ config อ่าน PORT, CORS_ORIGIN, MAX_IMAGE_SIZE, OCR_TIMEOUTglob ไม่พบ; config.js:4-26เพิ่ม .env.example
QUAL-OCRAPI-06Mediumocr.maxImageSize / ocr.timeout / supportedFormats ใน config ไม่ถูก enforce ใน validation หรือ serviceconfig.js:21-25 vs validation.middleware.js / ocr.service.jsต่อค่า config เข้า validation จริง หรือลบค่าหลอก
OBS-OCRAPI-01Mediumhealth check ดูแค่ process metrics — จะ healthy เสมอแม้ยังไม่มี OCR จริงhealth.service.js:1-24เมื่อมี dependency ให้ probe จริง
LEG-OCRAPI-01Mediumไม่มี test — npm test exit 1package.json:9เพิ่ม unit test validation + service mock behavior

สิ่งที่ปลอดภัยโดยบริบทปัจจุบัน

หัวข้อเหตุผล
ไม่มี PII persistenceMap ว่างหลัง restart; ไม่เขียน disk
ไม่มี secret ใน repo ที่ตรวจเจอไม่มี .env tracked (ต่างจาก recruitment-web)
Surface เล็ก21 ไฟล์, endpoint น้อย

สรุปเชิงภาพรวม

vtrc-ocr-api เป็น scaffold ที่ปลอดภัยในตัวเองถ้าไม่ถูกเข้าใจผิดว่าพร้อม production — ชื่อ repo และ Swagger บอกว่าเป็น OCR แต่ logic จริงคือ timer + string คงที่ ทีมควรเลือก: (1) implement OCR + persistence + auth หรือ (2) archive เป็น reference — ห้ามให้ frontend เรียกใช้จริงในสถานะปัจจุบัน


Cross-ref