@deepintel-ltd/farmpro-contracts 1.7.6 → 1.7.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/index.d.ts +11 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +10 -0
  4. package/dist/routes/crop-profile.routes.d.ts +556 -0
  5. package/dist/routes/crop-profile.routes.d.ts.map +1 -0
  6. package/dist/routes/crop-profile.routes.js +55 -0
  7. package/dist/routes/geofences.routes.d.ts +1913 -0
  8. package/dist/routes/geofences.routes.d.ts.map +1 -0
  9. package/dist/routes/geofences.routes.js +105 -0
  10. package/dist/routes/index.d.ts +15 -0
  11. package/dist/routes/index.d.ts.map +1 -1
  12. package/dist/routes/index.js +10 -0
  13. package/dist/routes/livestock-map.routes.d.ts +1319 -0
  14. package/dist/routes/livestock-map.routes.d.ts.map +1 -0
  15. package/dist/routes/livestock-map.routes.js +83 -0
  16. package/dist/routes/measurements.routes.d.ts +1081 -0
  17. package/dist/routes/measurements.routes.d.ts.map +1 -0
  18. package/dist/routes/measurements.routes.js +69 -0
  19. package/dist/routes/monitoring-visualization.routes.d.ts +1637 -0
  20. package/dist/routes/monitoring-visualization.routes.d.ts.map +1 -1
  21. package/dist/routes/monitoring-visualization.routes.js +153 -0
  22. package/dist/routes/prescription-maps.routes.d.ts +3092 -0
  23. package/dist/routes/prescription-maps.routes.d.ts.map +1 -0
  24. package/dist/routes/prescription-maps.routes.js +143 -0
  25. package/dist/schemas/crop-profile.schemas.d.ts +724 -0
  26. package/dist/schemas/crop-profile.schemas.d.ts.map +1 -0
  27. package/dist/schemas/crop-profile.schemas.js +84 -0
  28. package/dist/schemas/geofences.schemas.d.ts +358 -0
  29. package/dist/schemas/geofences.schemas.d.ts.map +1 -0
  30. package/dist/schemas/geofences.schemas.js +44 -0
  31. package/dist/schemas/livestock-map.schemas.d.ts +328 -0
  32. package/dist/schemas/livestock-map.schemas.d.ts.map +1 -0
  33. package/dist/schemas/livestock-map.schemas.js +52 -0
  34. package/dist/schemas/measurements.schemas.d.ts +234 -0
  35. package/dist/schemas/measurements.schemas.d.ts.map +1 -0
  36. package/dist/schemas/measurements.schemas.js +57 -0
  37. package/dist/schemas/monitoring-visualization.schemas.d.ts +1703 -0
  38. package/dist/schemas/monitoring-visualization.schemas.d.ts.map +1 -1
  39. package/dist/schemas/monitoring-visualization.schemas.js +338 -0
  40. package/dist/schemas/prescription-maps.schemas.d.ts +974 -0
  41. package/dist/schemas/prescription-maps.schemas.d.ts.map +1 -0
  42. package/dist/schemas/prescription-maps.schemas.js +132 -0
  43. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"monitoring-visualization.schemas.d.ts","sourceRoot":"","sources":["../../src/schemas/monitoring-visualization.schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"monitoring-visualization.schemas.d.ts","sourceRoot":"","sources":["../../src/schemas/monitoring-visualization.schemas.ts"],"names":[],"mappings":"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"}
@@ -568,6 +568,262 @@ export const terrainResponseSchema = z.object({
568
568
  .optional(),
569
569
  });
570
570
  // ============================================================================
571
+ // Phase 5: Enhanced Terrain Schemas (Contours, Slope, Aspect, Drainage)
572
+ // ============================================================================
573
+ // Elevation heatmap query and response
574
+ export const elevationHeatmapQuerySchema = z.object({
575
+ resolution: z.enum(['low', 'medium', 'high']).default('medium'),
576
+ palette: z.enum(['terrain', 'viridis', 'grayscale', 'rainbow']).default('terrain'),
577
+ });
578
+ export const elevationHeatmapResponseSchema = z.object({
579
+ fieldId: z.string().uuid(),
580
+ imageUrl: z.string().url().nullable(),
581
+ bounds: z.object({
582
+ north: z.number(),
583
+ south: z.number(),
584
+ east: z.number(),
585
+ west: z.number(),
586
+ }),
587
+ statistics: z.object({
588
+ min: z.number(),
589
+ max: z.number(),
590
+ mean: z.number(),
591
+ range: z.number(),
592
+ unit: z.literal('meters'),
593
+ }),
594
+ colorScale: z.array(z.object({
595
+ value: z.number(),
596
+ color: z.string(),
597
+ label: z.string(),
598
+ })),
599
+ dataSource: z.string(),
600
+ });
601
+ // Contour lines query and response
602
+ export const contourQuerySchema = z.object({
603
+ interval: z.string()
604
+ .transform(Number)
605
+ .pipe(z.number().min(0.5).max(50))
606
+ .default('5'), // meters between contour lines
607
+ minElevation: z.string()
608
+ .transform(Number)
609
+ .pipe(z.number())
610
+ .optional(),
611
+ maxElevation: z.string()
612
+ .transform(Number)
613
+ .pipe(z.number())
614
+ .optional(),
615
+ });
616
+ export const contourLineSchema = z.object({
617
+ elevation: z.number(),
618
+ geometry: z.object({
619
+ type: z.literal('LineString'),
620
+ coordinates: z.array(z.tuple([z.number(), z.number()])), // [lng, lat][]
621
+ }),
622
+ isMajor: z.boolean(), // Every 5th line is major (thicker)
623
+ length: z.number(), // meters
624
+ });
625
+ export const contourResponseSchema = z.object({
626
+ fieldId: z.string().uuid(),
627
+ interval: z.number(),
628
+ contours: z.array(contourLineSchema),
629
+ statistics: z.object({
630
+ minElevation: z.number(),
631
+ maxElevation: z.number(),
632
+ totalContours: z.number(),
633
+ majorContours: z.number(),
634
+ }),
635
+ geojson: z.object({
636
+ type: z.literal('FeatureCollection'),
637
+ features: z.array(z.object({
638
+ type: z.literal('Feature'),
639
+ geometry: z.object({
640
+ type: z.literal('LineString'),
641
+ coordinates: z.array(z.tuple([z.number(), z.number()])),
642
+ }),
643
+ properties: z.object({
644
+ elevation: z.number(),
645
+ isMajor: z.boolean(),
646
+ }),
647
+ })),
648
+ }),
649
+ });
650
+ // Slope analysis query and response
651
+ export const slopeQuerySchema = z.object({
652
+ unit: z.enum(['percent', 'degrees']).default('percent'),
653
+ resolution: z.enum(['low', 'medium', 'high']).default('medium'),
654
+ });
655
+ export const slopeClassSchema = z.object({
656
+ class: z.enum(['flat', 'gentle', 'moderate', 'steep', 'very_steep']),
657
+ minSlope: z.number(),
658
+ maxSlope: z.number(),
659
+ areaHectares: z.number(),
660
+ areaPercent: z.number(),
661
+ color: z.string(),
662
+ description: z.string(),
663
+ });
664
+ export const slopeResponseSchema = z.object({
665
+ fieldId: z.string().uuid(),
666
+ unit: z.enum(['percent', 'degrees']),
667
+ imageUrl: z.string().url().nullable(),
668
+ bounds: z.object({
669
+ north: z.number(),
670
+ south: z.number(),
671
+ east: z.number(),
672
+ west: z.number(),
673
+ }),
674
+ statistics: z.object({
675
+ min: z.number(),
676
+ max: z.number(),
677
+ mean: z.number(),
678
+ stdDev: z.number(),
679
+ }),
680
+ classification: z.array(slopeClassSchema),
681
+ colorScale: z.array(z.object({
682
+ value: z.number(),
683
+ color: z.string(),
684
+ label: z.string(),
685
+ })),
686
+ recommendations: z.array(z.object({
687
+ slopeClass: z.string(),
688
+ recommendation: z.string(),
689
+ risk: z.enum(['low', 'medium', 'high']),
690
+ })).optional(),
691
+ });
692
+ // Aspect (slope direction) query and response
693
+ export const aspectQuerySchema = z.object({
694
+ resolution: z.enum(['low', 'medium', 'high']).default('medium'),
695
+ });
696
+ export const aspectClassSchema = z.object({
697
+ direction: z.enum(['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW', 'flat']),
698
+ minDegrees: z.number(),
699
+ maxDegrees: z.number(),
700
+ areaHectares: z.number(),
701
+ areaPercent: z.number(),
702
+ color: z.string(),
703
+ sunExposure: z.enum(['high', 'medium', 'low']),
704
+ });
705
+ export const aspectResponseSchema = z.object({
706
+ fieldId: z.string().uuid(),
707
+ imageUrl: z.string().url().nullable(),
708
+ bounds: z.object({
709
+ north: z.number(),
710
+ south: z.number(),
711
+ east: z.number(),
712
+ west: z.number(),
713
+ }),
714
+ statistics: z.object({
715
+ dominantDirection: z.enum(['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW', 'flat']),
716
+ dominantPercent: z.number(),
717
+ flatPercent: z.number(), // Areas with no slope
718
+ }),
719
+ classification: z.array(aspectClassSchema),
720
+ colorWheel: z.array(z.object({
721
+ direction: z.string(),
722
+ degrees: z.number(),
723
+ color: z.string(),
724
+ })),
725
+ recommendations: z.object({
726
+ bestForCrops: z.array(z.string()),
727
+ irrigationConsiderations: z.string().optional(),
728
+ frostRiskAreas: z.string().optional(),
729
+ }).optional(),
730
+ });
731
+ // Drainage flow analysis query and response
732
+ export const drainageQuerySchema = z.object({
733
+ resolution: z.enum(['low', 'medium', 'high']).default('medium'),
734
+ includeWatersheds: z.string()
735
+ .transform((v) => v === 'true')
736
+ .default('false'),
737
+ includeFlowAccumulation: z.string()
738
+ .transform((v) => v === 'true')
739
+ .default('true'),
740
+ });
741
+ export const flowArrowSchema = z.object({
742
+ startPoint: coordinateSchema,
743
+ endPoint: coordinateSchema,
744
+ flowIntensity: z.enum(['low', 'medium', 'high']),
745
+ bearing: z.number(), // degrees
746
+ });
747
+ export const lowPointSchema = z.object({
748
+ id: z.string(),
749
+ location: coordinateSchema,
750
+ elevation: z.number(),
751
+ contributingArea: z.number(), // hectares draining to this point
752
+ riskLevel: z.enum(['low', 'medium', 'high']),
753
+ description: z.string(),
754
+ });
755
+ export const watershedSchema = z.object({
756
+ id: z.string(),
757
+ geometry: geoJsonPolygonSchema,
758
+ areaHectares: z.number(),
759
+ outletPoint: coordinateSchema,
760
+ flowDirection: z.enum(['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW']),
761
+ color: z.string(),
762
+ });
763
+ export const drainageResponseSchema = z.object({
764
+ fieldId: z.string().uuid(),
765
+ bounds: z.object({
766
+ north: z.number(),
767
+ south: z.number(),
768
+ east: z.number(),
769
+ west: z.number(),
770
+ }),
771
+ flowArrows: z.array(flowArrowSchema),
772
+ lowPoints: z.array(lowPointSchema),
773
+ watersheds: z.array(watershedSchema).optional(),
774
+ flowAccumulationImageUrl: z.string().url().nullable(),
775
+ statistics: z.object({
776
+ totalLowPoints: z.number(),
777
+ highRiskLowPoints: z.number(),
778
+ dominantFlowDirection: z.enum(['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW']),
779
+ estimatedWaterloggingRisk: z.enum(['low', 'medium', 'high']),
780
+ }),
781
+ recommendations: z.array(z.object({
782
+ type: z.enum(['drainage_channel', 'pond', 'berm', 'terrace', 'general']),
783
+ location: coordinateSchema.optional(),
784
+ description: z.string(),
785
+ priority: z.enum(['low', 'medium', 'high']),
786
+ })),
787
+ });
788
+ // Elevation profile (cross-section) query and response
789
+ export const elevationProfileQuerySchema = z.object({
790
+ startLat: z.string().transform(Number).pipe(z.number().min(-90).max(90)),
791
+ startLng: z.string().transform(Number).pipe(z.number().min(-180).max(180)),
792
+ endLat: z.string().transform(Number).pipe(z.number().min(-90).max(90)),
793
+ endLng: z.string().transform(Number).pipe(z.number().min(-180).max(180)),
794
+ samplePoints: z.string()
795
+ .transform(Number)
796
+ .pipe(z.number().min(10).max(500))
797
+ .default('100'),
798
+ });
799
+ export const elevationProfilePointSchema = z.object({
800
+ distance: z.number(), // meters from start
801
+ elevation: z.number(), // meters
802
+ lat: z.number(),
803
+ lng: z.number(),
804
+ slope: z.number(), // percent to next point
805
+ });
806
+ export const elevationProfileResponseSchema = z.object({
807
+ fieldId: z.string().uuid(),
808
+ profile: z.array(elevationProfilePointSchema),
809
+ statistics: z.object({
810
+ totalDistance: z.number(),
811
+ elevationGain: z.number(),
812
+ elevationLoss: z.number(),
813
+ netElevationChange: z.number(),
814
+ maxElevation: z.number(),
815
+ minElevation: z.number(),
816
+ averageSlope: z.number(),
817
+ }),
818
+ keyPoints: z.array(z.object({
819
+ type: z.enum(['high_point', 'low_point', 'steep_section', 'flat_section']),
820
+ location: coordinateSchema,
821
+ distance: z.number(),
822
+ elevation: z.number(),
823
+ description: z.string(),
824
+ })),
825
+ });
826
+ // ============================================================================
571
827
  // Phase 5: Growth Stage Schemas
572
828
  // ============================================================================
573
829
  export const growthStageTimelineSchema = z.object({
@@ -602,3 +858,85 @@ export const growthStagesResponseSchema = z.object({
602
858
  currentIcon: z.string(),
603
859
  }),
604
860
  });
861
+ // ============================================================================
862
+ // Change Detection Schemas
863
+ // ============================================================================
864
+ export const changeDetectionRequestSchema = z.object({
865
+ dateA: z.string().datetime(),
866
+ dateB: z.string().datetime(),
867
+ threshold: z.number().min(0).max(1).default(0.1), // 10% change threshold
868
+ });
869
+ export const changeHotspotSchema = z.object({
870
+ geometry: geoJsonPolygonSchema,
871
+ changePercent: z.number(),
872
+ previousValue: z.number(),
873
+ currentValue: z.number(),
874
+ areaHectares: z.number(),
875
+ suggestedAction: z.string().optional(),
876
+ });
877
+ export const changeDetectionResponseSchema = z.object({
878
+ overallChange: z.number(), // Percentage change
879
+ affectedArea: z.number(), // Hectares with significant change
880
+ totalArea: z.number(),
881
+ classification: z.enum(['improvement', 'decline', 'stable']),
882
+ hotspots: z.array(changeHotspotSchema),
883
+ dateA: z.string(),
884
+ dateB: z.string(),
885
+ });
886
+ // ============================================================================
887
+ // Phase 6: Vegetation Indices Schemas
888
+ // ============================================================================
889
+ export const vegetationIndexTypeSchema = z.enum([
890
+ 'ndvi',
891
+ 'ndre',
892
+ 'msavi',
893
+ 'savi',
894
+ 'evi',
895
+ 'gndvi',
896
+ 'lai',
897
+ 'ndwi',
898
+ ]);
899
+ export const vegetationIndexQuerySchema = z.object({
900
+ date: z.string().datetime().optional(),
901
+ palette: z
902
+ .enum(['standard', 'contrasting', 'viridis', 'grayscale'])
903
+ .default('standard'),
904
+ });
905
+ export const vegetationIndexResponseSchema = z.object({
906
+ index: vegetationIndexTypeSchema,
907
+ imageUrl: z.string().url().nullable(),
908
+ bounds: z.object({
909
+ north: z.number(),
910
+ south: z.number(),
911
+ east: z.number(),
912
+ west: z.number(),
913
+ }),
914
+ statistics: z.object({
915
+ min: z.number(),
916
+ max: z.number(),
917
+ mean: z.number(),
918
+ median: z.number().nullable(),
919
+ stdDev: z.number().nullable(),
920
+ histogram: z
921
+ .array(z.object({ bin: z.number(), count: z.number() }))
922
+ .optional(),
923
+ }),
924
+ colorPalette: z.array(z.string()),
925
+ valueRange: z.tuple([z.number(), z.number()]),
926
+ date: z.string(),
927
+ dataSource: z.string(),
928
+ });
929
+ export const indexMetadataSchema = z.object({
930
+ type: vegetationIndexTypeSchema,
931
+ name: z.string(),
932
+ description: z.string(),
933
+ bestUseCase: z.string(),
934
+ recommendedGrowthStage: z.string(),
935
+ available: z.boolean(),
936
+ formula: z.string().optional(),
937
+ });
938
+ export const availableIndicesResponseSchema = z.object({
939
+ indices: z.array(indexMetadataSchema),
940
+ recommendedIndex: vegetationIndexTypeSchema.nullable(),
941
+ recommendationReason: z.string().nullable(),
942
+ });