cal-itp / operational-data-standard

The Transit Operational Data Standard is an open standard for representing the transit schedules used by drivers, dispatchers, and planners to carry out transit operations.
https://ods.calitp.org
Apache License 2.0
26 stars 6 forks source link

Multiple employees on the same trip #54

Closed skyqrose closed 6 months ago

skyqrose commented 8 months ago

On the MBTA Green Line, most trips require two operators, one for each car of the two-car train. It matters who's assigned to the lead car (driving the train) and who's in the 2nd car (just fares+doors). Each operator has their own run number.

Other agencies could run into this with operators+conductors, or any other situation where a trip requires multiple employees.

How would this be represented?

Some thoughts:

timon-k commented 8 months ago

Agree with the proposal, also with the idea to add the role/job of the employee in run.txt instead of in driver_assignment.txt (as discussed in https://github.com/cal-itp/operational-data-standard/issues/28). A certain run will be built for the specific role (also the pieces/events in this run).

Questions that I had:

skyqrose commented 8 months ago
jeffkessler-keolis commented 8 months ago

I would highly recommend we make event_type a string, not only for custom names, but to support a number of cases with multiple employees where people can have varying roles.

One key thing that I want to clarify is that there is a need in the rail world to distinguish between the type of work ("activity" or "piece" type… in Hastus parlance, at least) being undertaken, and the type of the job itself.

Commuter Trains in North America typically operate with a Locomotive Engineer, a Conductor, and 0+ other employees typically dubbed Assistant Conductors, Collectors, Trainmen, Brakemen, etc.

Boston Example of Different Job Types

In Boston, each trip operates with an Engineer (performing Engineer work), a Conductor (performing Conductor work), and a "matched" Assistant Conductor (performing Assistant Conductor work). All three employees will have separate run numbers (e.g. Engineer = 201, Conductor = 401, AC = 601), but work identical trips on pieces of work aligning with their activity (e.g. trains 102-205-206-311-312-117).

Many rush hour trips will also have additional "unmatched" or "extra" Assistant Conductors who will work alongside the matched crew on certain trips, but not the matched crew's entire job (e.g. the above may be a straight job, but an unmatched AC may work 102-205-206 with the prior crew, go on a release/split, and then return to work 423-424-125).

(This is, of course, in addition to the concept that all four employees could be a "recrew" / en-route relief of another set of employees at the start/end of their assignments, or before/after a relief.)

Elsewhere in the Northeast

Promotions

As if the above isn't crazy enough, there's then the concept of "promotions," generally the case when an Assistant Conductor who's qualified to work as a Conductor works part of their day as an AC and part of their day as a Conductor. This could be:

And just to wrap things up for good measure, down at Virginia Railway Express on our counterpart Keolis Commuter Rail operation in North America, we have crews who work "ACE" jobs, where they could literally be working as an Assistant Conductor, a Conductor, or an Engineer.

Implication

tl;dr We need a way to say, "this is a run," and then need to say within the run, "you're working the trip in capacity," but we do not need to assign multiple employees to the same run identifier.

…and rail is complex.

(This also relates to my "other" comment in https://github.com/cal-itp/operational-data-standard/issues/51#issuecomment-1861883775 about specifying an event_type alongside each piece within a run, which if a string could model the generic needs of the RR, @skyqrose's needs on the Green Line, etc.)

skyqrose commented 6 months ago

I've just opened https://github.com/cal-itp/operational-data-standard/issues/60 , which has job_type (optional) and event_type (required) fields, and should support everything discussed here.

Jeff, if that meets your needs, then we could close this issue.

jeffkessler-keolis commented 6 months ago

@skyqrose Okay to close per my comments in https://github.com/cal-itp/operational-data-standard/issues/60#issuecomment-1943001662

Thanks!