@deepintel-ltd/farmpro-contracts 1.7.14 → 1.7.20
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.
- package/dist/index.d.ts +18 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -0
- package/dist/routes/agent-workflows.routes.d.ts +88 -88
- package/dist/routes/agents.routes.d.ts +3266 -6
- package/dist/routes/agents.routes.d.ts.map +1 -1
- package/dist/routes/agents.routes.js +130 -1
- package/dist/routes/analytics.routes.d.ts +20 -20
- package/dist/routes/cooperative.routes.d.ts +1327 -0
- package/dist/routes/cooperative.routes.d.ts.map +1 -0
- package/dist/routes/cooperative.routes.js +47 -0
- package/dist/routes/documents.routes.d.ts +855 -58
- package/dist/routes/documents.routes.d.ts.map +1 -1
- package/dist/routes/documents.routes.js +43 -1
- package/dist/routes/equipment.routes.d.ts +38 -38
- package/dist/routes/extension.routes.d.ts +2431 -0
- package/dist/routes/extension.routes.d.ts.map +1 -0
- package/dist/routes/extension.routes.js +75 -0
- package/dist/routes/farm-status.routes.d.ts +315 -0
- package/dist/routes/farm-status.routes.d.ts.map +1 -0
- package/dist/routes/farm-status.routes.js +26 -0
- package/dist/routes/farms.routes.d.ts +775 -0
- package/dist/routes/farms.routes.d.ts.map +1 -1
- package/dist/routes/farms.routes.js +15 -1
- package/dist/routes/fertigation.routes.d.ts +148 -148
- package/dist/routes/field-monitoring.routes.d.ts +557 -52
- package/dist/routes/field-monitoring.routes.d.ts.map +1 -1
- package/dist/routes/field-monitoring.routes.js +23 -1
- package/dist/routes/field-observations.routes.d.ts +56 -56
- package/dist/routes/fields.routes.d.ts +156 -155
- package/dist/routes/fields.routes.d.ts.map +1 -1
- package/dist/routes/finance.routes.d.ts +3493 -0
- package/dist/routes/finance.routes.d.ts.map +1 -1
- package/dist/routes/finance.routes.js +158 -1
- package/dist/routes/geofences.routes.d.ts.map +1 -1
- package/dist/routes/index.d.ts +18 -0
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +12 -0
- package/dist/routes/irrigation.routes.d.ts +6 -6
- package/dist/routes/live-monitor.routes.d.ts +513 -0
- package/dist/routes/live-monitor.routes.d.ts.map +1 -0
- package/dist/routes/live-monitor.routes.js +81 -0
- package/dist/routes/livestock-map.routes.d.ts +4 -4
- package/dist/routes/measurements.routes.d.ts +13 -4
- package/dist/routes/measurements.routes.d.ts.map +1 -1
- package/dist/routes/monitoring-visualization.routes.d.ts +40 -33
- package/dist/routes/monitoring-visualization.routes.d.ts.map +1 -1
- package/dist/routes/monitoring-visualization.routes.js +7 -4
- package/dist/routes/notifications.routes.d.ts +1350 -0
- package/dist/routes/notifications.routes.d.ts.map +1 -0
- package/dist/routes/notifications.routes.js +66 -0
- package/dist/routes/pest-disease-risk.routes.d.ts +20 -20
- package/dist/routes/prescription-maps.routes.d.ts +567 -20
- package/dist/routes/prescription-maps.routes.d.ts.map +1 -1
- package/dist/routes/prescription-maps.routes.js +18 -1
- package/dist/routes/soil-tests.routes.d.ts +30 -30
- package/dist/routes/subscriptions.routes.d.ts +14 -14
- package/dist/routes/team-payments.routes.d.ts +9571 -0
- package/dist/routes/team-payments.routes.d.ts.map +1 -0
- package/dist/routes/team-payments.routes.js +262 -0
- package/dist/routes/weather.routes.d.ts +545 -52
- package/dist/routes/weather.routes.d.ts.map +1 -1
- package/dist/routes/weather.routes.js +13 -1
- package/dist/routes/yield-prediction.routes.d.ts +30 -30
- package/dist/schemas/agent-workflows.schemas.d.ts +92 -92
- package/dist/schemas/agents.schemas.d.ts +1121 -0
- package/dist/schemas/agents.schemas.d.ts.map +1 -1
- package/dist/schemas/agents.schemas.js +181 -0
- package/dist/schemas/analytics.schemas.d.ts +56 -56
- package/dist/schemas/cooperative.schemas.d.ts +560 -0
- package/dist/schemas/cooperative.schemas.d.ts.map +1 -0
- package/dist/schemas/cooperative.schemas.js +71 -0
- package/dist/schemas/documents.schemas.d.ts +248 -48
- package/dist/schemas/documents.schemas.d.ts.map +1 -1
- package/dist/schemas/documents.schemas.js +38 -0
- package/dist/schemas/equipment.schemas.d.ts +30 -30
- package/dist/schemas/extension.schemas.d.ts +1204 -0
- package/dist/schemas/extension.schemas.d.ts.map +1 -0
- package/dist/schemas/extension.schemas.js +68 -0
- package/dist/schemas/farm-status.schemas.d.ts +451 -0
- package/dist/schemas/farm-status.schemas.d.ts.map +1 -0
- package/dist/schemas/farm-status.schemas.js +44 -0
- package/dist/schemas/farms.schemas.d.ts +591 -0
- package/dist/schemas/farms.schemas.d.ts.map +1 -1
- package/dist/schemas/farms.schemas.js +44 -0
- package/dist/schemas/fertigation.schemas.d.ts +50 -50
- package/dist/schemas/field-monitoring.schemas.d.ts +318 -42
- package/dist/schemas/field-monitoring.schemas.d.ts.map +1 -1
- package/dist/schemas/field-monitoring.schemas.js +9 -0
- package/dist/schemas/field-observations.schemas.d.ts +45 -44
- package/dist/schemas/field-observations.schemas.d.ts.map +1 -1
- package/dist/schemas/fields.schemas.d.ts +188 -186
- package/dist/schemas/fields.schemas.d.ts.map +1 -1
- package/dist/schemas/fields.schemas.js +10 -2
- package/dist/schemas/finance.schemas.d.ts +1057 -0
- package/dist/schemas/finance.schemas.d.ts.map +1 -1
- package/dist/schemas/finance.schemas.js +170 -0
- package/dist/schemas/irrigation.schemas.d.ts +8 -8
- package/dist/schemas/live-monitor.schemas.d.ts +596 -0
- package/dist/schemas/live-monitor.schemas.d.ts.map +1 -0
- package/dist/schemas/live-monitor.schemas.js +107 -0
- package/dist/schemas/livestock-map.schemas.d.ts +10 -10
- package/dist/schemas/measurements.schemas.d.ts +21 -8
- package/dist/schemas/measurements.schemas.d.ts.map +1 -1
- package/dist/schemas/measurements.schemas.js +13 -6
- package/dist/schemas/monitoring-visualization.schemas.d.ts +47 -40
- package/dist/schemas/monitoring-visualization.schemas.d.ts.map +1 -1
- package/dist/schemas/monitoring-visualization.schemas.js +24 -16
- package/dist/schemas/notifications.schemas.d.ts +464 -0
- package/dist/schemas/notifications.schemas.d.ts.map +1 -0
- package/dist/schemas/notifications.schemas.js +40 -0
- package/dist/schemas/pest-disease-risk.schemas.d.ts +18 -18
- package/dist/schemas/prescription-maps.schemas.d.ts +41 -18
- package/dist/schemas/prescription-maps.schemas.d.ts.map +1 -1
- package/dist/schemas/prescription-maps.schemas.js +8 -0
- package/dist/schemas/recommendations.schemas.d.ts +2 -2
- package/dist/schemas/soil-tests.schemas.d.ts +28 -28
- package/dist/schemas/subscriptions.schemas.d.ts +22 -22
- package/dist/schemas/team-payments.schemas.d.ts +2604 -0
- package/dist/schemas/team-payments.schemas.d.ts.map +1 -0
- package/dist/schemas/team-payments.schemas.js +151 -0
- package/dist/schemas/weather.schemas.d.ts +789 -112
- package/dist/schemas/weather.schemas.d.ts.map +1 -1
- package/dist/schemas/weather.schemas.js +37 -0
- package/dist/schemas/yield-prediction.schemas.d.ts +12 -12
- package/package.json +1 -1
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { cameraSchema, sensorSchema, } from './monitoring-visualization.schemas';
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Live Monitor — Farm-level aggregation schemas
|
|
5
|
+
// ============================================================================
|
|
6
|
+
export const liveMonitorErrorSchema = z.object({
|
|
7
|
+
message: z.string(),
|
|
8
|
+
code: z.string(),
|
|
9
|
+
});
|
|
10
|
+
export const liveMonitorSummarySchema = z.object({
|
|
11
|
+
farmId: z.string().uuid(),
|
|
12
|
+
farmName: z.string(),
|
|
13
|
+
camerasOnline: z.number().int().min(0),
|
|
14
|
+
camerasOffline: z.number().int().min(0),
|
|
15
|
+
camerasTotal: z.number().int().min(0),
|
|
16
|
+
sensorsActive: z.number().int().min(0),
|
|
17
|
+
sensorsInactive: z.number().int().min(0),
|
|
18
|
+
sensorsTotal: z.number().int().min(0),
|
|
19
|
+
activeAlerts: z.number().int().min(0),
|
|
20
|
+
unreadAlerts: z.number().int().min(0),
|
|
21
|
+
fieldsWithMonitoring: z.number().int().min(0),
|
|
22
|
+
lastUpdatedAt: z.string().datetime(),
|
|
23
|
+
});
|
|
24
|
+
export const liveMonitorCameraSchema = cameraSchema.extend({
|
|
25
|
+
fieldId: z.string().uuid(),
|
|
26
|
+
fieldName: z.string(),
|
|
27
|
+
});
|
|
28
|
+
export const liveMonitorCamerasResponseSchema = z.object({
|
|
29
|
+
farmId: z.string().uuid(),
|
|
30
|
+
cameras: z.array(liveMonitorCameraSchema),
|
|
31
|
+
totalCameras: z.number().int().min(0),
|
|
32
|
+
});
|
|
33
|
+
export const liveMonitorSensorSchema = sensorSchema.extend({
|
|
34
|
+
fieldId: z.string().uuid(),
|
|
35
|
+
fieldName: z.string(),
|
|
36
|
+
});
|
|
37
|
+
export const liveMonitorSensorsResponseSchema = z.object({
|
|
38
|
+
farmId: z.string().uuid(),
|
|
39
|
+
sensors: z.array(liveMonitorSensorSchema),
|
|
40
|
+
totalSensors: z.number().int().min(0),
|
|
41
|
+
});
|
|
42
|
+
export const liveMonitorEventTypeSchema = z.enum([
|
|
43
|
+
'alert',
|
|
44
|
+
'camera_motion',
|
|
45
|
+
'camera_snapshot',
|
|
46
|
+
'camera_status',
|
|
47
|
+
'sensor_threshold',
|
|
48
|
+
'weather',
|
|
49
|
+
'ndvi_change',
|
|
50
|
+
]);
|
|
51
|
+
export const liveMonitorEventSeveritySchema = z.enum([
|
|
52
|
+
'info',
|
|
53
|
+
'low',
|
|
54
|
+
'medium',
|
|
55
|
+
'high',
|
|
56
|
+
'critical',
|
|
57
|
+
]);
|
|
58
|
+
export const liveMonitorEventSchema = z.object({
|
|
59
|
+
id: z.string(),
|
|
60
|
+
type: liveMonitorEventTypeSchema,
|
|
61
|
+
severity: liveMonitorEventSeveritySchema.optional(),
|
|
62
|
+
title: z.string(),
|
|
63
|
+
message: z.string(),
|
|
64
|
+
timestamp: z.string().datetime(),
|
|
65
|
+
fieldId: z.string().uuid().optional(),
|
|
66
|
+
fieldName: z.string().optional(),
|
|
67
|
+
cameraId: z.string().uuid().optional(),
|
|
68
|
+
sensorId: z.string().uuid().optional(),
|
|
69
|
+
icon: z.string().optional(),
|
|
70
|
+
});
|
|
71
|
+
export const liveMonitorEventsQuerySchema = z.object({
|
|
72
|
+
limit: z
|
|
73
|
+
.string()
|
|
74
|
+
.transform(Number)
|
|
75
|
+
.pipe(z.number().int().min(1).max(100))
|
|
76
|
+
.default('20'),
|
|
77
|
+
since: z.string().datetime().optional(),
|
|
78
|
+
});
|
|
79
|
+
export const liveMonitorEventsResponseSchema = z.object({
|
|
80
|
+
farmId: z.string().uuid(),
|
|
81
|
+
events: z.array(liveMonitorEventSchema),
|
|
82
|
+
totalEvents: z.number().int().min(0),
|
|
83
|
+
});
|
|
84
|
+
export const cameraStreamTokenResponseSchema = z.object({
|
|
85
|
+
cameraId: z.string().uuid(),
|
|
86
|
+
farmId: z.string().uuid(),
|
|
87
|
+
token: z.string(),
|
|
88
|
+
expiresAt: z.string().datetime(),
|
|
89
|
+
streamUrl: z.string().url().nullable(),
|
|
90
|
+
quality: z.enum(['low', 'medium', 'high']).default('medium'),
|
|
91
|
+
});
|
|
92
|
+
export const captureSnapshotQuerySchema = z.object({
|
|
93
|
+
dataSaver: z
|
|
94
|
+
.string()
|
|
95
|
+
.optional()
|
|
96
|
+
.transform((val) => val === 'true' || val === '1'),
|
|
97
|
+
});
|
|
98
|
+
export const captureSnapshotResponseSchema = z.object({
|
|
99
|
+
snapshotId: z.string().uuid(),
|
|
100
|
+
cameraId: z.string().uuid(),
|
|
101
|
+
farmId: z.string().uuid(),
|
|
102
|
+
imageUrl: z.string().url(),
|
|
103
|
+
capturedAt: z.string().datetime(),
|
|
104
|
+
triggerType: z.enum(['manual', 'scheduled', 'motion']),
|
|
105
|
+
dataSaver: z.boolean(),
|
|
106
|
+
resolution: z.string().nullable(),
|
|
107
|
+
});
|
|
@@ -49,13 +49,13 @@ export declare const movementTrailPointSchema: z.ZodObject<{
|
|
|
49
49
|
lng: z.ZodNumber;
|
|
50
50
|
timestamp: z.ZodString;
|
|
51
51
|
}, "strip", z.ZodTypeAny, {
|
|
52
|
-
timestamp: string;
|
|
53
52
|
lat: number;
|
|
54
53
|
lng: number;
|
|
55
|
-
}, {
|
|
56
54
|
timestamp: string;
|
|
55
|
+
}, {
|
|
57
56
|
lat: number;
|
|
58
57
|
lng: number;
|
|
58
|
+
timestamp: string;
|
|
59
59
|
}>;
|
|
60
60
|
export declare const livestockMovementTrailSchema: z.ZodObject<{
|
|
61
61
|
livestockId: z.ZodString;
|
|
@@ -64,13 +64,13 @@ export declare const livestockMovementTrailSchema: z.ZodObject<{
|
|
|
64
64
|
lng: z.ZodNumber;
|
|
65
65
|
timestamp: z.ZodString;
|
|
66
66
|
}, "strip", z.ZodTypeAny, {
|
|
67
|
-
timestamp: string;
|
|
68
67
|
lat: number;
|
|
69
68
|
lng: number;
|
|
70
|
-
}, {
|
|
71
69
|
timestamp: string;
|
|
70
|
+
}, {
|
|
72
71
|
lat: number;
|
|
73
72
|
lng: number;
|
|
73
|
+
timestamp: string;
|
|
74
74
|
}>, "many">;
|
|
75
75
|
dateRange: z.ZodObject<{
|
|
76
76
|
start: z.ZodString;
|
|
@@ -89,9 +89,9 @@ export declare const livestockMovementTrailSchema: z.ZodObject<{
|
|
|
89
89
|
};
|
|
90
90
|
livestockId: string;
|
|
91
91
|
points: {
|
|
92
|
-
timestamp: string;
|
|
93
92
|
lat: number;
|
|
94
93
|
lng: number;
|
|
94
|
+
timestamp: string;
|
|
95
95
|
}[];
|
|
96
96
|
}, {
|
|
97
97
|
dateRange: {
|
|
@@ -100,9 +100,9 @@ export declare const livestockMovementTrailSchema: z.ZodObject<{
|
|
|
100
100
|
};
|
|
101
101
|
livestockId: string;
|
|
102
102
|
points: {
|
|
103
|
-
timestamp: string;
|
|
104
103
|
lat: number;
|
|
105
104
|
lng: number;
|
|
105
|
+
timestamp: string;
|
|
106
106
|
}[];
|
|
107
107
|
}>;
|
|
108
108
|
export declare const heatmapPointSchema: z.ZodObject<{
|
|
@@ -229,13 +229,13 @@ export declare const movementTrailListResponseSchema: z.ZodArray<z.ZodObject<{
|
|
|
229
229
|
lng: z.ZodNumber;
|
|
230
230
|
timestamp: z.ZodString;
|
|
231
231
|
}, "strip", z.ZodTypeAny, {
|
|
232
|
-
timestamp: string;
|
|
233
232
|
lat: number;
|
|
234
233
|
lng: number;
|
|
235
|
-
}, {
|
|
236
234
|
timestamp: string;
|
|
235
|
+
}, {
|
|
237
236
|
lat: number;
|
|
238
237
|
lng: number;
|
|
238
|
+
timestamp: string;
|
|
239
239
|
}>, "many">;
|
|
240
240
|
dateRange: z.ZodObject<{
|
|
241
241
|
start: z.ZodString;
|
|
@@ -254,9 +254,9 @@ export declare const movementTrailListResponseSchema: z.ZodArray<z.ZodObject<{
|
|
|
254
254
|
};
|
|
255
255
|
livestockId: string;
|
|
256
256
|
points: {
|
|
257
|
-
timestamp: string;
|
|
258
257
|
lat: number;
|
|
259
258
|
lng: number;
|
|
259
|
+
timestamp: string;
|
|
260
260
|
}[];
|
|
261
261
|
}, {
|
|
262
262
|
dateRange: {
|
|
@@ -265,9 +265,9 @@ export declare const movementTrailListResponseSchema: z.ZodArray<z.ZodObject<{
|
|
|
265
265
|
};
|
|
266
266
|
livestockId: string;
|
|
267
267
|
points: {
|
|
268
|
-
timestamp: string;
|
|
269
268
|
lat: number;
|
|
270
269
|
lng: number;
|
|
270
|
+
timestamp: string;
|
|
271
271
|
}[];
|
|
272
272
|
}>, "many">;
|
|
273
273
|
export declare const heatmapResponseSchema: z.ZodArray<z.ZodObject<{
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
/**
|
|
3
|
-
* Measurement type enum matching Prisma MeasurementType
|
|
3
|
+
* Measurement type enum matching Prisma MeasurementType.
|
|
4
|
+
* API accepts both uppercase and lowercase (plan uses lowercase).
|
|
4
5
|
*/
|
|
5
6
|
export declare const measurementTypeSchema: z.ZodEnum<["DISTANCE", "AREA", "PERIMETER", "RADIUS"]>;
|
|
7
|
+
export declare const measurementTypeInputSchema: z.ZodEffects<z.ZodEnum<["DISTANCE", "AREA", "PERIMETER", "RADIUS", "distance", "area", "perimeter", "radius"]>, "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS", "area" | "distance" | "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS" | "perimeter" | "radius">;
|
|
6
8
|
/**
|
|
7
9
|
* Segment schema for multi-point measurements
|
|
8
10
|
*/
|
|
@@ -21,7 +23,8 @@ export declare const measurementSegmentSchema: z.ZodObject<{
|
|
|
21
23
|
*/
|
|
22
24
|
export declare const coordinatePointSchema: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
|
|
23
25
|
/**
|
|
24
|
-
* Measurement response schema
|
|
26
|
+
* Measurement response schema.
|
|
27
|
+
* Includes optional "formatted" (e.g. "980 meters") for map plan alignment.
|
|
25
28
|
*/
|
|
26
29
|
export declare const measurementSchema: z.ZodObject<{
|
|
27
30
|
id: z.ZodString;
|
|
@@ -32,6 +35,7 @@ export declare const measurementSchema: z.ZodObject<{
|
|
|
32
35
|
points: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">;
|
|
33
36
|
result: z.ZodNumber;
|
|
34
37
|
unit: z.ZodString;
|
|
38
|
+
formatted: z.ZodOptional<z.ZodString>;
|
|
35
39
|
segments: z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
36
40
|
distance: z.ZodNumber;
|
|
37
41
|
bearing: z.ZodOptional<z.ZodNumber>;
|
|
@@ -61,6 +65,7 @@ export declare const measurementSchema: z.ZodObject<{
|
|
|
61
65
|
distance: number;
|
|
62
66
|
bearing?: number | undefined;
|
|
63
67
|
}[] | null;
|
|
68
|
+
formatted?: string | undefined;
|
|
64
69
|
}, {
|
|
65
70
|
type: "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS";
|
|
66
71
|
id: string;
|
|
@@ -77,12 +82,14 @@ export declare const measurementSchema: z.ZodObject<{
|
|
|
77
82
|
distance: number;
|
|
78
83
|
bearing?: number | undefined;
|
|
79
84
|
}[] | null;
|
|
85
|
+
formatted?: string | undefined;
|
|
80
86
|
}>;
|
|
81
87
|
/**
|
|
82
|
-
* Create measurement request body schema
|
|
88
|
+
* Create measurement request body schema.
|
|
89
|
+
* Type accepts lowercase (distance, area, etc.) or uppercase; normalized to uppercase.
|
|
83
90
|
*/
|
|
84
91
|
export declare const createMeasurementBodySchema: z.ZodObject<{
|
|
85
|
-
type: z.ZodEnum<["DISTANCE", "AREA", "PERIMETER", "RADIUS"]>;
|
|
92
|
+
type: z.ZodEffects<z.ZodEnum<["DISTANCE", "AREA", "PERIMETER", "RADIUS", "distance", "area", "perimeter", "radius"]>, "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS", "area" | "distance" | "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS" | "perimeter" | "radius">;
|
|
86
93
|
label: z.ZodOptional<z.ZodString>;
|
|
87
94
|
points: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">;
|
|
88
95
|
result: z.ZodNumber;
|
|
@@ -94,21 +101,21 @@ export declare const createMeasurementBodySchema: z.ZodObject<{
|
|
|
94
101
|
points: [number, number][];
|
|
95
102
|
label?: string | undefined;
|
|
96
103
|
}, {
|
|
97
|
-
type: "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS";
|
|
104
|
+
type: "area" | "distance" | "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS" | "perimeter" | "radius";
|
|
98
105
|
unit: string;
|
|
99
106
|
result: number;
|
|
100
107
|
points: [number, number][];
|
|
101
108
|
label?: string | undefined;
|
|
102
109
|
}>;
|
|
103
110
|
/**
|
|
104
|
-
* Query schema for filtering measurements by type
|
|
111
|
+
* Query schema for filtering measurements by type (accepts lowercase or uppercase)
|
|
105
112
|
*/
|
|
106
113
|
export declare const measurementListQuerySchema: z.ZodObject<{
|
|
107
|
-
type: z.ZodOptional<z.ZodEnum<["DISTANCE", "AREA", "PERIMETER", "RADIUS"]>>;
|
|
114
|
+
type: z.ZodOptional<z.ZodEffects<z.ZodEnum<["DISTANCE", "AREA", "PERIMETER", "RADIUS", "distance", "area", "perimeter", "radius"]>, "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS", "area" | "distance" | "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS" | "perimeter" | "radius">>;
|
|
108
115
|
}, "strip", z.ZodTypeAny, {
|
|
109
116
|
type?: "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS" | undefined;
|
|
110
117
|
}, {
|
|
111
|
-
type?: "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS" | undefined;
|
|
118
|
+
type?: "area" | "distance" | "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS" | "perimeter" | "radius" | undefined;
|
|
112
119
|
}>;
|
|
113
120
|
/**
|
|
114
121
|
* List response schema
|
|
@@ -122,6 +129,7 @@ export declare const measurementListResponseSchema: z.ZodArray<z.ZodObject<{
|
|
|
122
129
|
points: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">;
|
|
123
130
|
result: z.ZodNumber;
|
|
124
131
|
unit: z.ZodString;
|
|
132
|
+
formatted: z.ZodOptional<z.ZodString>;
|
|
125
133
|
segments: z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
126
134
|
distance: z.ZodNumber;
|
|
127
135
|
bearing: z.ZodOptional<z.ZodNumber>;
|
|
@@ -151,6 +159,7 @@ export declare const measurementListResponseSchema: z.ZodArray<z.ZodObject<{
|
|
|
151
159
|
distance: number;
|
|
152
160
|
bearing?: number | undefined;
|
|
153
161
|
}[] | null;
|
|
162
|
+
formatted?: string | undefined;
|
|
154
163
|
}, {
|
|
155
164
|
type: "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS";
|
|
156
165
|
id: string;
|
|
@@ -167,6 +176,7 @@ export declare const measurementListResponseSchema: z.ZodArray<z.ZodObject<{
|
|
|
167
176
|
distance: number;
|
|
168
177
|
bearing?: number | undefined;
|
|
169
178
|
}[] | null;
|
|
179
|
+
formatted?: string | undefined;
|
|
170
180
|
}>, "many">;
|
|
171
181
|
/**
|
|
172
182
|
* Single measurement response schema
|
|
@@ -180,6 +190,7 @@ export declare const measurementSingleResponseSchema: z.ZodObject<{
|
|
|
180
190
|
points: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">;
|
|
181
191
|
result: z.ZodNumber;
|
|
182
192
|
unit: z.ZodString;
|
|
193
|
+
formatted: z.ZodOptional<z.ZodString>;
|
|
183
194
|
segments: z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
184
195
|
distance: z.ZodNumber;
|
|
185
196
|
bearing: z.ZodOptional<z.ZodNumber>;
|
|
@@ -209,6 +220,7 @@ export declare const measurementSingleResponseSchema: z.ZodObject<{
|
|
|
209
220
|
distance: number;
|
|
210
221
|
bearing?: number | undefined;
|
|
211
222
|
}[] | null;
|
|
223
|
+
formatted?: string | undefined;
|
|
212
224
|
}, {
|
|
213
225
|
type: "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS";
|
|
214
226
|
id: string;
|
|
@@ -225,6 +237,7 @@ export declare const measurementSingleResponseSchema: z.ZodObject<{
|
|
|
225
237
|
distance: number;
|
|
226
238
|
bearing?: number | undefined;
|
|
227
239
|
}[] | null;
|
|
240
|
+
formatted?: string | undefined;
|
|
228
241
|
}>;
|
|
229
242
|
export type MeasurementType = z.infer<typeof measurementTypeSchema>;
|
|
230
243
|
export type MeasurementSegment = z.infer<typeof measurementSegmentSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"measurements.schemas.d.ts","sourceRoot":"","sources":["../../src/schemas/measurements.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB
|
|
1
|
+
{"version":3,"file":"measurements.schemas.d.ts","sourceRoot":"","sources":["../../src/schemas/measurements.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,qBAAqB,wDAAsD,CAAC;AACzF,eAAO,MAAM,0BAA0B,4PAE6C,CAAC;AAErF;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;EAGnC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,qBAAqB,8CAAoC,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc5B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;EAMtC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;;;EAErC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAA6B,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAoB,CAAC;AAGjE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACpE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
/**
|
|
3
|
-
* Measurement type enum matching Prisma MeasurementType
|
|
3
|
+
* Measurement type enum matching Prisma MeasurementType.
|
|
4
|
+
* API accepts both uppercase and lowercase (plan uses lowercase).
|
|
4
5
|
*/
|
|
5
6
|
export const measurementTypeSchema = z.enum(['DISTANCE', 'AREA', 'PERIMETER', 'RADIUS']);
|
|
7
|
+
export const measurementTypeInputSchema = z
|
|
8
|
+
.enum(['DISTANCE', 'AREA', 'PERIMETER', 'RADIUS', 'distance', 'area', 'perimeter', 'radius'])
|
|
9
|
+
.transform((s) => s.toUpperCase());
|
|
6
10
|
/**
|
|
7
11
|
* Segment schema for multi-point measurements
|
|
8
12
|
*/
|
|
@@ -15,7 +19,8 @@ export const measurementSegmentSchema = z.object({
|
|
|
15
19
|
*/
|
|
16
20
|
export const coordinatePointSchema = z.tuple([z.number(), z.number()]);
|
|
17
21
|
/**
|
|
18
|
-
* Measurement response schema
|
|
22
|
+
* Measurement response schema.
|
|
23
|
+
* Includes optional "formatted" (e.g. "980 meters") for map plan alignment.
|
|
19
24
|
*/
|
|
20
25
|
export const measurementSchema = z.object({
|
|
21
26
|
id: z.string().uuid(),
|
|
@@ -26,26 +31,28 @@ export const measurementSchema = z.object({
|
|
|
26
31
|
points: z.array(coordinatePointSchema),
|
|
27
32
|
result: z.number(),
|
|
28
33
|
unit: z.string(),
|
|
34
|
+
formatted: z.string().optional(), // e.g. "980 meters" for display
|
|
29
35
|
segments: z.array(measurementSegmentSchema).nullable(),
|
|
30
36
|
createdBy: z.string().uuid().nullable(),
|
|
31
37
|
createdAt: z.string().datetime(),
|
|
32
38
|
updatedAt: z.string().datetime(),
|
|
33
39
|
});
|
|
34
40
|
/**
|
|
35
|
-
* Create measurement request body schema
|
|
41
|
+
* Create measurement request body schema.
|
|
42
|
+
* Type accepts lowercase (distance, area, etc.) or uppercase; normalized to uppercase.
|
|
36
43
|
*/
|
|
37
44
|
export const createMeasurementBodySchema = z.object({
|
|
38
|
-
type:
|
|
45
|
+
type: measurementTypeInputSchema,
|
|
39
46
|
label: z.string().max(200).optional(),
|
|
40
47
|
points: z.array(coordinatePointSchema).min(1, 'At least one point is required'),
|
|
41
48
|
result: z.number(),
|
|
42
49
|
unit: z.string().max(20),
|
|
43
50
|
});
|
|
44
51
|
/**
|
|
45
|
-
* Query schema for filtering measurements by type
|
|
52
|
+
* Query schema for filtering measurements by type (accepts lowercase or uppercase)
|
|
46
53
|
*/
|
|
47
54
|
export const measurementListQuerySchema = z.object({
|
|
48
|
-
type:
|
|
55
|
+
type: measurementTypeInputSchema.optional(),
|
|
49
56
|
});
|
|
50
57
|
/**
|
|
51
58
|
* List response schema
|