zov-tech/miniapp/assets
wasrusgen 76fce9ec58 feat(analytics): assembler schedule parser + analytics screen
Backend:
- assembler_parser.py: parse Excel «Таблица занятости сборщиков»
  - Handles both row-order variants (2026: dates row1; 2025-: dates row2)
  - Extracts amount from end of cell text, supports compound "6030+20100"
  - aggregate(): by_assembler×month + by_month totals
  - In-memory cache with mtime invalidation
- main.py: /api/assembler_analytics — local file first, Drive fallback
  - LOCAL: /app/data/assembler_schedule.xlsx (mounted volume)
  - Config: ASSEMBLER_SCHEDULE_PATH env var override
- config.py: assembler_schedule_file_id for Drive fallback
- docker-compose.yml: /opt/zov-tech/data → /app/data:ro volume

Frontend:
- assembler_analytics.js: year filter, monthly table, assembler ranking
  with progress bars, per-order average, last-6-months breakdown
- app.js: route #/admin/assembler-analytics + "Аналитика" button

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 09:44:34 +03:00
..
admin_rates.js feat(assembly): configurable assembly rates + admin panel 2026-05-19 09:20:03 +03:00
app.js feat(analytics): assembler schedule parser + analytics screen 2026-05-19 09:44:34 +03:00
assembler_analytics.js feat(analytics): assembler schedule parser + analytics screen 2026-05-19 09:44:34 +03:00
assembly_detail.js feat(assembly): configurable assembly rates + admin panel 2026-05-19 09:20:03 +03:00
assembly.js fix: Content-Type: application/json во всех fetch-хелперах 2026-05-18 13:35:20 +03:00
cabinet.js feat: детальная карточка сборки + цена замера везде 2026-05-18 15:35:21 +03:00
clients.js fix: таймаут 15с на все fetch в clients.js — кнопки больше не висят 2026-05-18 08:35:42 +03:00
icons.js feat(miniapp): «Подбор техники» screen — 7-step picker (categories/niches/budget/infra/scenario/brands/summary) wired to /api/podbor 2026-05-09 13:34:46 +03:00
inbox.js fix: Content-Type: application/json во всех fetch-хелперах 2026-05-18 13:35:20 +03:00
master_tools.js feat: add MasterTools assembler cheat-sheets (#/master/tools) 2026-05-18 23:43:23 +03:00
me.js refactor: аудит роутера app.js — устранены 3 edge case 2026-05-18 13:39:23 +03:00
measurements.js fix: Content-Type: application/json во всех fetch-хелперах 2026-05-18 13:35:20 +03:00
orders.js feat: детальная карточка сборки + цена замера везде 2026-05-18 15:35:21 +03:00
platform.js feat: platform.js — адаптер Telegram WebApp для миграции на VK Max 2026-05-18 18:06:03 +03:00
podbor.config.js simplify: remove 'features' step from all 8 categories 2026-05-11 23:37:41 +03:00
podbor.css fix(podbor): HTML format + sticky header + home button at report bottom 2026-05-19 09:26:07 +03:00
podbor.js fix(podbor): HTML format + sticky header + home button at report bottom 2026-05-19 09:26:07 +03:00
podbor.picts.js measurements: kitchen layout wizard + 5 layout pictograms + profile integration 2026-05-12 17:41:01 +03:00
proposals.js fix: Content-Type: application/json во всех fetch-хелперах 2026-05-18 13:35:20 +03:00
request.js feat: заявка на замер — поиск по клиентам + передача менеджеру 2026-05-18 23:32:16 +03:00
selfmeasure.js feat: детальная карточка сборки + цена замера везде 2026-05-18 15:35:21 +03:00
signrequest.js feat: SignRequest — цифровая подпись акта сборки (ФЗ-63 ПЭП) 2026-05-18 23:12:34 +03:00
styles.css feat: SignRequest — цифровая подпись акта сборки (ФЗ-63 ПЭП) 2026-05-18 23:12:34 +03:00
wasrusgen-logo.svg splash: точный viewBox + цвет blue-grey #2C3E50 2026-05-13 22:15:01 +03:00
zamer-checklist.md feat: SVG-пиктограммы схем замера в чек-листе 2026-05-15 23:21:33 +03:00
zamer-picts.js fix: remove stray closing brace in zamer-picts.js that crashed MiniApp 2026-05-16 10:41:10 +03:00
zov-logo.svg bot: role buttons → MiniApp directly + branded splash loader 2026-05-12 18:54:09 +03:00