docs: структура ролей и взаимодействий (ROLES.md)

4 роли: manager / measurer / assembler / client
Цикл сделки, доступ по экранам, правило совместного подбора техники.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
wasrusgen 2026-05-18 11:42:38 +03:00
parent 542f96aaa0
commit 4386779ea6
2 changed files with 111 additions and 0 deletions

View File

@ -13,6 +13,7 @@
### Шаг 1 — Читай статусы всех агентов ### Шаг 1 — Читай статусы всех агентов
``` ```
agents/ROLES.md
agents/dev-status.md agents/dev-status.md
agents/devops-status.md agents/devops-status.md
agents/design-status.md agents/design-status.md

110
agents/ROLES.md Normal file
View File

@ -0,0 +1,110 @@
# Структура ролей и взаимодействий — 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.
---
## Нерешённые вопросы (требуют решения Руслана)
- [ ] Нужен ли сборщику доступ к фото замера (сейчас только логистика)?
- [ ] Клиент видит историю всех своих сборок или только текущую?
- [ ] Замерщик получает уведомление в боте при назначении заявки?