Sprint 105

All our products have been updated on Feb 11, 2024 with the releases associated to this Sprint 105.

 

Chouette

Associate documents with Stop Areas & Companies

The user can associate several Documents to a Stop Area or Company:

screenshot-chouette-core-test.enroute.mobi-2024.02.13-15_27_33.png

The user can retrieve the “current” Document associated to a Stop Area or a Company and the specified Document Type via the Publication API at this endpoint:

/api/v1/datas/<publication api>/documents/stop_areas/<registration number>/<document_type> /api/v1/datas/<publication api>/documents/companies/<registration number>/<document_type>

The user documentation describes how to manage Documents associated with Lines, and now Stop Areas and Companies:

Compute Service Counts with a Macro (after an import)

The user can compute service counts by using the dedicated Macro:

screenshot-chouette-core-test.enroute.mobi-2024.02.13-16_45_13.png

With this Macro, the user can have access the Service Count tools before the DataSet merge, for example just after an Import:

Controls & Macros with attribute

Controls and Macros with a Chouette attribute as target have been updated to provide an up-to-date list of attributes.

The following Controls have been improved:

The following Macros have been improved:

Search Companies with new interface

The user can search by using the new Search UI framework:

This new framework will provide saved searches and graphical views in the next Sprints.

Workbench Sharing

Very large improvements are performed into the Chouette SaaS code base to provide the awaited feature about Workbench Sharing.

In this Sprint, the changes, although very significant, are internal and should not be visible for the users.

Publication per Line End Of Life

The user can no longer define a Publication to export a file for each aggregated Line. This complex feature has not been used for many months and was no longer useful.

This is a step to provide improvements and new features around .

GTFS Import

The Chouette SaaS GTFS import has been improved in its support of .. invalid GTFS files. This improvement avoids an import fail in many cases where the GTFS file uses an invalid syntax (unexpected value in a row, blank values, empty lines, etc).

Documentation

Many improvements have been made on the Chouette SaaS user documentation, among them:

  • the Chouette GraphQL API documentation has been updated to describe new attributes on Routes

  • the documentation describes the new static period range options

  • the documentation has been improved

Ara

Use a specific format for default Vehicle Journey identifier

When the user specifies a generators.reference_vehicle_journey_identifier setting, this format is used to create Vehicle Journey identifiers. Without this setting, the generators.reference_identifier format is used (when defined).

Example

With a generators.reference_vehicle_journey_identifier defines with ServiceJourney:%{default}, the generated DatedVehicleJourneyRef will be something like ServiceJourney:ab0680a894...9838b675ea87c2c11c379e

See the documentation for more details.

Broadcast SIRI Stop Monitoring with a single notification

When the user defines the setting broadcast.siri.stop_monitoring.multiple_subscriptions at true, the SIRI Stop Monitoring Subscription Broadcaster will send a single NotifyStopMonitoring with multiple StopMonitoringDelivery for each subscription (which requires a notification):

<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:siri="http://www.siri.org.uk/siri" xmlns:ws="http://wsdl.siri.org.uk"> <soap:Body> <ws:NotifyStopMonitoring> <ServiceDeliveryInfo> <siri:ResponseTimestamp>2030-01-01T12:00:00.000Z</siri:ResponseTimestamp> <siri:ProducerRef>Ara</siri:ProducerRef> <siri:RequestMessageRef>0ae77dac-cb4b-11ee-a1ac-9334ca08e373</siri:RequestMessageRef> </ServiceDeliveryInfo> <Notification> <siri:StopMonitoringDelivery> <siri:ResponseTimestamp>2030-01-01T12:00:00.000Z</siri:ResponseTimestamp> <siri:SubscriptionRef>ea7004a9-4eb1-4dbc-9e13-93afe28b41a7</siri:SubscriptionRef> <siri:MonitoredStopVisitCancellation> <siri:RecordedAtTime>2030-01-01T12:00:00.000Z</siri:RecordedAtTime> <siri:ItemRef>StopVisit:123</siri:ItemRef> <siri:MonitoringRef>Quay:123</siri:MonitoringRef> <siri:VehicleJourneyRef> <siri:DataFrameRef>20300101</siri:DataFrameRef> <siri:DatedVehicleJourneyRef>59237a52-cb4b-11ee-88df-2735aeb85b43</siri:DatedVehicleJourneyRef> </siri:VehicleJourneyRef> </siri:MonitoredStopVisitCancellation> </siri:StopMonitoringDelivery> <siri:StopMonitoringDelivery> <siri:ResponseTimestamp>2030-01-01T12:00:00.000Z</siri:ResponseTimestamp> <siri:SubscriptionRef>ea7004a9-4eb1-4dbc-9e13-93afe28b41a7</siri:SubscriptionRef> <siri:MonitoredStopVisit> <siri:RecordedAtTime>2030-01-01T12:00:00.000Z</siri:RecordedAtTime> <siri:ItemIdentifier>StopVisit:343</siri:ItemIdentifier> <siri:MonitoringRef>StopPlace:125</siri:MonitoringRef> <siri:MonitoredVehicleJourney> <siri:LineRef>Line::418</siri:LineRef> <siri:FramedVehicleJourneyRef> <siri:DataFrameRef>20300101</siri:DataFrameRef> <siri:DatedVehicleJourneyRef>da196e0a-cb4b-11ee-b0ca-b30f674a5e61</siri:DatedVehicleJourneyRef> </siri:FramedVehicleJourneyRef> <siri:JourneyPatternRef>JourneyPattern::L418P2</siri:JourneyPatternRef> <siri:PublishedLineName>418</siri:PublishedLineName> <siri:DirectionName>Piscine Municipal</siri:DirectionName> <siri:OperatorRef>Company::410</siri:OperatorRef> <siri:DestinationRef>Quay:1389</siri:DestinationRef> <siri:DestinationName>La Mare aux Saules</siri:DestinationName> <siri:Monitored>true</siri:Monitored> <siri:MonitoredCall> <siri:StopPointRef>Quay:1251</siri:StopPointRef> <siri:Order>17</siri:Order> <siri:StopPointName>Marcel Cerdan</siri:StopPointName> <siri:VehicleAtStop>false</siri:VehicleAtStop> <siri:DestinationDisplay>La Mare aux Saules</siri:DestinationDisplay> <siri:AimedArrivalTime>2030-01-01T13:45:10.000+02:00</siri:AimedArrivalTime> <siri:ExpectedArrivalTime>2030-01-01T13:43:39.000+02:00</siri:ExpectedArrivalTime> <siri:ArrivalStatus>onTime</siri:ArrivalStatus> <siri:AimedDepartureTime>2030-01-01T13:45:10.000+02:00</siri:AimedDepartureTime> <siri:ExpectedDepartureTime>2030-01-01T13:43:39.000+02:00</siri:ExpectedDepartureTime> <siri:DepartureStatus>onTime</siri:DepartureStatus> </siri:MonitoredCall> </siri:MonitoredVehicleJourney> </siri:MonitoredStopVisit> </siri:StopMonitoringDelivery> <siri:StopMonitoringDelivery> <siri:ResponseTimestamp>2030-01-01T12:00:00.000Z</siri:ResponseTimestamp> <siri:SubscriptionRef>dafb9858-cb54-11ee-9c9d-bbce0d1fe12d</siri:SubscriptionRef> <siri:MonitoredStopVisit> <siri:RecordedAtTime>2030-01-01T12:00:00.000Z</siri:RecordedAtTime> <siri:ItemIdentifier>StopVisit:344</siri:ItemIdentifier> <siri:MonitoringRef>StopPlace:67</siri:MonitoringRef> <siri:MonitoredVehicleJourney> <siri:LineRef>Line::129</siri:LineRef> <siri:FramedVehicleJourneyRef> <siri:DataFrameRef>20300101</siri:DataFrameRef> <siri:DatedVehicleJourneyRef>506c76e4-cb54-11ee-87b1-3fa4927712a0</siri:DatedVehicleJourneyRef> </siri:FramedVehicleJourneyRef> <siri:JourneyPatternRef>JourneyPattern::8910</siri:JourneyPatternRef> <siri:PublishedLineName>129</siri:PublishedLineName> <siri:OperatorRef>Company::410</siri:OperatorRef> <siri:DestinationRef>Quay:8901</siri:DestinationRef> <siri:DestinationName>Main Station</siri:DestinationName> <siri:Monitored>true</siri:Monitored> <siri:MonitoredCall> <siri:StopPointRef>Quay:7809</siri:StopPointRef> <siri:Order>4</siri:Order> <siri:StopPointName>Leon Blum</siri:StopPointName> <siri:VehicleAtStop>false</siri:VehicleAtStop> <siri:DestinationDisplay>Main Station</siri:DestinationDisplay> <siri:AimedArrivalTime>2030-01-01T13:52:10.000+02:00</siri:AimedArrivalTime> <siri:ExpectedArrivalTime>2030-01-01T13:53:39.000+02:00</siri:ExpectedArrivalTime> <siri:ArrivalStatus>onTime</siri:ArrivalStatus> <siri:AimedDepartureTime>2030-01-01T13:53:10.000+02:00</siri:AimedDepartureTime> <siri:ExpectedDepartureTime>2030-01-01T13:54:14.000+02:00</siri:ExpectedDepartureTime> <siri:DepartureStatus>onTime</siri:DepartureStatus> </siri:MonitoredCall> </siri:MonitoredVehicleJourney> </siri:MonitoredStopVisit> </siri:StopMonitoringDelivery> </Notification> <SiriExtension/> </ws:NotifyStopMonitoring> </soap:Body> </soap:Envelope>

Collection Situations by Line

When the user uses siri-situation-exchange-request-collector , Ara collects Situations with request or subscription for each Line.

<?xml version='1.0' encoding='utf-8'?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sw="http://wsdl.siri.org.uk" xmlns:siri="http://www.siri.org.uk/siri"> <soap:Body> <sw:GetSituationExchange> <ServiceRequestInfo> <siri:RequestTimestamp>2030-01-01T12:01:10.000Z</siri:RequestTimestamp> <siri:RequestorRef>Ara</siri:RequestorRef> <siri:MessageIdentifier>6ba7b814-9dad-11d1-4-00c04fd430c8</siri:MessageIdentifier> </ServiceRequestInfo> <Request> <siri:RequestTimestamp>2030-01-01T12:01:10.000Z</siri:RequestTimestamp> <siri:LineRef>1234</siri:LineRef> </Request> <RequestExtension /> </sw:GetSituationExchange> </soap:Body> </soap:Envelope>

Documentation

Many improvements have been made on the Ara SaaS user documentation, among them:

Chouette Convert

Add Day Type for GTFS services with only dates

When a GTFS file only defines a Service via Calendar Dates, the NeTEx file contains a correct Day Type (and associated Day Type Assignments).

Avoid empty NeTEx Line name

When a GTFS Line defines a blank Route long name, this value is ignored to use the Route short name as fallback.

Avoid NeTEx Operator without id

When a GTFS file defines a single default Agency, the NeTEx file contains an Operator with a default id.

Better support for invalid GTFS files

The Chouette Convert GTFS conversion has been improved in its support of .. invalid GTFS files. This improvement avoids an import fail in many cases where the GTFS file uses an invalid syntax (unexpected value in a row, blank values, empty lines, etc).

Avoid same identifier between Scheduled Stop Point and other Point

In some rare condition, the NeTEx file created from a GTFS one could use the identifier for a Scheduled Stop Point than a Route Point. The syntax of these identifiers are now changed to avoid this kind of duplicate.

New QA tools

The Chouette Convert SaaS product already uses the same automatic scenario framework than Chouette SaaS and Ara SaaS.

Each Chouette Convert feature is tested by one or several scenarios to ensure that the expected result is achieved:

The enRoute team is working a new approach to challenge Chouette Convert SaaS in our QA phase: our QA servers collect every day hundred of datasets (GTFS, NeTEx, SIRI, etc). Then, this DataSet collection is used in the QA process of our tools to ensure they can process them as expected.

For Chouette Convert SaaS, a new QA tool ensures that a version/build is able to convert several hundred of DataSet. The tool ensures that a valid DataSet is converted into a another valid one by Chouette Convert SaaS and reports any error or anomaly in the result.

By processing several hundreds of these datasets with this new tool, our QA team detected several issues that have been fixed in this Sprint.

Ruby 3.3

To ensure the best performance, the Chouette Convert SaaS platform has been updated to use the latest Ruby version.

Our QA tests confirm a better memory management. But the performance improvement is smaller than expected for the moment.