diff --git a/.claude/commands/review.md b/.claude/commands/review.md index ff27b1b..0f68e28 100644 --- a/.claude/commands/review.md +++ b/.claude/commands/review.md @@ -13,6 +13,7 @@ ### Шаг 1 — Читай статусы всех агентов ``` +agents/ROLES.md agents/dev-status.md agents/devops-status.md agents/design-status.md diff --git a/agents/ROLES.md b/agents/ROLES.md new file mode 100644 index 0000000..5249864 --- /dev/null +++ b/agents/ROLES.md @@ -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. + +--- + +## Нерешённые вопросы (требуют решения Руслана) + +- [ ] Нужен ли сборщику доступ к фото замера (сейчас только логистика)? +- [ ] Клиент видит историю всех своих сборок или только текущую? +- [ ] Замерщик получает уведомление в боте при назначении заявки?