10 KiB
10 KiB
FarmerTraining Model Documentation
Overview
Model FarmerTraining adalah junction table yang menghubungkan petani dengan program pelatihan, berfungsi sebagai sistem tracking untuk enrollment, progress, dan completion pelatihan. Model ini memungkinkan manajemen pembelajaran yang personal dan terstruktur untuk setiap petani.
Business Context
Model FarmerTraining berfungsi sebagai:
- Enrollment Management: Pendaftaran petani ke program pelatihan
- Progress Tracking: Monitoring kemajuan pembelajaran setiap petani
- Performance Assessment: Evaluasi hasil dan pencapaian pelatihan
- Assignment System: Penugasan pelatihan oleh admin kepada petani
- Compliance Tracking: Memastikan petani memenuhi requirement pelatihan
Model Structure
Primary Fields
Identification & Relationships
id(String, Primary Key): Unique identifier menggunakan CUIDfarmerId(String, Foreign Key): Referensi ke petani yang mengikuti pelatihantrainingId(String, Foreign Key): Referensi ke program pelatihan yang diikuti
Status & Progress Tracking
status(TrainingStatus Enum, Default: ENROLLED): Status pelatihan petaniprogress(Integer, Default: 0): Persentase kemajuan pelatihan (0-100)score(Float, Optional): Nilai/skor yang diperoleh petanicompletedAt(DateTime, Optional): Tanggal penyelesaian pelatihan
Assignment Management
assignedBy(String, Optional): ID admin yang menugaskan pelatihanassignedAt(DateTime, Optional): Tanggal penugasanassignmentReason(String, Optional): Alasan penugasan pelatihandeadline(DateTime, Optional): Batas waktu penyelesaian pelatihan
Metadata
createdAt(DateTime, Default: now()): Tanggal enrollmentupdatedAt(DateTime, Auto-update): Tanggal terakhir diupdate
Enums Definition
TrainingStatus
- ENROLLED: Petani telah mendaftar/ditugaskan pelatihan
- IN_PROGRESS: Petani sedang mengikuti pelatihan
- COMPLETED: Petani telah menyelesaikan pelatihan
- DROPPED: Petani keluar dari pelatihan sebelum selesai
Database Constraints
Unique Constraints
farmerId + trainingId: Satu petani hanya dapat memiliki satu record per training- Mencegah duplicate enrollment
Indexes
farmerId: Untuk query berdasarkan petanitrainingId: Untuk query berdasarkan pelatihanstatus: Untuk filtering berdasarkan statuscompletedAt: Untuk sorting berdasarkan tanggal completionprogress: Untuk analytics dan reportingassignedBy: Untuk tracking assignment oleh adminassignedAt: Untuk chronological analysisdeadline: Untuk monitoring deadline
Business Rules
Enrollment Rules
- Self-Enrollment: Petani dapat mendaftar sendiri ke pelatihan terbuka
- Admin Assignment: Admin dapat menugaskan pelatihan kepada petani
- Prerequisite Check: Sistem harus memvalidasi prerequisite sebelum enrollment
- Capacity Limit: Enrollment dibatasi oleh
maxParticipantsdari Training
Status Transitions
ENROLLED → IN_PROGRESS (petani mulai mengikuti)
IN_PROGRESS → COMPLETED (petani selesai dengan success)
IN_PROGRESS → DROPPED (petani keluar sebelum selesai)
ENROLLED → DROPPED (petani tidak mulai dalam periode tertentu)
Progress Rules
- Progress dimulai dari 0% saat enrollment
- Progress diupdate berdasarkan completion modul/section
- Progress 100% secara otomatis mengubah status ke COMPLETED
- Score hanya dapat diisi untuk status COMPLETED
Assignment Rules
- Admin dapat menugaskan pelatihan wajib kepada petani
- Deadline dapat ditetapkan untuk assignment
- Assignment reason wajib diisi untuk tracking compliance
- Notifikasi otomatis dikirim saat assignment
Use Cases
1. Self-Enrollment
Actor: Petani Flow:
- Petani browse training catalog
- Pilih training yang diinginkan
- Check prerequisites (jika ada)
- Enrollment dengan status ENROLLED
- Sistem create record FarmerTraining
- Notifikasi confirmation dikirim
2. Admin Assignment
Actor: Admin Flow:
- Admin pilih petani yang akan ditugaskan
- Pilih training yang wajib diikuti
- Set deadline dan reason
- Sistem create record dengan status ENROLLED
- Notifikasi assignment dikirim ke petani
- Tracking compliance dimulai
3. Progress Tracking
Actor: Sistem/Petani Flow:
- Petani mulai mengikuti training
- Status berubah ke IN_PROGRESS
- Progress diupdate setiap completion milestone
- Sistem tracking time spent dan engagement
- Analytics diupdate real-time
4. Training Completion
Actor: Petani/Sistem Flow:
- Petani menyelesaikan semua modul
- Progress mencapai 100%
- Status berubah ke COMPLETED
- CompletedAt diset ke timestamp saat ini
- Score diinput (jika ada assessment)
- Certificate generation (jika applicable)
- Completion notification dikirim
5. Compliance Monitoring
Actor: Admin Flow:
- Monitor training assignments dengan deadline
- Identify petani yang overdue
- Send reminder notifications
- Escalate jika masih non-compliant
- Generate compliance reports
Integration Points
Internal Systems
- Training Model: Referensi ke program pelatihan
- Farmer Model: Referensi ke data petani
- Notification System: Automated notifications
- Certificate System: Issuing certificates upon completion
- Analytics System: Progress dan performance metrics
External Systems
- Learning Management System (LMS): Sync progress data
- Assessment Tools: Import scores dan evaluations
- Email/SMS System: Notifications dan reminders
- Mobile App: Real-time progress sync
Analytics & Reporting
Key Metrics
- Enrollment Rate: Jumlah enrollment per training
- Completion Rate: Persentase completion per training
- Average Progress: Rata-rata progress per training
- Time to Complete: Waktu rata-rata untuk menyelesaikan
- Drop-out Rate: Persentase yang dropped
- Assignment Compliance: Tingkat compliance untuk assigned training
Reports
- Individual Progress: Progress report per petani
- Training Effectiveness: Completion rate per training
- Compliance Dashboard: Status assignment dan deadline
- Performance Analytics: Score distribution dan trends
- Engagement Metrics: Activity dan participation levels
Performance Considerations
Query Optimization
- Composite index pada
farmerId + trainingId - Partial index pada active enrollments
- Materialized views untuk complex analytics
- Caching untuk frequently accessed data
Scalability
- Partition berdasarkan created date
- Archive completed training records
- Optimize for read-heavy workloads
- Use read replicas untuk reporting
Data Privacy & Security
Sensitive Data
- Training progress dan scores
- Assignment reasons
- Performance metrics
- Compliance status
Security Measures
- Access control berdasarkan role
- Audit logging untuk status changes
- Data encryption untuk sensitive fields
- Regular security audits
Notification Management
Automated Notifications
- Enrollment Confirmation: Saat enrollment berhasil
- Assignment Notification: Saat ditugaskan training
- Progress Milestones: Saat mencapai progress tertentu
- Deadline Reminders: Menjelang deadline assignment
- Completion Celebration: Saat menyelesaikan training
- Overdue Alerts: Saat melewati deadline
Notification Channels
- In-App: Notifications dalam aplikasi
- Email: Detailed notifications via email
- SMS: Critical reminders via SMS
- Push Notifications: Mobile app notifications
- WhatsApp: Informal reminders
Quality Assurance
Data Integrity
- Validation rules untuk progress (0-100)
- Referential integrity dengan Training dan Farmer
- Status transition validation
- Duplicate prevention
Business Logic Validation
- Prerequisite checking
- Capacity limit enforcement
- Deadline validation
- Score range validation
Future Enhancements
Planned Features
-
Adaptive Learning:
- Personalized learning paths
- Difficulty adjustment berdasarkan performance
- Intelligent content recommendation
- Predictive analytics untuk success
-
Social Learning:
- Peer comparison dan leaderboards
- Group assignments dan collaboration
- Mentorship matching
- Community discussions
-
Advanced Analytics:
- Machine learning untuk prediction
- Behavior analysis
- Engagement pattern recognition
- ROI measurement
-
Mobile-First Experience:
- Offline learning capabilities
- Mobile-optimized assessments
- Voice-based interactions
- Augmented reality training
Integration Roadmap
- Advanced LMS: Full-featured learning platform
- AI-Powered Recommendations: Personalized learning
- Blockchain Certificates: Verifiable credentials
- Virtual Reality: Immersive training experiences
- IoT Integration: Real-world application tracking
Sample Scenarios
Scenario 1: Mandatory Training Assignment
Admin assigns "Pesticide Safety Training" to all farmers
- assignedBy: "admin_001"
- deadline: 30 days from assignment
- assignmentReason: "Compliance requirement"
- Automated reminders at 7, 3, 1 days before deadline
Scenario 2: Self-Directed Learning
Farmer enrolls in "Organic Farming Basics"
- Self-enrollment without assignment
- No deadline constraint
- Progress tracking untuk personal development
- Optional assessment at completion
Scenario 3: Prerequisite Chain
Farmer completes "Basic Crop Management" → unlocks "Advanced Pest Control"
- System automatically checks prerequisites
- Enables enrollment untuk advanced training
- Tracks learning progression
Success Metrics
Individual Level
- Training completion rate per farmer
- Average score per training
- Time to complete training
- Engagement level (time spent, interactions)
Training Level
- Overall completion rate
- Average score distribution
- Drop-out rate analysis
- Effectiveness measurement
System Level
- Total training hours delivered
- Farmer capacity building index
- Knowledge retention rate
- Business impact measurement