pcp-types-lib: Kafka-конверт time в UTC (фикс сдвига пояса)
KafkaMessage.time: LocalDateTime.now() -> now(ZoneOffset.UTC); LocalDateTimeTimeZoneSerializer: atZone(systemDefault()) -> atOffset(UTC). Было: локальное now() + systemDefault давали на проводе "...+03:00", и потребитель (паттерн ...SSS[xxx] в LocalDateTime) дропал зону -> сдвиг на пояс. Стало: "...+00:00" — инстант тот же, но стенные часы совпадают с UTC, сдвиг ушёл. Тест LocalDateTimeTimeZoneSerializerTest: UTC-офсет без сдвига + round-trip. DATETIME_UTC.md: баг перенесён в «Исправленные».
This commit is contained in:
@@ -141,15 +141,19 @@ mission-planing) используют тот же дефолтный Jackson-к
|
||||
После толерантности продюсеров можно флипать **в любом порядке**. Кандидаты: остальные naive-DTO
|
||||
ui-service, ballistics, complex-mission, dynamic-plan, slots, coverage-scheme.
|
||||
|
||||
### Найденные баги формата (теперь безопасно чинить — потребители толерантны)
|
||||
### Исправленные баги формата
|
||||
|
||||
- **`KafkaMessage.time` (общий Kafka-конверт, pcp-types-lib) — исправлено.** Было `time = LocalDateTime.now()`
|
||||
(локальное!) + сериализация `LocalDateTimeTimeZoneSerializer` через `ZoneId.systemDefault()`: конверт
|
||||
нёс МСК-стенные часы с `+03:00`, а потребитель (формат `…SSS[xxx]` в `LocalDateTime`) отбрасывал зону
|
||||
→ сдвиг на пояс. Стало `now(ZoneOffset.UTC)` + сериализация `atOffset(ZoneOffset.UTC)` → на проводе
|
||||
`…+00:00`. **Инстант не изменился** (тот же момент), но стенные часы теперь совпадают с UTC, поэтому
|
||||
потребитель, дропающий зону, получает корректное время. Закреплено `LocalDateTimeTimeZoneSerializerTest`.
|
||||
|
||||
### Остаток (под-задачи)
|
||||
|
||||
- **`KafkaMessage.time` (общий Kafka-конверт, pcp-types-lib).** `time = LocalDateTime.now()` (локальное!)
|
||||
+ сериализуется `LocalDateTimeTimeZoneSerializer` через `ZoneId.systemDefault()` → конверт несёт
|
||||
МСК-стенные часы с `+03:00`, а потребитель (формат `…SSS[xxx]` в `LocalDateTime`) отбрасывает зону →
|
||||
сдвиг. Под-задача: `now()` → UTC и сериализатор конверта → UTC/`Z`. Раньше блокировалось риском
|
||||
поломки потребителей; со слоем толерантности — безопасно.
|
||||
- **pcp-tgu-service REST-codec на Jackson 3** — ещё не толерантен (см. 2bis); под-задача на Jackson-3
|
||||
вариант модуля.
|
||||
вариант модуля + регистрация в кодеках WebFlux.
|
||||
|
||||
## 5. Правило для нового кода
|
||||
|
||||
|
||||
Reference in New Issue
Block a user