Service untuk manajemen nilai dan transkrip akademik dalam Sistem SIAKAD Terdistribusi.
- ✅ Input & Update Nilai
- ✅ Kalkulasi Nilai Akhir Otomatis
- ✅ Konversi ke Huruf & Grade Point
- ✅ Hitung GPA per Semester/Kumulatif
- ✅ Generate Transkrip
- ✅ Notifikasi via RabbitMQ
- ✅ Background Job untuk Report
Port: 3003
IP VM: 192.168.10.14
PORT=3003
DB_HOST=192.168.10.16
DB_PORT=3306
DB_USERNAME=siakad_app
DB_PASSWORD=admin
DB_DATABASE=siakad
RABBITMQ_URL=amqp://192.168.10.15:5672npm install# Development
npm run start:dev
# Production
npm run build
npm run start:prodPOST /api/grades- Input nilai baruGET /api/grades- Ambil semua nilaiGET /api/grades?studentNim=2024001- Filter by mahasiswaGET /api/grades?courseId=1- Filter by mata kuliahGET /api/grades/:id- Detail nilaiPATCH /api/grades/:id- Update komponen nilaiDELETE /api/grades/:id- Hapus nilaiPOST /api/grades/:id/finalize- Finalisasi nilai (trigger notifikasi)
GET /api/grades/student/:nim/gpa- Hitung GPAGET /api/grades/student/:nim/gpa?semester=1&academicYear=2024- GPA semester tertentuGET /api/grades/student/:nim/transcript- Generate transkrip lengkap
# Input nilai
curl -X POST http://192.168.10.14:3003/api/grades \
-H "Content-Type: application/json" \
-d '{
"studentNim":"2024001",
"courseId":1,
"courseName":"Pemrograman Dasar",
"quiz":85,
"assignment":90,
"midterm":80,
"final":88,
"semester":1,
"academicYear":"2024/2025"
}'
# Finalisasi nilai (kirim notifikasi)
curl -X POST http://192.168.10.14:3003/api/grades/1/finalize
# Hitung GPA
curl -X GET http://192.168.10.14:3003/api/grades/student/2024001/gpa
# GPA semester 1 tahun 2024/2025
curl -X GET http://192.168.10.14:3003/api/grades/student/2024001/gpa?semester=1&academicYear=2024/2025
# Generate transkrip
curl -X GET http://192.168.10.14:3003/api/grades/student/2024001/transcript- Quiz: 15%
- Assignment: 15%
- Midterm: 30%
- Final: 40%
Formula:
Nilai Akhir = (Quiz × 0.15) + (Assignment × 0.15) + (Midterm × 0.3) + (Final × 0.4)
| Nilai Akhir | Huruf | Grade Point |
|---|---|---|
| 85 - 100 | A | 4.0 |
| 75 - 84 | B | 3.0 |
| 65 - 74 | C | 2.0 |
| 55 - 64 | D | 1.0 |
| 0 - 54 | E | 0.0 |
GPA = Σ(Grade Point) / Total Mata Kuliah
Dikirim saat nilai difinalisasi.
{
"studentNim": "2024001",
"courseName": "Pemrograman Dasar",
"letterGrade": "A",
"finalScore": 87.5
}Dikirim saat generate transkrip.
{
"type": "transcript",
"studentNim": "2024001",
"timestamp": "2025-12-05T10:30:00Z"
}CREATE TABLE grades (
id INT PRIMARY KEY AUTO_INCREMENT,
studentNim VARCHAR(20) NOT NULL,
courseId INT NOT NULL,
courseName VARCHAR(255) NOT NULL,
quiz DECIMAL(5,2),
assignment DECIMAL(5,2),
midterm DECIMAL(5,2),
final DECIMAL(5,2),
finalScore DECIMAL(5,2),
letterGrade VARCHAR(2),
gradePoint DECIMAL(3,2),
semester INT NOT NULL,
academicYear VARCHAR(20) NOT NULL,
status VARCHAR(20) DEFAULT 'draft',
createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY unique_grade (studentNim, courseId, semester, academicYear)
);- Copy folder
grades-serviceke VM4 - Pastikan RabbitMQ sudah running di VM5 (192.168.10.15)
- Konfigurasi
.env - Jalankan
npm install - Jalankan
npm run start:prod