Commit Graph

15 Commits

Author SHA1 Message Date
aaverbitskiy
6816ba90f4 managers: normalize name word-order at read time, canonical "Фамилия Имя"
Planfix has emitted manager names in two word orders over time ("Имя Фамилия"
from the 26 Jul 2026 n8n backfill, "Фамилия Имя" from the ongoing etl_rw feed),
so one person appeared as two distinct filter options (e.g. "Александра Столбова"
vs "Столбова Александра"), splitting their tasks across two facet values.

Fix without touching stored data:
- MANAGER_KEY_ARR: SQL expression building a word-order- and case-independent
  key (lowercase, split, arraySort, rejoin) per manager array element.
- MANAGER_COND / MAP_MANAGER_COND now match on that key, so a selected manager
  catches rows stored under either order.
- parse_filters normalizes incoming manager values with the same key (_mkey).
- /api/meta returns canonical "Фамилия Имя" names (CANONICAL_MANAGERS),
  deduplicated; unknown names pass through unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-05 18:50:01 +00:00
aaverbitskiy
c7eae87660 filters: add faceted Status (task_status) filter — meta.statuses, boards/bookings/map filtering (map marker visibility), UI dropdown under Size in filter grid 2026-07-27 19:40:26 +00:00
aaverbitskiy
053bf2587d header: move counters into brand block, compact 4-col filter grid (dates + search on row 2), unify all block backgrounds 2026-07-26 08:52:36 +00:00
aaverbitskiy
d2ad928948 header: responsive layout — fields wrap to next line at min width, all gray blocks may shrink and reflow instead of overlapping 2026-07-26 05:36:35 +00:00
aaverbitskiy
68417bf45e map: Yandex map section (3 modes + resizable split), green/red markers, hover tooltips for markers+clusters; fix map init race; header keeps counters inline (fields shrink first); add Manager (Менеджер) faceted filter 2026-07-26 05:05:04 +00:00
aaverbitskiy
d04e0ae024 db creds: move ClickHouse user/password to gitignored .env via compose env_file; drop hardcoded default from main.py 2026-07-23 05:19:13 +00:00
aaverbitskiy
23f5ce8b1a header layout: checkbox column (3 rows), Оформление under scale slider, counters as inline gray block 2026-07-21 10:24:07 +00:00
aaverbitskiy
66e501ef59 date filters: independent Дата начала (start_date>=) / Дата окончания (end_date<=), header fields under Город/Бренд; qualify pf_board.start_date/end_date to avoid alias shadowing 2026-07-21 10:07:39 +00:00
aaverbitskiy
fe06cdab72 dependent (faceted) filters: city/brand/dimension/search narrow each other 2026-07-21 08:38:53 +00:00
aaverbitskiy
5db77b7a06 brand filter (backend+frontend), compact checkbox grid, two-line counter 2026-07-18 11:15:43 +00:00
aaverbitskiy
b393562c3a frontend UI: header 4 groups, Оформление menu (colors/sizes/fonts), centered bars via inner div, clickable Planfix links 2026-07-17 19:27:22 +00:00
aaverbitskiy
2d66871b62 build: static/{index.html,assets} are generated artifacts (source-only tracking) 2026-07-17 16:22:39 +00:00
aaverbitskiy
6704a50b33 frontend: full modular migration (collisions/dropdown/timeline/styles), staged at /next/, prod unchanged 2026-07-17 16:17:00 +00:00
aaverbitskiy
c6363cd8cf frontend: Vite+TypeScript scaffold (types, api) — not wired to static yet 2026-07-17 15:41:13 +00:00
aaverbitskiy
6c47dada00 Import mapdash (FastAPI + vis-timeline) + docker-compose with static volume 2026-07-17 15:13:27 +00:00