zov-tech/miniapp/assets
wasrusgen 67034e011a workflow B: заявка на замер от менеджера → инбокс замерщика → завершение
End-to-end поток:

1. Менеджер на главной тапает «Заказать замер» → #/request → форма:
   ФИО · телефон · адрес · dropdown «Кому назначить» · заметки.
   Submit → POST /api/measurement_request → строка в Measurements
   со status=requested + assigned_to_tg_id. Бот шлёт DM замерщику.

2. Замерщик открывает кабинет (?role=staff) → видит inbox с заявкой.
   Тап → #/inbox/<id> → карточка с реквизитами + поле datetime-local.
   Сохранить дату → POST /api/measurement_schedule → status=scheduled.
   Бот уведомляет менеджера.

3. В нужный день замерщик тапает «📐 Сделать замер сейчас» →
   wizard открывается в update-mode (#/measure?id=<id>), pre-fill
   client_name/phone из заявки, пропускает шаг «Клиент». После submit
   → backend обновляет ту же строку (status=completed) + DM менеджеру.

Backend changes:
- Расширена схема Measurements: assigned_to_tg_id, requested_by_tg_id,
  scheduled_at, address, client_name, client_phone (отдельные колонки).
  ensure_measurements_sheet() автоматически дополняет колонки.
- _handle_measurement переписан под 2 режима (create/update).
- 3 новые ручки: /api/measurement_request, /api/measurement_inbox,
  /api/measurement_schedule. Все с правильной проверкой ролей.
- Telegram-уведомления на каждом переходе статуса.

MiniApp:
- Новый модуль request.js — wizard заявки с dropdown замерщиков
  (грузится из /api/staff_list?role=measurer).
- renderStaff теперь грузит реальный инбокс из /api/measurement_inbox.
- renderInboxDetail — карточка заявки с datetime-picker.
- В quick-actions менеджера: «Заказать замер» (primary) +
  «Замер сейчас» (legacy direct fill).
- measurements.js поддерживает update-mode через ?id=.

Cache bust v=20260513g.
2026-05-12 20:00:16 +03:00
..
app.js workflow B: заявка на замер от менеджера → инбокс замерщика → завершение 2026-05-12 20:00:16 +03:00
clients.js measurements: photo upload + measurement detail page + PDF/print 2026-05-12 18:11:29 +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
measurements.js workflow B: заявка на замер от менеджера → инбокс замерщика → завершение 2026-05-12 20:00:16 +03:00
podbor.config.js simplify: remove 'features' step from all 8 categories 2026-05-11 23:37:41 +03:00
podbor.css roles: multi-role foundation (manager / client / measurer / assembler) 2026-05-12 19:14:39 +03:00
podbor.js measurements: photo upload + measurement detail page + PDF/print 2026-05-12 18:11:29 +03:00
podbor.picts.js measurements: kitchen layout wizard + 5 layout pictograms + profile integration 2026-05-12 17:41:01 +03:00
request.js workflow B: заявка на замер от менеджера → инбокс замерщика → завершение 2026-05-12 20:00:16 +03:00
styles.css bot: role buttons → MiniApp directly + branded splash loader 2026-05-12 18:54:09 +03:00
zov-logo.svg bot: role buttons → MiniApp directly + branded splash loader 2026-05-12 18:54:09 +03:00