zov-tech/agents/ROLES.md
wasrusgen 64292cef8e fix: права доступа по ролям — сборщик/клиент
- measurement_detail: любой мастер (measurer+assembler) видит фото замера
- assembly_list: клиент видит все свои сборки (по client_tg_id)
- assembly_detail: клиент видит детальную карточку сборки

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 11:59:16 +03:00

111 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Структура ролей и взаимодействий — 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] Замерщик получает уведомление в боте при назначении заявки ✅