fix(iot): ReceivedAt в RFC3339Nano (порядок телеметрии, non-FIFO)

bridge пишет, consumer парсит RFC3339Nano (субсекундная точность). Раньше RFC3339
(секунды) + non-FIFO очередь → показания в одну секунду могли встать не в том
порядке. Parse RFC3339Nano совместим со старыми RFC3339-сообщениями (доля секунды
опциональна).
This commit is contained in:
Repinoid
2026-10-11 07:51:38 +03:00
parent 099900580b
commit c3106d6e20
2 changed files with 6 additions and 4 deletions
+5 -3
View File
@@ -46,9 +46,11 @@ func processTelemetry(ctx context.Context, body string, store *iotpg.IoTPostgres
}
return err
}
// Время приёма сохраняем в ts (порядок телеметрии). Битый/пустой received_at
// → zero, стор подставит now().
receivedAt, perr := time.Parse(time.RFC3339, envelope.ReceivedAt)
// Время приёма сохраняем в ts (порядок телеметрии). RFC3339Nano — субсекундная
// точность (очередь non-FIFO: несколько показаний в секунду не должны терять
// порядок). Parse RFC3339Nano принимает и старые RFC3339 (доля секунды опциональна).
// Битый/пустой received_at → zero, стор подставит now().
receivedAt, perr := time.Parse(time.RFC3339Nano, envelope.ReceivedAt)
if perr != nil {
receivedAt = time.Time{}
}