Memuat
Project
  • Machine Learning
  • Tanggal:   Sep 2025

MPTI Lab: Monitoring dan Estimasi Proyek

Sampul project MPTI Lab: Monitoring dan Estimasi Proyek

Sistem monitoring proyek untuk project manager. Mencatat aktivitas kerja tim tiap menit, memisahkan jam efektif, lalu memakainya untuk mengestimasi sisa waktu dan biaya.

Landing (desktop)
Dashboard manager (desktop)

Latar belakang

Pertanyaan yang paling sering muncul saat memegang tim proyek ada dua: kapan selesai, dan habis berapa. Jawabannya biasanya berdasarkan perasaan, karena yang tercatat hanya tugas selesai dan tugas belum selesai. Jam kerja yang benar-benar terpakai tidak pernah masuk hitungan.

Saya membangun MPTI Lab untuk penelitian jurnal kuliah saya yang berjudul "Implementasi Teknologi You Only Look Once (YOLO) dan Reinforcement Learning untuk Monitoring Proyek Berbasis Web". Titik awalnya sebuah aplikasi PHP native bernama Startup Flow yang saya audit lebih dulu. Dua temuan mengubah arah pengerjaan. Pertama, skrip monitoring lama merekam layar mesin yang menjalankan web server. Di localhost itu kebetulan benar, tapi begitu dipasang di server sungguhan yang terekam adalah layar server, bukan layar karyawan. Kedua, file bobot YOLO tersimpan rapi di dua lokasi dan tidak pernah dipanggil satu baris kode pun.

Solusi

Monitoring saya pindahkan ke program desktop yang berjalan di komputer anggota tim. Agent mencatat judul window aktif tiap 60 detik, menahannya di outbox lokal saat koneksi putus, lalu mengirimnya ke server lewat REST API bertoken. Di server, tiap judul dicocokkan dengan aturan yang dikelola Project Manager untuk memutuskan jam itu efektif atau tidak.

Angka itulah bahan estimasi. Sekali tekan tombol Hitung Estimasi, satu job antrean menjalankan agregasi jam, memanggil layanan Python berisi model PPO, lalu menyimpan hasilnya: perkiraan sisa hari, total biaya dibanding anggaran awal, rencana alokasi harian, dan nilai kinerja tiap anggota. Sistem lama menuntut tiga tombol berurutan tanpa umpan balik apa pun.

Fitur utama

  • Agent desktop untuk Windows, macOS, dan Linux X11, dipasang lewat kode pemasangan sekali pakai yang berlaku 24 jam
  • Mode perekaman layar yang bisa dimatikan, dibatasi hanya frame, atau penuh, dengan penjaga kapasitas disk dan retensi 14 hari
  • Klasifikasi aktivitas lewat 49 aturan hasil ekstraksi, halaman triage untuk judul yang belum dikenali, dan Naive Bayes sebagai lapis kedua
  • Estimasi waktu dan biaya dengan dua strategi PPO, lengkap dengan riwayat perhitungan dan ekspor CSV, Excel, serta PDF
  • Penilaian kinerja anggota dengan nilai A sampai E beserta rekomendasi tindak lanjutnya
  • Alur tugas mulai dari dikerjakan, dijeda, diajukan, direvisi, sampai disetujui Project Manager atau Team Leader
  • Chat teks realtime dan ruang suara, dengan antarmuka dwibahasa Indonesia dan Inggris

Tantangan teknis

Bagian yang paling memakan waktu adalah membuat angka jurnal bisa direproduksi. Rumus biayanya saya tulis ulang di PHP dan Python, lalu dikunci dua anchor test: 14.352.600 untuk dataset sistem lama dan 338.929.750 untuk dataset jurnal. Anchor kedua sekaligus menjawab keraguan lama, yaitu apakah pending_cost ikut dijumlahkan ke total. Ternyata tidak. Versi tanpa pending_cost hanya meleset 250 rupiah dari angka publikasi, sedangkan versi dengan pending_cost meleset 44 juta.

Masalah kedua, PPO versi jurnal ternyata cuma membaca satu angka, yaitu rata-rata penyelesaian task. Jam efektif, keterlambatan, dan anggaran diabaikan semuanya. Versi itu saya pertahankan sebagai legacy_ppo supaya angka jurnal tetap bisa dicek, lalu saya tulis v2_ppo yang membaca kelimanya dan mengeluarkan rencana alokasi harian. Kalau datanya terlalu tipis dan belum ada satu pun task selesai, estimator sengaja kembali ke perilaku lama dan menandai hasilnya, bukan memaksakan angka yang kelihatan meyakinkan.

Naive Bayes saya taruh sebagai lapis kedua, bukan pengganti aturan. Aturan buatan manusia selalu menang, dan tebakan model dengan keyakinan di bawah 0,60 tidak dipakai sama sekali. Hasil tebakan pun tetap masuk halaman triage untuk dikonfirmasi, supaya tidak ada label yang diam-diam menjadi kebenaran.

Soal YOLO saya memilih jalan yang jujur. Pipeline deteksi objeknya saya bangun sampai berfungsi, lalu dimatikan lewat env secara bawaan. Klaimnya tetap bisa diperiksa siapa saja, tanpa memaksa setiap pemasangan menanggung ratusan megabyte dependensi visi untuk fitur yang belum dipakai.

Peran saya

Project ini saya kerjakan sendiri dari nol sampai deploy: aplikasi Laravel, layanan FastAPI, agent desktop Python, konfigurasi Docker, deploy ke Coolify dengan empat proses dalam satu kontainer (nginx bersama php-fpm, worker antrean, penjadwal, dan Reverb), pipeline CI di GitHub Actions, 65 file test Pest berisi 684 kasus ditambah pytest untuk ml-service dan agent, serta dokumentasinya berupa PRD, catatan keputusan, dan changelog.

Hasil dan pengembangan selanjutnya

Sistemnya sudah dideploy dan dipakai. Angka jurnal bisa direproduksi lewat test, dan alurnya berjalan utuh dari agent di komputer anggota sampai laporan siap ekspor.

Yang masih terbuka juga ada. YOLO belum dinyalakan secara bawaan, Linux Wayland belum didukung karena tidak ada API judul window yang setara, dan pembatas durasi untuk jeda panjang masih dimatikan demi menjaga paritas angka. Estimasi juga mewajibkan worker antrean tetap hidup. Selanjutnya saya ingin menambahkan pelatihan ulang terjadwal untuk classifier, dan grafik tren estimasi antar waktu supaya pergeseran perkiraan terlihat, bukan cuma angka terakhirnya.

Teknologi

Laravel 13 PHP 8.3 Livewire 3 Tailwind CSS 4 MySQL 8 Laravel Reverb FastAPI Python 3.12 stable-baselines3 (PPO) scikit-learn YOLOv8 Docker Coolify LiveKit

Project serupa

Siap mewujudkan ide Anda? Saya siap membantu

© 2026 Axa Rajandrya. Seluruh hak cipta dilindungi.

+
+