fix(telemetry): ts = время приёма (ReceivedAt), а не момент INSERT

Раньше ts проставлялся now() в БД при INSERT → при батчинге и параллельных
записях порядок телеметрии (ORDER BY ts DESC) ломался. Теперь в ts идёт
ReceivedAt из envelope (серверное время приёма, ставит bridge); битый/пустой
received_at → zero → стор подставляет now(). Схема не меняется (используется
существующая колонка ts). Обновлены callers: consumer/processor.go и legacy
cmd/sqs-consumer.
This commit is contained in:
Repinoid
2026-10-07 07:47:10 +03:00
parent f2768568d3
commit e8873fa24d
3 changed files with 30 additions and 11 deletions
+5 -1
View File
@@ -160,7 +160,11 @@ func processSQSTelemetry(ctx context.Context, body string, store *iotpg.IoTPostg
return err
}
if err := store.InsertTelemetry(ctx, envelope.Namespace, envelope.DeviceID, "", envelope.Payload); err != nil {
receivedAt, perr := time.Parse(time.RFC3339, envelope.ReceivedAt)
if perr != nil {
receivedAt = time.Time{}
}
if err := store.InsertTelemetry(ctx, envelope.Namespace, envelope.DeviceID, "", receivedAt, envelope.Payload); err != nil {
return err
}