@deepintel-ltd/farmpro-contracts 1.16.3 → 1.16.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"field-monitoring.routes.d.ts","sourceRoot":"","sources":["../../src/routes/field-monitoring.routes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsBxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8PhC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAC"}
1
+ {"version":3,"file":"field-monitoring.routes.d.ts","sourceRoot":"","sources":["../../src/routes/field-monitoring.routes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuBxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8PhC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { initContract } from '@ts-rest/core';
2
2
  import { z } from 'zod';
3
- import { fieldMonitoringSummarySchema, ndviTrendDataPointSchema, weeklyNDVIStatsSchema, fieldAlertSchema, fieldComparisonSchema, farmMonitoringStatsSchema, ndviTrendQuerySchema, alertsQuerySchema, triggerAnalysisResponseSchema, fieldMonitoringErrorResponseSchema, bulkReadAlertsBodySchema, bulkReadAlertsResponseSchema, soilReadingSchema, soilTrendSchema, historicalNDVIDataPointSchema, intelligentSoilProfileSchema, } from '../schemas/field-monitoring.schemas';
3
+ import { fieldMonitoringSummarySchema, ndviTrendDataPointSchema, weeklyNDVIStatsSchema, fieldAlertSchema, fieldAlertListResponseSchema, fieldComparisonSchema, farmMonitoringStatsSchema, ndviTrendQuerySchema, alertsQuerySchema, triggerAnalysisResponseSchema, fieldMonitoringErrorResponseSchema, bulkReadAlertsBodySchema, bulkReadAlertsResponseSchema, soilReadingSchema, soilTrendSchema, historicalNDVIDataPointSchema, intelligentSoilProfileSchema, } from '../schemas/field-monitoring.schemas';
4
4
  const c = initContract();
5
5
  export const fieldMonitoringRouter = c.router({
6
6
  // Get current monitoring status for a field
@@ -33,7 +33,7 @@ export const fieldMonitoringRouter = c.router({
33
33
  path: '/farms/:farmId/fields/:fieldId/monitoring/alerts',
34
34
  query: alertsQuerySchema,
35
35
  responses: {
36
- 200: z.array(fieldAlertSchema),
36
+ 200: fieldAlertListResponseSchema,
37
37
  },
38
38
  summary: 'Get alerts for a field',
39
39
  },
@@ -43,7 +43,7 @@ export const fieldMonitoringRouter = c.router({
43
43
  path: '/farms/:farmId/monitoring/alerts',
44
44
  query: alertsQuerySchema,
45
45
  responses: {
46
- 200: z.array(fieldAlertSchema),
46
+ 200: fieldAlertListResponseSchema,
47
47
  },
48
48
  summary: 'Get all alerts for a farm',
49
49
  },
@@ -2771,6 +2771,11 @@ export declare const monitoringVisualizationRouter: {
2771
2771
  elevation: number;
2772
2772
  }[];
2773
2773
  }>>;
2774
+ source: z.ZodOptional<z.ZodString>;
2775
+ resolutionM: z.ZodOptional<z.ZodNumber>;
2776
+ interpolated: z.ZodOptional<z.ZodBoolean>;
2777
+ trustNote: z.ZodOptional<z.ZodString>;
2778
+ profile: z.ZodOptional<z.ZodUnknown>;
2774
2779
  }, "strip", z.ZodTypeAny, {
2775
2780
  data: {
2776
2781
  resolution: number;
@@ -2791,6 +2796,7 @@ export declare const monitoringVisualizationRouter: {
2791
2796
  unit: "meters";
2792
2797
  mean: number;
2793
2798
  };
2799
+ source?: string | undefined;
2794
2800
  drainagePatterns?: {
2795
2801
  flowDirection: {
2796
2802
  type: "FeatureCollection";
@@ -2802,6 +2808,10 @@ export declare const monitoringVisualizationRouter: {
2802
2808
  elevation: number;
2803
2809
  }[];
2804
2810
  } | undefined;
2811
+ resolutionM?: number | undefined;
2812
+ interpolated?: boolean | undefined;
2813
+ trustNote?: string | undefined;
2814
+ profile?: unknown;
2805
2815
  }, {
2806
2816
  data: {
2807
2817
  resolution: number;
@@ -2822,6 +2832,7 @@ export declare const monitoringVisualizationRouter: {
2822
2832
  unit: "meters";
2823
2833
  mean: number;
2824
2834
  };
2835
+ source?: string | undefined;
2825
2836
  drainagePatterns?: {
2826
2837
  flowDirection: {
2827
2838
  type: "FeatureCollection";
@@ -2833,6 +2844,10 @@ export declare const monitoringVisualizationRouter: {
2833
2844
  elevation: number;
2834
2845
  }[];
2835
2846
  } | undefined;
2847
+ resolutionM?: number | undefined;
2848
+ interpolated?: boolean | undefined;
2849
+ trustNote?: string | undefined;
2850
+ profile?: unknown;
2836
2851
  }>;
2837
2852
  404: z.ZodObject<{
2838
2853
  message: z.ZodString;
@@ -3077,6 +3092,9 @@ export declare const monitoringVisualizationRouter: {
3077
3092
  color: string;
3078
3093
  }>, "many">;
3079
3094
  dataSource: z.ZodString;
3095
+ trustNote: z.ZodOptional<z.ZodString>;
3096
+ resolutionM: z.ZodOptional<z.ZodNumber>;
3097
+ interpolated: z.ZodOptional<z.ZodBoolean>;
3080
3098
  }, "strip", z.ZodTypeAny, {
3081
3099
  fieldId: string;
3082
3100
  imageUrl: string | null;
@@ -3099,6 +3117,9 @@ export declare const monitoringVisualizationRouter: {
3099
3117
  color: string;
3100
3118
  }[];
3101
3119
  dataSource: string;
3120
+ resolutionM?: number | undefined;
3121
+ interpolated?: boolean | undefined;
3122
+ trustNote?: string | undefined;
3102
3123
  }, {
3103
3124
  fieldId: string;
3104
3125
  imageUrl: string | null;
@@ -3121,6 +3142,9 @@ export declare const monitoringVisualizationRouter: {
3121
3142
  color: string;
3122
3143
  }[];
3123
3144
  dataSource: string;
3145
+ resolutionM?: number | undefined;
3146
+ interpolated?: boolean | undefined;
3147
+ trustNote?: string | undefined;
3124
3148
  }>;
3125
3149
  404: z.ZodObject<{
3126
3150
  message: z.ZodString;
@@ -3661,6 +3685,28 @@ export declare const monitoringVisualizationRouter: {
3661
3685
  irrigationConsiderations?: string | undefined;
3662
3686
  frostRiskAreas?: string | undefined;
3663
3687
  }>>;
3688
+ agriculturalSuitability: z.ZodOptional<z.ZodObject<{
3689
+ score: z.ZodNumber;
3690
+ summary: z.ZodString;
3691
+ waterloggingRisk: z.ZodEnum<["low", "medium", "high"]>;
3692
+ erosionRisk: z.ZodEnum<["low", "medium", "high"]>;
3693
+ machineryAccess: z.ZodEnum<["good", "limited", "poor"]>;
3694
+ trustNote: z.ZodString;
3695
+ }, "strip", z.ZodTypeAny, {
3696
+ summary: string;
3697
+ score: number;
3698
+ trustNote: string;
3699
+ waterloggingRisk: "low" | "medium" | "high";
3700
+ erosionRisk: "low" | "medium" | "high";
3701
+ machineryAccess: "poor" | "good" | "limited";
3702
+ }, {
3703
+ summary: string;
3704
+ score: number;
3705
+ trustNote: string;
3706
+ waterloggingRisk: "low" | "medium" | "high";
3707
+ erosionRisk: "low" | "medium" | "high";
3708
+ machineryAccess: "poor" | "good" | "limited";
3709
+ }>>;
3664
3710
  }, "strip", z.ZodTypeAny, {
3665
3711
  fieldId: string;
3666
3712
  imageUrl: string | null;
@@ -3694,6 +3740,14 @@ export declare const monitoringVisualizationRouter: {
3694
3740
  irrigationConsiderations?: string | undefined;
3695
3741
  frostRiskAreas?: string | undefined;
3696
3742
  } | undefined;
3743
+ agriculturalSuitability?: {
3744
+ summary: string;
3745
+ score: number;
3746
+ trustNote: string;
3747
+ waterloggingRisk: "low" | "medium" | "high";
3748
+ erosionRisk: "low" | "medium" | "high";
3749
+ machineryAccess: "poor" | "good" | "limited";
3750
+ } | undefined;
3697
3751
  }, {
3698
3752
  fieldId: string;
3699
3753
  imageUrl: string | null;
@@ -3727,6 +3781,236 @@ export declare const monitoringVisualizationRouter: {
3727
3781
  irrigationConsiderations?: string | undefined;
3728
3782
  frostRiskAreas?: string | undefined;
3729
3783
  } | undefined;
3784
+ agriculturalSuitability?: {
3785
+ summary: string;
3786
+ score: number;
3787
+ trustNote: string;
3788
+ waterloggingRisk: "low" | "medium" | "high";
3789
+ erosionRisk: "low" | "medium" | "high";
3790
+ machineryAccess: "poor" | "good" | "limited";
3791
+ } | undefined;
3792
+ }>;
3793
+ 404: z.ZodObject<{
3794
+ message: z.ZodString;
3795
+ code: z.ZodString;
3796
+ }, "strip", z.ZodTypeAny, {
3797
+ code: string;
3798
+ message: string;
3799
+ }, {
3800
+ code: string;
3801
+ message: string;
3802
+ }>;
3803
+ 503: z.ZodObject<{
3804
+ message: z.ZodString;
3805
+ code: z.ZodString;
3806
+ }, "strip", z.ZodTypeAny, {
3807
+ code: string;
3808
+ message: string;
3809
+ }, {
3810
+ code: string;
3811
+ message: string;
3812
+ }>;
3813
+ };
3814
+ };
3815
+ getFieldTerrainProfile: {
3816
+ query: z.ZodObject<{
3817
+ resolution: z.ZodDefault<z.ZodEnum<["low", "medium", "high"]>>;
3818
+ }, "strip", z.ZodTypeAny, {
3819
+ resolution: "low" | "medium" | "high";
3820
+ }, {
3821
+ resolution?: "low" | "medium" | "high" | undefined;
3822
+ }>;
3823
+ summary: "Get reusable field terrain profile (DEM-derived summary)";
3824
+ method: "GET";
3825
+ path: "/farms/:farmId/fields/:fieldId/terrain-profile";
3826
+ responses: {
3827
+ 200: z.ZodObject<{
3828
+ fieldId: z.ZodString;
3829
+ farmId: z.ZodOptional<z.ZodString>;
3830
+ source: z.ZodString;
3831
+ resolutionM: z.ZodNumber;
3832
+ sampledAt: z.ZodString;
3833
+ interpolated: z.ZodDefault<z.ZodBoolean>;
3834
+ trustNote: z.ZodString;
3835
+ elevation: z.ZodObject<{
3836
+ min: z.ZodNumber;
3837
+ max: z.ZodNumber;
3838
+ mean: z.ZodNumber;
3839
+ range: z.ZodNumber;
3840
+ unit: z.ZodLiteral<"meters">;
3841
+ }, "strip", z.ZodTypeAny, {
3842
+ min: number;
3843
+ max: number;
3844
+ unit: "meters";
3845
+ mean: number;
3846
+ range: number;
3847
+ }, {
3848
+ min: number;
3849
+ max: number;
3850
+ unit: "meters";
3851
+ mean: number;
3852
+ range: number;
3853
+ }>;
3854
+ slope: z.ZodObject<{
3855
+ medianPct: z.ZodNumber;
3856
+ meanPct: z.ZodNumber;
3857
+ maxPct: z.ZodNumber;
3858
+ percentByClass: z.ZodObject<{
3859
+ flat: z.ZodNumber;
3860
+ gentle: z.ZodNumber;
3861
+ moderate: z.ZodNumber;
3862
+ steep: z.ZodNumber;
3863
+ }, "strip", z.ZodTypeAny, {
3864
+ flat: number;
3865
+ moderate: number;
3866
+ gentle: number;
3867
+ steep: number;
3868
+ }, {
3869
+ flat: number;
3870
+ moderate: number;
3871
+ gentle: number;
3872
+ steep: number;
3873
+ }>;
3874
+ }, "strip", z.ZodTypeAny, {
3875
+ medianPct: number;
3876
+ meanPct: number;
3877
+ maxPct: number;
3878
+ percentByClass: {
3879
+ flat: number;
3880
+ moderate: number;
3881
+ gentle: number;
3882
+ steep: number;
3883
+ };
3884
+ }, {
3885
+ medianPct: number;
3886
+ meanPct: number;
3887
+ maxPct: number;
3888
+ percentByClass: {
3889
+ flat: number;
3890
+ moderate: number;
3891
+ gentle: number;
3892
+ steep: number;
3893
+ };
3894
+ }>;
3895
+ aspect: z.ZodObject<{
3896
+ dominant: z.ZodString;
3897
+ flatPercent: z.ZodNumber;
3898
+ }, "strip", z.ZodTypeAny, {
3899
+ flatPercent: number;
3900
+ dominant: string;
3901
+ }, {
3902
+ flatPercent: number;
3903
+ dominant: string;
3904
+ }>;
3905
+ hydrology: z.ZodObject<{
3906
+ wetnessClass: z.ZodEnum<["low", "moderate", "high"]>;
3907
+ lowPointCount: z.ZodNumber;
3908
+ dominantFlowDirection: z.ZodOptional<z.ZodString>;
3909
+ }, "strip", z.ZodTypeAny, {
3910
+ wetnessClass: "low" | "high" | "moderate";
3911
+ lowPointCount: number;
3912
+ dominantFlowDirection?: string | undefined;
3913
+ }, {
3914
+ wetnessClass: "low" | "high" | "moderate";
3915
+ lowPointCount: number;
3916
+ dominantFlowDirection?: string | undefined;
3917
+ }>;
3918
+ risks: z.ZodObject<{
3919
+ waterloggingRisk: z.ZodEnum<["low", "medium", "high"]>;
3920
+ erosionRisk: z.ZodEnum<["low", "medium", "high"]>;
3921
+ machineryAccess: z.ZodEnum<["good", "limited", "poor"]>;
3922
+ }, "strip", z.ZodTypeAny, {
3923
+ waterloggingRisk: "low" | "medium" | "high";
3924
+ erosionRisk: "low" | "medium" | "high";
3925
+ machineryAccess: "poor" | "good" | "limited";
3926
+ }, {
3927
+ waterloggingRisk: "low" | "medium" | "high";
3928
+ erosionRisk: "low" | "medium" | "high";
3929
+ machineryAccess: "poor" | "good" | "limited";
3930
+ }>;
3931
+ insights: z.ZodArray<z.ZodString, "many">;
3932
+ }, "strip", z.ZodTypeAny, {
3933
+ source: string;
3934
+ fieldId: string;
3935
+ risks: {
3936
+ waterloggingRisk: "low" | "medium" | "high";
3937
+ erosionRisk: "low" | "medium" | "high";
3938
+ machineryAccess: "poor" | "good" | "limited";
3939
+ };
3940
+ elevation: {
3941
+ min: number;
3942
+ max: number;
3943
+ unit: "meters";
3944
+ mean: number;
3945
+ range: number;
3946
+ };
3947
+ resolutionM: number;
3948
+ interpolated: boolean;
3949
+ trustNote: string;
3950
+ slope: {
3951
+ medianPct: number;
3952
+ meanPct: number;
3953
+ maxPct: number;
3954
+ percentByClass: {
3955
+ flat: number;
3956
+ moderate: number;
3957
+ gentle: number;
3958
+ steep: number;
3959
+ };
3960
+ };
3961
+ sampledAt: string;
3962
+ aspect: {
3963
+ flatPercent: number;
3964
+ dominant: string;
3965
+ };
3966
+ hydrology: {
3967
+ wetnessClass: "low" | "high" | "moderate";
3968
+ lowPointCount: number;
3969
+ dominantFlowDirection?: string | undefined;
3970
+ };
3971
+ insights: string[];
3972
+ farmId?: string | undefined;
3973
+ }, {
3974
+ source: string;
3975
+ fieldId: string;
3976
+ risks: {
3977
+ waterloggingRisk: "low" | "medium" | "high";
3978
+ erosionRisk: "low" | "medium" | "high";
3979
+ machineryAccess: "poor" | "good" | "limited";
3980
+ };
3981
+ elevation: {
3982
+ min: number;
3983
+ max: number;
3984
+ unit: "meters";
3985
+ mean: number;
3986
+ range: number;
3987
+ };
3988
+ resolutionM: number;
3989
+ trustNote: string;
3990
+ slope: {
3991
+ medianPct: number;
3992
+ meanPct: number;
3993
+ maxPct: number;
3994
+ percentByClass: {
3995
+ flat: number;
3996
+ moderate: number;
3997
+ gentle: number;
3998
+ steep: number;
3999
+ };
4000
+ };
4001
+ sampledAt: string;
4002
+ aspect: {
4003
+ flatPercent: number;
4004
+ dominant: string;
4005
+ };
4006
+ hydrology: {
4007
+ wetnessClass: "low" | "high" | "moderate";
4008
+ lowPointCount: number;
4009
+ dominantFlowDirection?: string | undefined;
4010
+ };
4011
+ insights: string[];
4012
+ farmId?: string | undefined;
4013
+ interpolated?: boolean | undefined;
3730
4014
  }>;
3731
4015
  404: z.ZodObject<{
3732
4016
  message: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"monitoring-visualization.routes.d.ts","sourceRoot":"","sources":["../../src/routes/monitoring-visualization.routes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAqExB,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0gBxC,CAAC;AAEH,MAAM,MAAM,6BAA6B,GAAG,OAAO,6BAA6B,CAAC"}
1
+ {"version":3,"file":"monitoring-visualization.routes.d.ts","sourceRoot":"","sources":["../../src/routes/monitoring-visualization.routes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsExB,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyhBxC,CAAC;AAEH,MAAM,MAAM,6BAA6B,GAAG,OAAO,6BAA6B,CAAC"}
@@ -19,6 +19,7 @@ changeDetectionRequestSchema, changeDetectionResponseSchema,
19
19
  vegetationIndexTypeSchema, vegetationIndexQuerySchema, vegetationIndexResponseSchema, availableIndicesResponseSchema,
20
20
  // Common schemas
21
21
  visualizationErrorSchema, } from '../schemas/monitoring-visualization.schemas';
22
+ import { fieldTerrainProfileResponseSchema } from '../schemas/terrain-profile.schemas';
22
23
  const c = initContract();
23
24
  export const monitoringVisualizationRouter = c.router({
24
25
  // ============================================================================
@@ -418,6 +419,20 @@ export const monitoringVisualizationRouter = c.router({
418
419
  },
419
420
  summary: 'Get aspect (slope direction) analysis for field',
420
421
  },
422
+ /**
423
+ * Stable FieldTerrainProfile for any consumer (crop rec, yield, planner, Farm Brain)
424
+ */
425
+ getFieldTerrainProfile: {
426
+ method: 'GET',
427
+ path: '/farms/:farmId/fields/:fieldId/terrain-profile',
428
+ query: terrainQuerySchema,
429
+ responses: {
430
+ 200: fieldTerrainProfileResponseSchema,
431
+ 404: visualizationErrorSchema,
432
+ 503: visualizationErrorSchema,
433
+ },
434
+ summary: 'Get reusable field terrain profile (DEM-derived summary)',
435
+ },
421
436
  /**
422
437
  * Get drainage analysis
423
438
  * Returns water flow direction, low points, and watersheds