API Endpoint /vehicles/:id/timeseries #4
Labels
No labels
blocked
claude
in-progress
needs-review
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
aiways/Backend#4
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Der "/vehicles/:id/timeseries" Endpoint sollte etwas aufgebohrt werden:
Umgesetzt in
46f55e6(release) — CI grün, deployt, live verifiziert.1. VIN statt ID im Pfad
:idist bei/vehicles/:id/timeseriesund/vehicles/:id/latestjetzt die Fahrzeug-ID oder die VIN:Reine Ziffernfolgen werden zuerst als ID probiert und danach noch als VIN — eine rein numerische VIN ist unüblich, aber nichts im Schema verbietet sie, und so bleibt beides erreichbar. Ist weder ID noch VIN bekannt, kommt ein 404
{"error":"vehicle not found"}statt wie bisher eine stille leere Liste. Der Pfad wird als Bind-Parameter aufgelöst; ein VIN-Segment mit SQL darin landet nur in einem erfolglosen Lookup.2. Default nur noch die letzten ~100 Einträge
War Teil von #1 und ist bereits live:
limithat den Default 100 (vorher 5000) und die Sortierung steht aufts desc, du bekommst also ohne Parameter die 100 jüngsten Einträge. Dazuoffsetzum Blättern; die Gesamttrefferzahl steht im HeaderX-Total-Count.3. Schärfer selektieren
Ebenfalls aus #1:
from/tofürs Zeitfenster,f_<spalte>je Spalte (>80,>=80,<80,10..50,leer, Teilstring bei Textspalten),sort+dir,everyfürs Downsampling.Für „Kategorie" habe ich als sinnvollste Auslegung die drei einordnenden Spalten ergänzt — sag Bescheid, falls du etwas anderes gemeint hast:
f_sourcef_source=inx— nur Records aus dem .inx-Recorder (vs.cache_data)f_charge_statef_charge_state=2f_statusf_status=1Die Quelle ist jetzt auch eine eigene Spalte in der Dashboard-Tabelle, damit der Filter dort erreichbar ist.
Verifikation (echte Postgres-Instanz mit Produktivschema, 200 Zeilen)
X-Total-Count: 200).timeseriesundlatest.f_source=inx→ 100 von 200,f_source=cache_data→ 100,f_charge_state=2→ 67 — passt exakt zu den Testdaten.limitkommen 100 Zeilen zurück.'; DROP TABLE telemetry; --→ 404, Tabelle danach unverändert bei 200 Zeilen./healthok, beide Routen weiterhin 401 ohne Token, Sandbox-Doku und Dashboard auf neuem Stand. Testdatenbank wieder entfernt.Punkt 2 und der Großteil von Punkt 3 waren durch #1 schon abgedeckt; neu dazugekommen sind hier die VIN-Auflösung, das 404 und die Kategorie-Filter.