Arpit-Bansal commited on
Commit
9ed4879
·
1 Parent(s): f6aa8e8

updated schedule response

Browse files
docs/integrate.md CHANGED
@@ -1,20 +1,26 @@
1
 
2
- GET /health
3
 
4
- Response:
 
 
5
 
 
 
6
  {
7
  "status": "healthy",
8
  "timestamp": "2025-11-25T00:17:15.053513",
9
  "service": "greedyoptim-api"
10
  }
 
11
 
 
12
 
13
- GET /methods
14
 
15
  Response:
16
-
17
- {
18
  "available_methods": {
19
  "ga": {
20
  "name": "Genetic Algorithm",
@@ -63,4 +69,256 @@ Response:
63
  "recommended_for_speed": "ga",
64
  "recommended_for_quality": "ensemble"
65
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
 
 
 
 
 
 
 
1
 
2
+ # GreedyOptim API Integration Guide
3
 
4
+ ## Endpoints
5
+
6
+ ### GET /health
7
 
8
+ Response:
9
+ ```json
10
  {
11
  "status": "healthy",
12
  "timestamp": "2025-11-25T00:17:15.053513",
13
  "service": "greedyoptim-api"
14
  }
15
+ ```
16
 
17
+ ---
18
 
19
+ ### GET /methods
20
 
21
  Response:
22
+ ```json
23
+ {
24
  "available_methods": {
25
  "ga": {
26
  "name": "Genetic Algorithm",
 
69
  "recommended_for_speed": "ga",
70
  "recommended_for_quality": "ensemble"
71
  }
72
+ ```
73
+
74
+ ---
75
+
76
+ ## POST /schedule - Full Schedule Response Structure
77
+
78
+ The `/schedule` endpoint returns a comprehensive schedule with service blocks and timing details.
79
+
80
+ ### Response Structure Overview
81
+
82
+ ```
83
+ FullScheduleResponse
84
+ ├── schedule_id: string
85
+ ├── generated_at: string (ISO datetime)
86
+ ├── valid_from: string (ISO datetime)
87
+ ├── valid_until: string (ISO datetime)
88
+ ├── depot: string
89
+ ├── trainsets: TrainsetScheduleResponse[]
90
+ ├── fleet_summary: FleetSummaryResponse
91
+ ├── optimization_metrics: OptimizationMetricsResponse
92
+ └── alerts: AlertResponse[]
93
+ ```
94
+
95
+ ---
96
+
97
+ ### TrainsetScheduleResponse
98
+
99
+ Each trainset in the schedule has the following structure:
100
+
101
+ | Field | Type | Description |
102
+ |-------|------|-------------|
103
+ | `trainset_id` | string | Unique identifier (e.g., "TS-001") |
104
+ | `status` | string | Current status: `REVENUE_SERVICE`, `STANDBY`, `MAINTENANCE` |
105
+ | `readiness_score` | float | Score from 0.0 to 1.0 indicating operational readiness |
106
+ | `daily_km_allocation` | float | Planned kilometers for the day |
107
+ | `cumulative_km` | float | Total kilometers accumulated |
108
+ | `assigned_duty` | string? | Duty assignment identifier |
109
+ | `priority_rank` | int? | Priority ranking for service assignment |
110
+ | `service_blocks` | ServiceBlockResponse[]? | List of assigned service blocks (for REVENUE_SERVICE) |
111
+ | `stabling_bay` | string? | Assigned stabling bay (for STANDBY) |
112
+ | `standby_reason` | string? | Reason for standby status |
113
+ | `maintenance_type` | string? | Type of maintenance: `PREVENTIVE`, `CORRECTIVE`, `OVERHAUL` |
114
+ | `ibl_bay` | string? | IBL bay assignment (for MAINTENANCE) |
115
+ | `estimated_completion` | string? | Estimated maintenance completion time |
116
+ | `alerts` | string[]? | List of alerts for this trainset |
117
+
118
+ ---
119
+
120
+ ### ServiceBlockResponse
121
+
122
+ Service blocks represent scheduled work periods for a trainset:
123
+
124
+ | Field | Type | Description |
125
+ |-------|------|-------------|
126
+ | `block_id` | string | Unique block identifier (e.g., "BLK-001") |
127
+ | `departure_time` | string | Block start time (HH:MM format) |
128
+ | `origin` | string | Starting station |
129
+ | `destination` | string | Ending station |
130
+ | `trip_count` | int | Number of trips in this block |
131
+ | `estimated_km` | float | Total kilometers for this block |
132
+ | `journey_time_minutes` | float? | Total journey time in minutes |
133
+ | `period` | string? | Time period: `EARLY_MORNING`, `MORNING_PEAK`, `MIDDAY`, `EVENING_PEAK`, `LATE_EVENING` |
134
+ | `is_peak` | bool | Whether this is a peak hour block |
135
+ | `trips` | TripResponse[]? | Detailed trip information |
136
+
137
+ ---
138
+
139
+ ### TripResponse
140
+
141
+ Each trip within a service block:
142
+
143
+ | Field | Type | Description |
144
+ |-------|------|-------------|
145
+ | `trip_id` | string | Unique trip identifier |
146
+ | `trip_number` | int | Sequential trip number |
147
+ | `direction` | string | Direction: `UP` or `DOWN` |
148
+ | `origin` | string | Origin station |
149
+ | `destination` | string | Destination station |
150
+ | `departure_time` | string | Departure time (HH:MM) |
151
+ | `arrival_time` | string | Arrival time (HH:MM) |
152
+ | `stops` | StationStopResponse[] | List of all station stops |
153
+
154
+ ---
155
+
156
+ ### StationStopResponse
157
+
158
+ Each station stop within a trip:
159
+
160
+ | Field | Type | Description |
161
+ |-------|------|-------------|
162
+ | `station_code` | string | Station code (e.g., "ALV") |
163
+ | `station_name` | string | Full station name (e.g., "Aluva") |
164
+ | `arrival_time` | string? | Arrival time at this station |
165
+ | `departure_time` | string? | Departure time from this station |
166
+ | `distance_from_origin_km` | float | Distance from trip origin in km |
167
+ | `platform` | int? | Platform number |
168
+
169
+ ---
170
+
171
+ ### FleetSummaryResponse
172
+
173
+ | Field | Type | Description |
174
+ |-------|------|-------------|
175
+ | `total_trainsets` | int | Total number of trainsets in fleet |
176
+ | `revenue_service` | int | Number in revenue service |
177
+ | `standby` | int | Number on standby |
178
+ | `maintenance` | int | Number in maintenance |
179
+ | `availability_percent` | float | Fleet availability percentage |
180
+
181
+ ---
182
+
183
+ ### OptimizationMetricsResponse
184
+
185
+ | Field | Type | Description |
186
+ |-------|------|-------------|
187
+ | `fitness_score` | float | Overall optimization fitness score |
188
+ | `method` | string | Optimization method used (ga, pso, cmaes, etc.) |
189
+ | `mileage_variance_coefficient` | float | Variance in mileage distribution |
190
+ | `total_planned_km` | float | Total planned kilometers for the day |
191
+ | `optimization_runtime_ms` | int | Time taken for optimization in milliseconds |
192
+
193
+ ---
194
+
195
+ ### AlertResponse
196
+
197
+ | Field | Type | Description |
198
+ |-------|------|-------------|
199
+ | `trainset_id` | string | Trainset this alert relates to |
200
+ | `severity` | string | Alert severity: `LOW`, `MEDIUM`, `HIGH`, `CRITICAL` |
201
+ | `alert_type` | string | Type of alert |
202
+ | `message` | string | Human-readable alert message |
203
+
204
+ ---
205
+
206
+ ## Example Response (Simplified)
207
+
208
+ ```json
209
+ {
210
+ "schedule_id": "SCH-20251202-001",
211
+ "generated_at": "2025-12-02T10:30:00",
212
+ "valid_from": "2025-12-02T05:00:00",
213
+ "valid_until": "2025-12-02T23:30:00",
214
+ "depot": "Muttom Depot",
215
+
216
+ "trainsets": [
217
+ {
218
+ "trainset_id": "TS-001",
219
+ "status": "REVENUE_SERVICE",
220
+ "readiness_score": 0.95,
221
+ "daily_km_allocation": 280.5,
222
+ "cumulative_km": 125000.0,
223
+ "assigned_duty": "DUTY-A1",
224
+ "priority_rank": 1,
225
+ "service_blocks": [
226
+ {
227
+ "block_id": "BLK-001",
228
+ "departure_time": "06:00",
229
+ "origin": "Aluva",
230
+ "destination": "Pettah",
231
+ "trip_count": 4,
232
+ "estimated_km": 104.8,
233
+ "journey_time_minutes": 180,
234
+ "period": "MORNING_PEAK",
235
+ "is_peak": true,
236
+ "trips": [
237
+ {
238
+ "trip_id": "TRIP-001",
239
+ "trip_number": 1,
240
+ "direction": "DOWN",
241
+ "origin": "Aluva",
242
+ "destination": "Pettah",
243
+ "departure_time": "06:00",
244
+ "arrival_time": "06:45",
245
+ "stops": [
246
+ {
247
+ "station_code": "ALV",
248
+ "station_name": "Aluva",
249
+ "arrival_time": null,
250
+ "departure_time": "06:00",
251
+ "distance_from_origin_km": 0.0,
252
+ "platform": 1
253
+ },
254
+ {
255
+ "station_code": "PTH",
256
+ "station_name": "Pettah",
257
+ "arrival_time": "06:45",
258
+ "departure_time": null,
259
+ "distance_from_origin_km": 26.2,
260
+ "platform": 2
261
+ }
262
+ ]
263
+ }
264
+ ]
265
+ }
266
+ ],
267
+ "alerts": []
268
+ },
269
+ {
270
+ "trainset_id": "TS-015",
271
+ "status": "STANDBY",
272
+ "readiness_score": 0.88,
273
+ "daily_km_allocation": 0.0,
274
+ "cumulative_km": 98000.0,
275
+ "stabling_bay": "BAY-03",
276
+ "standby_reason": "Reserve for peak hours",
277
+ "alerts": []
278
+ },
279
+ {
280
+ "trainset_id": "TS-020",
281
+ "status": "MAINTENANCE",
282
+ "readiness_score": 0.0,
283
+ "daily_km_allocation": 0.0,
284
+ "cumulative_km": 150000.0,
285
+ "maintenance_type": "PREVENTIVE",
286
+ "ibl_bay": "IBL-02",
287
+ "estimated_completion": "2025-12-03T14:00:00",
288
+ "alerts": ["Scheduled wheel profiling"]
289
+ }
290
+ ],
291
+
292
+ "fleet_summary": {
293
+ "total_trainsets": 25,
294
+ "revenue_service": 18,
295
+ "standby": 4,
296
+ "maintenance": 3,
297
+ "availability_percent": 88.0
298
+ },
299
+
300
+ "optimization_metrics": {
301
+ "fitness_score": 0.92,
302
+ "method": "ga",
303
+ "mileage_variance_coefficient": 0.08,
304
+ "total_planned_km": 4850.0,
305
+ "optimization_runtime_ms": 1250
306
+ },
307
+
308
+ "alerts": [
309
+ {
310
+ "trainset_id": "TS-007",
311
+ "severity": "MEDIUM",
312
+ "alert_type": "CERTIFICATE_EXPIRY",
313
+ "message": "Safety certificate expires in 5 days"
314
+ }
315
+ ]
316
+ }
317
+ ```
318
+
319
 
320
+ Why Use Blocks Instead of Individual Trips?
321
+ Crew Scheduling - A crew can be assigned to a block, not individual trips
322
+ Efficiency - Easier to manage and optimize at block level
323
+ Peak Hour Management - Blocks can be marked as is_peak: true to differentiate peak vs off-peak operations
324
+ Mileage Tracking - Each block has estimated_km for easy daily mileage calculation
test_output/{dataservice_gen_25_input_20251129_001007.json → api_gen_25_input_20251202_143828.json} RENAMED
The diff for this file is too large to render. See raw diff
 
test_output/{api_gen_25_input_20251129_000959.json → api_gen_25_input_20251202_143844.json} RENAMED
The diff for this file is too large to render. See raw diff
 
test_output/api_gen_25_output_20251129_000959.json DELETED
@@ -1,1492 +0,0 @@
1
- {
2
- "schedule_id": "SCH-20251129-509",
3
- "generated_at": "2025-11-29T00:10:03.460759",
4
- "valid_from": "2025-11-29T05:00:00+05:30",
5
- "valid_until": "2025-11-29T23:00:00+05:30",
6
- "depot": "Muttom_Depot",
7
- "trainsets": [
8
- {
9
- "trainset_id": "TS-001",
10
- "status": "REVENUE_SERVICE",
11
- "readiness_score": 0.7,
12
- "daily_km_allocation": 765.0,
13
- "cumulative_km": 334181.0,
14
- "assigned_duty": "DUTY-A1",
15
- "priority_rank": 1,
16
- "service_blocks": [
17
- {
18
- "block_id": "BLK-001",
19
- "departure_time": "07:00",
20
- "origin": "Pettah",
21
- "destination": "Aluva",
22
- "trip_count": 3,
23
- "estimated_km": 153.0
24
- },
25
- {
26
- "block_id": "BLK-022",
27
- "departure_time": "09:06",
28
- "origin": "Aluva",
29
- "destination": "Pettah",
30
- "trip_count": 3,
31
- "estimated_km": 153.0
32
- },
33
- {
34
- "block_id": "BLK-043",
35
- "departure_time": "13:00",
36
- "origin": "Pettah",
37
- "destination": "Aluva",
38
- "trip_count": 2,
39
- "estimated_km": 102.0
40
- },
41
- {
42
- "block_id": "BLK-064",
43
- "departure_time": "17:30",
44
- "origin": "Aluva",
45
- "destination": "Pettah",
46
- "trip_count": 3,
47
- "estimated_km": 153.0
48
- },
49
- {
50
- "block_id": "BLK-085",
51
- "departure_time": "19:36",
52
- "origin": "Pettah",
53
- "destination": "Aluva",
54
- "trip_count": 3,
55
- "estimated_km": 153.0
56
- },
57
- {
58
- "block_id": "BLK-106",
59
- "departure_time": "22:45",
60
- "origin": "Aluva",
61
- "destination": "Pettah",
62
- "trip_count": 1,
63
- "estimated_km": 51.0
64
- }
65
- ],
66
- "stabling_bay": "BAY-04",
67
- "standby_reason": null,
68
- "maintenance_type": null,
69
- "ibl_bay": null,
70
- "estimated_completion": null,
71
- "alerts": [
72
- "Signalling certificate expiring soon"
73
- ]
74
- },
75
- {
76
- "trainset_id": "TS-003",
77
- "status": "REVENUE_SERVICE",
78
- "readiness_score": 0.8,
79
- "daily_km_allocation": 714.0,
80
- "cumulative_km": 391722.0,
81
- "assigned_duty": "DUTY-A2",
82
- "priority_rank": 2,
83
- "service_blocks": [
84
- {
85
- "block_id": "BLK-002",
86
- "departure_time": "07:06",
87
- "origin": "Aluva",
88
- "destination": "Pettah",
89
- "trip_count": 3,
90
- "estimated_km": 153.0
91
- },
92
- {
93
- "block_id": "BLK-023",
94
- "departure_time": "09:12",
95
- "origin": "Pettah",
96
- "destination": "Aluva",
97
- "trip_count": 3,
98
- "estimated_km": 153.0
99
- },
100
- {
101
- "block_id": "BLK-044",
102
- "departure_time": "13:15",
103
- "origin": "Aluva",
104
- "destination": "Pettah",
105
- "trip_count": 2,
106
- "estimated_km": 102.0
107
- },
108
- {
109
- "block_id": "BLK-065",
110
- "departure_time": "17:36",
111
- "origin": "Pettah",
112
- "destination": "Aluva",
113
- "trip_count": 3,
114
- "estimated_km": 153.0
115
- },
116
- {
117
- "block_id": "BLK-086",
118
- "departure_time": "19:42",
119
- "origin": "Aluva",
120
- "destination": "Pettah",
121
- "trip_count": 3,
122
- "estimated_km": 153.0
123
- }
124
- ],
125
- "stabling_bay": "BAY-05",
126
- "standby_reason": null,
127
- "maintenance_type": null,
128
- "ibl_bay": null,
129
- "estimated_completion": null,
130
- "alerts": []
131
- },
132
- {
133
- "trainset_id": "TS-004",
134
- "status": "REVENUE_SERVICE",
135
- "readiness_score": 1.0,
136
- "daily_km_allocation": 714.0,
137
- "cumulative_km": 1075567.0,
138
- "assigned_duty": "DUTY-A3",
139
- "priority_rank": 3,
140
- "service_blocks": [
141
- {
142
- "block_id": "BLK-003",
143
- "departure_time": "07:12",
144
- "origin": "Pettah",
145
- "destination": "Aluva",
146
- "trip_count": 3,
147
- "estimated_km": 153.0
148
- },
149
- {
150
- "block_id": "BLK-024",
151
- "departure_time": "09:18",
152
- "origin": "Aluva",
153
- "destination": "Pettah",
154
- "trip_count": 3,
155
- "estimated_km": 153.0
156
- },
157
- {
158
- "block_id": "BLK-045",
159
- "departure_time": "13:30",
160
- "origin": "Pettah",
161
- "destination": "Aluva",
162
- "trip_count": 2,
163
- "estimated_km": 102.0
164
- },
165
- {
166
- "block_id": "BLK-066",
167
- "departure_time": "17:42",
168
- "origin": "Aluva",
169
- "destination": "Pettah",
170
- "trip_count": 3,
171
- "estimated_km": 153.0
172
- },
173
- {
174
- "block_id": "BLK-087",
175
- "departure_time": "19:48",
176
- "origin": "Pettah",
177
- "destination": "Aluva",
178
- "trip_count": 3,
179
- "estimated_km": 153.0
180
- }
181
- ],
182
- "stabling_bay": "BAY-12",
183
- "standby_reason": null,
184
- "maintenance_type": null,
185
- "ibl_bay": null,
186
- "estimated_completion": null,
187
- "alerts": []
188
- },
189
- {
190
- "trainset_id": "TS-005",
191
- "status": "REVENUE_SERVICE",
192
- "readiness_score": 1.0,
193
- "daily_km_allocation": 714.0,
194
- "cumulative_km": 244933.0,
195
- "assigned_duty": "DUTY-A4",
196
- "priority_rank": 4,
197
- "service_blocks": [
198
- {
199
- "block_id": "BLK-004",
200
- "departure_time": "07:18",
201
- "origin": "Aluva",
202
- "destination": "Pettah",
203
- "trip_count": 3,
204
- "estimated_km": 153.0
205
- },
206
- {
207
- "block_id": "BLK-025",
208
- "departure_time": "09:24",
209
- "origin": "Pettah",
210
- "destination": "Aluva",
211
- "trip_count": 3,
212
- "estimated_km": 153.0
213
- },
214
- {
215
- "block_id": "BLK-046",
216
- "departure_time": "13:45",
217
- "origin": "Aluva",
218
- "destination": "Pettah",
219
- "trip_count": 2,
220
- "estimated_km": 102.0
221
- },
222
- {
223
- "block_id": "BLK-067",
224
- "departure_time": "17:48",
225
- "origin": "Pettah",
226
- "destination": "Aluva",
227
- "trip_count": 3,
228
- "estimated_km": 153.0
229
- },
230
- {
231
- "block_id": "BLK-088",
232
- "departure_time": "19:54",
233
- "origin": "Aluva",
234
- "destination": "Pettah",
235
- "trip_count": 3,
236
- "estimated_km": 153.0
237
- }
238
- ],
239
- "stabling_bay": "BAY-07",
240
- "standby_reason": null,
241
- "maintenance_type": null,
242
- "ibl_bay": null,
243
- "estimated_completion": null,
244
- "alerts": []
245
- },
246
- {
247
- "trainset_id": "TS-006",
248
- "status": "REVENUE_SERVICE",
249
- "readiness_score": 0.9,
250
- "daily_km_allocation": 714.0,
251
- "cumulative_km": 1523586.0,
252
- "assigned_duty": "DUTY-A5",
253
- "priority_rank": 5,
254
- "service_blocks": [
255
- {
256
- "block_id": "BLK-005",
257
- "departure_time": "07:24",
258
- "origin": "Pettah",
259
- "destination": "Aluva",
260
- "trip_count": 3,
261
- "estimated_km": 153.0
262
- },
263
- {
264
- "block_id": "BLK-026",
265
- "departure_time": "09:30",
266
- "origin": "Aluva",
267
- "destination": "Pettah",
268
- "trip_count": 3,
269
- "estimated_km": 153.0
270
- },
271
- {
272
- "block_id": "BLK-047",
273
- "departure_time": "14:00",
274
- "origin": "Pettah",
275
- "destination": "Aluva",
276
- "trip_count": 2,
277
- "estimated_km": 102.0
278
- },
279
- {
280
- "block_id": "BLK-068",
281
- "departure_time": "17:54",
282
- "origin": "Aluva",
283
- "destination": "Pettah",
284
- "trip_count": 3,
285
- "estimated_km": 153.0
286
- },
287
- {
288
- "block_id": "BLK-089",
289
- "departure_time": "20:00",
290
- "origin": "Pettah",
291
- "destination": "Aluva",
292
- "trip_count": 3,
293
- "estimated_km": 153.0
294
- }
295
- ],
296
- "stabling_bay": "BAY-14",
297
- "standby_reason": null,
298
- "maintenance_type": null,
299
- "ibl_bay": null,
300
- "estimated_completion": null,
301
- "alerts": [
302
- "Telecom certificate expiring soon"
303
- ]
304
- },
305
- {
306
- "trainset_id": "TS-007",
307
- "status": "REVENUE_SERVICE",
308
- "readiness_score": 0.7,
309
- "daily_km_allocation": 714.0,
310
- "cumulative_km": 737270.0,
311
- "assigned_duty": "DUTY-A6",
312
- "priority_rank": 6,
313
- "service_blocks": [
314
- {
315
- "block_id": "BLK-006",
316
- "departure_time": "07:30",
317
- "origin": "Aluva",
318
- "destination": "Pettah",
319
- "trip_count": 3,
320
- "estimated_km": 153.0
321
- },
322
- {
323
- "block_id": "BLK-027",
324
- "departure_time": "09:36",
325
- "origin": "Pettah",
326
- "destination": "Aluva",
327
- "trip_count": 3,
328
- "estimated_km": 153.0
329
- },
330
- {
331
- "block_id": "BLK-048",
332
- "departure_time": "14:15",
333
- "origin": "Aluva",
334
- "destination": "Pettah",
335
- "trip_count": 2,
336
- "estimated_km": 102.0
337
- },
338
- {
339
- "block_id": "BLK-069",
340
- "departure_time": "18:00",
341
- "origin": "Pettah",
342
- "destination": "Aluva",
343
- "trip_count": 3,
344
- "estimated_km": 153.0
345
- },
346
- {
347
- "block_id": "BLK-090",
348
- "departure_time": "20:06",
349
- "origin": "Aluva",
350
- "destination": "Pettah",
351
- "trip_count": 3,
352
- "estimated_km": 153.0
353
- }
354
- ],
355
- "stabling_bay": "BAY-08",
356
- "standby_reason": null,
357
- "maintenance_type": null,
358
- "ibl_bay": null,
359
- "estimated_completion": null,
360
- "alerts": [
361
- "Telecom certificate expiring soon"
362
- ]
363
- },
364
- {
365
- "trainset_id": "TS-008",
366
- "status": "REVENUE_SERVICE",
367
- "readiness_score": 0.7,
368
- "daily_km_allocation": 714.0,
369
- "cumulative_km": 578870.0,
370
- "assigned_duty": "DUTY-A7",
371
- "priority_rank": 7,
372
- "service_blocks": [
373
- {
374
- "block_id": "BLK-007",
375
- "departure_time": "07:36",
376
- "origin": "Pettah",
377
- "destination": "Aluva",
378
- "trip_count": 3,
379
- "estimated_km": 153.0
380
- },
381
- {
382
- "block_id": "BLK-028",
383
- "departure_time": "09:42",
384
- "origin": "Aluva",
385
- "destination": "Pettah",
386
- "trip_count": 3,
387
- "estimated_km": 153.0
388
- },
389
- {
390
- "block_id": "BLK-049",
391
- "departure_time": "14:30",
392
- "origin": "Pettah",
393
- "destination": "Aluva",
394
- "trip_count": 2,
395
- "estimated_km": 102.0
396
- },
397
- {
398
- "block_id": "BLK-070",
399
- "departure_time": "18:06",
400
- "origin": "Aluva",
401
- "destination": "Pettah",
402
- "trip_count": 3,
403
- "estimated_km": 153.0
404
- },
405
- {
406
- "block_id": "BLK-091",
407
- "departure_time": "20:12",
408
- "origin": "Pettah",
409
- "destination": "Aluva",
410
- "trip_count": 3,
411
- "estimated_km": 153.0
412
- }
413
- ],
414
- "stabling_bay": "BAY-07",
415
- "standby_reason": null,
416
- "maintenance_type": null,
417
- "ibl_bay": null,
418
- "estimated_completion": null,
419
- "alerts": [
420
- "Signalling certificate expiring soon",
421
- "Safety certificate expiring soon",
422
- "HVAC certificate expiring soon"
423
- ]
424
- },
425
- {
426
- "trainset_id": "TS-009",
427
- "status": "REVENUE_SERVICE",
428
- "readiness_score": 0.9,
429
- "daily_km_allocation": 714.0,
430
- "cumulative_km": 1320856.0,
431
- "assigned_duty": "DUTY-A8",
432
- "priority_rank": 8,
433
- "service_blocks": [
434
- {
435
- "block_id": "BLK-008",
436
- "departure_time": "07:42",
437
- "origin": "Aluva",
438
- "destination": "Pettah",
439
- "trip_count": 3,
440
- "estimated_km": 153.0
441
- },
442
- {
443
- "block_id": "BLK-029",
444
- "departure_time": "09:48",
445
- "origin": "Pettah",
446
- "destination": "Aluva",
447
- "trip_count": 3,
448
- "estimated_km": 153.0
449
- },
450
- {
451
- "block_id": "BLK-050",
452
- "departure_time": "14:45",
453
- "origin": "Aluva",
454
- "destination": "Pettah",
455
- "trip_count": 2,
456
- "estimated_km": 102.0
457
- },
458
- {
459
- "block_id": "BLK-071",
460
- "departure_time": "18:12",
461
- "origin": "Pettah",
462
- "destination": "Aluva",
463
- "trip_count": 3,
464
- "estimated_km": 153.0
465
- },
466
- {
467
- "block_id": "BLK-092",
468
- "departure_time": "20:18",
469
- "origin": "Aluva",
470
- "destination": "Pettah",
471
- "trip_count": 3,
472
- "estimated_km": 153.0
473
- }
474
- ],
475
- "stabling_bay": "BAY-02",
476
- "standby_reason": null,
477
- "maintenance_type": null,
478
- "ibl_bay": null,
479
- "estimated_completion": null,
480
- "alerts": [
481
- "Telecom certificate expiring soon"
482
- ]
483
- },
484
- {
485
- "trainset_id": "TS-010",
486
- "status": "REVENUE_SERVICE",
487
- "readiness_score": 0.9,
488
- "daily_km_allocation": 714.0,
489
- "cumulative_km": 758293.0,
490
- "assigned_duty": "DUTY-A9",
491
- "priority_rank": 9,
492
- "service_blocks": [
493
- {
494
- "block_id": "BLK-009",
495
- "departure_time": "07:48",
496
- "origin": "Pettah",
497
- "destination": "Aluva",
498
- "trip_count": 3,
499
- "estimated_km": 153.0
500
- },
501
- {
502
- "block_id": "BLK-030",
503
- "departure_time": "09:54",
504
- "origin": "Aluva",
505
- "destination": "Pettah",
506
- "trip_count": 3,
507
- "estimated_km": 153.0
508
- },
509
- {
510
- "block_id": "BLK-051",
511
- "departure_time": "15:00",
512
- "origin": "Pettah",
513
- "destination": "Aluva",
514
- "trip_count": 2,
515
- "estimated_km": 102.0
516
- },
517
- {
518
- "block_id": "BLK-072",
519
- "departure_time": "18:18",
520
- "origin": "Aluva",
521
- "destination": "Pettah",
522
- "trip_count": 3,
523
- "estimated_km": 153.0
524
- },
525
- {
526
- "block_id": "BLK-093",
527
- "departure_time": "20:24",
528
- "origin": "Pettah",
529
- "destination": "Aluva",
530
- "trip_count": 3,
531
- "estimated_km": 153.0
532
- }
533
- ],
534
- "stabling_bay": "BAY-09",
535
- "standby_reason": null,
536
- "maintenance_type": null,
537
- "ibl_bay": null,
538
- "estimated_completion": null,
539
- "alerts": [
540
- "HVAC certificate expiring soon"
541
- ]
542
- },
543
- {
544
- "trainset_id": "TS-012",
545
- "status": "REVENUE_SERVICE",
546
- "readiness_score": 0.9,
547
- "daily_km_allocation": 663.0,
548
- "cumulative_km": 913117.0,
549
- "assigned_duty": "DUTY-A10",
550
- "priority_rank": 10,
551
- "service_blocks": [
552
- {
553
- "block_id": "BLK-010",
554
- "departure_time": "07:54",
555
- "origin": "Aluva",
556
- "destination": "Pettah",
557
- "trip_count": 3,
558
- "estimated_km": 153.0
559
- },
560
- {
561
- "block_id": "BLK-031",
562
- "departure_time": "10:00",
563
- "origin": "Pettah",
564
- "destination": "Aluva",
565
- "trip_count": 2,
566
- "estimated_km": 102.0
567
- },
568
- {
569
- "block_id": "BLK-052",
570
- "departure_time": "15:15",
571
- "origin": "Aluva",
572
- "destination": "Pettah",
573
- "trip_count": 2,
574
- "estimated_km": 102.0
575
- },
576
- {
577
- "block_id": "BLK-073",
578
- "departure_time": "18:24",
579
- "origin": "Pettah",
580
- "destination": "Aluva",
581
- "trip_count": 3,
582
- "estimated_km": 153.0
583
- },
584
- {
585
- "block_id": "BLK-094",
586
- "departure_time": "20:30",
587
- "origin": "Aluva",
588
- "destination": "Pettah",
589
- "trip_count": 3,
590
- "estimated_km": 153.0
591
- }
592
- ],
593
- "stabling_bay": "BAY-09",
594
- "standby_reason": null,
595
- "maintenance_type": null,
596
- "ibl_bay": null,
597
- "estimated_completion": null,
598
- "alerts": [
599
- "Rolling Stock certificate expiring soon"
600
- ]
601
- },
602
- {
603
- "trainset_id": "TS-013",
604
- "status": "REVENUE_SERVICE",
605
- "readiness_score": 0.8,
606
- "daily_km_allocation": 663.0,
607
- "cumulative_km": 726191.0,
608
- "assigned_duty": "DUTY-B1",
609
- "priority_rank": 11,
610
- "service_blocks": [
611
- {
612
- "block_id": "BLK-011",
613
- "departure_time": "08:00",
614
- "origin": "Pettah",
615
- "destination": "Aluva",
616
- "trip_count": 3,
617
- "estimated_km": 153.0
618
- },
619
- {
620
- "block_id": "BLK-032",
621
- "departure_time": "10:15",
622
- "origin": "Aluva",
623
- "destination": "Pettah",
624
- "trip_count": 2,
625
- "estimated_km": 102.0
626
- },
627
- {
628
- "block_id": "BLK-053",
629
- "departure_time": "15:30",
630
- "origin": "Pettah",
631
- "destination": "Aluva",
632
- "trip_count": 2,
633
- "estimated_km": 102.0
634
- },
635
- {
636
- "block_id": "BLK-074",
637
- "departure_time": "18:30",
638
- "origin": "Aluva",
639
- "destination": "Pettah",
640
- "trip_count": 3,
641
- "estimated_km": 153.0
642
- },
643
- {
644
- "block_id": "BLK-095",
645
- "departure_time": "20:36",
646
- "origin": "Pettah",
647
- "destination": "Aluva",
648
- "trip_count": 3,
649
- "estimated_km": 153.0
650
- }
651
- ],
652
- "stabling_bay": "BAY-07",
653
- "standby_reason": null,
654
- "maintenance_type": null,
655
- "ibl_bay": null,
656
- "estimated_completion": null,
657
- "alerts": []
658
- },
659
- {
660
- "trainset_id": "TS-014",
661
- "status": "REVENUE_SERVICE",
662
- "readiness_score": 0.9,
663
- "daily_km_allocation": 663.0,
664
- "cumulative_km": 999254.0,
665
- "assigned_duty": "DUTY-B2",
666
- "priority_rank": 12,
667
- "service_blocks": [
668
- {
669
- "block_id": "BLK-012",
670
- "departure_time": "08:06",
671
- "origin": "Aluva",
672
- "destination": "Pettah",
673
- "trip_count": 3,
674
- "estimated_km": 153.0
675
- },
676
- {
677
- "block_id": "BLK-033",
678
- "departure_time": "10:30",
679
- "origin": "Pettah",
680
- "destination": "Aluva",
681
- "trip_count": 2,
682
- "estimated_km": 102.0
683
- },
684
- {
685
- "block_id": "BLK-054",
686
- "departure_time": "15:45",
687
- "origin": "Aluva",
688
- "destination": "Pettah",
689
- "trip_count": 2,
690
- "estimated_km": 102.0
691
- },
692
- {
693
- "block_id": "BLK-075",
694
- "departure_time": "18:36",
695
- "origin": "Pettah",
696
- "destination": "Aluva",
697
- "trip_count": 3,
698
- "estimated_km": 153.0
699
- },
700
- {
701
- "block_id": "BLK-096",
702
- "departure_time": "20:42",
703
- "origin": "Aluva",
704
- "destination": "Pettah",
705
- "trip_count": 3,
706
- "estimated_km": 153.0
707
- }
708
- ],
709
- "stabling_bay": "BAY-12",
710
- "standby_reason": null,
711
- "maintenance_type": null,
712
- "ibl_bay": null,
713
- "estimated_completion": null,
714
- "alerts": [
715
- "Telecom certificate expiring soon"
716
- ]
717
- },
718
- {
719
- "trainset_id": "TS-015",
720
- "status": "REVENUE_SERVICE",
721
- "readiness_score": 0.9,
722
- "daily_km_allocation": 663.0,
723
- "cumulative_km": 888933.0,
724
- "assigned_duty": "DUTY-B3",
725
- "priority_rank": 13,
726
- "service_blocks": [
727
- {
728
- "block_id": "BLK-013",
729
- "departure_time": "08:12",
730
- "origin": "Pettah",
731
- "destination": "Aluva",
732
- "trip_count": 3,
733
- "estimated_km": 153.0
734
- },
735
- {
736
- "block_id": "BLK-034",
737
- "departure_time": "10:45",
738
- "origin": "Aluva",
739
- "destination": "Pettah",
740
- "trip_count": 2,
741
- "estimated_km": 102.0
742
- },
743
- {
744
- "block_id": "BLK-055",
745
- "departure_time": "16:00",
746
- "origin": "Pettah",
747
- "destination": "Aluva",
748
- "trip_count": 2,
749
- "estimated_km": 102.0
750
- },
751
- {
752
- "block_id": "BLK-076",
753
- "departure_time": "18:42",
754
- "origin": "Aluva",
755
- "destination": "Pettah",
756
- "trip_count": 3,
757
- "estimated_km": 153.0
758
- },
759
- {
760
- "block_id": "BLK-097",
761
- "departure_time": "20:48",
762
- "origin": "Pettah",
763
- "destination": "Aluva",
764
- "trip_count": 3,
765
- "estimated_km": 153.0
766
- }
767
- ],
768
- "stabling_bay": "BAY-12",
769
- "standby_reason": null,
770
- "maintenance_type": null,
771
- "ibl_bay": null,
772
- "estimated_completion": null,
773
- "alerts": [
774
- "Signalling certificate expiring soon"
775
- ]
776
- },
777
- {
778
- "trainset_id": "TS-016",
779
- "status": "REVENUE_SERVICE",
780
- "readiness_score": 1.0,
781
- "daily_km_allocation": 663.0,
782
- "cumulative_km": 255034.0,
783
- "assigned_duty": "DUTY-B4",
784
- "priority_rank": 14,
785
- "service_blocks": [
786
- {
787
- "block_id": "BLK-014",
788
- "departure_time": "08:18",
789
- "origin": "Aluva",
790
- "destination": "Pettah",
791
- "trip_count": 3,
792
- "estimated_km": 153.0
793
- },
794
- {
795
- "block_id": "BLK-035",
796
- "departure_time": "11:00",
797
- "origin": "Pettah",
798
- "destination": "Aluva",
799
- "trip_count": 2,
800
- "estimated_km": 102.0
801
- },
802
- {
803
- "block_id": "BLK-056",
804
- "departure_time": "16:15",
805
- "origin": "Aluva",
806
- "destination": "Pettah",
807
- "trip_count": 2,
808
- "estimated_km": 102.0
809
- },
810
- {
811
- "block_id": "BLK-077",
812
- "departure_time": "18:48",
813
- "origin": "Pettah",
814
- "destination": "Aluva",
815
- "trip_count": 3,
816
- "estimated_km": 153.0
817
- },
818
- {
819
- "block_id": "BLK-098",
820
- "departure_time": "20:54",
821
- "origin": "Aluva",
822
- "destination": "Pettah",
823
- "trip_count": 3,
824
- "estimated_km": 153.0
825
- }
826
- ],
827
- "stabling_bay": "BAY-06",
828
- "standby_reason": null,
829
- "maintenance_type": null,
830
- "ibl_bay": null,
831
- "estimated_completion": null,
832
- "alerts": []
833
- },
834
- {
835
- "trainset_id": "TS-018",
836
- "status": "REVENUE_SERVICE",
837
- "readiness_score": 0.9,
838
- "daily_km_allocation": 561.0,
839
- "cumulative_km": 1225313.0,
840
- "assigned_duty": "DUTY-B5",
841
- "priority_rank": 15,
842
- "service_blocks": [
843
- {
844
- "block_id": "BLK-015",
845
- "departure_time": "08:24",
846
- "origin": "Pettah",
847
- "destination": "Aluva",
848
- "trip_count": 3,
849
- "estimated_km": 153.0
850
- },
851
- {
852
- "block_id": "BLK-036",
853
- "departure_time": "11:15",
854
- "origin": "Aluva",
855
- "destination": "Pettah",
856
- "trip_count": 2,
857
- "estimated_km": 102.0
858
- },
859
- {
860
- "block_id": "BLK-057",
861
- "departure_time": "16:30",
862
- "origin": "Pettah",
863
- "destination": "Aluva",
864
- "trip_count": 2,
865
- "estimated_km": 102.0
866
- },
867
- {
868
- "block_id": "BLK-078",
869
- "departure_time": "18:54",
870
- "origin": "Aluva",
871
- "destination": "Pettah",
872
- "trip_count": 3,
873
- "estimated_km": 153.0
874
- },
875
- {
876
- "block_id": "BLK-099",
877
- "departure_time": "21:00",
878
- "origin": "Pettah",
879
- "destination": "Aluva",
880
- "trip_count": 1,
881
- "estimated_km": 51.0
882
- }
883
- ],
884
- "stabling_bay": "BAY-03",
885
- "standby_reason": null,
886
- "maintenance_type": null,
887
- "ibl_bay": null,
888
- "estimated_completion": null,
889
- "alerts": [
890
- "Safety certificate expiring soon"
891
- ]
892
- },
893
- {
894
- "trainset_id": "TS-019",
895
- "status": "REVENUE_SERVICE",
896
- "readiness_score": 0.6,
897
- "daily_km_allocation": 561.0,
898
- "cumulative_km": 902618.0,
899
- "assigned_duty": "DUTY-B6",
900
- "priority_rank": 16,
901
- "service_blocks": [
902
- {
903
- "block_id": "BLK-016",
904
- "departure_time": "08:30",
905
- "origin": "Aluva",
906
- "destination": "Pettah",
907
- "trip_count": 3,
908
- "estimated_km": 153.0
909
- },
910
- {
911
- "block_id": "BLK-037",
912
- "departure_time": "11:30",
913
- "origin": "Pettah",
914
- "destination": "Aluva",
915
- "trip_count": 2,
916
- "estimated_km": 102.0
917
- },
918
- {
919
- "block_id": "BLK-058",
920
- "departure_time": "16:45",
921
- "origin": "Aluva",
922
- "destination": "Pettah",
923
- "trip_count": 2,
924
- "estimated_km": 102.0
925
- },
926
- {
927
- "block_id": "BLK-079",
928
- "departure_time": "19:00",
929
- "origin": "Pettah",
930
- "destination": "Aluva",
931
- "trip_count": 3,
932
- "estimated_km": 153.0
933
- },
934
- {
935
- "block_id": "BLK-100",
936
- "departure_time": "21:15",
937
- "origin": "Aluva",
938
- "destination": "Pettah",
939
- "trip_count": 1,
940
- "estimated_km": 51.0
941
- }
942
- ],
943
- "stabling_bay": "BAY-11",
944
- "standby_reason": null,
945
- "maintenance_type": null,
946
- "ibl_bay": null,
947
- "estimated_completion": null,
948
- "alerts": []
949
- },
950
- {
951
- "trainset_id": "TS-020",
952
- "status": "REVENUE_SERVICE",
953
- "readiness_score": 1.0,
954
- "daily_km_allocation": 612.0,
955
- "cumulative_km": 711151.0,
956
- "assigned_duty": "DUTY-B7",
957
- "priority_rank": 17,
958
- "service_blocks": [
959
- {
960
- "block_id": "BLK-017",
961
- "departure_time": "08:36",
962
- "origin": "Pettah",
963
- "destination": "Aluva",
964
- "trip_count": 3,
965
- "estimated_km": 153.0
966
- },
967
- {
968
- "block_id": "BLK-038",
969
- "departure_time": "11:45",
970
- "origin": "Aluva",
971
- "destination": "Pettah",
972
- "trip_count": 2,
973
- "estimated_km": 102.0
974
- },
975
- {
976
- "block_id": "BLK-059",
977
- "departure_time": "17:00",
978
- "origin": "Pettah",
979
- "destination": "Aluva",
980
- "trip_count": 3,
981
- "estimated_km": 153.0
982
- },
983
- {
984
- "block_id": "BLK-080",
985
- "departure_time": "19:06",
986
- "origin": "Aluva",
987
- "destination": "Pettah",
988
- "trip_count": 3,
989
- "estimated_km": 153.0
990
- },
991
- {
992
- "block_id": "BLK-101",
993
- "departure_time": "21:30",
994
- "origin": "Pettah",
995
- "destination": "Aluva",
996
- "trip_count": 1,
997
- "estimated_km": 51.0
998
- }
999
- ],
1000
- "stabling_bay": "BAY-09",
1001
- "standby_reason": null,
1002
- "maintenance_type": null,
1003
- "ibl_bay": null,
1004
- "estimated_completion": null,
1005
- "alerts": []
1006
- },
1007
- {
1008
- "trainset_id": "TS-021",
1009
- "status": "REVENUE_SERVICE",
1010
- "readiness_score": 0.8,
1011
- "daily_km_allocation": 612.0,
1012
- "cumulative_km": 1127729.0,
1013
- "assigned_duty": "DUTY-B8",
1014
- "priority_rank": 18,
1015
- "service_blocks": [
1016
- {
1017
- "block_id": "BLK-018",
1018
- "departure_time": "08:42",
1019
- "origin": "Aluva",
1020
- "destination": "Pettah",
1021
- "trip_count": 3,
1022
- "estimated_km": 153.0
1023
- },
1024
- {
1025
- "block_id": "BLK-039",
1026
- "departure_time": "12:00",
1027
- "origin": "Pettah",
1028
- "destination": "Aluva",
1029
- "trip_count": 2,
1030
- "estimated_km": 102.0
1031
- },
1032
- {
1033
- "block_id": "BLK-060",
1034
- "departure_time": "17:06",
1035
- "origin": "Aluva",
1036
- "destination": "Pettah",
1037
- "trip_count": 3,
1038
- "estimated_km": 153.0
1039
- },
1040
- {
1041
- "block_id": "BLK-081",
1042
- "departure_time": "19:12",
1043
- "origin": "Pettah",
1044
- "destination": "Aluva",
1045
- "trip_count": 3,
1046
- "estimated_km": 153.0
1047
- },
1048
- {
1049
- "block_id": "BLK-102",
1050
- "departure_time": "21:45",
1051
- "origin": "Aluva",
1052
- "destination": "Pettah",
1053
- "trip_count": 1,
1054
- "estimated_km": 51.0
1055
- }
1056
- ],
1057
- "stabling_bay": "BAY-07",
1058
- "standby_reason": null,
1059
- "maintenance_type": null,
1060
- "ibl_bay": null,
1061
- "estimated_completion": null,
1062
- "alerts": []
1063
- },
1064
- {
1065
- "trainset_id": "TS-022",
1066
- "status": "REVENUE_SERVICE",
1067
- "readiness_score": 0.9,
1068
- "daily_km_allocation": 612.0,
1069
- "cumulative_km": 1015182.0,
1070
- "assigned_duty": "DUTY-B9",
1071
- "priority_rank": 19,
1072
- "service_blocks": [
1073
- {
1074
- "block_id": "BLK-019",
1075
- "departure_time": "08:48",
1076
- "origin": "Pettah",
1077
- "destination": "Aluva",
1078
- "trip_count": 3,
1079
- "estimated_km": 153.0
1080
- },
1081
- {
1082
- "block_id": "BLK-040",
1083
- "departure_time": "12:15",
1084
- "origin": "Aluva",
1085
- "destination": "Pettah",
1086
- "trip_count": 2,
1087
- "estimated_km": 102.0
1088
- },
1089
- {
1090
- "block_id": "BLK-061",
1091
- "departure_time": "17:12",
1092
- "origin": "Pettah",
1093
- "destination": "Aluva",
1094
- "trip_count": 3,
1095
- "estimated_km": 153.0
1096
- },
1097
- {
1098
- "block_id": "BLK-082",
1099
- "departure_time": "19:18",
1100
- "origin": "Aluva",
1101
- "destination": "Pettah",
1102
- "trip_count": 3,
1103
- "estimated_km": 153.0
1104
- },
1105
- {
1106
- "block_id": "BLK-103",
1107
- "departure_time": "22:00",
1108
- "origin": "Pettah",
1109
- "destination": "Aluva",
1110
- "trip_count": 1,
1111
- "estimated_km": 51.0
1112
- }
1113
- ],
1114
- "stabling_bay": "BAY-01",
1115
- "standby_reason": null,
1116
- "maintenance_type": null,
1117
- "ibl_bay": null,
1118
- "estimated_completion": null,
1119
- "alerts": [
1120
- "HVAC certificate expiring soon"
1121
- ]
1122
- },
1123
- {
1124
- "trainset_id": "TS-023",
1125
- "status": "REVENUE_SERVICE",
1126
- "readiness_score": 0.7,
1127
- "daily_km_allocation": 612.0,
1128
- "cumulative_km": 1159248.0,
1129
- "assigned_duty": "DUTY-B10",
1130
- "priority_rank": 20,
1131
- "service_blocks": [
1132
- {
1133
- "block_id": "BLK-020",
1134
- "departure_time": "08:54",
1135
- "origin": "Aluva",
1136
- "destination": "Pettah",
1137
- "trip_count": 3,
1138
- "estimated_km": 153.0
1139
- },
1140
- {
1141
- "block_id": "BLK-041",
1142
- "departure_time": "12:30",
1143
- "origin": "Pettah",
1144
- "destination": "Aluva",
1145
- "trip_count": 2,
1146
- "estimated_km": 102.0
1147
- },
1148
- {
1149
- "block_id": "BLK-062",
1150
- "departure_time": "17:18",
1151
- "origin": "Aluva",
1152
- "destination": "Pettah",
1153
- "trip_count": 3,
1154
- "estimated_km": 153.0
1155
- },
1156
- {
1157
- "block_id": "BLK-083",
1158
- "departure_time": "19:24",
1159
- "origin": "Pettah",
1160
- "destination": "Aluva",
1161
- "trip_count": 3,
1162
- "estimated_km": 153.0
1163
- },
1164
- {
1165
- "block_id": "BLK-104",
1166
- "departure_time": "22:15",
1167
- "origin": "Aluva",
1168
- "destination": "Pettah",
1169
- "trip_count": 1,
1170
- "estimated_km": 51.0
1171
- }
1172
- ],
1173
- "stabling_bay": "BAY-02",
1174
- "standby_reason": null,
1175
- "maintenance_type": null,
1176
- "ibl_bay": null,
1177
- "estimated_completion": null,
1178
- "alerts": [
1179
- "HVAC certificate expiring soon"
1180
- ]
1181
- },
1182
- {
1183
- "trainset_id": "TS-024",
1184
- "status": "REVENUE_SERVICE",
1185
- "readiness_score": 1.0,
1186
- "daily_km_allocation": 612.0,
1187
- "cumulative_km": 217089.0,
1188
- "assigned_duty": "DUTY-C1",
1189
- "priority_rank": 21,
1190
- "service_blocks": [
1191
- {
1192
- "block_id": "BLK-021",
1193
- "departure_time": "09:00",
1194
- "origin": "Pettah",
1195
- "destination": "Aluva",
1196
- "trip_count": 3,
1197
- "estimated_km": 153.0
1198
- },
1199
- {
1200
- "block_id": "BLK-042",
1201
- "departure_time": "12:45",
1202
- "origin": "Aluva",
1203
- "destination": "Pettah",
1204
- "trip_count": 2,
1205
- "estimated_km": 102.0
1206
- },
1207
- {
1208
- "block_id": "BLK-063",
1209
- "departure_time": "17:24",
1210
- "origin": "Pettah",
1211
- "destination": "Aluva",
1212
- "trip_count": 3,
1213
- "estimated_km": 153.0
1214
- },
1215
- {
1216
- "block_id": "BLK-084",
1217
- "departure_time": "19:30",
1218
- "origin": "Aluva",
1219
- "destination": "Pettah",
1220
- "trip_count": 3,
1221
- "estimated_km": 153.0
1222
- },
1223
- {
1224
- "block_id": "BLK-105",
1225
- "departure_time": "22:30",
1226
- "origin": "Pettah",
1227
- "destination": "Aluva",
1228
- "trip_count": 1,
1229
- "estimated_km": 51.0
1230
- }
1231
- ],
1232
- "stabling_bay": "BAY-12",
1233
- "standby_reason": null,
1234
- "maintenance_type": null,
1235
- "ibl_bay": null,
1236
- "estimated_completion": null,
1237
- "alerts": []
1238
- },
1239
- {
1240
- "trainset_id": "TS-002",
1241
- "status": "STANDBY",
1242
- "readiness_score": 0.25,
1243
- "daily_km_allocation": 0.0,
1244
- "cumulative_km": 641913.0,
1245
- "assigned_duty": null,
1246
- "priority_rank": null,
1247
- "service_blocks": null,
1248
- "stabling_bay": "BAY-10",
1249
- "standby_reason": "MILEAGE_BALANCING",
1250
- "maintenance_type": null,
1251
- "ibl_bay": null,
1252
- "estimated_completion": null,
1253
- "alerts": [
1254
- "Brake_Pad in critical condition (wear: 91.0%)",
1255
- "HVAC requires attention (wear: 88.0%)",
1256
- "Compressor in critical condition (wear: 100.0%)"
1257
- ]
1258
- },
1259
- {
1260
- "trainset_id": "TS-011",
1261
- "status": "STANDBY",
1262
- "readiness_score": 0.4,
1263
- "daily_km_allocation": 0.0,
1264
- "cumulative_km": 1179029.0,
1265
- "assigned_duty": null,
1266
- "priority_rank": null,
1267
- "service_blocks": null,
1268
- "stabling_bay": "BAY-06",
1269
- "standby_reason": "EMERGENCY_BACKUP",
1270
- "maintenance_type": null,
1271
- "ibl_bay": null,
1272
- "estimated_completion": null,
1273
- "alerts": [
1274
- "Bogie in critical condition (wear: 100.0%)",
1275
- "HVAC in critical condition (wear: 100.0%)",
1276
- "Battery in critical condition (wear: 97.0%)",
1277
- "Compressor in critical condition (wear: 100.0%)"
1278
- ]
1279
- },
1280
- {
1281
- "trainset_id": "TS-025",
1282
- "status": "STANDBY",
1283
- "readiness_score": 0.3,
1284
- "daily_km_allocation": 0.0,
1285
- "cumulative_km": 881893.0,
1286
- "assigned_duty": null,
1287
- "priority_rank": null,
1288
- "service_blocks": null,
1289
- "stabling_bay": "BAY-05",
1290
- "standby_reason": "EMERGENCY_BACKUP",
1291
- "maintenance_type": null,
1292
- "ibl_bay": null,
1293
- "estimated_completion": null,
1294
- "alerts": [
1295
- "Brake_Pad in critical condition (wear: 99.0%)",
1296
- "HVAC in critical condition (wear: 93.0%)",
1297
- "Battery in critical condition (wear: 100.0%)",
1298
- "Compressor requires attention (wear: 86.0%)"
1299
- ]
1300
- },
1301
- {
1302
- "trainset_id": "TS-017",
1303
- "status": "MAINTENANCE",
1304
- "readiness_score": 0.85,
1305
- "daily_km_allocation": 0.0,
1306
- "cumulative_km": 219947.0,
1307
- "assigned_duty": null,
1308
- "priority_rank": null,
1309
- "service_blocks": null,
1310
- "stabling_bay": null,
1311
- "standby_reason": null,
1312
- "maintenance_type": "SCHEDULED_INSPECTION",
1313
- "ibl_bay": "IBL-01",
1314
- "estimated_completion": "2025-11-29T05:10:03.461728",
1315
- "alerts": [
1316
- "Brake_Pad in critical condition (wear: 96.0%)"
1317
- ]
1318
- }
1319
- ],
1320
- "fleet_summary": {
1321
- "total_trainsets": 25,
1322
- "revenue_service": 21,
1323
- "standby": 3,
1324
- "maintenance": 1,
1325
- "availability_percent": 96.0
1326
- },
1327
- "optimization_metrics": {
1328
- "fitness_score": -1206.4643355432015,
1329
- "method": "ga",
1330
- "mileage_variance_coefficient": 0.086,
1331
- "total_planned_km": 13974.0,
1332
- "optimization_runtime_ms": 4025
1333
- },
1334
- "alerts": [
1335
- {
1336
- "trainset_id": "TS-001",
1337
- "severity": "MEDIUM",
1338
- "alert_type": "CERTIFICATE_EXPIRING",
1339
- "message": "Signalling certificate expiring soon"
1340
- },
1341
- {
1342
- "trainset_id": "TS-006",
1343
- "severity": "MEDIUM",
1344
- "alert_type": "CERTIFICATE_EXPIRING",
1345
- "message": "Telecom certificate expiring soon"
1346
- },
1347
- {
1348
- "trainset_id": "TS-007",
1349
- "severity": "MEDIUM",
1350
- "alert_type": "CERTIFICATE_EXPIRING",
1351
- "message": "Telecom certificate expiring soon"
1352
- },
1353
- {
1354
- "trainset_id": "TS-008",
1355
- "severity": "MEDIUM",
1356
- "alert_type": "CERTIFICATE_EXPIRING",
1357
- "message": "Signalling certificate expiring soon"
1358
- },
1359
- {
1360
- "trainset_id": "TS-008",
1361
- "severity": "MEDIUM",
1362
- "alert_type": "CERTIFICATE_EXPIRING",
1363
- "message": "Safety certificate expiring soon"
1364
- },
1365
- {
1366
- "trainset_id": "TS-008",
1367
- "severity": "MEDIUM",
1368
- "alert_type": "CERTIFICATE_EXPIRING",
1369
- "message": "HVAC certificate expiring soon"
1370
- },
1371
- {
1372
- "trainset_id": "TS-009",
1373
- "severity": "MEDIUM",
1374
- "alert_type": "CERTIFICATE_EXPIRING",
1375
- "message": "Telecom certificate expiring soon"
1376
- },
1377
- {
1378
- "trainset_id": "TS-010",
1379
- "severity": "MEDIUM",
1380
- "alert_type": "CERTIFICATE_EXPIRING",
1381
- "message": "HVAC certificate expiring soon"
1382
- },
1383
- {
1384
- "trainset_id": "TS-012",
1385
- "severity": "MEDIUM",
1386
- "alert_type": "CERTIFICATE_EXPIRING",
1387
- "message": "Rolling Stock certificate expiring soon"
1388
- },
1389
- {
1390
- "trainset_id": "TS-014",
1391
- "severity": "MEDIUM",
1392
- "alert_type": "CERTIFICATE_EXPIRING",
1393
- "message": "Telecom certificate expiring soon"
1394
- },
1395
- {
1396
- "trainset_id": "TS-015",
1397
- "severity": "MEDIUM",
1398
- "alert_type": "CERTIFICATE_EXPIRING",
1399
- "message": "Signalling certificate expiring soon"
1400
- },
1401
- {
1402
- "trainset_id": "TS-018",
1403
- "severity": "MEDIUM",
1404
- "alert_type": "CERTIFICATE_EXPIRING",
1405
- "message": "Safety certificate expiring soon"
1406
- },
1407
- {
1408
- "trainset_id": "TS-022",
1409
- "severity": "MEDIUM",
1410
- "alert_type": "CERTIFICATE_EXPIRING",
1411
- "message": "HVAC certificate expiring soon"
1412
- },
1413
- {
1414
- "trainset_id": "TS-023",
1415
- "severity": "MEDIUM",
1416
- "alert_type": "CERTIFICATE_EXPIRING",
1417
- "message": "HVAC certificate expiring soon"
1418
- },
1419
- {
1420
- "trainset_id": "TS-002",
1421
- "severity": "HIGH",
1422
- "alert_type": "COMPONENT_CRITICAL",
1423
- "message": "Brake_Pad in critical condition (wear: 91.0%)"
1424
- },
1425
- {
1426
- "trainset_id": "TS-002",
1427
- "severity": "MEDIUM",
1428
- "alert_type": "COMPONENT_WARNING",
1429
- "message": "HVAC requires attention (wear: 88.0%)"
1430
- },
1431
- {
1432
- "trainset_id": "TS-002",
1433
- "severity": "HIGH",
1434
- "alert_type": "COMPONENT_CRITICAL",
1435
- "message": "Compressor in critical condition (wear: 100.0%)"
1436
- },
1437
- {
1438
- "trainset_id": "TS-011",
1439
- "severity": "HIGH",
1440
- "alert_type": "COMPONENT_CRITICAL",
1441
- "message": "Bogie in critical condition (wear: 100.0%)"
1442
- },
1443
- {
1444
- "trainset_id": "TS-011",
1445
- "severity": "HIGH",
1446
- "alert_type": "COMPONENT_CRITICAL",
1447
- "message": "HVAC in critical condition (wear: 100.0%)"
1448
- },
1449
- {
1450
- "trainset_id": "TS-011",
1451
- "severity": "HIGH",
1452
- "alert_type": "COMPONENT_CRITICAL",
1453
- "message": "Battery in critical condition (wear: 97.0%)"
1454
- },
1455
- {
1456
- "trainset_id": "TS-011",
1457
- "severity": "HIGH",
1458
- "alert_type": "COMPONENT_CRITICAL",
1459
- "message": "Compressor in critical condition (wear: 100.0%)"
1460
- },
1461
- {
1462
- "trainset_id": "TS-025",
1463
- "severity": "HIGH",
1464
- "alert_type": "COMPONENT_CRITICAL",
1465
- "message": "Brake_Pad in critical condition (wear: 99.0%)"
1466
- },
1467
- {
1468
- "trainset_id": "TS-025",
1469
- "severity": "HIGH",
1470
- "alert_type": "COMPONENT_CRITICAL",
1471
- "message": "HVAC in critical condition (wear: 93.0%)"
1472
- },
1473
- {
1474
- "trainset_id": "TS-025",
1475
- "severity": "HIGH",
1476
- "alert_type": "COMPONENT_CRITICAL",
1477
- "message": "Battery in critical condition (wear: 100.0%)"
1478
- },
1479
- {
1480
- "trainset_id": "TS-025",
1481
- "severity": "MEDIUM",
1482
- "alert_type": "COMPONENT_WARNING",
1483
- "message": "Compressor requires attention (wear: 86.0%)"
1484
- },
1485
- {
1486
- "trainset_id": "TS-017",
1487
- "severity": "HIGH",
1488
- "alert_type": "COMPONENT_CRITICAL",
1489
- "message": "Brake_Pad in critical condition (wear: 96.0%)"
1490
- }
1491
- ]
1492
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
test_output/api_gen_25_output_20251202_143844.json ADDED
The diff for this file is too large to render. See raw diff
 
test_output/{api_gen_30_input_20251129_001003.json → api_gen_30_input_20251202_143849.json} RENAMED
The diff for this file is too large to render. See raw diff
 
test_output/api_gen_30_output_20251129_001003.json DELETED
@@ -1,1653 +0,0 @@
1
- {
2
- "schedule_id": "SCH-20251129-280",
3
- "generated_at": "2025-11-29T00:10:07.598718",
4
- "valid_from": "2025-11-29T05:00:00+05:30",
5
- "valid_until": "2025-11-29T23:00:00+05:30",
6
- "depot": "Muttom_Depot",
7
- "trainsets": [
8
- {
9
- "trainset_id": "TS-001",
10
- "status": "REVENUE_SERVICE",
11
- "readiness_score": 0.7,
12
- "daily_km_allocation": 714.0,
13
- "cumulative_km": 625787.0,
14
- "assigned_duty": "DUTY-A1",
15
- "priority_rank": 1,
16
- "service_blocks": [
17
- {
18
- "block_id": "BLK-001",
19
- "departure_time": "07:00",
20
- "origin": "Pettah",
21
- "destination": "Aluva",
22
- "trip_count": 3,
23
- "estimated_km": 153.0
24
- },
25
- {
26
- "block_id": "BLK-023",
27
- "departure_time": "09:12",
28
- "origin": "Pettah",
29
- "destination": "Aluva",
30
- "trip_count": 3,
31
- "estimated_km": 153.0
32
- },
33
- {
34
- "block_id": "BLK-045",
35
- "departure_time": "13:30",
36
- "origin": "Pettah",
37
- "destination": "Aluva",
38
- "trip_count": 2,
39
- "estimated_km": 102.0
40
- },
41
- {
42
- "block_id": "BLK-067",
43
- "departure_time": "17:48",
44
- "origin": "Pettah",
45
- "destination": "Aluva",
46
- "trip_count": 3,
47
- "estimated_km": 153.0
48
- },
49
- {
50
- "block_id": "BLK-089",
51
- "departure_time": "20:00",
52
- "origin": "Pettah",
53
- "destination": "Aluva",
54
- "trip_count": 3,
55
- "estimated_km": 153.0
56
- }
57
- ],
58
- "stabling_bay": "BAY-05",
59
- "standby_reason": null,
60
- "maintenance_type": null,
61
- "ibl_bay": null,
62
- "estimated_completion": null,
63
- "alerts": [
64
- "Telecom certificate expiring soon"
65
- ]
66
- },
67
- {
68
- "trainset_id": "TS-003",
69
- "status": "REVENUE_SERVICE",
70
- "readiness_score": 0.9,
71
- "daily_km_allocation": 714.0,
72
- "cumulative_km": 526310.0,
73
- "assigned_duty": "DUTY-A2",
74
- "priority_rank": 2,
75
- "service_blocks": [
76
- {
77
- "block_id": "BLK-002",
78
- "departure_time": "07:06",
79
- "origin": "Aluva",
80
- "destination": "Pettah",
81
- "trip_count": 3,
82
- "estimated_km": 153.0
83
- },
84
- {
85
- "block_id": "BLK-024",
86
- "departure_time": "09:18",
87
- "origin": "Aluva",
88
- "destination": "Pettah",
89
- "trip_count": 3,
90
- "estimated_km": 153.0
91
- },
92
- {
93
- "block_id": "BLK-046",
94
- "departure_time": "13:45",
95
- "origin": "Aluva",
96
- "destination": "Pettah",
97
- "trip_count": 2,
98
- "estimated_km": 102.0
99
- },
100
- {
101
- "block_id": "BLK-068",
102
- "departure_time": "17:54",
103
- "origin": "Aluva",
104
- "destination": "Pettah",
105
- "trip_count": 3,
106
- "estimated_km": 153.0
107
- },
108
- {
109
- "block_id": "BLK-090",
110
- "departure_time": "20:06",
111
- "origin": "Aluva",
112
- "destination": "Pettah",
113
- "trip_count": 3,
114
- "estimated_km": 153.0
115
- }
116
- ],
117
- "stabling_bay": "BAY-02",
118
- "standby_reason": null,
119
- "maintenance_type": null,
120
- "ibl_bay": null,
121
- "estimated_completion": null,
122
- "alerts": [
123
- "HVAC certificate expiring soon"
124
- ]
125
- },
126
- {
127
- "trainset_id": "TS-004",
128
- "status": "REVENUE_SERVICE",
129
- "readiness_score": 1.0,
130
- "daily_km_allocation": 714.0,
131
- "cumulative_km": 399570.0,
132
- "assigned_duty": "DUTY-A3",
133
- "priority_rank": 3,
134
- "service_blocks": [
135
- {
136
- "block_id": "BLK-003",
137
- "departure_time": "07:12",
138
- "origin": "Pettah",
139
- "destination": "Aluva",
140
- "trip_count": 3,
141
- "estimated_km": 153.0
142
- },
143
- {
144
- "block_id": "BLK-025",
145
- "departure_time": "09:24",
146
- "origin": "Pettah",
147
- "destination": "Aluva",
148
- "trip_count": 3,
149
- "estimated_km": 153.0
150
- },
151
- {
152
- "block_id": "BLK-047",
153
- "departure_time": "14:00",
154
- "origin": "Pettah",
155
- "destination": "Aluva",
156
- "trip_count": 2,
157
- "estimated_km": 102.0
158
- },
159
- {
160
- "block_id": "BLK-069",
161
- "departure_time": "18:00",
162
- "origin": "Pettah",
163
- "destination": "Aluva",
164
- "trip_count": 3,
165
- "estimated_km": 153.0
166
- },
167
- {
168
- "block_id": "BLK-091",
169
- "departure_time": "20:12",
170
- "origin": "Pettah",
171
- "destination": "Aluva",
172
- "trip_count": 3,
173
- "estimated_km": 153.0
174
- }
175
- ],
176
- "stabling_bay": "BAY-03",
177
- "standby_reason": null,
178
- "maintenance_type": null,
179
- "ibl_bay": null,
180
- "estimated_completion": null,
181
- "alerts": []
182
- },
183
- {
184
- "trainset_id": "TS-005",
185
- "status": "REVENUE_SERVICE",
186
- "readiness_score": 0.8,
187
- "daily_km_allocation": 714.0,
188
- "cumulative_km": 521123.0,
189
- "assigned_duty": "DUTY-A4",
190
- "priority_rank": 4,
191
- "service_blocks": [
192
- {
193
- "block_id": "BLK-004",
194
- "departure_time": "07:18",
195
- "origin": "Aluva",
196
- "destination": "Pettah",
197
- "trip_count": 3,
198
- "estimated_km": 153.0
199
- },
200
- {
201
- "block_id": "BLK-026",
202
- "departure_time": "09:30",
203
- "origin": "Aluva",
204
- "destination": "Pettah",
205
- "trip_count": 3,
206
- "estimated_km": 153.0
207
- },
208
- {
209
- "block_id": "BLK-048",
210
- "departure_time": "14:15",
211
- "origin": "Aluva",
212
- "destination": "Pettah",
213
- "trip_count": 2,
214
- "estimated_km": 102.0
215
- },
216
- {
217
- "block_id": "BLK-070",
218
- "departure_time": "18:06",
219
- "origin": "Aluva",
220
- "destination": "Pettah",
221
- "trip_count": 3,
222
- "estimated_km": 153.0
223
- },
224
- {
225
- "block_id": "BLK-092",
226
- "departure_time": "20:18",
227
- "origin": "Aluva",
228
- "destination": "Pettah",
229
- "trip_count": 3,
230
- "estimated_km": 153.0
231
- }
232
- ],
233
- "stabling_bay": "BAY-11",
234
- "standby_reason": null,
235
- "maintenance_type": null,
236
- "ibl_bay": null,
237
- "estimated_completion": null,
238
- "alerts": []
239
- },
240
- {
241
- "trainset_id": "TS-007",
242
- "status": "REVENUE_SERVICE",
243
- "readiness_score": 0.9,
244
- "daily_km_allocation": 561.0,
245
- "cumulative_km": 918955.0,
246
- "assigned_duty": "DUTY-A5",
247
- "priority_rank": 5,
248
- "service_blocks": [
249
- {
250
- "block_id": "BLK-005",
251
- "departure_time": "07:24",
252
- "origin": "Pettah",
253
- "destination": "Aluva",
254
- "trip_count": 3,
255
- "estimated_km": 153.0
256
- },
257
- {
258
- "block_id": "BLK-049",
259
- "departure_time": "14:30",
260
- "origin": "Pettah",
261
- "destination": "Aluva",
262
- "trip_count": 2,
263
- "estimated_km": 102.0
264
- },
265
- {
266
- "block_id": "BLK-071",
267
- "departure_time": "18:12",
268
- "origin": "Pettah",
269
- "destination": "Aluva",
270
- "trip_count": 3,
271
- "estimated_km": 153.0
272
- },
273
- {
274
- "block_id": "BLK-093",
275
- "departure_time": "20:24",
276
- "origin": "Pettah",
277
- "destination": "Aluva",
278
- "trip_count": 3,
279
- "estimated_km": 153.0
280
- }
281
- ],
282
- "stabling_bay": "BAY-11",
283
- "standby_reason": null,
284
- "maintenance_type": null,
285
- "ibl_bay": null,
286
- "estimated_completion": null,
287
- "alerts": [
288
- "Telecom certificate expiring soon"
289
- ]
290
- },
291
- {
292
- "trainset_id": "TS-008",
293
- "status": "REVENUE_SERVICE",
294
- "readiness_score": 1.0,
295
- "daily_km_allocation": 714.0,
296
- "cumulative_km": 1083912.0,
297
- "assigned_duty": "DUTY-A6",
298
- "priority_rank": 6,
299
- "service_blocks": [
300
- {
301
- "block_id": "BLK-006",
302
- "departure_time": "07:30",
303
- "origin": "Aluva",
304
- "destination": "Pettah",
305
- "trip_count": 3,
306
- "estimated_km": 153.0
307
- },
308
- {
309
- "block_id": "BLK-028",
310
- "departure_time": "09:42",
311
- "origin": "Aluva",
312
- "destination": "Pettah",
313
- "trip_count": 3,
314
- "estimated_km": 153.0
315
- },
316
- {
317
- "block_id": "BLK-050",
318
- "departure_time": "14:45",
319
- "origin": "Aluva",
320
- "destination": "Pettah",
321
- "trip_count": 2,
322
- "estimated_km": 102.0
323
- },
324
- {
325
- "block_id": "BLK-072",
326
- "departure_time": "18:18",
327
- "origin": "Aluva",
328
- "destination": "Pettah",
329
- "trip_count": 3,
330
- "estimated_km": 153.0
331
- },
332
- {
333
- "block_id": "BLK-094",
334
- "departure_time": "20:30",
335
- "origin": "Aluva",
336
- "destination": "Pettah",
337
- "trip_count": 3,
338
- "estimated_km": 153.0
339
- }
340
- ],
341
- "stabling_bay": "BAY-13",
342
- "standby_reason": null,
343
- "maintenance_type": null,
344
- "ibl_bay": null,
345
- "estimated_completion": null,
346
- "alerts": []
347
- },
348
- {
349
- "trainset_id": "TS-009",
350
- "status": "REVENUE_SERVICE",
351
- "readiness_score": 0.9,
352
- "daily_km_allocation": 714.0,
353
- "cumulative_km": 1157523.0,
354
- "assigned_duty": "DUTY-A7",
355
- "priority_rank": 7,
356
- "service_blocks": [
357
- {
358
- "block_id": "BLK-007",
359
- "departure_time": "07:36",
360
- "origin": "Pettah",
361
- "destination": "Aluva",
362
- "trip_count": 3,
363
- "estimated_km": 153.0
364
- },
365
- {
366
- "block_id": "BLK-029",
367
- "departure_time": "09:48",
368
- "origin": "Pettah",
369
- "destination": "Aluva",
370
- "trip_count": 3,
371
- "estimated_km": 153.0
372
- },
373
- {
374
- "block_id": "BLK-051",
375
- "departure_time": "15:00",
376
- "origin": "Pettah",
377
- "destination": "Aluva",
378
- "trip_count": 2,
379
- "estimated_km": 102.0
380
- },
381
- {
382
- "block_id": "BLK-073",
383
- "departure_time": "18:24",
384
- "origin": "Pettah",
385
- "destination": "Aluva",
386
- "trip_count": 3,
387
- "estimated_km": 153.0
388
- },
389
- {
390
- "block_id": "BLK-079",
391
- "departure_time": "19:00",
392
- "origin": "Pettah",
393
- "destination": "Aluva",
394
- "trip_count": 3,
395
- "estimated_km": 153.0
396
- }
397
- ],
398
- "stabling_bay": "BAY-01",
399
- "standby_reason": null,
400
- "maintenance_type": null,
401
- "ibl_bay": null,
402
- "estimated_completion": null,
403
- "alerts": [
404
- "Telecom certificate expiring soon"
405
- ]
406
- },
407
- {
408
- "trainset_id": "TS-010",
409
- "status": "REVENUE_SERVICE",
410
- "readiness_score": 1.0,
411
- "daily_km_allocation": 714.0,
412
- "cumulative_km": 1165899.0,
413
- "assigned_duty": "DUTY-A8",
414
- "priority_rank": 8,
415
- "service_blocks": [
416
- {
417
- "block_id": "BLK-008",
418
- "departure_time": "07:42",
419
- "origin": "Aluva",
420
- "destination": "Pettah",
421
- "trip_count": 3,
422
- "estimated_km": 153.0
423
- },
424
- {
425
- "block_id": "BLK-027",
426
- "departure_time": "09:36",
427
- "origin": "Pettah",
428
- "destination": "Aluva",
429
- "trip_count": 3,
430
- "estimated_km": 153.0
431
- },
432
- {
433
- "block_id": "BLK-030",
434
- "departure_time": "09:54",
435
- "origin": "Aluva",
436
- "destination": "Pettah",
437
- "trip_count": 3,
438
- "estimated_km": 153.0
439
- },
440
- {
441
- "block_id": "BLK-052",
442
- "departure_time": "15:15",
443
- "origin": "Aluva",
444
- "destination": "Pettah",
445
- "trip_count": 2,
446
- "estimated_km": 102.0
447
- },
448
- {
449
- "block_id": "BLK-096",
450
- "departure_time": "20:42",
451
- "origin": "Aluva",
452
- "destination": "Pettah",
453
- "trip_count": 3,
454
- "estimated_km": 153.0
455
- }
456
- ],
457
- "stabling_bay": "BAY-10",
458
- "standby_reason": null,
459
- "maintenance_type": null,
460
- "ibl_bay": null,
461
- "estimated_completion": null,
462
- "alerts": []
463
- },
464
- {
465
- "trainset_id": "TS-011",
466
- "status": "REVENUE_SERVICE",
467
- "readiness_score": 0.9,
468
- "daily_km_allocation": 663.0,
469
- "cumulative_km": 1472294.0,
470
- "assigned_duty": "DUTY-A9",
471
- "priority_rank": 9,
472
- "service_blocks": [
473
- {
474
- "block_id": "BLK-009",
475
- "departure_time": "07:48",
476
- "origin": "Pettah",
477
- "destination": "Aluva",
478
- "trip_count": 3,
479
- "estimated_km": 153.0
480
- },
481
- {
482
- "block_id": "BLK-031",
483
- "departure_time": "10:00",
484
- "origin": "Pettah",
485
- "destination": "Aluva",
486
- "trip_count": 2,
487
- "estimated_km": 102.0
488
- },
489
- {
490
- "block_id": "BLK-053",
491
- "departure_time": "15:30",
492
- "origin": "Pettah",
493
- "destination": "Aluva",
494
- "trip_count": 2,
495
- "estimated_km": 102.0
496
- },
497
- {
498
- "block_id": "BLK-075",
499
- "departure_time": "18:36",
500
- "origin": "Pettah",
501
- "destination": "Aluva",
502
- "trip_count": 3,
503
- "estimated_km": 153.0
504
- },
505
- {
506
- "block_id": "BLK-097",
507
- "departure_time": "20:48",
508
- "origin": "Pettah",
509
- "destination": "Aluva",
510
- "trip_count": 3,
511
- "estimated_km": 153.0
512
- }
513
- ],
514
- "stabling_bay": "BAY-03",
515
- "standby_reason": null,
516
- "maintenance_type": null,
517
- "ibl_bay": null,
518
- "estimated_completion": null,
519
- "alerts": [
520
- "Telecom certificate expiring soon"
521
- ]
522
- },
523
- {
524
- "trainset_id": "TS-012",
525
- "status": "REVENUE_SERVICE",
526
- "readiness_score": 0.9,
527
- "daily_km_allocation": 510.0,
528
- "cumulative_km": 1466726.0,
529
- "assigned_duty": "DUTY-A10",
530
- "priority_rank": 10,
531
- "service_blocks": [
532
- {
533
- "block_id": "BLK-010",
534
- "departure_time": "07:54",
535
- "origin": "Aluva",
536
- "destination": "Pettah",
537
- "trip_count": 3,
538
- "estimated_km": 153.0
539
- },
540
- {
541
- "block_id": "BLK-032",
542
- "departure_time": "10:15",
543
- "origin": "Aluva",
544
- "destination": "Pettah",
545
- "trip_count": 2,
546
- "estimated_km": 102.0
547
- },
548
- {
549
- "block_id": "BLK-054",
550
- "departure_time": "15:45",
551
- "origin": "Aluva",
552
- "destination": "Pettah",
553
- "trip_count": 2,
554
- "estimated_km": 102.0
555
- },
556
- {
557
- "block_id": "BLK-076",
558
- "departure_time": "18:42",
559
- "origin": "Aluva",
560
- "destination": "Pettah",
561
- "trip_count": 3,
562
- "estimated_km": 153.0
563
- }
564
- ],
565
- "stabling_bay": "BAY-02",
566
- "standby_reason": null,
567
- "maintenance_type": null,
568
- "ibl_bay": null,
569
- "estimated_completion": null,
570
- "alerts": [
571
- "Telecom certificate expiring soon"
572
- ]
573
- },
574
- {
575
- "trainset_id": "TS-014",
576
- "status": "REVENUE_SERVICE",
577
- "readiness_score": 0.9,
578
- "daily_km_allocation": 459.0,
579
- "cumulative_km": 1138480.0,
580
- "assigned_duty": "DUTY-B1",
581
- "priority_rank": 11,
582
- "service_blocks": [
583
- {
584
- "block_id": "BLK-011",
585
- "departure_time": "08:00",
586
- "origin": "Pettah",
587
- "destination": "Aluva",
588
- "trip_count": 3,
589
- "estimated_km": 153.0
590
- },
591
- {
592
- "block_id": "BLK-033",
593
- "departure_time": "10:30",
594
- "origin": "Pettah",
595
- "destination": "Aluva",
596
- "trip_count": 2,
597
- "estimated_km": 102.0
598
- },
599
- {
600
- "block_id": "BLK-077",
601
- "departure_time": "18:48",
602
- "origin": "Pettah",
603
- "destination": "Aluva",
604
- "trip_count": 3,
605
- "estimated_km": 153.0
606
- },
607
- {
608
- "block_id": "BLK-099",
609
- "departure_time": "21:00",
610
- "origin": "Pettah",
611
- "destination": "Aluva",
612
- "trip_count": 1,
613
- "estimated_km": 51.0
614
- }
615
- ],
616
- "stabling_bay": "BAY-07",
617
- "standby_reason": null,
618
- "maintenance_type": null,
619
- "ibl_bay": null,
620
- "estimated_completion": null,
621
- "alerts": [
622
- "Telecom certificate expiring soon"
623
- ]
624
- },
625
- {
626
- "trainset_id": "TS-015",
627
- "status": "REVENUE_SERVICE",
628
- "readiness_score": 0.8,
629
- "daily_km_allocation": 561.0,
630
- "cumulative_km": 575779.0,
631
- "assigned_duty": "DUTY-B2",
632
- "priority_rank": 12,
633
- "service_blocks": [
634
- {
635
- "block_id": "BLK-012",
636
- "departure_time": "08:06",
637
- "origin": "Aluva",
638
- "destination": "Pettah",
639
- "trip_count": 3,
640
- "estimated_km": 153.0
641
- },
642
- {
643
- "block_id": "BLK-034",
644
- "departure_time": "10:45",
645
- "origin": "Aluva",
646
- "destination": "Pettah",
647
- "trip_count": 2,
648
- "estimated_km": 102.0
649
- },
650
- {
651
- "block_id": "BLK-056",
652
- "departure_time": "16:15",
653
- "origin": "Aluva",
654
- "destination": "Pettah",
655
- "trip_count": 2,
656
- "estimated_km": 102.0
657
- },
658
- {
659
- "block_id": "BLK-078",
660
- "departure_time": "18:54",
661
- "origin": "Aluva",
662
- "destination": "Pettah",
663
- "trip_count": 3,
664
- "estimated_km": 153.0
665
- },
666
- {
667
- "block_id": "BLK-100",
668
- "departure_time": "21:15",
669
- "origin": "Aluva",
670
- "destination": "Pettah",
671
- "trip_count": 1,
672
- "estimated_km": 51.0
673
- }
674
- ],
675
- "stabling_bay": "BAY-14",
676
- "standby_reason": null,
677
- "maintenance_type": null,
678
- "ibl_bay": null,
679
- "estimated_completion": null,
680
- "alerts": []
681
- },
682
- {
683
- "trainset_id": "TS-016",
684
- "status": "REVENUE_SERVICE",
685
- "readiness_score": 0.9,
686
- "daily_km_allocation": 408.0,
687
- "cumulative_km": 139758.0,
688
- "assigned_duty": "DUTY-B3",
689
- "priority_rank": 13,
690
- "service_blocks": [
691
- {
692
- "block_id": "BLK-013",
693
- "departure_time": "08:12",
694
- "origin": "Pettah",
695
- "destination": "Aluva",
696
- "trip_count": 3,
697
- "estimated_km": 153.0
698
- },
699
- {
700
- "block_id": "BLK-035",
701
- "departure_time": "11:00",
702
- "origin": "Pettah",
703
- "destination": "Aluva",
704
- "trip_count": 2,
705
- "estimated_km": 102.0
706
- },
707
- {
708
- "block_id": "BLK-057",
709
- "departure_time": "16:30",
710
- "origin": "Pettah",
711
- "destination": "Aluva",
712
- "trip_count": 2,
713
- "estimated_km": 102.0
714
- },
715
- {
716
- "block_id": "BLK-101",
717
- "departure_time": "21:30",
718
- "origin": "Pettah",
719
- "destination": "Aluva",
720
- "trip_count": 1,
721
- "estimated_km": 51.0
722
- }
723
- ],
724
- "stabling_bay": "BAY-08",
725
- "standby_reason": null,
726
- "maintenance_type": null,
727
- "ibl_bay": null,
728
- "estimated_completion": null,
729
- "alerts": [
730
- "Rolling Stock certificate expiring soon"
731
- ]
732
- },
733
- {
734
- "trainset_id": "TS-017",
735
- "status": "REVENUE_SERVICE",
736
- "readiness_score": 0.9,
737
- "daily_km_allocation": 561.0,
738
- "cumulative_km": 522976.0,
739
- "assigned_duty": "DUTY-B4",
740
- "priority_rank": 14,
741
- "service_blocks": [
742
- {
743
- "block_id": "BLK-014",
744
- "departure_time": "08:18",
745
- "origin": "Aluva",
746
- "destination": "Pettah",
747
- "trip_count": 3,
748
- "estimated_km": 153.0
749
- },
750
- {
751
- "block_id": "BLK-036",
752
- "departure_time": "11:15",
753
- "origin": "Aluva",
754
- "destination": "Pettah",
755
- "trip_count": 2,
756
- "estimated_km": 102.0
757
- },
758
- {
759
- "block_id": "BLK-058",
760
- "departure_time": "16:45",
761
- "origin": "Aluva",
762
- "destination": "Pettah",
763
- "trip_count": 2,
764
- "estimated_km": 102.0
765
- },
766
- {
767
- "block_id": "BLK-080",
768
- "departure_time": "19:06",
769
- "origin": "Aluva",
770
- "destination": "Pettah",
771
- "trip_count": 3,
772
- "estimated_km": 153.0
773
- },
774
- {
775
- "block_id": "BLK-102",
776
- "departure_time": "21:45",
777
- "origin": "Aluva",
778
- "destination": "Pettah",
779
- "trip_count": 1,
780
- "estimated_km": 51.0
781
- }
782
- ],
783
- "stabling_bay": "BAY-05",
784
- "standby_reason": null,
785
- "maintenance_type": null,
786
- "ibl_bay": null,
787
- "estimated_completion": null,
788
- "alerts": [
789
- "Signalling certificate expiring soon"
790
- ]
791
- },
792
- {
793
- "trainset_id": "TS-019",
794
- "status": "REVENUE_SERVICE",
795
- "readiness_score": 0.8,
796
- "daily_km_allocation": 612.0,
797
- "cumulative_km": 1272811.0,
798
- "assigned_duty": "DUTY-B5",
799
- "priority_rank": 15,
800
- "service_blocks": [
801
- {
802
- "block_id": "BLK-015",
803
- "departure_time": "08:24",
804
- "origin": "Pettah",
805
- "destination": "Aluva",
806
- "trip_count": 3,
807
- "estimated_km": 153.0
808
- },
809
- {
810
- "block_id": "BLK-037",
811
- "departure_time": "11:30",
812
- "origin": "Pettah",
813
- "destination": "Aluva",
814
- "trip_count": 2,
815
- "estimated_km": 102.0
816
- },
817
- {
818
- "block_id": "BLK-059",
819
- "departure_time": "17:00",
820
- "origin": "Pettah",
821
- "destination": "Aluva",
822
- "trip_count": 3,
823
- "estimated_km": 153.0
824
- },
825
- {
826
- "block_id": "BLK-081",
827
- "departure_time": "19:12",
828
- "origin": "Pettah",
829
- "destination": "Aluva",
830
- "trip_count": 3,
831
- "estimated_km": 153.0
832
- },
833
- {
834
- "block_id": "BLK-103",
835
- "departure_time": "22:00",
836
- "origin": "Pettah",
837
- "destination": "Aluva",
838
- "trip_count": 1,
839
- "estimated_km": 51.0
840
- }
841
- ],
842
- "stabling_bay": "BAY-10",
843
- "standby_reason": null,
844
- "maintenance_type": null,
845
- "ibl_bay": null,
846
- "estimated_completion": null,
847
- "alerts": []
848
- },
849
- {
850
- "trainset_id": "TS-020",
851
- "status": "REVENUE_SERVICE",
852
- "readiness_score": 1.0,
853
- "daily_km_allocation": 612.0,
854
- "cumulative_km": 80834.0,
855
- "assigned_duty": "DUTY-B6",
856
- "priority_rank": 16,
857
- "service_blocks": [
858
- {
859
- "block_id": "BLK-016",
860
- "departure_time": "08:30",
861
- "origin": "Aluva",
862
- "destination": "Pettah",
863
- "trip_count": 3,
864
- "estimated_km": 153.0
865
- },
866
- {
867
- "block_id": "BLK-038",
868
- "departure_time": "11:45",
869
- "origin": "Aluva",
870
- "destination": "Pettah",
871
- "trip_count": 2,
872
- "estimated_km": 102.0
873
- },
874
- {
875
- "block_id": "BLK-060",
876
- "departure_time": "17:06",
877
- "origin": "Aluva",
878
- "destination": "Pettah",
879
- "trip_count": 3,
880
- "estimated_km": 153.0
881
- },
882
- {
883
- "block_id": "BLK-082",
884
- "departure_time": "19:18",
885
- "origin": "Aluva",
886
- "destination": "Pettah",
887
- "trip_count": 3,
888
- "estimated_km": 153.0
889
- },
890
- {
891
- "block_id": "BLK-104",
892
- "departure_time": "22:15",
893
- "origin": "Aluva",
894
- "destination": "Pettah",
895
- "trip_count": 1,
896
- "estimated_km": 51.0
897
- }
898
- ],
899
- "stabling_bay": "BAY-08",
900
- "standby_reason": null,
901
- "maintenance_type": null,
902
- "ibl_bay": null,
903
- "estimated_completion": null,
904
- "alerts": []
905
- },
906
- {
907
- "trainset_id": "TS-022",
908
- "status": "REVENUE_SERVICE",
909
- "readiness_score": 0.9,
910
- "daily_km_allocation": 765.0,
911
- "cumulative_km": 1587983.0,
912
- "assigned_duty": "DUTY-B7",
913
- "priority_rank": 17,
914
- "service_blocks": [
915
- {
916
- "block_id": "BLK-017",
917
- "departure_time": "08:36",
918
- "origin": "Pettah",
919
- "destination": "Aluva",
920
- "trip_count": 3,
921
- "estimated_km": 153.0
922
- },
923
- {
924
- "block_id": "BLK-039",
925
- "departure_time": "12:00",
926
- "origin": "Pettah",
927
- "destination": "Aluva",
928
- "trip_count": 2,
929
- "estimated_km": 102.0
930
- },
931
- {
932
- "block_id": "BLK-061",
933
- "departure_time": "17:12",
934
- "origin": "Pettah",
935
- "destination": "Aluva",
936
- "trip_count": 3,
937
- "estimated_km": 153.0
938
- },
939
- {
940
- "block_id": "BLK-083",
941
- "departure_time": "19:24",
942
- "origin": "Pettah",
943
- "destination": "Aluva",
944
- "trip_count": 3,
945
- "estimated_km": 153.0
946
- },
947
- {
948
- "block_id": "BLK-098",
949
- "departure_time": "20:54",
950
- "origin": "Aluva",
951
- "destination": "Pettah",
952
- "trip_count": 3,
953
- "estimated_km": 153.0
954
- },
955
- {
956
- "block_id": "BLK-105",
957
- "departure_time": "22:30",
958
- "origin": "Pettah",
959
- "destination": "Aluva",
960
- "trip_count": 1,
961
- "estimated_km": 51.0
962
- }
963
- ],
964
- "stabling_bay": "BAY-13",
965
- "standby_reason": null,
966
- "maintenance_type": null,
967
- "ibl_bay": null,
968
- "estimated_completion": null,
969
- "alerts": [
970
- "HVAC certificate expiring soon"
971
- ]
972
- },
973
- {
974
- "trainset_id": "TS-023",
975
- "status": "REVENUE_SERVICE",
976
- "readiness_score": 1.0,
977
- "daily_km_allocation": 612.0,
978
- "cumulative_km": 681821.0,
979
- "assigned_duty": "DUTY-B8",
980
- "priority_rank": 18,
981
- "service_blocks": [
982
- {
983
- "block_id": "BLK-040",
984
- "departure_time": "12:15",
985
- "origin": "Aluva",
986
- "destination": "Pettah",
987
- "trip_count": 2,
988
- "estimated_km": 102.0
989
- },
990
- {
991
- "block_id": "BLK-062",
992
- "departure_time": "17:18",
993
- "origin": "Aluva",
994
- "destination": "Pettah",
995
- "trip_count": 3,
996
- "estimated_km": 153.0
997
- },
998
- {
999
- "block_id": "BLK-084",
1000
- "departure_time": "19:30",
1001
- "origin": "Aluva",
1002
- "destination": "Pettah",
1003
- "trip_count": 3,
1004
- "estimated_km": 153.0
1005
- },
1006
- {
1007
- "block_id": "BLK-095",
1008
- "departure_time": "20:36",
1009
- "origin": "Pettah",
1010
- "destination": "Aluva",
1011
- "trip_count": 3,
1012
- "estimated_km": 153.0
1013
- },
1014
- {
1015
- "block_id": "BLK-106",
1016
- "departure_time": "22:45",
1017
- "origin": "Aluva",
1018
- "destination": "Pettah",
1019
- "trip_count": 1,
1020
- "estimated_km": 51.0
1021
- }
1022
- ],
1023
- "stabling_bay": "BAY-05",
1024
- "standby_reason": null,
1025
- "maintenance_type": null,
1026
- "ibl_bay": null,
1027
- "estimated_completion": null,
1028
- "alerts": []
1029
- },
1030
- {
1031
- "trainset_id": "TS-024",
1032
- "status": "REVENUE_SERVICE",
1033
- "readiness_score": 0.9,
1034
- "daily_km_allocation": 714.0,
1035
- "cumulative_km": 466159.0,
1036
- "assigned_duty": "DUTY-B9",
1037
- "priority_rank": 19,
1038
- "service_blocks": [
1039
- {
1040
- "block_id": "BLK-018",
1041
- "departure_time": "08:42",
1042
- "origin": "Aluva",
1043
- "destination": "Pettah",
1044
- "trip_count": 3,
1045
- "estimated_km": 153.0
1046
- },
1047
- {
1048
- "block_id": "BLK-019",
1049
- "departure_time": "08:48",
1050
- "origin": "Pettah",
1051
- "destination": "Aluva",
1052
- "trip_count": 3,
1053
- "estimated_km": 153.0
1054
- },
1055
- {
1056
- "block_id": "BLK-041",
1057
- "departure_time": "12:30",
1058
- "origin": "Pettah",
1059
- "destination": "Aluva",
1060
- "trip_count": 2,
1061
- "estimated_km": 102.0
1062
- },
1063
- {
1064
- "block_id": "BLK-063",
1065
- "departure_time": "17:24",
1066
- "origin": "Pettah",
1067
- "destination": "Aluva",
1068
- "trip_count": 3,
1069
- "estimated_km": 153.0
1070
- },
1071
- {
1072
- "block_id": "BLK-085",
1073
- "departure_time": "19:36",
1074
- "origin": "Pettah",
1075
- "destination": "Aluva",
1076
- "trip_count": 3,
1077
- "estimated_km": 153.0
1078
- }
1079
- ],
1080
- "stabling_bay": "BAY-04",
1081
- "standby_reason": null,
1082
- "maintenance_type": null,
1083
- "ibl_bay": null,
1084
- "estimated_completion": null,
1085
- "alerts": [
1086
- "Telecom certificate expiring soon"
1087
- ]
1088
- },
1089
- {
1090
- "trainset_id": "TS-026",
1091
- "status": "REVENUE_SERVICE",
1092
- "readiness_score": 1.0,
1093
- "daily_km_allocation": 663.0,
1094
- "cumulative_km": 809372.0,
1095
- "assigned_duty": "DUTY-B10",
1096
- "priority_rank": 20,
1097
- "service_blocks": [
1098
- {
1099
- "block_id": "BLK-020",
1100
- "departure_time": "08:54",
1101
- "origin": "Aluva",
1102
- "destination": "Pettah",
1103
- "trip_count": 3,
1104
- "estimated_km": 153.0
1105
- },
1106
- {
1107
- "block_id": "BLK-042",
1108
- "departure_time": "12:45",
1109
- "origin": "Aluva",
1110
- "destination": "Pettah",
1111
- "trip_count": 2,
1112
- "estimated_km": 102.0
1113
- },
1114
- {
1115
- "block_id": "BLK-055",
1116
- "departure_time": "16:00",
1117
- "origin": "Pettah",
1118
- "destination": "Aluva",
1119
- "trip_count": 2,
1120
- "estimated_km": 102.0
1121
- },
1122
- {
1123
- "block_id": "BLK-064",
1124
- "departure_time": "17:30",
1125
- "origin": "Aluva",
1126
- "destination": "Pettah",
1127
- "trip_count": 3,
1128
- "estimated_km": 153.0
1129
- },
1130
- {
1131
- "block_id": "BLK-086",
1132
- "departure_time": "19:42",
1133
- "origin": "Aluva",
1134
- "destination": "Pettah",
1135
- "trip_count": 3,
1136
- "estimated_km": 153.0
1137
- }
1138
- ],
1139
- "stabling_bay": "BAY-08",
1140
- "standby_reason": null,
1141
- "maintenance_type": null,
1142
- "ibl_bay": null,
1143
- "estimated_completion": null,
1144
- "alerts": []
1145
- },
1146
- {
1147
- "trainset_id": "TS-028",
1148
- "status": "REVENUE_SERVICE",
1149
- "readiness_score": 0.8,
1150
- "daily_km_allocation": 714.0,
1151
- "cumulative_km": 857999.0,
1152
- "assigned_duty": "DUTY-C1",
1153
- "priority_rank": 21,
1154
- "service_blocks": [
1155
- {
1156
- "block_id": "BLK-021",
1157
- "departure_time": "09:00",
1158
- "origin": "Pettah",
1159
- "destination": "Aluva",
1160
- "trip_count": 3,
1161
- "estimated_km": 153.0
1162
- },
1163
- {
1164
- "block_id": "BLK-043",
1165
- "departure_time": "13:00",
1166
- "origin": "Pettah",
1167
- "destination": "Aluva",
1168
- "trip_count": 2,
1169
- "estimated_km": 102.0
1170
- },
1171
- {
1172
- "block_id": "BLK-065",
1173
- "departure_time": "17:36",
1174
- "origin": "Pettah",
1175
- "destination": "Aluva",
1176
- "trip_count": 3,
1177
- "estimated_km": 153.0
1178
- },
1179
- {
1180
- "block_id": "BLK-074",
1181
- "departure_time": "18:30",
1182
- "origin": "Aluva",
1183
- "destination": "Pettah",
1184
- "trip_count": 3,
1185
- "estimated_km": 153.0
1186
- },
1187
- {
1188
- "block_id": "BLK-087",
1189
- "departure_time": "19:48",
1190
- "origin": "Pettah",
1191
- "destination": "Aluva",
1192
- "trip_count": 3,
1193
- "estimated_km": 153.0
1194
- }
1195
- ],
1196
- "stabling_bay": "BAY-06",
1197
- "standby_reason": null,
1198
- "maintenance_type": null,
1199
- "ibl_bay": null,
1200
- "estimated_completion": null,
1201
- "alerts": [
1202
- "Signalling certificate expiring soon",
1203
- "Safety certificate expiring soon"
1204
- ]
1205
- },
1206
- {
1207
- "trainset_id": "TS-030",
1208
- "status": "REVENUE_SERVICE",
1209
- "readiness_score": 0.7,
1210
- "daily_km_allocation": 561.0,
1211
- "cumulative_km": 775542.0,
1212
- "assigned_duty": "DUTY-C2",
1213
- "priority_rank": 22,
1214
- "service_blocks": [
1215
- {
1216
- "block_id": "BLK-022",
1217
- "departure_time": "09:06",
1218
- "origin": "Aluva",
1219
- "destination": "Pettah",
1220
- "trip_count": 3,
1221
- "estimated_km": 153.0
1222
- },
1223
- {
1224
- "block_id": "BLK-044",
1225
- "departure_time": "13:15",
1226
- "origin": "Aluva",
1227
- "destination": "Pettah",
1228
- "trip_count": 2,
1229
- "estimated_km": 102.0
1230
- },
1231
- {
1232
- "block_id": "BLK-066",
1233
- "departure_time": "17:42",
1234
- "origin": "Aluva",
1235
- "destination": "Pettah",
1236
- "trip_count": 3,
1237
- "estimated_km": 153.0
1238
- },
1239
- {
1240
- "block_id": "BLK-088",
1241
- "departure_time": "19:54",
1242
- "origin": "Aluva",
1243
- "destination": "Pettah",
1244
- "trip_count": 3,
1245
- "estimated_km": 153.0
1246
- }
1247
- ],
1248
- "stabling_bay": "BAY-06",
1249
- "standby_reason": null,
1250
- "maintenance_type": null,
1251
- "ibl_bay": null,
1252
- "estimated_completion": null,
1253
- "alerts": [
1254
- "HVAC certificate expiring soon"
1255
- ]
1256
- },
1257
- {
1258
- "trainset_id": "TS-006",
1259
- "status": "STANDBY",
1260
- "readiness_score": 0.8,
1261
- "daily_km_allocation": 0.0,
1262
- "cumulative_km": 675365.0,
1263
- "assigned_duty": null,
1264
- "priority_rank": null,
1265
- "service_blocks": null,
1266
- "stabling_bay": "BAY-13",
1267
- "standby_reason": "CREW_UNAVAILABLE",
1268
- "maintenance_type": null,
1269
- "ibl_bay": null,
1270
- "estimated_completion": null,
1271
- "alerts": []
1272
- },
1273
- {
1274
- "trainset_id": "TS-013",
1275
- "status": "STANDBY",
1276
- "readiness_score": 1.0,
1277
- "daily_km_allocation": 0.0,
1278
- "cumulative_km": 589306.0,
1279
- "assigned_duty": null,
1280
- "priority_rank": null,
1281
- "service_blocks": null,
1282
- "stabling_bay": "BAY-08",
1283
- "standby_reason": "EMERGENCY_BACKUP",
1284
- "maintenance_type": null,
1285
- "ibl_bay": null,
1286
- "estimated_completion": null,
1287
- "alerts": []
1288
- },
1289
- {
1290
- "trainset_id": "TS-018",
1291
- "status": "STANDBY",
1292
- "readiness_score": 0.2,
1293
- "daily_km_allocation": 0.0,
1294
- "cumulative_km": 1231035.0,
1295
- "assigned_duty": null,
1296
- "priority_rank": null,
1297
- "service_blocks": null,
1298
- "stabling_bay": "BAY-15",
1299
- "standby_reason": "MILEAGE_BALANCING",
1300
- "maintenance_type": null,
1301
- "ibl_bay": null,
1302
- "estimated_completion": null,
1303
- "alerts": [
1304
- "Bogie in critical condition (wear: 90.0%)",
1305
- "Brake_Pad in critical condition (wear: 100.0%)",
1306
- "HVAC in critical condition (wear: 92.0%)",
1307
- "Pantograph requires attention (wear: 88.0%)",
1308
- "Traction_Motor in critical condition (wear: 100.0%)",
1309
- "Compressor in critical condition (wear: 100.0%)"
1310
- ]
1311
- },
1312
- {
1313
- "trainset_id": "TS-025",
1314
- "status": "STANDBY",
1315
- "readiness_score": 0.45,
1316
- "daily_km_allocation": 0.0,
1317
- "cumulative_km": 954977.0,
1318
- "assigned_duty": null,
1319
- "priority_rank": null,
1320
- "service_blocks": null,
1321
- "stabling_bay": "BAY-09",
1322
- "standby_reason": "EMERGENCY_BACKUP",
1323
- "maintenance_type": null,
1324
- "ibl_bay": null,
1325
- "estimated_completion": null,
1326
- "alerts": [
1327
- "Bogie in critical condition (wear: 92.0%)",
1328
- "HVAC in critical condition (wear: 100.0%)",
1329
- "Door_System in critical condition (wear: 91.0%)",
1330
- "Battery requires attention (wear: 89.0%)",
1331
- "Compressor requires attention (wear: 85.0%)"
1332
- ]
1333
- },
1334
- {
1335
- "trainset_id": "TS-002",
1336
- "status": "MAINTENANCE",
1337
- "readiness_score": 0.0,
1338
- "daily_km_allocation": 0.0,
1339
- "cumulative_km": 690321.0,
1340
- "assigned_duty": null,
1341
- "priority_rank": null,
1342
- "service_blocks": null,
1343
- "stabling_bay": null,
1344
- "standby_reason": null,
1345
- "maintenance_type": "SCHEDULED_INSPECTION",
1346
- "ibl_bay": "IBL-03",
1347
- "estimated_completion": "2025-11-29T09:10:07.599613",
1348
- "alerts": [
1349
- "HVAC certificate expiring soon",
1350
- "HVAC in critical condition (wear: 99.0%)",
1351
- "Pantograph in critical condition (wear: 100.0%)",
1352
- "Battery requires attention (wear: 85.0%)",
1353
- "Compressor in critical condition (wear: 100.0%)"
1354
- ]
1355
- },
1356
- {
1357
- "trainset_id": "TS-021",
1358
- "status": "MAINTENANCE",
1359
- "readiness_score": 0.5,
1360
- "daily_km_allocation": 0.0,
1361
- "cumulative_km": 382936.0,
1362
- "assigned_duty": null,
1363
- "priority_rank": null,
1364
- "service_blocks": null,
1365
- "stabling_bay": null,
1366
- "standby_reason": null,
1367
- "maintenance_type": "SCHEDULED_INSPECTION",
1368
- "ibl_bay": "IBL-03",
1369
- "estimated_completion": "2025-11-29T09:10:07.599659",
1370
- "alerts": [
1371
- "HVAC certificate expiring soon"
1372
- ]
1373
- },
1374
- {
1375
- "trainset_id": "TS-027",
1376
- "status": "MAINTENANCE",
1377
- "readiness_score": 0.4,
1378
- "daily_km_allocation": 0.0,
1379
- "cumulative_km": 449035.0,
1380
- "assigned_duty": null,
1381
- "priority_rank": null,
1382
- "service_blocks": null,
1383
- "stabling_bay": null,
1384
- "standby_reason": null,
1385
- "maintenance_type": "SCHEDULED_INSPECTION",
1386
- "ibl_bay": "IBL-02",
1387
- "estimated_completion": "2025-11-29T05:10:07.599679",
1388
- "alerts": [
1389
- "Brake_Pad in critical condition (wear: 93.0%)",
1390
- "HVAC requires attention (wear: 89.8%)",
1391
- "Pantograph requires attention (wear: 85.0%)",
1392
- "Battery in critical condition (wear: 100.0%)"
1393
- ]
1394
- },
1395
- {
1396
- "trainset_id": "TS-029",
1397
- "status": "MAINTENANCE",
1398
- "readiness_score": 0.5,
1399
- "daily_km_allocation": 0.0,
1400
- "cumulative_km": 1082155.0,
1401
- "assigned_duty": null,
1402
- "priority_rank": null,
1403
- "service_blocks": null,
1404
- "stabling_bay": null,
1405
- "standby_reason": null,
1406
- "maintenance_type": "SCHEDULED_INSPECTION",
1407
- "ibl_bay": "IBL-02",
1408
- "estimated_completion": "2025-11-29T09:10:07.599704",
1409
- "alerts": [
1410
- "Bogie in critical condition (wear: 100.0%)",
1411
- "HVAC in critical condition (wear: 96.0%)"
1412
- ]
1413
- }
1414
- ],
1415
- "fleet_summary": {
1416
- "total_trainsets": 30,
1417
- "revenue_service": 22,
1418
- "standby": 4,
1419
- "maintenance": 4,
1420
- "availability_percent": 86.7
1421
- },
1422
- "optimization_metrics": {
1423
- "fitness_score": -1217.7792037632228,
1424
- "method": "ga",
1425
- "mileage_variance_coefficient": 0.152,
1426
- "total_planned_km": 13974.0,
1427
- "optimization_runtime_ms": 4089
1428
- },
1429
- "alerts": [
1430
- {
1431
- "trainset_id": "TS-001",
1432
- "severity": "MEDIUM",
1433
- "alert_type": "CERTIFICATE_EXPIRING",
1434
- "message": "Telecom certificate expiring soon"
1435
- },
1436
- {
1437
- "trainset_id": "TS-003",
1438
- "severity": "MEDIUM",
1439
- "alert_type": "CERTIFICATE_EXPIRING",
1440
- "message": "HVAC certificate expiring soon"
1441
- },
1442
- {
1443
- "trainset_id": "TS-007",
1444
- "severity": "MEDIUM",
1445
- "alert_type": "CERTIFICATE_EXPIRING",
1446
- "message": "Telecom certificate expiring soon"
1447
- },
1448
- {
1449
- "trainset_id": "TS-009",
1450
- "severity": "MEDIUM",
1451
- "alert_type": "CERTIFICATE_EXPIRING",
1452
- "message": "Telecom certificate expiring soon"
1453
- },
1454
- {
1455
- "trainset_id": "TS-011",
1456
- "severity": "MEDIUM",
1457
- "alert_type": "CERTIFICATE_EXPIRING",
1458
- "message": "Telecom certificate expiring soon"
1459
- },
1460
- {
1461
- "trainset_id": "TS-012",
1462
- "severity": "MEDIUM",
1463
- "alert_type": "CERTIFICATE_EXPIRING",
1464
- "message": "Telecom certificate expiring soon"
1465
- },
1466
- {
1467
- "trainset_id": "TS-014",
1468
- "severity": "MEDIUM",
1469
- "alert_type": "CERTIFICATE_EXPIRING",
1470
- "message": "Telecom certificate expiring soon"
1471
- },
1472
- {
1473
- "trainset_id": "TS-016",
1474
- "severity": "MEDIUM",
1475
- "alert_type": "CERTIFICATE_EXPIRING",
1476
- "message": "Rolling Stock certificate expiring soon"
1477
- },
1478
- {
1479
- "trainset_id": "TS-017",
1480
- "severity": "MEDIUM",
1481
- "alert_type": "CERTIFICATE_EXPIRING",
1482
- "message": "Signalling certificate expiring soon"
1483
- },
1484
- {
1485
- "trainset_id": "TS-022",
1486
- "severity": "MEDIUM",
1487
- "alert_type": "CERTIFICATE_EXPIRING",
1488
- "message": "HVAC certificate expiring soon"
1489
- },
1490
- {
1491
- "trainset_id": "TS-024",
1492
- "severity": "MEDIUM",
1493
- "alert_type": "CERTIFICATE_EXPIRING",
1494
- "message": "Telecom certificate expiring soon"
1495
- },
1496
- {
1497
- "trainset_id": "TS-028",
1498
- "severity": "MEDIUM",
1499
- "alert_type": "CERTIFICATE_EXPIRING",
1500
- "message": "Signalling certificate expiring soon"
1501
- },
1502
- {
1503
- "trainset_id": "TS-028",
1504
- "severity": "MEDIUM",
1505
- "alert_type": "CERTIFICATE_EXPIRING",
1506
- "message": "Safety certificate expiring soon"
1507
- },
1508
- {
1509
- "trainset_id": "TS-030",
1510
- "severity": "MEDIUM",
1511
- "alert_type": "CERTIFICATE_EXPIRING",
1512
- "message": "HVAC certificate expiring soon"
1513
- },
1514
- {
1515
- "trainset_id": "TS-018",
1516
- "severity": "HIGH",
1517
- "alert_type": "COMPONENT_CRITICAL",
1518
- "message": "Bogie in critical condition (wear: 90.0%)"
1519
- },
1520
- {
1521
- "trainset_id": "TS-018",
1522
- "severity": "HIGH",
1523
- "alert_type": "COMPONENT_CRITICAL",
1524
- "message": "Brake_Pad in critical condition (wear: 100.0%)"
1525
- },
1526
- {
1527
- "trainset_id": "TS-018",
1528
- "severity": "HIGH",
1529
- "alert_type": "COMPONENT_CRITICAL",
1530
- "message": "HVAC in critical condition (wear: 92.0%)"
1531
- },
1532
- {
1533
- "trainset_id": "TS-018",
1534
- "severity": "MEDIUM",
1535
- "alert_type": "COMPONENT_WARNING",
1536
- "message": "Pantograph requires attention (wear: 88.0%)"
1537
- },
1538
- {
1539
- "trainset_id": "TS-018",
1540
- "severity": "HIGH",
1541
- "alert_type": "COMPONENT_CRITICAL",
1542
- "message": "Traction_Motor in critical condition (wear: 100.0%)"
1543
- },
1544
- {
1545
- "trainset_id": "TS-018",
1546
- "severity": "HIGH",
1547
- "alert_type": "COMPONENT_CRITICAL",
1548
- "message": "Compressor in critical condition (wear: 100.0%)"
1549
- },
1550
- {
1551
- "trainset_id": "TS-025",
1552
- "severity": "HIGH",
1553
- "alert_type": "COMPONENT_CRITICAL",
1554
- "message": "Bogie in critical condition (wear: 92.0%)"
1555
- },
1556
- {
1557
- "trainset_id": "TS-025",
1558
- "severity": "HIGH",
1559
- "alert_type": "COMPONENT_CRITICAL",
1560
- "message": "HVAC in critical condition (wear: 100.0%)"
1561
- },
1562
- {
1563
- "trainset_id": "TS-025",
1564
- "severity": "HIGH",
1565
- "alert_type": "COMPONENT_CRITICAL",
1566
- "message": "Door_System in critical condition (wear: 91.0%)"
1567
- },
1568
- {
1569
- "trainset_id": "TS-025",
1570
- "severity": "MEDIUM",
1571
- "alert_type": "COMPONENT_WARNING",
1572
- "message": "Battery requires attention (wear: 89.0%)"
1573
- },
1574
- {
1575
- "trainset_id": "TS-025",
1576
- "severity": "MEDIUM",
1577
- "alert_type": "COMPONENT_WARNING",
1578
- "message": "Compressor requires attention (wear: 85.0%)"
1579
- },
1580
- {
1581
- "trainset_id": "TS-002",
1582
- "severity": "MEDIUM",
1583
- "alert_type": "CERTIFICATE_EXPIRING",
1584
- "message": "HVAC certificate expiring soon"
1585
- },
1586
- {
1587
- "trainset_id": "TS-002",
1588
- "severity": "HIGH",
1589
- "alert_type": "COMPONENT_CRITICAL",
1590
- "message": "HVAC in critical condition (wear: 99.0%)"
1591
- },
1592
- {
1593
- "trainset_id": "TS-002",
1594
- "severity": "HIGH",
1595
- "alert_type": "COMPONENT_CRITICAL",
1596
- "message": "Pantograph in critical condition (wear: 100.0%)"
1597
- },
1598
- {
1599
- "trainset_id": "TS-002",
1600
- "severity": "MEDIUM",
1601
- "alert_type": "COMPONENT_WARNING",
1602
- "message": "Battery requires attention (wear: 85.0%)"
1603
- },
1604
- {
1605
- "trainset_id": "TS-002",
1606
- "severity": "HIGH",
1607
- "alert_type": "COMPONENT_CRITICAL",
1608
- "message": "Compressor in critical condition (wear: 100.0%)"
1609
- },
1610
- {
1611
- "trainset_id": "TS-021",
1612
- "severity": "MEDIUM",
1613
- "alert_type": "CERTIFICATE_EXPIRING",
1614
- "message": "HVAC certificate expiring soon"
1615
- },
1616
- {
1617
- "trainset_id": "TS-027",
1618
- "severity": "HIGH",
1619
- "alert_type": "COMPONENT_CRITICAL",
1620
- "message": "Brake_Pad in critical condition (wear: 93.0%)"
1621
- },
1622
- {
1623
- "trainset_id": "TS-027",
1624
- "severity": "MEDIUM",
1625
- "alert_type": "COMPONENT_WARNING",
1626
- "message": "HVAC requires attention (wear: 89.8%)"
1627
- },
1628
- {
1629
- "trainset_id": "TS-027",
1630
- "severity": "MEDIUM",
1631
- "alert_type": "COMPONENT_WARNING",
1632
- "message": "Pantograph requires attention (wear: 85.0%)"
1633
- },
1634
- {
1635
- "trainset_id": "TS-027",
1636
- "severity": "HIGH",
1637
- "alert_type": "COMPONENT_CRITICAL",
1638
- "message": "Battery in critical condition (wear: 100.0%)"
1639
- },
1640
- {
1641
- "trainset_id": "TS-029",
1642
- "severity": "HIGH",
1643
- "alert_type": "COMPONENT_CRITICAL",
1644
- "message": "Bogie in critical condition (wear: 100.0%)"
1645
- },
1646
- {
1647
- "trainset_id": "TS-029",
1648
- "severity": "HIGH",
1649
- "alert_type": "COMPONENT_CRITICAL",
1650
- "message": "HVAC in critical condition (wear: 96.0%)"
1651
- }
1652
- ]
1653
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
test_output/api_gen_30_output_20251202_143849.json ADDED
The diff for this file is too large to render. See raw diff
 
test_output/dataservice_gen_25_input_20251202_143854.json ADDED
The diff for this file is too large to render. See raw diff
 
test_output/dataservice_gen_25_output_20251129_001007.json DELETED
@@ -1,1597 +0,0 @@
1
- {
2
- "schedule_id": "SCH-20251129-902",
3
- "generated_at": "2025-11-29T00:10:11.601327",
4
- "valid_from": "2025-11-29T05:00:00+05:30",
5
- "valid_until": "2025-11-29T23:00:00+05:30",
6
- "depot": "Muttom_Depot",
7
- "trainsets": [
8
- {
9
- "trainset_id": "TS-001",
10
- "status": "REVENUE_SERVICE",
11
- "readiness_score": 0.8,
12
- "daily_km_allocation": 765.0,
13
- "cumulative_km": 884088.0,
14
- "assigned_duty": "DUTY-A1",
15
- "priority_rank": 1,
16
- "service_blocks": [
17
- {
18
- "block_id": "BLK-001",
19
- "departure_time": "07:00",
20
- "origin": "Pettah",
21
- "destination": "Aluva",
22
- "trip_count": 3,
23
- "estimated_km": 153.0
24
- },
25
- {
26
- "block_id": "BLK-022",
27
- "departure_time": "09:06",
28
- "origin": "Aluva",
29
- "destination": "Pettah",
30
- "trip_count": 3,
31
- "estimated_km": 153.0
32
- },
33
- {
34
- "block_id": "BLK-043",
35
- "departure_time": "13:00",
36
- "origin": "Pettah",
37
- "destination": "Aluva",
38
- "trip_count": 2,
39
- "estimated_km": 102.0
40
- },
41
- {
42
- "block_id": "BLK-064",
43
- "departure_time": "17:30",
44
- "origin": "Aluva",
45
- "destination": "Pettah",
46
- "trip_count": 3,
47
- "estimated_km": 153.0
48
- },
49
- {
50
- "block_id": "BLK-085",
51
- "departure_time": "19:36",
52
- "origin": "Pettah",
53
- "destination": "Aluva",
54
- "trip_count": 3,
55
- "estimated_km": 153.0
56
- },
57
- {
58
- "block_id": "BLK-106",
59
- "departure_time": "22:45",
60
- "origin": "Aluva",
61
- "destination": "Pettah",
62
- "trip_count": 1,
63
- "estimated_km": 51.0
64
- }
65
- ],
66
- "stabling_bay": "BAY-14",
67
- "standby_reason": null,
68
- "maintenance_type": null,
69
- "ibl_bay": null,
70
- "estimated_completion": null,
71
- "alerts": []
72
- },
73
- {
74
- "trainset_id": "TS-002",
75
- "status": "REVENUE_SERVICE",
76
- "readiness_score": 1.0,
77
- "daily_km_allocation": 714.0,
78
- "cumulative_km": 601539.0,
79
- "assigned_duty": "DUTY-A2",
80
- "priority_rank": 2,
81
- "service_blocks": [
82
- {
83
- "block_id": "BLK-002",
84
- "departure_time": "07:06",
85
- "origin": "Aluva",
86
- "destination": "Pettah",
87
- "trip_count": 3,
88
- "estimated_km": 153.0
89
- },
90
- {
91
- "block_id": "BLK-023",
92
- "departure_time": "09:12",
93
- "origin": "Pettah",
94
- "destination": "Aluva",
95
- "trip_count": 3,
96
- "estimated_km": 153.0
97
- },
98
- {
99
- "block_id": "BLK-044",
100
- "departure_time": "13:15",
101
- "origin": "Aluva",
102
- "destination": "Pettah",
103
- "trip_count": 2,
104
- "estimated_km": 102.0
105
- },
106
- {
107
- "block_id": "BLK-065",
108
- "departure_time": "17:36",
109
- "origin": "Pettah",
110
- "destination": "Aluva",
111
- "trip_count": 3,
112
- "estimated_km": 153.0
113
- },
114
- {
115
- "block_id": "BLK-086",
116
- "departure_time": "19:42",
117
- "origin": "Aluva",
118
- "destination": "Pettah",
119
- "trip_count": 3,
120
- "estimated_km": 153.0
121
- }
122
- ],
123
- "stabling_bay": "BAY-10",
124
- "standby_reason": null,
125
- "maintenance_type": null,
126
- "ibl_bay": null,
127
- "estimated_completion": null,
128
- "alerts": []
129
- },
130
- {
131
- "trainset_id": "TS-003",
132
- "status": "REVENUE_SERVICE",
133
- "readiness_score": 0.8,
134
- "daily_km_allocation": 714.0,
135
- "cumulative_km": 1089911.0,
136
- "assigned_duty": "DUTY-A3",
137
- "priority_rank": 3,
138
- "service_blocks": [
139
- {
140
- "block_id": "BLK-003",
141
- "departure_time": "07:12",
142
- "origin": "Pettah",
143
- "destination": "Aluva",
144
- "trip_count": 3,
145
- "estimated_km": 153.0
146
- },
147
- {
148
- "block_id": "BLK-024",
149
- "departure_time": "09:18",
150
- "origin": "Aluva",
151
- "destination": "Pettah",
152
- "trip_count": 3,
153
- "estimated_km": 153.0
154
- },
155
- {
156
- "block_id": "BLK-045",
157
- "departure_time": "13:30",
158
- "origin": "Pettah",
159
- "destination": "Aluva",
160
- "trip_count": 2,
161
- "estimated_km": 102.0
162
- },
163
- {
164
- "block_id": "BLK-066",
165
- "departure_time": "17:42",
166
- "origin": "Aluva",
167
- "destination": "Pettah",
168
- "trip_count": 3,
169
- "estimated_km": 153.0
170
- },
171
- {
172
- "block_id": "BLK-087",
173
- "departure_time": "19:48",
174
- "origin": "Pettah",
175
- "destination": "Aluva",
176
- "trip_count": 3,
177
- "estimated_km": 153.0
178
- }
179
- ],
180
- "stabling_bay": "BAY-10",
181
- "standby_reason": null,
182
- "maintenance_type": null,
183
- "ibl_bay": null,
184
- "estimated_completion": null,
185
- "alerts": []
186
- },
187
- {
188
- "trainset_id": "TS-005",
189
- "status": "REVENUE_SERVICE",
190
- "readiness_score": 0.4,
191
- "daily_km_allocation": 714.0,
192
- "cumulative_km": 342663.0,
193
- "assigned_duty": "DUTY-A4",
194
- "priority_rank": 4,
195
- "service_blocks": [
196
- {
197
- "block_id": "BLK-004",
198
- "departure_time": "07:18",
199
- "origin": "Aluva",
200
- "destination": "Pettah",
201
- "trip_count": 3,
202
- "estimated_km": 153.0
203
- },
204
- {
205
- "block_id": "BLK-025",
206
- "departure_time": "09:24",
207
- "origin": "Pettah",
208
- "destination": "Aluva",
209
- "trip_count": 3,
210
- "estimated_km": 153.0
211
- },
212
- {
213
- "block_id": "BLK-046",
214
- "departure_time": "13:45",
215
- "origin": "Aluva",
216
- "destination": "Pettah",
217
- "trip_count": 2,
218
- "estimated_km": 102.0
219
- },
220
- {
221
- "block_id": "BLK-067",
222
- "departure_time": "17:48",
223
- "origin": "Pettah",
224
- "destination": "Aluva",
225
- "trip_count": 3,
226
- "estimated_km": 153.0
227
- },
228
- {
229
- "block_id": "BLK-088",
230
- "departure_time": "19:54",
231
- "origin": "Aluva",
232
- "destination": "Pettah",
233
- "trip_count": 3,
234
- "estimated_km": 153.0
235
- }
236
- ],
237
- "stabling_bay": "BAY-01",
238
- "standby_reason": null,
239
- "maintenance_type": null,
240
- "ibl_bay": null,
241
- "estimated_completion": null,
242
- "alerts": [
243
- "Rolling Stock certificate expiring soon",
244
- "Telecom certificate expiring soon"
245
- ]
246
- },
247
- {
248
- "trainset_id": "TS-007",
249
- "status": "REVENUE_SERVICE",
250
- "readiness_score": 0.8,
251
- "daily_km_allocation": 714.0,
252
- "cumulative_km": 480879.0,
253
- "assigned_duty": "DUTY-A5",
254
- "priority_rank": 5,
255
- "service_blocks": [
256
- {
257
- "block_id": "BLK-005",
258
- "departure_time": "07:24",
259
- "origin": "Pettah",
260
- "destination": "Aluva",
261
- "trip_count": 3,
262
- "estimated_km": 153.0
263
- },
264
- {
265
- "block_id": "BLK-026",
266
- "departure_time": "09:30",
267
- "origin": "Aluva",
268
- "destination": "Pettah",
269
- "trip_count": 3,
270
- "estimated_km": 153.0
271
- },
272
- {
273
- "block_id": "BLK-047",
274
- "departure_time": "14:00",
275
- "origin": "Pettah",
276
- "destination": "Aluva",
277
- "trip_count": 2,
278
- "estimated_km": 102.0
279
- },
280
- {
281
- "block_id": "BLK-068",
282
- "departure_time": "17:54",
283
- "origin": "Aluva",
284
- "destination": "Pettah",
285
- "trip_count": 3,
286
- "estimated_km": 153.0
287
- },
288
- {
289
- "block_id": "BLK-089",
290
- "departure_time": "20:00",
291
- "origin": "Pettah",
292
- "destination": "Aluva",
293
- "trip_count": 3,
294
- "estimated_km": 153.0
295
- }
296
- ],
297
- "stabling_bay": "BAY-03",
298
- "standby_reason": null,
299
- "maintenance_type": null,
300
- "ibl_bay": null,
301
- "estimated_completion": null,
302
- "alerts": [
303
- "Rolling Stock certificate expiring soon",
304
- "Telecom certificate expiring soon"
305
- ]
306
- },
307
- {
308
- "trainset_id": "TS-008",
309
- "status": "REVENUE_SERVICE",
310
- "readiness_score": 0.8,
311
- "daily_km_allocation": 714.0,
312
- "cumulative_km": 872513.0,
313
- "assigned_duty": "DUTY-A6",
314
- "priority_rank": 6,
315
- "service_blocks": [
316
- {
317
- "block_id": "BLK-006",
318
- "departure_time": "07:30",
319
- "origin": "Aluva",
320
- "destination": "Pettah",
321
- "trip_count": 3,
322
- "estimated_km": 153.0
323
- },
324
- {
325
- "block_id": "BLK-027",
326
- "departure_time": "09:36",
327
- "origin": "Pettah",
328
- "destination": "Aluva",
329
- "trip_count": 3,
330
- "estimated_km": 153.0
331
- },
332
- {
333
- "block_id": "BLK-048",
334
- "departure_time": "14:15",
335
- "origin": "Aluva",
336
- "destination": "Pettah",
337
- "trip_count": 2,
338
- "estimated_km": 102.0
339
- },
340
- {
341
- "block_id": "BLK-069",
342
- "departure_time": "18:00",
343
- "origin": "Pettah",
344
- "destination": "Aluva",
345
- "trip_count": 3,
346
- "estimated_km": 153.0
347
- },
348
- {
349
- "block_id": "BLK-090",
350
- "departure_time": "20:06",
351
- "origin": "Aluva",
352
- "destination": "Pettah",
353
- "trip_count": 3,
354
- "estimated_km": 153.0
355
- }
356
- ],
357
- "stabling_bay": "BAY-06",
358
- "standby_reason": null,
359
- "maintenance_type": null,
360
- "ibl_bay": null,
361
- "estimated_completion": null,
362
- "alerts": []
363
- },
364
- {
365
- "trainset_id": "TS-009",
366
- "status": "REVENUE_SERVICE",
367
- "readiness_score": 1.0,
368
- "daily_km_allocation": 867.0,
369
- "cumulative_km": 1518594.0,
370
- "assigned_duty": "DUTY-A7",
371
- "priority_rank": 7,
372
- "service_blocks": [
373
- {
374
- "block_id": "BLK-007",
375
- "departure_time": "07:36",
376
- "origin": "Pettah",
377
- "destination": "Aluva",
378
- "trip_count": 3,
379
- "estimated_km": 153.0
380
- },
381
- {
382
- "block_id": "BLK-008",
383
- "departure_time": "07:42",
384
- "origin": "Aluva",
385
- "destination": "Pettah",
386
- "trip_count": 3,
387
- "estimated_km": 153.0
388
- },
389
- {
390
- "block_id": "BLK-028",
391
- "departure_time": "09:42",
392
- "origin": "Aluva",
393
- "destination": "Pettah",
394
- "trip_count": 3,
395
- "estimated_km": 153.0
396
- },
397
- {
398
- "block_id": "BLK-049",
399
- "departure_time": "14:30",
400
- "origin": "Pettah",
401
- "destination": "Aluva",
402
- "trip_count": 2,
403
- "estimated_km": 102.0
404
- },
405
- {
406
- "block_id": "BLK-070",
407
- "departure_time": "18:06",
408
- "origin": "Aluva",
409
- "destination": "Pettah",
410
- "trip_count": 3,
411
- "estimated_km": 153.0
412
- },
413
- {
414
- "block_id": "BLK-091",
415
- "departure_time": "20:12",
416
- "origin": "Pettah",
417
- "destination": "Aluva",
418
- "trip_count": 3,
419
- "estimated_km": 153.0
420
- }
421
- ],
422
- "stabling_bay": "BAY-01",
423
- "standby_reason": null,
424
- "maintenance_type": null,
425
- "ibl_bay": null,
426
- "estimated_completion": null,
427
- "alerts": []
428
- },
429
- {
430
- "trainset_id": "TS-010",
431
- "status": "REVENUE_SERVICE",
432
- "readiness_score": 0.5,
433
- "daily_km_allocation": 714.0,
434
- "cumulative_km": 1111333.0,
435
- "assigned_duty": "DUTY-A8",
436
- "priority_rank": 8,
437
- "service_blocks": [
438
- {
439
- "block_id": "BLK-029",
440
- "departure_time": "09:48",
441
- "origin": "Pettah",
442
- "destination": "Aluva",
443
- "trip_count": 3,
444
- "estimated_km": 153.0
445
- },
446
- {
447
- "block_id": "BLK-050",
448
- "departure_time": "14:45",
449
- "origin": "Aluva",
450
- "destination": "Pettah",
451
- "trip_count": 2,
452
- "estimated_km": 102.0
453
- },
454
- {
455
- "block_id": "BLK-071",
456
- "departure_time": "18:12",
457
- "origin": "Pettah",
458
- "destination": "Aluva",
459
- "trip_count": 3,
460
- "estimated_km": 153.0
461
- },
462
- {
463
- "block_id": "BLK-082",
464
- "departure_time": "19:18",
465
- "origin": "Aluva",
466
- "destination": "Pettah",
467
- "trip_count": 3,
468
- "estimated_km": 153.0
469
- },
470
- {
471
- "block_id": "BLK-092",
472
- "departure_time": "20:18",
473
- "origin": "Aluva",
474
- "destination": "Pettah",
475
- "trip_count": 3,
476
- "estimated_km": 153.0
477
- }
478
- ],
479
- "stabling_bay": "BAY-13",
480
- "standby_reason": null,
481
- "maintenance_type": null,
482
- "ibl_bay": null,
483
- "estimated_completion": null,
484
- "alerts": [
485
- "Telecom certificate expiring soon"
486
- ]
487
- },
488
- {
489
- "trainset_id": "TS-011",
490
- "status": "REVENUE_SERVICE",
491
- "readiness_score": 1.0,
492
- "daily_km_allocation": 867.0,
493
- "cumulative_km": 1082169.0,
494
- "assigned_duty": "DUTY-A9",
495
- "priority_rank": 9,
496
- "service_blocks": [
497
- {
498
- "block_id": "BLK-009",
499
- "departure_time": "07:48",
500
- "origin": "Pettah",
501
- "destination": "Aluva",
502
- "trip_count": 3,
503
- "estimated_km": 153.0
504
- },
505
- {
506
- "block_id": "BLK-030",
507
- "departure_time": "09:54",
508
- "origin": "Aluva",
509
- "destination": "Pettah",
510
- "trip_count": 3,
511
- "estimated_km": 153.0
512
- },
513
- {
514
- "block_id": "BLK-051",
515
- "departure_time": "15:00",
516
- "origin": "Pettah",
517
- "destination": "Aluva",
518
- "trip_count": 2,
519
- "estimated_km": 102.0
520
- },
521
- {
522
- "block_id": "BLK-072",
523
- "departure_time": "18:18",
524
- "origin": "Aluva",
525
- "destination": "Pettah",
526
- "trip_count": 3,
527
- "estimated_km": 153.0
528
- },
529
- {
530
- "block_id": "BLK-080",
531
- "departure_time": "19:06",
532
- "origin": "Aluva",
533
- "destination": "Pettah",
534
- "trip_count": 3,
535
- "estimated_km": 153.0
536
- },
537
- {
538
- "block_id": "BLK-093",
539
- "departure_time": "20:24",
540
- "origin": "Pettah",
541
- "destination": "Aluva",
542
- "trip_count": 3,
543
- "estimated_km": 153.0
544
- }
545
- ],
546
- "stabling_bay": "BAY-12",
547
- "standby_reason": null,
548
- "maintenance_type": null,
549
- "ibl_bay": null,
550
- "estimated_completion": null,
551
- "alerts": []
552
- },
553
- {
554
- "trainset_id": "TS-012",
555
- "status": "REVENUE_SERVICE",
556
- "readiness_score": 1.0,
557
- "daily_km_allocation": 663.0,
558
- "cumulative_km": 804687.0,
559
- "assigned_duty": "DUTY-A10",
560
- "priority_rank": 10,
561
- "service_blocks": [
562
- {
563
- "block_id": "BLK-010",
564
- "departure_time": "07:54",
565
- "origin": "Aluva",
566
- "destination": "Pettah",
567
- "trip_count": 3,
568
- "estimated_km": 153.0
569
- },
570
- {
571
- "block_id": "BLK-031",
572
- "departure_time": "10:00",
573
- "origin": "Pettah",
574
- "destination": "Aluva",
575
- "trip_count": 2,
576
- "estimated_km": 102.0
577
- },
578
- {
579
- "block_id": "BLK-052",
580
- "departure_time": "15:15",
581
- "origin": "Aluva",
582
- "destination": "Pettah",
583
- "trip_count": 2,
584
- "estimated_km": 102.0
585
- },
586
- {
587
- "block_id": "BLK-073",
588
- "departure_time": "18:24",
589
- "origin": "Pettah",
590
- "destination": "Aluva",
591
- "trip_count": 3,
592
- "estimated_km": 153.0
593
- },
594
- {
595
- "block_id": "BLK-094",
596
- "departure_time": "20:30",
597
- "origin": "Aluva",
598
- "destination": "Pettah",
599
- "trip_count": 3,
600
- "estimated_km": 153.0
601
- }
602
- ],
603
- "stabling_bay": "BAY-03",
604
- "standby_reason": null,
605
- "maintenance_type": null,
606
- "ibl_bay": null,
607
- "estimated_completion": null,
608
- "alerts": []
609
- },
610
- {
611
- "trainset_id": "TS-013",
612
- "status": "REVENUE_SERVICE",
613
- "readiness_score": 0.8,
614
- "daily_km_allocation": 663.0,
615
- "cumulative_km": 165695.0,
616
- "assigned_duty": "DUTY-B1",
617
- "priority_rank": 11,
618
- "service_blocks": [
619
- {
620
- "block_id": "BLK-011",
621
- "departure_time": "08:00",
622
- "origin": "Pettah",
623
- "destination": "Aluva",
624
- "trip_count": 3,
625
- "estimated_km": 153.0
626
- },
627
- {
628
- "block_id": "BLK-032",
629
- "departure_time": "10:15",
630
- "origin": "Aluva",
631
- "destination": "Pettah",
632
- "trip_count": 2,
633
- "estimated_km": 102.0
634
- },
635
- {
636
- "block_id": "BLK-053",
637
- "departure_time": "15:30",
638
- "origin": "Pettah",
639
- "destination": "Aluva",
640
- "trip_count": 2,
641
- "estimated_km": 102.0
642
- },
643
- {
644
- "block_id": "BLK-074",
645
- "departure_time": "18:30",
646
- "origin": "Aluva",
647
- "destination": "Pettah",
648
- "trip_count": 3,
649
- "estimated_km": 153.0
650
- },
651
- {
652
- "block_id": "BLK-095",
653
- "departure_time": "20:36",
654
- "origin": "Pettah",
655
- "destination": "Aluva",
656
- "trip_count": 3,
657
- "estimated_km": 153.0
658
- }
659
- ],
660
- "stabling_bay": "BAY-06",
661
- "standby_reason": null,
662
- "maintenance_type": null,
663
- "ibl_bay": null,
664
- "estimated_completion": null,
665
- "alerts": [
666
- "Signalling certificate expiring soon",
667
- "Telecom certificate expiring soon"
668
- ]
669
- },
670
- {
671
- "trainset_id": "TS-014",
672
- "status": "REVENUE_SERVICE",
673
- "readiness_score": 0.8,
674
- "daily_km_allocation": 663.0,
675
- "cumulative_km": 733168.0,
676
- "assigned_duty": "DUTY-B2",
677
- "priority_rank": 12,
678
- "service_blocks": [
679
- {
680
- "block_id": "BLK-012",
681
- "departure_time": "08:06",
682
- "origin": "Aluva",
683
- "destination": "Pettah",
684
- "trip_count": 3,
685
- "estimated_km": 153.0
686
- },
687
- {
688
- "block_id": "BLK-033",
689
- "departure_time": "10:30",
690
- "origin": "Pettah",
691
- "destination": "Aluva",
692
- "trip_count": 2,
693
- "estimated_km": 102.0
694
- },
695
- {
696
- "block_id": "BLK-054",
697
- "departure_time": "15:45",
698
- "origin": "Aluva",
699
- "destination": "Pettah",
700
- "trip_count": 2,
701
- "estimated_km": 102.0
702
- },
703
- {
704
- "block_id": "BLK-075",
705
- "departure_time": "18:36",
706
- "origin": "Pettah",
707
- "destination": "Aluva",
708
- "trip_count": 3,
709
- "estimated_km": 153.0
710
- },
711
- {
712
- "block_id": "BLK-096",
713
- "departure_time": "20:42",
714
- "origin": "Aluva",
715
- "destination": "Pettah",
716
- "trip_count": 3,
717
- "estimated_km": 153.0
718
- }
719
- ],
720
- "stabling_bay": "BAY-09",
721
- "standby_reason": null,
722
- "maintenance_type": null,
723
- "ibl_bay": null,
724
- "estimated_completion": null,
725
- "alerts": [
726
- "Telecom certificate expiring soon",
727
- "Safety certificate expiring soon"
728
- ]
729
- },
730
- {
731
- "trainset_id": "TS-015",
732
- "status": "REVENUE_SERVICE",
733
- "readiness_score": 0.6,
734
- "daily_km_allocation": 510.0,
735
- "cumulative_km": 467994.0,
736
- "assigned_duty": "DUTY-B3",
737
- "priority_rank": 13,
738
- "service_blocks": [
739
- {
740
- "block_id": "BLK-034",
741
- "departure_time": "10:45",
742
- "origin": "Aluva",
743
- "destination": "Pettah",
744
- "trip_count": 2,
745
- "estimated_km": 102.0
746
- },
747
- {
748
- "block_id": "BLK-055",
749
- "departure_time": "16:00",
750
- "origin": "Pettah",
751
- "destination": "Aluva",
752
- "trip_count": 2,
753
- "estimated_km": 102.0
754
- },
755
- {
756
- "block_id": "BLK-076",
757
- "departure_time": "18:42",
758
- "origin": "Aluva",
759
- "destination": "Pettah",
760
- "trip_count": 3,
761
- "estimated_km": 153.0
762
- },
763
- {
764
- "block_id": "BLK-097",
765
- "departure_time": "20:48",
766
- "origin": "Pettah",
767
- "destination": "Aluva",
768
- "trip_count": 3,
769
- "estimated_km": 153.0
770
- }
771
- ],
772
- "stabling_bay": "BAY-04",
773
- "standby_reason": null,
774
- "maintenance_type": null,
775
- "ibl_bay": null,
776
- "estimated_completion": null,
777
- "alerts": []
778
- },
779
- {
780
- "trainset_id": "TS-016",
781
- "status": "REVENUE_SERVICE",
782
- "readiness_score": 0.8,
783
- "daily_km_allocation": 663.0,
784
- "cumulative_km": 186953.0,
785
- "assigned_duty": "DUTY-B4",
786
- "priority_rank": 14,
787
- "service_blocks": [
788
- {
789
- "block_id": "BLK-014",
790
- "departure_time": "08:18",
791
- "origin": "Aluva",
792
- "destination": "Pettah",
793
- "trip_count": 3,
794
- "estimated_km": 153.0
795
- },
796
- {
797
- "block_id": "BLK-035",
798
- "departure_time": "11:00",
799
- "origin": "Pettah",
800
- "destination": "Aluva",
801
- "trip_count": 2,
802
- "estimated_km": 102.0
803
- },
804
- {
805
- "block_id": "BLK-056",
806
- "departure_time": "16:15",
807
- "origin": "Aluva",
808
- "destination": "Pettah",
809
- "trip_count": 2,
810
- "estimated_km": 102.0
811
- },
812
- {
813
- "block_id": "BLK-077",
814
- "departure_time": "18:48",
815
- "origin": "Pettah",
816
- "destination": "Aluva",
817
- "trip_count": 3,
818
- "estimated_km": 153.0
819
- },
820
- {
821
- "block_id": "BLK-098",
822
- "departure_time": "20:54",
823
- "origin": "Aluva",
824
- "destination": "Pettah",
825
- "trip_count": 3,
826
- "estimated_km": 153.0
827
- }
828
- ],
829
- "stabling_bay": "BAY-15",
830
- "standby_reason": null,
831
- "maintenance_type": null,
832
- "ibl_bay": null,
833
- "estimated_completion": null,
834
- "alerts": [
835
- "Telecom certificate expiring soon",
836
- "HVAC certificate expiring soon"
837
- ]
838
- },
839
- {
840
- "trainset_id": "TS-017",
841
- "status": "REVENUE_SERVICE",
842
- "readiness_score": 1.0,
843
- "daily_km_allocation": 561.0,
844
- "cumulative_km": 211686.0,
845
- "assigned_duty": "DUTY-B5",
846
- "priority_rank": 15,
847
- "service_blocks": [
848
- {
849
- "block_id": "BLK-015",
850
- "departure_time": "08:24",
851
- "origin": "Pettah",
852
- "destination": "Aluva",
853
- "trip_count": 3,
854
- "estimated_km": 153.0
855
- },
856
- {
857
- "block_id": "BLK-036",
858
- "departure_time": "11:15",
859
- "origin": "Aluva",
860
- "destination": "Pettah",
861
- "trip_count": 2,
862
- "estimated_km": 102.0
863
- },
864
- {
865
- "block_id": "BLK-057",
866
- "departure_time": "16:30",
867
- "origin": "Pettah",
868
- "destination": "Aluva",
869
- "trip_count": 2,
870
- "estimated_km": 102.0
871
- },
872
- {
873
- "block_id": "BLK-078",
874
- "departure_time": "18:54",
875
- "origin": "Aluva",
876
- "destination": "Pettah",
877
- "trip_count": 3,
878
- "estimated_km": 153.0
879
- },
880
- {
881
- "block_id": "BLK-099",
882
- "departure_time": "21:00",
883
- "origin": "Pettah",
884
- "destination": "Aluva",
885
- "trip_count": 1,
886
- "estimated_km": 51.0
887
- }
888
- ],
889
- "stabling_bay": "BAY-05",
890
- "standby_reason": null,
891
- "maintenance_type": null,
892
- "ibl_bay": null,
893
- "estimated_completion": null,
894
- "alerts": []
895
- },
896
- {
897
- "trainset_id": "TS-018",
898
- "status": "REVENUE_SERVICE",
899
- "readiness_score": 0.7,
900
- "daily_km_allocation": 561.0,
901
- "cumulative_km": 1300045.0,
902
- "assigned_duty": "DUTY-B6",
903
- "priority_rank": 16,
904
- "service_blocks": [
905
- {
906
- "block_id": "BLK-016",
907
- "departure_time": "08:30",
908
- "origin": "Aluva",
909
- "destination": "Pettah",
910
- "trip_count": 3,
911
- "estimated_km": 153.0
912
- },
913
- {
914
- "block_id": "BLK-037",
915
- "departure_time": "11:30",
916
- "origin": "Pettah",
917
- "destination": "Aluva",
918
- "trip_count": 2,
919
- "estimated_km": 102.0
920
- },
921
- {
922
- "block_id": "BLK-058",
923
- "departure_time": "16:45",
924
- "origin": "Aluva",
925
- "destination": "Pettah",
926
- "trip_count": 2,
927
- "estimated_km": 102.0
928
- },
929
- {
930
- "block_id": "BLK-079",
931
- "departure_time": "19:00",
932
- "origin": "Pettah",
933
- "destination": "Aluva",
934
- "trip_count": 3,
935
- "estimated_km": 153.0
936
- },
937
- {
938
- "block_id": "BLK-100",
939
- "departure_time": "21:15",
940
- "origin": "Aluva",
941
- "destination": "Pettah",
942
- "trip_count": 1,
943
- "estimated_km": 51.0
944
- }
945
- ],
946
- "stabling_bay": "BAY-02",
947
- "standby_reason": null,
948
- "maintenance_type": null,
949
- "ibl_bay": null,
950
- "estimated_completion": null,
951
- "alerts": [
952
- "Signalling certificate expiring soon",
953
- "Telecom certificate expiring soon",
954
- "HVAC certificate expiring soon"
955
- ]
956
- },
957
- {
958
- "trainset_id": "TS-021",
959
- "status": "REVENUE_SERVICE",
960
- "readiness_score": 0.9,
961
- "daily_km_allocation": 459.0,
962
- "cumulative_km": 179793.0,
963
- "assigned_duty": "DUTY-B7",
964
- "priority_rank": 17,
965
- "service_blocks": [
966
- {
967
- "block_id": "BLK-017",
968
- "departure_time": "08:36",
969
- "origin": "Pettah",
970
- "destination": "Aluva",
971
- "trip_count": 3,
972
- "estimated_km": 153.0
973
- },
974
- {
975
- "block_id": "BLK-038",
976
- "departure_time": "11:45",
977
- "origin": "Aluva",
978
- "destination": "Pettah",
979
- "trip_count": 2,
980
- "estimated_km": 102.0
981
- },
982
- {
983
- "block_id": "BLK-059",
984
- "departure_time": "17:00",
985
- "origin": "Pettah",
986
- "destination": "Aluva",
987
- "trip_count": 3,
988
- "estimated_km": 153.0
989
- },
990
- {
991
- "block_id": "BLK-101",
992
- "departure_time": "21:30",
993
- "origin": "Pettah",
994
- "destination": "Aluva",
995
- "trip_count": 1,
996
- "estimated_km": 51.0
997
- }
998
- ],
999
- "stabling_bay": "BAY-10",
1000
- "standby_reason": null,
1001
- "maintenance_type": null,
1002
- "ibl_bay": null,
1003
- "estimated_completion": null,
1004
- "alerts": [
1005
- "Safety certificate expiring soon"
1006
- ]
1007
- },
1008
- {
1009
- "trainset_id": "TS-022",
1010
- "status": "REVENUE_SERVICE",
1011
- "readiness_score": 0.8,
1012
- "daily_km_allocation": 612.0,
1013
- "cumulative_km": 642598.0,
1014
- "assigned_duty": "DUTY-B8",
1015
- "priority_rank": 18,
1016
- "service_blocks": [
1017
- {
1018
- "block_id": "BLK-018",
1019
- "departure_time": "08:42",
1020
- "origin": "Aluva",
1021
- "destination": "Pettah",
1022
- "trip_count": 3,
1023
- "estimated_km": 153.0
1024
- },
1025
- {
1026
- "block_id": "BLK-039",
1027
- "departure_time": "12:00",
1028
- "origin": "Pettah",
1029
- "destination": "Aluva",
1030
- "trip_count": 2,
1031
- "estimated_km": 102.0
1032
- },
1033
- {
1034
- "block_id": "BLK-060",
1035
- "departure_time": "17:06",
1036
- "origin": "Aluva",
1037
- "destination": "Pettah",
1038
- "trip_count": 3,
1039
- "estimated_km": 153.0
1040
- },
1041
- {
1042
- "block_id": "BLK-081",
1043
- "departure_time": "19:12",
1044
- "origin": "Pettah",
1045
- "destination": "Aluva",
1046
- "trip_count": 3,
1047
- "estimated_km": 153.0
1048
- },
1049
- {
1050
- "block_id": "BLK-102",
1051
- "departure_time": "21:45",
1052
- "origin": "Aluva",
1053
- "destination": "Pettah",
1054
- "trip_count": 1,
1055
- "estimated_km": 51.0
1056
- }
1057
- ],
1058
- "stabling_bay": "BAY-07",
1059
- "standby_reason": null,
1060
- "maintenance_type": null,
1061
- "ibl_bay": null,
1062
- "estimated_completion": null,
1063
- "alerts": [
1064
- "Rolling Stock certificate expiring soon",
1065
- "Telecom certificate expiring soon"
1066
- ]
1067
- },
1068
- {
1069
- "trainset_id": "TS-023",
1070
- "status": "REVENUE_SERVICE",
1071
- "readiness_score": 0.9,
1072
- "daily_km_allocation": 612.0,
1073
- "cumulative_km": 166201.0,
1074
- "assigned_duty": "DUTY-B9",
1075
- "priority_rank": 19,
1076
- "service_blocks": [
1077
- {
1078
- "block_id": "BLK-013",
1079
- "departure_time": "08:12",
1080
- "origin": "Pettah",
1081
- "destination": "Aluva",
1082
- "trip_count": 3,
1083
- "estimated_km": 153.0
1084
- },
1085
- {
1086
- "block_id": "BLK-019",
1087
- "departure_time": "08:48",
1088
- "origin": "Pettah",
1089
- "destination": "Aluva",
1090
- "trip_count": 3,
1091
- "estimated_km": 153.0
1092
- },
1093
- {
1094
- "block_id": "BLK-040",
1095
- "departure_time": "12:15",
1096
- "origin": "Aluva",
1097
- "destination": "Pettah",
1098
- "trip_count": 2,
1099
- "estimated_km": 102.0
1100
- },
1101
- {
1102
- "block_id": "BLK-061",
1103
- "departure_time": "17:12",
1104
- "origin": "Pettah",
1105
- "destination": "Aluva",
1106
- "trip_count": 3,
1107
- "estimated_km": 153.0
1108
- },
1109
- {
1110
- "block_id": "BLK-103",
1111
- "departure_time": "22:00",
1112
- "origin": "Pettah",
1113
- "destination": "Aluva",
1114
- "trip_count": 1,
1115
- "estimated_km": 51.0
1116
- }
1117
- ],
1118
- "stabling_bay": "BAY-01",
1119
- "standby_reason": null,
1120
- "maintenance_type": null,
1121
- "ibl_bay": null,
1122
- "estimated_completion": null,
1123
- "alerts": [
1124
- "HVAC certificate expiring soon"
1125
- ]
1126
- },
1127
- {
1128
- "trainset_id": "TS-024",
1129
- "status": "REVENUE_SERVICE",
1130
- "readiness_score": 0.8,
1131
- "daily_km_allocation": 612.0,
1132
- "cumulative_km": 1503858.0,
1133
- "assigned_duty": "DUTY-B10",
1134
- "priority_rank": 20,
1135
- "service_blocks": [
1136
- {
1137
- "block_id": "BLK-020",
1138
- "departure_time": "08:54",
1139
- "origin": "Aluva",
1140
- "destination": "Pettah",
1141
- "trip_count": 3,
1142
- "estimated_km": 153.0
1143
- },
1144
- {
1145
- "block_id": "BLK-041",
1146
- "departure_time": "12:30",
1147
- "origin": "Pettah",
1148
- "destination": "Aluva",
1149
- "trip_count": 2,
1150
- "estimated_km": 102.0
1151
- },
1152
- {
1153
- "block_id": "BLK-062",
1154
- "departure_time": "17:18",
1155
- "origin": "Aluva",
1156
- "destination": "Pettah",
1157
- "trip_count": 3,
1158
- "estimated_km": 153.0
1159
- },
1160
- {
1161
- "block_id": "BLK-083",
1162
- "departure_time": "19:24",
1163
- "origin": "Pettah",
1164
- "destination": "Aluva",
1165
- "trip_count": 3,
1166
- "estimated_km": 153.0
1167
- },
1168
- {
1169
- "block_id": "BLK-104",
1170
- "departure_time": "22:15",
1171
- "origin": "Aluva",
1172
- "destination": "Pettah",
1173
- "trip_count": 1,
1174
- "estimated_km": 51.0
1175
- }
1176
- ],
1177
- "stabling_bay": "BAY-06",
1178
- "standby_reason": null,
1179
- "maintenance_type": null,
1180
- "ibl_bay": null,
1181
- "estimated_completion": null,
1182
- "alerts": [
1183
- "Rolling Stock certificate expiring soon",
1184
- "Telecom certificate expiring soon"
1185
- ]
1186
- },
1187
- {
1188
- "trainset_id": "TS-025",
1189
- "status": "REVENUE_SERVICE",
1190
- "readiness_score": 0.9,
1191
- "daily_km_allocation": 612.0,
1192
- "cumulative_km": 668202.0,
1193
- "assigned_duty": "DUTY-C1",
1194
- "priority_rank": 21,
1195
- "service_blocks": [
1196
- {
1197
- "block_id": "BLK-021",
1198
- "departure_time": "09:00",
1199
- "origin": "Pettah",
1200
- "destination": "Aluva",
1201
- "trip_count": 3,
1202
- "estimated_km": 153.0
1203
- },
1204
- {
1205
- "block_id": "BLK-042",
1206
- "departure_time": "12:45",
1207
- "origin": "Aluva",
1208
- "destination": "Pettah",
1209
- "trip_count": 2,
1210
- "estimated_km": 102.0
1211
- },
1212
- {
1213
- "block_id": "BLK-063",
1214
- "departure_time": "17:24",
1215
- "origin": "Pettah",
1216
- "destination": "Aluva",
1217
- "trip_count": 3,
1218
- "estimated_km": 153.0
1219
- },
1220
- {
1221
- "block_id": "BLK-084",
1222
- "departure_time": "19:30",
1223
- "origin": "Aluva",
1224
- "destination": "Pettah",
1225
- "trip_count": 3,
1226
- "estimated_km": 153.0
1227
- },
1228
- {
1229
- "block_id": "BLK-105",
1230
- "departure_time": "22:30",
1231
- "origin": "Pettah",
1232
- "destination": "Aluva",
1233
- "trip_count": 1,
1234
- "estimated_km": 51.0
1235
- }
1236
- ],
1237
- "stabling_bay": "BAY-12",
1238
- "standby_reason": null,
1239
- "maintenance_type": null,
1240
- "ibl_bay": null,
1241
- "estimated_completion": null,
1242
- "alerts": [
1243
- "HVAC certificate expiring soon"
1244
- ]
1245
- },
1246
- {
1247
- "trainset_id": "TS-004",
1248
- "status": "STANDBY",
1249
- "readiness_score": 0.4,
1250
- "daily_km_allocation": 0.0,
1251
- "cumulative_km": 358302.0,
1252
- "assigned_duty": null,
1253
- "priority_rank": null,
1254
- "service_blocks": null,
1255
- "stabling_bay": "BAY-13",
1256
- "standby_reason": "EMERGENCY_BACKUP",
1257
- "maintenance_type": null,
1258
- "ibl_bay": null,
1259
- "estimated_completion": null,
1260
- "alerts": [
1261
- "Telecom certificate expiring soon",
1262
- "Brake_Pad in critical condition (wear: 96.0%)",
1263
- "Pantograph in critical condition (wear: 93.6%)"
1264
- ]
1265
- },
1266
- {
1267
- "trainset_id": "TS-006",
1268
- "status": "STANDBY",
1269
- "readiness_score": 0.05,
1270
- "daily_km_allocation": 0.0,
1271
- "cumulative_km": 1220616.0,
1272
- "assigned_duty": null,
1273
- "priority_rank": null,
1274
- "service_blocks": null,
1275
- "stabling_bay": "BAY-03",
1276
- "standby_reason": "MILEAGE_BALANCING",
1277
- "maintenance_type": null,
1278
- "ibl_bay": null,
1279
- "estimated_completion": null,
1280
- "alerts": [
1281
- "Telecom certificate expiring soon",
1282
- "HVAC certificate expiring soon",
1283
- "Bogie requires attention (wear: 86.0%)",
1284
- "Brake_Pad requires attention (wear: 88.0%)",
1285
- "Door_System in critical condition (wear: 100.0%)",
1286
- "Traction_Motor in critical condition (wear: 99.0%)",
1287
- "Compressor in critical condition (wear: 100.0%)"
1288
- ]
1289
- },
1290
- {
1291
- "trainset_id": "TS-020",
1292
- "status": "STANDBY",
1293
- "readiness_score": 0.3,
1294
- "daily_km_allocation": 0.0,
1295
- "cumulative_km": 793792.0,
1296
- "assigned_duty": null,
1297
- "priority_rank": null,
1298
- "service_blocks": null,
1299
- "stabling_bay": "BAY-10",
1300
- "standby_reason": "PEAK_HOUR_RESERVE",
1301
- "maintenance_type": null,
1302
- "ibl_bay": null,
1303
- "estimated_completion": null,
1304
- "alerts": [
1305
- "Signalling certificate expiring soon",
1306
- "HVAC certificate expiring soon",
1307
- "Brake_Pad in critical condition (wear: 94.0%)",
1308
- "HVAC requires attention (wear: 86.0%)",
1309
- "Door_System in critical condition (wear: 97.0%)",
1310
- "Traction_Motor in critical condition (wear: 92.4%)"
1311
- ]
1312
- },
1313
- {
1314
- "trainset_id": "TS-019",
1315
- "status": "MAINTENANCE",
1316
- "readiness_score": 0.2,
1317
- "daily_km_allocation": 0.0,
1318
- "cumulative_km": 1209067.0,
1319
- "assigned_duty": null,
1320
- "priority_rank": null,
1321
- "service_blocks": null,
1322
- "stabling_bay": null,
1323
- "standby_reason": null,
1324
- "maintenance_type": "SCHEDULED_INSPECTION",
1325
- "ibl_bay": "IBL-02",
1326
- "estimated_completion": "2025-11-29T09:10:11.602082",
1327
- "alerts": [
1328
- "Brake_Pad requires attention (wear: 86.0%)",
1329
- "HVAC requires attention (wear: 89.0%)",
1330
- "Door_System in critical condition (wear: 100.0%)",
1331
- "Compressor in critical condition (wear: 90.0%)"
1332
- ]
1333
- }
1334
- ],
1335
- "fleet_summary": {
1336
- "total_trainsets": 25,
1337
- "revenue_service": 21,
1338
- "standby": 3,
1339
- "maintenance": 1,
1340
- "availability_percent": 96.0
1341
- },
1342
- "optimization_metrics": {
1343
- "fitness_score": -1203.763437867642,
1344
- "method": "ga",
1345
- "mileage_variance_coefficient": 0.152,
1346
- "total_planned_km": 13974.0,
1347
- "optimization_runtime_ms": 3969
1348
- },
1349
- "alerts": [
1350
- {
1351
- "trainset_id": "TS-005",
1352
- "severity": "MEDIUM",
1353
- "alert_type": "CERTIFICATE_EXPIRING",
1354
- "message": "Rolling Stock certificate expiring soon"
1355
- },
1356
- {
1357
- "trainset_id": "TS-005",
1358
- "severity": "MEDIUM",
1359
- "alert_type": "CERTIFICATE_EXPIRING",
1360
- "message": "Telecom certificate expiring soon"
1361
- },
1362
- {
1363
- "trainset_id": "TS-007",
1364
- "severity": "MEDIUM",
1365
- "alert_type": "CERTIFICATE_EXPIRING",
1366
- "message": "Rolling Stock certificate expiring soon"
1367
- },
1368
- {
1369
- "trainset_id": "TS-007",
1370
- "severity": "MEDIUM",
1371
- "alert_type": "CERTIFICATE_EXPIRING",
1372
- "message": "Telecom certificate expiring soon"
1373
- },
1374
- {
1375
- "trainset_id": "TS-010",
1376
- "severity": "MEDIUM",
1377
- "alert_type": "CERTIFICATE_EXPIRING",
1378
- "message": "Telecom certificate expiring soon"
1379
- },
1380
- {
1381
- "trainset_id": "TS-013",
1382
- "severity": "MEDIUM",
1383
- "alert_type": "CERTIFICATE_EXPIRING",
1384
- "message": "Signalling certificate expiring soon"
1385
- },
1386
- {
1387
- "trainset_id": "TS-013",
1388
- "severity": "MEDIUM",
1389
- "alert_type": "CERTIFICATE_EXPIRING",
1390
- "message": "Telecom certificate expiring soon"
1391
- },
1392
- {
1393
- "trainset_id": "TS-014",
1394
- "severity": "MEDIUM",
1395
- "alert_type": "CERTIFICATE_EXPIRING",
1396
- "message": "Telecom certificate expiring soon"
1397
- },
1398
- {
1399
- "trainset_id": "TS-014",
1400
- "severity": "MEDIUM",
1401
- "alert_type": "CERTIFICATE_EXPIRING",
1402
- "message": "Safety certificate expiring soon"
1403
- },
1404
- {
1405
- "trainset_id": "TS-016",
1406
- "severity": "MEDIUM",
1407
- "alert_type": "CERTIFICATE_EXPIRING",
1408
- "message": "Telecom certificate expiring soon"
1409
- },
1410
- {
1411
- "trainset_id": "TS-016",
1412
- "severity": "MEDIUM",
1413
- "alert_type": "CERTIFICATE_EXPIRING",
1414
- "message": "HVAC certificate expiring soon"
1415
- },
1416
- {
1417
- "trainset_id": "TS-018",
1418
- "severity": "MEDIUM",
1419
- "alert_type": "CERTIFICATE_EXPIRING",
1420
- "message": "Signalling certificate expiring soon"
1421
- },
1422
- {
1423
- "trainset_id": "TS-018",
1424
- "severity": "MEDIUM",
1425
- "alert_type": "CERTIFICATE_EXPIRING",
1426
- "message": "Telecom certificate expiring soon"
1427
- },
1428
- {
1429
- "trainset_id": "TS-018",
1430
- "severity": "MEDIUM",
1431
- "alert_type": "CERTIFICATE_EXPIRING",
1432
- "message": "HVAC certificate expiring soon"
1433
- },
1434
- {
1435
- "trainset_id": "TS-021",
1436
- "severity": "MEDIUM",
1437
- "alert_type": "CERTIFICATE_EXPIRING",
1438
- "message": "Safety certificate expiring soon"
1439
- },
1440
- {
1441
- "trainset_id": "TS-022",
1442
- "severity": "MEDIUM",
1443
- "alert_type": "CERTIFICATE_EXPIRING",
1444
- "message": "Rolling Stock certificate expiring soon"
1445
- },
1446
- {
1447
- "trainset_id": "TS-022",
1448
- "severity": "MEDIUM",
1449
- "alert_type": "CERTIFICATE_EXPIRING",
1450
- "message": "Telecom certificate expiring soon"
1451
- },
1452
- {
1453
- "trainset_id": "TS-023",
1454
- "severity": "MEDIUM",
1455
- "alert_type": "CERTIFICATE_EXPIRING",
1456
- "message": "HVAC certificate expiring soon"
1457
- },
1458
- {
1459
- "trainset_id": "TS-024",
1460
- "severity": "MEDIUM",
1461
- "alert_type": "CERTIFICATE_EXPIRING",
1462
- "message": "Rolling Stock certificate expiring soon"
1463
- },
1464
- {
1465
- "trainset_id": "TS-024",
1466
- "severity": "MEDIUM",
1467
- "alert_type": "CERTIFICATE_EXPIRING",
1468
- "message": "Telecom certificate expiring soon"
1469
- },
1470
- {
1471
- "trainset_id": "TS-025",
1472
- "severity": "MEDIUM",
1473
- "alert_type": "CERTIFICATE_EXPIRING",
1474
- "message": "HVAC certificate expiring soon"
1475
- },
1476
- {
1477
- "trainset_id": "TS-004",
1478
- "severity": "MEDIUM",
1479
- "alert_type": "CERTIFICATE_EXPIRING",
1480
- "message": "Telecom certificate expiring soon"
1481
- },
1482
- {
1483
- "trainset_id": "TS-004",
1484
- "severity": "HIGH",
1485
- "alert_type": "COMPONENT_CRITICAL",
1486
- "message": "Brake_Pad in critical condition (wear: 96.0%)"
1487
- },
1488
- {
1489
- "trainset_id": "TS-004",
1490
- "severity": "HIGH",
1491
- "alert_type": "COMPONENT_CRITICAL",
1492
- "message": "Pantograph in critical condition (wear: 93.6%)"
1493
- },
1494
- {
1495
- "trainset_id": "TS-006",
1496
- "severity": "MEDIUM",
1497
- "alert_type": "CERTIFICATE_EXPIRING",
1498
- "message": "Telecom certificate expiring soon"
1499
- },
1500
- {
1501
- "trainset_id": "TS-006",
1502
- "severity": "MEDIUM",
1503
- "alert_type": "CERTIFICATE_EXPIRING",
1504
- "message": "HVAC certificate expiring soon"
1505
- },
1506
- {
1507
- "trainset_id": "TS-006",
1508
- "severity": "MEDIUM",
1509
- "alert_type": "COMPONENT_WARNING",
1510
- "message": "Bogie requires attention (wear: 86.0%)"
1511
- },
1512
- {
1513
- "trainset_id": "TS-006",
1514
- "severity": "MEDIUM",
1515
- "alert_type": "COMPONENT_WARNING",
1516
- "message": "Brake_Pad requires attention (wear: 88.0%)"
1517
- },
1518
- {
1519
- "trainset_id": "TS-006",
1520
- "severity": "HIGH",
1521
- "alert_type": "COMPONENT_CRITICAL",
1522
- "message": "Door_System in critical condition (wear: 100.0%)"
1523
- },
1524
- {
1525
- "trainset_id": "TS-006",
1526
- "severity": "HIGH",
1527
- "alert_type": "COMPONENT_CRITICAL",
1528
- "message": "Traction_Motor in critical condition (wear: 99.0%)"
1529
- },
1530
- {
1531
- "trainset_id": "TS-006",
1532
- "severity": "HIGH",
1533
- "alert_type": "COMPONENT_CRITICAL",
1534
- "message": "Compressor in critical condition (wear: 100.0%)"
1535
- },
1536
- {
1537
- "trainset_id": "TS-020",
1538
- "severity": "MEDIUM",
1539
- "alert_type": "CERTIFICATE_EXPIRING",
1540
- "message": "Signalling certificate expiring soon"
1541
- },
1542
- {
1543
- "trainset_id": "TS-020",
1544
- "severity": "MEDIUM",
1545
- "alert_type": "CERTIFICATE_EXPIRING",
1546
- "message": "HVAC certificate expiring soon"
1547
- },
1548
- {
1549
- "trainset_id": "TS-020",
1550
- "severity": "HIGH",
1551
- "alert_type": "COMPONENT_CRITICAL",
1552
- "message": "Brake_Pad in critical condition (wear: 94.0%)"
1553
- },
1554
- {
1555
- "trainset_id": "TS-020",
1556
- "severity": "MEDIUM",
1557
- "alert_type": "COMPONENT_WARNING",
1558
- "message": "HVAC requires attention (wear: 86.0%)"
1559
- },
1560
- {
1561
- "trainset_id": "TS-020",
1562
- "severity": "HIGH",
1563
- "alert_type": "COMPONENT_CRITICAL",
1564
- "message": "Door_System in critical condition (wear: 97.0%)"
1565
- },
1566
- {
1567
- "trainset_id": "TS-020",
1568
- "severity": "HIGH",
1569
- "alert_type": "COMPONENT_CRITICAL",
1570
- "message": "Traction_Motor in critical condition (wear: 92.4%)"
1571
- },
1572
- {
1573
- "trainset_id": "TS-019",
1574
- "severity": "MEDIUM",
1575
- "alert_type": "COMPONENT_WARNING",
1576
- "message": "Brake_Pad requires attention (wear: 86.0%)"
1577
- },
1578
- {
1579
- "trainset_id": "TS-019",
1580
- "severity": "MEDIUM",
1581
- "alert_type": "COMPONENT_WARNING",
1582
- "message": "HVAC requires attention (wear: 89.0%)"
1583
- },
1584
- {
1585
- "trainset_id": "TS-019",
1586
- "severity": "HIGH",
1587
- "alert_type": "COMPONENT_CRITICAL",
1588
- "message": "Door_System in critical condition (wear: 100.0%)"
1589
- },
1590
- {
1591
- "trainset_id": "TS-019",
1592
- "severity": "HIGH",
1593
- "alert_type": "COMPONENT_CRITICAL",
1594
- "message": "Compressor in critical condition (wear: 90.0%)"
1595
- }
1596
- ]
1597
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
test_output/dataservice_gen_25_output_20251202_143854.json ADDED
The diff for this file is too large to render. See raw diff
 
test_output/{dataservice_gen_30_input_20251129_001011.json → dataservice_gen_30_input_20251202_143859.json} RENAMED
The diff for this file is too large to render. See raw diff
 
test_output/dataservice_gen_30_output_20251129_001011.json DELETED
@@ -1,1575 +0,0 @@
1
- {
2
- "schedule_id": "SCH-20251129-462",
3
- "generated_at": "2025-11-29T00:10:15.694766",
4
- "valid_from": "2025-11-29T05:00:00+05:30",
5
- "valid_until": "2025-11-29T23:00:00+05:30",
6
- "depot": "Muttom_Depot",
7
- "trainsets": [
8
- {
9
- "trainset_id": "TS-001",
10
- "status": "REVENUE_SERVICE",
11
- "readiness_score": 0.8,
12
- "daily_km_allocation": 714.0,
13
- "cumulative_km": 551732.0,
14
- "assigned_duty": "DUTY-A1",
15
- "priority_rank": 1,
16
- "service_blocks": [
17
- {
18
- "block_id": "BLK-001",
19
- "departure_time": "07:00",
20
- "origin": "Pettah",
21
- "destination": "Aluva",
22
- "trip_count": 3,
23
- "estimated_km": 153.0
24
- },
25
- {
26
- "block_id": "BLK-023",
27
- "departure_time": "09:12",
28
- "origin": "Pettah",
29
- "destination": "Aluva",
30
- "trip_count": 3,
31
- "estimated_km": 153.0
32
- },
33
- {
34
- "block_id": "BLK-045",
35
- "departure_time": "13:30",
36
- "origin": "Pettah",
37
- "destination": "Aluva",
38
- "trip_count": 2,
39
- "estimated_km": 102.0
40
- },
41
- {
42
- "block_id": "BLK-067",
43
- "departure_time": "17:48",
44
- "origin": "Pettah",
45
- "destination": "Aluva",
46
- "trip_count": 3,
47
- "estimated_km": 153.0
48
- },
49
- {
50
- "block_id": "BLK-089",
51
- "departure_time": "20:00",
52
- "origin": "Pettah",
53
- "destination": "Aluva",
54
- "trip_count": 3,
55
- "estimated_km": 153.0
56
- }
57
- ],
58
- "stabling_bay": "BAY-09",
59
- "standby_reason": null,
60
- "maintenance_type": null,
61
- "ibl_bay": null,
62
- "estimated_completion": null,
63
- "alerts": []
64
- },
65
- {
66
- "trainset_id": "TS-002",
67
- "status": "REVENUE_SERVICE",
68
- "readiness_score": 0.7,
69
- "daily_km_allocation": 714.0,
70
- "cumulative_km": 1190951.0,
71
- "assigned_duty": "DUTY-A2",
72
- "priority_rank": 2,
73
- "service_blocks": [
74
- {
75
- "block_id": "BLK-002",
76
- "departure_time": "07:06",
77
- "origin": "Aluva",
78
- "destination": "Pettah",
79
- "trip_count": 3,
80
- "estimated_km": 153.0
81
- },
82
- {
83
- "block_id": "BLK-024",
84
- "departure_time": "09:18",
85
- "origin": "Aluva",
86
- "destination": "Pettah",
87
- "trip_count": 3,
88
- "estimated_km": 153.0
89
- },
90
- {
91
- "block_id": "BLK-046",
92
- "departure_time": "13:45",
93
- "origin": "Aluva",
94
- "destination": "Pettah",
95
- "trip_count": 2,
96
- "estimated_km": 102.0
97
- },
98
- {
99
- "block_id": "BLK-068",
100
- "departure_time": "17:54",
101
- "origin": "Aluva",
102
- "destination": "Pettah",
103
- "trip_count": 3,
104
- "estimated_km": 153.0
105
- },
106
- {
107
- "block_id": "BLK-090",
108
- "departure_time": "20:06",
109
- "origin": "Aluva",
110
- "destination": "Pettah",
111
- "trip_count": 3,
112
- "estimated_km": 153.0
113
- }
114
- ],
115
- "stabling_bay": "BAY-15",
116
- "standby_reason": null,
117
- "maintenance_type": null,
118
- "ibl_bay": null,
119
- "estimated_completion": null,
120
- "alerts": [
121
- "HVAC certificate expiring soon"
122
- ]
123
- },
124
- {
125
- "trainset_id": "TS-006",
126
- "status": "REVENUE_SERVICE",
127
- "readiness_score": 1.0,
128
- "daily_km_allocation": 714.0,
129
- "cumulative_km": 790123.0,
130
- "assigned_duty": "DUTY-A3",
131
- "priority_rank": 3,
132
- "service_blocks": [
133
- {
134
- "block_id": "BLK-003",
135
- "departure_time": "07:12",
136
- "origin": "Pettah",
137
- "destination": "Aluva",
138
- "trip_count": 3,
139
- "estimated_km": 153.0
140
- },
141
- {
142
- "block_id": "BLK-025",
143
- "departure_time": "09:24",
144
- "origin": "Pettah",
145
- "destination": "Aluva",
146
- "trip_count": 3,
147
- "estimated_km": 153.0
148
- },
149
- {
150
- "block_id": "BLK-047",
151
- "departure_time": "14:00",
152
- "origin": "Pettah",
153
- "destination": "Aluva",
154
- "trip_count": 2,
155
- "estimated_km": 102.0
156
- },
157
- {
158
- "block_id": "BLK-069",
159
- "departure_time": "18:00",
160
- "origin": "Pettah",
161
- "destination": "Aluva",
162
- "trip_count": 3,
163
- "estimated_km": 153.0
164
- },
165
- {
166
- "block_id": "BLK-091",
167
- "departure_time": "20:12",
168
- "origin": "Pettah",
169
- "destination": "Aluva",
170
- "trip_count": 3,
171
- "estimated_km": 153.0
172
- }
173
- ],
174
- "stabling_bay": "BAY-03",
175
- "standby_reason": null,
176
- "maintenance_type": null,
177
- "ibl_bay": null,
178
- "estimated_completion": null,
179
- "alerts": []
180
- },
181
- {
182
- "trainset_id": "TS-007",
183
- "status": "REVENUE_SERVICE",
184
- "readiness_score": 1.0,
185
- "daily_km_allocation": 663.0,
186
- "cumulative_km": 398609.0,
187
- "assigned_duty": "DUTY-A4",
188
- "priority_rank": 4,
189
- "service_blocks": [
190
- {
191
- "block_id": "BLK-026",
192
- "departure_time": "09:30",
193
- "origin": "Aluva",
194
- "destination": "Pettah",
195
- "trip_count": 3,
196
- "estimated_km": 153.0
197
- },
198
- {
199
- "block_id": "BLK-036",
200
- "departure_time": "11:15",
201
- "origin": "Aluva",
202
- "destination": "Pettah",
203
- "trip_count": 2,
204
- "estimated_km": 102.0
205
- },
206
- {
207
- "block_id": "BLK-048",
208
- "departure_time": "14:15",
209
- "origin": "Aluva",
210
- "destination": "Pettah",
211
- "trip_count": 2,
212
- "estimated_km": 102.0
213
- },
214
- {
215
- "block_id": "BLK-070",
216
- "departure_time": "18:06",
217
- "origin": "Aluva",
218
- "destination": "Pettah",
219
- "trip_count": 3,
220
- "estimated_km": 153.0
221
- },
222
- {
223
- "block_id": "BLK-092",
224
- "departure_time": "20:18",
225
- "origin": "Aluva",
226
- "destination": "Pettah",
227
- "trip_count": 3,
228
- "estimated_km": 153.0
229
- }
230
- ],
231
- "stabling_bay": "BAY-09",
232
- "standby_reason": null,
233
- "maintenance_type": null,
234
- "ibl_bay": null,
235
- "estimated_completion": null,
236
- "alerts": []
237
- },
238
- {
239
- "trainset_id": "TS-008",
240
- "status": "REVENUE_SERVICE",
241
- "readiness_score": 0.8,
242
- "daily_km_allocation": 714.0,
243
- "cumulative_km": 1066637.0,
244
- "assigned_duty": "DUTY-A5",
245
- "priority_rank": 5,
246
- "service_blocks": [
247
- {
248
- "block_id": "BLK-005",
249
- "departure_time": "07:24",
250
- "origin": "Pettah",
251
- "destination": "Aluva",
252
- "trip_count": 3,
253
- "estimated_km": 153.0
254
- },
255
- {
256
- "block_id": "BLK-027",
257
- "departure_time": "09:36",
258
- "origin": "Pettah",
259
- "destination": "Aluva",
260
- "trip_count": 3,
261
- "estimated_km": 153.0
262
- },
263
- {
264
- "block_id": "BLK-049",
265
- "departure_time": "14:30",
266
- "origin": "Pettah",
267
- "destination": "Aluva",
268
- "trip_count": 2,
269
- "estimated_km": 102.0
270
- },
271
- {
272
- "block_id": "BLK-071",
273
- "departure_time": "18:12",
274
- "origin": "Pettah",
275
- "destination": "Aluva",
276
- "trip_count": 3,
277
- "estimated_km": 153.0
278
- },
279
- {
280
- "block_id": "BLK-093",
281
- "departure_time": "20:24",
282
- "origin": "Pettah",
283
- "destination": "Aluva",
284
- "trip_count": 3,
285
- "estimated_km": 153.0
286
- }
287
- ],
288
- "stabling_bay": "BAY-15",
289
- "standby_reason": null,
290
- "maintenance_type": null,
291
- "ibl_bay": null,
292
- "estimated_completion": null,
293
- "alerts": [
294
- "Safety certificate expiring soon",
295
- "HVAC certificate expiring soon"
296
- ]
297
- },
298
- {
299
- "trainset_id": "TS-009",
300
- "status": "REVENUE_SERVICE",
301
- "readiness_score": 1.0,
302
- "daily_km_allocation": 714.0,
303
- "cumulative_km": 456251.0,
304
- "assigned_duty": "DUTY-A6",
305
- "priority_rank": 6,
306
- "service_blocks": [
307
- {
308
- "block_id": "BLK-006",
309
- "departure_time": "07:30",
310
- "origin": "Aluva",
311
- "destination": "Pettah",
312
- "trip_count": 3,
313
- "estimated_km": 153.0
314
- },
315
- {
316
- "block_id": "BLK-028",
317
- "departure_time": "09:42",
318
- "origin": "Aluva",
319
- "destination": "Pettah",
320
- "trip_count": 3,
321
- "estimated_km": 153.0
322
- },
323
- {
324
- "block_id": "BLK-050",
325
- "departure_time": "14:45",
326
- "origin": "Aluva",
327
- "destination": "Pettah",
328
- "trip_count": 2,
329
- "estimated_km": 102.0
330
- },
331
- {
332
- "block_id": "BLK-072",
333
- "departure_time": "18:18",
334
- "origin": "Aluva",
335
- "destination": "Pettah",
336
- "trip_count": 3,
337
- "estimated_km": 153.0
338
- },
339
- {
340
- "block_id": "BLK-094",
341
- "departure_time": "20:30",
342
- "origin": "Aluva",
343
- "destination": "Pettah",
344
- "trip_count": 3,
345
- "estimated_km": 153.0
346
- }
347
- ],
348
- "stabling_bay": "BAY-08",
349
- "standby_reason": null,
350
- "maintenance_type": null,
351
- "ibl_bay": null,
352
- "estimated_completion": null,
353
- "alerts": []
354
- },
355
- {
356
- "trainset_id": "TS-011",
357
- "status": "REVENUE_SERVICE",
358
- "readiness_score": 0.9,
359
- "daily_km_allocation": 867.0,
360
- "cumulative_km": 958301.0,
361
- "assigned_duty": "DUTY-A7",
362
- "priority_rank": 7,
363
- "service_blocks": [
364
- {
365
- "block_id": "BLK-007",
366
- "departure_time": "07:36",
367
- "origin": "Pettah",
368
- "destination": "Aluva",
369
- "trip_count": 3,
370
- "estimated_km": 153.0
371
- },
372
- {
373
- "block_id": "BLK-011",
374
- "departure_time": "08:00",
375
- "origin": "Pettah",
376
- "destination": "Aluva",
377
- "trip_count": 3,
378
- "estimated_km": 153.0
379
- },
380
- {
381
- "block_id": "BLK-029",
382
- "departure_time": "09:48",
383
- "origin": "Pettah",
384
- "destination": "Aluva",
385
- "trip_count": 3,
386
- "estimated_km": 153.0
387
- },
388
- {
389
- "block_id": "BLK-051",
390
- "departure_time": "15:00",
391
- "origin": "Pettah",
392
- "destination": "Aluva",
393
- "trip_count": 2,
394
- "estimated_km": 102.0
395
- },
396
- {
397
- "block_id": "BLK-073",
398
- "departure_time": "18:24",
399
- "origin": "Pettah",
400
- "destination": "Aluva",
401
- "trip_count": 3,
402
- "estimated_km": 153.0
403
- },
404
- {
405
- "block_id": "BLK-095",
406
- "departure_time": "20:36",
407
- "origin": "Pettah",
408
- "destination": "Aluva",
409
- "trip_count": 3,
410
- "estimated_km": 153.0
411
- }
412
- ],
413
- "stabling_bay": "BAY-01",
414
- "standby_reason": null,
415
- "maintenance_type": null,
416
- "ibl_bay": null,
417
- "estimated_completion": null,
418
- "alerts": [
419
- "HVAC certificate expiring soon"
420
- ]
421
- },
422
- {
423
- "trainset_id": "TS-012",
424
- "status": "REVENUE_SERVICE",
425
- "readiness_score": 0.9,
426
- "daily_km_allocation": 714.0,
427
- "cumulative_km": 707158.0,
428
- "assigned_duty": "DUTY-A8",
429
- "priority_rank": 8,
430
- "service_blocks": [
431
- {
432
- "block_id": "BLK-008",
433
- "departure_time": "07:42",
434
- "origin": "Aluva",
435
- "destination": "Pettah",
436
- "trip_count": 3,
437
- "estimated_km": 153.0
438
- },
439
- {
440
- "block_id": "BLK-030",
441
- "departure_time": "09:54",
442
- "origin": "Aluva",
443
- "destination": "Pettah",
444
- "trip_count": 3,
445
- "estimated_km": 153.0
446
- },
447
- {
448
- "block_id": "BLK-052",
449
- "departure_time": "15:15",
450
- "origin": "Aluva",
451
- "destination": "Pettah",
452
- "trip_count": 2,
453
- "estimated_km": 102.0
454
- },
455
- {
456
- "block_id": "BLK-074",
457
- "departure_time": "18:30",
458
- "origin": "Aluva",
459
- "destination": "Pettah",
460
- "trip_count": 3,
461
- "estimated_km": 153.0
462
- },
463
- {
464
- "block_id": "BLK-096",
465
- "departure_time": "20:42",
466
- "origin": "Aluva",
467
- "destination": "Pettah",
468
- "trip_count": 3,
469
- "estimated_km": 153.0
470
- }
471
- ],
472
- "stabling_bay": "BAY-13",
473
- "standby_reason": null,
474
- "maintenance_type": null,
475
- "ibl_bay": null,
476
- "estimated_completion": null,
477
- "alerts": [
478
- "HVAC certificate expiring soon"
479
- ]
480
- },
481
- {
482
- "trainset_id": "TS-014",
483
- "status": "REVENUE_SERVICE",
484
- "readiness_score": 0.6,
485
- "daily_km_allocation": 663.0,
486
- "cumulative_km": 1128198.0,
487
- "assigned_duty": "DUTY-A9",
488
- "priority_rank": 9,
489
- "service_blocks": [
490
- {
491
- "block_id": "BLK-009",
492
- "departure_time": "07:48",
493
- "origin": "Pettah",
494
- "destination": "Aluva",
495
- "trip_count": 3,
496
- "estimated_km": 153.0
497
- },
498
- {
499
- "block_id": "BLK-031",
500
- "departure_time": "10:00",
501
- "origin": "Pettah",
502
- "destination": "Aluva",
503
- "trip_count": 2,
504
- "estimated_km": 102.0
505
- },
506
- {
507
- "block_id": "BLK-053",
508
- "departure_time": "15:30",
509
- "origin": "Pettah",
510
- "destination": "Aluva",
511
- "trip_count": 2,
512
- "estimated_km": 102.0
513
- },
514
- {
515
- "block_id": "BLK-075",
516
- "departure_time": "18:36",
517
- "origin": "Pettah",
518
- "destination": "Aluva",
519
- "trip_count": 3,
520
- "estimated_km": 153.0
521
- },
522
- {
523
- "block_id": "BLK-097",
524
- "departure_time": "20:48",
525
- "origin": "Pettah",
526
- "destination": "Aluva",
527
- "trip_count": 3,
528
- "estimated_km": 153.0
529
- }
530
- ],
531
- "stabling_bay": "BAY-07",
532
- "standby_reason": null,
533
- "maintenance_type": null,
534
- "ibl_bay": null,
535
- "estimated_completion": null,
536
- "alerts": []
537
- },
538
- {
539
- "trainset_id": "TS-015",
540
- "status": "REVENUE_SERVICE",
541
- "readiness_score": 0.7,
542
- "daily_km_allocation": 663.0,
543
- "cumulative_km": 1205896.0,
544
- "assigned_duty": "DUTY-A10",
545
- "priority_rank": 10,
546
- "service_blocks": [
547
- {
548
- "block_id": "BLK-010",
549
- "departure_time": "07:54",
550
- "origin": "Aluva",
551
- "destination": "Pettah",
552
- "trip_count": 3,
553
- "estimated_km": 153.0
554
- },
555
- {
556
- "block_id": "BLK-032",
557
- "departure_time": "10:15",
558
- "origin": "Aluva",
559
- "destination": "Pettah",
560
- "trip_count": 2,
561
- "estimated_km": 102.0
562
- },
563
- {
564
- "block_id": "BLK-054",
565
- "departure_time": "15:45",
566
- "origin": "Aluva",
567
- "destination": "Pettah",
568
- "trip_count": 2,
569
- "estimated_km": 102.0
570
- },
571
- {
572
- "block_id": "BLK-076",
573
- "departure_time": "18:42",
574
- "origin": "Aluva",
575
- "destination": "Pettah",
576
- "trip_count": 3,
577
- "estimated_km": 153.0
578
- },
579
- {
580
- "block_id": "BLK-098",
581
- "departure_time": "20:54",
582
- "origin": "Aluva",
583
- "destination": "Pettah",
584
- "trip_count": 3,
585
- "estimated_km": 153.0
586
- }
587
- ],
588
- "stabling_bay": "BAY-10",
589
- "standby_reason": null,
590
- "maintenance_type": null,
591
- "ibl_bay": null,
592
- "estimated_completion": null,
593
- "alerts": [
594
- "HVAC certificate expiring soon"
595
- ]
596
- },
597
- {
598
- "trainset_id": "TS-016",
599
- "status": "REVENUE_SERVICE",
600
- "readiness_score": 1.0,
601
- "daily_km_allocation": 408.0,
602
- "cumulative_km": 196080.0,
603
- "assigned_duty": "DUTY-B1",
604
- "priority_rank": 11,
605
- "service_blocks": [
606
- {
607
- "block_id": "BLK-033",
608
- "departure_time": "10:30",
609
- "origin": "Pettah",
610
- "destination": "Aluva",
611
- "trip_count": 2,
612
- "estimated_km": 102.0
613
- },
614
- {
615
- "block_id": "BLK-055",
616
- "departure_time": "16:00",
617
- "origin": "Pettah",
618
- "destination": "Aluva",
619
- "trip_count": 2,
620
- "estimated_km": 102.0
621
- },
622
- {
623
- "block_id": "BLK-077",
624
- "departure_time": "18:48",
625
- "origin": "Pettah",
626
- "destination": "Aluva",
627
- "trip_count": 3,
628
- "estimated_km": 153.0
629
- },
630
- {
631
- "block_id": "BLK-099",
632
- "departure_time": "21:00",
633
- "origin": "Pettah",
634
- "destination": "Aluva",
635
- "trip_count": 1,
636
- "estimated_km": 51.0
637
- }
638
- ],
639
- "stabling_bay": "BAY-09",
640
- "standby_reason": null,
641
- "maintenance_type": null,
642
- "ibl_bay": null,
643
- "estimated_completion": null,
644
- "alerts": []
645
- },
646
- {
647
- "trainset_id": "TS-017",
648
- "status": "REVENUE_SERVICE",
649
- "readiness_score": 1.0,
650
- "daily_km_allocation": 561.0,
651
- "cumulative_km": 480134.0,
652
- "assigned_duty": "DUTY-B2",
653
- "priority_rank": 12,
654
- "service_blocks": [
655
- {
656
- "block_id": "BLK-012",
657
- "departure_time": "08:06",
658
- "origin": "Aluva",
659
- "destination": "Pettah",
660
- "trip_count": 3,
661
- "estimated_km": 153.0
662
- },
663
- {
664
- "block_id": "BLK-034",
665
- "departure_time": "10:45",
666
- "origin": "Aluva",
667
- "destination": "Pettah",
668
- "trip_count": 2,
669
- "estimated_km": 102.0
670
- },
671
- {
672
- "block_id": "BLK-056",
673
- "departure_time": "16:15",
674
- "origin": "Aluva",
675
- "destination": "Pettah",
676
- "trip_count": 2,
677
- "estimated_km": 102.0
678
- },
679
- {
680
- "block_id": "BLK-078",
681
- "departure_time": "18:54",
682
- "origin": "Aluva",
683
- "destination": "Pettah",
684
- "trip_count": 3,
685
- "estimated_km": 153.0
686
- },
687
- {
688
- "block_id": "BLK-100",
689
- "departure_time": "21:15",
690
- "origin": "Aluva",
691
- "destination": "Pettah",
692
- "trip_count": 1,
693
- "estimated_km": 51.0
694
- }
695
- ],
696
- "stabling_bay": "BAY-06",
697
- "standby_reason": null,
698
- "maintenance_type": null,
699
- "ibl_bay": null,
700
- "estimated_completion": null,
701
- "alerts": []
702
- },
703
- {
704
- "trainset_id": "TS-019",
705
- "status": "REVENUE_SERVICE",
706
- "readiness_score": 1.0,
707
- "daily_km_allocation": 510.0,
708
- "cumulative_km": 866136.0,
709
- "assigned_duty": "DUTY-B3",
710
- "priority_rank": 13,
711
- "service_blocks": [
712
- {
713
- "block_id": "BLK-013",
714
- "departure_time": "08:12",
715
- "origin": "Pettah",
716
- "destination": "Aluva",
717
- "trip_count": 3,
718
- "estimated_km": 153.0
719
- },
720
- {
721
- "block_id": "BLK-035",
722
- "departure_time": "11:00",
723
- "origin": "Pettah",
724
- "destination": "Aluva",
725
- "trip_count": 2,
726
- "estimated_km": 102.0
727
- },
728
- {
729
- "block_id": "BLK-057",
730
- "departure_time": "16:30",
731
- "origin": "Pettah",
732
- "destination": "Aluva",
733
- "trip_count": 2,
734
- "estimated_km": 102.0
735
- },
736
- {
737
- "block_id": "BLK-079",
738
- "departure_time": "19:00",
739
- "origin": "Pettah",
740
- "destination": "Aluva",
741
- "trip_count": 3,
742
- "estimated_km": 153.0
743
- }
744
- ],
745
- "stabling_bay": "BAY-04",
746
- "standby_reason": null,
747
- "maintenance_type": null,
748
- "ibl_bay": null,
749
- "estimated_completion": null,
750
- "alerts": []
751
- },
752
- {
753
- "trainset_id": "TS-020",
754
- "status": "REVENUE_SERVICE",
755
- "readiness_score": 1.0,
756
- "daily_km_allocation": 459.0,
757
- "cumulative_km": 897739.0,
758
- "assigned_duty": "DUTY-B4",
759
- "priority_rank": 14,
760
- "service_blocks": [
761
- {
762
- "block_id": "BLK-014",
763
- "departure_time": "08:18",
764
- "origin": "Aluva",
765
- "destination": "Pettah",
766
- "trip_count": 3,
767
- "estimated_km": 153.0
768
- },
769
- {
770
- "block_id": "BLK-058",
771
- "departure_time": "16:45",
772
- "origin": "Aluva",
773
- "destination": "Pettah",
774
- "trip_count": 2,
775
- "estimated_km": 102.0
776
- },
777
- {
778
- "block_id": "BLK-080",
779
- "departure_time": "19:06",
780
- "origin": "Aluva",
781
- "destination": "Pettah",
782
- "trip_count": 3,
783
- "estimated_km": 153.0
784
- },
785
- {
786
- "block_id": "BLK-102",
787
- "departure_time": "21:45",
788
- "origin": "Aluva",
789
- "destination": "Pettah",
790
- "trip_count": 1,
791
- "estimated_km": 51.0
792
- }
793
- ],
794
- "stabling_bay": "BAY-08",
795
- "standby_reason": null,
796
- "maintenance_type": null,
797
- "ibl_bay": null,
798
- "estimated_completion": null,
799
- "alerts": []
800
- },
801
- {
802
- "trainset_id": "TS-021",
803
- "status": "REVENUE_SERVICE",
804
- "readiness_score": 0.8,
805
- "daily_km_allocation": 612.0,
806
- "cumulative_km": 361164.0,
807
- "assigned_duty": "DUTY-B5",
808
- "priority_rank": 15,
809
- "service_blocks": [
810
- {
811
- "block_id": "BLK-015",
812
- "departure_time": "08:24",
813
- "origin": "Pettah",
814
- "destination": "Aluva",
815
- "trip_count": 3,
816
- "estimated_km": 153.0
817
- },
818
- {
819
- "block_id": "BLK-037",
820
- "departure_time": "11:30",
821
- "origin": "Pettah",
822
- "destination": "Aluva",
823
- "trip_count": 2,
824
- "estimated_km": 102.0
825
- },
826
- {
827
- "block_id": "BLK-059",
828
- "departure_time": "17:00",
829
- "origin": "Pettah",
830
- "destination": "Aluva",
831
- "trip_count": 3,
832
- "estimated_km": 153.0
833
- },
834
- {
835
- "block_id": "BLK-081",
836
- "departure_time": "19:12",
837
- "origin": "Pettah",
838
- "destination": "Aluva",
839
- "trip_count": 3,
840
- "estimated_km": 153.0
841
- },
842
- {
843
- "block_id": "BLK-103",
844
- "departure_time": "22:00",
845
- "origin": "Pettah",
846
- "destination": "Aluva",
847
- "trip_count": 1,
848
- "estimated_km": 51.0
849
- }
850
- ],
851
- "stabling_bay": "BAY-06",
852
- "standby_reason": null,
853
- "maintenance_type": null,
854
- "ibl_bay": null,
855
- "estimated_completion": null,
856
- "alerts": [
857
- "Telecom certificate expiring soon",
858
- "HVAC certificate expiring soon"
859
- ]
860
- },
861
- {
862
- "trainset_id": "TS-022",
863
- "status": "REVENUE_SERVICE",
864
- "readiness_score": 0.9,
865
- "daily_km_allocation": 612.0,
866
- "cumulative_km": 972462.0,
867
- "assigned_duty": "DUTY-B6",
868
- "priority_rank": 16,
869
- "service_blocks": [
870
- {
871
- "block_id": "BLK-016",
872
- "departure_time": "08:30",
873
- "origin": "Aluva",
874
- "destination": "Pettah",
875
- "trip_count": 3,
876
- "estimated_km": 153.0
877
- },
878
- {
879
- "block_id": "BLK-038",
880
- "departure_time": "11:45",
881
- "origin": "Aluva",
882
- "destination": "Pettah",
883
- "trip_count": 2,
884
- "estimated_km": 102.0
885
- },
886
- {
887
- "block_id": "BLK-060",
888
- "departure_time": "17:06",
889
- "origin": "Aluva",
890
- "destination": "Pettah",
891
- "trip_count": 3,
892
- "estimated_km": 153.0
893
- },
894
- {
895
- "block_id": "BLK-082",
896
- "departure_time": "19:18",
897
- "origin": "Aluva",
898
- "destination": "Pettah",
899
- "trip_count": 3,
900
- "estimated_km": 153.0
901
- },
902
- {
903
- "block_id": "BLK-104",
904
- "departure_time": "22:15",
905
- "origin": "Aluva",
906
- "destination": "Pettah",
907
- "trip_count": 1,
908
- "estimated_km": 51.0
909
- }
910
- ],
911
- "stabling_bay": "BAY-05",
912
- "standby_reason": null,
913
- "maintenance_type": null,
914
- "ibl_bay": null,
915
- "estimated_completion": null,
916
- "alerts": [
917
- "Telecom certificate expiring soon"
918
- ]
919
- },
920
- {
921
- "trainset_id": "TS-024",
922
- "status": "REVENUE_SERVICE",
923
- "readiness_score": 0.9,
924
- "daily_km_allocation": 612.0,
925
- "cumulative_km": 1171005.0,
926
- "assigned_duty": "DUTY-B7",
927
- "priority_rank": 17,
928
- "service_blocks": [
929
- {
930
- "block_id": "BLK-017",
931
- "departure_time": "08:36",
932
- "origin": "Pettah",
933
- "destination": "Aluva",
934
- "trip_count": 3,
935
- "estimated_km": 153.0
936
- },
937
- {
938
- "block_id": "BLK-039",
939
- "departure_time": "12:00",
940
- "origin": "Pettah",
941
- "destination": "Aluva",
942
- "trip_count": 2,
943
- "estimated_km": 102.0
944
- },
945
- {
946
- "block_id": "BLK-061",
947
- "departure_time": "17:12",
948
- "origin": "Pettah",
949
- "destination": "Aluva",
950
- "trip_count": 3,
951
- "estimated_km": 153.0
952
- },
953
- {
954
- "block_id": "BLK-083",
955
- "departure_time": "19:24",
956
- "origin": "Pettah",
957
- "destination": "Aluva",
958
- "trip_count": 3,
959
- "estimated_km": 153.0
960
- },
961
- {
962
- "block_id": "BLK-105",
963
- "departure_time": "22:30",
964
- "origin": "Pettah",
965
- "destination": "Aluva",
966
- "trip_count": 1,
967
- "estimated_km": 51.0
968
- }
969
- ],
970
- "stabling_bay": "BAY-07",
971
- "standby_reason": null,
972
- "maintenance_type": null,
973
- "ibl_bay": null,
974
- "estimated_completion": null,
975
- "alerts": [
976
- "HVAC certificate expiring soon"
977
- ]
978
- },
979
- {
980
- "trainset_id": "TS-026",
981
- "status": "REVENUE_SERVICE",
982
- "readiness_score": 0.7,
983
- "daily_km_allocation": 612.0,
984
- "cumulative_km": 1283675.0,
985
- "assigned_duty": "DUTY-B8",
986
- "priority_rank": 18,
987
- "service_blocks": [
988
- {
989
- "block_id": "BLK-018",
990
- "departure_time": "08:42",
991
- "origin": "Aluva",
992
- "destination": "Pettah",
993
- "trip_count": 3,
994
- "estimated_km": 153.0
995
- },
996
- {
997
- "block_id": "BLK-040",
998
- "departure_time": "12:15",
999
- "origin": "Aluva",
1000
- "destination": "Pettah",
1001
- "trip_count": 2,
1002
- "estimated_km": 102.0
1003
- },
1004
- {
1005
- "block_id": "BLK-062",
1006
- "departure_time": "17:18",
1007
- "origin": "Aluva",
1008
- "destination": "Pettah",
1009
- "trip_count": 3,
1010
- "estimated_km": 153.0
1011
- },
1012
- {
1013
- "block_id": "BLK-084",
1014
- "departure_time": "19:30",
1015
- "origin": "Aluva",
1016
- "destination": "Pettah",
1017
- "trip_count": 3,
1018
- "estimated_km": 153.0
1019
- },
1020
- {
1021
- "block_id": "BLK-106",
1022
- "departure_time": "22:45",
1023
- "origin": "Aluva",
1024
- "destination": "Pettah",
1025
- "trip_count": 1,
1026
- "estimated_km": 51.0
1027
- }
1028
- ],
1029
- "stabling_bay": "BAY-13",
1030
- "standby_reason": null,
1031
- "maintenance_type": null,
1032
- "ibl_bay": null,
1033
- "estimated_completion": null,
1034
- "alerts": [
1035
- "Safety certificate expiring soon"
1036
- ]
1037
- },
1038
- {
1039
- "trainset_id": "TS-027",
1040
- "status": "REVENUE_SERVICE",
1041
- "readiness_score": 0.85,
1042
- "daily_km_allocation": 714.0,
1043
- "cumulative_km": 111055.0,
1044
- "assigned_duty": "DUTY-B9",
1045
- "priority_rank": 19,
1046
- "service_blocks": [
1047
- {
1048
- "block_id": "BLK-004",
1049
- "departure_time": "07:18",
1050
- "origin": "Aluva",
1051
- "destination": "Pettah",
1052
- "trip_count": 3,
1053
- "estimated_km": 153.0
1054
- },
1055
- {
1056
- "block_id": "BLK-019",
1057
- "departure_time": "08:48",
1058
- "origin": "Pettah",
1059
- "destination": "Aluva",
1060
- "trip_count": 3,
1061
- "estimated_km": 153.0
1062
- },
1063
- {
1064
- "block_id": "BLK-041",
1065
- "departure_time": "12:30",
1066
- "origin": "Pettah",
1067
- "destination": "Aluva",
1068
- "trip_count": 2,
1069
- "estimated_km": 102.0
1070
- },
1071
- {
1072
- "block_id": "BLK-063",
1073
- "departure_time": "17:24",
1074
- "origin": "Pettah",
1075
- "destination": "Aluva",
1076
- "trip_count": 3,
1077
- "estimated_km": 153.0
1078
- },
1079
- {
1080
- "block_id": "BLK-085",
1081
- "departure_time": "19:36",
1082
- "origin": "Pettah",
1083
- "destination": "Aluva",
1084
- "trip_count": 3,
1085
- "estimated_km": 153.0
1086
- }
1087
- ],
1088
- "stabling_bay": "BAY-15",
1089
- "standby_reason": null,
1090
- "maintenance_type": null,
1091
- "ibl_bay": null,
1092
- "estimated_completion": null,
1093
- "alerts": [
1094
- "HVAC certificate expiring soon",
1095
- "Brake_Pad requires attention (wear: 85.0%)"
1096
- ]
1097
- },
1098
- {
1099
- "trainset_id": "TS-028",
1100
- "status": "REVENUE_SERVICE",
1101
- "readiness_score": 0.9,
1102
- "daily_km_allocation": 612.0,
1103
- "cumulative_km": 1658453.0,
1104
- "assigned_duty": "DUTY-B10",
1105
- "priority_rank": 20,
1106
- "service_blocks": [
1107
- {
1108
- "block_id": "BLK-020",
1109
- "departure_time": "08:54",
1110
- "origin": "Aluva",
1111
- "destination": "Pettah",
1112
- "trip_count": 3,
1113
- "estimated_km": 153.0
1114
- },
1115
- {
1116
- "block_id": "BLK-042",
1117
- "departure_time": "12:45",
1118
- "origin": "Aluva",
1119
- "destination": "Pettah",
1120
- "trip_count": 2,
1121
- "estimated_km": 102.0
1122
- },
1123
- {
1124
- "block_id": "BLK-064",
1125
- "departure_time": "17:30",
1126
- "origin": "Aluva",
1127
- "destination": "Pettah",
1128
- "trip_count": 3,
1129
- "estimated_km": 153.0
1130
- },
1131
- {
1132
- "block_id": "BLK-086",
1133
- "departure_time": "19:42",
1134
- "origin": "Aluva",
1135
- "destination": "Pettah",
1136
- "trip_count": 3,
1137
- "estimated_km": 153.0
1138
- },
1139
- {
1140
- "block_id": "BLK-101",
1141
- "departure_time": "21:30",
1142
- "origin": "Pettah",
1143
- "destination": "Aluva",
1144
- "trip_count": 1,
1145
- "estimated_km": 51.0
1146
- }
1147
- ],
1148
- "stabling_bay": "BAY-07",
1149
- "standby_reason": null,
1150
- "maintenance_type": null,
1151
- "ibl_bay": null,
1152
- "estimated_completion": null,
1153
- "alerts": [
1154
- "Telecom certificate expiring soon"
1155
- ]
1156
- },
1157
- {
1158
- "trainset_id": "TS-029",
1159
- "status": "REVENUE_SERVICE",
1160
- "readiness_score": 1.0,
1161
- "daily_km_allocation": 561.0,
1162
- "cumulative_km": 1282105.0,
1163
- "assigned_duty": "DUTY-C1",
1164
- "priority_rank": 21,
1165
- "service_blocks": [
1166
- {
1167
- "block_id": "BLK-021",
1168
- "departure_time": "09:00",
1169
- "origin": "Pettah",
1170
- "destination": "Aluva",
1171
- "trip_count": 3,
1172
- "estimated_km": 153.0
1173
- },
1174
- {
1175
- "block_id": "BLK-043",
1176
- "departure_time": "13:00",
1177
- "origin": "Pettah",
1178
- "destination": "Aluva",
1179
- "trip_count": 2,
1180
- "estimated_km": 102.0
1181
- },
1182
- {
1183
- "block_id": "BLK-065",
1184
- "departure_time": "17:36",
1185
- "origin": "Pettah",
1186
- "destination": "Aluva",
1187
- "trip_count": 3,
1188
- "estimated_km": 153.0
1189
- },
1190
- {
1191
- "block_id": "BLK-087",
1192
- "departure_time": "19:48",
1193
- "origin": "Pettah",
1194
- "destination": "Aluva",
1195
- "trip_count": 3,
1196
- "estimated_km": 153.0
1197
- }
1198
- ],
1199
- "stabling_bay": "BAY-14",
1200
- "standby_reason": null,
1201
- "maintenance_type": null,
1202
- "ibl_bay": null,
1203
- "estimated_completion": null,
1204
- "alerts": []
1205
- },
1206
- {
1207
- "trainset_id": "TS-030",
1208
- "status": "REVENUE_SERVICE",
1209
- "readiness_score": 1.0,
1210
- "daily_km_allocation": 561.0,
1211
- "cumulative_km": 343707.0,
1212
- "assigned_duty": "DUTY-C2",
1213
- "priority_rank": 22,
1214
- "service_blocks": [
1215
- {
1216
- "block_id": "BLK-022",
1217
- "departure_time": "09:06",
1218
- "origin": "Aluva",
1219
- "destination": "Pettah",
1220
- "trip_count": 3,
1221
- "estimated_km": 153.0
1222
- },
1223
- {
1224
- "block_id": "BLK-044",
1225
- "departure_time": "13:15",
1226
- "origin": "Aluva",
1227
- "destination": "Pettah",
1228
- "trip_count": 2,
1229
- "estimated_km": 102.0
1230
- },
1231
- {
1232
- "block_id": "BLK-066",
1233
- "departure_time": "17:42",
1234
- "origin": "Aluva",
1235
- "destination": "Pettah",
1236
- "trip_count": 3,
1237
- "estimated_km": 153.0
1238
- },
1239
- {
1240
- "block_id": "BLK-088",
1241
- "departure_time": "19:54",
1242
- "origin": "Aluva",
1243
- "destination": "Pettah",
1244
- "trip_count": 3,
1245
- "estimated_km": 153.0
1246
- }
1247
- ],
1248
- "stabling_bay": "BAY-03",
1249
- "standby_reason": null,
1250
- "maintenance_type": null,
1251
- "ibl_bay": null,
1252
- "estimated_completion": null,
1253
- "alerts": []
1254
- },
1255
- {
1256
- "trainset_id": "TS-003",
1257
- "status": "STANDBY",
1258
- "readiness_score": 0.7,
1259
- "daily_km_allocation": 0.0,
1260
- "cumulative_km": 935696.0,
1261
- "assigned_duty": null,
1262
- "priority_rank": null,
1263
- "service_blocks": null,
1264
- "stabling_bay": "BAY-05",
1265
- "standby_reason": "PEAK_HOUR_RESERVE",
1266
- "maintenance_type": null,
1267
- "ibl_bay": null,
1268
- "estimated_completion": null,
1269
- "alerts": [
1270
- "Brake_Pad in critical condition (wear: 100.0%)",
1271
- "Compressor in critical condition (wear: 100.0%)"
1272
- ]
1273
- },
1274
- {
1275
- "trainset_id": "TS-004",
1276
- "status": "STANDBY",
1277
- "readiness_score": 0.5,
1278
- "daily_km_allocation": 0.0,
1279
- "cumulative_km": 378552.0,
1280
- "assigned_duty": null,
1281
- "priority_rank": null,
1282
- "service_blocks": null,
1283
- "stabling_bay": "BAY-14",
1284
- "standby_reason": "CREW_UNAVAILABLE",
1285
- "maintenance_type": null,
1286
- "ibl_bay": null,
1287
- "estimated_completion": null,
1288
- "alerts": [
1289
- "Telecom certificate expiring soon"
1290
- ]
1291
- },
1292
- {
1293
- "trainset_id": "TS-018",
1294
- "status": "STANDBY",
1295
- "readiness_score": 0.8,
1296
- "daily_km_allocation": 0.0,
1297
- "cumulative_km": 426175.0,
1298
- "assigned_duty": null,
1299
- "priority_rank": null,
1300
- "service_blocks": null,
1301
- "stabling_bay": "BAY-07",
1302
- "standby_reason": "EMERGENCY_BACKUP",
1303
- "maintenance_type": null,
1304
- "ibl_bay": null,
1305
- "estimated_completion": null,
1306
- "alerts": []
1307
- },
1308
- {
1309
- "trainset_id": "TS-025",
1310
- "status": "STANDBY",
1311
- "readiness_score": 0.9,
1312
- "daily_km_allocation": 0.0,
1313
- "cumulative_km": 1496008.0,
1314
- "assigned_duty": null,
1315
- "priority_rank": null,
1316
- "service_blocks": null,
1317
- "stabling_bay": "BAY-06",
1318
- "standby_reason": "EMERGENCY_BACKUP",
1319
- "maintenance_type": null,
1320
- "ibl_bay": null,
1321
- "estimated_completion": null,
1322
- "alerts": [
1323
- "Telecom certificate expiring soon"
1324
- ]
1325
- },
1326
- {
1327
- "trainset_id": "TS-005",
1328
- "status": "MAINTENANCE",
1329
- "readiness_score": 0.8,
1330
- "daily_km_allocation": 0.0,
1331
- "cumulative_km": 257613.0,
1332
- "assigned_duty": null,
1333
- "priority_rank": null,
1334
- "service_blocks": null,
1335
- "stabling_bay": null,
1336
- "standby_reason": null,
1337
- "maintenance_type": "SCHEDULED_INSPECTION",
1338
- "ibl_bay": "IBL-01",
1339
- "estimated_completion": "2025-11-29T12:10:15.695944",
1340
- "alerts": [
1341
- "Rolling Stock certificate expiring soon",
1342
- "Telecom certificate expiring soon"
1343
- ]
1344
- },
1345
- {
1346
- "trainset_id": "TS-010",
1347
- "status": "MAINTENANCE",
1348
- "readiness_score": 0.85,
1349
- "daily_km_allocation": 0.0,
1350
- "cumulative_km": 166147.0,
1351
- "assigned_duty": null,
1352
- "priority_rank": null,
1353
- "service_blocks": null,
1354
- "stabling_bay": null,
1355
- "standby_reason": null,
1356
- "maintenance_type": "SCHEDULED_INSPECTION",
1357
- "ibl_bay": "IBL-02",
1358
- "estimated_completion": "2025-11-29T07:10:15.695996",
1359
- "alerts": [
1360
- "Brake_Pad in critical condition (wear: 91.0%)"
1361
- ]
1362
- },
1363
- {
1364
- "trainset_id": "TS-013",
1365
- "status": "MAINTENANCE",
1366
- "readiness_score": 0.45,
1367
- "daily_km_allocation": 0.0,
1368
- "cumulative_km": 535335.0,
1369
- "assigned_duty": null,
1370
- "priority_rank": null,
1371
- "service_blocks": null,
1372
- "stabling_bay": null,
1373
- "standby_reason": null,
1374
- "maintenance_type": "SCHEDULED_INSPECTION",
1375
- "ibl_bay": "IBL-04",
1376
- "estimated_completion": "2025-11-29T09:10:15.696026",
1377
- "alerts": [
1378
- "Telecom certificate expiring soon",
1379
- "Brake_Pad in critical condition (wear: 100.0%)",
1380
- "Pantograph in critical condition (wear: 100.0%)",
1381
- "Battery in critical condition (wear: 99.0%)"
1382
- ]
1383
- },
1384
- {
1385
- "trainset_id": "TS-023",
1386
- "status": "MAINTENANCE",
1387
- "readiness_score": 0.8,
1388
- "daily_km_allocation": 0.0,
1389
- "cumulative_km": 262893.0,
1390
- "assigned_duty": null,
1391
- "priority_rank": null,
1392
- "service_blocks": null,
1393
- "stabling_bay": null,
1394
- "standby_reason": null,
1395
- "maintenance_type": "SCHEDULED_INSPECTION",
1396
- "ibl_bay": "IBL-01",
1397
- "estimated_completion": "2025-11-29T09:10:15.696057",
1398
- "alerts": [
1399
- "Brake_Pad in critical condition (wear: 100.0%)"
1400
- ]
1401
- }
1402
- ],
1403
- "fleet_summary": {
1404
- "total_trainsets": 30,
1405
- "revenue_service": 22,
1406
- "standby": 4,
1407
- "maintenance": 4,
1408
- "availability_percent": 86.7
1409
- },
1410
- "optimization_metrics": {
1411
- "fitness_score": -1217.7792037632228,
1412
- "method": "ga",
1413
- "mileage_variance_coefficient": 0.16,
1414
- "total_planned_km": 13974.0,
1415
- "optimization_runtime_ms": 4053
1416
- },
1417
- "alerts": [
1418
- {
1419
- "trainset_id": "TS-002",
1420
- "severity": "MEDIUM",
1421
- "alert_type": "CERTIFICATE_EXPIRING",
1422
- "message": "HVAC certificate expiring soon"
1423
- },
1424
- {
1425
- "trainset_id": "TS-008",
1426
- "severity": "MEDIUM",
1427
- "alert_type": "CERTIFICATE_EXPIRING",
1428
- "message": "Safety certificate expiring soon"
1429
- },
1430
- {
1431
- "trainset_id": "TS-008",
1432
- "severity": "MEDIUM",
1433
- "alert_type": "CERTIFICATE_EXPIRING",
1434
- "message": "HVAC certificate expiring soon"
1435
- },
1436
- {
1437
- "trainset_id": "TS-011",
1438
- "severity": "MEDIUM",
1439
- "alert_type": "CERTIFICATE_EXPIRING",
1440
- "message": "HVAC certificate expiring soon"
1441
- },
1442
- {
1443
- "trainset_id": "TS-012",
1444
- "severity": "MEDIUM",
1445
- "alert_type": "CERTIFICATE_EXPIRING",
1446
- "message": "HVAC certificate expiring soon"
1447
- },
1448
- {
1449
- "trainset_id": "TS-015",
1450
- "severity": "MEDIUM",
1451
- "alert_type": "CERTIFICATE_EXPIRING",
1452
- "message": "HVAC certificate expiring soon"
1453
- },
1454
- {
1455
- "trainset_id": "TS-021",
1456
- "severity": "MEDIUM",
1457
- "alert_type": "CERTIFICATE_EXPIRING",
1458
- "message": "Telecom certificate expiring soon"
1459
- },
1460
- {
1461
- "trainset_id": "TS-021",
1462
- "severity": "MEDIUM",
1463
- "alert_type": "CERTIFICATE_EXPIRING",
1464
- "message": "HVAC certificate expiring soon"
1465
- },
1466
- {
1467
- "trainset_id": "TS-022",
1468
- "severity": "MEDIUM",
1469
- "alert_type": "CERTIFICATE_EXPIRING",
1470
- "message": "Telecom certificate expiring soon"
1471
- },
1472
- {
1473
- "trainset_id": "TS-024",
1474
- "severity": "MEDIUM",
1475
- "alert_type": "CERTIFICATE_EXPIRING",
1476
- "message": "HVAC certificate expiring soon"
1477
- },
1478
- {
1479
- "trainset_id": "TS-026",
1480
- "severity": "MEDIUM",
1481
- "alert_type": "CERTIFICATE_EXPIRING",
1482
- "message": "Safety certificate expiring soon"
1483
- },
1484
- {
1485
- "trainset_id": "TS-027",
1486
- "severity": "MEDIUM",
1487
- "alert_type": "CERTIFICATE_EXPIRING",
1488
- "message": "HVAC certificate expiring soon"
1489
- },
1490
- {
1491
- "trainset_id": "TS-027",
1492
- "severity": "MEDIUM",
1493
- "alert_type": "COMPONENT_WARNING",
1494
- "message": "Brake_Pad requires attention (wear: 85.0%)"
1495
- },
1496
- {
1497
- "trainset_id": "TS-028",
1498
- "severity": "MEDIUM",
1499
- "alert_type": "CERTIFICATE_EXPIRING",
1500
- "message": "Telecom certificate expiring soon"
1501
- },
1502
- {
1503
- "trainset_id": "TS-003",
1504
- "severity": "HIGH",
1505
- "alert_type": "COMPONENT_CRITICAL",
1506
- "message": "Brake_Pad in critical condition (wear: 100.0%)"
1507
- },
1508
- {
1509
- "trainset_id": "TS-003",
1510
- "severity": "HIGH",
1511
- "alert_type": "COMPONENT_CRITICAL",
1512
- "message": "Compressor in critical condition (wear: 100.0%)"
1513
- },
1514
- {
1515
- "trainset_id": "TS-004",
1516
- "severity": "MEDIUM",
1517
- "alert_type": "CERTIFICATE_EXPIRING",
1518
- "message": "Telecom certificate expiring soon"
1519
- },
1520
- {
1521
- "trainset_id": "TS-025",
1522
- "severity": "MEDIUM",
1523
- "alert_type": "CERTIFICATE_EXPIRING",
1524
- "message": "Telecom certificate expiring soon"
1525
- },
1526
- {
1527
- "trainset_id": "TS-005",
1528
- "severity": "MEDIUM",
1529
- "alert_type": "CERTIFICATE_EXPIRING",
1530
- "message": "Rolling Stock certificate expiring soon"
1531
- },
1532
- {
1533
- "trainset_id": "TS-005",
1534
- "severity": "MEDIUM",
1535
- "alert_type": "CERTIFICATE_EXPIRING",
1536
- "message": "Telecom certificate expiring soon"
1537
- },
1538
- {
1539
- "trainset_id": "TS-010",
1540
- "severity": "HIGH",
1541
- "alert_type": "COMPONENT_CRITICAL",
1542
- "message": "Brake_Pad in critical condition (wear: 91.0%)"
1543
- },
1544
- {
1545
- "trainset_id": "TS-013",
1546
- "severity": "MEDIUM",
1547
- "alert_type": "CERTIFICATE_EXPIRING",
1548
- "message": "Telecom certificate expiring soon"
1549
- },
1550
- {
1551
- "trainset_id": "TS-013",
1552
- "severity": "HIGH",
1553
- "alert_type": "COMPONENT_CRITICAL",
1554
- "message": "Brake_Pad in critical condition (wear: 100.0%)"
1555
- },
1556
- {
1557
- "trainset_id": "TS-013",
1558
- "severity": "HIGH",
1559
- "alert_type": "COMPONENT_CRITICAL",
1560
- "message": "Pantograph in critical condition (wear: 100.0%)"
1561
- },
1562
- {
1563
- "trainset_id": "TS-013",
1564
- "severity": "HIGH",
1565
- "alert_type": "COMPONENT_CRITICAL",
1566
- "message": "Battery in critical condition (wear: 99.0%)"
1567
- },
1568
- {
1569
- "trainset_id": "TS-023",
1570
- "severity": "HIGH",
1571
- "alert_type": "COMPONENT_CRITICAL",
1572
- "message": "Brake_Pad in critical condition (wear: 100.0%)"
1573
- }
1574
- ]
1575
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
test_output/dataservice_gen_30_output_20251202_143859.json ADDED
The diff for this file is too large to render. See raw diff
 
test_output/{local_gen_25_input_20251129_001015.json → local_gen_25_input_20251202_143905.json} RENAMED
@@ -3,177 +3,177 @@
3
  {
4
  "trainset_id": "TS-001",
5
  "operational_status": "IN_SERVICE",
6
- "last_maintenance_date": "2025-10-22",
7
- "total_mileage_km": 111134.18,
8
- "age_years": 5
9
  },
10
  {
11
  "trainset_id": "TS-002",
12
  "operational_status": "IN_SERVICE",
13
- "last_maintenance_date": "2025-11-01",
14
- "total_mileage_km": 154404.03,
15
- "age_years": 1
16
  },
17
  {
18
  "trainset_id": "TS-003",
19
  "operational_status": "STANDBY",
20
- "last_maintenance_date": "2025-10-03",
21
- "total_mileage_km": 144754.01,
22
- "age_years": 2
23
  },
24
  {
25
  "trainset_id": "TS-004",
26
  "operational_status": "IN_SERVICE",
27
- "last_maintenance_date": "2025-10-05",
28
- "total_mileage_km": 151715.4,
29
- "age_years": 4
30
  },
31
  {
32
  "trainset_id": "TS-005",
33
  "operational_status": "IN_SERVICE",
34
- "last_maintenance_date": "2025-09-06",
35
- "total_mileage_km": 142678.06,
36
- "age_years": 4
37
  },
38
  {
39
  "trainset_id": "TS-006",
40
  "operational_status": "STANDBY",
41
- "last_maintenance_date": "2025-09-05",
42
- "total_mileage_km": 113035.67,
43
- "age_years": 6
44
  },
45
  {
46
  "trainset_id": "TS-007",
47
  "operational_status": "IN_SERVICE",
48
- "last_maintenance_date": "2025-10-31",
49
- "total_mileage_km": 86336.09,
50
- "age_years": 2
51
  },
52
  {
53
  "trainset_id": "TS-008",
54
  "operational_status": "IN_SERVICE",
55
- "last_maintenance_date": "2025-09-01",
56
- "total_mileage_km": 52459.38,
57
- "age_years": 6
58
  },
59
  {
60
  "trainset_id": "TS-009",
61
  "operational_status": "STANDBY",
62
- "last_maintenance_date": "2025-09-23",
63
- "total_mileage_km": 170370.58,
64
- "age_years": 4
65
  },
66
  {
67
  "trainset_id": "TS-010",
68
  "operational_status": "IN_SERVICE",
69
- "last_maintenance_date": "2025-09-24",
70
- "total_mileage_km": 128616.07,
71
- "age_years": 8
72
  },
73
  {
74
  "trainset_id": "TS-011",
75
  "operational_status": "IN_SERVICE",
76
- "last_maintenance_date": "2025-10-13",
77
- "total_mileage_km": 58474.42,
78
- "age_years": 1
79
  },
80
  {
81
  "trainset_id": "TS-012",
82
  "operational_status": "STANDBY",
83
- "last_maintenance_date": "2025-09-04",
84
- "total_mileage_km": 153131.5,
85
- "age_years": 2
86
  },
87
  {
88
  "trainset_id": "TS-013",
89
  "operational_status": "IN_SERVICE",
90
- "last_maintenance_date": "2025-11-07",
91
- "total_mileage_km": 54065.77,
92
- "age_years": 7
93
  },
94
  {
95
  "trainset_id": "TS-014",
96
  "operational_status": "IN_SERVICE",
97
- "last_maintenance_date": "2025-10-15",
98
- "total_mileage_km": 134250.56,
99
- "age_years": 6
100
  },
101
  {
102
  "trainset_id": "TS-015",
103
  "operational_status": "STANDBY",
104
- "last_maintenance_date": "2025-09-22",
105
- "total_mileage_km": 152079.2,
106
- "age_years": 5
107
  },
108
  {
109
  "trainset_id": "TS-016",
110
  "operational_status": "IN_SERVICE",
111
- "last_maintenance_date": "2025-09-27",
112
- "total_mileage_km": 151057.74,
113
- "age_years": 1
114
  },
115
  {
116
  "trainset_id": "TS-017",
117
  "operational_status": "IN_SERVICE",
118
- "last_maintenance_date": "2025-09-24",
119
- "total_mileage_km": 178100.51,
120
  "age_years": 8
121
  },
122
  {
123
  "trainset_id": "TS-018",
124
  "operational_status": "STANDBY",
125
- "last_maintenance_date": "2025-09-08",
126
- "total_mileage_km": 168173.89,
127
- "age_years": 6
128
  },
129
  {
130
  "trainset_id": "TS-019",
131
  "operational_status": "IN_SERVICE",
132
- "last_maintenance_date": "2025-11-17",
133
- "total_mileage_km": 61111.79,
134
- "age_years": 5
135
  },
136
  {
137
  "trainset_id": "TS-020",
138
  "operational_status": "IN_SERVICE",
139
- "last_maintenance_date": "2025-09-11",
140
- "total_mileage_km": 195905.7,
141
- "age_years": 5
142
  },
143
  {
144
  "trainset_id": "TS-021",
145
- "operational_status": "OUT_OF_SERVICE",
146
- "last_maintenance_date": "2025-10-31",
147
- "total_mileage_km": 151746.82,
148
- "age_years": 7
149
  },
150
  {
151
  "trainset_id": "TS-022",
152
  "operational_status": "OUT_OF_SERVICE",
153
- "last_maintenance_date": "2025-11-09",
154
- "total_mileage_km": 59944.09,
155
- "age_years": 1
156
  },
157
  {
158
  "trainset_id": "TS-023",
159
  "operational_status": "MAINTENANCE",
160
- "last_maintenance_date": "2025-11-06",
161
- "total_mileage_km": 154268.26,
162
- "age_years": 5
163
  },
164
  {
165
  "trainset_id": "TS-024",
166
- "operational_status": "OUT_OF_SERVICE",
167
- "last_maintenance_date": "2025-09-20",
168
- "total_mileage_km": 107005.9,
169
- "age_years": 1
170
  },
171
  {
172
  "trainset_id": "TS-025",
173
  "operational_status": "OUT_OF_SERVICE",
174
- "last_maintenance_date": "2025-09-25",
175
- "total_mileage_km": 168132.24,
176
- "age_years": 4
177
  }
178
  ],
179
  "fitness_certificates": [
@@ -181,2281 +181,2281 @@
181
  "trainset_id": "TS-001",
182
  "department": "ROLLING_STOCK",
183
  "status": "ISSUED",
184
- "issue_date": "2025-09-08",
185
- "expiry_date": "2026-09-08"
186
  },
187
  {
188
  "trainset_id": "TS-001",
189
  "department": "ELECTRICAL",
190
  "status": "ISSUED",
191
- "issue_date": "2025-06-18",
192
- "expiry_date": "2026-06-18"
193
  },
194
  {
195
  "trainset_id": "TS-001",
196
  "department": "MECHANICAL",
197
  "status": "ISSUED",
198
- "issue_date": "2025-08-13",
199
- "expiry_date": "2026-08-13"
200
  },
201
  {
202
  "trainset_id": "TS-001",
203
  "department": "SAFETY",
204
  "status": "ISSUED",
205
- "issue_date": "2025-07-15",
206
- "expiry_date": "2026-07-15"
207
  },
208
  {
209
  "trainset_id": "TS-001",
210
  "department": "OPERATIONS",
211
  "status": "ISSUED",
212
- "issue_date": "2025-09-29",
213
- "expiry_date": "2026-09-29"
214
  },
215
  {
216
  "trainset_id": "TS-002",
217
  "department": "ROLLING_STOCK",
218
  "status": "ISSUED",
219
- "issue_date": "2025-08-03",
220
- "expiry_date": "2026-08-03"
221
  },
222
  {
223
  "trainset_id": "TS-002",
224
  "department": "ELECTRICAL",
225
  "status": "ISSUED",
226
- "issue_date": "2025-09-09",
227
- "expiry_date": "2026-09-09"
228
  },
229
  {
230
  "trainset_id": "TS-002",
231
  "department": "MECHANICAL",
232
  "status": "ISSUED",
233
- "issue_date": "2025-10-11",
234
- "expiry_date": "2026-10-11"
235
  },
236
  {
237
  "trainset_id": "TS-002",
238
  "department": "SAFETY",
239
  "status": "ISSUED",
240
- "issue_date": "2025-07-29",
241
- "expiry_date": "2026-07-29"
242
  },
243
  {
244
  "trainset_id": "TS-002",
245
  "department": "OPERATIONS",
246
- "status": "SUSPENDED",
247
- "issue_date": "2025-07-09",
248
- "expiry_date": "2026-07-09"
249
  },
250
  {
251
  "trainset_id": "TS-003",
252
  "department": "ROLLING_STOCK",
253
  "status": "ISSUED",
254
- "issue_date": "2025-09-06",
255
- "expiry_date": "2026-09-06"
256
  },
257
  {
258
  "trainset_id": "TS-003",
259
  "department": "ELECTRICAL",
260
- "status": "ISSUED",
261
- "issue_date": "2025-09-07",
262
- "expiry_date": "2026-09-07"
263
  },
264
  {
265
  "trainset_id": "TS-003",
266
  "department": "MECHANICAL",
267
  "status": "ISSUED",
268
- "issue_date": "2025-09-28",
269
- "expiry_date": "2026-09-28"
270
  },
271
  {
272
  "trainset_id": "TS-003",
273
  "department": "SAFETY",
274
  "status": "ISSUED",
275
- "issue_date": "2025-07-27",
276
- "expiry_date": "2026-07-27"
277
  },
278
  {
279
  "trainset_id": "TS-003",
280
  "department": "OPERATIONS",
281
- "status": "PENDING",
282
- "issue_date": "2025-10-11",
283
- "expiry_date": "2026-10-11"
284
  },
285
  {
286
  "trainset_id": "TS-004",
287
  "department": "ROLLING_STOCK",
288
  "status": "ISSUED",
289
- "issue_date": "2025-10-03",
290
- "expiry_date": "2026-10-03"
291
  },
292
  {
293
  "trainset_id": "TS-004",
294
  "department": "ELECTRICAL",
295
  "status": "ISSUED",
296
- "issue_date": "2025-10-09",
297
- "expiry_date": "2026-10-09"
298
  },
299
  {
300
  "trainset_id": "TS-004",
301
  "department": "MECHANICAL",
302
  "status": "ISSUED",
303
- "issue_date": "2025-07-12",
304
- "expiry_date": "2026-07-12"
305
  },
306
  {
307
  "trainset_id": "TS-004",
308
  "department": "SAFETY",
309
- "status": "ISSUED",
310
- "issue_date": "2025-08-14",
311
- "expiry_date": "2026-08-14"
312
  },
313
  {
314
  "trainset_id": "TS-004",
315
  "department": "OPERATIONS",
316
  "status": "ISSUED",
317
- "issue_date": "2025-06-11",
318
- "expiry_date": "2026-06-11"
319
  },
320
  {
321
  "trainset_id": "TS-005",
322
  "department": "ROLLING_STOCK",
323
  "status": "ISSUED",
324
- "issue_date": "2025-08-25",
325
- "expiry_date": "2026-08-25"
326
  },
327
  {
328
  "trainset_id": "TS-005",
329
  "department": "ELECTRICAL",
330
  "status": "ISSUED",
331
- "issue_date": "2025-06-17",
332
- "expiry_date": "2026-06-17"
333
  },
334
  {
335
  "trainset_id": "TS-005",
336
  "department": "MECHANICAL",
337
  "status": "ISSUED",
338
- "issue_date": "2025-09-25",
339
- "expiry_date": "2026-09-25"
340
  },
341
  {
342
  "trainset_id": "TS-005",
343
  "department": "SAFETY",
344
  "status": "ISSUED",
345
- "issue_date": "2025-10-18",
346
- "expiry_date": "2026-10-18"
347
  },
348
  {
349
  "trainset_id": "TS-005",
350
  "department": "OPERATIONS",
351
- "status": "ISSUED",
352
- "issue_date": "2025-08-06",
353
- "expiry_date": "2026-08-06"
354
  },
355
  {
356
  "trainset_id": "TS-006",
357
  "department": "ROLLING_STOCK",
358
- "status": "ISSUED",
359
- "issue_date": "2025-09-11",
360
- "expiry_date": "2026-09-11"
361
  },
362
  {
363
  "trainset_id": "TS-006",
364
  "department": "ELECTRICAL",
365
  "status": "ISSUED",
366
- "issue_date": "2025-09-04",
367
- "expiry_date": "2026-09-04"
368
  },
369
  {
370
  "trainset_id": "TS-006",
371
  "department": "MECHANICAL",
372
  "status": "ISSUED",
373
- "issue_date": "2025-10-14",
374
- "expiry_date": "2026-10-14"
375
  },
376
  {
377
  "trainset_id": "TS-006",
378
  "department": "SAFETY",
379
- "status": "ISSUED",
380
- "issue_date": "2025-06-03",
381
- "expiry_date": "2026-06-03"
382
  },
383
  {
384
  "trainset_id": "TS-006",
385
  "department": "OPERATIONS",
386
  "status": "ISSUED",
387
- "issue_date": "2025-08-05",
388
- "expiry_date": "2026-08-05"
389
  },
390
  {
391
  "trainset_id": "TS-007",
392
  "department": "ROLLING_STOCK",
393
  "status": "ISSUED",
394
- "issue_date": "2025-08-14",
395
- "expiry_date": "2026-08-14"
396
  },
397
  {
398
  "trainset_id": "TS-007",
399
  "department": "ELECTRICAL",
400
  "status": "ISSUED",
401
- "issue_date": "2025-10-21",
402
- "expiry_date": "2026-10-21"
403
  },
404
  {
405
  "trainset_id": "TS-007",
406
  "department": "MECHANICAL",
407
  "status": "ISSUED",
408
- "issue_date": "2025-09-20",
409
- "expiry_date": "2026-09-20"
410
  },
411
  {
412
  "trainset_id": "TS-007",
413
  "department": "SAFETY",
414
  "status": "ISSUED",
415
- "issue_date": "2025-08-11",
416
- "expiry_date": "2026-08-11"
417
  },
418
  {
419
  "trainset_id": "TS-007",
420
  "department": "OPERATIONS",
421
  "status": "ISSUED",
422
- "issue_date": "2025-06-02",
423
- "expiry_date": "2026-06-02"
424
  },
425
  {
426
  "trainset_id": "TS-008",
427
  "department": "ROLLING_STOCK",
428
  "status": "ISSUED",
429
- "issue_date": "2025-08-12",
430
- "expiry_date": "2026-08-12"
431
  },
432
  {
433
  "trainset_id": "TS-008",
434
  "department": "ELECTRICAL",
435
  "status": "ISSUED",
436
- "issue_date": "2025-07-16",
437
- "expiry_date": "2026-07-16"
438
  },
439
  {
440
  "trainset_id": "TS-008",
441
  "department": "MECHANICAL",
442
  "status": "ISSUED",
443
- "issue_date": "2025-10-24",
444
- "expiry_date": "2026-10-24"
445
  },
446
  {
447
  "trainset_id": "TS-008",
448
  "department": "SAFETY",
449
- "status": "PENDING",
450
- "issue_date": "2025-08-22",
451
- "expiry_date": "2026-08-22"
452
  },
453
  {
454
  "trainset_id": "TS-008",
455
  "department": "OPERATIONS",
456
  "status": "ISSUED",
457
- "issue_date": "2025-07-22",
458
- "expiry_date": "2026-07-22"
459
  },
460
  {
461
  "trainset_id": "TS-009",
462
  "department": "ROLLING_STOCK",
463
  "status": "ISSUED",
464
- "issue_date": "2025-09-27",
465
- "expiry_date": "2026-09-27"
466
  },
467
  {
468
  "trainset_id": "TS-009",
469
  "department": "ELECTRICAL",
470
  "status": "ISSUED",
471
- "issue_date": "2025-10-13",
472
- "expiry_date": "2026-10-13"
473
  },
474
  {
475
  "trainset_id": "TS-009",
476
  "department": "MECHANICAL",
477
  "status": "ISSUED",
478
- "issue_date": "2025-10-18",
479
- "expiry_date": "2026-10-18"
480
  },
481
  {
482
  "trainset_id": "TS-009",
483
  "department": "SAFETY",
484
  "status": "ISSUED",
485
- "issue_date": "2025-07-08",
486
- "expiry_date": "2026-07-08"
487
  },
488
  {
489
  "trainset_id": "TS-009",
490
  "department": "OPERATIONS",
491
- "status": "ISSUED",
492
- "issue_date": "2025-09-11",
493
- "expiry_date": "2026-09-11"
494
  },
495
  {
496
  "trainset_id": "TS-010",
497
  "department": "ROLLING_STOCK",
498
  "status": "ISSUED",
499
- "issue_date": "2025-10-09",
500
- "expiry_date": "2026-10-09"
501
  },
502
  {
503
  "trainset_id": "TS-010",
504
  "department": "ELECTRICAL",
505
  "status": "ISSUED",
506
- "issue_date": "2025-07-11",
507
- "expiry_date": "2026-07-11"
508
  },
509
  {
510
  "trainset_id": "TS-010",
511
  "department": "MECHANICAL",
512
  "status": "ISSUED",
513
- "issue_date": "2025-10-29",
514
- "expiry_date": "2026-10-29"
515
  },
516
  {
517
  "trainset_id": "TS-010",
518
  "department": "SAFETY",
519
  "status": "ISSUED",
520
- "issue_date": "2025-09-13",
521
- "expiry_date": "2026-09-13"
522
  },
523
  {
524
  "trainset_id": "TS-010",
525
  "department": "OPERATIONS",
526
  "status": "ISSUED",
527
- "issue_date": "2025-07-16",
528
- "expiry_date": "2026-07-16"
529
  },
530
  {
531
  "trainset_id": "TS-011",
532
  "department": "ROLLING_STOCK",
533
  "status": "ISSUED",
534
- "issue_date": "2025-08-27",
535
- "expiry_date": "2026-08-27"
536
  },
537
  {
538
  "trainset_id": "TS-011",
539
  "department": "ELECTRICAL",
540
  "status": "ISSUED",
541
- "issue_date": "2025-07-15",
542
- "expiry_date": "2026-07-15"
543
  },
544
  {
545
  "trainset_id": "TS-011",
546
  "department": "MECHANICAL",
547
  "status": "ISSUED",
548
- "issue_date": "2025-09-28",
549
- "expiry_date": "2026-09-28"
550
  },
551
  {
552
  "trainset_id": "TS-011",
553
  "department": "SAFETY",
554
  "status": "ISSUED",
555
- "issue_date": "2025-09-16",
556
- "expiry_date": "2026-09-16"
557
  },
558
  {
559
  "trainset_id": "TS-011",
560
  "department": "OPERATIONS",
561
  "status": "ISSUED",
562
- "issue_date": "2025-09-30",
563
- "expiry_date": "2026-09-30"
564
  },
565
  {
566
  "trainset_id": "TS-012",
567
  "department": "ROLLING_STOCK",
568
  "status": "ISSUED",
569
- "issue_date": "2025-07-21",
570
- "expiry_date": "2026-07-21"
571
  },
572
  {
573
  "trainset_id": "TS-012",
574
  "department": "ELECTRICAL",
575
  "status": "ISSUED",
576
- "issue_date": "2025-07-30",
577
- "expiry_date": "2026-07-30"
578
  },
579
  {
580
  "trainset_id": "TS-012",
581
  "department": "MECHANICAL",
582
- "status": "ISSUED",
583
- "issue_date": "2025-06-25",
584
- "expiry_date": "2026-06-25"
585
  },
586
  {
587
  "trainset_id": "TS-012",
588
  "department": "SAFETY",
589
  "status": "ISSUED",
590
- "issue_date": "2025-09-15",
591
- "expiry_date": "2026-09-15"
592
  },
593
  {
594
  "trainset_id": "TS-012",
595
  "department": "OPERATIONS",
596
- "status": "ISSUED",
597
- "issue_date": "2025-10-20",
598
- "expiry_date": "2026-10-20"
599
  },
600
  {
601
  "trainset_id": "TS-013",
602
  "department": "ROLLING_STOCK",
603
  "status": "ISSUED",
604
- "issue_date": "2025-09-12",
605
- "expiry_date": "2026-09-12"
606
  },
607
  {
608
  "trainset_id": "TS-013",
609
  "department": "ELECTRICAL",
610
  "status": "ISSUED",
611
- "issue_date": "2025-07-03",
612
- "expiry_date": "2026-07-03"
613
  },
614
  {
615
  "trainset_id": "TS-013",
616
  "department": "MECHANICAL",
617
  "status": "ISSUED",
618
- "issue_date": "2025-10-09",
619
- "expiry_date": "2026-10-09"
620
  },
621
  {
622
  "trainset_id": "TS-013",
623
  "department": "SAFETY",
624
  "status": "ISSUED",
625
- "issue_date": "2025-10-03",
626
- "expiry_date": "2026-10-03"
627
  },
628
  {
629
  "trainset_id": "TS-013",
630
  "department": "OPERATIONS",
631
  "status": "ISSUED",
632
- "issue_date": "2025-06-15",
633
- "expiry_date": "2026-06-15"
634
  },
635
  {
636
  "trainset_id": "TS-014",
637
  "department": "ROLLING_STOCK",
638
  "status": "ISSUED",
639
- "issue_date": "2025-06-29",
640
- "expiry_date": "2026-06-29"
641
  },
642
  {
643
  "trainset_id": "TS-014",
644
  "department": "ELECTRICAL",
645
  "status": "ISSUED",
646
- "issue_date": "2025-06-30",
647
- "expiry_date": "2026-06-30"
648
  },
649
  {
650
  "trainset_id": "TS-014",
651
  "department": "MECHANICAL",
652
  "status": "ISSUED",
653
- "issue_date": "2025-08-03",
654
- "expiry_date": "2026-08-03"
655
  },
656
  {
657
  "trainset_id": "TS-014",
658
  "department": "SAFETY",
659
  "status": "ISSUED",
660
- "issue_date": "2025-06-11",
661
- "expiry_date": "2026-06-11"
662
  },
663
  {
664
  "trainset_id": "TS-014",
665
  "department": "OPERATIONS",
666
  "status": "ISSUED",
667
- "issue_date": "2025-09-19",
668
- "expiry_date": "2026-09-19"
669
  },
670
  {
671
  "trainset_id": "TS-015",
672
  "department": "ROLLING_STOCK",
673
  "status": "ISSUED",
674
- "issue_date": "2025-09-17",
675
- "expiry_date": "2026-09-17"
676
  },
677
  {
678
  "trainset_id": "TS-015",
679
  "department": "ELECTRICAL",
680
  "status": "ISSUED",
681
- "issue_date": "2025-09-07",
682
- "expiry_date": "2026-09-07"
683
  },
684
  {
685
  "trainset_id": "TS-015",
686
  "department": "MECHANICAL",
687
- "status": "ISSUED",
688
- "issue_date": "2025-07-12",
689
- "expiry_date": "2026-07-12"
690
  },
691
  {
692
  "trainset_id": "TS-015",
693
  "department": "SAFETY",
694
  "status": "ISSUED",
695
- "issue_date": "2025-07-06",
696
- "expiry_date": "2026-07-06"
697
  },
698
  {
699
  "trainset_id": "TS-015",
700
  "department": "OPERATIONS",
701
  "status": "ISSUED",
702
- "issue_date": "2025-07-22",
703
- "expiry_date": "2026-07-22"
704
  },
705
  {
706
  "trainset_id": "TS-016",
707
  "department": "ROLLING_STOCK",
708
  "status": "ISSUED",
709
- "issue_date": "2025-10-16",
710
- "expiry_date": "2026-10-16"
711
  },
712
  {
713
  "trainset_id": "TS-016",
714
  "department": "ELECTRICAL",
715
  "status": "ISSUED",
716
- "issue_date": "2025-08-23",
717
- "expiry_date": "2026-08-23"
718
  },
719
  {
720
  "trainset_id": "TS-016",
721
  "department": "MECHANICAL",
722
  "status": "ISSUED",
723
- "issue_date": "2025-10-03",
724
- "expiry_date": "2026-10-03"
725
  },
726
  {
727
  "trainset_id": "TS-016",
728
  "department": "SAFETY",
729
  "status": "ISSUED",
730
- "issue_date": "2025-10-27",
731
- "expiry_date": "2026-10-27"
732
  },
733
  {
734
  "trainset_id": "TS-016",
735
  "department": "OPERATIONS",
736
  "status": "ISSUED",
737
- "issue_date": "2025-06-11",
738
- "expiry_date": "2026-06-11"
739
  },
740
  {
741
  "trainset_id": "TS-017",
742
  "department": "ROLLING_STOCK",
743
- "status": "ISSUED",
744
- "issue_date": "2025-08-20",
745
- "expiry_date": "2026-08-20"
746
  },
747
  {
748
  "trainset_id": "TS-017",
749
  "department": "ELECTRICAL",
750
- "status": "ISSUED",
751
- "issue_date": "2025-08-16",
752
- "expiry_date": "2026-08-16"
753
  },
754
  {
755
  "trainset_id": "TS-017",
756
  "department": "MECHANICAL",
757
  "status": "ISSUED",
758
- "issue_date": "2025-08-15",
759
- "expiry_date": "2026-08-15"
760
  },
761
  {
762
  "trainset_id": "TS-017",
763
  "department": "SAFETY",
764
  "status": "ISSUED",
765
- "issue_date": "2025-08-05",
766
- "expiry_date": "2026-08-05"
767
  },
768
  {
769
  "trainset_id": "TS-017",
770
  "department": "OPERATIONS",
771
  "status": "ISSUED",
772
- "issue_date": "2025-10-24",
773
- "expiry_date": "2026-10-24"
774
  },
775
  {
776
  "trainset_id": "TS-018",
777
  "department": "ROLLING_STOCK",
778
  "status": "ISSUED",
779
- "issue_date": "2025-08-17",
780
- "expiry_date": "2026-08-17"
781
  },
782
  {
783
  "trainset_id": "TS-018",
784
  "department": "ELECTRICAL",
785
  "status": "ISSUED",
786
- "issue_date": "2025-09-27",
787
- "expiry_date": "2026-09-27"
788
  },
789
  {
790
  "trainset_id": "TS-018",
791
  "department": "MECHANICAL",
792
- "status": "ISSUED",
793
- "issue_date": "2025-08-31",
794
- "expiry_date": "2026-08-31"
795
  },
796
  {
797
  "trainset_id": "TS-018",
798
  "department": "SAFETY",
799
  "status": "ISSUED",
800
- "issue_date": "2025-09-26",
801
- "expiry_date": "2026-09-26"
802
- },
803
  {
804
  "trainset_id": "TS-018",
805
  "department": "OPERATIONS",
806
- "status": "ISSUED",
807
- "issue_date": "2025-06-02",
808
- "expiry_date": "2026-06-02"
809
  },
810
  {
811
  "trainset_id": "TS-019",
812
  "department": "ROLLING_STOCK",
813
  "status": "ISSUED",
814
- "issue_date": "2025-10-23",
815
- "expiry_date": "2026-10-23"
816
  },
817
  {
818
  "trainset_id": "TS-019",
819
  "department": "ELECTRICAL",
820
  "status": "ISSUED",
821
- "issue_date": "2025-06-06",
822
- "expiry_date": "2026-06-06"
823
  },
824
  {
825
  "trainset_id": "TS-019",
826
  "department": "MECHANICAL",
827
  "status": "ISSUED",
828
- "issue_date": "2025-10-04",
829
- "expiry_date": "2026-10-04"
830
  },
831
  {
832
  "trainset_id": "TS-019",
833
  "department": "SAFETY",
834
  "status": "ISSUED",
835
- "issue_date": "2025-08-08",
836
- "expiry_date": "2026-08-08"
837
  },
838
  {
839
  "trainset_id": "TS-019",
840
  "department": "OPERATIONS",
841
- "status": "PENDING",
842
- "issue_date": "2025-10-25",
843
- "expiry_date": "2026-10-25"
844
  },
845
  {
846
  "trainset_id": "TS-020",
847
  "department": "ROLLING_STOCK",
848
  "status": "ISSUED",
849
- "issue_date": "2025-09-30",
850
- "expiry_date": "2026-09-30"
851
  },
852
  {
853
  "trainset_id": "TS-020",
854
  "department": "ELECTRICAL",
855
  "status": "ISSUED",
856
- "issue_date": "2025-08-20",
857
- "expiry_date": "2026-08-20"
858
  },
859
  {
860
  "trainset_id": "TS-020",
861
  "department": "MECHANICAL",
862
- "status": "ISSUED",
863
- "issue_date": "2025-07-17",
864
- "expiry_date": "2026-07-17"
865
  },
866
  {
867
  "trainset_id": "TS-020",
868
  "department": "SAFETY",
869
  "status": "ISSUED",
870
- "issue_date": "2025-06-03",
871
- "expiry_date": "2026-06-03"
872
  },
873
  {
874
  "trainset_id": "TS-020",
875
  "department": "OPERATIONS",
876
  "status": "ISSUED",
877
- "issue_date": "2025-09-05",
878
- "expiry_date": "2026-09-05"
879
  },
880
  {
881
  "trainset_id": "TS-021",
882
  "department": "ROLLING_STOCK",
883
  "status": "ISSUED",
884
- "issue_date": "2025-10-17",
885
- "expiry_date": "2026-10-17"
886
  },
887
  {
888
  "trainset_id": "TS-021",
889
  "department": "ELECTRICAL",
890
  "status": "ISSUED",
891
- "issue_date": "2025-06-13",
892
- "expiry_date": "2026-06-13"
893
  },
894
  {
895
  "trainset_id": "TS-021",
896
  "department": "MECHANICAL",
897
  "status": "ISSUED",
898
- "issue_date": "2025-07-19",
899
- "expiry_date": "2026-07-19"
900
  },
901
  {
902
  "trainset_id": "TS-021",
903
  "department": "SAFETY",
904
  "status": "ISSUED",
905
- "issue_date": "2025-10-04",
906
- "expiry_date": "2026-10-04"
907
  },
908
  {
909
  "trainset_id": "TS-021",
910
  "department": "OPERATIONS",
911
- "status": "ISSUED",
912
- "issue_date": "2025-10-15",
913
- "expiry_date": "2026-10-15"
914
  },
915
  {
916
  "trainset_id": "TS-022",
917
  "department": "ROLLING_STOCK",
918
- "status": "ISSUED",
919
- "issue_date": "2025-09-24",
920
- "expiry_date": "2026-09-24"
921
  },
922
  {
923
  "trainset_id": "TS-022",
924
  "department": "ELECTRICAL",
925
  "status": "ISSUED",
926
- "issue_date": "2025-06-11",
927
- "expiry_date": "2026-06-11"
928
  },
929
  {
930
  "trainset_id": "TS-022",
931
  "department": "MECHANICAL",
932
  "status": "ISSUED",
933
- "issue_date": "2025-06-30",
934
- "expiry_date": "2026-06-30"
935
  },
936
  {
937
  "trainset_id": "TS-022",
938
  "department": "SAFETY",
939
  "status": "ISSUED",
940
- "issue_date": "2025-06-03",
941
- "expiry_date": "2026-06-03"
942
  },
943
  {
944
  "trainset_id": "TS-022",
945
  "department": "OPERATIONS",
946
  "status": "ISSUED",
947
- "issue_date": "2025-07-16",
948
- "expiry_date": "2026-07-16"
949
  },
950
  {
951
  "trainset_id": "TS-023",
952
  "department": "ROLLING_STOCK",
953
  "status": "ISSUED",
954
- "issue_date": "2025-07-09",
955
- "expiry_date": "2026-07-09"
956
  },
957
  {
958
  "trainset_id": "TS-023",
959
  "department": "ELECTRICAL",
960
  "status": "ISSUED",
961
- "issue_date": "2025-09-01",
962
- "expiry_date": "2026-09-01"
963
  },
964
  {
965
  "trainset_id": "TS-023",
966
  "department": "MECHANICAL",
967
- "status": "ISSUED",
968
- "issue_date": "2025-06-25",
969
- "expiry_date": "2026-06-25"
970
  },
971
  {
972
  "trainset_id": "TS-023",
973
  "department": "SAFETY",
974
  "status": "ISSUED",
975
- "issue_date": "2025-07-25",
976
- "expiry_date": "2026-07-25"
977
  },
978
  {
979
  "trainset_id": "TS-023",
980
  "department": "OPERATIONS",
981
- "status": "ISSUED",
982
- "issue_date": "2025-06-28",
983
- "expiry_date": "2026-06-28"
984
  },
985
  {
986
  "trainset_id": "TS-024",
987
  "department": "ROLLING_STOCK",
988
  "status": "ISSUED",
989
- "issue_date": "2025-08-17",
990
- "expiry_date": "2026-08-17"
991
  },
992
  {
993
  "trainset_id": "TS-024",
994
  "department": "ELECTRICAL",
995
  "status": "ISSUED",
996
- "issue_date": "2025-08-12",
997
- "expiry_date": "2026-08-12"
998
  },
999
  {
1000
  "trainset_id": "TS-024",
1001
  "department": "MECHANICAL",
1002
  "status": "ISSUED",
1003
- "issue_date": "2025-08-13",
1004
- "expiry_date": "2026-08-13"
1005
  },
1006
  {
1007
  "trainset_id": "TS-024",
1008
  "department": "SAFETY",
1009
  "status": "ISSUED",
1010
- "issue_date": "2025-10-16",
1011
- "expiry_date": "2026-10-16"
1012
  },
1013
  {
1014
  "trainset_id": "TS-024",
1015
  "department": "OPERATIONS",
1016
  "status": "ISSUED",
1017
- "issue_date": "2025-08-18",
1018
- "expiry_date": "2026-08-18"
1019
  },
1020
  {
1021
  "trainset_id": "TS-025",
1022
  "department": "ROLLING_STOCK",
1023
  "status": "ISSUED",
1024
- "issue_date": "2025-06-03",
1025
- "expiry_date": "2026-06-03"
1026
  },
1027
  {
1028
  "trainset_id": "TS-025",
1029
  "department": "ELECTRICAL",
1030
  "status": "ISSUED",
1031
- "issue_date": "2025-08-24",
1032
- "expiry_date": "2026-08-24"
1033
  },
1034
  {
1035
  "trainset_id": "TS-025",
1036
  "department": "MECHANICAL",
1037
  "status": "ISSUED",
1038
- "issue_date": "2025-10-29",
1039
- "expiry_date": "2026-10-29"
1040
  },
1041
  {
1042
  "trainset_id": "TS-025",
1043
  "department": "SAFETY",
1044
  "status": "ISSUED",
1045
- "issue_date": "2025-10-03",
1046
- "expiry_date": "2026-10-03"
1047
  },
1048
  {
1049
  "trainset_id": "TS-025",
1050
  "department": "OPERATIONS",
1051
  "status": "ISSUED",
1052
- "issue_date": "2025-10-18",
1053
- "expiry_date": "2026-10-18"
1054
  }
1055
  ],
1056
  "component_health": [
1057
  {
1058
  "trainset_id": "TS-001",
1059
  "component": "Traction_Motor",
1060
- "status": "GOOD",
1061
- "wear_level": 22.0,
1062
- "last_inspection": "2025-11-25"
1063
  },
1064
  {
1065
  "trainset_id": "TS-001",
1066
  "component": "Brake_System",
1067
  "status": "GOOD",
1068
- "wear_level": 49.7,
1069
- "last_inspection": "2025-11-04"
1070
  },
1071
  {
1072
  "trainset_id": "TS-001",
1073
  "component": "HVAC",
1074
  "status": "GOOD",
1075
- "wear_level": 28.6,
1076
- "last_inspection": "2025-11-19"
1077
  },
1078
  {
1079
  "trainset_id": "TS-001",
1080
  "component": "Door_System",
1081
- "status": "GOOD",
1082
- "wear_level": 25.3,
1083
- "last_inspection": "2025-11-06"
1084
  },
1085
  {
1086
  "trainset_id": "TS-001",
1087
  "component": "Pantograph",
1088
- "status": "EXCELLENT",
1089
- "wear_level": 20.3,
1090
- "last_inspection": "2025-11-08"
1091
  },
1092
  {
1093
  "trainset_id": "TS-001",
1094
  "component": "Bogie",
1095
- "status": "EXCELLENT",
1096
- "wear_level": 20.0,
1097
- "last_inspection": "2025-11-07"
1098
  },
1099
  {
1100
  "trainset_id": "TS-001",
1101
  "component": "Coupler",
1102
  "status": "GOOD",
1103
- "wear_level": 16.8,
1104
- "last_inspection": "2025-11-03"
1105
  },
1106
  {
1107
  "trainset_id": "TS-001",
1108
  "component": "Battery",
1109
- "status": "EXCELLENT",
1110
- "wear_level": 29.3,
1111
- "last_inspection": "2025-11-08"
1112
  },
1113
  {
1114
  "trainset_id": "TS-002",
1115
  "component": "Traction_Motor",
1116
- "status": "FAIR",
1117
- "wear_level": 78.5,
1118
- "last_inspection": "2025-11-26"
1119
  },
1120
  {
1121
  "trainset_id": "TS-002",
1122
  "component": "Brake_System",
1123
- "status": "GOOD",
1124
- "wear_level": 27.7,
1125
- "last_inspection": "2025-11-02"
1126
  },
1127
  {
1128
  "trainset_id": "TS-002",
1129
  "component": "HVAC",
1130
  "status": "GOOD",
1131
- "wear_level": 46.8,
1132
- "last_inspection": "2025-11-04"
1133
  },
1134
  {
1135
  "trainset_id": "TS-002",
1136
  "component": "Door_System",
1137
- "status": "EXCELLENT",
1138
- "wear_level": 29.5,
1139
- "last_inspection": "2025-11-18"
1140
  },
1141
  {
1142
  "trainset_id": "TS-002",
1143
  "component": "Pantograph",
1144
  "status": "GOOD",
1145
- "wear_level": 29.6,
1146
- "last_inspection": "2025-11-08"
1147
  },
1148
  {
1149
  "trainset_id": "TS-002",
1150
  "component": "Bogie",
1151
- "status": "GOOD",
1152
- "wear_level": 14.6,
1153
- "last_inspection": "2025-11-11"
1154
  },
1155
  {
1156
  "trainset_id": "TS-002",
1157
  "component": "Coupler",
1158
- "status": "GOOD",
1159
- "wear_level": 49.7,
1160
- "last_inspection": "2025-11-17"
1161
  },
1162
  {
1163
  "trainset_id": "TS-002",
1164
  "component": "Battery",
1165
- "status": "EXCELLENT",
1166
- "wear_level": 30.4,
1167
- "last_inspection": "2025-11-06"
1168
  },
1169
  {
1170
  "trainset_id": "TS-003",
1171
  "component": "Traction_Motor",
1172
- "status": "GOOD",
1173
- "wear_level": 23.9,
1174
- "last_inspection": "2025-11-04"
1175
  },
1176
  {
1177
  "trainset_id": "TS-003",
1178
  "component": "Brake_System",
1179
- "status": "CRITICAL",
1180
- "wear_level": 70.9,
1181
- "last_inspection": "2025-11-25"
1182
  },
1183
  {
1184
  "trainset_id": "TS-003",
1185
  "component": "HVAC",
1186
  "status": "POOR",
1187
- "wear_level": 69.2,
1188
  "last_inspection": "2025-11-07"
1189
  },
1190
  {
1191
  "trainset_id": "TS-003",
1192
  "component": "Door_System",
1193
  "status": "EXCELLENT",
1194
- "wear_level": 19.6,
1195
- "last_inspection": "2025-11-12"
1196
  },
1197
  {
1198
  "trainset_id": "TS-003",
1199
  "component": "Pantograph",
1200
- "status": "GOOD",
1201
- "wear_level": 42.3,
1202
- "last_inspection": "2025-11-14"
1203
  },
1204
  {
1205
  "trainset_id": "TS-003",
1206
  "component": "Bogie",
1207
- "status": "GOOD",
1208
- "wear_level": 40.0,
1209
- "last_inspection": "2025-10-30"
1210
  },
1211
  {
1212
  "trainset_id": "TS-003",
1213
  "component": "Coupler",
1214
- "status": "GOOD",
1215
- "wear_level": 49.7,
1216
- "last_inspection": "2025-11-09"
1217
  },
1218
  {
1219
  "trainset_id": "TS-003",
1220
  "component": "Battery",
1221
- "status": "FAIR",
1222
- "wear_level": 73.1,
1223
- "last_inspection": "2025-10-31"
1224
  },
1225
  {
1226
  "trainset_id": "TS-004",
1227
  "component": "Traction_Motor",
1228
- "status": "EXCELLENT",
1229
- "wear_level": 14.2,
1230
- "last_inspection": "2025-11-21"
1231
  },
1232
  {
1233
  "trainset_id": "TS-004",
1234
  "component": "Brake_System",
1235
  "status": "GOOD",
1236
- "wear_level": 33.6,
1237
- "last_inspection": "2025-11-19"
1238
  },
1239
  {
1240
  "trainset_id": "TS-004",
1241
  "component": "HVAC",
1242
- "status": "POOR",
1243
- "wear_level": 66.2,
1244
- "last_inspection": "2025-11-27"
1245
  },
1246
  {
1247
  "trainset_id": "TS-004",
1248
  "component": "Door_System",
1249
- "status": "FAIR",
1250
- "wear_level": 73.4,
1251
- "last_inspection": "2025-11-25"
1252
  },
1253
  {
1254
  "trainset_id": "TS-004",
1255
  "component": "Pantograph",
1256
  "status": "EXCELLENT",
1257
- "wear_level": 21.8,
1258
  "last_inspection": "2025-11-26"
1259
  },
1260
  {
1261
  "trainset_id": "TS-004",
1262
  "component": "Bogie",
1263
  "status": "GOOD",
1264
- "wear_level": 34.4,
1265
- "last_inspection": "2025-11-05"
1266
  },
1267
  {
1268
  "trainset_id": "TS-004",
1269
  "component": "Coupler",
1270
  "status": "GOOD",
1271
- "wear_level": 30.8,
1272
- "last_inspection": "2025-11-01"
1273
  },
1274
  {
1275
  "trainset_id": "TS-004",
1276
  "component": "Battery",
1277
  "status": "GOOD",
1278
- "wear_level": 11.5,
1279
- "last_inspection": "2025-11-10"
1280
  },
1281
  {
1282
  "trainset_id": "TS-005",
1283
  "component": "Traction_Motor",
1284
  "status": "EXCELLENT",
1285
- "wear_level": 43.0,
1286
- "last_inspection": "2025-11-19"
1287
  },
1288
  {
1289
  "trainset_id": "TS-005",
1290
  "component": "Brake_System",
1291
- "status": "GOOD",
1292
- "wear_level": 49.4,
1293
- "last_inspection": "2025-11-14"
1294
  },
1295
  {
1296
  "trainset_id": "TS-005",
1297
  "component": "HVAC",
1298
- "status": "EXCELLENT",
1299
- "wear_level": 19.6,
1300
- "last_inspection": "2025-11-02"
1301
  },
1302
  {
1303
  "trainset_id": "TS-005",
1304
  "component": "Door_System",
1305
  "status": "CRITICAL",
1306
- "wear_level": 72.3,
1307
- "last_inspection": "2025-11-02"
1308
  },
1309
  {
1310
  "trainset_id": "TS-005",
1311
  "component": "Pantograph",
1312
  "status": "GOOD",
1313
- "wear_level": 40.3,
1314
- "last_inspection": "2025-11-08"
1315
  },
1316
  {
1317
  "trainset_id": "TS-005",
1318
  "component": "Bogie",
1319
  "status": "EXCELLENT",
1320
- "wear_level": 28.8,
1321
- "last_inspection": "2025-11-22"
1322
  },
1323
  {
1324
  "trainset_id": "TS-005",
1325
  "component": "Coupler",
1326
- "status": "GOOD",
1327
- "wear_level": 48.0,
1328
- "last_inspection": "2025-11-23"
1329
  },
1330
  {
1331
  "trainset_id": "TS-005",
1332
  "component": "Battery",
1333
- "status": "FAIR",
1334
- "wear_level": 62.2,
1335
- "last_inspection": "2025-11-07"
1336
  },
1337
  {
1338
  "trainset_id": "TS-006",
1339
  "component": "Traction_Motor",
1340
  "status": "EXCELLENT",
1341
- "wear_level": 27.4,
1342
- "last_inspection": "2025-11-26"
1343
  },
1344
  {
1345
  "trainset_id": "TS-006",
1346
  "component": "Brake_System",
1347
- "status": "EXCELLENT",
1348
- "wear_level": 35.7,
1349
- "last_inspection": "2025-11-04"
1350
  },
1351
  {
1352
  "trainset_id": "TS-006",
1353
  "component": "HVAC",
1354
- "status": "EXCELLENT",
1355
- "wear_level": 15.2,
1356
- "last_inspection": "2025-11-21"
1357
  },
1358
  {
1359
  "trainset_id": "TS-006",
1360
  "component": "Door_System",
1361
- "status": "CRITICAL",
1362
- "wear_level": 84.3,
1363
- "last_inspection": "2025-11-17"
1364
  },
1365
  {
1366
  "trainset_id": "TS-006",
1367
  "component": "Pantograph",
1368
  "status": "EXCELLENT",
1369
- "wear_level": 15.6,
1370
- "last_inspection": "2025-11-27"
1371
  },
1372
  {
1373
  "trainset_id": "TS-006",
1374
  "component": "Bogie",
1375
  "status": "GOOD",
1376
- "wear_level": 12.1,
1377
  "last_inspection": "2025-11-15"
1378
  },
1379
  {
1380
  "trainset_id": "TS-006",
1381
  "component": "Coupler",
1382
  "status": "GOOD",
1383
- "wear_level": 34.3,
1384
- "last_inspection": "2025-11-10"
1385
  },
1386
  {
1387
  "trainset_id": "TS-006",
1388
  "component": "Battery",
1389
- "status": "GOOD",
1390
- "wear_level": 21.5,
1391
- "last_inspection": "2025-11-11"
1392
  },
1393
  {
1394
  "trainset_id": "TS-007",
1395
  "component": "Traction_Motor",
1396
  "status": "GOOD",
1397
- "wear_level": 48.4,
1398
- "last_inspection": "2025-11-27"
1399
  },
1400
  {
1401
  "trainset_id": "TS-007",
1402
  "component": "Brake_System",
1403
- "status": "EXCELLENT",
1404
- "wear_level": 29.3,
1405
- "last_inspection": "2025-11-19"
1406
  },
1407
  {
1408
  "trainset_id": "TS-007",
1409
  "component": "HVAC",
1410
- "status": "FAIR",
1411
- "wear_level": 91.8,
1412
- "last_inspection": "2025-11-15"
1413
  },
1414
  {
1415
  "trainset_id": "TS-007",
1416
  "component": "Door_System",
1417
- "status": "GOOD",
1418
- "wear_level": 15.6,
1419
- "last_inspection": "2025-11-17"
1420
  },
1421
  {
1422
  "trainset_id": "TS-007",
1423
  "component": "Pantograph",
1424
- "status": "EXCELLENT",
1425
- "wear_level": 13.6,
1426
- "last_inspection": "2025-11-26"
1427
  },
1428
  {
1429
  "trainset_id": "TS-007",
1430
  "component": "Bogie",
1431
- "status": "EXCELLENT",
1432
- "wear_level": 22.7,
1433
- "last_inspection": "2025-11-17"
1434
  },
1435
  {
1436
  "trainset_id": "TS-007",
1437
  "component": "Coupler",
1438
  "status": "EXCELLENT",
1439
- "wear_level": 32.4,
1440
- "last_inspection": "2025-11-27"
1441
  },
1442
  {
1443
  "trainset_id": "TS-007",
1444
  "component": "Battery",
1445
- "status": "GOOD",
1446
- "wear_level": 13.5,
1447
- "last_inspection": "2025-11-12"
1448
  },
1449
  {
1450
  "trainset_id": "TS-008",
1451
  "component": "Traction_Motor",
1452
- "status": "GOOD",
1453
- "wear_level": 27.2,
1454
- "last_inspection": "2025-11-12"
1455
  },
1456
  {
1457
  "trainset_id": "TS-008",
1458
  "component": "Brake_System",
1459
- "status": "FAIR",
1460
- "wear_level": 61.2,
1461
- "last_inspection": "2025-11-09"
1462
  },
1463
  {
1464
  "trainset_id": "TS-008",
1465
  "component": "HVAC",
1466
  "status": "EXCELLENT",
1467
- "wear_level": 40.0,
1468
- "last_inspection": "2025-11-16"
1469
  },
1470
  {
1471
  "trainset_id": "TS-008",
1472
  "component": "Door_System",
1473
- "status": "EXCELLENT",
1474
- "wear_level": 17.5,
1475
- "last_inspection": "2025-11-24"
1476
  },
1477
  {
1478
  "trainset_id": "TS-008",
1479
  "component": "Pantograph",
1480
  "status": "EXCELLENT",
1481
- "wear_level": 42.5,
1482
- "last_inspection": "2025-11-10"
1483
  },
1484
  {
1485
  "trainset_id": "TS-008",
1486
  "component": "Bogie",
1487
- "status": "POOR",
1488
- "wear_level": 86.3,
1489
- "last_inspection": "2025-11-15"
1490
  },
1491
  {
1492
  "trainset_id": "TS-008",
1493
  "component": "Coupler",
1494
- "status": "GOOD",
1495
- "wear_level": 36.2,
1496
- "last_inspection": "2025-11-19"
1497
  },
1498
  {
1499
  "trainset_id": "TS-008",
1500
  "component": "Battery",
1501
- "status": "GOOD",
1502
- "wear_level": 29.9,
1503
- "last_inspection": "2025-11-16"
1504
  },
1505
  {
1506
  "trainset_id": "TS-009",
1507
  "component": "Traction_Motor",
1508
  "status": "EXCELLENT",
1509
- "wear_level": 13.7,
1510
- "last_inspection": "2025-11-24"
1511
  },
1512
  {
1513
  "trainset_id": "TS-009",
1514
  "component": "Brake_System",
1515
  "status": "GOOD",
1516
- "wear_level": 35.4,
1517
- "last_inspection": "2025-11-10"
1518
  },
1519
  {
1520
  "trainset_id": "TS-009",
1521
  "component": "HVAC",
1522
  "status": "GOOD",
1523
- "wear_level": 10.9,
1524
- "last_inspection": "2025-11-08"
1525
  },
1526
  {
1527
  "trainset_id": "TS-009",
1528
  "component": "Door_System",
1529
- "status": "GOOD",
1530
- "wear_level": 36.4,
1531
- "last_inspection": "2025-11-14"
1532
  },
1533
  {
1534
  "trainset_id": "TS-009",
1535
  "component": "Pantograph",
1536
- "status": "EXCELLENT",
1537
- "wear_level": 26.4,
1538
- "last_inspection": "2025-11-16"
1539
  },
1540
  {
1541
  "trainset_id": "TS-009",
1542
  "component": "Bogie",
1543
- "status": "EXCELLENT",
1544
- "wear_level": 18.8,
1545
- "last_inspection": "2025-11-22"
1546
  },
1547
  {
1548
  "trainset_id": "TS-009",
1549
  "component": "Coupler",
1550
- "status": "GOOD",
1551
- "wear_level": 38.7,
1552
- "last_inspection": "2025-11-09"
1553
  },
1554
  {
1555
  "trainset_id": "TS-009",
1556
  "component": "Battery",
1557
  "status": "EXCELLENT",
1558
- "wear_level": 19.4,
1559
- "last_inspection": "2025-11-16"
1560
  },
1561
  {
1562
  "trainset_id": "TS-010",
1563
  "component": "Traction_Motor",
1564
- "status": "GOOD",
1565
- "wear_level": 46.3,
1566
- "last_inspection": "2025-11-07"
1567
  },
1568
  {
1569
  "trainset_id": "TS-010",
1570
  "component": "Brake_System",
1571
  "status": "EXCELLENT",
1572
- "wear_level": 35.9,
1573
- "last_inspection": "2025-11-12"
1574
  },
1575
  {
1576
  "trainset_id": "TS-010",
1577
  "component": "HVAC",
1578
  "status": "GOOD",
1579
- "wear_level": 46.0,
1580
- "last_inspection": "2025-11-17"
1581
  },
1582
  {
1583
  "trainset_id": "TS-010",
1584
  "component": "Door_System",
1585
- "status": "EXCELLENT",
1586
- "wear_level": 39.7,
1587
- "last_inspection": "2025-11-18"
1588
  },
1589
  {
1590
  "trainset_id": "TS-010",
1591
  "component": "Pantograph",
1592
  "status": "GOOD",
1593
- "wear_level": 12.6,
1594
- "last_inspection": "2025-11-01"
1595
  },
1596
  {
1597
  "trainset_id": "TS-010",
1598
  "component": "Bogie",
1599
  "status": "GOOD",
1600
- "wear_level": 43.8,
1601
- "last_inspection": "2025-11-11"
1602
  },
1603
  {
1604
  "trainset_id": "TS-010",
1605
  "component": "Coupler",
1606
  "status": "EXCELLENT",
1607
- "wear_level": 22.6,
1608
- "last_inspection": "2025-11-12"
1609
  },
1610
  {
1611
  "trainset_id": "TS-010",
1612
  "component": "Battery",
1613
- "status": "FAIR",
1614
- "wear_level": 86.9,
1615
- "last_inspection": "2025-11-18"
1616
  },
1617
  {
1618
  "trainset_id": "TS-011",
1619
  "component": "Traction_Motor",
1620
- "status": "EXCELLENT",
1621
  "wear_level": 41.9,
1622
- "last_inspection": "2025-11-27"
1623
  },
1624
  {
1625
  "trainset_id": "TS-011",
1626
  "component": "Brake_System",
1627
- "status": "GOOD",
1628
- "wear_level": 35.5,
1629
- "last_inspection": "2025-11-09"
1630
  },
1631
  {
1632
  "trainset_id": "TS-011",
1633
  "component": "HVAC",
1634
  "status": "EXCELLENT",
1635
- "wear_level": 37.3,
1636
- "last_inspection": "2025-11-19"
1637
  },
1638
  {
1639
  "trainset_id": "TS-011",
1640
  "component": "Door_System",
1641
- "status": "EXCELLENT",
1642
- "wear_level": 35.5,
1643
- "last_inspection": "2025-11-06"
1644
  },
1645
  {
1646
  "trainset_id": "TS-011",
1647
  "component": "Pantograph",
1648
- "status": "GOOD",
1649
- "wear_level": 10.6,
1650
- "last_inspection": "2025-11-17"
1651
  },
1652
  {
1653
  "trainset_id": "TS-011",
1654
  "component": "Bogie",
1655
- "status": "EXCELLENT",
1656
- "wear_level": 46.5,
1657
- "last_inspection": "2025-11-24"
1658
  },
1659
  {
1660
  "trainset_id": "TS-011",
1661
  "component": "Coupler",
1662
- "status": "POOR",
1663
- "wear_level": 85.2,
1664
- "last_inspection": "2025-11-15"
1665
  },
1666
  {
1667
  "trainset_id": "TS-011",
1668
  "component": "Battery",
1669
  "status": "EXCELLENT",
1670
- "wear_level": 30.2,
1671
- "last_inspection": "2025-11-04"
1672
  },
1673
  {
1674
  "trainset_id": "TS-012",
1675
  "component": "Traction_Motor",
1676
- "status": "GOOD",
1677
- "wear_level": 29.1,
1678
- "last_inspection": "2025-10-31"
1679
  },
1680
  {
1681
  "trainset_id": "TS-012",
1682
  "component": "Brake_System",
1683
  "status": "EXCELLENT",
1684
- "wear_level": 28.2,
1685
- "last_inspection": "2025-11-06"
1686
  },
1687
  {
1688
  "trainset_id": "TS-012",
1689
  "component": "HVAC",
1690
- "status": "EXCELLENT",
1691
- "wear_level": 29.5,
1692
- "last_inspection": "2025-10-31"
1693
  },
1694
  {
1695
  "trainset_id": "TS-012",
1696
  "component": "Door_System",
1697
  "status": "GOOD",
1698
- "wear_level": 17.2,
1699
- "last_inspection": "2025-11-09"
1700
  },
1701
  {
1702
  "trainset_id": "TS-012",
1703
  "component": "Pantograph",
1704
- "status": "EXCELLENT",
1705
- "wear_level": 44.8,
1706
- "last_inspection": "2025-11-01"
1707
  },
1708
  {
1709
  "trainset_id": "TS-012",
1710
  "component": "Bogie",
1711
- "status": "GOOD",
1712
- "wear_level": 18.5,
1713
- "last_inspection": "2025-11-07"
1714
  },
1715
  {
1716
  "trainset_id": "TS-012",
1717
  "component": "Coupler",
1718
- "status": "GOOD",
1719
- "wear_level": 24.7,
1720
- "last_inspection": "2025-11-28"
1721
  },
1722
  {
1723
  "trainset_id": "TS-012",
1724
  "component": "Battery",
1725
- "status": "GOOD",
1726
- "wear_level": 38.6,
1727
- "last_inspection": "2025-11-22"
1728
  },
1729
  {
1730
  "trainset_id": "TS-013",
1731
  "component": "Traction_Motor",
1732
  "status": "GOOD",
1733
- "wear_level": 32.8,
1734
- "last_inspection": "2025-11-10"
1735
  },
1736
  {
1737
  "trainset_id": "TS-013",
1738
  "component": "Brake_System",
1739
- "status": "EXCELLENT",
1740
- "wear_level": 45.9,
1741
- "last_inspection": "2025-11-21"
1742
  },
1743
  {
1744
  "trainset_id": "TS-013",
1745
  "component": "HVAC",
1746
- "status": "POOR",
1747
- "wear_level": 74.3,
1748
- "last_inspection": "2025-11-15"
1749
  },
1750
  {
1751
  "trainset_id": "TS-013",
1752
  "component": "Door_System",
1753
  "status": "EXCELLENT",
1754
- "wear_level": 33.7,
1755
- "last_inspection": "2025-11-21"
1756
  },
1757
  {
1758
  "trainset_id": "TS-013",
1759
  "component": "Pantograph",
1760
- "status": "GOOD",
1761
- "wear_level": 43.5,
1762
- "last_inspection": "2025-11-04"
1763
  },
1764
  {
1765
  "trainset_id": "TS-013",
1766
  "component": "Bogie",
1767
  "status": "EXCELLENT",
1768
- "wear_level": 13.8,
1769
- "last_inspection": "2025-11-06"
1770
  },
1771
  {
1772
  "trainset_id": "TS-013",
1773
  "component": "Coupler",
1774
  "status": "GOOD",
1775
- "wear_level": 11.7,
1776
- "last_inspection": "2025-11-16"
1777
  },
1778
  {
1779
  "trainset_id": "TS-013",
1780
  "component": "Battery",
1781
- "status": "EXCELLENT",
1782
- "wear_level": 20.6,
1783
- "last_inspection": "2025-11-17"
1784
  },
1785
  {
1786
  "trainset_id": "TS-014",
1787
  "component": "Traction_Motor",
1788
  "status": "GOOD",
1789
- "wear_level": 39.4,
1790
- "last_inspection": "2025-11-20"
1791
  },
1792
  {
1793
  "trainset_id": "TS-014",
1794
  "component": "Brake_System",
1795
- "status": "GOOD",
1796
- "wear_level": 31.4,
1797
- "last_inspection": "2025-11-11"
1798
  },
1799
  {
1800
  "trainset_id": "TS-014",
1801
  "component": "HVAC",
1802
  "status": "EXCELLENT",
1803
- "wear_level": 39.3,
1804
- "last_inspection": "2025-11-14"
1805
  },
1806
  {
1807
  "trainset_id": "TS-014",
1808
  "component": "Door_System",
1809
- "status": "CRITICAL",
1810
- "wear_level": 67.3,
1811
- "last_inspection": "2025-11-21"
1812
  },
1813
  {
1814
  "trainset_id": "TS-014",
1815
  "component": "Pantograph",
1816
- "status": "GOOD",
1817
- "wear_level": 15.7,
1818
- "last_inspection": "2025-11-06"
1819
  },
1820
  {
1821
  "trainset_id": "TS-014",
1822
  "component": "Bogie",
1823
- "status": "GOOD",
1824
- "wear_level": 16.0,
1825
- "last_inspection": "2025-11-28"
1826
  },
1827
  {
1828
  "trainset_id": "TS-014",
1829
  "component": "Coupler",
1830
- "status": "GOOD",
1831
- "wear_level": 10.7,
1832
- "last_inspection": "2025-11-12"
1833
  },
1834
  {
1835
  "trainset_id": "TS-014",
1836
  "component": "Battery",
1837
  "status": "GOOD",
1838
- "wear_level": 14.2,
1839
- "last_inspection": "2025-11-15"
1840
  },
1841
  {
1842
  "trainset_id": "TS-015",
1843
  "component": "Traction_Motor",
1844
- "status": "EXCELLENT",
1845
- "wear_level": 44.1,
1846
- "last_inspection": "2025-11-09"
1847
  },
1848
  {
1849
  "trainset_id": "TS-015",
1850
  "component": "Brake_System",
1851
  "status": "GOOD",
1852
- "wear_level": 48.7,
1853
- "last_inspection": "2025-11-06"
1854
  },
1855
  {
1856
  "trainset_id": "TS-015",
1857
  "component": "HVAC",
1858
- "status": "GOOD",
1859
- "wear_level": 42.9,
1860
- "last_inspection": "2025-11-08"
1861
  },
1862
  {
1863
  "trainset_id": "TS-015",
1864
  "component": "Door_System",
1865
  "status": "GOOD",
1866
- "wear_level": 18.0,
1867
- "last_inspection": "2025-11-11"
1868
  },
1869
  {
1870
  "trainset_id": "TS-015",
1871
  "component": "Pantograph",
1872
  "status": "EXCELLENT",
1873
- "wear_level": 24.2,
1874
- "last_inspection": "2025-11-12"
1875
  },
1876
  {
1877
  "trainset_id": "TS-015",
1878
  "component": "Bogie",
1879
- "status": "EXCELLENT",
1880
- "wear_level": 45.9,
1881
- "last_inspection": "2025-11-25"
1882
  },
1883
  {
1884
  "trainset_id": "TS-015",
1885
  "component": "Coupler",
1886
- "status": "EXCELLENT",
1887
- "wear_level": 17.7,
1888
- "last_inspection": "2025-10-31"
1889
  },
1890
  {
1891
  "trainset_id": "TS-015",
1892
  "component": "Battery",
1893
- "status": "EXCELLENT",
1894
- "wear_level": 17.4,
1895
- "last_inspection": "2025-11-08"
1896
  },
1897
  {
1898
  "trainset_id": "TS-016",
1899
  "component": "Traction_Motor",
1900
- "status": "FAIR",
1901
- "wear_level": 66.1,
1902
- "last_inspection": "2025-11-21"
1903
  },
1904
  {
1905
  "trainset_id": "TS-016",
1906
  "component": "Brake_System",
1907
  "status": "GOOD",
1908
- "wear_level": 33.7,
1909
- "last_inspection": "2025-11-19"
1910
  },
1911
  {
1912
  "trainset_id": "TS-016",
1913
  "component": "HVAC",
1914
  "status": "EXCELLENT",
1915
- "wear_level": 47.4,
1916
- "last_inspection": "2025-11-14"
1917
  },
1918
  {
1919
  "trainset_id": "TS-016",
1920
  "component": "Door_System",
1921
- "status": "EXCELLENT",
1922
- "wear_level": 36.5,
1923
- "last_inspection": "2025-11-24"
1924
  },
1925
  {
1926
  "trainset_id": "TS-016",
1927
  "component": "Pantograph",
1928
- "status": "EXCELLENT",
1929
- "wear_level": 26.6,
1930
- "last_inspection": "2025-11-28"
1931
  },
1932
  {
1933
  "trainset_id": "TS-016",
1934
  "component": "Bogie",
1935
- "status": "POOR",
1936
- "wear_level": 62.5,
1937
- "last_inspection": "2025-11-21"
1938
  },
1939
  {
1940
  "trainset_id": "TS-016",
1941
  "component": "Coupler",
1942
  "status": "EXCELLENT",
1943
- "wear_level": 14.7,
1944
- "last_inspection": "2025-11-09"
1945
  },
1946
  {
1947
  "trainset_id": "TS-016",
1948
  "component": "Battery",
1949
- "status": "EXCELLENT",
1950
- "wear_level": 36.6,
1951
- "last_inspection": "2025-11-23"
1952
  },
1953
  {
1954
  "trainset_id": "TS-017",
1955
  "component": "Traction_Motor",
1956
  "status": "GOOD",
1957
- "wear_level": 13.5,
1958
- "last_inspection": "2025-11-12"
1959
  },
1960
  {
1961
  "trainset_id": "TS-017",
1962
  "component": "Brake_System",
1963
- "status": "GOOD",
1964
- "wear_level": 44.5,
1965
- "last_inspection": "2025-11-22"
1966
  },
1967
  {
1968
  "trainset_id": "TS-017",
1969
  "component": "HVAC",
1970
  "status": "GOOD",
1971
- "wear_level": 26.1,
1972
- "last_inspection": "2025-11-27"
1973
  },
1974
  {
1975
  "trainset_id": "TS-017",
1976
  "component": "Door_System",
1977
  "status": "EXCELLENT",
1978
- "wear_level": 18.4,
1979
- "last_inspection": "2025-11-19"
1980
  },
1981
  {
1982
  "trainset_id": "TS-017",
1983
  "component": "Pantograph",
1984
- "status": "EXCELLENT",
1985
- "wear_level": 43.1,
1986
- "last_inspection": "2025-11-25"
1987
  },
1988
  {
1989
  "trainset_id": "TS-017",
1990
  "component": "Bogie",
1991
  "status": "GOOD",
1992
- "wear_level": 42.6,
1993
- "last_inspection": "2025-11-08"
1994
  },
1995
  {
1996
  "trainset_id": "TS-017",
1997
  "component": "Coupler",
1998
  "status": "GOOD",
1999
- "wear_level": 12.9,
2000
- "last_inspection": "2025-11-10"
2001
  },
2002
  {
2003
  "trainset_id": "TS-017",
2004
  "component": "Battery",
2005
- "status": "GOOD",
2006
- "wear_level": 12.9,
2007
  "last_inspection": "2025-11-21"
2008
  },
2009
  {
2010
  "trainset_id": "TS-018",
2011
  "component": "Traction_Motor",
2012
- "status": "GOOD",
2013
- "wear_level": 44.4,
2014
- "last_inspection": "2025-11-13"
2015
  },
2016
  {
2017
  "trainset_id": "TS-018",
2018
  "component": "Brake_System",
2019
  "status": "EXCELLENT",
2020
- "wear_level": 35.5,
2021
- "last_inspection": "2025-11-19"
2022
  },
2023
  {
2024
  "trainset_id": "TS-018",
2025
  "component": "HVAC",
2026
- "status": "GOOD",
2027
- "wear_level": 26.6,
2028
- "last_inspection": "2025-11-07"
2029
  },
2030
  {
2031
  "trainset_id": "TS-018",
2032
  "component": "Door_System",
2033
- "status": "EXCELLENT",
2034
- "wear_level": 25.2,
2035
- "last_inspection": "2025-11-22"
2036
  },
2037
  {
2038
  "trainset_id": "TS-018",
2039
  "component": "Pantograph",
2040
- "status": "CRITICAL",
2041
- "wear_level": 93.4,
2042
- "last_inspection": "2025-11-11"
2043
  },
2044
  {
2045
  "trainset_id": "TS-018",
2046
  "component": "Bogie",
2047
- "status": "EXCELLENT",
2048
- "wear_level": 36.6,
2049
- "last_inspection": "2025-10-31"
2050
  },
2051
  {
2052
  "trainset_id": "TS-018",
2053
  "component": "Coupler",
2054
- "status": "CRITICAL",
2055
- "wear_level": 92.4,
2056
- "last_inspection": "2025-11-06"
2057
  },
2058
  {
2059
  "trainset_id": "TS-018",
2060
  "component": "Battery",
2061
- "status": "EXCELLENT",
2062
- "wear_level": 35.9,
2063
- "last_inspection": "2025-11-15"
2064
  },
2065
  {
2066
  "trainset_id": "TS-019",
2067
  "component": "Traction_Motor",
2068
  "status": "GOOD",
2069
- "wear_level": 40.0,
2070
- "last_inspection": "2025-11-15"
2071
  },
2072
  {
2073
  "trainset_id": "TS-019",
2074
  "component": "Brake_System",
2075
- "status": "GOOD",
2076
- "wear_level": 46.9,
2077
- "last_inspection": "2025-10-30"
2078
  },
2079
  {
2080
  "trainset_id": "TS-019",
2081
  "component": "HVAC",
2082
  "status": "GOOD",
2083
- "wear_level": 11.4,
2084
- "last_inspection": "2025-11-02"
2085
  },
2086
  {
2087
  "trainset_id": "TS-019",
2088
  "component": "Door_System",
2089
- "status": "CRITICAL",
2090
- "wear_level": 82.5,
2091
- "last_inspection": "2025-10-31"
2092
  },
2093
  {
2094
  "trainset_id": "TS-019",
2095
  "component": "Pantograph",
2096
- "status": "EXCELLENT",
2097
- "wear_level": 46.1,
2098
- "last_inspection": "2025-11-02"
2099
  },
2100
  {
2101
  "trainset_id": "TS-019",
2102
  "component": "Bogie",
2103
  "status": "EXCELLENT",
2104
- "wear_level": 31.8,
2105
- "last_inspection": "2025-10-30"
2106
  },
2107
  {
2108
  "trainset_id": "TS-019",
2109
  "component": "Coupler",
2110
  "status": "GOOD",
2111
- "wear_level": 21.1,
2112
- "last_inspection": "2025-11-21"
2113
  },
2114
  {
2115
  "trainset_id": "TS-019",
2116
  "component": "Battery",
2117
  "status": "GOOD",
2118
- "wear_level": 49.4,
2119
- "last_inspection": "2025-11-23"
2120
  },
2121
  {
2122
  "trainset_id": "TS-020",
2123
  "component": "Traction_Motor",
2124
  "status": "EXCELLENT",
2125
- "wear_level": 18.3,
2126
- "last_inspection": "2025-11-27"
2127
  },
2128
  {
2129
  "trainset_id": "TS-020",
2130
  "component": "Brake_System",
2131
- "status": "FAIR",
2132
- "wear_level": 72.3,
2133
- "last_inspection": "2025-11-10"
2134
  },
2135
  {
2136
  "trainset_id": "TS-020",
2137
  "component": "HVAC",
2138
  "status": "GOOD",
2139
- "wear_level": 48.0,
2140
- "last_inspection": "2025-10-30"
2141
  },
2142
  {
2143
  "trainset_id": "TS-020",
2144
  "component": "Door_System",
2145
- "status": "EXCELLENT",
2146
- "wear_level": 30.3,
2147
- "last_inspection": "2025-11-18"
2148
  },
2149
  {
2150
  "trainset_id": "TS-020",
2151
  "component": "Pantograph",
2152
- "status": "GOOD",
2153
- "wear_level": 30.7,
2154
- "last_inspection": "2025-11-07"
2155
  },
2156
  {
2157
  "trainset_id": "TS-020",
2158
  "component": "Bogie",
2159
  "status": "GOOD",
2160
- "wear_level": 12.6,
2161
- "last_inspection": "2025-11-25"
2162
  },
2163
  {
2164
  "trainset_id": "TS-020",
2165
  "component": "Coupler",
2166
  "status": "EXCELLENT",
2167
- "wear_level": 47.4,
2168
- "last_inspection": "2025-11-20"
2169
  },
2170
  {
2171
  "trainset_id": "TS-020",
2172
  "component": "Battery",
2173
- "status": "EXCELLENT",
2174
- "wear_level": 36.0,
2175
- "last_inspection": "2025-11-26"
2176
  },
2177
  {
2178
  "trainset_id": "TS-021",
2179
  "component": "Traction_Motor",
2180
- "status": "GOOD",
2181
- "wear_level": 19.5,
2182
- "last_inspection": "2025-10-30"
2183
  },
2184
  {
2185
  "trainset_id": "TS-021",
2186
  "component": "Brake_System",
2187
  "status": "EXCELLENT",
2188
- "wear_level": 15.3,
2189
- "last_inspection": "2025-11-05"
2190
  },
2191
  {
2192
  "trainset_id": "TS-021",
2193
  "component": "HVAC",
2194
  "status": "GOOD",
2195
- "wear_level": 21.9,
2196
- "last_inspection": "2025-11-17"
2197
  },
2198
  {
2199
  "trainset_id": "TS-021",
2200
  "component": "Door_System",
2201
  "status": "EXCELLENT",
2202
- "wear_level": 16.0,
2203
- "last_inspection": "2025-11-09"
2204
  },
2205
  {
2206
  "trainset_id": "TS-021",
2207
  "component": "Pantograph",
2208
- "status": "EXCELLENT",
2209
- "wear_level": 39.7,
2210
  "last_inspection": "2025-11-08"
2211
  },
2212
  {
2213
  "trainset_id": "TS-021",
2214
  "component": "Bogie",
2215
  "status": "EXCELLENT",
2216
- "wear_level": 40.7,
2217
- "last_inspection": "2025-11-23"
2218
  },
2219
  {
2220
  "trainset_id": "TS-021",
2221
  "component": "Coupler",
2222
- "status": "GOOD",
2223
- "wear_level": 23.6,
2224
- "last_inspection": "2025-11-21"
2225
  },
2226
  {
2227
  "trainset_id": "TS-021",
2228
  "component": "Battery",
2229
  "status": "EXCELLENT",
2230
- "wear_level": 14.5,
2231
- "last_inspection": "2025-11-05"
2232
  },
2233
  {
2234
  "trainset_id": "TS-022",
2235
  "component": "Traction_Motor",
2236
- "status": "CRITICAL",
2237
- "wear_level": 75.8,
2238
- "last_inspection": "2025-11-28"
2239
  },
2240
  {
2241
  "trainset_id": "TS-022",
2242
  "component": "Brake_System",
2243
- "status": "CRITICAL",
2244
- "wear_level": 84.3,
2245
- "last_inspection": "2025-11-17"
2246
  },
2247
  {
2248
  "trainset_id": "TS-022",
2249
  "component": "HVAC",
2250
- "status": "EXCELLENT",
2251
- "wear_level": 38.9,
2252
- "last_inspection": "2025-11-17"
2253
  },
2254
  {
2255
  "trainset_id": "TS-022",
2256
  "component": "Door_System",
2257
- "status": "EXCELLENT",
2258
- "wear_level": 19.2,
2259
- "last_inspection": "2025-11-15"
2260
  },
2261
  {
2262
  "trainset_id": "TS-022",
2263
  "component": "Pantograph",
2264
- "status": "POOR",
2265
- "wear_level": 79.3,
2266
- "last_inspection": "2025-11-26"
2267
  },
2268
  {
2269
  "trainset_id": "TS-022",
2270
  "component": "Bogie",
2271
  "status": "GOOD",
2272
- "wear_level": 44.5,
2273
- "last_inspection": "2025-11-09"
2274
  },
2275
  {
2276
  "trainset_id": "TS-022",
2277
  "component": "Coupler",
2278
  "status": "POOR",
2279
- "wear_level": 94.0,
2280
- "last_inspection": "2025-11-16"
2281
  },
2282
  {
2283
  "trainset_id": "TS-022",
2284
  "component": "Battery",
2285
  "status": "GOOD",
2286
- "wear_level": 10.3,
2287
- "last_inspection": "2025-11-10"
2288
  },
2289
  {
2290
  "trainset_id": "TS-023",
2291
  "component": "Traction_Motor",
2292
- "status": "POOR",
2293
- "wear_level": 87.7,
2294
- "last_inspection": "2025-11-09"
2295
  },
2296
  {
2297
  "trainset_id": "TS-023",
2298
  "component": "Brake_System",
2299
  "status": "GOOD",
2300
- "wear_level": 43.6,
2301
- "last_inspection": "2025-11-25"
2302
  },
2303
  {
2304
  "trainset_id": "TS-023",
2305
  "component": "HVAC",
2306
- "status": "POOR",
2307
- "wear_level": 90.4,
2308
- "last_inspection": "2025-10-31"
2309
  },
2310
  {
2311
  "trainset_id": "TS-023",
2312
  "component": "Door_System",
2313
- "status": "EXCELLENT",
2314
- "wear_level": 16.3,
2315
- "last_inspection": "2025-11-07"
2316
  },
2317
  {
2318
  "trainset_id": "TS-023",
2319
  "component": "Pantograph",
2320
  "status": "EXCELLENT",
2321
- "wear_level": 31.4,
2322
- "last_inspection": "2025-11-20"
2323
  },
2324
  {
2325
  "trainset_id": "TS-023",
2326
  "component": "Bogie",
2327
- "status": "EXCELLENT",
2328
- "wear_level": 40.2,
2329
- "last_inspection": "2025-11-10"
2330
  },
2331
  {
2332
  "trainset_id": "TS-023",
2333
  "component": "Coupler",
2334
- "status": "GOOD",
2335
- "wear_level": 12.8,
2336
- "last_inspection": "2025-11-03"
2337
  },
2338
  {
2339
  "trainset_id": "TS-023",
2340
  "component": "Battery",
2341
- "status": "EXCELLENT",
2342
- "wear_level": 32.9,
2343
- "last_inspection": "2025-11-18"
2344
  },
2345
  {
2346
  "trainset_id": "TS-024",
2347
  "component": "Traction_Motor",
2348
- "status": "GOOD",
2349
- "wear_level": 26.1,
2350
- "last_inspection": "2025-11-19"
2351
  },
2352
  {
2353
  "trainset_id": "TS-024",
2354
  "component": "Brake_System",
2355
  "status": "GOOD",
2356
- "wear_level": 38.1,
2357
- "last_inspection": "2025-11-10"
2358
  },
2359
  {
2360
  "trainset_id": "TS-024",
2361
  "component": "HVAC",
2362
- "status": "POOR",
2363
- "wear_level": 66.5,
2364
- "last_inspection": "2025-11-12"
2365
  },
2366
  {
2367
  "trainset_id": "TS-024",
2368
  "component": "Door_System",
2369
  "status": "EXCELLENT",
2370
- "wear_level": 28.0,
2371
- "last_inspection": "2025-11-18"
2372
  },
2373
  {
2374
  "trainset_id": "TS-024",
2375
  "component": "Pantograph",
2376
  "status": "GOOD",
2377
- "wear_level": 43.3,
2378
- "last_inspection": "2025-11-03"
2379
  },
2380
  {
2381
  "trainset_id": "TS-024",
2382
  "component": "Bogie",
2383
- "status": "EXCELLENT",
2384
- "wear_level": 27.2,
2385
- "last_inspection": "2025-11-28"
2386
  },
2387
  {
2388
  "trainset_id": "TS-024",
2389
  "component": "Coupler",
2390
  "status": "GOOD",
2391
- "wear_level": 10.9,
2392
- "last_inspection": "2025-11-03"
2393
  },
2394
  {
2395
  "trainset_id": "TS-024",
2396
  "component": "Battery",
2397
- "status": "GOOD",
2398
- "wear_level": 29.4,
2399
- "last_inspection": "2025-11-15"
2400
  },
2401
  {
2402
  "trainset_id": "TS-025",
2403
  "component": "Traction_Motor",
2404
- "status": "EXCELLENT",
2405
- "wear_level": 15.4,
2406
- "last_inspection": "2025-11-20"
2407
  },
2408
  {
2409
  "trainset_id": "TS-025",
2410
  "component": "Brake_System",
2411
  "status": "GOOD",
2412
- "wear_level": 38.2,
2413
- "last_inspection": "2025-11-15"
2414
  },
2415
  {
2416
  "trainset_id": "TS-025",
2417
  "component": "HVAC",
2418
- "status": "CRITICAL",
2419
- "wear_level": 67.5,
2420
- "last_inspection": "2025-11-11"
2421
  },
2422
  {
2423
  "trainset_id": "TS-025",
2424
  "component": "Door_System",
2425
- "status": "EXCELLENT",
2426
- "wear_level": 11.3,
2427
- "last_inspection": "2025-11-16"
2428
  },
2429
  {
2430
  "trainset_id": "TS-025",
2431
  "component": "Pantograph",
2432
  "status": "EXCELLENT",
2433
- "wear_level": 29.3,
2434
- "last_inspection": "2025-11-18"
2435
  },
2436
  {
2437
  "trainset_id": "TS-025",
2438
  "component": "Bogie",
2439
- "status": "EXCELLENT",
2440
- "wear_level": 48.7,
2441
- "last_inspection": "2025-11-03"
2442
  },
2443
  {
2444
  "trainset_id": "TS-025",
2445
  "component": "Coupler",
2446
- "status": "EXCELLENT",
2447
- "wear_level": 35.7,
2448
- "last_inspection": "2025-11-19"
2449
  },
2450
  {
2451
  "trainset_id": "TS-025",
2452
  "component": "Battery",
2453
  "status": "GOOD",
2454
- "wear_level": 10.2,
2455
- "last_inspection": "2025-11-01"
2456
  }
2457
  ],
2458
- "date": "2025-11-29",
2459
  "method": "ga",
2460
  "config": {
2461
  "required_service_trains": 15,
 
3
  {
4
  "trainset_id": "TS-001",
5
  "operational_status": "IN_SERVICE",
6
+ "last_maintenance_date": "2025-11-20",
7
+ "total_mileage_km": 78433.94,
8
+ "age_years": 3
9
  },
10
  {
11
  "trainset_id": "TS-002",
12
  "operational_status": "IN_SERVICE",
13
+ "last_maintenance_date": "2025-09-20",
14
+ "total_mileage_km": 50927.55,
15
+ "age_years": 8
16
  },
17
  {
18
  "trainset_id": "TS-003",
19
  "operational_status": "STANDBY",
20
+ "last_maintenance_date": "2025-11-22",
21
+ "total_mileage_km": 117275.25,
22
+ "age_years": 7
23
  },
24
  {
25
  "trainset_id": "TS-004",
26
  "operational_status": "IN_SERVICE",
27
+ "last_maintenance_date": "2025-10-01",
28
+ "total_mileage_km": 142142.79,
29
+ "age_years": 2
30
  },
31
  {
32
  "trainset_id": "TS-005",
33
  "operational_status": "IN_SERVICE",
34
+ "last_maintenance_date": "2025-10-04",
35
+ "total_mileage_km": 128736.02,
36
+ "age_years": 6
37
  },
38
  {
39
  "trainset_id": "TS-006",
40
  "operational_status": "STANDBY",
41
+ "last_maintenance_date": "2025-11-05",
42
+ "total_mileage_km": 50274.72,
43
+ "age_years": 3
44
  },
45
  {
46
  "trainset_id": "TS-007",
47
  "operational_status": "IN_SERVICE",
48
+ "last_maintenance_date": "2025-09-18",
49
+ "total_mileage_km": 122068.72,
50
+ "age_years": 6
51
  },
52
  {
53
  "trainset_id": "TS-008",
54
  "operational_status": "IN_SERVICE",
55
+ "last_maintenance_date": "2025-09-08",
56
+ "total_mileage_km": 132191.02,
57
+ "age_years": 1
58
  },
59
  {
60
  "trainset_id": "TS-009",
61
  "operational_status": "STANDBY",
62
+ "last_maintenance_date": "2025-10-05",
63
+ "total_mileage_km": 130040.8,
64
+ "age_years": 6
65
  },
66
  {
67
  "trainset_id": "TS-010",
68
  "operational_status": "IN_SERVICE",
69
+ "last_maintenance_date": "2025-09-04",
70
+ "total_mileage_km": 144229.04,
71
+ "age_years": 7
72
  },
73
  {
74
  "trainset_id": "TS-011",
75
  "operational_status": "IN_SERVICE",
76
+ "last_maintenance_date": "2025-09-25",
77
+ "total_mileage_km": 57686.65,
78
+ "age_years": 7
79
  },
80
  {
81
  "trainset_id": "TS-012",
82
  "operational_status": "STANDBY",
83
+ "last_maintenance_date": "2025-09-28",
84
+ "total_mileage_km": 63183.89,
85
+ "age_years": 3
86
  },
87
  {
88
  "trainset_id": "TS-013",
89
  "operational_status": "IN_SERVICE",
90
+ "last_maintenance_date": "2025-11-20",
91
+ "total_mileage_km": 127540.7,
92
+ "age_years": 2
93
  },
94
  {
95
  "trainset_id": "TS-014",
96
  "operational_status": "IN_SERVICE",
97
+ "last_maintenance_date": "2025-09-06",
98
+ "total_mileage_km": 103275.49,
99
+ "age_years": 2
100
  },
101
  {
102
  "trainset_id": "TS-015",
103
  "operational_status": "STANDBY",
104
+ "last_maintenance_date": "2025-09-13",
105
+ "total_mileage_km": 113655.78,
106
+ "age_years": 4
107
  },
108
  {
109
  "trainset_id": "TS-016",
110
  "operational_status": "IN_SERVICE",
111
+ "last_maintenance_date": "2025-09-11",
112
+ "total_mileage_km": 188098.07,
113
+ "age_years": 7
114
  },
115
  {
116
  "trainset_id": "TS-017",
117
  "operational_status": "IN_SERVICE",
118
+ "last_maintenance_date": "2025-11-02",
119
+ "total_mileage_km": 173609.82,
120
  "age_years": 8
121
  },
122
  {
123
  "trainset_id": "TS-018",
124
  "operational_status": "STANDBY",
125
+ "last_maintenance_date": "2025-10-14",
126
+ "total_mileage_km": 143734.75,
127
+ "age_years": 8
128
  },
129
  {
130
  "trainset_id": "TS-019",
131
  "operational_status": "IN_SERVICE",
132
+ "last_maintenance_date": "2025-10-23",
133
+ "total_mileage_km": 121246.82,
134
+ "age_years": 7
135
  },
136
  {
137
  "trainset_id": "TS-020",
138
  "operational_status": "IN_SERVICE",
139
+ "last_maintenance_date": "2025-11-03",
140
+ "total_mileage_km": 187866.48,
141
+ "age_years": 2
142
  },
143
  {
144
  "trainset_id": "TS-021",
145
+ "operational_status": "MAINTENANCE",
146
+ "last_maintenance_date": "2025-10-05",
147
+ "total_mileage_km": 161763.06,
148
+ "age_years": 3
149
  },
150
  {
151
  "trainset_id": "TS-022",
152
  "operational_status": "OUT_OF_SERVICE",
153
+ "last_maintenance_date": "2025-10-25",
154
+ "total_mileage_km": 74757.26,
155
+ "age_years": 2
156
  },
157
  {
158
  "trainset_id": "TS-023",
159
  "operational_status": "MAINTENANCE",
160
+ "last_maintenance_date": "2025-09-10",
161
+ "total_mileage_km": 85773.31,
162
+ "age_years": 8
163
  },
164
  {
165
  "trainset_id": "TS-024",
166
+ "operational_status": "MAINTENANCE",
167
+ "last_maintenance_date": "2025-10-02",
168
+ "total_mileage_km": 94566.13,
169
+ "age_years": 3
170
  },
171
  {
172
  "trainset_id": "TS-025",
173
  "operational_status": "OUT_OF_SERVICE",
174
+ "last_maintenance_date": "2025-09-06",
175
+ "total_mileage_km": 61811.49,
176
+ "age_years": 7
177
  }
178
  ],
179
  "fitness_certificates": [
 
181
  "trainset_id": "TS-001",
182
  "department": "ROLLING_STOCK",
183
  "status": "ISSUED",
184
+ "issue_date": "2025-07-30",
185
+ "expiry_date": "2026-07-30"
186
  },
187
  {
188
  "trainset_id": "TS-001",
189
  "department": "ELECTRICAL",
190
  "status": "ISSUED",
191
+ "issue_date": "2025-08-09",
192
+ "expiry_date": "2026-08-09"
193
  },
194
  {
195
  "trainset_id": "TS-001",
196
  "department": "MECHANICAL",
197
  "status": "ISSUED",
198
+ "issue_date": "2025-09-30",
199
+ "expiry_date": "2026-09-30"
200
  },
201
  {
202
  "trainset_id": "TS-001",
203
  "department": "SAFETY",
204
  "status": "ISSUED",
205
+ "issue_date": "2025-09-12",
206
+ "expiry_date": "2026-09-12"
207
  },
208
  {
209
  "trainset_id": "TS-001",
210
  "department": "OPERATIONS",
211
  "status": "ISSUED",
212
+ "issue_date": "2025-07-15",
213
+ "expiry_date": "2026-07-15"
214
  },
215
  {
216
  "trainset_id": "TS-002",
217
  "department": "ROLLING_STOCK",
218
  "status": "ISSUED",
219
+ "issue_date": "2025-09-23",
220
+ "expiry_date": "2026-09-23"
221
  },
222
  {
223
  "trainset_id": "TS-002",
224
  "department": "ELECTRICAL",
225
  "status": "ISSUED",
226
+ "issue_date": "2025-07-17",
227
+ "expiry_date": "2026-07-17"
228
  },
229
  {
230
  "trainset_id": "TS-002",
231
  "department": "MECHANICAL",
232
  "status": "ISSUED",
233
+ "issue_date": "2025-08-02",
234
+ "expiry_date": "2026-08-02"
235
  },
236
  {
237
  "trainset_id": "TS-002",
238
  "department": "SAFETY",
239
  "status": "ISSUED",
240
+ "issue_date": "2025-08-09",
241
+ "expiry_date": "2026-08-09"
242
  },
243
  {
244
  "trainset_id": "TS-002",
245
  "department": "OPERATIONS",
246
+ "status": "PENDING",
247
+ "issue_date": "2025-10-04",
248
+ "expiry_date": "2026-10-04"
249
  },
250
  {
251
  "trainset_id": "TS-003",
252
  "department": "ROLLING_STOCK",
253
  "status": "ISSUED",
254
+ "issue_date": "2025-07-20",
255
+ "expiry_date": "2026-07-20"
256
  },
257
  {
258
  "trainset_id": "TS-003",
259
  "department": "ELECTRICAL",
260
+ "status": "PENDING",
261
+ "issue_date": "2025-08-06",
262
+ "expiry_date": "2026-08-06"
263
  },
264
  {
265
  "trainset_id": "TS-003",
266
  "department": "MECHANICAL",
267
  "status": "ISSUED",
268
+ "issue_date": "2025-09-09",
269
+ "expiry_date": "2026-09-09"
270
  },
271
  {
272
  "trainset_id": "TS-003",
273
  "department": "SAFETY",
274
  "status": "ISSUED",
275
+ "issue_date": "2025-10-23",
276
+ "expiry_date": "2026-10-23"
277
  },
278
  {
279
  "trainset_id": "TS-003",
280
  "department": "OPERATIONS",
281
+ "status": "ISSUED",
282
+ "issue_date": "2025-09-18",
283
+ "expiry_date": "2026-09-18"
284
  },
285
  {
286
  "trainset_id": "TS-004",
287
  "department": "ROLLING_STOCK",
288
  "status": "ISSUED",
289
+ "issue_date": "2025-09-03",
290
+ "expiry_date": "2026-09-03"
291
  },
292
  {
293
  "trainset_id": "TS-004",
294
  "department": "ELECTRICAL",
295
  "status": "ISSUED",
296
+ "issue_date": "2025-06-08",
297
+ "expiry_date": "2026-06-08"
298
  },
299
  {
300
  "trainset_id": "TS-004",
301
  "department": "MECHANICAL",
302
  "status": "ISSUED",
303
+ "issue_date": "2025-06-09",
304
+ "expiry_date": "2026-06-09"
305
  },
306
  {
307
  "trainset_id": "TS-004",
308
  "department": "SAFETY",
309
+ "status": "PENDING",
310
+ "issue_date": "2025-10-24",
311
+ "expiry_date": "2026-10-24"
312
  },
313
  {
314
  "trainset_id": "TS-004",
315
  "department": "OPERATIONS",
316
  "status": "ISSUED",
317
+ "issue_date": "2025-10-05",
318
+ "expiry_date": "2026-10-05"
319
  },
320
  {
321
  "trainset_id": "TS-005",
322
  "department": "ROLLING_STOCK",
323
  "status": "ISSUED",
324
+ "issue_date": "2025-08-28",
325
+ "expiry_date": "2026-08-28"
326
  },
327
  {
328
  "trainset_id": "TS-005",
329
  "department": "ELECTRICAL",
330
  "status": "ISSUED",
331
+ "issue_date": "2025-09-15",
332
+ "expiry_date": "2026-09-15"
333
  },
334
  {
335
  "trainset_id": "TS-005",
336
  "department": "MECHANICAL",
337
  "status": "ISSUED",
338
+ "issue_date": "2025-08-29",
339
+ "expiry_date": "2026-08-29"
340
  },
341
  {
342
  "trainset_id": "TS-005",
343
  "department": "SAFETY",
344
  "status": "ISSUED",
345
+ "issue_date": "2025-09-23",
346
+ "expiry_date": "2026-09-23"
347
  },
348
  {
349
  "trainset_id": "TS-005",
350
  "department": "OPERATIONS",
351
+ "status": "EXPIRED",
352
+ "issue_date": "2025-08-26",
353
+ "expiry_date": "2026-08-26"
354
  },
355
  {
356
  "trainset_id": "TS-006",
357
  "department": "ROLLING_STOCK",
358
+ "status": "PENDING",
359
+ "issue_date": "2025-07-21",
360
+ "expiry_date": "2026-07-21"
361
  },
362
  {
363
  "trainset_id": "TS-006",
364
  "department": "ELECTRICAL",
365
  "status": "ISSUED",
366
+ "issue_date": "2025-08-27",
367
+ "expiry_date": "2026-08-27"
368
  },
369
  {
370
  "trainset_id": "TS-006",
371
  "department": "MECHANICAL",
372
  "status": "ISSUED",
373
+ "issue_date": "2025-10-29",
374
+ "expiry_date": "2026-10-29"
375
  },
376
  {
377
  "trainset_id": "TS-006",
378
  "department": "SAFETY",
379
+ "status": "SUSPENDED",
380
+ "issue_date": "2025-07-21",
381
+ "expiry_date": "2026-07-21"
382
  },
383
  {
384
  "trainset_id": "TS-006",
385
  "department": "OPERATIONS",
386
  "status": "ISSUED",
387
+ "issue_date": "2025-10-03",
388
+ "expiry_date": "2026-10-03"
389
  },
390
  {
391
  "trainset_id": "TS-007",
392
  "department": "ROLLING_STOCK",
393
  "status": "ISSUED",
394
+ "issue_date": "2025-07-31",
395
+ "expiry_date": "2026-07-31"
396
  },
397
  {
398
  "trainset_id": "TS-007",
399
  "department": "ELECTRICAL",
400
  "status": "ISSUED",
401
+ "issue_date": "2025-09-25",
402
+ "expiry_date": "2026-09-25"
403
  },
404
  {
405
  "trainset_id": "TS-007",
406
  "department": "MECHANICAL",
407
  "status": "ISSUED",
408
+ "issue_date": "2025-06-19",
409
+ "expiry_date": "2026-06-19"
410
  },
411
  {
412
  "trainset_id": "TS-007",
413
  "department": "SAFETY",
414
  "status": "ISSUED",
415
+ "issue_date": "2025-08-02",
416
+ "expiry_date": "2026-08-02"
417
  },
418
  {
419
  "trainset_id": "TS-007",
420
  "department": "OPERATIONS",
421
  "status": "ISSUED",
422
+ "issue_date": "2025-09-04",
423
+ "expiry_date": "2026-09-04"
424
  },
425
  {
426
  "trainset_id": "TS-008",
427
  "department": "ROLLING_STOCK",
428
  "status": "ISSUED",
429
+ "issue_date": "2025-07-05",
430
+ "expiry_date": "2026-07-05"
431
  },
432
  {
433
  "trainset_id": "TS-008",
434
  "department": "ELECTRICAL",
435
  "status": "ISSUED",
436
+ "issue_date": "2025-08-28",
437
+ "expiry_date": "2026-08-28"
438
  },
439
  {
440
  "trainset_id": "TS-008",
441
  "department": "MECHANICAL",
442
  "status": "ISSUED",
443
+ "issue_date": "2025-06-15",
444
+ "expiry_date": "2026-06-15"
445
  },
446
  {
447
  "trainset_id": "TS-008",
448
  "department": "SAFETY",
449
+ "status": "ISSUED",
450
+ "issue_date": "2025-07-18",
451
+ "expiry_date": "2026-07-18"
452
  },
453
  {
454
  "trainset_id": "TS-008",
455
  "department": "OPERATIONS",
456
  "status": "ISSUED",
457
+ "issue_date": "2025-10-14",
458
+ "expiry_date": "2026-10-14"
459
  },
460
  {
461
  "trainset_id": "TS-009",
462
  "department": "ROLLING_STOCK",
463
  "status": "ISSUED",
464
+ "issue_date": "2025-06-07",
465
+ "expiry_date": "2026-06-07"
466
  },
467
  {
468
  "trainset_id": "TS-009",
469
  "department": "ELECTRICAL",
470
  "status": "ISSUED",
471
+ "issue_date": "2025-07-15",
472
+ "expiry_date": "2026-07-15"
473
  },
474
  {
475
  "trainset_id": "TS-009",
476
  "department": "MECHANICAL",
477
  "status": "ISSUED",
478
+ "issue_date": "2025-07-31",
479
+ "expiry_date": "2026-07-31"
480
  },
481
  {
482
  "trainset_id": "TS-009",
483
  "department": "SAFETY",
484
  "status": "ISSUED",
485
+ "issue_date": "2025-09-05",
486
+ "expiry_date": "2026-09-05"
487
  },
488
  {
489
  "trainset_id": "TS-009",
490
  "department": "OPERATIONS",
491
+ "status": "PENDING",
492
+ "issue_date": "2025-06-07",
493
+ "expiry_date": "2026-06-07"
494
  },
495
  {
496
  "trainset_id": "TS-010",
497
  "department": "ROLLING_STOCK",
498
  "status": "ISSUED",
499
+ "issue_date": "2025-07-06",
500
+ "expiry_date": "2026-07-06"
501
  },
502
  {
503
  "trainset_id": "TS-010",
504
  "department": "ELECTRICAL",
505
  "status": "ISSUED",
506
+ "issue_date": "2025-10-31",
507
+ "expiry_date": "2026-10-31"
508
  },
509
  {
510
  "trainset_id": "TS-010",
511
  "department": "MECHANICAL",
512
  "status": "ISSUED",
513
+ "issue_date": "2025-06-05",
514
+ "expiry_date": "2026-06-05"
515
  },
516
  {
517
  "trainset_id": "TS-010",
518
  "department": "SAFETY",
519
  "status": "ISSUED",
520
+ "issue_date": "2025-08-15",
521
+ "expiry_date": "2026-08-15"
522
  },
523
  {
524
  "trainset_id": "TS-010",
525
  "department": "OPERATIONS",
526
  "status": "ISSUED",
527
+ "issue_date": "2025-11-01",
528
+ "expiry_date": "2026-11-01"
529
  },
530
  {
531
  "trainset_id": "TS-011",
532
  "department": "ROLLING_STOCK",
533
  "status": "ISSUED",
534
+ "issue_date": "2025-08-25",
535
+ "expiry_date": "2026-08-25"
536
  },
537
  {
538
  "trainset_id": "TS-011",
539
  "department": "ELECTRICAL",
540
  "status": "ISSUED",
541
+ "issue_date": "2025-08-16",
542
+ "expiry_date": "2026-08-16"
543
  },
544
  {
545
  "trainset_id": "TS-011",
546
  "department": "MECHANICAL",
547
  "status": "ISSUED",
548
+ "issue_date": "2025-06-15",
549
+ "expiry_date": "2026-06-15"
550
  },
551
  {
552
  "trainset_id": "TS-011",
553
  "department": "SAFETY",
554
  "status": "ISSUED",
555
+ "issue_date": "2025-07-19",
556
+ "expiry_date": "2026-07-19"
557
  },
558
  {
559
  "trainset_id": "TS-011",
560
  "department": "OPERATIONS",
561
  "status": "ISSUED",
562
+ "issue_date": "2025-08-28",
563
+ "expiry_date": "2026-08-28"
564
  },
565
  {
566
  "trainset_id": "TS-012",
567
  "department": "ROLLING_STOCK",
568
  "status": "ISSUED",
569
+ "issue_date": "2025-08-17",
570
+ "expiry_date": "2026-08-17"
571
  },
572
  {
573
  "trainset_id": "TS-012",
574
  "department": "ELECTRICAL",
575
  "status": "ISSUED",
576
+ "issue_date": "2025-06-16",
577
+ "expiry_date": "2026-06-16"
578
  },
579
  {
580
  "trainset_id": "TS-012",
581
  "department": "MECHANICAL",
582
+ "status": "SUSPENDED",
583
+ "issue_date": "2025-08-10",
584
+ "expiry_date": "2026-08-10"
585
  },
586
  {
587
  "trainset_id": "TS-012",
588
  "department": "SAFETY",
589
  "status": "ISSUED",
590
+ "issue_date": "2025-10-05",
591
+ "expiry_date": "2026-10-05"
592
  },
593
  {
594
  "trainset_id": "TS-012",
595
  "department": "OPERATIONS",
596
+ "status": "EXPIRED",
597
+ "issue_date": "2025-10-27",
598
+ "expiry_date": "2026-10-27"
599
  },
600
  {
601
  "trainset_id": "TS-013",
602
  "department": "ROLLING_STOCK",
603
  "status": "ISSUED",
604
+ "issue_date": "2025-06-10",
605
+ "expiry_date": "2026-06-10"
606
  },
607
  {
608
  "trainset_id": "TS-013",
609
  "department": "ELECTRICAL",
610
  "status": "ISSUED",
611
+ "issue_date": "2025-08-21",
612
+ "expiry_date": "2026-08-21"
613
  },
614
  {
615
  "trainset_id": "TS-013",
616
  "department": "MECHANICAL",
617
  "status": "ISSUED",
618
+ "issue_date": "2025-08-06",
619
+ "expiry_date": "2026-08-06"
620
  },
621
  {
622
  "trainset_id": "TS-013",
623
  "department": "SAFETY",
624
  "status": "ISSUED",
625
+ "issue_date": "2025-06-05",
626
+ "expiry_date": "2026-06-05"
627
  },
628
  {
629
  "trainset_id": "TS-013",
630
  "department": "OPERATIONS",
631
  "status": "ISSUED",
632
+ "issue_date": "2025-10-20",
633
+ "expiry_date": "2026-10-20"
634
  },
635
  {
636
  "trainset_id": "TS-014",
637
  "department": "ROLLING_STOCK",
638
  "status": "ISSUED",
639
+ "issue_date": "2025-08-21",
640
+ "expiry_date": "2026-08-21"
641
  },
642
  {
643
  "trainset_id": "TS-014",
644
  "department": "ELECTRICAL",
645
  "status": "ISSUED",
646
+ "issue_date": "2025-06-23",
647
+ "expiry_date": "2026-06-23"
648
  },
649
  {
650
  "trainset_id": "TS-014",
651
  "department": "MECHANICAL",
652
  "status": "ISSUED",
653
+ "issue_date": "2025-10-07",
654
+ "expiry_date": "2026-10-07"
655
  },
656
  {
657
  "trainset_id": "TS-014",
658
  "department": "SAFETY",
659
  "status": "ISSUED",
660
+ "issue_date": "2025-07-17",
661
+ "expiry_date": "2026-07-17"
662
  },
663
  {
664
  "trainset_id": "TS-014",
665
  "department": "OPERATIONS",
666
  "status": "ISSUED",
667
+ "issue_date": "2025-09-14",
668
+ "expiry_date": "2026-09-14"
669
  },
670
  {
671
  "trainset_id": "TS-015",
672
  "department": "ROLLING_STOCK",
673
  "status": "ISSUED",
674
+ "issue_date": "2025-06-28",
675
+ "expiry_date": "2026-06-28"
676
  },
677
  {
678
  "trainset_id": "TS-015",
679
  "department": "ELECTRICAL",
680
  "status": "ISSUED",
681
+ "issue_date": "2025-10-02",
682
+ "expiry_date": "2026-10-02"
683
  },
684
  {
685
  "trainset_id": "TS-015",
686
  "department": "MECHANICAL",
687
+ "status": "EXPIRED",
688
+ "issue_date": "2025-11-02",
689
+ "expiry_date": "2026-11-02"
690
  },
691
  {
692
  "trainset_id": "TS-015",
693
  "department": "SAFETY",
694
  "status": "ISSUED",
695
+ "issue_date": "2025-09-10",
696
+ "expiry_date": "2026-09-10"
697
  },
698
  {
699
  "trainset_id": "TS-015",
700
  "department": "OPERATIONS",
701
  "status": "ISSUED",
702
+ "issue_date": "2025-10-28",
703
+ "expiry_date": "2026-10-28"
704
  },
705
  {
706
  "trainset_id": "TS-016",
707
  "department": "ROLLING_STOCK",
708
  "status": "ISSUED",
709
+ "issue_date": "2025-08-24",
710
+ "expiry_date": "2026-08-24"
711
  },
712
  {
713
  "trainset_id": "TS-016",
714
  "department": "ELECTRICAL",
715
  "status": "ISSUED",
716
+ "issue_date": "2025-07-23",
717
+ "expiry_date": "2026-07-23"
718
  },
719
  {
720
  "trainset_id": "TS-016",
721
  "department": "MECHANICAL",
722
  "status": "ISSUED",
723
+ "issue_date": "2025-06-06",
724
+ "expiry_date": "2026-06-06"
725
  },
726
  {
727
  "trainset_id": "TS-016",
728
  "department": "SAFETY",
729
  "status": "ISSUED",
730
+ "issue_date": "2025-06-12",
731
+ "expiry_date": "2026-06-12"
732
  },
733
  {
734
  "trainset_id": "TS-016",
735
  "department": "OPERATIONS",
736
  "status": "ISSUED",
737
+ "issue_date": "2025-10-22",
738
+ "expiry_date": "2026-10-22"
739
  },
740
  {
741
  "trainset_id": "TS-017",
742
  "department": "ROLLING_STOCK",
743
+ "status": "PENDING",
744
+ "issue_date": "2025-09-13",
745
+ "expiry_date": "2026-09-13"
746
  },
747
  {
748
  "trainset_id": "TS-017",
749
  "department": "ELECTRICAL",
750
+ "status": "EXPIRED",
751
+ "issue_date": "2025-10-13",
752
+ "expiry_date": "2026-10-13"
753
  },
754
  {
755
  "trainset_id": "TS-017",
756
  "department": "MECHANICAL",
757
  "status": "ISSUED",
758
+ "issue_date": "2025-06-07",
759
+ "expiry_date": "2026-06-07"
760
  },
761
  {
762
  "trainset_id": "TS-017",
763
  "department": "SAFETY",
764
  "status": "ISSUED",
765
+ "issue_date": "2025-09-23",
766
+ "expiry_date": "2026-09-23"
767
  },
768
  {
769
  "trainset_id": "TS-017",
770
  "department": "OPERATIONS",
771
  "status": "ISSUED",
772
+ "issue_date": "2025-09-21",
773
+ "expiry_date": "2026-09-21"
774
  },
775
  {
776
  "trainset_id": "TS-018",
777
  "department": "ROLLING_STOCK",
778
  "status": "ISSUED",
779
+ "issue_date": "2025-07-06",
780
+ "expiry_date": "2026-07-06"
781
  },
782
  {
783
  "trainset_id": "TS-018",
784
  "department": "ELECTRICAL",
785
  "status": "ISSUED",
786
+ "issue_date": "2025-09-13",
787
+ "expiry_date": "2026-09-13"
788
  },
789
  {
790
  "trainset_id": "TS-018",
791
  "department": "MECHANICAL",
792
+ "status": "EXPIRED",
793
+ "issue_date": "2025-08-08",
794
+ "expiry_date": "2026-08-08"
795
  },
796
  {
797
  "trainset_id": "TS-018",
798
  "department": "SAFETY",
799
  "status": "ISSUED",
800
+ "issue_date": "2025-07-25",
801
+ "expiry_date": "2026-07-25"
802
+ },
803
  {
804
  "trainset_id": "TS-018",
805
  "department": "OPERATIONS",
806
+ "status": "PENDING",
807
+ "issue_date": "2025-08-07",
808
+ "expiry_date": "2026-08-07"
809
  },
810
  {
811
  "trainset_id": "TS-019",
812
  "department": "ROLLING_STOCK",
813
  "status": "ISSUED",
814
+ "issue_date": "2025-08-15",
815
+ "expiry_date": "2026-08-15"
816
  },
817
  {
818
  "trainset_id": "TS-019",
819
  "department": "ELECTRICAL",
820
  "status": "ISSUED",
821
+ "issue_date": "2025-09-18",
822
+ "expiry_date": "2026-09-18"
823
  },
824
  {
825
  "trainset_id": "TS-019",
826
  "department": "MECHANICAL",
827
  "status": "ISSUED",
828
+ "issue_date": "2025-10-09",
829
+ "expiry_date": "2026-10-09"
830
  },
831
  {
832
  "trainset_id": "TS-019",
833
  "department": "SAFETY",
834
  "status": "ISSUED",
835
+ "issue_date": "2025-07-09",
836
+ "expiry_date": "2026-07-09"
837
  },
838
  {
839
  "trainset_id": "TS-019",
840
  "department": "OPERATIONS",
841
+ "status": "ISSUED",
842
+ "issue_date": "2025-07-02",
843
+ "expiry_date": "2026-07-02"
844
  },
845
  {
846
  "trainset_id": "TS-020",
847
  "department": "ROLLING_STOCK",
848
  "status": "ISSUED",
849
+ "issue_date": "2025-06-11",
850
+ "expiry_date": "2026-06-11"
851
  },
852
  {
853
  "trainset_id": "TS-020",
854
  "department": "ELECTRICAL",
855
  "status": "ISSUED",
856
+ "issue_date": "2025-08-09",
857
+ "expiry_date": "2026-08-09"
858
  },
859
  {
860
  "trainset_id": "TS-020",
861
  "department": "MECHANICAL",
862
+ "status": "PENDING",
863
+ "issue_date": "2025-10-31",
864
+ "expiry_date": "2026-10-31"
865
  },
866
  {
867
  "trainset_id": "TS-020",
868
  "department": "SAFETY",
869
  "status": "ISSUED",
870
+ "issue_date": "2025-07-11",
871
+ "expiry_date": "2026-07-11"
872
  },
873
  {
874
  "trainset_id": "TS-020",
875
  "department": "OPERATIONS",
876
  "status": "ISSUED",
877
+ "issue_date": "2025-07-24",
878
+ "expiry_date": "2026-07-24"
879
  },
880
  {
881
  "trainset_id": "TS-021",
882
  "department": "ROLLING_STOCK",
883
  "status": "ISSUED",
884
+ "issue_date": "2025-08-13",
885
+ "expiry_date": "2026-08-13"
886
  },
887
  {
888
  "trainset_id": "TS-021",
889
  "department": "ELECTRICAL",
890
  "status": "ISSUED",
891
+ "issue_date": "2025-06-21",
892
+ "expiry_date": "2026-06-21"
893
  },
894
  {
895
  "trainset_id": "TS-021",
896
  "department": "MECHANICAL",
897
  "status": "ISSUED",
898
+ "issue_date": "2025-06-16",
899
+ "expiry_date": "2026-06-16"
900
  },
901
  {
902
  "trainset_id": "TS-021",
903
  "department": "SAFETY",
904
  "status": "ISSUED",
905
+ "issue_date": "2025-09-04",
906
+ "expiry_date": "2026-09-04"
907
  },
908
  {
909
  "trainset_id": "TS-021",
910
  "department": "OPERATIONS",
911
+ "status": "SUSPENDED",
912
+ "issue_date": "2025-10-23",
913
+ "expiry_date": "2026-10-23"
914
  },
915
  {
916
  "trainset_id": "TS-022",
917
  "department": "ROLLING_STOCK",
918
+ "status": "PENDING",
919
+ "issue_date": "2025-06-24",
920
+ "expiry_date": "2026-06-24"
921
  },
922
  {
923
  "trainset_id": "TS-022",
924
  "department": "ELECTRICAL",
925
  "status": "ISSUED",
926
+ "issue_date": "2025-06-12",
927
+ "expiry_date": "2026-06-12"
928
  },
929
  {
930
  "trainset_id": "TS-022",
931
  "department": "MECHANICAL",
932
  "status": "ISSUED",
933
+ "issue_date": "2025-09-03",
934
+ "expiry_date": "2026-09-03"
935
  },
936
  {
937
  "trainset_id": "TS-022",
938
  "department": "SAFETY",
939
  "status": "ISSUED",
940
+ "issue_date": "2025-08-15",
941
+ "expiry_date": "2026-08-15"
942
  },
943
  {
944
  "trainset_id": "TS-022",
945
  "department": "OPERATIONS",
946
  "status": "ISSUED",
947
+ "issue_date": "2025-06-17",
948
+ "expiry_date": "2026-06-17"
949
  },
950
  {
951
  "trainset_id": "TS-023",
952
  "department": "ROLLING_STOCK",
953
  "status": "ISSUED",
954
+ "issue_date": "2025-09-27",
955
+ "expiry_date": "2026-09-27"
956
  },
957
  {
958
  "trainset_id": "TS-023",
959
  "department": "ELECTRICAL",
960
  "status": "ISSUED",
961
+ "issue_date": "2025-10-12",
962
+ "expiry_date": "2026-10-12"
963
  },
964
  {
965
  "trainset_id": "TS-023",
966
  "department": "MECHANICAL",
967
+ "status": "PENDING",
968
+ "issue_date": "2025-09-03",
969
+ "expiry_date": "2026-09-03"
970
  },
971
  {
972
  "trainset_id": "TS-023",
973
  "department": "SAFETY",
974
  "status": "ISSUED",
975
+ "issue_date": "2025-09-10",
976
+ "expiry_date": "2026-09-10"
977
  },
978
  {
979
  "trainset_id": "TS-023",
980
  "department": "OPERATIONS",
981
+ "status": "EXPIRED",
982
+ "issue_date": "2025-06-23",
983
+ "expiry_date": "2026-06-23"
984
  },
985
  {
986
  "trainset_id": "TS-024",
987
  "department": "ROLLING_STOCK",
988
  "status": "ISSUED",
989
+ "issue_date": "2025-07-04",
990
+ "expiry_date": "2026-07-04"
991
  },
992
  {
993
  "trainset_id": "TS-024",
994
  "department": "ELECTRICAL",
995
  "status": "ISSUED",
996
+ "issue_date": "2025-07-08",
997
+ "expiry_date": "2026-07-08"
998
  },
999
  {
1000
  "trainset_id": "TS-024",
1001
  "department": "MECHANICAL",
1002
  "status": "ISSUED",
1003
+ "issue_date": "2025-10-28",
1004
+ "expiry_date": "2026-10-28"
1005
  },
1006
  {
1007
  "trainset_id": "TS-024",
1008
  "department": "SAFETY",
1009
  "status": "ISSUED",
1010
+ "issue_date": "2025-07-18",
1011
+ "expiry_date": "2026-07-18"
1012
  },
1013
  {
1014
  "trainset_id": "TS-024",
1015
  "department": "OPERATIONS",
1016
  "status": "ISSUED",
1017
+ "issue_date": "2025-09-13",
1018
+ "expiry_date": "2026-09-13"
1019
  },
1020
  {
1021
  "trainset_id": "TS-025",
1022
  "department": "ROLLING_STOCK",
1023
  "status": "ISSUED",
1024
+ "issue_date": "2025-09-07",
1025
+ "expiry_date": "2026-09-07"
1026
  },
1027
  {
1028
  "trainset_id": "TS-025",
1029
  "department": "ELECTRICAL",
1030
  "status": "ISSUED",
1031
+ "issue_date": "2025-07-04",
1032
+ "expiry_date": "2026-07-04"
1033
  },
1034
  {
1035
  "trainset_id": "TS-025",
1036
  "department": "MECHANICAL",
1037
  "status": "ISSUED",
1038
+ "issue_date": "2025-08-22",
1039
+ "expiry_date": "2026-08-22"
1040
  },
1041
  {
1042
  "trainset_id": "TS-025",
1043
  "department": "SAFETY",
1044
  "status": "ISSUED",
1045
+ "issue_date": "2025-08-19",
1046
+ "expiry_date": "2026-08-19"
1047
  },
1048
  {
1049
  "trainset_id": "TS-025",
1050
  "department": "OPERATIONS",
1051
  "status": "ISSUED",
1052
+ "issue_date": "2025-09-03",
1053
+ "expiry_date": "2026-09-03"
1054
  }
1055
  ],
1056
  "component_health": [
1057
  {
1058
  "trainset_id": "TS-001",
1059
  "component": "Traction_Motor",
1060
+ "status": "POOR",
1061
+ "wear_level": 93.5,
1062
+ "last_inspection": "2025-11-15"
1063
  },
1064
  {
1065
  "trainset_id": "TS-001",
1066
  "component": "Brake_System",
1067
  "status": "GOOD",
1068
+ "wear_level": 18.8,
1069
+ "last_inspection": "2025-11-18"
1070
  },
1071
  {
1072
  "trainset_id": "TS-001",
1073
  "component": "HVAC",
1074
  "status": "GOOD",
1075
+ "wear_level": 17.5,
1076
+ "last_inspection": "2025-11-07"
1077
  },
1078
  {
1079
  "trainset_id": "TS-001",
1080
  "component": "Door_System",
1081
+ "status": "EXCELLENT",
1082
+ "wear_level": 24.7,
1083
+ "last_inspection": "2025-11-09"
1084
  },
1085
  {
1086
  "trainset_id": "TS-001",
1087
  "component": "Pantograph",
1088
+ "status": "GOOD",
1089
+ "wear_level": 32.7,
1090
+ "last_inspection": "2025-11-29"
1091
  },
1092
  {
1093
  "trainset_id": "TS-001",
1094
  "component": "Bogie",
1095
+ "status": "GOOD",
1096
+ "wear_level": 34.8,
1097
+ "last_inspection": "2025-11-03"
1098
  },
1099
  {
1100
  "trainset_id": "TS-001",
1101
  "component": "Coupler",
1102
  "status": "GOOD",
1103
+ "wear_level": 12.3,
1104
+ "last_inspection": "2025-11-24"
1105
  },
1106
  {
1107
  "trainset_id": "TS-001",
1108
  "component": "Battery",
1109
+ "status": "GOOD",
1110
+ "wear_level": 48.7,
1111
+ "last_inspection": "2025-11-16"
1112
  },
1113
  {
1114
  "trainset_id": "TS-002",
1115
  "component": "Traction_Motor",
1116
+ "status": "EXCELLENT",
1117
+ "wear_level": 39.7,
1118
+ "last_inspection": "2025-11-02"
1119
  },
1120
  {
1121
  "trainset_id": "TS-002",
1122
  "component": "Brake_System",
1123
+ "status": "FAIR",
1124
+ "wear_level": 93.8,
1125
+ "last_inspection": "2025-11-22"
1126
  },
1127
  {
1128
  "trainset_id": "TS-002",
1129
  "component": "HVAC",
1130
  "status": "GOOD",
1131
+ "wear_level": 15.8,
1132
+ "last_inspection": "2025-11-28"
1133
  },
1134
  {
1135
  "trainset_id": "TS-002",
1136
  "component": "Door_System",
1137
+ "status": "GOOD",
1138
+ "wear_level": 34.7,
1139
+ "last_inspection": "2025-11-14"
1140
  },
1141
  {
1142
  "trainset_id": "TS-002",
1143
  "component": "Pantograph",
1144
  "status": "GOOD",
1145
+ "wear_level": 29.9,
1146
+ "last_inspection": "2025-11-21"
1147
  },
1148
  {
1149
  "trainset_id": "TS-002",
1150
  "component": "Bogie",
1151
+ "status": "POOR",
1152
+ "wear_level": 81.3,
1153
+ "last_inspection": "2025-11-02"
1154
  },
1155
  {
1156
  "trainset_id": "TS-002",
1157
  "component": "Coupler",
1158
+ "status": "FAIR",
1159
+ "wear_level": 82.5,
1160
+ "last_inspection": "2025-11-08"
1161
  },
1162
  {
1163
  "trainset_id": "TS-002",
1164
  "component": "Battery",
1165
+ "status": "GOOD",
1166
+ "wear_level": 10.2,
1167
+ "last_inspection": "2025-11-23"
1168
  },
1169
  {
1170
  "trainset_id": "TS-003",
1171
  "component": "Traction_Motor",
1172
+ "status": "EXCELLENT",
1173
+ "wear_level": 20.0,
1174
+ "last_inspection": "2025-11-06"
1175
  },
1176
  {
1177
  "trainset_id": "TS-003",
1178
  "component": "Brake_System",
1179
+ "status": "EXCELLENT",
1180
+ "wear_level": 22.4,
1181
+ "last_inspection": "2025-11-15"
1182
  },
1183
  {
1184
  "trainset_id": "TS-003",
1185
  "component": "HVAC",
1186
  "status": "POOR",
1187
+ "wear_level": 76.1,
1188
  "last_inspection": "2025-11-07"
1189
  },
1190
  {
1191
  "trainset_id": "TS-003",
1192
  "component": "Door_System",
1193
  "status": "EXCELLENT",
1194
+ "wear_level": 32.3,
1195
+ "last_inspection": "2025-11-16"
1196
  },
1197
  {
1198
  "trainset_id": "TS-003",
1199
  "component": "Pantograph",
1200
+ "status": "EXCELLENT",
1201
+ "wear_level": 14.9,
1202
+ "last_inspection": "2025-11-17"
1203
  },
1204
  {
1205
  "trainset_id": "TS-003",
1206
  "component": "Bogie",
1207
+ "status": "EXCELLENT",
1208
+ "wear_level": 31.9,
1209
+ "last_inspection": "2025-11-11"
1210
  },
1211
  {
1212
  "trainset_id": "TS-003",
1213
  "component": "Coupler",
1214
+ "status": "POOR",
1215
+ "wear_level": 79.3,
1216
+ "last_inspection": "2025-11-25"
1217
  },
1218
  {
1219
  "trainset_id": "TS-003",
1220
  "component": "Battery",
1221
+ "status": "GOOD",
1222
+ "wear_level": 48.9,
1223
+ "last_inspection": "2025-11-15"
1224
  },
1225
  {
1226
  "trainset_id": "TS-004",
1227
  "component": "Traction_Motor",
1228
+ "status": "GOOD",
1229
+ "wear_level": 47.6,
1230
+ "last_inspection": "2025-11-17"
1231
  },
1232
  {
1233
  "trainset_id": "TS-004",
1234
  "component": "Brake_System",
1235
  "status": "GOOD",
1236
+ "wear_level": 33.0,
1237
+ "last_inspection": "2025-12-01"
1238
  },
1239
  {
1240
  "trainset_id": "TS-004",
1241
  "component": "HVAC",
1242
+ "status": "GOOD",
1243
+ "wear_level": 37.5,
1244
+ "last_inspection": "2025-11-30"
1245
  },
1246
  {
1247
  "trainset_id": "TS-004",
1248
  "component": "Door_System",
1249
+ "status": "EXCELLENT",
1250
+ "wear_level": 33.3,
1251
+ "last_inspection": "2025-11-26"
1252
  },
1253
  {
1254
  "trainset_id": "TS-004",
1255
  "component": "Pantograph",
1256
  "status": "EXCELLENT",
1257
+ "wear_level": 29.2,
1258
  "last_inspection": "2025-11-26"
1259
  },
1260
  {
1261
  "trainset_id": "TS-004",
1262
  "component": "Bogie",
1263
  "status": "GOOD",
1264
+ "wear_level": 30.3,
1265
+ "last_inspection": "2025-11-30"
1266
  },
1267
  {
1268
  "trainset_id": "TS-004",
1269
  "component": "Coupler",
1270
  "status": "GOOD",
1271
+ "wear_level": 11.3,
1272
+ "last_inspection": "2025-11-12"
1273
  },
1274
  {
1275
  "trainset_id": "TS-004",
1276
  "component": "Battery",
1277
  "status": "GOOD",
1278
+ "wear_level": 46.4,
1279
+ "last_inspection": "2025-11-27"
1280
  },
1281
  {
1282
  "trainset_id": "TS-005",
1283
  "component": "Traction_Motor",
1284
  "status": "EXCELLENT",
1285
+ "wear_level": 40.1,
1286
+ "last_inspection": "2025-11-29"
1287
  },
1288
  {
1289
  "trainset_id": "TS-005",
1290
  "component": "Brake_System",
1291
+ "status": "FAIR",
1292
+ "wear_level": 94.9,
1293
+ "last_inspection": "2025-11-03"
1294
  },
1295
  {
1296
  "trainset_id": "TS-005",
1297
  "component": "HVAC",
1298
+ "status": "FAIR",
1299
+ "wear_level": 77.5,
1300
+ "last_inspection": "2025-11-27"
1301
  },
1302
  {
1303
  "trainset_id": "TS-005",
1304
  "component": "Door_System",
1305
  "status": "CRITICAL",
1306
+ "wear_level": 73.9,
1307
+ "last_inspection": "2025-11-09"
1308
  },
1309
  {
1310
  "trainset_id": "TS-005",
1311
  "component": "Pantograph",
1312
  "status": "GOOD",
1313
+ "wear_level": 25.3,
1314
+ "last_inspection": "2025-11-21"
1315
  },
1316
  {
1317
  "trainset_id": "TS-005",
1318
  "component": "Bogie",
1319
  "status": "EXCELLENT",
1320
+ "wear_level": 37.3,
1321
+ "last_inspection": "2025-11-20"
1322
  },
1323
  {
1324
  "trainset_id": "TS-005",
1325
  "component": "Coupler",
1326
+ "status": "POOR",
1327
+ "wear_level": 79.9,
1328
+ "last_inspection": "2025-11-05"
1329
  },
1330
  {
1331
  "trainset_id": "TS-005",
1332
  "component": "Battery",
1333
+ "status": "CRITICAL",
1334
+ "wear_level": 60.8,
1335
+ "last_inspection": "2025-11-24"
1336
  },
1337
  {
1338
  "trainset_id": "TS-006",
1339
  "component": "Traction_Motor",
1340
  "status": "EXCELLENT",
1341
+ "wear_level": 32.7,
1342
+ "last_inspection": "2025-11-13"
1343
  },
1344
  {
1345
  "trainset_id": "TS-006",
1346
  "component": "Brake_System",
1347
+ "status": "GOOD",
1348
+ "wear_level": 17.3,
1349
+ "last_inspection": "2025-11-28"
1350
  },
1351
  {
1352
  "trainset_id": "TS-006",
1353
  "component": "HVAC",
1354
+ "status": "GOOD",
1355
+ "wear_level": 22.7,
1356
+ "last_inspection": "2025-11-02"
1357
  },
1358
  {
1359
  "trainset_id": "TS-006",
1360
  "component": "Door_System",
1361
+ "status": "GOOD",
1362
+ "wear_level": 38.9,
1363
+ "last_inspection": "2025-11-15"
1364
  },
1365
  {
1366
  "trainset_id": "TS-006",
1367
  "component": "Pantograph",
1368
  "status": "EXCELLENT",
1369
+ "wear_level": 40.3,
1370
+ "last_inspection": "2025-11-13"
1371
  },
1372
  {
1373
  "trainset_id": "TS-006",
1374
  "component": "Bogie",
1375
  "status": "GOOD",
1376
+ "wear_level": 11.4,
1377
  "last_inspection": "2025-11-15"
1378
  },
1379
  {
1380
  "trainset_id": "TS-006",
1381
  "component": "Coupler",
1382
  "status": "GOOD",
1383
+ "wear_level": 22.0,
1384
+ "last_inspection": "2025-11-17"
1385
  },
1386
  {
1387
  "trainset_id": "TS-006",
1388
  "component": "Battery",
1389
+ "status": "EXCELLENT",
1390
+ "wear_level": 22.7,
1391
+ "last_inspection": "2025-12-01"
1392
  },
1393
  {
1394
  "trainset_id": "TS-007",
1395
  "component": "Traction_Motor",
1396
  "status": "GOOD",
1397
+ "wear_level": 49.8,
1398
+ "last_inspection": "2025-11-18"
1399
  },
1400
  {
1401
  "trainset_id": "TS-007",
1402
  "component": "Brake_System",
1403
+ "status": "GOOD",
1404
+ "wear_level": 34.4,
1405
+ "last_inspection": "2025-11-27"
1406
  },
1407
  {
1408
  "trainset_id": "TS-007",
1409
  "component": "HVAC",
1410
+ "status": "GOOD",
1411
+ "wear_level": 33.4,
1412
+ "last_inspection": "2025-11-28"
1413
  },
1414
  {
1415
  "trainset_id": "TS-007",
1416
  "component": "Door_System",
1417
+ "status": "EXCELLENT",
1418
+ "wear_level": 12.7,
1419
+ "last_inspection": "2025-11-11"
1420
  },
1421
  {
1422
  "trainset_id": "TS-007",
1423
  "component": "Pantograph",
1424
+ "status": "GOOD",
1425
+ "wear_level": 36.7,
1426
+ "last_inspection": "2025-11-10"
1427
  },
1428
  {
1429
  "trainset_id": "TS-007",
1430
  "component": "Bogie",
1431
+ "status": "CRITICAL",
1432
+ "wear_level": 90.6,
1433
+ "last_inspection": "2025-11-05"
1434
  },
1435
  {
1436
  "trainset_id": "TS-007",
1437
  "component": "Coupler",
1438
  "status": "EXCELLENT",
1439
+ "wear_level": 38.4,
1440
+ "last_inspection": "2025-11-11"
1441
  },
1442
  {
1443
  "trainset_id": "TS-007",
1444
  "component": "Battery",
1445
+ "status": "EXCELLENT",
1446
+ "wear_level": 25.0,
1447
+ "last_inspection": "2025-11-22"
1448
  },
1449
  {
1450
  "trainset_id": "TS-008",
1451
  "component": "Traction_Motor",
1452
+ "status": "POOR",
1453
+ "wear_level": 68.3,
1454
+ "last_inspection": "2025-11-14"
1455
  },
1456
  {
1457
  "trainset_id": "TS-008",
1458
  "component": "Brake_System",
1459
+ "status": "EXCELLENT",
1460
+ "wear_level": 40.4,
1461
+ "last_inspection": "2025-11-07"
1462
  },
1463
  {
1464
  "trainset_id": "TS-008",
1465
  "component": "HVAC",
1466
  "status": "EXCELLENT",
1467
+ "wear_level": 48.3,
1468
+ "last_inspection": "2025-11-07"
1469
  },
1470
  {
1471
  "trainset_id": "TS-008",
1472
  "component": "Door_System",
1473
+ "status": "GOOD",
1474
+ "wear_level": 26.8,
1475
+ "last_inspection": "2025-11-14"
1476
  },
1477
  {
1478
  "trainset_id": "TS-008",
1479
  "component": "Pantograph",
1480
  "status": "EXCELLENT",
1481
+ "wear_level": 34.6,
1482
+ "last_inspection": "2025-11-30"
1483
  },
1484
  {
1485
  "trainset_id": "TS-008",
1486
  "component": "Bogie",
1487
+ "status": "CRITICAL",
1488
+ "wear_level": 72.1,
1489
+ "last_inspection": "2025-11-24"
1490
  },
1491
  {
1492
  "trainset_id": "TS-008",
1493
  "component": "Coupler",
1494
+ "status": "EXCELLENT",
1495
+ "wear_level": 49.4,
1496
+ "last_inspection": "2025-11-24"
1497
  },
1498
  {
1499
  "trainset_id": "TS-008",
1500
  "component": "Battery",
1501
+ "status": "EXCELLENT",
1502
+ "wear_level": 15.5,
1503
+ "last_inspection": "2025-11-27"
1504
  },
1505
  {
1506
  "trainset_id": "TS-009",
1507
  "component": "Traction_Motor",
1508
  "status": "EXCELLENT",
1509
+ "wear_level": 39.4,
1510
+ "last_inspection": "2025-11-15"
1511
  },
1512
  {
1513
  "trainset_id": "TS-009",
1514
  "component": "Brake_System",
1515
  "status": "GOOD",
1516
+ "wear_level": 23.5,
1517
+ "last_inspection": "2025-11-06"
1518
  },
1519
  {
1520
  "trainset_id": "TS-009",
1521
  "component": "HVAC",
1522
  "status": "GOOD",
1523
+ "wear_level": 38.4,
1524
+ "last_inspection": "2025-11-28"
1525
  },
1526
  {
1527
  "trainset_id": "TS-009",
1528
  "component": "Door_System",
1529
+ "status": "EXCELLENT",
1530
+ "wear_level": 18.0,
1531
+ "last_inspection": "2025-12-01"
1532
  },
1533
  {
1534
  "trainset_id": "TS-009",
1535
  "component": "Pantograph",
1536
+ "status": "GOOD",
1537
+ "wear_level": 31.5,
1538
+ "last_inspection": "2025-11-15"
1539
  },
1540
  {
1541
  "trainset_id": "TS-009",
1542
  "component": "Bogie",
1543
+ "status": "GOOD",
1544
+ "wear_level": 11.8,
1545
+ "last_inspection": "2025-11-12"
1546
  },
1547
  {
1548
  "trainset_id": "TS-009",
1549
  "component": "Coupler",
1550
+ "status": "EXCELLENT",
1551
+ "wear_level": 22.7,
1552
+ "last_inspection": "2025-11-18"
1553
  },
1554
  {
1555
  "trainset_id": "TS-009",
1556
  "component": "Battery",
1557
  "status": "EXCELLENT",
1558
+ "wear_level": 13.9,
1559
+ "last_inspection": "2025-11-30"
1560
  },
1561
  {
1562
  "trainset_id": "TS-010",
1563
  "component": "Traction_Motor",
1564
+ "status": "EXCELLENT",
1565
+ "wear_level": 47.7,
1566
+ "last_inspection": "2025-11-19"
1567
  },
1568
  {
1569
  "trainset_id": "TS-010",
1570
  "component": "Brake_System",
1571
  "status": "EXCELLENT",
1572
+ "wear_level": 15.8,
1573
+ "last_inspection": "2025-11-27"
1574
  },
1575
  {
1576
  "trainset_id": "TS-010",
1577
  "component": "HVAC",
1578
  "status": "GOOD",
1579
+ "wear_level": 45.6,
1580
+ "last_inspection": "2025-11-15"
1581
  },
1582
  {
1583
  "trainset_id": "TS-010",
1584
  "component": "Door_System",
1585
+ "status": "GOOD",
1586
+ "wear_level": 31.4,
1587
+ "last_inspection": "2025-11-30"
1588
  },
1589
  {
1590
  "trainset_id": "TS-010",
1591
  "component": "Pantograph",
1592
  "status": "GOOD",
1593
+ "wear_level": 26.0,
1594
+ "last_inspection": "2025-11-10"
1595
  },
1596
  {
1597
  "trainset_id": "TS-010",
1598
  "component": "Bogie",
1599
  "status": "GOOD",
1600
+ "wear_level": 45.9,
1601
+ "last_inspection": "2025-11-15"
1602
  },
1603
  {
1604
  "trainset_id": "TS-010",
1605
  "component": "Coupler",
1606
  "status": "EXCELLENT",
1607
+ "wear_level": 15.4,
1608
+ "last_inspection": "2025-11-16"
1609
  },
1610
  {
1611
  "trainset_id": "TS-010",
1612
  "component": "Battery",
1613
+ "status": "GOOD",
1614
+ "wear_level": 39.8,
1615
+ "last_inspection": "2025-11-04"
1616
  },
1617
  {
1618
  "trainset_id": "TS-011",
1619
  "component": "Traction_Motor",
1620
+ "status": "GOOD",
1621
  "wear_level": 41.9,
1622
+ "last_inspection": "2025-11-14"
1623
  },
1624
  {
1625
  "trainset_id": "TS-011",
1626
  "component": "Brake_System",
1627
+ "status": "EXCELLENT",
1628
+ "wear_level": 13.7,
1629
+ "last_inspection": "2025-11-27"
1630
  },
1631
  {
1632
  "trainset_id": "TS-011",
1633
  "component": "HVAC",
1634
  "status": "EXCELLENT",
1635
+ "wear_level": 11.6,
1636
+ "last_inspection": "2025-11-25"
1637
  },
1638
  {
1639
  "trainset_id": "TS-011",
1640
  "component": "Door_System",
1641
+ "status": "GOOD",
1642
+ "wear_level": 49.7,
1643
+ "last_inspection": "2025-11-20"
1644
  },
1645
  {
1646
  "trainset_id": "TS-011",
1647
  "component": "Pantograph",
1648
+ "status": "EXCELLENT",
1649
+ "wear_level": 41.6,
1650
+ "last_inspection": "2025-11-29"
1651
  },
1652
  {
1653
  "trainset_id": "TS-011",
1654
  "component": "Bogie",
1655
+ "status": "GOOD",
1656
+ "wear_level": 24.2,
1657
+ "last_inspection": "2025-11-19"
1658
  },
1659
  {
1660
  "trainset_id": "TS-011",
1661
  "component": "Coupler",
1662
+ "status": "GOOD",
1663
+ "wear_level": 11.9,
1664
+ "last_inspection": "2025-11-22"
1665
  },
1666
  {
1667
  "trainset_id": "TS-011",
1668
  "component": "Battery",
1669
  "status": "EXCELLENT",
1670
+ "wear_level": 24.9,
1671
+ "last_inspection": "2025-11-03"
1672
  },
1673
  {
1674
  "trainset_id": "TS-012",
1675
  "component": "Traction_Motor",
1676
+ "status": "EXCELLENT",
1677
+ "wear_level": 26.7,
1678
+ "last_inspection": "2025-11-25"
1679
  },
1680
  {
1681
  "trainset_id": "TS-012",
1682
  "component": "Brake_System",
1683
  "status": "EXCELLENT",
1684
+ "wear_level": 40.0,
1685
+ "last_inspection": "2025-11-24"
1686
  },
1687
  {
1688
  "trainset_id": "TS-012",
1689
  "component": "HVAC",
1690
+ "status": "GOOD",
1691
+ "wear_level": 19.9,
1692
+ "last_inspection": "2025-11-07"
1693
  },
1694
  {
1695
  "trainset_id": "TS-012",
1696
  "component": "Door_System",
1697
  "status": "GOOD",
1698
+ "wear_level": 17.3,
1699
+ "last_inspection": "2025-11-06"
1700
  },
1701
  {
1702
  "trainset_id": "TS-012",
1703
  "component": "Pantograph",
1704
+ "status": "FAIR",
1705
+ "wear_level": 78.8,
1706
+ "last_inspection": "2025-11-14"
1707
  },
1708
  {
1709
  "trainset_id": "TS-012",
1710
  "component": "Bogie",
1711
+ "status": "EXCELLENT",
1712
+ "wear_level": 14.9,
1713
+ "last_inspection": "2025-11-24"
1714
  },
1715
  {
1716
  "trainset_id": "TS-012",
1717
  "component": "Coupler",
1718
+ "status": "EXCELLENT",
1719
+ "wear_level": 36.8,
1720
+ "last_inspection": "2025-11-21"
1721
  },
1722
  {
1723
  "trainset_id": "TS-012",
1724
  "component": "Battery",
1725
+ "status": "EXCELLENT",
1726
+ "wear_level": 48.7,
1727
+ "last_inspection": "2025-11-29"
1728
  },
1729
  {
1730
  "trainset_id": "TS-013",
1731
  "component": "Traction_Motor",
1732
  "status": "GOOD",
1733
+ "wear_level": 47.1,
1734
+ "last_inspection": "2025-11-02"
1735
  },
1736
  {
1737
  "trainset_id": "TS-013",
1738
  "component": "Brake_System",
1739
+ "status": "CRITICAL",
1740
+ "wear_level": 75.2,
1741
+ "last_inspection": "2025-11-25"
1742
  },
1743
  {
1744
  "trainset_id": "TS-013",
1745
  "component": "HVAC",
1746
+ "status": "GOOD",
1747
+ "wear_level": 10.1,
1748
+ "last_inspection": "2025-12-01"
1749
  },
1750
  {
1751
  "trainset_id": "TS-013",
1752
  "component": "Door_System",
1753
  "status": "EXCELLENT",
1754
+ "wear_level": 43.4,
1755
+ "last_inspection": "2025-11-13"
1756
  },
1757
  {
1758
  "trainset_id": "TS-013",
1759
  "component": "Pantograph",
1760
+ "status": "EXCELLENT",
1761
+ "wear_level": 32.7,
1762
+ "last_inspection": "2025-11-11"
1763
  },
1764
  {
1765
  "trainset_id": "TS-013",
1766
  "component": "Bogie",
1767
  "status": "EXCELLENT",
1768
+ "wear_level": 49.8,
1769
+ "last_inspection": "2025-11-21"
1770
  },
1771
  {
1772
  "trainset_id": "TS-013",
1773
  "component": "Coupler",
1774
  "status": "GOOD",
1775
+ "wear_level": 10.9,
1776
+ "last_inspection": "2025-11-03"
1777
  },
1778
  {
1779
  "trainset_id": "TS-013",
1780
  "component": "Battery",
1781
+ "status": "CRITICAL",
1782
+ "wear_level": 78.4,
1783
+ "last_inspection": "2025-11-06"
1784
  },
1785
  {
1786
  "trainset_id": "TS-014",
1787
  "component": "Traction_Motor",
1788
  "status": "GOOD",
1789
+ "wear_level": 45.3,
1790
+ "last_inspection": "2025-11-28"
1791
  },
1792
  {
1793
  "trainset_id": "TS-014",
1794
  "component": "Brake_System",
1795
+ "status": "FAIR",
1796
+ "wear_level": 72.1,
1797
+ "last_inspection": "2025-11-16"
1798
  },
1799
  {
1800
  "trainset_id": "TS-014",
1801
  "component": "HVAC",
1802
  "status": "EXCELLENT",
1803
+ "wear_level": 12.7,
1804
+ "last_inspection": "2025-12-01"
1805
  },
1806
  {
1807
  "trainset_id": "TS-014",
1808
  "component": "Door_System",
1809
+ "status": "EXCELLENT",
1810
+ "wear_level": 16.8,
1811
+ "last_inspection": "2025-11-30"
1812
  },
1813
  {
1814
  "trainset_id": "TS-014",
1815
  "component": "Pantograph",
1816
+ "status": "EXCELLENT",
1817
+ "wear_level": 24.9,
1818
+ "last_inspection": "2025-11-10"
1819
  },
1820
  {
1821
  "trainset_id": "TS-014",
1822
  "component": "Bogie",
1823
+ "status": "EXCELLENT",
1824
+ "wear_level": 35.0,
1825
+ "last_inspection": "2025-11-18"
1826
  },
1827
  {
1828
  "trainset_id": "TS-014",
1829
  "component": "Coupler",
1830
+ "status": "EXCELLENT",
1831
+ "wear_level": 17.3,
1832
+ "last_inspection": "2025-11-23"
1833
  },
1834
  {
1835
  "trainset_id": "TS-014",
1836
  "component": "Battery",
1837
  "status": "GOOD",
1838
+ "wear_level": 28.9,
1839
+ "last_inspection": "2025-11-17"
1840
  },
1841
  {
1842
  "trainset_id": "TS-015",
1843
  "component": "Traction_Motor",
1844
+ "status": "FAIR",
1845
+ "wear_level": 78.5,
1846
+ "last_inspection": "2025-11-03"
1847
  },
1848
  {
1849
  "trainset_id": "TS-015",
1850
  "component": "Brake_System",
1851
  "status": "GOOD",
1852
+ "wear_level": 42.4,
1853
+ "last_inspection": "2025-11-04"
1854
  },
1855
  {
1856
  "trainset_id": "TS-015",
1857
  "component": "HVAC",
1858
+ "status": "EXCELLENT",
1859
+ "wear_level": 36.9,
1860
+ "last_inspection": "2025-11-24"
1861
  },
1862
  {
1863
  "trainset_id": "TS-015",
1864
  "component": "Door_System",
1865
  "status": "GOOD",
1866
+ "wear_level": 35.7,
1867
+ "last_inspection": "2025-11-07"
1868
  },
1869
  {
1870
  "trainset_id": "TS-015",
1871
  "component": "Pantograph",
1872
  "status": "EXCELLENT",
1873
+ "wear_level": 24.5,
1874
+ "last_inspection": "2025-11-10"
1875
  },
1876
  {
1877
  "trainset_id": "TS-015",
1878
  "component": "Bogie",
1879
+ "status": "GOOD",
1880
+ "wear_level": 33.3,
1881
+ "last_inspection": "2025-11-17"
1882
  },
1883
  {
1884
  "trainset_id": "TS-015",
1885
  "component": "Coupler",
1886
+ "status": "GOOD",
1887
+ "wear_level": 13.6,
1888
+ "last_inspection": "2025-11-27"
1889
  },
1890
  {
1891
  "trainset_id": "TS-015",
1892
  "component": "Battery",
1893
+ "status": "GOOD",
1894
+ "wear_level": 26.0,
1895
+ "last_inspection": "2025-11-27"
1896
  },
1897
  {
1898
  "trainset_id": "TS-016",
1899
  "component": "Traction_Motor",
1900
+ "status": "GOOD",
1901
+ "wear_level": 45.4,
1902
+ "last_inspection": "2025-11-18"
1903
  },
1904
  {
1905
  "trainset_id": "TS-016",
1906
  "component": "Brake_System",
1907
  "status": "GOOD",
1908
+ "wear_level": 38.2,
1909
+ "last_inspection": "2025-11-16"
1910
  },
1911
  {
1912
  "trainset_id": "TS-016",
1913
  "component": "HVAC",
1914
  "status": "EXCELLENT",
1915
+ "wear_level": 30.6,
1916
+ "last_inspection": "2025-11-27"
1917
  },
1918
  {
1919
  "trainset_id": "TS-016",
1920
  "component": "Door_System",
1921
+ "status": "GOOD",
1922
+ "wear_level": 13.3,
1923
+ "last_inspection": "2025-11-18"
1924
  },
1925
  {
1926
  "trainset_id": "TS-016",
1927
  "component": "Pantograph",
1928
+ "status": "CRITICAL",
1929
+ "wear_level": 65.3,
1930
+ "last_inspection": "2025-11-13"
1931
  },
1932
  {
1933
  "trainset_id": "TS-016",
1934
  "component": "Bogie",
1935
+ "status": "GOOD",
1936
+ "wear_level": 17.8,
1937
+ "last_inspection": "2025-11-20"
1938
  },
1939
  {
1940
  "trainset_id": "TS-016",
1941
  "component": "Coupler",
1942
  "status": "EXCELLENT",
1943
+ "wear_level": 45.4,
1944
+ "last_inspection": "2025-11-23"
1945
  },
1946
  {
1947
  "trainset_id": "TS-016",
1948
  "component": "Battery",
1949
+ "status": "EXCELLENT",
1950
+ "wear_level": 11.2,
1951
+ "last_inspection": "2025-11-02"
1952
  },
1953
  {
1954
  "trainset_id": "TS-017",
1955
  "component": "Traction_Motor",
1956
  "status": "GOOD",
1957
+ "wear_level": 47.5,
1958
+ "last_inspection": "2025-11-07"
1959
  },
1960
  {
1961
  "trainset_id": "TS-017",
1962
  "component": "Brake_System",
1963
+ "status": "FAIR",
1964
+ "wear_level": 83.0,
1965
+ "last_inspection": "2025-11-28"
1966
  },
1967
  {
1968
  "trainset_id": "TS-017",
1969
  "component": "HVAC",
1970
  "status": "GOOD",
1971
+ "wear_level": 47.2,
1972
+ "last_inspection": "2025-11-30"
1973
  },
1974
  {
1975
  "trainset_id": "TS-017",
1976
  "component": "Door_System",
1977
  "status": "EXCELLENT",
1978
+ "wear_level": 36.6,
1979
+ "last_inspection": "2025-11-22"
1980
  },
1981
  {
1982
  "trainset_id": "TS-017",
1983
  "component": "Pantograph",
1984
+ "status": "GOOD",
1985
+ "wear_level": 12.9,
1986
+ "last_inspection": "2025-11-03"
1987
  },
1988
  {
1989
  "trainset_id": "TS-017",
1990
  "component": "Bogie",
1991
  "status": "GOOD",
1992
+ "wear_level": 24.1,
1993
+ "last_inspection": "2025-11-21"
1994
  },
1995
  {
1996
  "trainset_id": "TS-017",
1997
  "component": "Coupler",
1998
  "status": "GOOD",
1999
+ "wear_level": 21.0,
2000
+ "last_inspection": "2025-11-28"
2001
  },
2002
  {
2003
  "trainset_id": "TS-017",
2004
  "component": "Battery",
2005
+ "status": "EXCELLENT",
2006
+ "wear_level": 49.4,
2007
  "last_inspection": "2025-11-21"
2008
  },
2009
  {
2010
  "trainset_id": "TS-018",
2011
  "component": "Traction_Motor",
2012
+ "status": "POOR",
2013
+ "wear_level": 93.9,
2014
+ "last_inspection": "2025-11-06"
2015
  },
2016
  {
2017
  "trainset_id": "TS-018",
2018
  "component": "Brake_System",
2019
  "status": "EXCELLENT",
2020
+ "wear_level": 26.3,
2021
+ "last_inspection": "2025-11-11"
2022
  },
2023
  {
2024
  "trainset_id": "TS-018",
2025
  "component": "HVAC",
2026
+ "status": "EXCELLENT",
2027
+ "wear_level": 36.6,
2028
+ "last_inspection": "2025-11-09"
2029
  },
2030
  {
2031
  "trainset_id": "TS-018",
2032
  "component": "Door_System",
2033
+ "status": "GOOD",
2034
+ "wear_level": 23.0,
2035
+ "last_inspection": "2025-11-14"
2036
  },
2037
  {
2038
  "trainset_id": "TS-018",
2039
  "component": "Pantograph",
2040
+ "status": "GOOD",
2041
+ "wear_level": 31.9,
2042
+ "last_inspection": "2025-11-21"
2043
  },
2044
  {
2045
  "trainset_id": "TS-018",
2046
  "component": "Bogie",
2047
+ "status": "FAIR",
2048
+ "wear_level": 83.1,
2049
+ "last_inspection": "2025-11-09"
2050
  },
2051
  {
2052
  "trainset_id": "TS-018",
2053
  "component": "Coupler",
2054
+ "status": "GOOD",
2055
+ "wear_level": 41.8,
2056
+ "last_inspection": "2025-11-30"
2057
  },
2058
  {
2059
  "trainset_id": "TS-018",
2060
  "component": "Battery",
2061
+ "status": "CRITICAL",
2062
+ "wear_level": 73.7,
2063
+ "last_inspection": "2025-11-03"
2064
  },
2065
  {
2066
  "trainset_id": "TS-019",
2067
  "component": "Traction_Motor",
2068
  "status": "GOOD",
2069
+ "wear_level": 43.5,
2070
+ "last_inspection": "2025-11-16"
2071
  },
2072
  {
2073
  "trainset_id": "TS-019",
2074
  "component": "Brake_System",
2075
+ "status": "FAIR",
2076
+ "wear_level": 66.4,
2077
+ "last_inspection": "2025-11-18"
2078
  },
2079
  {
2080
  "trainset_id": "TS-019",
2081
  "component": "HVAC",
2082
  "status": "GOOD",
2083
+ "wear_level": 27.6,
2084
+ "last_inspection": "2025-12-01"
2085
  },
2086
  {
2087
  "trainset_id": "TS-019",
2088
  "component": "Door_System",
2089
+ "status": "EXCELLENT",
2090
+ "wear_level": 36.5,
2091
+ "last_inspection": "2025-11-15"
2092
  },
2093
  {
2094
  "trainset_id": "TS-019",
2095
  "component": "Pantograph",
2096
+ "status": "FAIR",
2097
+ "wear_level": 80.0,
2098
+ "last_inspection": "2025-11-24"
2099
  },
2100
  {
2101
  "trainset_id": "TS-019",
2102
  "component": "Bogie",
2103
  "status": "EXCELLENT",
2104
+ "wear_level": 33.3,
2105
+ "last_inspection": "2025-11-26"
2106
  },
2107
  {
2108
  "trainset_id": "TS-019",
2109
  "component": "Coupler",
2110
  "status": "GOOD",
2111
+ "wear_level": 27.4,
2112
+ "last_inspection": "2025-11-23"
2113
  },
2114
  {
2115
  "trainset_id": "TS-019",
2116
  "component": "Battery",
2117
  "status": "GOOD",
2118
+ "wear_level": 25.2,
2119
+ "last_inspection": "2025-11-11"
2120
  },
2121
  {
2122
  "trainset_id": "TS-020",
2123
  "component": "Traction_Motor",
2124
  "status": "EXCELLENT",
2125
+ "wear_level": 49.9,
2126
+ "last_inspection": "2025-11-02"
2127
  },
2128
  {
2129
  "trainset_id": "TS-020",
2130
  "component": "Brake_System",
2131
+ "status": "GOOD",
2132
+ "wear_level": 12.9,
2133
+ "last_inspection": "2025-11-17"
2134
  },
2135
  {
2136
  "trainset_id": "TS-020",
2137
  "component": "HVAC",
2138
  "status": "GOOD",
2139
+ "wear_level": 49.9,
2140
+ "last_inspection": "2025-11-12"
2141
  },
2142
  {
2143
  "trainset_id": "TS-020",
2144
  "component": "Door_System",
2145
+ "status": "GOOD",
2146
+ "wear_level": 12.4,
2147
+ "last_inspection": "2025-11-02"
2148
  },
2149
  {
2150
  "trainset_id": "TS-020",
2151
  "component": "Pantograph",
2152
+ "status": "EXCELLENT",
2153
+ "wear_level": 15.9,
2154
+ "last_inspection": "2025-11-20"
2155
  },
2156
  {
2157
  "trainset_id": "TS-020",
2158
  "component": "Bogie",
2159
  "status": "GOOD",
2160
+ "wear_level": 12.5,
2161
+ "last_inspection": "2025-11-23"
2162
  },
2163
  {
2164
  "trainset_id": "TS-020",
2165
  "component": "Coupler",
2166
  "status": "EXCELLENT",
2167
+ "wear_level": 43.4,
2168
+ "last_inspection": "2025-11-23"
2169
  },
2170
  {
2171
  "trainset_id": "TS-020",
2172
  "component": "Battery",
2173
+ "status": "GOOD",
2174
+ "wear_level": 17.5,
2175
+ "last_inspection": "2025-11-08"
2176
  },
2177
  {
2178
  "trainset_id": "TS-021",
2179
  "component": "Traction_Motor",
2180
+ "status": "EXCELLENT",
2181
+ "wear_level": 16.0,
2182
+ "last_inspection": "2025-11-23"
2183
  },
2184
  {
2185
  "trainset_id": "TS-021",
2186
  "component": "Brake_System",
2187
  "status": "EXCELLENT",
2188
+ "wear_level": 33.5,
2189
+ "last_inspection": "2025-11-27"
2190
  },
2191
  {
2192
  "trainset_id": "TS-021",
2193
  "component": "HVAC",
2194
  "status": "GOOD",
2195
+ "wear_level": 20.9,
2196
+ "last_inspection": "2025-11-19"
2197
  },
2198
  {
2199
  "trainset_id": "TS-021",
2200
  "component": "Door_System",
2201
  "status": "EXCELLENT",
2202
+ "wear_level": 33.7,
2203
+ "last_inspection": "2025-11-05"
2204
  },
2205
  {
2206
  "trainset_id": "TS-021",
2207
  "component": "Pantograph",
2208
+ "status": "GOOD",
2209
+ "wear_level": 41.2,
2210
  "last_inspection": "2025-11-08"
2211
  },
2212
  {
2213
  "trainset_id": "TS-021",
2214
  "component": "Bogie",
2215
  "status": "EXCELLENT",
2216
+ "wear_level": 48.3,
2217
+ "last_inspection": "2025-11-09"
2218
  },
2219
  {
2220
  "trainset_id": "TS-021",
2221
  "component": "Coupler",
2222
+ "status": "FAIR",
2223
+ "wear_level": 66.6,
2224
+ "last_inspection": "2025-11-22"
2225
  },
2226
  {
2227
  "trainset_id": "TS-021",
2228
  "component": "Battery",
2229
  "status": "EXCELLENT",
2230
+ "wear_level": 23.6,
2231
+ "last_inspection": "2025-11-16"
2232
  },
2233
  {
2234
  "trainset_id": "TS-022",
2235
  "component": "Traction_Motor",
2236
+ "status": "EXCELLENT",
2237
+ "wear_level": 20.3,
2238
+ "last_inspection": "2025-11-13"
2239
  },
2240
  {
2241
  "trainset_id": "TS-022",
2242
  "component": "Brake_System",
2243
+ "status": "GOOD",
2244
+ "wear_level": 12.1,
2245
+ "last_inspection": "2025-12-01"
2246
  },
2247
  {
2248
  "trainset_id": "TS-022",
2249
  "component": "HVAC",
2250
+ "status": "GOOD",
2251
+ "wear_level": 18.9,
2252
+ "last_inspection": "2025-11-23"
2253
  },
2254
  {
2255
  "trainset_id": "TS-022",
2256
  "component": "Door_System",
2257
+ "status": "GOOD",
2258
+ "wear_level": 32.9,
2259
+ "last_inspection": "2025-11-22"
2260
  },
2261
  {
2262
  "trainset_id": "TS-022",
2263
  "component": "Pantograph",
2264
+ "status": "EXCELLENT",
2265
+ "wear_level": 44.3,
2266
+ "last_inspection": "2025-11-27"
2267
  },
2268
  {
2269
  "trainset_id": "TS-022",
2270
  "component": "Bogie",
2271
  "status": "GOOD",
2272
+ "wear_level": 49.3,
2273
+ "last_inspection": "2025-11-05"
2274
  },
2275
  {
2276
  "trainset_id": "TS-022",
2277
  "component": "Coupler",
2278
  "status": "POOR",
2279
+ "wear_level": 80.1,
2280
+ "last_inspection": "2025-11-17"
2281
  },
2282
  {
2283
  "trainset_id": "TS-022",
2284
  "component": "Battery",
2285
  "status": "GOOD",
2286
+ "wear_level": 43.4,
2287
+ "last_inspection": "2025-11-23"
2288
  },
2289
  {
2290
  "trainset_id": "TS-023",
2291
  "component": "Traction_Motor",
2292
+ "status": "GOOD",
2293
+ "wear_level": 24.1,
2294
+ "last_inspection": "2025-11-11"
2295
  },
2296
  {
2297
  "trainset_id": "TS-023",
2298
  "component": "Brake_System",
2299
  "status": "GOOD",
2300
+ "wear_level": 40.7,
2301
+ "last_inspection": "2025-11-14"
2302
  },
2303
  {
2304
  "trainset_id": "TS-023",
2305
  "component": "HVAC",
2306
+ "status": "GOOD",
2307
+ "wear_level": 27.4,
2308
+ "last_inspection": "2025-11-30"
2309
  },
2310
  {
2311
  "trainset_id": "TS-023",
2312
  "component": "Door_System",
2313
+ "status": "GOOD",
2314
+ "wear_level": 24.3,
2315
+ "last_inspection": "2025-11-30"
2316
  },
2317
  {
2318
  "trainset_id": "TS-023",
2319
  "component": "Pantograph",
2320
  "status": "EXCELLENT",
2321
+ "wear_level": 36.0,
2322
+ "last_inspection": "2025-11-07"
2323
  },
2324
  {
2325
  "trainset_id": "TS-023",
2326
  "component": "Bogie",
2327
+ "status": "GOOD",
2328
+ "wear_level": 20.6,
2329
+ "last_inspection": "2025-11-08"
2330
  },
2331
  {
2332
  "trainset_id": "TS-023",
2333
  "component": "Coupler",
2334
+ "status": "POOR",
2335
+ "wear_level": 79.9,
2336
+ "last_inspection": "2025-11-13"
2337
  },
2338
  {
2339
  "trainset_id": "TS-023",
2340
  "component": "Battery",
2341
+ "status": "POOR",
2342
+ "wear_level": 67.4,
2343
+ "last_inspection": "2025-11-30"
2344
  },
2345
  {
2346
  "trainset_id": "TS-024",
2347
  "component": "Traction_Motor",
2348
+ "status": "EXCELLENT",
2349
+ "wear_level": 32.5,
2350
+ "last_inspection": "2025-11-30"
2351
  },
2352
  {
2353
  "trainset_id": "TS-024",
2354
  "component": "Brake_System",
2355
  "status": "GOOD",
2356
+ "wear_level": 49.9,
2357
+ "last_inspection": "2025-11-25"
2358
  },
2359
  {
2360
  "trainset_id": "TS-024",
2361
  "component": "HVAC",
2362
+ "status": "GOOD",
2363
+ "wear_level": 38.3,
2364
+ "last_inspection": "2025-11-09"
2365
  },
2366
  {
2367
  "trainset_id": "TS-024",
2368
  "component": "Door_System",
2369
  "status": "EXCELLENT",
2370
+ "wear_level": 33.7,
2371
+ "last_inspection": "2025-11-07"
2372
  },
2373
  {
2374
  "trainset_id": "TS-024",
2375
  "component": "Pantograph",
2376
  "status": "GOOD",
2377
+ "wear_level": 45.3,
2378
+ "last_inspection": "2025-11-16"
2379
  },
2380
  {
2381
  "trainset_id": "TS-024",
2382
  "component": "Bogie",
2383
+ "status": "FAIR",
2384
+ "wear_level": 79.4,
2385
+ "last_inspection": "2025-11-17"
2386
  },
2387
  {
2388
  "trainset_id": "TS-024",
2389
  "component": "Coupler",
2390
  "status": "GOOD",
2391
+ "wear_level": 40.2,
2392
+ "last_inspection": "2025-11-22"
2393
  },
2394
  {
2395
  "trainset_id": "TS-024",
2396
  "component": "Battery",
2397
+ "status": "EXCELLENT",
2398
+ "wear_level": 34.2,
2399
+ "last_inspection": "2025-11-19"
2400
  },
2401
  {
2402
  "trainset_id": "TS-025",
2403
  "component": "Traction_Motor",
2404
+ "status": "GOOD",
2405
+ "wear_level": 16.2,
2406
+ "last_inspection": "2025-11-28"
2407
  },
2408
  {
2409
  "trainset_id": "TS-025",
2410
  "component": "Brake_System",
2411
  "status": "GOOD",
2412
+ "wear_level": 32.9,
2413
+ "last_inspection": "2025-11-19"
2414
  },
2415
  {
2416
  "trainset_id": "TS-025",
2417
  "component": "HVAC",
2418
+ "status": "GOOD",
2419
+ "wear_level": 41.8,
2420
+ "last_inspection": "2025-11-09"
2421
  },
2422
  {
2423
  "trainset_id": "TS-025",
2424
  "component": "Door_System",
2425
+ "status": "GOOD",
2426
+ "wear_level": 15.7,
2427
+ "last_inspection": "2025-11-28"
2428
  },
2429
  {
2430
  "trainset_id": "TS-025",
2431
  "component": "Pantograph",
2432
  "status": "EXCELLENT",
2433
+ "wear_level": 14.0,
2434
+ "last_inspection": "2025-12-01"
2435
  },
2436
  {
2437
  "trainset_id": "TS-025",
2438
  "component": "Bogie",
2439
+ "status": "FAIR",
2440
+ "wear_level": 86.5,
2441
+ "last_inspection": "2025-11-10"
2442
  },
2443
  {
2444
  "trainset_id": "TS-025",
2445
  "component": "Coupler",
2446
+ "status": "GOOD",
2447
+ "wear_level": 21.5,
2448
+ "last_inspection": "2025-11-08"
2449
  },
2450
  {
2451
  "trainset_id": "TS-025",
2452
  "component": "Battery",
2453
  "status": "GOOD",
2454
+ "wear_level": 38.4,
2455
+ "last_inspection": "2025-11-07"
2456
  }
2457
  ],
2458
+ "date": "2025-12-02",
2459
  "method": "ga",
2460
  "config": {
2461
  "required_service_trains": 15,
test_output/local_gen_25_output_20251129_001015.json DELETED
@@ -1,1432 +0,0 @@
1
- {
2
- "schedule_id": "SCH-20251129-360",
3
- "generated_at": "2025-11-29T00:10:19.725899",
4
- "valid_from": "2025-11-29T05:00:00+05:30",
5
- "valid_until": "2025-11-29T23:00:00+05:30",
6
- "depot": "Muttom_Depot",
7
- "trainsets": [
8
- {
9
- "trainset_id": "TS-001",
10
- "status": "REVENUE_SERVICE",
11
- "readiness_score": 1.0,
12
- "daily_km_allocation": 714.0,
13
- "cumulative_km": 111134.18,
14
- "assigned_duty": "DUTY-A1",
15
- "priority_rank": 1,
16
- "service_blocks": [
17
- {
18
- "block_id": "BLK-001",
19
- "departure_time": "07:00",
20
- "origin": "Pettah",
21
- "destination": "Aluva",
22
- "trip_count": 3,
23
- "estimated_km": 153.0
24
- },
25
- {
26
- "block_id": "BLK-023",
27
- "departure_time": "09:12",
28
- "origin": "Pettah",
29
- "destination": "Aluva",
30
- "trip_count": 3,
31
- "estimated_km": 153.0
32
- },
33
- {
34
- "block_id": "BLK-045",
35
- "departure_time": "13:30",
36
- "origin": "Pettah",
37
- "destination": "Aluva",
38
- "trip_count": 2,
39
- "estimated_km": 102.0
40
- },
41
- {
42
- "block_id": "BLK-067",
43
- "departure_time": "17:48",
44
- "origin": "Pettah",
45
- "destination": "Aluva",
46
- "trip_count": 3,
47
- "estimated_km": 153.0
48
- },
49
- {
50
- "block_id": "BLK-089",
51
- "departure_time": "20:00",
52
- "origin": "Pettah",
53
- "destination": "Aluva",
54
- "trip_count": 3,
55
- "estimated_km": 153.0
56
- }
57
- ],
58
- "stabling_bay": "BAY-02",
59
- "standby_reason": null,
60
- "maintenance_type": null,
61
- "ibl_bay": null,
62
- "estimated_completion": null,
63
- "alerts": []
64
- },
65
- {
66
- "trainset_id": "TS-002",
67
- "status": "REVENUE_SERVICE",
68
- "readiness_score": 0.8,
69
- "daily_km_allocation": 561.0,
70
- "cumulative_km": 154404.03,
71
- "assigned_duty": "DUTY-A2",
72
- "priority_rank": 2,
73
- "service_blocks": [
74
- {
75
- "block_id": "BLK-002",
76
- "departure_time": "07:06",
77
- "origin": "Aluva",
78
- "destination": "Pettah",
79
- "trip_count": 3,
80
- "estimated_km": 153.0
81
- },
82
- {
83
- "block_id": "BLK-024",
84
- "departure_time": "09:18",
85
- "origin": "Aluva",
86
- "destination": "Pettah",
87
- "trip_count": 3,
88
- "estimated_km": 153.0
89
- },
90
- {
91
- "block_id": "BLK-046",
92
- "departure_time": "13:45",
93
- "origin": "Aluva",
94
- "destination": "Pettah",
95
- "trip_count": 2,
96
- "estimated_km": 102.0
97
- },
98
- {
99
- "block_id": "BLK-090",
100
- "departure_time": "20:06",
101
- "origin": "Aluva",
102
- "destination": "Pettah",
103
- "trip_count": 3,
104
- "estimated_km": 153.0
105
- }
106
- ],
107
- "stabling_bay": "BAY-09",
108
- "standby_reason": null,
109
- "maintenance_type": null,
110
- "ibl_bay": null,
111
- "estimated_completion": null,
112
- "alerts": []
113
- },
114
- {
115
- "trainset_id": "TS-003",
116
- "status": "REVENUE_SERVICE",
117
- "readiness_score": 0.7,
118
- "daily_km_allocation": 714.0,
119
- "cumulative_km": 144754.01,
120
- "assigned_duty": "DUTY-A3",
121
- "priority_rank": 3,
122
- "service_blocks": [
123
- {
124
- "block_id": "BLK-003",
125
- "departure_time": "07:12",
126
- "origin": "Pettah",
127
- "destination": "Aluva",
128
- "trip_count": 3,
129
- "estimated_km": 153.0
130
- },
131
- {
132
- "block_id": "BLK-025",
133
- "departure_time": "09:24",
134
- "origin": "Pettah",
135
- "destination": "Aluva",
136
- "trip_count": 3,
137
- "estimated_km": 153.0
138
- },
139
- {
140
- "block_id": "BLK-047",
141
- "departure_time": "14:00",
142
- "origin": "Pettah",
143
- "destination": "Aluva",
144
- "trip_count": 2,
145
- "estimated_km": 102.0
146
- },
147
- {
148
- "block_id": "BLK-069",
149
- "departure_time": "18:00",
150
- "origin": "Pettah",
151
- "destination": "Aluva",
152
- "trip_count": 3,
153
- "estimated_km": 153.0
154
- },
155
- {
156
- "block_id": "BLK-091",
157
- "departure_time": "20:12",
158
- "origin": "Pettah",
159
- "destination": "Aluva",
160
- "trip_count": 3,
161
- "estimated_km": 153.0
162
- }
163
- ],
164
- "stabling_bay": "BAY-02",
165
- "standby_reason": null,
166
- "maintenance_type": null,
167
- "ibl_bay": null,
168
- "estimated_completion": null,
169
- "alerts": [
170
- "OPERATIONS certificate expiring soon",
171
- "Brake_System in critical condition (wear: 70.9%)"
172
- ]
173
- },
174
- {
175
- "trainset_id": "TS-004",
176
- "status": "REVENUE_SERVICE",
177
- "readiness_score": 0.95,
178
- "daily_km_allocation": 714.0,
179
- "cumulative_km": 151715.4,
180
- "assigned_duty": "DUTY-A4",
181
- "priority_rank": 4,
182
- "service_blocks": [
183
- {
184
- "block_id": "BLK-004",
185
- "departure_time": "07:18",
186
- "origin": "Aluva",
187
- "destination": "Pettah",
188
- "trip_count": 3,
189
- "estimated_km": 153.0
190
- },
191
- {
192
- "block_id": "BLK-026",
193
- "departure_time": "09:30",
194
- "origin": "Aluva",
195
- "destination": "Pettah",
196
- "trip_count": 3,
197
- "estimated_km": 153.0
198
- },
199
- {
200
- "block_id": "BLK-048",
201
- "departure_time": "14:15",
202
- "origin": "Aluva",
203
- "destination": "Pettah",
204
- "trip_count": 2,
205
- "estimated_km": 102.0
206
- },
207
- {
208
- "block_id": "BLK-070",
209
- "departure_time": "18:06",
210
- "origin": "Aluva",
211
- "destination": "Pettah",
212
- "trip_count": 3,
213
- "estimated_km": 153.0
214
- },
215
- {
216
- "block_id": "BLK-092",
217
- "departure_time": "20:18",
218
- "origin": "Aluva",
219
- "destination": "Pettah",
220
- "trip_count": 3,
221
- "estimated_km": 153.0
222
- }
223
- ],
224
- "stabling_bay": "BAY-13",
225
- "standby_reason": null,
226
- "maintenance_type": null,
227
- "ibl_bay": null,
228
- "estimated_completion": null,
229
- "alerts": []
230
- },
231
- {
232
- "trainset_id": "TS-005",
233
- "status": "REVENUE_SERVICE",
234
- "readiness_score": 0.85,
235
- "daily_km_allocation": 714.0,
236
- "cumulative_km": 142678.06,
237
- "assigned_duty": "DUTY-A5",
238
- "priority_rank": 5,
239
- "service_blocks": [
240
- {
241
- "block_id": "BLK-005",
242
- "departure_time": "07:24",
243
- "origin": "Pettah",
244
- "destination": "Aluva",
245
- "trip_count": 3,
246
- "estimated_km": 153.0
247
- },
248
- {
249
- "block_id": "BLK-027",
250
- "departure_time": "09:36",
251
- "origin": "Pettah",
252
- "destination": "Aluva",
253
- "trip_count": 3,
254
- "estimated_km": 153.0
255
- },
256
- {
257
- "block_id": "BLK-049",
258
- "departure_time": "14:30",
259
- "origin": "Pettah",
260
- "destination": "Aluva",
261
- "trip_count": 2,
262
- "estimated_km": 102.0
263
- },
264
- {
265
- "block_id": "BLK-071",
266
- "departure_time": "18:12",
267
- "origin": "Pettah",
268
- "destination": "Aluva",
269
- "trip_count": 3,
270
- "estimated_km": 153.0
271
- },
272
- {
273
- "block_id": "BLK-093",
274
- "departure_time": "20:24",
275
- "origin": "Pettah",
276
- "destination": "Aluva",
277
- "trip_count": 3,
278
- "estimated_km": 153.0
279
- }
280
- ],
281
- "stabling_bay": "BAY-08",
282
- "standby_reason": null,
283
- "maintenance_type": null,
284
- "ibl_bay": null,
285
- "estimated_completion": null,
286
- "alerts": [
287
- "Door_System in critical condition (wear: 72.3%)"
288
- ]
289
- },
290
- {
291
- "trainset_id": "TS-006",
292
- "status": "REVENUE_SERVICE",
293
- "readiness_score": 0.85,
294
- "daily_km_allocation": 714.0,
295
- "cumulative_km": 113035.67,
296
- "assigned_duty": "DUTY-A6",
297
- "priority_rank": 6,
298
- "service_blocks": [
299
- {
300
- "block_id": "BLK-006",
301
- "departure_time": "07:30",
302
- "origin": "Aluva",
303
- "destination": "Pettah",
304
- "trip_count": 3,
305
- "estimated_km": 153.0
306
- },
307
- {
308
- "block_id": "BLK-028",
309
- "departure_time": "09:42",
310
- "origin": "Aluva",
311
- "destination": "Pettah",
312
- "trip_count": 3,
313
- "estimated_km": 153.0
314
- },
315
- {
316
- "block_id": "BLK-050",
317
- "departure_time": "14:45",
318
- "origin": "Aluva",
319
- "destination": "Pettah",
320
- "trip_count": 2,
321
- "estimated_km": 102.0
322
- },
323
- {
324
- "block_id": "BLK-072",
325
- "departure_time": "18:18",
326
- "origin": "Aluva",
327
- "destination": "Pettah",
328
- "trip_count": 3,
329
- "estimated_km": 153.0
330
- },
331
- {
332
- "block_id": "BLK-094",
333
- "departure_time": "20:30",
334
- "origin": "Aluva",
335
- "destination": "Pettah",
336
- "trip_count": 3,
337
- "estimated_km": 153.0
338
- }
339
- ],
340
- "stabling_bay": "BAY-11",
341
- "standby_reason": null,
342
- "maintenance_type": null,
343
- "ibl_bay": null,
344
- "estimated_completion": null,
345
- "alerts": [
346
- "Door_System in critical condition (wear: 84.3%)"
347
- ]
348
- },
349
- {
350
- "trainset_id": "TS-007",
351
- "status": "REVENUE_SERVICE",
352
- "readiness_score": 1.0,
353
- "daily_km_allocation": 714.0,
354
- "cumulative_km": 86336.09,
355
- "assigned_duty": "DUTY-A7",
356
- "priority_rank": 7,
357
- "service_blocks": [
358
- {
359
- "block_id": "BLK-007",
360
- "departure_time": "07:36",
361
- "origin": "Pettah",
362
- "destination": "Aluva",
363
- "trip_count": 3,
364
- "estimated_km": 153.0
365
- },
366
- {
367
- "block_id": "BLK-029",
368
- "departure_time": "09:48",
369
- "origin": "Pettah",
370
- "destination": "Aluva",
371
- "trip_count": 3,
372
- "estimated_km": 153.0
373
- },
374
- {
375
- "block_id": "BLK-051",
376
- "departure_time": "15:00",
377
- "origin": "Pettah",
378
- "destination": "Aluva",
379
- "trip_count": 2,
380
- "estimated_km": 102.0
381
- },
382
- {
383
- "block_id": "BLK-073",
384
- "departure_time": "18:24",
385
- "origin": "Pettah",
386
- "destination": "Aluva",
387
- "trip_count": 3,
388
- "estimated_km": 153.0
389
- },
390
- {
391
- "block_id": "BLK-095",
392
- "departure_time": "20:36",
393
- "origin": "Pettah",
394
- "destination": "Aluva",
395
- "trip_count": 3,
396
- "estimated_km": 153.0
397
- }
398
- ],
399
- "stabling_bay": "BAY-11",
400
- "standby_reason": null,
401
- "maintenance_type": null,
402
- "ibl_bay": null,
403
- "estimated_completion": null,
404
- "alerts": []
405
- },
406
- {
407
- "trainset_id": "TS-008",
408
- "status": "REVENUE_SERVICE",
409
- "readiness_score": 0.85,
410
- "daily_km_allocation": 714.0,
411
- "cumulative_km": 52459.38,
412
- "assigned_duty": "DUTY-A8",
413
- "priority_rank": 8,
414
- "service_blocks": [
415
- {
416
- "block_id": "BLK-008",
417
- "departure_time": "07:42",
418
- "origin": "Aluva",
419
- "destination": "Pettah",
420
- "trip_count": 3,
421
- "estimated_km": 153.0
422
- },
423
- {
424
- "block_id": "BLK-030",
425
- "departure_time": "09:54",
426
- "origin": "Aluva",
427
- "destination": "Pettah",
428
- "trip_count": 3,
429
- "estimated_km": 153.0
430
- },
431
- {
432
- "block_id": "BLK-052",
433
- "departure_time": "15:15",
434
- "origin": "Aluva",
435
- "destination": "Pettah",
436
- "trip_count": 2,
437
- "estimated_km": 102.0
438
- },
439
- {
440
- "block_id": "BLK-074",
441
- "departure_time": "18:30",
442
- "origin": "Aluva",
443
- "destination": "Pettah",
444
- "trip_count": 3,
445
- "estimated_km": 153.0
446
- },
447
- {
448
- "block_id": "BLK-096",
449
- "departure_time": "20:42",
450
- "origin": "Aluva",
451
- "destination": "Pettah",
452
- "trip_count": 3,
453
- "estimated_km": 153.0
454
- }
455
- ],
456
- "stabling_bay": "BAY-05",
457
- "standby_reason": null,
458
- "maintenance_type": null,
459
- "ibl_bay": null,
460
- "estimated_completion": null,
461
- "alerts": [
462
- "SAFETY certificate expiring soon",
463
- "Bogie requires attention (wear: 86.3%)"
464
- ]
465
- },
466
- {
467
- "trainset_id": "TS-009",
468
- "status": "REVENUE_SERVICE",
469
- "readiness_score": 1.0,
470
- "daily_km_allocation": 663.0,
471
- "cumulative_km": 170370.58,
472
- "assigned_duty": "DUTY-A9",
473
- "priority_rank": 9,
474
- "service_blocks": [
475
- {
476
- "block_id": "BLK-009",
477
- "departure_time": "07:48",
478
- "origin": "Pettah",
479
- "destination": "Aluva",
480
- "trip_count": 3,
481
- "estimated_km": 153.0
482
- },
483
- {
484
- "block_id": "BLK-031",
485
- "departure_time": "10:00",
486
- "origin": "Pettah",
487
- "destination": "Aluva",
488
- "trip_count": 2,
489
- "estimated_km": 102.0
490
- },
491
- {
492
- "block_id": "BLK-053",
493
- "departure_time": "15:30",
494
- "origin": "Pettah",
495
- "destination": "Aluva",
496
- "trip_count": 2,
497
- "estimated_km": 102.0
498
- },
499
- {
500
- "block_id": "BLK-075",
501
- "departure_time": "18:36",
502
- "origin": "Pettah",
503
- "destination": "Aluva",
504
- "trip_count": 3,
505
- "estimated_km": 153.0
506
- },
507
- {
508
- "block_id": "BLK-097",
509
- "departure_time": "20:48",
510
- "origin": "Pettah",
511
- "destination": "Aluva",
512
- "trip_count": 3,
513
- "estimated_km": 153.0
514
- }
515
- ],
516
- "stabling_bay": "BAY-04",
517
- "standby_reason": null,
518
- "maintenance_type": null,
519
- "ibl_bay": null,
520
- "estimated_completion": null,
521
- "alerts": []
522
- },
523
- {
524
- "trainset_id": "TS-010",
525
- "status": "REVENUE_SERVICE",
526
- "readiness_score": 1.0,
527
- "daily_km_allocation": 663.0,
528
- "cumulative_km": 128616.07,
529
- "assigned_duty": "DUTY-A10",
530
- "priority_rank": 10,
531
- "service_blocks": [
532
- {
533
- "block_id": "BLK-010",
534
- "departure_time": "07:54",
535
- "origin": "Aluva",
536
- "destination": "Pettah",
537
- "trip_count": 3,
538
- "estimated_km": 153.0
539
- },
540
- {
541
- "block_id": "BLK-032",
542
- "departure_time": "10:15",
543
- "origin": "Aluva",
544
- "destination": "Pettah",
545
- "trip_count": 2,
546
- "estimated_km": 102.0
547
- },
548
- {
549
- "block_id": "BLK-054",
550
- "departure_time": "15:45",
551
- "origin": "Aluva",
552
- "destination": "Pettah",
553
- "trip_count": 2,
554
- "estimated_km": 102.0
555
- },
556
- {
557
- "block_id": "BLK-076",
558
- "departure_time": "18:42",
559
- "origin": "Aluva",
560
- "destination": "Pettah",
561
- "trip_count": 3,
562
- "estimated_km": 153.0
563
- },
564
- {
565
- "block_id": "BLK-098",
566
- "departure_time": "20:54",
567
- "origin": "Aluva",
568
- "destination": "Pettah",
569
- "trip_count": 3,
570
- "estimated_km": 153.0
571
- }
572
- ],
573
- "stabling_bay": "BAY-09",
574
- "standby_reason": null,
575
- "maintenance_type": null,
576
- "ibl_bay": null,
577
- "estimated_completion": null,
578
- "alerts": []
579
- },
580
- {
581
- "trainset_id": "TS-011",
582
- "status": "REVENUE_SERVICE",
583
- "readiness_score": 0.95,
584
- "daily_km_allocation": 561.0,
585
- "cumulative_km": 58474.42,
586
- "assigned_duty": "DUTY-B1",
587
- "priority_rank": 11,
588
- "service_blocks": [
589
- {
590
- "block_id": "BLK-011",
591
- "departure_time": "08:00",
592
- "origin": "Pettah",
593
- "destination": "Aluva",
594
- "trip_count": 3,
595
- "estimated_km": 153.0
596
- },
597
- {
598
- "block_id": "BLK-033",
599
- "departure_time": "10:30",
600
- "origin": "Pettah",
601
- "destination": "Aluva",
602
- "trip_count": 2,
603
- "estimated_km": 102.0
604
- },
605
- {
606
- "block_id": "BLK-055",
607
- "departure_time": "16:00",
608
- "origin": "Pettah",
609
- "destination": "Aluva",
610
- "trip_count": 2,
611
- "estimated_km": 102.0
612
- },
613
- {
614
- "block_id": "BLK-077",
615
- "departure_time": "18:48",
616
- "origin": "Pettah",
617
- "destination": "Aluva",
618
- "trip_count": 3,
619
- "estimated_km": 153.0
620
- },
621
- {
622
- "block_id": "BLK-099",
623
- "departure_time": "21:00",
624
- "origin": "Pettah",
625
- "destination": "Aluva",
626
- "trip_count": 1,
627
- "estimated_km": 51.0
628
- }
629
- ],
630
- "stabling_bay": "BAY-02",
631
- "standby_reason": null,
632
- "maintenance_type": null,
633
- "ibl_bay": null,
634
- "estimated_completion": null,
635
- "alerts": [
636
- "Coupler requires attention (wear: 85.2%)"
637
- ]
638
- },
639
- {
640
- "trainset_id": "TS-012",
641
- "status": "REVENUE_SERVICE",
642
- "readiness_score": 1.0,
643
- "daily_km_allocation": 714.0,
644
- "cumulative_km": 153131.5,
645
- "assigned_duty": "DUTY-B2",
646
- "priority_rank": 12,
647
- "service_blocks": [
648
- {
649
- "block_id": "BLK-012",
650
- "departure_time": "08:06",
651
- "origin": "Aluva",
652
- "destination": "Pettah",
653
- "trip_count": 3,
654
- "estimated_km": 153.0
655
- },
656
- {
657
- "block_id": "BLK-034",
658
- "departure_time": "10:45",
659
- "origin": "Aluva",
660
- "destination": "Pettah",
661
- "trip_count": 2,
662
- "estimated_km": 102.0
663
- },
664
- {
665
- "block_id": "BLK-056",
666
- "departure_time": "16:15",
667
- "origin": "Aluva",
668
- "destination": "Pettah",
669
- "trip_count": 2,
670
- "estimated_km": 102.0
671
- },
672
- {
673
- "block_id": "BLK-068",
674
- "departure_time": "17:54",
675
- "origin": "Aluva",
676
- "destination": "Pettah",
677
- "trip_count": 3,
678
- "estimated_km": 153.0
679
- },
680
- {
681
- "block_id": "BLK-078",
682
- "departure_time": "18:54",
683
- "origin": "Aluva",
684
- "destination": "Pettah",
685
- "trip_count": 3,
686
- "estimated_km": 153.0
687
- },
688
- {
689
- "block_id": "BLK-100",
690
- "departure_time": "21:15",
691
- "origin": "Aluva",
692
- "destination": "Pettah",
693
- "trip_count": 1,
694
- "estimated_km": 51.0
695
- }
696
- ],
697
- "stabling_bay": "BAY-14",
698
- "standby_reason": null,
699
- "maintenance_type": null,
700
- "ibl_bay": null,
701
- "estimated_completion": null,
702
- "alerts": []
703
- },
704
- {
705
- "trainset_id": "TS-013",
706
- "status": "REVENUE_SERVICE",
707
- "readiness_score": 0.95,
708
- "daily_km_allocation": 561.0,
709
- "cumulative_km": 54065.77,
710
- "assigned_duty": "DUTY-B3",
711
- "priority_rank": 13,
712
- "service_blocks": [
713
- {
714
- "block_id": "BLK-013",
715
- "departure_time": "08:12",
716
- "origin": "Pettah",
717
- "destination": "Aluva",
718
- "trip_count": 3,
719
- "estimated_km": 153.0
720
- },
721
- {
722
- "block_id": "BLK-035",
723
- "departure_time": "11:00",
724
- "origin": "Pettah",
725
- "destination": "Aluva",
726
- "trip_count": 2,
727
- "estimated_km": 102.0
728
- },
729
- {
730
- "block_id": "BLK-057",
731
- "departure_time": "16:30",
732
- "origin": "Pettah",
733
- "destination": "Aluva",
734
- "trip_count": 2,
735
- "estimated_km": 102.0
736
- },
737
- {
738
- "block_id": "BLK-079",
739
- "departure_time": "19:00",
740
- "origin": "Pettah",
741
- "destination": "Aluva",
742
- "trip_count": 3,
743
- "estimated_km": 153.0
744
- },
745
- {
746
- "block_id": "BLK-101",
747
- "departure_time": "21:30",
748
- "origin": "Pettah",
749
- "destination": "Aluva",
750
- "trip_count": 1,
751
- "estimated_km": 51.0
752
- }
753
- ],
754
- "stabling_bay": "BAY-08",
755
- "standby_reason": null,
756
- "maintenance_type": null,
757
- "ibl_bay": null,
758
- "estimated_completion": null,
759
- "alerts": []
760
- },
761
- {
762
- "trainset_id": "TS-014",
763
- "status": "REVENUE_SERVICE",
764
- "readiness_score": 0.85,
765
- "daily_km_allocation": 561.0,
766
- "cumulative_km": 134250.56,
767
- "assigned_duty": "DUTY-B4",
768
- "priority_rank": 14,
769
- "service_blocks": [
770
- {
771
- "block_id": "BLK-014",
772
- "departure_time": "08:18",
773
- "origin": "Aluva",
774
- "destination": "Pettah",
775
- "trip_count": 3,
776
- "estimated_km": 153.0
777
- },
778
- {
779
- "block_id": "BLK-036",
780
- "departure_time": "11:15",
781
- "origin": "Aluva",
782
- "destination": "Pettah",
783
- "trip_count": 2,
784
- "estimated_km": 102.0
785
- },
786
- {
787
- "block_id": "BLK-058",
788
- "departure_time": "16:45",
789
- "origin": "Aluva",
790
- "destination": "Pettah",
791
- "trip_count": 2,
792
- "estimated_km": 102.0
793
- },
794
- {
795
- "block_id": "BLK-080",
796
- "departure_time": "19:06",
797
- "origin": "Aluva",
798
- "destination": "Pettah",
799
- "trip_count": 3,
800
- "estimated_km": 153.0
801
- },
802
- {
803
- "block_id": "BLK-102",
804
- "departure_time": "21:45",
805
- "origin": "Aluva",
806
- "destination": "Pettah",
807
- "trip_count": 1,
808
- "estimated_km": 51.0
809
- }
810
- ],
811
- "stabling_bay": "BAY-06",
812
- "standby_reason": null,
813
- "maintenance_type": null,
814
- "ibl_bay": null,
815
- "estimated_completion": null,
816
- "alerts": [
817
- "Door_System in critical condition (wear: 67.3%)"
818
- ]
819
- },
820
- {
821
- "trainset_id": "TS-015",
822
- "status": "REVENUE_SERVICE",
823
- "readiness_score": 1.0,
824
- "daily_km_allocation": 612.0,
825
- "cumulative_km": 152079.2,
826
- "assigned_duty": "DUTY-B5",
827
- "priority_rank": 15,
828
- "service_blocks": [
829
- {
830
- "block_id": "BLK-015",
831
- "departure_time": "08:24",
832
- "origin": "Pettah",
833
- "destination": "Aluva",
834
- "trip_count": 3,
835
- "estimated_km": 153.0
836
- },
837
- {
838
- "block_id": "BLK-037",
839
- "departure_time": "11:30",
840
- "origin": "Pettah",
841
- "destination": "Aluva",
842
- "trip_count": 2,
843
- "estimated_km": 102.0
844
- },
845
- {
846
- "block_id": "BLK-059",
847
- "departure_time": "17:00",
848
- "origin": "Pettah",
849
- "destination": "Aluva",
850
- "trip_count": 3,
851
- "estimated_km": 153.0
852
- },
853
- {
854
- "block_id": "BLK-081",
855
- "departure_time": "19:12",
856
- "origin": "Pettah",
857
- "destination": "Aluva",
858
- "trip_count": 3,
859
- "estimated_km": 153.0
860
- },
861
- {
862
- "block_id": "BLK-103",
863
- "departure_time": "22:00",
864
- "origin": "Pettah",
865
- "destination": "Aluva",
866
- "trip_count": 1,
867
- "estimated_km": 51.0
868
- }
869
- ],
870
- "stabling_bay": "BAY-03",
871
- "standby_reason": null,
872
- "maintenance_type": null,
873
- "ibl_bay": null,
874
- "estimated_completion": null,
875
- "alerts": []
876
- },
877
- {
878
- "trainset_id": "TS-016",
879
- "status": "REVENUE_SERVICE",
880
- "readiness_score": 0.95,
881
- "daily_km_allocation": 612.0,
882
- "cumulative_km": 151057.74,
883
- "assigned_duty": "DUTY-B6",
884
- "priority_rank": 16,
885
- "service_blocks": [
886
- {
887
- "block_id": "BLK-016",
888
- "departure_time": "08:30",
889
- "origin": "Aluva",
890
- "destination": "Pettah",
891
- "trip_count": 3,
892
- "estimated_km": 153.0
893
- },
894
- {
895
- "block_id": "BLK-038",
896
- "departure_time": "11:45",
897
- "origin": "Aluva",
898
- "destination": "Pettah",
899
- "trip_count": 2,
900
- "estimated_km": 102.0
901
- },
902
- {
903
- "block_id": "BLK-060",
904
- "departure_time": "17:06",
905
- "origin": "Aluva",
906
- "destination": "Pettah",
907
- "trip_count": 3,
908
- "estimated_km": 153.0
909
- },
910
- {
911
- "block_id": "BLK-082",
912
- "departure_time": "19:18",
913
- "origin": "Aluva",
914
- "destination": "Pettah",
915
- "trip_count": 3,
916
- "estimated_km": 153.0
917
- },
918
- {
919
- "block_id": "BLK-104",
920
- "departure_time": "22:15",
921
- "origin": "Aluva",
922
- "destination": "Pettah",
923
- "trip_count": 1,
924
- "estimated_km": 51.0
925
- }
926
- ],
927
- "stabling_bay": "BAY-14",
928
- "standby_reason": null,
929
- "maintenance_type": null,
930
- "ibl_bay": null,
931
- "estimated_completion": null,
932
- "alerts": []
933
- },
934
- {
935
- "trainset_id": "TS-017",
936
- "status": "REVENUE_SERVICE",
937
- "readiness_score": 1.0,
938
- "daily_km_allocation": 612.0,
939
- "cumulative_km": 178100.51,
940
- "assigned_duty": "DUTY-B7",
941
- "priority_rank": 17,
942
- "service_blocks": [
943
- {
944
- "block_id": "BLK-017",
945
- "departure_time": "08:36",
946
- "origin": "Pettah",
947
- "destination": "Aluva",
948
- "trip_count": 3,
949
- "estimated_km": 153.0
950
- },
951
- {
952
- "block_id": "BLK-039",
953
- "departure_time": "12:00",
954
- "origin": "Pettah",
955
- "destination": "Aluva",
956
- "trip_count": 2,
957
- "estimated_km": 102.0
958
- },
959
- {
960
- "block_id": "BLK-061",
961
- "departure_time": "17:12",
962
- "origin": "Pettah",
963
- "destination": "Aluva",
964
- "trip_count": 3,
965
- "estimated_km": 153.0
966
- },
967
- {
968
- "block_id": "BLK-083",
969
- "departure_time": "19:24",
970
- "origin": "Pettah",
971
- "destination": "Aluva",
972
- "trip_count": 3,
973
- "estimated_km": 153.0
974
- },
975
- {
976
- "block_id": "BLK-105",
977
- "departure_time": "22:30",
978
- "origin": "Pettah",
979
- "destination": "Aluva",
980
- "trip_count": 1,
981
- "estimated_km": 51.0
982
- }
983
- ],
984
- "stabling_bay": "BAY-15",
985
- "standby_reason": null,
986
- "maintenance_type": null,
987
- "ibl_bay": null,
988
- "estimated_completion": null,
989
- "alerts": []
990
- },
991
- {
992
- "trainset_id": "TS-019",
993
- "status": "REVENUE_SERVICE",
994
- "readiness_score": 0.75,
995
- "daily_km_allocation": 612.0,
996
- "cumulative_km": 61111.79,
997
- "assigned_duty": "DUTY-B8",
998
- "priority_rank": 18,
999
- "service_blocks": [
1000
- {
1001
- "block_id": "BLK-018",
1002
- "departure_time": "08:42",
1003
- "origin": "Aluva",
1004
- "destination": "Pettah",
1005
- "trip_count": 3,
1006
- "estimated_km": 153.0
1007
- },
1008
- {
1009
- "block_id": "BLK-040",
1010
- "departure_time": "12:15",
1011
- "origin": "Aluva",
1012
- "destination": "Pettah",
1013
- "trip_count": 2,
1014
- "estimated_km": 102.0
1015
- },
1016
- {
1017
- "block_id": "BLK-062",
1018
- "departure_time": "17:18",
1019
- "origin": "Aluva",
1020
- "destination": "Pettah",
1021
- "trip_count": 3,
1022
- "estimated_km": 153.0
1023
- },
1024
- {
1025
- "block_id": "BLK-084",
1026
- "departure_time": "19:30",
1027
- "origin": "Aluva",
1028
- "destination": "Pettah",
1029
- "trip_count": 3,
1030
- "estimated_km": 153.0
1031
- },
1032
- {
1033
- "block_id": "BLK-106",
1034
- "departure_time": "22:45",
1035
- "origin": "Aluva",
1036
- "destination": "Pettah",
1037
- "trip_count": 1,
1038
- "estimated_km": 51.0
1039
- }
1040
- ],
1041
- "stabling_bay": "BAY-04",
1042
- "standby_reason": null,
1043
- "maintenance_type": null,
1044
- "ibl_bay": null,
1045
- "estimated_completion": null,
1046
- "alerts": [
1047
- "OPERATIONS certificate expiring soon",
1048
- "Door_System in critical condition (wear: 82.5%)"
1049
- ]
1050
- },
1051
- {
1052
- "trainset_id": "TS-020",
1053
- "status": "REVENUE_SERVICE",
1054
- "readiness_score": 1.0,
1055
- "daily_km_allocation": 561.0,
1056
- "cumulative_km": 195905.7,
1057
- "assigned_duty": "DUTY-B9",
1058
- "priority_rank": 19,
1059
- "service_blocks": [
1060
- {
1061
- "block_id": "BLK-019",
1062
- "departure_time": "08:48",
1063
- "origin": "Pettah",
1064
- "destination": "Aluva",
1065
- "trip_count": 3,
1066
- "estimated_km": 153.0
1067
- },
1068
- {
1069
- "block_id": "BLK-041",
1070
- "departure_time": "12:30",
1071
- "origin": "Pettah",
1072
- "destination": "Aluva",
1073
- "trip_count": 2,
1074
- "estimated_km": 102.0
1075
- },
1076
- {
1077
- "block_id": "BLK-063",
1078
- "departure_time": "17:24",
1079
- "origin": "Pettah",
1080
- "destination": "Aluva",
1081
- "trip_count": 3,
1082
- "estimated_km": 153.0
1083
- },
1084
- {
1085
- "block_id": "BLK-085",
1086
- "departure_time": "19:36",
1087
- "origin": "Pettah",
1088
- "destination": "Aluva",
1089
- "trip_count": 3,
1090
- "estimated_km": 153.0
1091
- }
1092
- ],
1093
- "stabling_bay": "BAY-04",
1094
- "standby_reason": null,
1095
- "maintenance_type": null,
1096
- "ibl_bay": null,
1097
- "estimated_completion": null,
1098
- "alerts": []
1099
- },
1100
- {
1101
- "trainset_id": "TS-021",
1102
- "status": "REVENUE_SERVICE",
1103
- "readiness_score": 1.0,
1104
- "daily_km_allocation": 561.0,
1105
- "cumulative_km": 151746.82,
1106
- "assigned_duty": "DUTY-B10",
1107
- "priority_rank": 20,
1108
- "service_blocks": [
1109
- {
1110
- "block_id": "BLK-020",
1111
- "departure_time": "08:54",
1112
- "origin": "Aluva",
1113
- "destination": "Pettah",
1114
- "trip_count": 3,
1115
- "estimated_km": 153.0
1116
- },
1117
- {
1118
- "block_id": "BLK-042",
1119
- "departure_time": "12:45",
1120
- "origin": "Aluva",
1121
- "destination": "Pettah",
1122
- "trip_count": 2,
1123
- "estimated_km": 102.0
1124
- },
1125
- {
1126
- "block_id": "BLK-064",
1127
- "departure_time": "17:30",
1128
- "origin": "Aluva",
1129
- "destination": "Pettah",
1130
- "trip_count": 3,
1131
- "estimated_km": 153.0
1132
- },
1133
- {
1134
- "block_id": "BLK-086",
1135
- "departure_time": "19:42",
1136
- "origin": "Aluva",
1137
- "destination": "Pettah",
1138
- "trip_count": 3,
1139
- "estimated_km": 153.0
1140
- }
1141
- ],
1142
- "stabling_bay": "BAY-15",
1143
- "standby_reason": null,
1144
- "maintenance_type": null,
1145
- "ibl_bay": null,
1146
- "estimated_completion": null,
1147
- "alerts": []
1148
- },
1149
- {
1150
- "trainset_id": "TS-024",
1151
- "status": "REVENUE_SERVICE",
1152
- "readiness_score": 0.95,
1153
- "daily_km_allocation": 561.0,
1154
- "cumulative_km": 107005.9,
1155
- "assigned_duty": "DUTY-C1",
1156
- "priority_rank": 21,
1157
- "service_blocks": [
1158
- {
1159
- "block_id": "BLK-021",
1160
- "departure_time": "09:00",
1161
- "origin": "Pettah",
1162
- "destination": "Aluva",
1163
- "trip_count": 3,
1164
- "estimated_km": 153.0
1165
- },
1166
- {
1167
- "block_id": "BLK-043",
1168
- "departure_time": "13:00",
1169
- "origin": "Pettah",
1170
- "destination": "Aluva",
1171
- "trip_count": 2,
1172
- "estimated_km": 102.0
1173
- },
1174
- {
1175
- "block_id": "BLK-065",
1176
- "departure_time": "17:36",
1177
- "origin": "Pettah",
1178
- "destination": "Aluva",
1179
- "trip_count": 3,
1180
- "estimated_km": 153.0
1181
- },
1182
- {
1183
- "block_id": "BLK-087",
1184
- "departure_time": "19:48",
1185
- "origin": "Pettah",
1186
- "destination": "Aluva",
1187
- "trip_count": 3,
1188
- "estimated_km": 153.0
1189
- }
1190
- ],
1191
- "stabling_bay": "BAY-14",
1192
- "standby_reason": null,
1193
- "maintenance_type": null,
1194
- "ibl_bay": null,
1195
- "estimated_completion": null,
1196
- "alerts": []
1197
- },
1198
- {
1199
- "trainset_id": "TS-025",
1200
- "status": "REVENUE_SERVICE",
1201
- "readiness_score": 0.85,
1202
- "daily_km_allocation": 561.0,
1203
- "cumulative_km": 168132.24,
1204
- "assigned_duty": "DUTY-C2",
1205
- "priority_rank": 22,
1206
- "service_blocks": [
1207
- {
1208
- "block_id": "BLK-022",
1209
- "departure_time": "09:06",
1210
- "origin": "Aluva",
1211
- "destination": "Pettah",
1212
- "trip_count": 3,
1213
- "estimated_km": 153.0
1214
- },
1215
- {
1216
- "block_id": "BLK-044",
1217
- "departure_time": "13:15",
1218
- "origin": "Aluva",
1219
- "destination": "Pettah",
1220
- "trip_count": 2,
1221
- "estimated_km": 102.0
1222
- },
1223
- {
1224
- "block_id": "BLK-066",
1225
- "departure_time": "17:42",
1226
- "origin": "Aluva",
1227
- "destination": "Pettah",
1228
- "trip_count": 3,
1229
- "estimated_km": 153.0
1230
- },
1231
- {
1232
- "block_id": "BLK-088",
1233
- "departure_time": "19:54",
1234
- "origin": "Aluva",
1235
- "destination": "Pettah",
1236
- "trip_count": 3,
1237
- "estimated_km": 153.0
1238
- }
1239
- ],
1240
- "stabling_bay": "BAY-08",
1241
- "standby_reason": null,
1242
- "maintenance_type": null,
1243
- "ibl_bay": null,
1244
- "estimated_completion": null,
1245
- "alerts": [
1246
- "HVAC in critical condition (wear: 67.5%)"
1247
- ]
1248
- },
1249
- {
1250
- "trainset_id": "TS-022",
1251
- "status": "STANDBY",
1252
- "readiness_score": 0.6,
1253
- "daily_km_allocation": 0.0,
1254
- "cumulative_km": 59944.09,
1255
- "assigned_duty": null,
1256
- "priority_rank": null,
1257
- "service_blocks": null,
1258
- "stabling_bay": "BAY-02",
1259
- "standby_reason": "CREW_UNAVAILABLE",
1260
- "maintenance_type": null,
1261
- "ibl_bay": null,
1262
- "estimated_completion": null,
1263
- "alerts": [
1264
- "Traction_Motor in critical condition (wear: 75.8%)",
1265
- "Brake_System in critical condition (wear: 84.3%)",
1266
- "Coupler requires attention (wear: 94.0%)"
1267
- ]
1268
- },
1269
- {
1270
- "trainset_id": "TS-023",
1271
- "status": "STANDBY",
1272
- "readiness_score": 0.9,
1273
- "daily_km_allocation": 0.0,
1274
- "cumulative_km": 154268.26,
1275
- "assigned_duty": null,
1276
- "priority_rank": null,
1277
- "service_blocks": null,
1278
- "stabling_bay": "BAY-10",
1279
- "standby_reason": "PEAK_HOUR_RESERVE",
1280
- "maintenance_type": null,
1281
- "ibl_bay": null,
1282
- "estimated_completion": null,
1283
- "alerts": [
1284
- "Traction_Motor requires attention (wear: 87.7%)",
1285
- "HVAC requires attention (wear: 90.4%)"
1286
- ]
1287
- },
1288
- {
1289
- "trainset_id": "TS-018",
1290
- "status": "MAINTENANCE",
1291
- "readiness_score": 0.7,
1292
- "daily_km_allocation": 0.0,
1293
- "cumulative_km": 168173.89,
1294
- "assigned_duty": null,
1295
- "priority_rank": null,
1296
- "service_blocks": null,
1297
- "stabling_bay": null,
1298
- "standby_reason": null,
1299
- "maintenance_type": "SCHEDULED_INSPECTION",
1300
- "ibl_bay": "IBL-01",
1301
- "estimated_completion": "2025-11-29T09:10:19.726782",
1302
- "alerts": [
1303
- "Pantograph in critical condition (wear: 93.4%)",
1304
- "Coupler in critical condition (wear: 92.4%)"
1305
- ]
1306
- }
1307
- ],
1308
- "fleet_summary": {
1309
- "total_trainsets": 25,
1310
- "revenue_service": 22,
1311
- "standby": 2,
1312
- "maintenance": 1,
1313
- "availability_percent": 96.0
1314
- },
1315
- "optimization_metrics": {
1316
- "fitness_score": -1305.6078424206844,
1317
- "method": "ga",
1318
- "mileage_variance_coefficient": 0.107,
1319
- "total_planned_km": 13974.0,
1320
- "optimization_runtime_ms": 3971
1321
- },
1322
- "alerts": [
1323
- {
1324
- "trainset_id": "TS-003",
1325
- "severity": "MEDIUM",
1326
- "alert_type": "CERTIFICATE_EXPIRING",
1327
- "message": "OPERATIONS certificate expiring soon"
1328
- },
1329
- {
1330
- "trainset_id": "TS-003",
1331
- "severity": "HIGH",
1332
- "alert_type": "COMPONENT_CRITICAL",
1333
- "message": "Brake_System in critical condition (wear: 70.9%)"
1334
- },
1335
- {
1336
- "trainset_id": "TS-005",
1337
- "severity": "HIGH",
1338
- "alert_type": "COMPONENT_CRITICAL",
1339
- "message": "Door_System in critical condition (wear: 72.3%)"
1340
- },
1341
- {
1342
- "trainset_id": "TS-006",
1343
- "severity": "HIGH",
1344
- "alert_type": "COMPONENT_CRITICAL",
1345
- "message": "Door_System in critical condition (wear: 84.3%)"
1346
- },
1347
- {
1348
- "trainset_id": "TS-008",
1349
- "severity": "MEDIUM",
1350
- "alert_type": "CERTIFICATE_EXPIRING",
1351
- "message": "SAFETY certificate expiring soon"
1352
- },
1353
- {
1354
- "trainset_id": "TS-008",
1355
- "severity": "MEDIUM",
1356
- "alert_type": "COMPONENT_WARNING",
1357
- "message": "Bogie requires attention (wear: 86.3%)"
1358
- },
1359
- {
1360
- "trainset_id": "TS-011",
1361
- "severity": "MEDIUM",
1362
- "alert_type": "COMPONENT_WARNING",
1363
- "message": "Coupler requires attention (wear: 85.2%)"
1364
- },
1365
- {
1366
- "trainset_id": "TS-014",
1367
- "severity": "HIGH",
1368
- "alert_type": "COMPONENT_CRITICAL",
1369
- "message": "Door_System in critical condition (wear: 67.3%)"
1370
- },
1371
- {
1372
- "trainset_id": "TS-019",
1373
- "severity": "MEDIUM",
1374
- "alert_type": "CERTIFICATE_EXPIRING",
1375
- "message": "OPERATIONS certificate expiring soon"
1376
- },
1377
- {
1378
- "trainset_id": "TS-019",
1379
- "severity": "HIGH",
1380
- "alert_type": "COMPONENT_CRITICAL",
1381
- "message": "Door_System in critical condition (wear: 82.5%)"
1382
- },
1383
- {
1384
- "trainset_id": "TS-025",
1385
- "severity": "HIGH",
1386
- "alert_type": "COMPONENT_CRITICAL",
1387
- "message": "HVAC in critical condition (wear: 67.5%)"
1388
- },
1389
- {
1390
- "trainset_id": "TS-022",
1391
- "severity": "HIGH",
1392
- "alert_type": "COMPONENT_CRITICAL",
1393
- "message": "Traction_Motor in critical condition (wear: 75.8%)"
1394
- },
1395
- {
1396
- "trainset_id": "TS-022",
1397
- "severity": "HIGH",
1398
- "alert_type": "COMPONENT_CRITICAL",
1399
- "message": "Brake_System in critical condition (wear: 84.3%)"
1400
- },
1401
- {
1402
- "trainset_id": "TS-022",
1403
- "severity": "MEDIUM",
1404
- "alert_type": "COMPONENT_WARNING",
1405
- "message": "Coupler requires attention (wear: 94.0%)"
1406
- },
1407
- {
1408
- "trainset_id": "TS-023",
1409
- "severity": "MEDIUM",
1410
- "alert_type": "COMPONENT_WARNING",
1411
- "message": "Traction_Motor requires attention (wear: 87.7%)"
1412
- },
1413
- {
1414
- "trainset_id": "TS-023",
1415
- "severity": "MEDIUM",
1416
- "alert_type": "COMPONENT_WARNING",
1417
- "message": "HVAC requires attention (wear: 90.4%)"
1418
- },
1419
- {
1420
- "trainset_id": "TS-018",
1421
- "severity": "HIGH",
1422
- "alert_type": "COMPONENT_CRITICAL",
1423
- "message": "Pantograph in critical condition (wear: 93.4%)"
1424
- },
1425
- {
1426
- "trainset_id": "TS-018",
1427
- "severity": "HIGH",
1428
- "alert_type": "COMPONENT_CRITICAL",
1429
- "message": "Coupler in critical condition (wear: 92.4%)"
1430
- }
1431
- ]
1432
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
test_output/local_gen_25_output_20251202_143905.json ADDED
The diff for this file is too large to render. See raw diff
 
test_output/{local_gen_30_input_20251129_001019.json → local_gen_30_input_20251202_143910.json} RENAMED
The diff for this file is too large to render. See raw diff
 
test_output/local_gen_30_output_20251129_001019.json DELETED
@@ -1,1581 +0,0 @@
1
- {
2
- "schedule_id": "SCH-20251129-648",
3
- "generated_at": "2025-11-29T00:10:23.707104",
4
- "valid_from": "2025-11-29T05:00:00+05:30",
5
- "valid_until": "2025-11-29T23:00:00+05:30",
6
- "depot": "Muttom_Depot",
7
- "trainsets": [
8
- {
9
- "trainset_id": "TS-001",
10
- "status": "REVENUE_SERVICE",
11
- "readiness_score": 1.0,
12
- "daily_km_allocation": 459.0,
13
- "cumulative_km": 131774.13,
14
- "assigned_duty": "DUTY-A1",
15
- "priority_rank": 1,
16
- "service_blocks": [
17
- {
18
- "block_id": "BLK-043",
19
- "departure_time": "13:00",
20
- "origin": "Pettah",
21
- "destination": "Aluva",
22
- "trip_count": 2,
23
- "estimated_km": 102.0
24
- },
25
- {
26
- "block_id": "BLK-064",
27
- "departure_time": "17:30",
28
- "origin": "Aluva",
29
- "destination": "Pettah",
30
- "trip_count": 3,
31
- "estimated_km": 153.0
32
- },
33
- {
34
- "block_id": "BLK-085",
35
- "departure_time": "19:36",
36
- "origin": "Pettah",
37
- "destination": "Aluva",
38
- "trip_count": 3,
39
- "estimated_km": 153.0
40
- },
41
- {
42
- "block_id": "BLK-106",
43
- "departure_time": "22:45",
44
- "origin": "Aluva",
45
- "destination": "Pettah",
46
- "trip_count": 1,
47
- "estimated_km": 51.0
48
- }
49
- ],
50
- "stabling_bay": "BAY-13",
51
- "standby_reason": null,
52
- "maintenance_type": null,
53
- "ibl_bay": null,
54
- "estimated_completion": null,
55
- "alerts": []
56
- },
57
- {
58
- "trainset_id": "TS-003",
59
- "status": "REVENUE_SERVICE",
60
- "readiness_score": 1.0,
61
- "daily_km_allocation": 867.0,
62
- "cumulative_km": 83774.71,
63
- "assigned_duty": "DUTY-A2",
64
- "priority_rank": 2,
65
- "service_blocks": [
66
- {
67
- "block_id": "BLK-002",
68
- "departure_time": "07:06",
69
- "origin": "Aluva",
70
- "destination": "Pettah",
71
- "trip_count": 3,
72
- "estimated_km": 153.0
73
- },
74
- {
75
- "block_id": "BLK-022",
76
- "departure_time": "09:06",
77
- "origin": "Aluva",
78
- "destination": "Pettah",
79
- "trip_count": 3,
80
- "estimated_km": 153.0
81
- },
82
- {
83
- "block_id": "BLK-023",
84
- "departure_time": "09:12",
85
- "origin": "Pettah",
86
- "destination": "Aluva",
87
- "trip_count": 3,
88
- "estimated_km": 153.0
89
- },
90
- {
91
- "block_id": "BLK-044",
92
- "departure_time": "13:15",
93
- "origin": "Aluva",
94
- "destination": "Pettah",
95
- "trip_count": 2,
96
- "estimated_km": 102.0
97
- },
98
- {
99
- "block_id": "BLK-065",
100
- "departure_time": "17:36",
101
- "origin": "Pettah",
102
- "destination": "Aluva",
103
- "trip_count": 3,
104
- "estimated_km": 153.0
105
- },
106
- {
107
- "block_id": "BLK-086",
108
- "departure_time": "19:42",
109
- "origin": "Aluva",
110
- "destination": "Pettah",
111
- "trip_count": 3,
112
- "estimated_km": 153.0
113
- }
114
- ],
115
- "stabling_bay": "BAY-09",
116
- "standby_reason": null,
117
- "maintenance_type": null,
118
- "ibl_bay": null,
119
- "estimated_completion": null,
120
- "alerts": []
121
- },
122
- {
123
- "trainset_id": "TS-005",
124
- "status": "REVENUE_SERVICE",
125
- "readiness_score": 1.0,
126
- "daily_km_allocation": 714.0,
127
- "cumulative_km": 156593.58,
128
- "assigned_duty": "DUTY-A3",
129
- "priority_rank": 3,
130
- "service_blocks": [
131
- {
132
- "block_id": "BLK-003",
133
- "departure_time": "07:12",
134
- "origin": "Pettah",
135
- "destination": "Aluva",
136
- "trip_count": 3,
137
- "estimated_km": 153.0
138
- },
139
- {
140
- "block_id": "BLK-024",
141
- "departure_time": "09:18",
142
- "origin": "Aluva",
143
- "destination": "Pettah",
144
- "trip_count": 3,
145
- "estimated_km": 153.0
146
- },
147
- {
148
- "block_id": "BLK-045",
149
- "departure_time": "13:30",
150
- "origin": "Pettah",
151
- "destination": "Aluva",
152
- "trip_count": 2,
153
- "estimated_km": 102.0
154
- },
155
- {
156
- "block_id": "BLK-066",
157
- "departure_time": "17:42",
158
- "origin": "Aluva",
159
- "destination": "Pettah",
160
- "trip_count": 3,
161
- "estimated_km": 153.0
162
- },
163
- {
164
- "block_id": "BLK-087",
165
- "departure_time": "19:48",
166
- "origin": "Pettah",
167
- "destination": "Aluva",
168
- "trip_count": 3,
169
- "estimated_km": 153.0
170
- }
171
- ],
172
- "stabling_bay": "BAY-04",
173
- "standby_reason": null,
174
- "maintenance_type": null,
175
- "ibl_bay": null,
176
- "estimated_completion": null,
177
- "alerts": []
178
- },
179
- {
180
- "trainset_id": "TS-006",
181
- "status": "REVENUE_SERVICE",
182
- "readiness_score": 0.95,
183
- "daily_km_allocation": 714.0,
184
- "cumulative_km": 71040.57,
185
- "assigned_duty": "DUTY-A4",
186
- "priority_rank": 4,
187
- "service_blocks": [
188
- {
189
- "block_id": "BLK-004",
190
- "departure_time": "07:18",
191
- "origin": "Aluva",
192
- "destination": "Pettah",
193
- "trip_count": 3,
194
- "estimated_km": 153.0
195
- },
196
- {
197
- "block_id": "BLK-025",
198
- "departure_time": "09:24",
199
- "origin": "Pettah",
200
- "destination": "Aluva",
201
- "trip_count": 3,
202
- "estimated_km": 153.0
203
- },
204
- {
205
- "block_id": "BLK-046",
206
- "departure_time": "13:45",
207
- "origin": "Aluva",
208
- "destination": "Pettah",
209
- "trip_count": 2,
210
- "estimated_km": 102.0
211
- },
212
- {
213
- "block_id": "BLK-067",
214
- "departure_time": "17:48",
215
- "origin": "Pettah",
216
- "destination": "Aluva",
217
- "trip_count": 3,
218
- "estimated_km": 153.0
219
- },
220
- {
221
- "block_id": "BLK-088",
222
- "departure_time": "19:54",
223
- "origin": "Aluva",
224
- "destination": "Pettah",
225
- "trip_count": 3,
226
- "estimated_km": 153.0
227
- }
228
- ],
229
- "stabling_bay": "BAY-13",
230
- "standby_reason": null,
231
- "maintenance_type": null,
232
- "ibl_bay": null,
233
- "estimated_completion": null,
234
- "alerts": [
235
- "Battery requires attention (wear: 84.0%)"
236
- ]
237
- },
238
- {
239
- "trainset_id": "TS-007",
240
- "status": "REVENUE_SERVICE",
241
- "readiness_score": 0.85,
242
- "daily_km_allocation": 714.0,
243
- "cumulative_km": 146136.73,
244
- "assigned_duty": "DUTY-A5",
245
- "priority_rank": 5,
246
- "service_blocks": [
247
- {
248
- "block_id": "BLK-005",
249
- "departure_time": "07:24",
250
- "origin": "Pettah",
251
- "destination": "Aluva",
252
- "trip_count": 3,
253
- "estimated_km": 153.0
254
- },
255
- {
256
- "block_id": "BLK-026",
257
- "departure_time": "09:30",
258
- "origin": "Aluva",
259
- "destination": "Pettah",
260
- "trip_count": 3,
261
- "estimated_km": 153.0
262
- },
263
- {
264
- "block_id": "BLK-047",
265
- "departure_time": "14:00",
266
- "origin": "Pettah",
267
- "destination": "Aluva",
268
- "trip_count": 2,
269
- "estimated_km": 102.0
270
- },
271
- {
272
- "block_id": "BLK-068",
273
- "departure_time": "17:54",
274
- "origin": "Aluva",
275
- "destination": "Pettah",
276
- "trip_count": 3,
277
- "estimated_km": 153.0
278
- },
279
- {
280
- "block_id": "BLK-089",
281
- "departure_time": "20:00",
282
- "origin": "Pettah",
283
- "destination": "Aluva",
284
- "trip_count": 3,
285
- "estimated_km": 153.0
286
- }
287
- ],
288
- "stabling_bay": "BAY-15",
289
- "standby_reason": null,
290
- "maintenance_type": null,
291
- "ibl_bay": null,
292
- "estimated_completion": null,
293
- "alerts": [
294
- "Brake_System in critical condition (wear: 62.2%)"
295
- ]
296
- },
297
- {
298
- "trainset_id": "TS-008",
299
- "status": "REVENUE_SERVICE",
300
- "readiness_score": 0.85,
301
- "daily_km_allocation": 714.0,
302
- "cumulative_km": 62366.46,
303
- "assigned_duty": "DUTY-A6",
304
- "priority_rank": 6,
305
- "service_blocks": [
306
- {
307
- "block_id": "BLK-006",
308
- "departure_time": "07:30",
309
- "origin": "Aluva",
310
- "destination": "Pettah",
311
- "trip_count": 3,
312
- "estimated_km": 153.0
313
- },
314
- {
315
- "block_id": "BLK-027",
316
- "departure_time": "09:36",
317
- "origin": "Pettah",
318
- "destination": "Aluva",
319
- "trip_count": 3,
320
- "estimated_km": 153.0
321
- },
322
- {
323
- "block_id": "BLK-048",
324
- "departure_time": "14:15",
325
- "origin": "Aluva",
326
- "destination": "Pettah",
327
- "trip_count": 2,
328
- "estimated_km": 102.0
329
- },
330
- {
331
- "block_id": "BLK-069",
332
- "departure_time": "18:00",
333
- "origin": "Pettah",
334
- "destination": "Aluva",
335
- "trip_count": 3,
336
- "estimated_km": 153.0
337
- },
338
- {
339
- "block_id": "BLK-090",
340
- "departure_time": "20:06",
341
- "origin": "Aluva",
342
- "destination": "Pettah",
343
- "trip_count": 3,
344
- "estimated_km": 153.0
345
- }
346
- ],
347
- "stabling_bay": "BAY-08",
348
- "standby_reason": null,
349
- "maintenance_type": null,
350
- "ibl_bay": null,
351
- "estimated_completion": null,
352
- "alerts": [
353
- "Bogie in critical condition (wear: 86.7%)"
354
- ]
355
- },
356
- {
357
- "trainset_id": "TS-009",
358
- "status": "REVENUE_SERVICE",
359
- "readiness_score": 0.75,
360
- "daily_km_allocation": 714.0,
361
- "cumulative_km": 145758.47,
362
- "assigned_duty": "DUTY-A7",
363
- "priority_rank": 7,
364
- "service_blocks": [
365
- {
366
- "block_id": "BLK-007",
367
- "departure_time": "07:36",
368
- "origin": "Pettah",
369
- "destination": "Aluva",
370
- "trip_count": 3,
371
- "estimated_km": 153.0
372
- },
373
- {
374
- "block_id": "BLK-028",
375
- "departure_time": "09:42",
376
- "origin": "Aluva",
377
- "destination": "Pettah",
378
- "trip_count": 3,
379
- "estimated_km": 153.0
380
- },
381
- {
382
- "block_id": "BLK-049",
383
- "departure_time": "14:30",
384
- "origin": "Pettah",
385
- "destination": "Aluva",
386
- "trip_count": 2,
387
- "estimated_km": 102.0
388
- },
389
- {
390
- "block_id": "BLK-070",
391
- "departure_time": "18:06",
392
- "origin": "Aluva",
393
- "destination": "Pettah",
394
- "trip_count": 3,
395
- "estimated_km": 153.0
396
- },
397
- {
398
- "block_id": "BLK-091",
399
- "departure_time": "20:12",
400
- "origin": "Pettah",
401
- "destination": "Aluva",
402
- "trip_count": 3,
403
- "estimated_km": 153.0
404
- }
405
- ],
406
- "stabling_bay": "BAY-03",
407
- "standby_reason": null,
408
- "maintenance_type": null,
409
- "ibl_bay": null,
410
- "estimated_completion": null,
411
- "alerts": [
412
- "Coupler requires attention (wear: 81.1%)"
413
- ]
414
- },
415
- {
416
- "trainset_id": "TS-010",
417
- "status": "REVENUE_SERVICE",
418
- "readiness_score": 0.9,
419
- "daily_km_allocation": 714.0,
420
- "cumulative_km": 160763.11,
421
- "assigned_duty": "DUTY-A8",
422
- "priority_rank": 8,
423
- "service_blocks": [
424
- {
425
- "block_id": "BLK-001",
426
- "departure_time": "07:00",
427
- "origin": "Pettah",
428
- "destination": "Aluva",
429
- "trip_count": 3,
430
- "estimated_km": 153.0
431
- },
432
- {
433
- "block_id": "BLK-029",
434
- "departure_time": "09:48",
435
- "origin": "Pettah",
436
- "destination": "Aluva",
437
- "trip_count": 3,
438
- "estimated_km": 153.0
439
- },
440
- {
441
- "block_id": "BLK-050",
442
- "departure_time": "14:45",
443
- "origin": "Aluva",
444
- "destination": "Pettah",
445
- "trip_count": 2,
446
- "estimated_km": 102.0
447
- },
448
- {
449
- "block_id": "BLK-071",
450
- "departure_time": "18:12",
451
- "origin": "Pettah",
452
- "destination": "Aluva",
453
- "trip_count": 3,
454
- "estimated_km": 153.0
455
- },
456
- {
457
- "block_id": "BLK-092",
458
- "departure_time": "20:18",
459
- "origin": "Aluva",
460
- "destination": "Pettah",
461
- "trip_count": 3,
462
- "estimated_km": 153.0
463
- }
464
- ],
465
- "stabling_bay": "BAY-01",
466
- "standby_reason": null,
467
- "maintenance_type": null,
468
- "ibl_bay": null,
469
- "estimated_completion": null,
470
- "alerts": [
471
- "ROLLING_STOCK certificate expiring soon"
472
- ]
473
- },
474
- {
475
- "trainset_id": "TS-011",
476
- "status": "REVENUE_SERVICE",
477
- "readiness_score": 1.0,
478
- "daily_km_allocation": 714.0,
479
- "cumulative_km": 155347.61,
480
- "assigned_duty": "DUTY-A9",
481
- "priority_rank": 9,
482
- "service_blocks": [
483
- {
484
- "block_id": "BLK-009",
485
- "departure_time": "07:48",
486
- "origin": "Pettah",
487
- "destination": "Aluva",
488
- "trip_count": 3,
489
- "estimated_km": 153.0
490
- },
491
- {
492
- "block_id": "BLK-030",
493
- "departure_time": "09:54",
494
- "origin": "Aluva",
495
- "destination": "Pettah",
496
- "trip_count": 3,
497
- "estimated_km": 153.0
498
- },
499
- {
500
- "block_id": "BLK-051",
501
- "departure_time": "15:00",
502
- "origin": "Pettah",
503
- "destination": "Aluva",
504
- "trip_count": 2,
505
- "estimated_km": 102.0
506
- },
507
- {
508
- "block_id": "BLK-072",
509
- "departure_time": "18:18",
510
- "origin": "Aluva",
511
- "destination": "Pettah",
512
- "trip_count": 3,
513
- "estimated_km": 153.0
514
- },
515
- {
516
- "block_id": "BLK-093",
517
- "departure_time": "20:24",
518
- "origin": "Pettah",
519
- "destination": "Aluva",
520
- "trip_count": 3,
521
- "estimated_km": 153.0
522
- }
523
- ],
524
- "stabling_bay": "BAY-08",
525
- "standby_reason": null,
526
- "maintenance_type": null,
527
- "ibl_bay": null,
528
- "estimated_completion": null,
529
- "alerts": []
530
- },
531
- {
532
- "trainset_id": "TS-013",
533
- "status": "REVENUE_SERVICE",
534
- "readiness_score": 1.0,
535
- "daily_km_allocation": 663.0,
536
- "cumulative_km": 133497.24,
537
- "assigned_duty": "DUTY-A10",
538
- "priority_rank": 10,
539
- "service_blocks": [
540
- {
541
- "block_id": "BLK-010",
542
- "departure_time": "07:54",
543
- "origin": "Aluva",
544
- "destination": "Pettah",
545
- "trip_count": 3,
546
- "estimated_km": 153.0
547
- },
548
- {
549
- "block_id": "BLK-031",
550
- "departure_time": "10:00",
551
- "origin": "Pettah",
552
- "destination": "Aluva",
553
- "trip_count": 2,
554
- "estimated_km": 102.0
555
- },
556
- {
557
- "block_id": "BLK-052",
558
- "departure_time": "15:15",
559
- "origin": "Aluva",
560
- "destination": "Pettah",
561
- "trip_count": 2,
562
- "estimated_km": 102.0
563
- },
564
- {
565
- "block_id": "BLK-073",
566
- "departure_time": "18:24",
567
- "origin": "Pettah",
568
- "destination": "Aluva",
569
- "trip_count": 3,
570
- "estimated_km": 153.0
571
- },
572
- {
573
- "block_id": "BLK-094",
574
- "departure_time": "20:30",
575
- "origin": "Aluva",
576
- "destination": "Pettah",
577
- "trip_count": 3,
578
- "estimated_km": 153.0
579
- }
580
- ],
581
- "stabling_bay": "BAY-11",
582
- "standby_reason": null,
583
- "maintenance_type": null,
584
- "ibl_bay": null,
585
- "estimated_completion": null,
586
- "alerts": []
587
- },
588
- {
589
- "trainset_id": "TS-014",
590
- "status": "REVENUE_SERVICE",
591
- "readiness_score": 0.9,
592
- "daily_km_allocation": 663.0,
593
- "cumulative_km": 151328.62,
594
- "assigned_duty": "DUTY-B1",
595
- "priority_rank": 11,
596
- "service_blocks": [
597
- {
598
- "block_id": "BLK-011",
599
- "departure_time": "08:00",
600
- "origin": "Pettah",
601
- "destination": "Aluva",
602
- "trip_count": 3,
603
- "estimated_km": 153.0
604
- },
605
- {
606
- "block_id": "BLK-032",
607
- "departure_time": "10:15",
608
- "origin": "Aluva",
609
- "destination": "Pettah",
610
- "trip_count": 2,
611
- "estimated_km": 102.0
612
- },
613
- {
614
- "block_id": "BLK-053",
615
- "departure_time": "15:30",
616
- "origin": "Pettah",
617
- "destination": "Aluva",
618
- "trip_count": 2,
619
- "estimated_km": 102.0
620
- },
621
- {
622
- "block_id": "BLK-074",
623
- "departure_time": "18:30",
624
- "origin": "Aluva",
625
- "destination": "Pettah",
626
- "trip_count": 3,
627
- "estimated_km": 153.0
628
- },
629
- {
630
- "block_id": "BLK-095",
631
- "departure_time": "20:36",
632
- "origin": "Pettah",
633
- "destination": "Aluva",
634
- "trip_count": 3,
635
- "estimated_km": 153.0
636
- }
637
- ],
638
- "stabling_bay": "BAY-07",
639
- "standby_reason": null,
640
- "maintenance_type": null,
641
- "ibl_bay": null,
642
- "estimated_completion": null,
643
- "alerts": [
644
- "MECHANICAL certificate expiring soon"
645
- ]
646
- },
647
- {
648
- "trainset_id": "TS-015",
649
- "status": "REVENUE_SERVICE",
650
- "readiness_score": 1.0,
651
- "daily_km_allocation": 663.0,
652
- "cumulative_km": 173391.9,
653
- "assigned_duty": "DUTY-B2",
654
- "priority_rank": 12,
655
- "service_blocks": [
656
- {
657
- "block_id": "BLK-012",
658
- "departure_time": "08:06",
659
- "origin": "Aluva",
660
- "destination": "Pettah",
661
- "trip_count": 3,
662
- "estimated_km": 153.0
663
- },
664
- {
665
- "block_id": "BLK-033",
666
- "departure_time": "10:30",
667
- "origin": "Pettah",
668
- "destination": "Aluva",
669
- "trip_count": 2,
670
- "estimated_km": 102.0
671
- },
672
- {
673
- "block_id": "BLK-054",
674
- "departure_time": "15:45",
675
- "origin": "Aluva",
676
- "destination": "Pettah",
677
- "trip_count": 2,
678
- "estimated_km": 102.0
679
- },
680
- {
681
- "block_id": "BLK-075",
682
- "departure_time": "18:36",
683
- "origin": "Pettah",
684
- "destination": "Aluva",
685
- "trip_count": 3,
686
- "estimated_km": 153.0
687
- },
688
- {
689
- "block_id": "BLK-096",
690
- "departure_time": "20:42",
691
- "origin": "Aluva",
692
- "destination": "Pettah",
693
- "trip_count": 3,
694
- "estimated_km": 153.0
695
- }
696
- ],
697
- "stabling_bay": "BAY-04",
698
- "standby_reason": null,
699
- "maintenance_type": null,
700
- "ibl_bay": null,
701
- "estimated_completion": null,
702
- "alerts": []
703
- },
704
- {
705
- "trainset_id": "TS-016",
706
- "status": "REVENUE_SERVICE",
707
- "readiness_score": 1.0,
708
- "daily_km_allocation": 663.0,
709
- "cumulative_km": 131152.3,
710
- "assigned_duty": "DUTY-B3",
711
- "priority_rank": 13,
712
- "service_blocks": [
713
- {
714
- "block_id": "BLK-013",
715
- "departure_time": "08:12",
716
- "origin": "Pettah",
717
- "destination": "Aluva",
718
- "trip_count": 3,
719
- "estimated_km": 153.0
720
- },
721
- {
722
- "block_id": "BLK-034",
723
- "departure_time": "10:45",
724
- "origin": "Aluva",
725
- "destination": "Pettah",
726
- "trip_count": 2,
727
- "estimated_km": 102.0
728
- },
729
- {
730
- "block_id": "BLK-055",
731
- "departure_time": "16:00",
732
- "origin": "Pettah",
733
- "destination": "Aluva",
734
- "trip_count": 2,
735
- "estimated_km": 102.0
736
- },
737
- {
738
- "block_id": "BLK-076",
739
- "departure_time": "18:42",
740
- "origin": "Aluva",
741
- "destination": "Pettah",
742
- "trip_count": 3,
743
- "estimated_km": 153.0
744
- },
745
- {
746
- "block_id": "BLK-097",
747
- "departure_time": "20:48",
748
- "origin": "Pettah",
749
- "destination": "Aluva",
750
- "trip_count": 3,
751
- "estimated_km": 153.0
752
- }
753
- ],
754
- "stabling_bay": "BAY-03",
755
- "standby_reason": null,
756
- "maintenance_type": null,
757
- "ibl_bay": null,
758
- "estimated_completion": null,
759
- "alerts": []
760
- },
761
- {
762
- "trainset_id": "TS-017",
763
- "status": "REVENUE_SERVICE",
764
- "readiness_score": 0.85,
765
- "daily_km_allocation": 816.0,
766
- "cumulative_km": 157666.64,
767
- "assigned_duty": "DUTY-B4",
768
- "priority_rank": 14,
769
- "service_blocks": [
770
- {
771
- "block_id": "BLK-008",
772
- "departure_time": "07:42",
773
- "origin": "Aluva",
774
- "destination": "Pettah",
775
- "trip_count": 3,
776
- "estimated_km": 153.0
777
- },
778
- {
779
- "block_id": "BLK-014",
780
- "departure_time": "08:18",
781
- "origin": "Aluva",
782
- "destination": "Pettah",
783
- "trip_count": 3,
784
- "estimated_km": 153.0
785
- },
786
- {
787
- "block_id": "BLK-035",
788
- "departure_time": "11:00",
789
- "origin": "Pettah",
790
- "destination": "Aluva",
791
- "trip_count": 2,
792
- "estimated_km": 102.0
793
- },
794
- {
795
- "block_id": "BLK-056",
796
- "departure_time": "16:15",
797
- "origin": "Aluva",
798
- "destination": "Pettah",
799
- "trip_count": 2,
800
- "estimated_km": 102.0
801
- },
802
- {
803
- "block_id": "BLK-077",
804
- "departure_time": "18:48",
805
- "origin": "Pettah",
806
- "destination": "Aluva",
807
- "trip_count": 3,
808
- "estimated_km": 153.0
809
- },
810
- {
811
- "block_id": "BLK-098",
812
- "departure_time": "20:54",
813
- "origin": "Aluva",
814
- "destination": "Pettah",
815
- "trip_count": 3,
816
- "estimated_km": 153.0
817
- }
818
- ],
819
- "stabling_bay": "BAY-05",
820
- "standby_reason": null,
821
- "maintenance_type": null,
822
- "ibl_bay": null,
823
- "estimated_completion": null,
824
- "alerts": [
825
- "Bogie in critical condition (wear: 77.5%)"
826
- ]
827
- },
828
- {
829
- "trainset_id": "TS-020",
830
- "status": "REVENUE_SERVICE",
831
- "readiness_score": 0.85,
832
- "daily_km_allocation": 561.0,
833
- "cumulative_km": 178067.28,
834
- "assigned_duty": "DUTY-B5",
835
- "priority_rank": 15,
836
- "service_blocks": [
837
- {
838
- "block_id": "BLK-015",
839
- "departure_time": "08:24",
840
- "origin": "Pettah",
841
- "destination": "Aluva",
842
- "trip_count": 3,
843
- "estimated_km": 153.0
844
- },
845
- {
846
- "block_id": "BLK-036",
847
- "departure_time": "11:15",
848
- "origin": "Aluva",
849
- "destination": "Pettah",
850
- "trip_count": 2,
851
- "estimated_km": 102.0
852
- },
853
- {
854
- "block_id": "BLK-057",
855
- "departure_time": "16:30",
856
- "origin": "Pettah",
857
- "destination": "Aluva",
858
- "trip_count": 2,
859
- "estimated_km": 102.0
860
- },
861
- {
862
- "block_id": "BLK-078",
863
- "departure_time": "18:54",
864
- "origin": "Aluva",
865
- "destination": "Pettah",
866
- "trip_count": 3,
867
- "estimated_km": 153.0
868
- },
869
- {
870
- "block_id": "BLK-099",
871
- "departure_time": "21:00",
872
- "origin": "Pettah",
873
- "destination": "Aluva",
874
- "trip_count": 1,
875
- "estimated_km": 51.0
876
- }
877
- ],
878
- "stabling_bay": "BAY-10",
879
- "standby_reason": null,
880
- "maintenance_type": null,
881
- "ibl_bay": null,
882
- "estimated_completion": null,
883
- "alerts": [
884
- "Battery in critical condition (wear: 89.1%)"
885
- ]
886
- },
887
- {
888
- "trainset_id": "TS-021",
889
- "status": "REVENUE_SERVICE",
890
- "readiness_score": 0.8,
891
- "daily_km_allocation": 561.0,
892
- "cumulative_km": 133930.73,
893
- "assigned_duty": "DUTY-B6",
894
- "priority_rank": 16,
895
- "service_blocks": [
896
- {
897
- "block_id": "BLK-016",
898
- "departure_time": "08:30",
899
- "origin": "Aluva",
900
- "destination": "Pettah",
901
- "trip_count": 3,
902
- "estimated_km": 153.0
903
- },
904
- {
905
- "block_id": "BLK-037",
906
- "departure_time": "11:30",
907
- "origin": "Pettah",
908
- "destination": "Aluva",
909
- "trip_count": 2,
910
- "estimated_km": 102.0
911
- },
912
- {
913
- "block_id": "BLK-058",
914
- "departure_time": "16:45",
915
- "origin": "Aluva",
916
- "destination": "Pettah",
917
- "trip_count": 2,
918
- "estimated_km": 102.0
919
- },
920
- {
921
- "block_id": "BLK-079",
922
- "departure_time": "19:00",
923
- "origin": "Pettah",
924
- "destination": "Aluva",
925
- "trip_count": 3,
926
- "estimated_km": 153.0
927
- },
928
- {
929
- "block_id": "BLK-100",
930
- "departure_time": "21:15",
931
- "origin": "Aluva",
932
- "destination": "Pettah",
933
- "trip_count": 1,
934
- "estimated_km": 51.0
935
- }
936
- ],
937
- "stabling_bay": "BAY-06",
938
- "standby_reason": null,
939
- "maintenance_type": null,
940
- "ibl_bay": null,
941
- "estimated_completion": null,
942
- "alerts": [
943
- "HVAC requires attention (wear: 89.6%)",
944
- "Bogie in critical condition (wear: 67.7%)"
945
- ]
946
- },
947
- {
948
- "trainset_id": "TS-023",
949
- "status": "REVENUE_SERVICE",
950
- "readiness_score": 0.9,
951
- "daily_km_allocation": 612.0,
952
- "cumulative_km": 60427.22,
953
- "assigned_duty": "DUTY-B7",
954
- "priority_rank": 17,
955
- "service_blocks": [
956
- {
957
- "block_id": "BLK-017",
958
- "departure_time": "08:36",
959
- "origin": "Pettah",
960
- "destination": "Aluva",
961
- "trip_count": 3,
962
- "estimated_km": 153.0
963
- },
964
- {
965
- "block_id": "BLK-038",
966
- "departure_time": "11:45",
967
- "origin": "Aluva",
968
- "destination": "Pettah",
969
- "trip_count": 2,
970
- "estimated_km": 102.0
971
- },
972
- {
973
- "block_id": "BLK-059",
974
- "departure_time": "17:00",
975
- "origin": "Pettah",
976
- "destination": "Aluva",
977
- "trip_count": 3,
978
- "estimated_km": 153.0
979
- },
980
- {
981
- "block_id": "BLK-080",
982
- "departure_time": "19:06",
983
- "origin": "Aluva",
984
- "destination": "Pettah",
985
- "trip_count": 3,
986
- "estimated_km": 153.0
987
- },
988
- {
989
- "block_id": "BLK-101",
990
- "departure_time": "21:30",
991
- "origin": "Pettah",
992
- "destination": "Aluva",
993
- "trip_count": 1,
994
- "estimated_km": 51.0
995
- }
996
- ],
997
- "stabling_bay": "BAY-05",
998
- "standby_reason": null,
999
- "maintenance_type": null,
1000
- "ibl_bay": null,
1001
- "estimated_completion": null,
1002
- "alerts": []
1003
- },
1004
- {
1005
- "trainset_id": "TS-026",
1006
- "status": "REVENUE_SERVICE",
1007
- "readiness_score": 1.0,
1008
- "daily_km_allocation": 612.0,
1009
- "cumulative_km": 126495.44,
1010
- "assigned_duty": "DUTY-B8",
1011
- "priority_rank": 18,
1012
- "service_blocks": [
1013
- {
1014
- "block_id": "BLK-018",
1015
- "departure_time": "08:42",
1016
- "origin": "Aluva",
1017
- "destination": "Pettah",
1018
- "trip_count": 3,
1019
- "estimated_km": 153.0
1020
- },
1021
- {
1022
- "block_id": "BLK-039",
1023
- "departure_time": "12:00",
1024
- "origin": "Pettah",
1025
- "destination": "Aluva",
1026
- "trip_count": 2,
1027
- "estimated_km": 102.0
1028
- },
1029
- {
1030
- "block_id": "BLK-060",
1031
- "departure_time": "17:06",
1032
- "origin": "Aluva",
1033
- "destination": "Pettah",
1034
- "trip_count": 3,
1035
- "estimated_km": 153.0
1036
- },
1037
- {
1038
- "block_id": "BLK-081",
1039
- "departure_time": "19:12",
1040
- "origin": "Pettah",
1041
- "destination": "Aluva",
1042
- "trip_count": 3,
1043
- "estimated_km": 153.0
1044
- },
1045
- {
1046
- "block_id": "BLK-102",
1047
- "departure_time": "21:45",
1048
- "origin": "Aluva",
1049
- "destination": "Pettah",
1050
- "trip_count": 1,
1051
- "estimated_km": 51.0
1052
- }
1053
- ],
1054
- "stabling_bay": "BAY-01",
1055
- "standby_reason": null,
1056
- "maintenance_type": null,
1057
- "ibl_bay": null,
1058
- "estimated_completion": null,
1059
- "alerts": []
1060
- },
1061
- {
1062
- "trainset_id": "TS-027",
1063
- "status": "REVENUE_SERVICE",
1064
- "readiness_score": 1.0,
1065
- "daily_km_allocation": 612.0,
1066
- "cumulative_km": 139026.71,
1067
- "assigned_duty": "DUTY-B9",
1068
- "priority_rank": 19,
1069
- "service_blocks": [
1070
- {
1071
- "block_id": "BLK-019",
1072
- "departure_time": "08:48",
1073
- "origin": "Pettah",
1074
- "destination": "Aluva",
1075
- "trip_count": 3,
1076
- "estimated_km": 153.0
1077
- },
1078
- {
1079
- "block_id": "BLK-040",
1080
- "departure_time": "12:15",
1081
- "origin": "Aluva",
1082
- "destination": "Pettah",
1083
- "trip_count": 2,
1084
- "estimated_km": 102.0
1085
- },
1086
- {
1087
- "block_id": "BLK-061",
1088
- "departure_time": "17:12",
1089
- "origin": "Pettah",
1090
- "destination": "Aluva",
1091
- "trip_count": 3,
1092
- "estimated_km": 153.0
1093
- },
1094
- {
1095
- "block_id": "BLK-082",
1096
- "departure_time": "19:18",
1097
- "origin": "Aluva",
1098
- "destination": "Pettah",
1099
- "trip_count": 3,
1100
- "estimated_km": 153.0
1101
- },
1102
- {
1103
- "block_id": "BLK-103",
1104
- "departure_time": "22:00",
1105
- "origin": "Pettah",
1106
- "destination": "Aluva",
1107
- "trip_count": 1,
1108
- "estimated_km": 51.0
1109
- }
1110
- ],
1111
- "stabling_bay": "BAY-06",
1112
- "standby_reason": null,
1113
- "maintenance_type": null,
1114
- "ibl_bay": null,
1115
- "estimated_completion": null,
1116
- "alerts": []
1117
- },
1118
- {
1119
- "trainset_id": "TS-029",
1120
- "status": "REVENUE_SERVICE",
1121
- "readiness_score": 0.8,
1122
- "daily_km_allocation": 612.0,
1123
- "cumulative_km": 73541.88,
1124
- "assigned_duty": "DUTY-B10",
1125
- "priority_rank": 20,
1126
- "service_blocks": [
1127
- {
1128
- "block_id": "BLK-020",
1129
- "departure_time": "08:54",
1130
- "origin": "Aluva",
1131
- "destination": "Pettah",
1132
- "trip_count": 3,
1133
- "estimated_km": 153.0
1134
- },
1135
- {
1136
- "block_id": "BLK-041",
1137
- "departure_time": "12:30",
1138
- "origin": "Pettah",
1139
- "destination": "Aluva",
1140
- "trip_count": 2,
1141
- "estimated_km": 102.0
1142
- },
1143
- {
1144
- "block_id": "BLK-062",
1145
- "departure_time": "17:18",
1146
- "origin": "Aluva",
1147
- "destination": "Pettah",
1148
- "trip_count": 3,
1149
- "estimated_km": 153.0
1150
- },
1151
- {
1152
- "block_id": "BLK-083",
1153
- "departure_time": "19:24",
1154
- "origin": "Pettah",
1155
- "destination": "Aluva",
1156
- "trip_count": 3,
1157
- "estimated_km": 153.0
1158
- },
1159
- {
1160
- "block_id": "BLK-104",
1161
- "departure_time": "22:15",
1162
- "origin": "Aluva",
1163
- "destination": "Pettah",
1164
- "trip_count": 1,
1165
- "estimated_km": 51.0
1166
- }
1167
- ],
1168
- "stabling_bay": "BAY-08",
1169
- "standby_reason": null,
1170
- "maintenance_type": null,
1171
- "ibl_bay": null,
1172
- "estimated_completion": null,
1173
- "alerts": []
1174
- },
1175
- {
1176
- "trainset_id": "TS-030",
1177
- "status": "REVENUE_SERVICE",
1178
- "readiness_score": 0.95,
1179
- "daily_km_allocation": 612.0,
1180
- "cumulative_km": 190575.95,
1181
- "assigned_duty": "DUTY-C1",
1182
- "priority_rank": 21,
1183
- "service_blocks": [
1184
- {
1185
- "block_id": "BLK-021",
1186
- "departure_time": "09:00",
1187
- "origin": "Pettah",
1188
- "destination": "Aluva",
1189
- "trip_count": 3,
1190
- "estimated_km": 153.0
1191
- },
1192
- {
1193
- "block_id": "BLK-042",
1194
- "departure_time": "12:45",
1195
- "origin": "Aluva",
1196
- "destination": "Pettah",
1197
- "trip_count": 2,
1198
- "estimated_km": 102.0
1199
- },
1200
- {
1201
- "block_id": "BLK-063",
1202
- "departure_time": "17:24",
1203
- "origin": "Pettah",
1204
- "destination": "Aluva",
1205
- "trip_count": 3,
1206
- "estimated_km": 153.0
1207
- },
1208
- {
1209
- "block_id": "BLK-084",
1210
- "departure_time": "19:30",
1211
- "origin": "Aluva",
1212
- "destination": "Pettah",
1213
- "trip_count": 3,
1214
- "estimated_km": 153.0
1215
- },
1216
- {
1217
- "block_id": "BLK-105",
1218
- "departure_time": "22:30",
1219
- "origin": "Pettah",
1220
- "destination": "Aluva",
1221
- "trip_count": 1,
1222
- "estimated_km": 51.0
1223
- }
1224
- ],
1225
- "stabling_bay": "BAY-13",
1226
- "standby_reason": null,
1227
- "maintenance_type": null,
1228
- "ibl_bay": null,
1229
- "estimated_completion": null,
1230
- "alerts": []
1231
- },
1232
- {
1233
- "trainset_id": "TS-018",
1234
- "status": "STANDBY",
1235
- "readiness_score": 0.55,
1236
- "daily_km_allocation": 0.0,
1237
- "cumulative_km": 83766.69,
1238
- "assigned_duty": null,
1239
- "priority_rank": null,
1240
- "service_blocks": null,
1241
- "stabling_bay": "BAY-11",
1242
- "standby_reason": "PEAK_HOUR_RESERVE",
1243
- "maintenance_type": null,
1244
- "ibl_bay": null,
1245
- "estimated_completion": null,
1246
- "alerts": [
1247
- "ROLLING_STOCK certificate expired",
1248
- "Bogie in critical condition (wear: 85.3%)"
1249
- ]
1250
- },
1251
- {
1252
- "trainset_id": "TS-019",
1253
- "status": "STANDBY",
1254
- "readiness_score": 0.95,
1255
- "daily_km_allocation": 0.0,
1256
- "cumulative_km": 142206.21,
1257
- "assigned_duty": null,
1258
- "priority_rank": null,
1259
- "service_blocks": null,
1260
- "stabling_bay": "BAY-15",
1261
- "standby_reason": "MILEAGE_BALANCING",
1262
- "maintenance_type": null,
1263
- "ibl_bay": null,
1264
- "estimated_completion": null,
1265
- "alerts": [
1266
- "Coupler requires attention (wear: 91.9%)"
1267
- ]
1268
- },
1269
- {
1270
- "trainset_id": "TS-022",
1271
- "status": "STANDBY",
1272
- "readiness_score": 0.95,
1273
- "daily_km_allocation": 0.0,
1274
- "cumulative_km": 109011.76,
1275
- "assigned_duty": null,
1276
- "priority_rank": null,
1277
- "service_blocks": null,
1278
- "stabling_bay": "BAY-07",
1279
- "standby_reason": "PEAK_HOUR_RESERVE",
1280
- "maintenance_type": null,
1281
- "ibl_bay": null,
1282
- "estimated_completion": null,
1283
- "alerts": [
1284
- "Battery requires attention (wear: 92.0%)"
1285
- ]
1286
- },
1287
- {
1288
- "trainset_id": "TS-025",
1289
- "status": "STANDBY",
1290
- "readiness_score": 0.65,
1291
- "daily_km_allocation": 0.0,
1292
- "cumulative_km": 144128.47,
1293
- "assigned_duty": null,
1294
- "priority_rank": null,
1295
- "service_blocks": null,
1296
- "stabling_bay": "BAY-06",
1297
- "standby_reason": "EMERGENCY_BACKUP",
1298
- "maintenance_type": null,
1299
- "ibl_bay": null,
1300
- "estimated_completion": null,
1301
- "alerts": [
1302
- "Door_System in critical condition (wear: 83.8%)",
1303
- "Pantograph in critical condition (wear: 71.4%)",
1304
- "Bogie requires attention (wear: 94.8%)"
1305
- ]
1306
- },
1307
- {
1308
- "trainset_id": "TS-002",
1309
- "status": "MAINTENANCE",
1310
- "readiness_score": 0.85,
1311
- "daily_km_allocation": 0.0,
1312
- "cumulative_km": 89544.91,
1313
- "assigned_duty": null,
1314
- "priority_rank": null,
1315
- "service_blocks": null,
1316
- "stabling_bay": null,
1317
- "standby_reason": null,
1318
- "maintenance_type": "SCHEDULED_INSPECTION",
1319
- "ibl_bay": "IBL-04",
1320
- "estimated_completion": "2025-11-29T04:10:23.708006",
1321
- "alerts": [
1322
- "OPERATIONS certificate expiring soon",
1323
- "Coupler requires attention (wear: 90.7%)"
1324
- ]
1325
- },
1326
- {
1327
- "trainset_id": "TS-004",
1328
- "status": "MAINTENANCE",
1329
- "readiness_score": 0.55,
1330
- "daily_km_allocation": 0.0,
1331
- "cumulative_km": 125601.67,
1332
- "assigned_duty": null,
1333
- "priority_rank": null,
1334
- "service_blocks": null,
1335
- "stabling_bay": null,
1336
- "standby_reason": null,
1337
- "maintenance_type": "SCHEDULED_INSPECTION",
1338
- "ibl_bay": "IBL-04",
1339
- "estimated_completion": "2025-11-29T10:10:23.708043",
1340
- "alerts": [
1341
- "SAFETY certificate expired",
1342
- "HVAC in critical condition (wear: 90.2%)"
1343
- ]
1344
- },
1345
- {
1346
- "trainset_id": "TS-012",
1347
- "status": "MAINTENANCE",
1348
- "readiness_score": 0.6,
1349
- "daily_km_allocation": 0.0,
1350
- "cumulative_km": 177302.58,
1351
- "assigned_duty": null,
1352
- "priority_rank": null,
1353
- "service_blocks": null,
1354
- "stabling_bay": null,
1355
- "standby_reason": null,
1356
- "maintenance_type": "SCHEDULED_INSPECTION",
1357
- "ibl_bay": "IBL-02",
1358
- "estimated_completion": "2025-11-29T04:10:23.708086",
1359
- "alerts": [
1360
- "ROLLING_STOCK certificate expired",
1361
- "SAFETY certificate expiring soon"
1362
- ]
1363
- },
1364
- {
1365
- "trainset_id": "TS-024",
1366
- "status": "MAINTENANCE",
1367
- "readiness_score": 0.65,
1368
- "daily_km_allocation": 0.0,
1369
- "cumulative_km": 103344.64,
1370
- "assigned_duty": null,
1371
- "priority_rank": null,
1372
- "service_blocks": null,
1373
- "stabling_bay": null,
1374
- "standby_reason": null,
1375
- "maintenance_type": "SCHEDULED_INSPECTION",
1376
- "ibl_bay": "IBL-04",
1377
- "estimated_completion": "2025-11-29T09:10:23.708107",
1378
- "alerts": [
1379
- "MECHANICAL certificate expiring soon",
1380
- "Door_System requires attention (wear: 91.7%)"
1381
- ]
1382
- },
1383
- {
1384
- "trainset_id": "TS-028",
1385
- "status": "MAINTENANCE",
1386
- "readiness_score": 0.65,
1387
- "daily_km_allocation": 0.0,
1388
- "cumulative_km": 91684.88,
1389
- "assigned_duty": null,
1390
- "priority_rank": null,
1391
- "service_blocks": null,
1392
- "stabling_bay": null,
1393
- "standby_reason": null,
1394
- "maintenance_type": "SCHEDULED_INSPECTION",
1395
- "ibl_bay": "IBL-03",
1396
- "estimated_completion": "2025-11-29T08:10:23.708126",
1397
- "alerts": [
1398
- "OPERATIONS certificate expired",
1399
- "Battery requires attention (wear: 90.2%)"
1400
- ]
1401
- }
1402
- ],
1403
- "fleet_summary": {
1404
- "total_trainsets": 30,
1405
- "revenue_service": 21,
1406
- "standby": 4,
1407
- "maintenance": 5,
1408
- "availability_percent": 83.3
1409
- },
1410
- "optimization_metrics": {
1411
- "fitness_score": -1297.996832359765,
1412
- "method": "ga",
1413
- "mileage_variance_coefficient": 0.134,
1414
- "total_planned_km": 13974.0,
1415
- "optimization_runtime_ms": 3952
1416
- },
1417
- "alerts": [
1418
- {
1419
- "trainset_id": "TS-006",
1420
- "severity": "MEDIUM",
1421
- "alert_type": "COMPONENT_WARNING",
1422
- "message": "Battery requires attention (wear: 84.0%)"
1423
- },
1424
- {
1425
- "trainset_id": "TS-007",
1426
- "severity": "HIGH",
1427
- "alert_type": "COMPONENT_CRITICAL",
1428
- "message": "Brake_System in critical condition (wear: 62.2%)"
1429
- },
1430
- {
1431
- "trainset_id": "TS-008",
1432
- "severity": "HIGH",
1433
- "alert_type": "COMPONENT_CRITICAL",
1434
- "message": "Bogie in critical condition (wear: 86.7%)"
1435
- },
1436
- {
1437
- "trainset_id": "TS-009",
1438
- "severity": "MEDIUM",
1439
- "alert_type": "COMPONENT_WARNING",
1440
- "message": "Coupler requires attention (wear: 81.1%)"
1441
- },
1442
- {
1443
- "trainset_id": "TS-010",
1444
- "severity": "MEDIUM",
1445
- "alert_type": "CERTIFICATE_EXPIRING",
1446
- "message": "ROLLING_STOCK certificate expiring soon"
1447
- },
1448
- {
1449
- "trainset_id": "TS-014",
1450
- "severity": "MEDIUM",
1451
- "alert_type": "CERTIFICATE_EXPIRING",
1452
- "message": "MECHANICAL certificate expiring soon"
1453
- },
1454
- {
1455
- "trainset_id": "TS-017",
1456
- "severity": "HIGH",
1457
- "alert_type": "COMPONENT_CRITICAL",
1458
- "message": "Bogie in critical condition (wear: 77.5%)"
1459
- },
1460
- {
1461
- "trainset_id": "TS-020",
1462
- "severity": "HIGH",
1463
- "alert_type": "COMPONENT_CRITICAL",
1464
- "message": "Battery in critical condition (wear: 89.1%)"
1465
- },
1466
- {
1467
- "trainset_id": "TS-021",
1468
- "severity": "MEDIUM",
1469
- "alert_type": "COMPONENT_WARNING",
1470
- "message": "HVAC requires attention (wear: 89.6%)"
1471
- },
1472
- {
1473
- "trainset_id": "TS-021",
1474
- "severity": "HIGH",
1475
- "alert_type": "COMPONENT_CRITICAL",
1476
- "message": "Bogie in critical condition (wear: 67.7%)"
1477
- },
1478
- {
1479
- "trainset_id": "TS-018",
1480
- "severity": "HIGH",
1481
- "alert_type": "CERTIFICATE_EXPIRED",
1482
- "message": "ROLLING_STOCK certificate expired"
1483
- },
1484
- {
1485
- "trainset_id": "TS-018",
1486
- "severity": "HIGH",
1487
- "alert_type": "COMPONENT_CRITICAL",
1488
- "message": "Bogie in critical condition (wear: 85.3%)"
1489
- },
1490
- {
1491
- "trainset_id": "TS-019",
1492
- "severity": "MEDIUM",
1493
- "alert_type": "COMPONENT_WARNING",
1494
- "message": "Coupler requires attention (wear: 91.9%)"
1495
- },
1496
- {
1497
- "trainset_id": "TS-022",
1498
- "severity": "MEDIUM",
1499
- "alert_type": "COMPONENT_WARNING",
1500
- "message": "Battery requires attention (wear: 92.0%)"
1501
- },
1502
- {
1503
- "trainset_id": "TS-025",
1504
- "severity": "HIGH",
1505
- "alert_type": "COMPONENT_CRITICAL",
1506
- "message": "Door_System in critical condition (wear: 83.8%)"
1507
- },
1508
- {
1509
- "trainset_id": "TS-025",
1510
- "severity": "HIGH",
1511
- "alert_type": "COMPONENT_CRITICAL",
1512
- "message": "Pantograph in critical condition (wear: 71.4%)"
1513
- },
1514
- {
1515
- "trainset_id": "TS-025",
1516
- "severity": "MEDIUM",
1517
- "alert_type": "COMPONENT_WARNING",
1518
- "message": "Bogie requires attention (wear: 94.8%)"
1519
- },
1520
- {
1521
- "trainset_id": "TS-002",
1522
- "severity": "MEDIUM",
1523
- "alert_type": "CERTIFICATE_EXPIRING",
1524
- "message": "OPERATIONS certificate expiring soon"
1525
- },
1526
- {
1527
- "trainset_id": "TS-002",
1528
- "severity": "MEDIUM",
1529
- "alert_type": "COMPONENT_WARNING",
1530
- "message": "Coupler requires attention (wear: 90.7%)"
1531
- },
1532
- {
1533
- "trainset_id": "TS-004",
1534
- "severity": "HIGH",
1535
- "alert_type": "CERTIFICATE_EXPIRED",
1536
- "message": "SAFETY certificate expired"
1537
- },
1538
- {
1539
- "trainset_id": "TS-004",
1540
- "severity": "HIGH",
1541
- "alert_type": "COMPONENT_CRITICAL",
1542
- "message": "HVAC in critical condition (wear: 90.2%)"
1543
- },
1544
- {
1545
- "trainset_id": "TS-012",
1546
- "severity": "HIGH",
1547
- "alert_type": "CERTIFICATE_EXPIRED",
1548
- "message": "ROLLING_STOCK certificate expired"
1549
- },
1550
- {
1551
- "trainset_id": "TS-012",
1552
- "severity": "MEDIUM",
1553
- "alert_type": "CERTIFICATE_EXPIRING",
1554
- "message": "SAFETY certificate expiring soon"
1555
- },
1556
- {
1557
- "trainset_id": "TS-024",
1558
- "severity": "MEDIUM",
1559
- "alert_type": "CERTIFICATE_EXPIRING",
1560
- "message": "MECHANICAL certificate expiring soon"
1561
- },
1562
- {
1563
- "trainset_id": "TS-024",
1564
- "severity": "MEDIUM",
1565
- "alert_type": "COMPONENT_WARNING",
1566
- "message": "Door_System requires attention (wear: 91.7%)"
1567
- },
1568
- {
1569
- "trainset_id": "TS-028",
1570
- "severity": "HIGH",
1571
- "alert_type": "CERTIFICATE_EXPIRED",
1572
- "message": "OPERATIONS certificate expired"
1573
- },
1574
- {
1575
- "trainset_id": "TS-028",
1576
- "severity": "MEDIUM",
1577
- "alert_type": "COMPONENT_WARNING",
1578
- "message": "Battery requires attention (wear: 90.2%)"
1579
- }
1580
- ]
1581
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
test_output/local_gen_30_output_20251202_143910.json ADDED
The diff for this file is too large to render. See raw diff