Initial commit
This commit is contained in:
11
Интеграция СУП/Вопросы по интеграции.md
Normal file
11
Интеграция СУП/Вопросы по интеграции.md
Normal file
@@ -0,0 +1,11 @@
|
||||
1. Интеграция на создание клиента
|
||||
1. Какой endpoint будет использоваться на стороне СУП (ссылка)
|
||||
2. Какой протокол будет использоваться при интеграции (REST или SOAP)
|
||||
3. По поводу авторизации ранее договаривались кастомный header в запросе (дополнительно обсудить его название и значение)
|
||||
4. Ответ по созданию клиента будет синхронным или асинхронным
|
||||
5. Если в п. 4 ответ асинхронный, то нужно будет договориться по поводу интеграции СУП -> СРМ (endpoint, протокол, авторизация)
|
||||
2. Интеграция на создание некоммерческого проекта
|
||||
1. Какой endpoint будет использоваться на стороне СУП (ссылка)
|
||||
2. Какой протокол будет использоваться при интеграции (REST или SOAP)
|
||||
3. По поводу авторизации ранее договаривались кастомный header в запросе (дополнительно обсудить его название и значение)
|
||||
4. Ответ по созданию некоммерческого проекта будет скорее всего асинхронным (иногда потребуется дополнительное согласование для проекта), поэтому нужно будет договориться по поводу интеграции СУП -> СРМ (endpoint, протокол, авторизация)
|
||||
26
Интеграция СУП/Встреча 10.12.md
Normal file
26
Интеграция СУП/Встреча 10.12.md
Normal file
@@ -0,0 +1,26 @@
|
||||
## Взаимодействие систем
|
||||
|
||||
### Rabbit
|
||||
|
||||
### Temporal
|
||||
|
||||
## Примеры запросов
|
||||
|
||||
### Создание клиента
|
||||
|
||||
### Создание presale-проекта
|
||||
|
||||
### Ответы
|
||||
|
||||
|
||||
У меня новые вводные, схема взаимодействия должна быть следующая:
|
||||
1. Я инициирую запрос в Temporal
|
||||
2. Создается активность CreatePresaleProject (Отправляется POST запрос в систему ERP)
|
||||
3. Эта активность должна будет периодически (раз в 10 минут, настраиваемый диапазон запрашивать данные у другой системы)
|
||||
4. Если я получаю ответ, то активность CreatePresaleProject завершается и запускается UpdateOrderInCRM
|
||||
5. Если получаю какую-то ошибку, то уже завершаю активность с ошибкой
|
||||
|
||||
Это делаем для StartOrderOnly Worker.
|
||||
Учти, что POST и GET запросы должны посылаться из Temporal
|
||||
|
||||
Скажи, что нужно сделать, какой план?
|
||||
74
Интеграция СУП/Интеграция полная.md
Normal file
74
Интеграция СУП/Интеграция полная.md
Normal file
@@ -0,0 +1,74 @@
|
||||
## Создание клиента
|
||||
|
||||
Используется endpoint с методом POST
|
||||
|
||||
Предлагаемый вариант
|
||||
`api/1.0/openRequest/createClient`
|
||||
### Запрос
|
||||
|
||||
```json
|
||||
{
|
||||
"companyId": "", // Компания
|
||||
"typeId": "", // Тип заявки
|
||||
"kindId": "", // Вид заявки
|
||||
"name": "Альфа-Пласт",
|
||||
"shortName": "Альфа-Пласт",
|
||||
"managerId": "123456", // Значение ИНС (залили данные в AD и храним их в CRM. Значение без нулей в начале)
|
||||
"accountId": "57ef229c-d8e4-4da5-b87a-7205e7eb7c42"
|
||||
}
|
||||
```
|
||||
|
||||
### Ответ
|
||||
|
||||
Успешный
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"errorMessage": ""
|
||||
}
|
||||
```
|
||||
|
||||
Неуспешный
|
||||
```json
|
||||
{
|
||||
"success": false,
|
||||
"errorMessage": "Текст ошибки"
|
||||
}
|
||||
```
|
||||
## Проверка готовности создания клиента
|
||||
|
||||
Используется endpoint с методом GET
|
||||
|
||||
Предлагаемый вариант
|
||||
`api/1.0/openRequest/view?accountId={accountId}`
|
||||
|
||||
Главная суть метода, что мы по значению `accountId` из пункта `Создание клиента` получаем готовность создания клиента.
|
||||
Клиент считается созданным, если у него заполнено поле `ClientId` (уточнить как называется в базе данных поле `Код клиента из R3`)
|
||||
### Ответ
|
||||
|
||||
Клиент еще создается
|
||||
```json
|
||||
{
|
||||
"status": "Waiting",
|
||||
"clientId": "",
|
||||
"errorMessage": ""
|
||||
}
|
||||
```
|
||||
|
||||
Создание клиента завершено
|
||||
```json
|
||||
{
|
||||
"status": "Done",
|
||||
"clientId": "123-123-123",
|
||||
"errorMessage": ""
|
||||
}
|
||||
```
|
||||
|
||||
Ошибка при создании клиента
|
||||
```json
|
||||
{
|
||||
"status": "Error",
|
||||
"clientId": "",
|
||||
"errorMessage": "Описание ошибки"
|
||||
}
|
||||
```
|
||||
85
Интеграция СУП/Некоммерческий проект.md
Normal file
85
Интеграция СУП/Некоммерческий проект.md
Normal file
@@ -0,0 +1,85 @@
|
||||
## Авторизация
|
||||
|
||||
Используется кастомный header `X-Erp-Integration`
|
||||
Значение хранится в конфигах у системы СУП.
|
||||
Для дев и прод разные значения.
|
||||
Данные передаются в формате base64, при получении значения необходимо его раскодировать и сравнить со значением хранящимся в конфиге.
|
||||
Если значения не соответствуют, то вернуть ошибку и код HTTP 403 - Unauthorized.
|
||||
## Создание некоммерческого проекта
|
||||
|
||||
Используется endpoint с методом POST
|
||||
|
||||
Предлагаемый вариант
|
||||
`api/1.0/openRequest/createPresaleProject` **Обсудить данный момент после реализации и предоставить команде CRM**
|
||||
### Запрос
|
||||
|
||||
```json
|
||||
{
|
||||
"orderName": "Альфа-Пласт ADC",
|
||||
"orderDate": "2025-12-31",
|
||||
"clientId": "123-123-123", // Значение `Код клиента из R3`
|
||||
"managerProjectId": "00123456", // Значение ИНС
|
||||
"headProjectId": "00123457", // Значение ИНС
|
||||
"directorProjectId": "00123458", // Значение ИНС
|
||||
"orderAmount": 12345.67,
|
||||
"productAttribute": 1, // (1 - ПО/ПО+ТП/ТП. 2 - Консалтинг. 3 - ПО+ТП+Консалтинг/ТП+Консалтинг/ПО+Консалтинг)
|
||||
"applicationId": "57ef229c-d8e4-4da5-b87a-7205e7eb7c43",
|
||||
"projectId": "" // AP ID (Пустое - создание проекта. Заполненное - редактирование проекта)
|
||||
}
|
||||
```
|
||||
|
||||
### Ответ
|
||||
|
||||
Успешный
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"errorMessage": ""
|
||||
}
|
||||
```
|
||||
|
||||
Неуспешный
|
||||
```json
|
||||
{
|
||||
"success": false,
|
||||
"errorMessage": "Текст ошибки"
|
||||
}
|
||||
```
|
||||
|
||||
## Проверка готовности создания проекта
|
||||
|
||||
Используется endpoint с методом GET
|
||||
|
||||
Предлагаемый вариант
|
||||
`api/1.0/openRequest/view?applicationId={applicationId}` **Обсудить данный момент после реализации и предоставить команде CRM**
|
||||
|
||||
Главная суть метода, что мы по значению `applicationId` из пункта `Создание некоммерческого проекта` получаем готовность создания проекта.
|
||||
Проект считается созданным, если у него заполнено поле `ProjectId` (уточнить как называется в базе данных поле `AP ID`)
|
||||
### Ответ
|
||||
|
||||
Проект еще создается
|
||||
```json
|
||||
{
|
||||
"status": "Waiting",
|
||||
"projectId": "",
|
||||
"errorMessage": ""
|
||||
}
|
||||
```
|
||||
|
||||
Создание проекта завершено
|
||||
```json
|
||||
{
|
||||
"status": "Success",
|
||||
"projectId": "123-123-124",
|
||||
"errorMessage": ""
|
||||
}
|
||||
```
|
||||
|
||||
Ошибка при создании проекта
|
||||
```json
|
||||
{
|
||||
"status": "Error",
|
||||
"projectId": "",
|
||||
"errorMessage": "Описание ошибки"
|
||||
}
|
||||
```
|
||||
155
Интеграция СУП/Статусы заявок и проектов - задание.md
Normal file
155
Интеграция СУП/Статусы заявок и проектов - задание.md
Normal file
@@ -0,0 +1,155 @@
|
||||
## Статусы объектов
|
||||
|
||||
Заявка
|
||||
- Черновик -
|
||||
- На утверждении -
|
||||
- На рассмотрении в ЦПРП -
|
||||
- Зарегистрирована (финальный) -
|
||||
- Отклонена -
|
||||
|
||||
Проект
|
||||
- Открыт - E0001
|
||||
- Закрыт (финальный) - E0002
|
||||
- Приостановлен - E0003
|
||||
- На закрытии в ЦПРП (финальный) - E0005
|
||||
- На закрытии в ФС (финальный) - E0006
|
||||
- Аннулирован (финальный) - E0009
|
||||
- Закрыт для списания TS - E0027
|
||||
|
||||
## Процесс
|
||||
|
||||
1. После получения AP ID (Id проекта из САП) в CRM могут происходить изменения данных по сделке (заявке).
|
||||
2. Все изменения фиксируются в системе CRM и отправляются в СУП в конце рабочего дня
|
||||
3. По всем измененным заявкам вначале отправляем запрос на получение текущих статусов заявок и проектов
|
||||
Пример запроса смотри в "Получение статусов заявок и проектов" (Пример запроса)
|
||||
4. После получения статусов заявок и проектов система CRM отбирает только те заявки, которые могут быть изменены
|
||||
1. Заявка "Зарегистрирована" и Проект "Проект открыт"
|
||||
2. Заявка "Зарегистрирована" и Проект "Проект закрыт для списания TS"
|
||||
5. По подходящим заявкам из п.4 система CRM формирует запросы для отправки в СУП с использованием Temporal
|
||||
Пример запроса смотри в "Изменение данных по заявке - проекту" (Примеры запроса)
|
||||
6. Периодически опрашиваем систему СУП о готовности изменения данных по заявке и после получения ответа изменяем статусы заявок в CRM
|
||||
|
||||
## Авторизация
|
||||
|
||||
Используется кастомный header `X-Erp-Integration`
|
||||
Значение хранится в конфигах у системы СУП.
|
||||
Для дев и прод разные значения.
|
||||
Данные передаются в формате base64, при получении значения необходимо его раскодировать и сравнить со значением хранящимся в конфиге.
|
||||
Если значения не соответствуют, то вернуть ошибку и код HTTP 403 - Unauthorized.
|
||||
## Получение статусов заявок и проектов
|
||||
|
||||
Используется endpoint с методом POST - синхронный процесс
|
||||
|
||||
Предлагаемый вариант
|
||||
`api/1.0/openRequest/getPresaleProjectsStatus` **Обсудить данный момент после реализации и предоставить команде CRM**
|
||||
|
||||
Пример запроса
|
||||
```json
|
||||
{
|
||||
"projects": [
|
||||
{
|
||||
"projectId": "AP001", // AP ID проекта
|
||||
},
|
||||
{
|
||||
"projectId": "AP002", // AP ID проекта
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Пример ответа
|
||||
```json
|
||||
{
|
||||
"projects": [
|
||||
{
|
||||
"projectId": "AP001", // AP ID проекта
|
||||
"applicationStatus": "...", // Id статуса заявки
|
||||
"projectStatus": "E0005" // Id статуса проекта
|
||||
},
|
||||
{
|
||||
"projectId": "AP002", // AP ID проекта
|
||||
"applicationStatus": "...", // Id статуса заявки
|
||||
"projectStatus": "E0001" // Id статуса проекта
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
## Изменение данных по проекту
|
||||
|
||||
### Заявка на перевыпуск
|
||||
|
||||
Используется endpoint с методом POST - асинхронный процесс
|
||||
|
||||
Предлагаемый вариант
|
||||
`api/1.0/openRequest/createPresaleProject` **Обсудить данный момент после реализации и предоставить команде CRM**
|
||||
|
||||
В данном процессе будет использоваться метод `createPresaleProject`, также как и для создания некоммерческого проекта, но с условием, что в параметр `projectId` будет заполнен, что даст сигнал о том, что это заявка на перевыпуск проекта.
|
||||
|
||||
Пример запроса
|
||||
```json
|
||||
{
|
||||
"orderName": "Сделка-1", // Название проекта
|
||||
"orderDate": "2025-12-31", // Дата сделки из CRM
|
||||
"clientId": "123-123", // Код клиента из R3
|
||||
"headProjectId": "00123123", // ИНС руководителя проекта
|
||||
"managerProjectId": "00123124", // ИНС менеджера по продажам
|
||||
"directorProjectId": "00123125", // ИНС директора проекта
|
||||
"orderAmount": 12345.67, // Сумма сделки
|
||||
"projectId": "AP001", // AP ID проекта
|
||||
"applicationId": "57ef229c-d8e4-4da5-b87a-7205e7eb7c43" // Id заявки в CRM
|
||||
}
|
||||
```
|
||||
|
||||
Успешный ответ
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"errorMessage": ""
|
||||
}
|
||||
```
|
||||
|
||||
Неуспешный ответ
|
||||
```json
|
||||
{
|
||||
"success": false,
|
||||
"errorMessage": "Текст ошибки"
|
||||
}
|
||||
```
|
||||
|
||||
### Проверка готовности проекта с измененными данными
|
||||
|
||||
После изменения статуса заявки на Черновик, ожидаем согласования заявки и система CRM (Temporal) будет периодически опрашивать СУП о готовности перевыпуска и согласовании изменений по проекту.
|
||||
|
||||
Ответ считается окончательным, если статус != Waiting, то есть Error или Success.
|
||||
|
||||
Предлагаемый вариант
|
||||
`api/1.0/openRequest/view?applicationId={applicationId}` **Обсудить данный момент после реализации и предоставить команде CRM**
|
||||
|
||||
Примеры ответов
|
||||
|
||||
Идет согласование изменений
|
||||
```json
|
||||
{
|
||||
"status": "Waiting",
|
||||
"projectId": "",
|
||||
"errorMessage": ""
|
||||
}
|
||||
```
|
||||
|
||||
Согласование изменений успешно
|
||||
```json
|
||||
{
|
||||
"status": "Success",
|
||||
"projectId": "123-123-124",
|
||||
"errorMessage": ""
|
||||
}
|
||||
```
|
||||
|
||||
Ошибка или отказ по изменениям в проекте
|
||||
```json
|
||||
{
|
||||
"status": "Error",
|
||||
"projectId": "",
|
||||
"errorMessage": "Описание ошибки"
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user