7.8 KiB
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
Popular Categories
- 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
- Title dan category wajib diisi
- maxParticipants membatasi jumlah peserta
- prerequisites harus dipenuhi sebelum enrollment
- isActive = false menonaktifkan pelatihan
Invitation System
- Satu undangan per petani per pelatihan
- Reminder dapat dikirim berkali-kali
- Status response dapat diubah petani
Attendance Tracking
- Check-in/out hanya bisa dilakukan saat pelatihan aktif
- Participation score 1-5 untuk evaluasi
- Feedback wajib untuk completed attendance
Documentation
- File verification diperlukan untuk dokumen penting
- GPS location otomatis tersimpan saat upload
- 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