diff --git a/plans/fsa-csa-assessment-implementation.md b/plans/fsa-csa-assessment-implementation.md new file mode 100644 index 0000000..86aa7b5 --- /dev/null +++ b/plans/fsa-csa-assessment-implementation.md @@ -0,0 +1,448 @@ +# Rencana Implementasi Sistem Assessment FSA/CSA + +**Tanggal**: 8 Juli 2025 +**Versi**: 1.0 +**Status**: Draft untuk Diskusi + +## 1. Latar Belakang + +### 1.1 Kebutuhan Assessment Plot +Setiap plot dalam sistem Happy Farmer perlu dilakukan assessment Farm Sustainability Assessment (FSA) dan Climate Smart Agriculture (CSA) untuk: +- Mengukur tingkat implementasi praktik pertanian berkelanjutan +- Mengevaluasi adopsi teknologi climate smart agriculture +- Memberikan rekomendasi peningkatan praktik pertanian +- Monitoring dan evaluasi program pembinaan petani + +### 1.2 Scope Assessment +Assessment mencakup praktik-praktik berikut: +- **Climate Smart Agriculture**: Implementasi teknologi dan praktik pertanian cerdas iklim +- **Agroforestry**: Implementasi sistem agroforestri +- **Organic Inputs**: Penggunaan kompos, mulch, dan input organik lainnya +- **Natural Pest Management**: Implementasi Pestisida Nabati (Pesnab) +- **Sustainable Practices**: Live poles, cover crops, intercropping +- **Environmental Conservation**: Praktik tanpa bakar, konservasi tanah dan air +- **Dan lainnya**: Total 100+ pertanyaan assessment + +## 2. Analisis Kebutuhan Sistem + +### 2.1 Karakteristik Assessment +- **Volume Pertanyaan**: 100+ pertanyaan per assessment +- **Frekuensi**: Assessment berkala per plot (seasonal/annual) +- **Kompleksitas**: Multiple question types (boolean, scale, multiple choice, text) +- **Kategorisasi**: Pertanyaan dikelompokkan berdasarkan praktik +- **Scoring**: Sistem penilaian otomatis dengan bobot berbeda +- **Progress Tracking**: Kemampuan menyimpan progress assessment +- **Historical Data**: Tracking perubahan/peningkatan dari waktu ke waktu + +### 2.2 Stakeholder dan Use Cases +- **Penyuluh/Admin**: Membuat template assessment, menganalisis hasil +- **Enumerator**: Melakukan assessment di lapangan +- **Petani**: Melihat hasil dan rekomendasi assessment +- **Management**: Dashboard dan laporan agregat + +## 3. Desain Arsitektur Model + +### 3.1 Model Baru yang Dibutuhkan + +#### 3.1.1 AssessmentTemplate +```prisma +model AssessmentTemplate { + id String @id @default(cuid()) + name String // "FSA Template 2025", "CSA Baseline Assessment" + description String? + version String // "1.0", "2.1" + category String // "FSA", "CSA", "Combined" + totalQuestions Int // Total number of questions + maxScore Decimal // Maximum possible score + isActive Boolean @default(true) + createdBy String? // Admin who created + validFrom DateTime + validUntil DateTime? + + // Relations + categories AssessmentCategory[] + assessments PlotAssessment[] + + @@index([category]) + @@index([isActive]) + @@index([validFrom, validUntil]) + @@map("assessment_templates") +} +``` + +#### 3.1.2 AssessmentCategory +```prisma +model AssessmentCategory { + id String @id @default(cuid()) + templateId String + name String // "Climate Smart Agriculture", "Agroforestry" + description String? + weight Decimal // Weight for scoring (percentage) + orderIndex Int // Display order + + // Relations + template AssessmentTemplate @relation(fields: [templateId], references: [id]) + questions AssessmentQuestion[] + + @@index([templateId]) + @@index([orderIndex]) + @@map("assessment_categories") +} +``` + +#### 3.1.3 AssessmentQuestion +```prisma +model AssessmentQuestion { + id String @id @default(cuid()) + categoryId String + questionText String // The actual question + questionTextEn String? // English version + questionType QuestionType // BOOLEAN, SCALE, MULTIPLE_CHOICE, TEXT, NUMERIC + options String[] // For multiple choice + minValue Decimal? // For scale/numeric + maxValue Decimal? // For scale/numeric + weight Decimal // Question weight for scoring + orderIndex Int // Order within category + isRequired Boolean @default(true) + helpText String? // Additional guidance + + // Relations + category AssessmentCategory @relation(fields: [categoryId], references: [id]) + responses AssessmentResponse[] + + @@index([categoryId]) + @@index([orderIndex]) + @@map("assessment_questions") +} +``` + +#### 3.1.4 PlotAssessment +```prisma +model PlotAssessment { + id String @id @default(cuid()) + assessmentCode String @unique // "FSA-2025-001" + plotId String + templateId String + farmerId String // Who owns the plot + + // Assessment execution + conductedBy String // Enumerator/Admin ID + conductedAt DateTime + startedAt DateTime @default(now()) + completedAt DateTime? + + // Progress and status + status AssessmentStatus @default(IN_PROGRESS) + progress Decimal @default(0) // Percentage completed + totalQuestions Int + answeredQuestions Int @default(0) + + // Scoring + totalScore Decimal? // Final score + maxScore Decimal // Maximum possible score + scorePercentage Decimal? // Score as percentage + + // Categorized scores + categoryScores Json? // {"climate_smart": 85, "agroforestry": 70} + + // Assessment metadata + season String? // "Wet Season 2025" + weatherConditions String? + assessmentNotes String? + + // Photo documentation + photoUrls String[] // Photos taken during assessment + gpsCoordinates Json? // Where assessment was conducted + + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + // Relations + plot Plot @relation(fields: [plotId], references: [id]) + template AssessmentTemplate @relation(fields: [templateId], references: [id]) + farmer Farmer @relation(fields: [farmerId], references: [id]) + responses AssessmentResponse[] + recommendations AssessmentRecommendation[] + + @@index([plotId]) + @@index([farmerId]) + @@index([templateId]) + @@index([conductedAt]) + @@index([status]) + @@index([scorePercentage]) + @@map("plot_assessments") +} +``` + +#### 3.1.5 AssessmentResponse +```prisma +model AssessmentResponse { + id String @id @default(cuid()) + assessmentId String + questionId String + + // Response data (flexible to accommodate different question types) + booleanValue Boolean? + numericValue Decimal? + textValue String? + selectedOptions String[] // For multiple choice + + // Scoring + points Decimal @default(0) // Points earned for this response + maxPoints Decimal // Maximum points possible + + // Metadata + answeredAt DateTime @default(now()) + notes String? // Additional notes from enumerator + + // Relations + assessment PlotAssessment @relation(fields: [assessmentId], references: [id]) + question AssessmentQuestion @relation(fields: [questionId], references: [id]) + + @@unique([assessmentId, questionId]) // One response per question per assessment + @@index([assessmentId]) + @@index([questionId]) + @@map("assessment_responses") +} +``` + +#### 3.1.6 AssessmentRecommendation +```prisma +model AssessmentRecommendation { + id String @id @default(cuid()) + assessmentId String + category String // "Agroforestry", "Composting" + priority Priority // HIGH, MEDIUM, LOW + + title String // "Implementasi Sistem Agroforestri" + description String // Detailed recommendation + actionItems String[] // Specific action steps + + // Implementation support + trainingNeeded Boolean @default(false) + trainingTopics String[] // Related training topics + estimatedCost Decimal? // Estimated implementation cost + timeframe String? // "1-3 months", "Next season" + + // Status tracking + status RecommendationStatus @default(PENDING) + implementedAt DateTime? + implementedBy String? // Farmer who implemented + + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + // Relations + assessment PlotAssessment @relation(fields: [assessmentId], references: [id]) + + @@index([assessmentId]) + @@index([category]) + @@index([priority]) + @@index([status]) + @@map("assessment_recommendations") +} +``` + +### 3.2 Enums yang Dibutuhkan + +```prisma +enum QuestionType { + BOOLEAN // Yes/No questions + SCALE // 1-5 scale, 1-10 scale + MULTIPLE_CHOICE // Select from options + TEXT // Open text response + NUMERIC // Numeric input +} + +enum AssessmentStatus { + DRAFT // Template being prepared + IN_PROGRESS // Assessment started but not completed + COMPLETED // Assessment finished + REVIEWED // Assessment reviewed by supervisor + ARCHIVED // Old assessment archived +} + +enum RecommendationStatus { + PENDING // Recommendation given + IN_PROGRESS // Farmer implementing + COMPLETED // Successfully implemented + DEFERRED // Implementation postponed + NOT_APPLICABLE // No longer relevant +} +``` + +## 4. Kategori Assessment Detail + +### 4.1 Climate Smart Agriculture (CSA) +- **Teknologi Adaptasi Iklim**: Penggunaan varietas tahan kekeringan/banjir +- **Sistem Irigasi Efisien**: Drip irrigation, water harvesting +- **Weather-based Farming**: Penggunaan informasi cuaca untuk planning +- **Carbon Sequestration**: Praktik yang meningkatkan penyimpanan karbon + +### 4.2 Agroforestry +- **Tree Integration**: Jenis dan jumlah pohon dalam sistem pertanian +- **Spatial Arrangement**: Pola penanaman pohon dan tanaman +- **Species Selection**: Pemilihan spesies pohon yang sesuai +- **Management Practices**: Pemeliharaan sistem agroforestri + +### 4.3 Organic Inputs & Soil Health +- **Composting**: Produksi dan penggunaan kompos +- **Mulching**: Aplikasi mulch organic +- **Green Manure**: Penggunaan pupuk hijau +- **Soil Testing**: Regularity of soil health monitoring + +### 4.4 Natural Pest Management (Pesnab) +- **Botanical Pesticides**: Penggunaan pestisida nabati +- **Biological Control**: Predator/parasitoid management +- **Trap Crops**: Penggunaan tanaman perangkap +- **IPM Implementation**: Integrated Pest Management practices + +### 4.5 Sustainable Practices +- **Live Poles**: Penggunaan tiang hidup +- **Cover Crops**: Implementasi cover crops +- **Intercropping**: Sistem tumpang sari +- **Crop Rotation**: Rotasi tanaman + +### 4.6 Environmental Conservation +- **No Burning**: Praktik tanpa pembakaran +- **Water Conservation**: Konservasi air dan tanah +- **Biodiversity**: Pemeliharaan keanekaragaman hayati +- **Waste Management**: Pengelolaan limbah pertanian + +## 5. Integrasi dengan Sistem Existing + +### 5.1 Relasi dengan Model Plot +```prisma +// Tambahan di model Plot +model Plot { + // ... existing fields + assessments PlotAssessment[] // New relation +} +``` + +### 5.2 Relasi dengan Model Farmer +```prisma +// Tambahan di model Farmer +model Farmer { + // ... existing fields + plotAssessments PlotAssessment[] // New relation +} +``` + +### 5.3 Integrasi dengan Training System +- Assessment results trigger training recommendations +- Training completion updates assessment scores +- Link antara assessment gaps dan training needs + +### 5.4 Integrasi dengan Financial Records +- Track implementation costs for recommendations +- ROI calculation for sustainable practices +- Cost-benefit analysis + +## 6. Implementation Roadmap + +### 6.1 Phase 1: Core Assessment System (Month 1-2) +- [ ] Create basic assessment models +- [ ] Implement template management +- [ ] Basic question types (Boolean, Scale) +- [ ] Simple scoring system + +### 6.2 Phase 2: Advanced Features (Month 3-4) +- [ ] Complex question types (Multiple choice, Text) +- [ ] Progress saving and resume +- [ ] Photo documentation +- [ ] Basic recommendations engine + +### 6.3 Phase 3: Analytics & Integration (Month 5-6) +- [ ] Historical trend analysis +- [ ] Training system integration +- [ ] Advanced recommendation algorithms +- [ ] Dashboard and reporting + +### 6.4 Phase 4: Mobile & Optimization (Month 7-8) +- [ ] Mobile app optimization +- [ ] Offline assessment capability +- [ ] Performance optimization +- [ ] Advanced analytics + +## 7. Considerations & Discussion Points + +### 7.1 Technical Considerations +- **Performance**: 100+ questions per assessment, multiple farmers +- **Storage**: Photo documentation storage strategy +- **Offline Capability**: Assessment in areas with poor connectivity +- **Data Migration**: Handling template versions and historical data + +### 7.2 Business Logic Considerations +- **Scoring Algorithm**: How to weight different practices fairly +- **Recommendation Engine**: Automated vs manual recommendations +- **Validation Rules**: Ensuring data quality and consistency +- **Access Control**: Who can view/edit assessment results + +### 7.3 User Experience Considerations +- **Assessment Duration**: Breaking long assessments into manageable sections +- **Language Support**: Multilingual support for questions +- **Mobile Interface**: Touch-friendly assessment interface +- **Progress Indicators**: Clear indication of completion status + +### 7.4 Integration Considerations +- **Training System**: How assessment results trigger training +- **Financial System**: Tracking implementation costs +- **Reporting System**: Management dashboards and analytics +- **External Systems**: Integration with government reporting + +## 8. Risk Assessment + +### 8.1 Technical Risks +- **High**: Complex scoring algorithms may have bugs +- **Medium**: Performance issues with large datasets +- **Low**: Data migration challenges + +### 8.2 Business Risks +- **High**: Assessment too long/complex for field use +- **Medium**: Recommendations not actionable +- **Low**: Integration disrupts existing workflows + +### 8.3 Mitigation Strategies +- Prototype with small user group +- Phased rollout with feedback collection +- Comprehensive testing of scoring algorithms +- Training for enumerators + +## 9. Success Metrics + +### 9.1 System Metrics +- Assessment completion rate > 90% +- Average assessment time < 45 minutes +- Data quality score > 95% +- System performance < 3 seconds response time + +### 9.2 Business Metrics +- Farmer engagement with recommendations > 70% +- Improvement in assessment scores over time +- Training completion rate for recommended topics +- ROI on implemented recommendations + +## 10. Next Steps + +### 10.1 Immediate Actions +1. **Validate Requirements**: Review with subject matter experts +2. **Prototype Core Models**: Build basic assessment structure +3. **Design Sample Questions**: Create representative question set +4. **Test Scoring Logic**: Validate scoring algorithms + +### 10.2 Stakeholder Reviews +- [ ] Technical team review of data models +- [ ] Field team review of assessment workflow +- [ ] Business team review of scoring methodology +- [ ] Farmer representative feedback on questions + +### 10.3 Decision Points +- Finalize question categorization and weighting +- Determine assessment frequency and triggers +- Define integration points with existing systems +- Establish data governance and access policies + +--- + +**Catatan**: Dokumen ini merupakan draft awal yang memerlukan diskusi lebih lanjut dengan tim teknis dan business untuk finalisasi requirements dan approach implementasi. \ No newline at end of file