@routebot/constants 0.3.76 → 0.3.79

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.
@@ -24,6 +24,9 @@ const COMPANY_FEATURES = {
24
24
  // handle them). Default OFF for every plan; enabled per-company via company.features.
25
25
  // See: customer-portal.constants.js (backend module lands after this package is released).
26
26
  CUSTOMER_PORTAL: "customerPortal",
27
+ // Opt-in parent/operator "won't ride this service today" overlay. Default OFF for every
28
+ // plan; enabled per-company via company.features. See: backend/modules/ride-skip/.
29
+ PARENT_RIDE_SKIP: "parentRideSkip",
27
30
  };
28
31
 
29
32
  module.exports = {
@@ -30,7 +30,13 @@ const CUSTOMER_PORTAL_INVITE_EXPIRATION_DAYS = 7;
30
30
 
31
31
  const CUSTOMER_PORTAL_STUDENT_SEARCH_MIN_LENGTH = 2;
32
32
 
33
+ // EXTRA_SERVICE is first: the school-contact form lists it above student registration
34
+ // and selects it by default. It is a one-off trip, not a VehicleRoute.
35
+ // Date is a calendar day. Place, time, and headcount are free text.
36
+ // Validation lives in backend/modules/customer-portal/extra-service.js so a portal
37
+ // can accept the type before this package version is published.
33
38
  const CUSTOMER_REQUEST_TYPES = {
39
+ EXTRA_SERVICE: "extra_service",
34
40
  STUDENT_ADD: "student_add",
35
41
  STUDENT_ADD_BULK: "student_add_bulk",
36
42
  STUDENT_REMOVE: "student_remove",
@@ -39,6 +45,13 @@ const CUSTOMER_REQUEST_TYPES = {
39
45
  OTHER: "other",
40
46
  };
41
47
 
48
+ const CUSTOMER_EXTRA_SERVICE_LIMITS = {
49
+ PLACE: 200,
50
+ TIME: 80,
51
+ HEADCOUNT: 200,
52
+ TITLE: 200,
53
+ };
54
+
42
55
  const CUSTOMER_REQUEST_CHANGE_KINDS = {
43
56
  ADDRESS: "address",
44
57
  SERVICE: "service",
@@ -150,6 +163,7 @@ module.exports = {
150
163
  CUSTOMER_PORTAL_INVITE_EXPIRATION_DAYS,
151
164
  CUSTOMER_PORTAL_STUDENT_SEARCH_MIN_LENGTH,
152
165
  CUSTOMER_REQUEST_TYPES,
166
+ CUSTOMER_EXTRA_SERVICE_LIMITS,
153
167
  CUSTOMER_REQUEST_CHANGE_KINDS,
154
168
  CUSTOMER_REQUEST_STATUSES,
155
169
  CUSTOMER_REQUEST_OPEN_STATUSES,
@@ -168,6 +168,7 @@ const PLAN_FEATURES = {
168
168
  [COMPANY_FEATURES.UETDS]: false,
169
169
  [COMPANY_FEATURES.BUNDLED_STUDENT_ROUTES]: false,
170
170
  [COMPANY_FEATURES.CUSTOMER_PORTAL]: false,
171
+ [COMPANY_FEATURES.PARENT_RIDE_SKIP]: false,
171
172
  },
172
173
 
173
174
  [PLANS.FREE]: {
@@ -183,6 +184,7 @@ const PLAN_FEATURES = {
183
184
  [COMPANY_FEATURES.UETDS]: false,
184
185
  [COMPANY_FEATURES.BUNDLED_STUDENT_ROUTES]: false,
185
186
  [COMPANY_FEATURES.CUSTOMER_PORTAL]: false,
187
+ [COMPANY_FEATURES.PARENT_RIDE_SKIP]: false,
186
188
  },
187
189
  [PLANS.STARTER]: {
188
190
  [COMPANY_FEATURES.ACCOUNTING]: false,
@@ -197,6 +199,7 @@ const PLAN_FEATURES = {
197
199
  [COMPANY_FEATURES.UETDS]: false,
198
200
  [COMPANY_FEATURES.BUNDLED_STUDENT_ROUTES]: false,
199
201
  [COMPANY_FEATURES.CUSTOMER_PORTAL]: false,
202
+ [COMPANY_FEATURES.PARENT_RIDE_SKIP]: false,
200
203
  },
201
204
  [PLANS.PRO]: {
202
205
  [COMPANY_FEATURES.ACCOUNTING]: false,
@@ -211,6 +214,7 @@ const PLAN_FEATURES = {
211
214
  [COMPANY_FEATURES.UETDS]: false,
212
215
  [COMPANY_FEATURES.BUNDLED_STUDENT_ROUTES]: false,
213
216
  [COMPANY_FEATURES.CUSTOMER_PORTAL]: false,
217
+ [COMPANY_FEATURES.PARENT_RIDE_SKIP]: false,
214
218
  },
215
219
  [PLANS.BUSINESS]: {
216
220
  [COMPANY_FEATURES.ACCOUNTING]: false,
@@ -225,6 +229,7 @@ const PLAN_FEATURES = {
225
229
  [COMPANY_FEATURES.UETDS]: false,
226
230
  [COMPANY_FEATURES.BUNDLED_STUDENT_ROUTES]: false,
227
231
  [COMPANY_FEATURES.CUSTOMER_PORTAL]: false,
232
+ [COMPANY_FEATURES.PARENT_RIDE_SKIP]: false,
228
233
  },
229
234
  [PLANS.ENTERPRISE]: {
230
235
  [COMPANY_FEATURES.ACCOUNTING]: false,
@@ -239,6 +244,7 @@ const PLAN_FEATURES = {
239
244
  [COMPANY_FEATURES.UETDS]: false,
240
245
  [COMPANY_FEATURES.BUNDLED_STUDENT_ROUTES]: false,
241
246
  [COMPANY_FEATURES.CUSTOMER_PORTAL]: false,
247
+ [COMPANY_FEATURES.PARENT_RIDE_SKIP]: false,
242
248
  },
243
249
  [PLANS.UNLIMITED]: {
244
250
  [COMPANY_FEATURES.ACCOUNTING]: false,
@@ -253,6 +259,7 @@ const PLAN_FEATURES = {
253
259
  [COMPANY_FEATURES.UETDS]: false,
254
260
  [COMPANY_FEATURES.BUNDLED_STUDENT_ROUTES]: false,
255
261
  [COMPANY_FEATURES.CUSTOMER_PORTAL]: false,
262
+ [COMPANY_FEATURES.PARENT_RIDE_SKIP]: false,
256
263
  },
257
264
  };
258
265
 
@@ -0,0 +1,14 @@
1
+ const RIDE_SKIP_SERVICE_KINDS = {
2
+ VEHICLE_ROUTE: "VEHICLE_ROUTE",
3
+ BUNDLED_ROUTE: "BUNDLED_ROUTE",
4
+ };
5
+
6
+ const RIDE_SKIP_SOURCES = {
7
+ PARENT: "PARENT",
8
+ OPERATOR: "OPERATOR",
9
+ };
10
+
11
+ module.exports = {
12
+ RIDE_SKIP_SERVICE_KINDS,
13
+ RIDE_SKIP_SOURCES,
14
+ };
@@ -1,81 +1,81 @@
1
- // See: backend/docs/arvento-telemetry.md (source of truth)
2
- // Telemetry constants — shared between backend and frontend.
3
-
4
- const TELEMETRY_PROVIDERS = {
5
- ARVENTO: "ARVENTO",
6
- };
7
-
8
- const TELEMETRY_EVENT_TYPES = {
9
- SPEED_ALARM: "SPEED_ALARM",
10
- IDLING_ALARM: "IDLING_ALARM",
11
- PAUSE_ALARM: "PAUSE_ALARM",
12
- MOTION_ALARM: "MOTION_ALARM",
13
- CONTACT_ON: "CONTACT_ON",
14
- CONTACT_OFF: "CONTACT_OFF",
15
- DOOR_OPEN: "DOOR_OPEN",
16
- DOOR_CLOSE: "DOOR_CLOSE",
17
- EMERGENCY: "EMERGENCY",
18
- TEMPERATURE_ALARM: "TEMPERATURE_ALARM",
19
- REGION_ENTRY: "REGION_ENTRY",
20
- REGION_EXIT: "REGION_EXIT",
21
- SUDDEN_ACCELERATION: "SUDDEN_ACCELERATION",
22
- SUDDEN_DECELERATION: "SUDDEN_DECELERATION",
23
- POSSIBLE_ACCIDENT: "POSSIBLE_ACCIDENT",
24
- DEVICE_POWERED_UP: "DEVICE_POWERED_UP",
25
- // Araç, o günkü kayıtlı servis penceresi dışında kullanılıyor (kontak açık / hareket halinde).
26
- // See: backend/docs/arvento-telemetry.md §20.1
27
- SERVICELESS_USE: "SERVICELESS_USE",
28
- };
29
-
30
- // GetVehicleAlarmStatusV2 yanıtındaki "Alarm Türü" (Language=0 → Türkçe) kontak metinleri.
31
- // Anlık kontak durumu bu üç tipin EN YENİSİNDEN türetilir (See: arvento-telemetry.md §20.1).
32
- const ARVENTO_ALARM_TYPES = {
33
- IGNITION_ON: "Kontak Açıldı",
34
- IGNITION_OFF: "Kontak Kapandı",
35
- IGNITION_STATUS: "Kontak Durumu", // Değer: 1=açık, 0=kapalı
36
- };
37
-
38
- const TELEMETRY_VEHICLE_STATUS = {
39
- OFFLINE: "OFFLINE", // Son snapshot yok veya çok eski (cihaz veri göndermiyor — kontaktan bağımsız)
40
- IDLE: "IDLE", // (eski) hareketsiz — artık görüntüde IDLING/PARKED'e ayrıştırılır
41
- MOVING: "MOVING", // Hareket halinde
42
- ALARMED: "ALARMED", // Son snapshot'ta alarm var
43
- // Görüntü durumları (taze snapshot'ta kontaktan türetilir; kalıcı SAKLANMAZ):
44
- IDLING: "IDLING", // Kontak açık, hareketsiz (rölantide)
45
- PARKED: "PARKED", // Kontak kapalı, cihaz online
46
- };
47
-
48
- const TELEMETRY_THRESHOLDS = {
49
- IDLING_FUEL_LITERS_PER_HOUR: 1.8, // rölanti israfı hesabı (referans)
50
- DRIVER_FATIGUE_HOURS: 4,
51
- LIVE_POSITION_REFRESH_SECONDS: 15, // frontend refresh
52
- ARVENTO_POLL_PERIOD_SECONDS: 30, // backend cron - Arvento min period
53
- ARVENTO_DAILY_QUOTA: 100000, // request/day/user
54
- ARVENTO_PER_METHOD_COOLDOWN_SECONDS: 30,
55
- SNAPSHOT_FRESHNESS_SECONDS: 3600, // bu sürenin üstünde olan snapshot "stale" - 1 saat
56
-
57
- // --- Servissiz/izinsiz kullanım uyarısı (§20.1) ---
58
- // Servis başlangıç/bitiş penceresine eklenen tampon (dk). Şoför servise giderken/dönerken
59
- // aracı öncesinde çalıştırır → bu marjin içindeki hareket normal sayılır.
60
- // Gelecekte 1 saate çekmek istenirse yalnızca bu değer 60 yapılır.
61
- SERVICELESS_USE_MARGIN_MINUTES: 120,
62
- // Aynı araç için bu süre içindeki tekrar tespitler tek "episode" sayılır (spam engeli).
63
- SERVICELESS_EPISODE_GAP_MINUTES: 30,
64
- // Servis dışı "kullanımda" sayılması için minimum hız (km/h). Kontak açık + bu eşiğin üstü.
65
- SERVICELESS_USE_MIN_SPEED_KMH: 10,
66
- // Bu sürenin altındaki kapalı seanslar DB'den silinir (yanlış pozitif / gürültü).
67
- SERVICELESS_USE_MIN_DURATION_MINUTES: 5,
68
- // Servissiz kullanım uyarılarının geçmişte saklanma süresi (gün).
69
- SERVICELESS_ALERT_RETENTION_DAYS: 30,
70
-
71
- // --- Aşırı hız vurgusu (§20.3) — frontend-only ---
72
- OVERSPEED_THRESHOLD_KMH: 100,
73
- };
74
-
75
- module.exports = {
76
- TELEMETRY_PROVIDERS,
77
- TELEMETRY_EVENT_TYPES,
78
- TELEMETRY_VEHICLE_STATUS,
79
- TELEMETRY_THRESHOLDS,
80
- ARVENTO_ALARM_TYPES,
81
- };
1
+ // See: backend/docs/arvento-telemetry.md (source of truth)
2
+ // Telemetry constants — shared between backend and frontend.
3
+
4
+ const TELEMETRY_PROVIDERS = {
5
+ ARVENTO: "ARVENTO",
6
+ };
7
+
8
+ const TELEMETRY_EVENT_TYPES = {
9
+ SPEED_ALARM: "SPEED_ALARM",
10
+ IDLING_ALARM: "IDLING_ALARM",
11
+ PAUSE_ALARM: "PAUSE_ALARM",
12
+ MOTION_ALARM: "MOTION_ALARM",
13
+ CONTACT_ON: "CONTACT_ON",
14
+ CONTACT_OFF: "CONTACT_OFF",
15
+ DOOR_OPEN: "DOOR_OPEN",
16
+ DOOR_CLOSE: "DOOR_CLOSE",
17
+ EMERGENCY: "EMERGENCY",
18
+ TEMPERATURE_ALARM: "TEMPERATURE_ALARM",
19
+ REGION_ENTRY: "REGION_ENTRY",
20
+ REGION_EXIT: "REGION_EXIT",
21
+ SUDDEN_ACCELERATION: "SUDDEN_ACCELERATION",
22
+ SUDDEN_DECELERATION: "SUDDEN_DECELERATION",
23
+ POSSIBLE_ACCIDENT: "POSSIBLE_ACCIDENT",
24
+ DEVICE_POWERED_UP: "DEVICE_POWERED_UP",
25
+ // Araç, o günkü kayıtlı servis penceresi dışında kullanılıyor (kontak açık / hareket halinde).
26
+ // See: backend/docs/arvento-telemetry.md §20.1
27
+ SERVICELESS_USE: "SERVICELESS_USE",
28
+ };
29
+
30
+ // GetVehicleAlarmStatusV2 yanıtındaki "Alarm Türü" (Language=0 → Türkçe) kontak metinleri.
31
+ // Anlık kontak durumu bu üç tipin EN YENİSİNDEN türetilir (See: arvento-telemetry.md §20.1).
32
+ const ARVENTO_ALARM_TYPES = {
33
+ IGNITION_ON: "Kontak Açıldı",
34
+ IGNITION_OFF: "Kontak Kapandı",
35
+ IGNITION_STATUS: "Kontak Durumu", // Değer: 1=açık, 0=kapalı
36
+ };
37
+
38
+ const TELEMETRY_VEHICLE_STATUS = {
39
+ OFFLINE: "OFFLINE", // Son snapshot yok veya çok eski (cihaz veri göndermiyor — kontaktan bağımsız)
40
+ IDLE: "IDLE", // (eski) hareketsiz — artık görüntüde IDLING/PARKED'e ayrıştırılır
41
+ MOVING: "MOVING", // Hareket halinde
42
+ ALARMED: "ALARMED", // Son snapshot'ta alarm var
43
+ // Görüntü durumları (taze snapshot'ta kontaktan türetilir; kalıcı SAKLANMAZ):
44
+ IDLING: "IDLING", // Kontak açık, hareketsiz (rölantide)
45
+ PARKED: "PARKED", // Kontak kapalı, cihaz online
46
+ };
47
+
48
+ const TELEMETRY_THRESHOLDS = {
49
+ IDLING_FUEL_LITERS_PER_HOUR: 1.8, // rölanti israfı hesabı (referans)
50
+ DRIVER_FATIGUE_HOURS: 4,
51
+ LIVE_POSITION_REFRESH_SECONDS: 15, // frontend refresh
52
+ ARVENTO_POLL_PERIOD_SECONDS: 30, // backend cron - Arvento min period
53
+ ARVENTO_DAILY_QUOTA: 100000, // request/day/user
54
+ ARVENTO_PER_METHOD_COOLDOWN_SECONDS: 30,
55
+ SNAPSHOT_FRESHNESS_SECONDS: 3600, // bu sürenin üstünde olan snapshot "stale" - 1 saat
56
+
57
+ // --- Servissiz/izinsiz kullanım uyarısı (§20.1) ---
58
+ // Servis başlangıç/bitiş penceresine eklenen tampon (dk). Şoför servise giderken/dönerken
59
+ // aracı öncesinde çalıştırır → bu marjin içindeki hareket normal sayılır.
60
+ // Gelecekte 1 saate çekmek istenirse yalnızca bu değer 60 yapılır.
61
+ SERVICELESS_USE_MARGIN_MINUTES: 120,
62
+ // Aynı araç için bu süre içindeki tekrar tespitler tek "episode" sayılır (spam engeli).
63
+ SERVICELESS_EPISODE_GAP_MINUTES: 30,
64
+ // Servis dışı "kullanımda" sayılması için minimum hız (km/h). Kontak açık + bu eşiğin üstü.
65
+ SERVICELESS_USE_MIN_SPEED_KMH: 10,
66
+ // Bu sürenin altındaki kapalı seanslar DB'den silinir (yanlış pozitif / gürültü).
67
+ SERVICELESS_USE_MIN_DURATION_MINUTES: 5,
68
+ // Servissiz kullanım uyarılarının geçmişte saklanma süresi (gün).
69
+ SERVICELESS_ALERT_RETENTION_DAYS: 30,
70
+
71
+ // --- Aşırı hız vurgusu (§20.3) — frontend-only ---
72
+ OVERSPEED_THRESHOLD_KMH: 100,
73
+ };
74
+
75
+ module.exports = {
76
+ TELEMETRY_PROVIDERS,
77
+ TELEMETRY_EVENT_TYPES,
78
+ TELEMETRY_VEHICLE_STATUS,
79
+ TELEMETRY_THRESHOLDS,
80
+ ARVENTO_ALARM_TYPES,
81
+ };
package/index.js CHANGED
@@ -16,4 +16,5 @@ module.exports = {
16
16
  ...require("./constants/telemetry.constants.js"),
17
17
  ...require("./constants/login-code.constants.js"),
18
18
  ...require("./constants/customer-portal.constants.js"),
19
+ ...require("./constants/ride-skip.constants.js"),
19
20
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@routebot/constants",
3
- "version": "0.3.76",
3
+ "version": "0.3.79",
4
4
  "description": "Shared constants for RouteBot FE/BE",
5
5
  "main": "index.js",
6
6
  "files": [