# Структура ролей и взаимодействий — zov-tech > Источник истины для всех агентов. Обновлять при изменении бизнес-логики. --- ## Роли | Роль | Код | Кто | |------|-----|-----| | Менеджер | `manager` | Ведёт клиентов, управляет всем циклом | | Замерщик | `measurer` | Проводит замеры | | Сборщик | `assembler` | Исполняет сборки | | Клиент | `client` | Получает подбор, голосует, самозамер | **Важно:** один человек может иметь несколько ролей (`measurer` + `assembler` = универсал). Роли выдаются через `/grant_role` менеджером. --- ## Доступ по ролям ### 🧑‍💼 Менеджер (`manager`) - Полный доступ к CRM: клиенты, замеры, сборки, подборы - Создаёт заявки на замер → назначает замерщику - Создаёт заявки на сборку → назначает сборщику - Создаёт подбор техники — самостоятельно или для клиента - Видит все подборы своих клиентов - Выдаёт/отзывает роли (`grant_role`) - Видит входящие задачи (`manager_pending`) ### 📐 Замерщик (`measurer`) - Видит входящие заявки на замер (`measurement_inbox`) - Закрывает замер: фото, логистика, чертежи - Не видит клиентскую базу и сборки ### 🔧 Сборщик (`assembler`) - Видит список своих сборок (`assembly_list`) - Видит детальную карточку сборки - Читает логистику замера (адрес, этаж, парковка) - Не видит клиентскую базу и замеры ### 👤 Клиент (`client`) - Подбор техники: заполняет бриф, смотрит варианты, голосует - Видит только свои подборы - Самозамер (в разработке) --- ## Подбор техники — совместный доступ **Правило:** подбор всегда имеет `manager_tg_id` + `client_tg_id`. Оба видят его в своём кабинете. | Сценарий | Кто создаёт | `filled_by` | Видят | |----------|-------------|-------------|-------| | Клиент сам | клиент | `client_self` | клиент + его менеджер | | Менеджер для клиента | менеджер | `manager_for_client` | менеджер + клиент | | Менеджер без клиента | менеджер | `manager_for_client` | только менеджер | **Требование к UI:** когда менеджер создаёт подбор из карточки клиента — передавать `client_tg_id` клиента. Бэкенд уже поддерживает. --- ## Цикл сделки ``` 1. КЛИЕНТ обращается ↓ 2. МЕНЕДЖЕР заводит клиента в CRM ↓ 3. МЕНЕДЖЕР создаёт заявку на замер → назначает ЗАМЕРЩИКУ ↓ 4. ЗАМЕРЩИК проводит замер, загружает фото/чертежи, закрывает заявку ↓ 5. МЕНЕДЖЕР создаёт подбор техники → самостоятельно, или совместно с КЛИЕНТОМ (клиент голосует) ↓ 6. МЕНЕДЖЕР создаёт заявку на сборку → назначает СБОРЩИКУ ↓ 7. СБОРЩИК выполняет сборку, закрывает заявку ↓ 8. МЕНЕДЖЕР закрывает сделку ``` --- ## Экраны MiniApp по ролям | Маршрут | Менеджер | Замерщик | Сборщик | Клиент | |---------|----------|----------|---------|--------| | `#/clients` | ✅ | ❌ | ❌ | ❌ | | `#/clients/new` | ✅ | ❌ | ❌ | ❌ | | `#/clients/client/{key}` | ✅ | ❌ | ❌ | ❌ | | `#/request` | ✅ | ❌ | ❌ | ❌ | | `#/measurements` | ✅ | ✅ | ❌ | ❌ | | `#/assembly` | ✅ | ❌ | ✅ | ❌ | | `#/assembly/new` | ✅ | ❌ | ❌ | ❌ | | `#/picker` (подбор) | ✅ | ❌ | ❌ | ✅ | | `#/master` (входящие) | ❌ | ✅ | ✅ | ❌ | | `#/me` (мой статус) | ✅ | ✅ | ✅ | ✅ | > `#/master` и `#/me` — не реализованы, в ROADMAP Приоритет 1. --- ## Решения (зафиксированы 2026-05-18) - [x] Сборщик видит фото замера + логистику ✅ - [x] Клиент видит все свои сборки (полная история) ✅ - [x] Замерщик получает уведомление в боте при назначении заявки ✅