gostudentubl

gostudentubl

Runner absensi otomatis untuk mata kuliah berbasis Moodle dengan eksekusi terjadwal.

auto-imported
Lihat Source

Ikhtisar

Runner absensi otomatis untuk mata kuliah berbasis Moodle dengan eksekusi terjadwal.

Menjalankan Secara Lokal

  1. Salin template environment:

    cp .env.example .env
  2. Isi nilai-nilai yang diperlukan di .env.

  3. Jalankan:

    make run

Deployment Docker

Proyek ini berjalan sebagai service Docker berumur panjang (attendance-agent) yang mengeksekusi scheduled jobs secara internal.

Deploy

make docker-deploy

Perintah setara:

docker compose up -d --build

Operasional

AksiPerintah
Tail logsmake docker-logs
Restartmake docker-restart
Stopmake docker-down

Memicu Manual Run di Dalam Container

Aplikasi mendengarkan SIGUSR1 dan langsung mengeksekusi attendance run saat menerimanya.

make docker-signal-run

Perintah setara:

docker compose kill -s SIGUSR1 attendance-agent

Integrasi WhatsApp Lintas Proyek

Diagram jaringan Docker bersama menghubungkan stack gostudentubl dan WhatsApp

Jika wa-bot-notif berjalan sebagai proyek Docker terpisah pada host yang sama, hubungkan kedua stack melalui jaringan eksternal bersama.

  1. Buat jaringan bersama (satu kali saja):

    docker network create homelab_integration
  2. Atur konfigurasi berikut di .env:

    INTEGRATION_NETWORK=homelab_integration
    WA_ENDPOINT=http://wa-bot-notif-api:5000/send

    Sesuaikan WA_ENDPOINT jika wa-bot-notif menggunakan PORT non-default (misalnya 5001).

  3. Jalankan stack wa-bot-notif terlebih dahulu, kemudian stack ini.

Jangan gunakan localhost untuk panggilan antar-container — selalu gunakan DNS service/container pada jaringan bersama.

Catatan Operasional

  • Timezone scheduler dikontrol oleh TIMEZONE.
  • Log aplikasi ditulis ke stdout dan ke file app.log yang dirotasi di dalam workdir container (/app).
  • Simpan secrets hanya di .env (sudah diabaikan oleh git).
  • Jalankan hanya satu instance agent kecuali Anda menambahkan distributed locking — jika tidak, attendance job duplikat dapat terjadi.

Pelacakan Quiz dan Assignment

Pipeline pelacakan quiz dan assignment dari Moodle ke notifikasi WhatsApp

Runner melacak metadata assignment/quiz yang lebih kaya dan mengirim notifikasi yang lebih cerdas.

Fitur

  • Parsing daftar assignment: tanggal jatuh tempo, status submission, dan nilai.
  • Parsing daftar quiz: tanggal penutupan dan nilai.
  • Pipeline fetch halaman detail untuk assignment dan quiz, dengan batas per run.
  • Pengingat deadline pada jendela 24 jam dan 12 jam untuk item yang belum selesai.
  • Pipeline saran AI opsional via OpenRouter untuk tugas yang masih tertunda.

Environment Variable Terkait

VariableDefaultCatatan
DETAIL_FETCH_ENABLEDtrueMengaktifkan atau menonaktifkan fetch halaman detail.
DETAIL_FETCH_LIMIT10Batas maksimum fetch detail per run.
OPENROUTER_ENDPOINThttps://openrouter.ai/api/v1/chat/completionsURL chat completions OpenRouter.
OPENROUTER_API_KEYWajib saat SUGGESTION_ENABLED=true.
OPENROUTER_MODELanthropic/claude-sonnet-4-20250514Model yang digunakan untuk saran.
SUGGESTION_ENABLEDfalseMengaktifkan saran AI.
SUGGESTION_LIMIT5Jumlah maksimum saran per run.

Mode Periode

Proyek ini mendukung filter periode dinamis, sehingga update konfigurasi manual bulanan menjadi opsional.

Mode yang Tersedia

  • PERIODE_MODE=auto (direkomendasikan): menerima bulan berjalan dan bulan berikutnya (MMYY) secara otomatis.
    • Contoh pada Februari 2026: 0226 dan 0326 diterima.
  • PERIODE_MODE=manual: hanya menerima nilai yang tercantum di ALLOWED_PERIODES (dipisahkan koma).
  • PERIODE_MODE=legacy: mempertahankan perilaku kesetaraan CURRENT_PERIODE yang ketat.

Pengaturan Keamanan

  • MAX_COURSES_PER_RUN: batas keras untuk mencegah over-selection yang tidak disengaja.
    • Setel ke 0 untuk menonaktifkan batas (default).