Clarify invite-only client onboarding

This commit is contained in:
Ruslan Bakiev
2026-05-14 08:30:46 +07:00
parent 81efc78029
commit dfc053b723
3 changed files with 48 additions and 69 deletions

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@@ -444,13 +444,15 @@ const pages = {
titleBlock('1С'),
text(72, 168, 'Статус загрузки файлов обмена', { size: 16, weight: 500, fill: C.mid }),
cardGrid(72, 230, [
['counterparties_snapshot', 'Контрагенты'],
['catalog_snapshot', 'Каталог и остатки'],
['balances_snapshot', 'Задолженность клиентов'],
['orders_snapshot', 'Заказы клиентов'],
], 3),
], 4),
rect(72, 450, 1296, 250, { rx: 28 }),
text(104, 494, 'Последние загрузки', { size: 24, weight: 800 }),
orderRows(104, 530, 1232, [
['Контрагенты', 'Загружены реквизиты и признаки доступа', 'Работает'],
['Каталог и остатки', 'Загружено 2 418 записей · последний run сегодня', 'Работает'],
['Задолженность клиентов', 'Баланс по клиентам с личным кабинетом', 'Работает'],
['Заказы клиентов', 'Статусы заказов за рабочий период', 'Работает'],

View File

@@ -138,23 +138,22 @@
= Функциональные требования
== Требования к регистрации и подключению клиентов
== Требования к подключению клиентов
Система должна поддерживать два базовых сценария подключения клиента:
Система должна поддерживать подключение клиента только по инициативе менеджера:
- регистрация по персональному приглашению
- самостоятельная заявка на подключение
- менеджер создает или выбирает карточку клиента и привязывает ее к контрагенту
- менеджер направляет клиенту персональное приглашение на электронную почту
- клиент завершает подключение по персональной ссылке из письма
Функциональные требования:
+ Менеджер должен иметь возможность направить клиенту приглашение на регистрацию по электронной почте.
+ Клиент должен иметь возможность завершить регистрацию по персональной ссылке.
+ Клиент должен иметь возможность подать заявку на подключение через публичную форму.
+ Самостоятельная заявка должна поступать в менеджерский контур на рассмотрение.
+ Менеджер должен иметь возможность подтвердить либо отклонить заявку на подключение.
+ При подтверждении заявки система должна предоставить клиенту возможность завершить регистрацию.
+ После завершения регистрации клиент должен получить доступ к личному кабинету.
+ Менеджер должен иметь возможность направить клиенту приглашение на подключение по электронной почте.
+ Менеджер должен иметь возможность связать приглашение с контрагентом, полученным из 1С либо заведенным для клиентской работы.
+ Клиент должен иметь возможность завершить подключение по персональной ссылке.
+ После завершения подключения клиент должен получить доступ к личному кабинету.
+ Публичная страница входа не должна содержать самостоятельную регистрацию или самостоятельную заявку на подключение.
+ Система должна поддерживать подключение доступных каналов уведомлений для клиентской учетной записи.
== Требования к каталогу готовой продукции
@@ -296,8 +295,7 @@
Система должна поддерживать уведомления по следующим событиям:
- приглашение к регистрации
- подтверждение либо отклонение заявки на подключение
- приглашение к подключению
- публикация условий по заявке
- изменение статуса заказа
- изменение бонусного баланса
@@ -350,8 +348,7 @@
Клиенту должны быть доступны следующие действия:
- завершение регистрации по персональному приглашению
- подача заявки на подключение
- завершение подключения по персональному приглашению
- просмотр и изменение разрешенных профильных данных
- подключение доступных каналов уведомлений
- просмотр каталога готовой продукции
@@ -372,9 +369,9 @@
Менеджеру должны быть доступны следующие действия:
- рассмотрение заявок на подключение клиентов
- подтверждение либо отклонение заявок на подключение
- создание или выбор клиентской карточки
- привязка клиента к контрагенту и назначение ответственного сопровождения
- отправка персонального приглашения клиенту
- просмотр и обработка заявок на заказ
- просмотр и обработка заявок на расчет
- указание стоимости, условий поставки и сопроводительного комментария
@@ -411,14 +408,14 @@
[*Клиент*],
[*Менеджер*],
[*Суперменеджер*],
[Завершение регистрации],
[Завершение подключения],
[Да],
[Нет],
[Нет],
[Подача заявки на подключение],
[Отправка приглашения клиенту],
[Нет],
[Да],
[Да],
[Нет],
[Нет],
[Просмотр каталога],
[Да],
[Да],
@@ -528,12 +525,9 @@
[CounterpartyProfile],
[Профиль контрагента],
[Юридические и банковские реквизиты клиента],
[RegistrationRequest],
[Заявка на подключение],
[Самостоятельная заявка клиента на подключение],
[Invitation],
[Приглашение],
[Менеджерское приглашение на регистрацию],
[Менеджерское приглашение на подключение],
[MessengerConnection],
[Подключение мессенджера],
[Связка пользователя с Telegram или MAX],
@@ -694,29 +688,6 @@
- createdAt
- updatedAt
=== RegistrationRequest
Русское наименование: Заявка на подключение
Назначение:
- хранение самостоятельной заявки клиента на подключение
Основные поля:
- id
- companyName
- inn
- contactName
- email
- status
- rejectionReason
- requesterId
- reviewedById
- createdAt
- updatedAt
=== Invitation
@@ -724,7 +695,7 @@
Назначение:
- хранение менеджерского приглашения клиента на регистрацию
- хранение менеджерского приглашения клиента на подключение к личному кабинету
Основные поля:
@@ -1116,7 +1087,7 @@
[Приглашение клиента],
[/clients/invite],
[менеджер],
[выдача приглашения на регистрацию],
[выдача приглашения на подключение],
[Список заказов],
[/orders],
[менеджер],
@@ -1243,7 +1214,7 @@
[Детали клиента, его заказы и бонусные данные],
[/clients/invite],
[Пригласить клиента],
[Создание приглашения на регистрацию],
[Создание приглашения на подключение],
[/orders],
[Список заказов],
[Очередь заказов и заявок для менеджера],
@@ -1477,12 +1448,13 @@ Wireframe-прототип:
- история статусов
- системные комментарии
=== Страница логина и регистрации
=== Страница входа и завершения приглашения
Назначение страницы:
- запуск входа в систему
- завершение подключения по персональной ссылке из приглашения
- запуск сценариев входа через мессенджеры
Состав страницы:
@@ -1743,6 +1715,7 @@ Wireframe-прототип:
Система должна обеспечивать получение из 1С следующих данных:
- сведения о контрагентах
- каталог товаров
- характеристики товаров
- складские остатки
@@ -1752,12 +1725,12 @@ Wireframe-прототип:
- текущая задолженность клиента
- дата актуальности сведений, полученных из 1С
1С рассматривается как первичный источник учетных данных по заказам, складам, статусам, стоимости, доставке и задолженности. Личный кабинет отображает эти сведения и фиксирует дату их актуальности.
1С рассматривается как первичный источник учетных данных по контрагентам, заказам, складам, статусам, стоимости, доставке и задолженности. Личный кабинет отображает эти сведения, связывает их с созданными менеджером кабинетами клиентов и фиксирует дату их актуальности.
== Основной способ обмена с 1С
Основным способом интеграции является файловый обмен по согласованным структурам. Личный кабинет формирует список контрагентов, по которым требуется синхронизация, а 1С на основании этого списка формирует ответные выгрузки только по таким контрагентам и только в согласованном объеме.
Основным способом интеграции является файловый обмен по согласованным структурам. 1С формирует регламентные snapshot-выгрузки с согласованным составом учетных данных, а личный кабинет принимает эти выгрузки, обновляет локальное представление данных и показывает клиентам только сведения, доступные их контрагенту.
В качестве базового формата обмена используется JSON. Если на стороне 1С по техническим причинам удобнее использовать XML или CSV, стороны могут согласовать эквивалентную структуру без изменения состава передаваемых данных.
@@ -1769,23 +1742,24 @@ Wireframe-прототип:
Базовая логика обмена:
+ Личный кабинет передает в 1С список контрагентов, у которых есть личный кабинет либо которые заведены в системе для клиентской работы.
+ 1С формирует выгрузки только по указанным контрагентам.
+ 1С формирует выгрузку контрагентов, балансов, заказов, статусов, каталога и остатков в согласованном объеме.
+ Личный кабинет принимает snapshot, сопоставляет данные по внешним идентификаторам 1С, ИНН и иным согласованным ключам.
+ Менеджер при создании доступа выбирает или связывает кабинет клиента с контрагентом, полученным из 1С.
+ Каталог и остатки передаются как актуальный общий snapshot.
+ Балансы и задолженность передаются как состояние по контрагентам на дату формирования выгрузки.
+ Заказы и статусы передаются по указанным контрагентам за согласованный период, по умолчанию за последние 60 календарных дней.
+ Заказы и статусы передаются по контрагентам за согласованный период, по умолчанию за последние 60 календарных дней, а также по активным заказам вне этого периода при необходимости отображения клиенту.
== Состав файлов обмена
Минимальный состав файлов обмена:
- `cabinet_counterparties` — список контрагентов из личного кабинета, по которым требуется синхронизация
- `balance_snapshot` — баланс, задолженность и дата актуальности по контрагентам из списка
- `counterparties_snapshot` — контрагенты, реквизиты и признаки доступности для клиентского кабинета
- `balance_snapshot` — баланс, задолженность и дата актуальности по контрагентам
- `catalog_snapshot` — актуальная продукция, характеристики и складские остатки
- `orders_snapshot` — заказы, статусы, состав, стоимость, доставка и существенные изменения по заказам за согласованный период
Файл `cabinet_counterparties` передается из личного кабинета в 1С. Файлы `balance_snapshot`, `catalog_snapshot` и `orders_snapshot` передаются из 1С в личный кабинет.
Файлы `counterparties_snapshot`, `balance_snapshot`, `catalog_snapshot` и `orders_snapshot` передаются из 1С в личный кабинет. Обратная передача файлов из личного кабинета в 1С выполняется только для согласованных клиентских заявок или иных событий, если такой контур отдельно согласован сторонами.
Состав файлов может быть расширен по согласованию сторон, если в ходе интеграции появится отдельный тип данных, который нецелесообразно включать в существующие файлы обмена.
@@ -1808,22 +1782,24 @@ Wireframe-прототип:
Для заказов регулярная синхронизация ограничивается согласованным периодом. По умолчанию передаются заказы за последние 60 календарных дней, а также активные заказы, если они не попадают в этот период, но должны отображаться клиенту.
== Пример cabinet_counterparties
== Пример counterparties_snapshot
```json
{
"document_type": "cabinet_counterparties",
"document_type": "counterparties_snapshot",
"schema_version": "1.0",
"snapshot_id": "cabinet-counterparties-2026-05-04T10:00:00",
"snapshot_id": "1c-counterparties-2026-05-04T10:00:00",
"generated_at": "2026-05-04T10:00:00+03:00",
"source": "cabinet",
"source": "1c",
"counterparties": [
{
"counterparty_external_id": "1c-counterparty-77",
"inn": "7700000000",
"name": "ООО Клиент",
"cabinet_enabled": true
"kpp": "770001001",
"cabinet_allowed": true,
"manager_external_id": "1c-manager-12"
}
]
}
@@ -1952,6 +1928,7 @@ Wireframe-прототип:
Интеграция с 1С считается готовой в согласованном объеме, если:
- контрагенты из 1С принимаются и доступны менеджеру для привязки клиентского кабинета
- каталог и характеристики товаров получаются и отображаются в личном кабинете
- остатки по складам отображаются в карточках товаров
- заказы клиента получаются и отображаются с актуальными статусами
@@ -2535,7 +2512,7 @@ Wireframe-прототип:
Пользовательская документация должна описывать:
- вход в личный кабинет и завершение регистрации
- вход в личный кабинет и завершение подключения по приглашению
- работу с профилем и каналами уведомлений
- просмотр каталога готовой продукции
- добавление товаров в корзину и отправку заявки
@@ -2622,7 +2599,7 @@ Wireframe-прототип:
В состав этапа входят:
- регистрация и подключение клиентов
- подключение клиентов по приглашению менеджера
- роли и разграничение доступа
- каталог готовой продукции
- корзина и заявки на заказ