SmartCane/.github/copilot-instructions.md

139 lines
7.9 KiB
Markdown

# Copilot Instruct- **Crop Analysis & Messaging:**
- Main script: `r_app/06_crop_messaging.R`
- Usage: `Rscript 06_crop_messaging.R [current_week] [previous_week] [estate_name]`
- Two-dimensional alerting: Time (week-over-week changes) + Space (field uniformity/patches)
- Handles missing weeks due to clouds (CI band = 0)
- Output: WhatsApp-ready text (.txt) and Word reports (.docx) with farm-wide summary, missing data notes, areas in hectares and acres, and interpretation guides for columns
- Filenames include estate name (e.g., `crop_messaging_simba.txt`, `crop_messaging_simba.docx`)or SmartCane Codebase
## Big Picture Architecture
- **Three main components:**
- `r_app/`: R scripts for crop analysis, package management, and reporting
- `r_app/experiments/sar_dashboard/`: Production SAR dashboard system (Python + R)
- `python_app/` & `python_scripts/`: Python notebooks and scripts for satellite data download and preprocessing
- `laravel_app/`: Laravel PHP web application for user-facing features
- **Data Flow:**
- Satellite data is downloaded/preprocessed in Python, stored in `python_scripts/data/` or `r_app/experiments/sar_dashboard/data/`
- R scripts in `r_app/` analyze, visualize, and report on this data
- SAR dashboard combines Python download + R analysis + Word report generation
- Reports and outputs are saved in `output/` or `r_app/experiments/sar_dashboard/`
- Laravel app may consume outputs for web display (integration is project-specific)
## Critical Developer Workflows
- **R Package Management:**
- Always run `r_app/package_manager.R` after pulling changes or before analysis
- Commit `renv.lock` but NOT the `renv/` folder
- Use `source("r_app/package_manager.R")` in RStudio or `Rscript r_app/package_manager.R` in terminal
- **Crop Analysis & Messaging:**
- Main script: `r_app/06_crop_messaging.R`
- Usage: `Rscript 06_crop_messaging.R [current_week] [previous_week] [estate_name]`
- Two-dimensional alerting: Time (change trends) + Space (field uniformity/patches)
- Handles missing weeks due to clouds (CI band = 0)
- Output: WhatsApp-ready text, CSV data, .docx reports, and Markdown tables
- **SAR Analysis & Reporting:**
- **SAR Dashboard:** Production-ready Word reports for SAR data analysis
- **Main folder:** `r_app/experiments/sar_dashboard/`
- **Download script:** `r_app/experiments/sar_dashboard/download_s1_simba.py` (for Simba) or `download_s1_[client].py`
- **Report generation:** `Rscript r_app/experiments/sar_dashboard/generate_sar_report.R [client_name]`
- **Test script:** `Rscript r_app/experiments/sar_dashboard/test_sar_dashboard.R`
- **Data source:** `r_app/experiments/sar_dashboard/data/[client]/weekly_SAR_mosaic/`
- **Features:** RGB visualization (each band = different week), SAR indices (RVI, cross-pol ratio), harvest detection, field uniformity analysis, time series plots
- **Output:** Word document (.docx) with comprehensive SAR analysis and visualizations
- **Field boundaries:** Uses `r_app/experiments/pivot.geojson` for field polygons
- **Python Data Download:**
- Notebooks/scripts in `python_app/` and `python_scripts/` handle satellite data acquisition
- Check `requirements_*.txt` for dependencies
- **Laravel App:**
- Standard Laravel conventions (see `laravel_app/README.md`)
- Use `artisan` for migrations, tests, etc.
## Project-Specific Conventions
- **Field Uniformity & Alerting:**
- **Two-dimensional analysis**: Time (week-over-week changes) + Space (field homogeneity)
- **Message categories**: 🚨 URGENT, ⚠️ ALERT, ✅ POSITIVE, 💡 OPPORTUNITY
- **Uniformity thresholds**: CV < 0.15 (good), CV < 0.08 (excellent), CV > 0.25 (poor)
- **Change detection**: Increase > 0.5, Decrease < -0.5 (configurable thresholds)
- **Spatial patterns**: Moran's I analysis for clustering detection
- **Missing data handling**: Clouds (CI=0) trigger spatial-only analysis
- **Output Formatting:**
- Word reports (.docx) include split tables for wide data, with column widths set for readability
- Interpretation guides provided under each table explaining columns like 'acceptable %' and 'change' thresholds
- Areas reported in both hectares and acres
- **Package Management:**
- Minimum versions enforced for critical R packages (see `PACKAGE_MANAGEMENT.md`)
- All package changes go through `package_manager.R`
- **SAR-Specific Analysis:**
- **Data characteristics:** SAR (radar) penetrates clouds, all-weather capability, measures backscatter intensity
- **Bands:** VV (vertical-vertical), VH (vertical-horizontal), dB scaled for analysis
- **Indices:** RVI (Radar Vegetation Index), cross-polarization ratio, crop structure index
- **Harvest detection:** Identifies completely bare fields by backscatter threshold and temporal change
- **RGB visualization:** Each band represents different week for change detection
- **Data availability:** Sentinel-1 provides ~6-day revisit, weekly composites recommended
- **Field boundaries:** Critical for SAR analysis - ensure `pivot.geojson` is current and accurate
## Integration Points & Dependencies
- **R Python:**
- R scripts expect preprocessed data from Python scripts
- Data location conventions: `python_scripts/data/`, `pivot.geojson`
- **R Laravel:**
- Laravel may read outputs from R analysis (integration is custom)
- **External:**
- Sentinel-1 SAR data (via SentinelHub API), Planet optical data, field boundaries (GeoJSON), R/Python packages
## Examples
- To run a full crop analysis workflow:
```powershell
Rscript r_app/package_manager.R ; Rscript r_app/06_crop_messaging.R 32 31 simba
```
- To run crop messaging with cloud handling:
```powershell
Rscript r_app/06_crop_messaging.R 30 29 chemba # Only spatial analysis if week 29 has clouds
```
- To generate SAR dashboard report:
```powershell
cd r_app/experiments/sar_dashboard
python download_s1_simba.py # Download SAR data for Simba (last 8 weeks)
Rscript generate_sar_report.R simba # Generate Word report
```
- To test SAR dashboard setup:
```powershell
cd r_app/experiments/sar_dashboard
Rscript test_sar_dashboard.R
```
## Key Files & Directories
- `r_app/package_manager.R`, `PACKAGE_MANAGEMENT.md`: Package logic & workflow
- `r_app/06_crop_messaging.R`, `r_app/crop_messaging_utils.R`: Crop analysis & messaging logic
- `r_app/experiments/crop_messaging/crop_analysis_messaging.R`: Experimental messaging script
- `r_app/experiments/sar_dashboard/`: Complete SAR dashboard system
- `download_s1_simba.py`: SAR data download for Simba fields
- `generate_sar_report.R`: Generate Word document SAR reports
- `test_sar_dashboard.R`: Test SAR dashboard components
- `SAR_Dashboard_Report.Rmd`: RMarkdown template for Word reports
- `sar_dashboard_utils.R`: SAR analysis utility functions
- `data/[client]/weekly_SAR_mosaic/`: Downloaded SAR data organized by week
- `python_scripts/`, `python_app/`: Data download/preprocessing
- `output/`: All generated reports
- `laravel_app/`: Web application
## Environment Notes
- On Windows, R can be found at: `C:\Program Files\R\R-4.4.3\bin\x64\R.exe`
## Documentation & File Creation Policy
**IMPORTANT: Minimize markdown file creation to reduce repo clutter**
- **Do NOT create** README.md, START_HERE.md, QUICK_START.md, INDEX.md or any other .mD files automatically
- **Only create .md files when:**
- User explicitly requests it
- A single index/guide for an entire folder (ONE per folder max)
- Critical architecture/setup documentation that doesn't exist
- **Instead:**
- Add comments directly in scripts explaining purpose & usage
- Use inline documentation (docstrings, comments)
- Reference existing docs rather than creating duplicates
- **Experiments folders:** Keep clean - code + minimal comments, no separate guides per experiment
- **When in doubt:** Ask the user if they want documentation before creating files
---
_If any section is unclear or missing, please provide feedback for further refinement._