roadmap/model_documentation/training_model_documentatio...

7.8 KiB

Training Model Documentation

Overview

Model Training adalah sistem manajemen pelatihan untuk petani yang mencakup pengelolaan konten, penjadwalan, undangan, dan tracking kehadiran. Sistem ini mendukung pelatihan individu maupun kelompok dengan dokumentasi lengkap.

Core Purpose

  • Content Management: Mengelola materi dan konten pelatihan
  • Scheduling: Penjadwalan pelatihan dengan lokasi dan waktu
  • Invitation System: Sistem undangan untuk petani
  • Attendance Tracking: Pelacakan kehadiran dan partisipasi
  • Documentation: Penyimpanan foto, video, dan dokumen pelatihan

Model Structure

Training (Core Model)

id              String   @id @default(cuid())
title           String   // Judul pelatihan
description     String?  // Deskripsi pelatihan
content         String?  // Materi/konten pelatihan
category        String   // Kategori: "Pest Control", "Organic Farming", dll
duration        Int?     // Durasi dalam menit
level           String?  // Level: "beginner", "intermediate", "advanced"
prerequisites   String?  // Syarat untuk mengikuti pelatihan
maxParticipants Int?     // Batas maksimal peserta
createdBy       String?  // ID admin yang membuat

// Scheduling & Location
scheduledDate   DateTime?            // Tanggal pelatihan
startTime       DateTime?            // Waktu mulai
endTime         DateTime?            // Waktu selesai
locationType    TrainingLocationType // Jenis lokasi pelatihan
location        String?              // Nama lokasi
locationAddress String?              // Alamat lengkap
locationGPS     Json?                // Koordinat GPS

// Group Management
batchName       String?   // Nama batch pelatihan
targetGroup     String?   // Target peserta
kelompokTaniIds String[]  // ID kelompok tani

isActive        Boolean  @default(true)
createdAt       DateTime @default(now())
updatedAt       DateTime @updatedAt

Training Location Types

  • VILLAGE_HALL: Balai desa
  • FARM_FIELD: Pelatihan di kebun/ladang
  • FARMER_HOME: Rumah petani
  • COOPERATIVE: Kantor koperasi
  • GOVERNMENT_OFFICE: Kantor pemerintah
  • ONLINE: Pelatihan virtual
  • OTHER: Lokasi lainnya

Training Levels

  • beginner: Untuk petani pemula
  • intermediate: Petani dengan pengalaman menengah
  • advanced: Petani berpengalaman
  • Crop Management (Pengelolaan tanaman)
  • Pest Control (Pengendalian hama)
  • Financial Management (Manajemen keuangan)
  • Technology & Innovation (Teknologi pertanian)
  • Marketing & Business (Pemasaran)
  • Sustainable Agriculture (Pertanian berkelanjutan)

Relationships

1. FarmerTraining (Many-to-Many)

Purpose: Tracking enrollment dan progress petani dalam pelatihan

farmerId     String         // ID petani
trainingId   String         // ID pelatihan
status       TrainingStatus // ENROLLED, IN_PROGRESS, COMPLETED, DROPPED
progress     Int @default(0) // Progress 0-100%
score        Float?         // Nilai hasil pelatihan
completedAt  DateTime?      // Tanggal selesai
assignedBy   String?        // Admin yang menugaskan
deadline     DateTime?      // Batas waktu penyelesaian

2. TrainingInvitation (One-to-Many)

Purpose: Sistem undangan untuk petani

trainingId     String             // ID pelatihan
farmerId       String             // ID petani yang diundang
invitedBy      String?            // Admin yang mengundang
invitedAt      DateTime           // Waktu undangan dikirim
message        String?            // Pesan khusus undangan
responseStatus AttendanceStatus   // INVITED, CONFIRMED, CANCELLED
respondedAt    DateTime?          // Waktu respon petani
reminderSent   Boolean            // Status pengingat

3. TrainingAttendance (One-to-Many)

Purpose: Pelacakan kehadiran real-time

trainingId         String             // ID pelatihan
farmerId           String             // ID petani
attendanceStatus   AttendanceStatus   // INVITED, CONFIRMED, ATTENDED, ABSENT
checkInTime        DateTime?          // Waktu check-in
checkOutTime       DateTime?          // Waktu check-out
participationScore Float?             // Nilai partisipasi 1-5
completedTasks     Boolean            // Status penyelesaian tugas
feedback           String?            // Feedback petani

4. TrainingDocument (One-to-Many)

Purpose: Penyimpanan dokumentasi pelatihan

trainingId   String    // ID pelatihan
title        String    // Judul dokumen
fileUrl      String    // URL file
fileName     String    // Nama file
documentType String?   // Type: "photo", "video", "certificate", "handout"
category     String?   // Kategori: "documentation", "material", "evaluation"
uploadedBy   String?   // ID pengunggah
takenAt      DateTime? // Waktu pengambilan foto/video
gpsLocation  Json?     // Koordinat GPS
isVerified   Boolean   // Status verifikasi
isPublic     Boolean   // Akses publik

Business Rules

Training Management

  1. Title dan category wajib diisi
  2. maxParticipants membatasi jumlah peserta
  3. prerequisites harus dipenuhi sebelum enrollment
  4. isActive = false menonaktifkan pelatihan

Invitation System

  1. Satu undangan per petani per pelatihan
  2. Reminder dapat dikirim berkali-kali
  3. Status response dapat diubah petani

Attendance Tracking

  1. Check-in/out hanya bisa dilakukan saat pelatihan aktif
  2. Participation score 1-5 untuk evaluasi
  3. Feedback wajib untuk completed attendance

Documentation

  1. File verification diperlukan untuk dokumen penting
  2. GPS location otomatis tersimpan saat upload
  3. Public access mengatur visibilitas dokumen

Use Cases

1. Create Training Program

1. Admin creates training dengan title, category, description
2. Set schedule (date, time, location)
3. Define target group dan max participants
4. Upload training materials
5. Activate training

2. Invite Farmers

1. Admin selects training program
2. Choose farmers atau farmer groups
3. Send bulk invitations
4. Track responses dan send reminders

3. Conduct Training

1. Admin starts training session
2. Check-in farmers attendance
3. Record participation scores
4. Upload documentation (photos, videos)
5. Check-out farmers

4. Training Analytics

1. View enrollment vs completion rates
2. Track farmer progress across trainings
3. Analyze popular categories
4. Generate attendance reports

Key Features

Group Training Support

  • Batch Management: Pelatihan dapat dikelompokkan dalam batch
  • Group Invitations: Undangan massal untuk kelompok tani
  • Location Management: Fleksibilitas lokasi pelatihan

Real-time Tracking

  • Live Attendance: Check-in/out real-time
  • Progress Monitoring: Tracking progress individual
  • Instant Documentation: Upload foto/video langsung

Comprehensive Documentation

  • Multi-media Support: Foto, video, dokumen
  • GPS Integration: Lokasi otomatis tersimpan
  • Verification System: Kontrol kualitas dokumentasi

Performance Optimization

Database Indexes

  • Training: category, level, scheduledDate, isActive
  • FarmerTraining: farmerId, trainingId, status, progress
  • TrainingInvitation: trainingId, farmerId, responseStatus
  • TrainingAttendance: trainingId, farmerId, attendanceStatus
  • TrainingDocument: trainingId, documentType, isVerified

Query Patterns

  • Filter by category dan level untuk discovery
  • Search by farmer untuk individual tracking
  • Date range queries untuk scheduling
  • Status-based filtering untuk monitoring

Integration Points

Internal Systems

  • Farmer Management: Enrollment dan progress tracking
  • User Authentication: Access control
  • Notification System: Alerts dan reminders
  • File Management: Document storage

External Systems

  • Cloud Storage: Media file storage
  • SMS/WhatsApp: Invitation delivery
  • GPS Services: Location tracking
  • Video Conferencing: Online training support