zov-tech/miniapp/assets
wasrusgen 4612c3a4e4 fix: карточка клиента — данные, редактирование, удаление по правилам
Bug 1: «Завожу клиента и не вижу данных»
Причина: 3 эндпоинта проверяли user.get('role') == 'manager' напрямую,
вместо sheets.has_role(user, 'manager'). У админа теперь multi-role
(manager,measurer,assembler) → проверка падала с only_manager,
/api/measurements возвращало ошибку → таймлайн/файлы пустые.

Backend fixes:
- _handle_measurements_list: has_role + initDataUnsafe fallback + фильтр archived_at + возвращает client_name, client_phone, address, scheduled_at, client_no, contract_no, contract_date, assigned_to_tg_id
- _handle_measurement_request: has_role вместо ==
- _handle_measurement_detail: has_role + поддержка assigned_to_tg_id для мастера
- _handle_clients: возвращает address, contract_date, measurements_count, in_work
  in_work=True если: есть лиды ∨ есть не-draft замер ∨ есть сборка

Bug 2: «Не могу удалить клиента»
Причина: была спрятана в expand «Опасная зона» внизу страницы.

Новая логика прав (по запросу):
- Клиент не в работе → ✏️ Редактировать + 🗑 Удалить
- Клиент в работе → только ✏️ Редактировать
- Бэкенд тоже enforce: client_delete отвечает {error: 'in_work'}
  если есть лиды/сборки/не-draft замеры

Новые эндпоинты:
- POST /api/client_update — обновляет имя/телефон/адрес/договор
  во всех Measurements этого клиента. Возвращает обновлённый client_key
  если имя изменилось

Frontend:
- Секция «⚙️ Управление карточкой» вместо «Опасной зоны»
- Кнопка ✏️ Редактировать всегда видна, 🗑 Удалить только если !in_work
- renderEditClient — форма редактирования (имя, тел, адрес, договор № + дата)
- В шапке карточки теперь видны адрес и (если не в работе) бейдж «ещё не в работе»
- Draft-карточки скрыты из таймлайна (это техническая строка, не событие)

index.html: cache bump v=20260514d
2026-05-14 11:42:27 +03:00
..
app.js Phase 4 stage 1: Сборки — модель + создание + список 2026-05-14 09:53:40 +03:00
assembly.js Phase 4 stage 1: Сборки — модель + создание + список 2026-05-14 09:53:40 +03:00
clients.js fix: карточка клиента — данные, редактирование, удаление по правилам 2026-05-14 11:42:27 +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 fix client create — 7 багов + правило самопроверки 2026-05-14 00:09:14 +03:00
podbor.config.js simplify: remove 'features' step from all 8 categories 2026-05-11 23:37:41 +03:00
podbor.css Phase 4 stage 1: Сборки — модель + создание + список 2026-05-14 09:53:40 +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 client card D1: хронология + файлы + быстрые действия 2026-05-13 18:39:25 +03:00
styles.css splash: убрать вращающееся кольцо, оставить только опилки + breathing 2026-05-13 22:58:09 +03:00
wasrusgen-logo.svg splash: точный viewBox + цвет blue-grey #2C3E50 2026-05-13 22:15:01 +03:00
zamer-checklist.md checklist: 5 SVG-эскизов в стиле Editorial Calm 2026-05-13 18:00:43 +03:00
zamer-picts.js checklist: 5 SVG-эскизов в стиле Editorial Calm 2026-05-13 18:00:43 +03:00
zov-logo.svg bot: role buttons → MiniApp directly + branded splash loader 2026-05-12 18:54:09 +03:00