roadmap/farm_model_documentation.md

13 KiB

Farm Model Documentation

Overview

Model Farm adalah entitas inti dalam sistem manajemen lahan pertanian yang menyimpan informasi detail tentang lahan/kebun yang dikelola oleh petani. Model ini berfungsi sebagai pusat data geografis, karakteristik fisik, infrastruktur, dan metadata lahan pertanian dalam ekosistem Happy Farmer.

Business Context

Model Farm berfungsi sebagai:

  • Land Registry: Registrasi dan dokumentasi lahan pertanian
  • Geographic Information System: Penyimpanan data geografis dan pemetaan
  • Infrastructure Management: Tracking fasilitas dan infrastruktur lahan
  • Production Planning: Basis untuk perencanaan produksi dan budgeting
  • Asset Management: Pengelolaan aset lahan sebagai investasi
  • Compliance Tracking: Dokumentasi legal dan sertifikasi lahan

Model Structure

Primary Fields

Identification & Basic Info

  • id (String, Primary Key): Unique identifier menggunakan CUID
  • farmerId (String, Foreign Key): Referensi ke petani pemilik/pengelola
  • farmCode (String, Unique): Kode unik farm untuk identifikasi
  • name (String, Required): Nama farm/kebun
  • address (String, Optional): Alamat lengkap farm
  • village (String, Optional): Desa/kelurahan lokasi farm
  • district (String, Optional): Kecamatan lokasi farm
  • province (String, Optional): Provinsi lokasi farm
  • postalCode (String, Optional): Kode pos area farm

Geographic Data

  • area (Decimal, Optional): Luas lahan dalam hektar
  • latitude (Float, Optional): Koordinat lintang
  • longitude (Float, Optional): Koordinat bujur
  • boundaries (JSON, Optional): Polygon boundaries dalam format GeoJSON
  • elevation (Float, Optional): Ketinggian di atas permukaan laut (meter)

Soil & Environmental Characteristics

  • soilType (String, Optional): Jenis tanah (lempung, pasir, dll)
  • soilPH (Float, Optional): Tingkat keasaman tanah (pH)
  • waterSource (WaterSource Enum, Optional): Sumber air utama
  • irrigationType (IrrigationType Enum, Optional): Sistem irigasi yang digunakan
  • slope (SlopeType Enum, Optional): Tingkat kemiringan lahan
  • climate (ClimateType Enum, Optional): Jenis iklim daerah

Infrastructure & Facilities

  • hasElectricity (Boolean, Default: false): Ketersediaan listrik
  • hasWaterAccess (Boolean, Default: false): Akses air bersih
  • hasStorageFacility (Boolean, Default: false): Fasilitas penyimpanan
  • hasProcessingUnit (Boolean, Default: false): Unit pengolahan
  • accessRoadType (RoadType Enum, Optional): Jenis akses jalan

Visual Documentation

  • mainPhotoUrl (String, Optional): URL foto utama farm
  • aerialPhotoUrl (String, Optional): URL foto udara/drone
  • soilPhotoUrl (String, Optional): URL foto sampel tanah
  • ownershipType (FarmOwnership Enum, Optional): Status kepemilikan lahan
  • landCertificateNumber (String, Optional): Nomor sertifikat tanah
  • landCertificateUrl (String, Optional): URL dokumen sertifikat

Agricultural Information

  • establishedYear (Integer, Optional): Tahun pendirian/mulai dikelola
  • totalInvestment (Decimal, Optional): Total investasi pada farm
  • annualProduction (Decimal, Optional): Estimasi produksi tahunan (kg)
  • mainCrops (String Array): Komoditas utama yang ditanam
  • farmingSystem (FarmingSystem Enum, Optional): Sistem pertanian yang digunakan
  • organicCertified (Boolean, Default: false): Status sertifikasi organik

Metadata

  • description (String, Optional): Deskripsi detail farm
  • notes (String, Optional): Catatan tambahan
  • isActive (Boolean, Default: true): Status aktif farm
  • createdAt (DateTime, Default: now()): Tanggal pembuatan record
  • updatedAt (DateTime, Auto-update): Tanggal terakhir diupdate

Enums Definition

WaterSource

  • RAIN_FED: Mengandalkan air hujan
  • IRRIGATION_CANAL: Saluran irigasi
  • WELL: Sumur
  • RIVER: Sungai
  • POND: Kolam/embung
  • GROUNDWATER: Air tanah
  • SPRING: Mata air
  • MIXED: Kombinasi sumber air

IrrigationType

  • FLOOD: Irigasi banjir
  • SPRINKLER: Sistem sprinkler
  • DRIP: Irigasi tetes
  • FURROW: Alur/parit
  • MANUAL: Manual/tradisional
  • NONE: Tidak ada irigasi

SlopeType

  • FLAT: Datar
  • GENTLE: Landai
  • MODERATE: Sedang
  • STEEP: Curam
  • VERY_STEEP: Sangat curam

ClimateType

  • TROPICAL_WET: Tropis basah
  • TROPICAL_DRY: Tropis kering
  • SUBTROPICAL: Subtropis
  • TEMPERATE: Sedang
  • HIGHLAND: Dataran tinggi

RoadType

  • PAVED: Jalan beraspal
  • GRAVEL: Jalan kerikil
  • DIRT: Jalan tanah
  • FOOTPATH: Jalan setapak
  • NO_ACCESS: Tidak ada akses

FarmOwnership

  • PRIVATE_OWNED: Milik pribadi
  • LEASED: Sewa
  • SHARECROPPED: Bagi hasil
  • COOPERATIVE: Koperasi
  • GOVERNMENT: Pemerintah
  • COMMUNAL: Komunal
  • FAMILY_INHERITED: Warisan keluarga

FarmingSystem

  • MONOCULTURE: Monokultur
  • POLYCULTURE: Polikultur
  • MIXED_FARMING: Pertanian campuran
  • ORGANIC: Organik
  • CONVENTIONAL: Konvensional
  • INTEGRATED: Terintegrasi
  • PERMACULTURE: Permaculture
  • AGROFORESTRY: Agroforestri

Relationships

One-to-One Relationships

  • Farmer: Setiap farm dimiliki/dikelola oleh satu petani

One-to-Many Relationships

  • Plot: Satu farm dapat dibagi menjadi beberapa plot
  • Harvest: Recording hasil panen dari farm
  • FarmAttachment: Dokumentasi dan foto farm
  • WeatherData: Data cuaca spesifik farm
  • WeatherForecast: Prediksi cuaca untuk farm
  • FarmInput: Input pertanian yang digunakan
  • InputSchedule: Jadwal penggunaan input
  • LaborRecord: Catatan tenaga kerja
  • LaborSchedule: Jadwal kerja
  • EquipmentUsage: Penggunaan alat dan mesin
  • PestDiseaseRecord: Catatan hama dan penyakit
  • FinancialRecord: Catatan keuangan farm
  • SoilTest: Tes laboratorium tanah

Database Indexes

Primary Indexes

  • farmCode: Pencarian berdasarkan kode farm
  • farmerId: Relasi dengan petani
  • isActive: Filter farm aktif
  • establishedYear: Sorting berdasarkan tahun pendirian

Geographic Indexes

  • latitude, longitude: Spatial queries dan mapping
  • Spatial Index: Untuk GeoJSON boundaries (database-specific)

Business Rules

Validation Rules

  1. Unique Constraints:

    • farmCode harus unik dalam sistem
    • farmerId + name kombinasi yang unik per petani
  2. Required Fields:

    • farmerId: Wajib ada (foreign key)
    • name: Wajib diisi untuk identifikasi
  3. Geographic Validation:

    • Latitude: -90 to 90
    • Longitude: -180 to 180
    • Area: > 0 jika diisi
    • Boundaries: Valid GeoJSON polygon
  4. Business Logic:

    • establishedYear tidak boleh di masa depan
    • annualProduction harus >= 0
    • totalInvestment harus >= 0

Status Management

  • Farm dapat di-deactivate tanpa menghapus data
  • Deactivated farm tidak dapat memiliki aktivitas baru
  • Historical data tetap tersimpan untuk analytics

Use Cases

1. Farm Registration

Actor: Petani/Admin Flow:

  1. Input informasi dasar farm (nama, lokasi)
  2. Upload atau input koordinat GPS
  3. Input karakteristik tanah dan lingkungan
  4. Dokumentasi dengan foto
  5. Input informasi legal (sertifikat)
  6. Aktivasi farm

2. Farm Mapping & GIS

Actor: Admin/Analyst Flow:

  1. View farm locations pada peta
  2. Analyze geographic distribution
  3. Overlay dengan data cuaca/iklim
  4. Identify clusters dan patterns
  5. Generate geographic reports

3. Infrastructure Assessment

Actor: Field Officer/Admin Flow:

  1. Survey infrastruktur existing
  2. Update fasilitas yang tersedia
  3. Identify infrastructure gaps
  4. Plan improvement programs
  5. Track infrastructure development

4. Production Planning

Actor: Petani/Advisor Flow:

  1. Analyze farm characteristics
  2. Determine suitable crops
  3. Plan planting schedule
  4. Estimate production capacity
  5. Budget planning dan resource allocation

5. Environmental Monitoring

Actor: Environmentalist/Researcher Flow:

  1. Track soil health parameters
  2. Monitor water usage patterns
  3. Assess climate impact
  4. Analyze biodiversity
  5. Generate sustainability reports

Integration Points

Internal Systems

  • Farmer Management: Owner relationship
  • Plot Management: Land subdivision
  • Weather System: Location-based weather data
  • Financial System: Investment dan revenue tracking
  • Equipment Management: Usage pada farm specific
  • Harvest Management: Production tracking

External Systems

  • GIS Platforms: Mapping dan spatial analysis
  • Weather Services: Real-time weather data
  • Satellite Imagery: Aerial monitoring
  • Government Systems: Land certification integration
  • Insurance Systems: Risk assessment
  • Bank Systems: Collateral valuation

Data Privacy & Security

Sensitive Data

  • Exact coordinates dan boundaries
  • Legal documents (certificates)
  • Financial information (investment, production)
  • Infrastructure details

Security Measures

  • Role-based access untuk geographic data
  • Encryption untuk sensitive coordinates
  • Audit trails untuk data changes
  • Backup dan disaster recovery

Performance Considerations

Query Optimization

  • Spatial indexes untuk geographic queries
  • Composite indexes untuk common filters
  • Materialized views untuk analytics
  • Caching untuk frequently accessed farms

Scalability

  • Geographic partitioning berdasarkan region
  • Read replicas untuk mapping queries
  • CDN untuk farm photos
  • Efficient spatial data storage

Analytics & Reporting

Key Metrics

  • Total Farm Area: Aggregate luas lahan
  • Geographic Distribution: Sebaran lokasi farm
  • Infrastructure Penetration: Tingkat infrastruktur
  • Production Capacity: Kapasitas produksi total
  • Organic Certification Rate: Persentase sertifikasi organik

Reports

  • Farm Directory: Katalog farm dengan details
  • Geographic Analysis: Distribution dan clustering
  • Infrastructure Assessment: Gap analysis
  • Production Summary: Kapasitas dan actual production
  • Environmental Impact: Sustainability metrics

Quality Assurance

Data Validation

  • GPS coordinates validation
  • GeoJSON polygon validation
  • Realistic area calculations
  • Consistent address hierarchy

Regular Audits

  • Farm visits untuk verification
  • Photo updates berkala
  • Infrastructure assessment
  • Production capacity review

Future Enhancements

Planned Features

  1. Smart Mapping:

    • AI-powered boundary detection
    • Satellite imagery integration
    • Real-time farm monitoring
    • Precision agriculture mapping
  2. IoT Integration:

    • Sensor data collection
    • Automated irrigation systems
    • Weather station integration
    • Equipment tracking
  3. Sustainability Tracking:

    • Carbon footprint calculation
    • Water usage monitoring
    • Biodiversity assessment
    • Soil health tracking
  4. Advanced Analytics:

    • Predictive modeling
    • Yield optimization
    • Risk assessment
    • Market intelligence

Integration Roadmap

  • Drone Integration: Aerial surveying dan monitoring
  • Blockchain: Land registry dan ownership verification
  • AI/ML: Predictive analytics dan optimization
  • Mobile Apps: Field data collection
  • Government APIs: Legal compliance integration

Sample Farm Profiles

Small-Scale Rice Farm

{
  "name": "Sawah Pak Budi",
  "area": 0.5,
  "soilType": "Clay loam",
  "waterSource": "IRRIGATION_CANAL",
  "irrigationType": "FLOOD",
  "mainCrops": ["Rice"],
  "farmingSystem": "CONVENTIONAL",
  "hasElectricity": false,
  "accessRoadType": "DIRT"
}

Organic Vegetable Farm

{
  "name": "Green Valley Organic",
  "area": 2.0,
  "soilType": "Sandy loam",
  "waterSource": "WELL",
  "irrigationType": "DRIP",
  "mainCrops": ["Tomato", "Lettuce", "Spinach"],
  "farmingSystem": "ORGANIC",
  "organicCertified": true,
  "hasElectricity": true,
  "hasStorageFacility": true
}

Highland Coffee Plantation

{
  "name": "Arabica Hills",
  "area": 5.0,
  "elevation": 1200,
  "climate": "HIGHLAND",
  "slope": "MODERATE",
  "mainCrops": ["Coffee"],
  "farmingSystem": "AGROFORESTRY",
  "establishedYear": 2010,
  "accessRoadType": "GRAVEL"
}

Compliance & Certification

  • Land certificate validation
  • Environmental compliance
  • Water usage permits
  • Organic certification (if applicable)

Documentation Standards

  • Standardized photo requirements
  • GPS accuracy standards
  • Boundary documentation
  • Infrastructure documentation

Audit Trail

  • All changes logged dengan timestamp
  • User attribution untuk modifications
  • Historical versions maintained
  • Compliance tracking automated