Skip to content

04 · Scorecard — job-scheduler-api

Legend

  • 🔴 Critical = active security/data-loss/availability risk
  • 🟡 High = correctness/maintainability hazard, real impact
  • 🟢 Medium = friction/hygiene, not yet dangerous

Repo นี้เล็ก (31 ไฟล์, business logic จริงมีเพียง cron เดียว) ดังนั้น scorecard สั้นตามขนาดจริงของโค้ด ไม่พยายามยัด finding ให้ดูมาก

Debt IDSeverityคำอธิบายหลักฐาน (file:line)ข้อเสนอการแก้ไข
SEC-JOBSCHED-01Critical.env commit เข้า git พร้อมรหัสผ่าน MSSQL sa จริง (h@ckm3SA?) และ RSA-format secret key ที่ใช้ร่วมกับหลาย repo อื่นในแพลตฟอร์ม แม้ค่าเชื่อมต่อ DB จะไม่ถูกใช้จริงในโค้ดปัจจุบันก็ตามjob-scheduler-api/.env:9-11,18ลบ .env ออกจาก git, หมุนรหัสผ่านที่หลุด, ย้าย secret ไป vault
QUAL-JOBSCHED-01MediumTypeOrmModule ถูก import เข้ามาแต่ไม่เคยถูกเรียกใช้ใน @Module({ imports }) — dead import ที่ทำให้คนอ่านโค้ดเข้าใจผิดว่า service เชื่อมต่อฐานข้อมูลjob-scheduler-api/src/app.module.ts:6,11-19ลบ TypeOrmModule และ mysql2/typeorm dependency ออกถ้าไม่มีแผนใช้จริง หรือเพิ่ม TypeOrmModule.forRootAsync(...) ให้ตรงกับ .env ถ้าตั้งใจจะใช้
QUAL-JOBSCHED-02Medium.env ตั้ง BASE_PATH=benefit-api/ และ DB_NAME=benefit ซึ่งเป็นชื่อของ repo อื่น (benefit-api) ไม่ตรงกับชื่อ service ตัวเอง บ่งชี้ว่า .env ถูก copy มาจาก benefit-api ตอน bootstrap แล้วไม่ได้แก้ไขjob-scheduler-api/.env:3,11 เทียบ benefit-api/.env:3,19แก้ BASE_PATH/DB_NAME/ตัวแปรอื่นให้ตรงกับ identity ของ service จริง เพื่อลดความสับสนตอน debug/deploy
QUAL-JOBSCHED-03Mediumไฟล์ log จริงจาก dev environment (logs/30-01-2023.log) ถูก commit เข้า git — เสี่ยง log ที่มีข้อมูลอ่อนไหวหลุดเข้า version control ในอนาคตถ้าไม่กัน .gitignorejob-scheduler-api/logs/30-01-2023.logเพิ่ม logs/*.log เข้า .gitignore และลบไฟล์ log ที่ commit ไปแล้วออกจาก git history
OBS-JOBSCHED-01MediumDockerfile ประกาศ EXPOSE 3000 แต่ port จริงตาม .env/docker-compose.yml คือ 9900 — misleading เวลาอ่าน Dockerfile เพื่อทำความเข้าใจ network topologyjob-scheduler-api/Dockerfile:24 เทียบ .env:4 และ docker-compose.yml:8-9แก้ EXPOSE ให้ตรงกับพอร์ตจริงที่ตั้งใน .env

UNVERIFIED

  • ตัว service ที่ implement incident-management-api/crontab/summary จริงในแพลตฟอร์ม — อยู่นอกขอบเขต 5 repo ที่ตรวจสอบในเอกสารนี้ ไม่ยืนยันว่าเป็นบริการใดใน 2way/Domain group
  • เหตุผลที่ตั้งชื่อ repo เป็น "job-scheduler-api" ทั้งที่มี job เดียว — อาจเป็นแผนเดิมที่ยังไม่ implement เพิ่ม ไม่มีหลักฐานในโค้ดหรือ commit message ที่ยืนยันเจตนาได้