fix(analytics): ObjectSaleChart выровнять серии по union месяцев (#1246) #1309

Merged
bot-backend merged 2 commits from fix/object-sale-chart-union-months-1246 into main 2026-06-13 13:22:57 +00:00
Collaborator

Summary

Fable5 P2 «uncertain» — latent-fix (симптом не воспроизводится на текущих данных, но код полагался на coincidence).

ObjectSaleChart строил ось X из месяцев ТОЛЬКО первого типа, привязывал серии позиционно. domrf_kn_sale_graph фетчится per-type независимо от DOM.РФ → типы могут нести разные месяцы → бары/линия цены смещаются, лишние точки клипаются. Prod сейчас выровнен (457/457 объектов идентичные месяцы) — live-поломки нет, но invariant отсутствовал.

Фикс: ось из union всех месяцев (Array.from(new Set(...)).sort()) + Map-маппинг значений по месяцу (null где тип не имеет месяца), как PrinzipVelocityChart. Dropped unused contracted.

Test plan

  • tsc + lint clean; code-reviewer APPROVE (happy-path не сломан, null в per-type stack ок)
  • 5 vitest (union axis, per-month alignment с nulls, регрессия-guard позднего типа, happy-path, empty-state)
  • post-deploy: drill-in /analytics/objects/[id] идентичен (данные выровнены)

Closes #1246

## Summary Fable5 P2 «uncertain» — latent-fix (симптом не воспроизводится на текущих данных, но код полагался на coincidence). ObjectSaleChart строил ось X из месяцев ТОЛЬКО первого типа, привязывал серии позиционно. `domrf_kn_sale_graph` фетчится per-type независимо от DOM.РФ → типы могут нести разные месяцы → бары/линия цены смещаются, лишние точки клипаются. Prod сейчас выровнен (457/457 объектов идентичные месяцы) — live-поломки нет, но invariant отсутствовал. Фикс: ось из union всех месяцев (`Array.from(new Set(...)).sort()`) + Map-маппинг значений по месяцу (null где тип не имеет месяца), как PrinzipVelocityChart. Dropped unused `contracted`. ## Test plan - [x] tsc + lint clean; code-reviewer ✅ APPROVE (happy-path не сломан, null в per-type stack ок) - [x] 5 vitest (union axis, per-month alignment с nulls, регрессия-guard позднего типа, happy-path, empty-state) - [ ] post-deploy: drill-in /analytics/objects/[id] идентичен (данные выровнены) Closes #1246
bot-backend added 2 commits 2026-06-13 13:21:02 +00:00
fix(analytics): выровнять ObjectSaleChart серии по union месяцев всех типов (#1246)
Some checks failed
CI / changes (push) Successful in 7s
CI / backend-tests (push) Has been skipped
CI / frontend-tests (push) Has been cancelled
e2c8c0e97b
ObjectSaleChart строил ось X из месяцев ТОЛЬКО первого типа и привязывал серии
позиционно. domrf_kn_sale_graph фетчится per-type независимо от DOM.РФ → типы
могут нести разные наборы месяцев — позиционная привязка тогда смещает бары/
линию цены и молча клипает лишние точки. Текущие prod-данные выровнены (457/457
объектов, идентичные месяцы), поэтому live-поломки нет, но код полагался на
coincidence, не invariant. Ось из union всех месяцев + маппинг значений каждого
типа по месяцу через Map (null где отсутствует), как PrinzipVelocityChart. +vitest.

Closes #1246
test(analytics): vitest для ObjectSaleChart union-months alignment (#1246)
All checks were successful
CI / changes (push) Successful in 7s
CI / backend-tests (push) Has been skipped
CI / changes (pull_request) Successful in 6s
Deploy / build-worker (push) Has been skipped
Deploy / deploy (push) Successful in 1m6s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (push) Successful in 56s
CI / frontend-tests (pull_request) Successful in 58s
Deploy / changes (push) Successful in 8s
Deploy / build-backend (push) Has been skipped
Deploy / build-frontend (push) Successful in 2m37s
414601c1d2
union axis sorted, per-month alignment с nulls, регрессия-guard (хвост позднего
типа не клипается), happy-path unchanged, empty-state. 5 кейсов.
bot-backend merged commit 414601c1d2 into main 2026-06-13 13:22:57 +00:00
bot-backend deleted branch fix/object-sale-chart-union-months-1246 2026-06-13 13:22:57 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#1309
No description provided.