roadmap/model_documentation/training_model_documentatio...

259 lines
7.8 KiB
Markdown

# 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
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