fix: emit export pickup times as clock readings without an offset
This commit is contained in:
1 parent
6c700ea18b
commit
ede8fd840a
6 files changed
+136
-27
No files matched your search
+18
-12
@@ -190,7 +190,7 @@ an error: it returns `200` with an empty `data` array and the usual `meta`.
|
||||
"city": "Essen",
|
||||
"street": "Am Hauptbahnhof (Südausgang Fernbushaltestelle)",
|
||||
"time": "20:15",
|
||||
"datetime": "2026-12-25T20:15:00+01:00"
|
||||
"datetime": "2026-12-25T20:15:00"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -225,12 +225,17 @@ rest. `total` is the row count **after** skips, and `totalPages` is `ceil(total
|
||||
|
||||
**Pickup times.** `pickups` is in **source order** — the order the boarding list is driven in — not sorted by time.
|
||||
|
||||
- `time` is `"HH:MM"` for display; `datetime` is the same moment as a full ISO-8601 string with a
|
||||
`Europe/Berlin` offset (`+01:00` / `+02:00` depending on DST). **Prefer `datetime`.**
|
||||
- Upstream states a boarding time either as a full date and time or as a bare time. A bare time is resolved
|
||||
against the departure date and, where the sequence demands it, rolled onto the following calendar day — so an
|
||||
`02:15` listed after a `23:59` comes back on the next date, not the same one. `datetime` is emitted for
|
||||
bare-time sources too, and carries that resolution.
|
||||
- `time` is `"HH:MM"` for display; `datetime` is the same reading with its date resolved, as
|
||||
`YYYY-MM-DDTHH:MM:SS` **without an offset**. **Prefer `datetime`.**
|
||||
- Both are upstream's local clock readings, not instants: coaches are timetabled in plain clock times. A stop at
|
||||
`02:45` on the night the clocks go forward comes back as `…T02:45:00`, although that hour does not exist in
|
||||
`Europe/Berlin`, and a stop in the hour repeated when the clocks go back passes through unchanged. Do not attach
|
||||
an offset to compare or sort them; they already sort correctly as strings.
|
||||
- Upstream states a boarding time either as a full date and time, taken verbatim, or as a bare time. A bare time
|
||||
takes the departure date (`dateFrom`), and moves to the following day if it would otherwise fall before the
|
||||
latest full date and time **anywhere** in the same boarding list, whatever its position. So on a departure
|
||||
dated 26.12. whose list also dates a stop `26.12. 23:59`, a bare `02:15` comes back as `…12-27T02:15:00`.
|
||||
`datetime` carries that resolution for bare-time sources too.
|
||||
- A boarding point with no time upstream comes back with **both** `time` and `datetime` null. They are always
|
||||
null together.
|
||||
- Caveat: where upstream states full datetimes for a whole boarding list, those dates are taken verbatim. Some
|
||||
@@ -313,7 +318,7 @@ returns it in one page.
|
||||
"city": "Frankfurt",
|
||||
"street": "Flughafen (P36 zwischen Terminal 1 und 2)",
|
||||
"price": 5.9,
|
||||
"datetime": "2026-12-03T23:30:00+01:00"
|
||||
"datetime": "2026-12-03T23:30:00"
|
||||
}
|
||||
],
|
||||
"guide": null
|
||||
@@ -380,10 +385,11 @@ such as for arriving by car.
|
||||
| 89 | Leistungen Events |
|
||||
| 90 | Leistungen Transport |
|
||||
|
||||
**Pickups.** Outbound boarding points only, in source order. `datetime` follows the same resolution rules as in
|
||||
`GET /api/exports/travels`, including rolling a bare time past midnight onto the next day. There is no separate
|
||||
`time` field; format `datetime` for display. `price` is the outbound boarding surcharge exactly as upstream states
|
||||
it: `null` where upstream states none. It is not levelled against the return leg. An id absent from
|
||||
**Pickups.** Outbound boarding points only, in source order. `datetime` is resolved and formatted exactly as in
|
||||
`GET /api/exports/travels` — a clock reading without an offset, `null` where upstream states no time — including
|
||||
rolling a bare time past midnight onto the next day. There is no separate `time` field; format `datetime` for
|
||||
display. `price` is the outbound boarding surcharge exactly as upstream states it: `null` where upstream states
|
||||
none. It is not levelled against the return leg. An id absent from
|
||||
`GET /api/pickups` is emitted with `code`, `city` and `street` null and counted in `pickupsWithoutMasterData`. An id
|
||||
of `0` is emitted as-is but not counted.
|
||||
|
||||
|
||||
Reference in new issue
Block a user