From b54c977e0828e7e1d35f577e83122ed89779bd59 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Mon, 10 Jun 2019 18:09:54 +0200 Subject: increase checkout delay to work around IRIS information lag --- lib/Travelynx/Command/work.pm | 12 +++++++++--- templates/_checked_in.html.ep | 6 +++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/Travelynx/Command/work.pm b/lib/Travelynx/Command/work.pm index 3ca9409..3e7df72 100644 --- a/lib/Travelynx/Command/work.pm +++ b/lib/Travelynx/Command/work.pm @@ -13,7 +13,7 @@ has usage => sub { shift->extract_usage }; sub run { my ($self) = @_; - my $now = DateTime->now( time_zone => 'Europe/Berlin' ); + my $now = DateTime->now( time_zone => 'Europe/Berlin' ); my $json = JSON->new; my $db = $self->app->pg->db; @@ -29,8 +29,14 @@ sub run { $self->app->log->debug("Processing $uid"); + # Note: IRIS data is not always updated in real-time. Both departure and + # arrival delays may take several minutes to appear, especially in case + # of large-scale disturbances. We work around this by continuing to + # update departure data for up to 15 minutes after departure and + # delaying automatic checkout by at least 10 minutes. + eval { - if ( $now->epoch - $entry->{real_dep_ts} < 300 ) { + if ( $now->epoch - $entry->{real_dep_ts} < 900 ) { $self->app->log->debug(" - updating departure"); my $status = $self->app->get_departures( $dep, 30, 30 ); if ( $status->{errstr} ) { @@ -71,7 +77,7 @@ sub run { if ( $entry->{arr_name} and ( not $entry->{real_arr_ts} - or $now->epoch - $entry->{real_arr_ts} < 60 ) + or $now->epoch - $entry->{real_arr_ts} < 600 ) ) { $self->app->log->debug(" - updating arrival"); diff --git a/templates/_checked_in.html.ep b/templates/_checked_in.html.ep index 184b11a..6bbf858 100644 --- a/templates/_checked_in.html.ep +++ b/templates/_checked_in.html.ep @@ -144,9 +144,9 @@ % } % if (defined $journey->{arrival_countdown} and $journey->{arrival_countdown} <= 0) {

- Der automatische Checkout erfolgt in wenigen Minuten. Zum Umsteigen: - Aktuelle Station erneut in der Liste auswählen. Zum Weiterfahren im - aktuellen Zug: Neues Ziel wählen. + Der automatische Checkout erfolgt erst zehn Minuten nach der + Ankunft, um verzögerte IRIS-Updates zu berücksichtigen. Du kannst + bereits jetzt in einen neuen Zug einchecken.

% } % elsif ($journey->{arr_name}) { -- cgit v1.2.3