Skip to content

docs(internal_documentation): autovaz kafka,banlist,android publishin… #164

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 6 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
cookie - r46_search=1
параметр - debug=true
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
вход в Gmail акк для шопифай

логин: team@marstack.app

пароль: AeYu5CL14QMQAM2dF67

резервный доступ через телефонный номер (Миши) и почту mk@rees46.com
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
team@marstack.app
8MpCaj9Wew9FIB

(!!!Не заходить с российского IP!!!)





Магазин "My Store" перенесен на акк

shop@marstack.app
54MpCaj9Wew9FIB

Нужно деактивировать до 17-го марта, дальше подписка 39$

(!!!Не заходить с российского IP!!!)
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
Установите сертификат:

```
mkdir -p /usr/local/share/ca-certificates/Yandex && \
wget "https://storage.yandexcloud.net/cloud-certs/CA.pem" -O /usr/local/share/ca-certificates/Yandex/YandexCA.crt
```
Пример команды для отправки сообщения в топик с SSL:

```
echo "test message" | kafkacat -P \
-b rc1c-e5bcr1ief01crf2q.mdb.yandexcloud.net:9091 \
-t <topic> \
-X security.protocol=SASL_SSL \
-X sasl.mechanisms=SCRAM-SHA-512 \
-X sasl.username=<producer-name> \
-X sasl.password=<producer-password> \
-X ssl.ca.location=/usr/local/share/ca-certificates/Yandex/YandexCA.crt -
Z -K:
```
Пример команды для получения сообщений из топика:

```
kafkacat -C \
-b rc1c-e5bcr1ief01crf2q.mdb.yandexcloud.net:9091 \
-t <topic> \
-X security.protocol=SASL_SSL \
-X sasl.mechanisms=SCRAM-SHA-512 \
-X sasl.username=<consumer-name> \
-X sasl.password=<consumer-password> \
-X ssl.ca.location=/usr/local/share/ca-certificates/Yandex/YandexCA.crt -
Z -K:
```

![img.png](./images/autovaz-integration-streams-list.png)
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# Работа с подписками и отписками

Новые флаги подписок/отписок хранятся в таблице `client_unsubscribes`. Для каждого клиента существует виртуальная двухмерная матрица флагов, состоящая из `channel` (канал отправки) и `message_type` (тип сообщения).

**Каналы отправки:**

* Email
* Телефон
* Веб пуш
* Мобильный пуш
* Телеграм

**Типы сообщений:**

* Массовые рассылки (Bulk)
* Цепочки (Chain)
* Транзакционные (Transactional)

Пример: клиент с указанными Email, Phone и Telegram. Его подписки можно представить в виде таблицы:

| | Email | Phone | WebPush | MobilePush | Telegram |
| ------------- | ----- | ----- | ------- | ---------- | -------- |
| Bulk | ✅ | ❌ | | | ❌ |
| Chain | ❌ | ✅ | | | ✅ |
| Transactional | ✅ | ✅ | | | ✅ |

В таблице БД будут следующие записи:

```text
shop_id | channel_type | channel_id | message_type
--------|--------------|----------------|--------------
1 | email | test@test.com | chain
1 | phone | 7912345678 | bulk
1 | telegram | 1234567890 | bulk
```

Хранятся только отписки — то есть записи в таблице обозначают отключённые каналы и типы сообщений.

### Проверка подписки клиента на канал

**Ruby:**

```ruby
client.subscribed?(ClientUnsubscribe::CHANNEL_EMAIL, ClientUnsubscribe::TYPE_CHAIN)
```

**SQL:**

```sql
SELECT 1 FROM client_unsubscribes
WHERE shop_id = 1
AND channel_type = 'email'
AND channel_id = 'test@test.com'
AND message_type = 'chain'
LIMIT 1
```

### Получить список клиентов, подписанных на канал email в массовых рассылках

**Ruby:**

```ruby
shop.clients.joins("LEFT JOIN client_unsubscribes \
ON client_unsubscribes.shop_id = clients.shop_id \
AND client_unsubscribes.channel_type = '\#{ClientUnsubscribe::CHANNEL_EMAIL}' \
AND client_unsubscribes.channel_id = clients.\#{ClientUnsubscribe::CHANNEL_ID[ClientUnsubscribe::CHANNEL_EMAIL]}")
.where(client_unsubscribes: {message_type: nil})
```

**SQL:**

```sql
SELECT clients.* FROM clients
LEFT JOIN client_unsubscribes
ON client_unsubscribes.shop_id = clients.shop_id
AND client_unsubscribes.channel_type = 'email'
AND client_unsubscribes.channel_id = clients.email
WHERE clients.shop_id = 1
AND client_unsubscribes.message_type IS NULL
```

⚠️ **Важно:** не хардкодьте значения `channel_type` и `message_type`. Используйте соответствующие константы.

⚠️ **Важно:** при поиске по `client_unsubscribes` обязательно фильтровать по `shop_id`, `channel_type`, `channel_id`.

❗ **Изменения данных** в `client_unsubscribes` допускаются **только в API-проекте** и **только через статичные методы класса `ClientUnsubscribe`**.
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
# Товарный фид

🔗 [https://rees46.ru/docs/ru/setup/products/](https://rees46.ru/docs/ru/setup/products/)

---

# Трекинг событий

## Обязательные события

### Просмотр товара

Передается на странице товара или на странице категории, если для просмотра используется модальное окно.
**Важно:** если просмотр товара происходит после перехода из инструмента (поиск, товарные рекомендации и т.д.) — в событии просмотра необходимо передать параметры инструмента:
`recommended_by`, `recommended_code`
🔗 [https://reference.api.rees46.com/#user-viewed-a-product](https://reference.api.rees46.com/#user-viewed-a-product)

---

### Добавление, удаление, обновление корзины

Передаётся с любой страницы, где товар можно добавить в корзину, а также со страницы самой корзины, где можно изменять её состав.
**Важно:** если добавление товара в корзину происходит после перехода из инструмента (поиск, товарные рекомендации и т.д.) — в событии просмотра необходимо передать параметры инструмента:
`recommended_by`, `recommended_code`
🔗 [https://reference.api.rees46.com/#user-added-product-to-cart](https://reference.api.rees46.com/#user-added-product-to-cart)

---

### Оформление заказа

🔗 [https://reference.api.rees46.com/#user-purchased-products](https://reference.api.rees46.com/#user-purchased-products)

---

### Просмотр категории

🔗 [https://reference.api.rees46.com/#user-viewed-a-category](https://reference.api.rees46.com/#user-viewed-a-category)

---

### Поисковый запрос

🔗 [https://reference.api.rees46.com/#user-searched-something](https://reference.api.rees46.com/#user-searched-something)

---

**P.S. Параметры рекомендованного события**

* `recommended_by`:

* рекомендации — `dynamic`
* быстрый поиск — `instant_search`
* полный поиск — `full_search`
* `recommended_code`:

* рекомендации — код блока
* быстрый или полный поиск — поисковый запрос

---

## Необязательные события

### Добавление, удаление, обновление избранного

🔗 [https://reference.api.rees46.com/#user-added-product-to-favorites](https://reference.api.rees46.com/#user-added-product-to-favorites)
🔗 [https://reference.api.rees46.com/#user-removed-product-from-favorites](https://reference.api.rees46.com/#user-removed-product-from-favorites)

---

### Кастомные события

🔗 [https://reference.api.rees46.com/#track-custom-event](https://reference.api.rees46.com/#track-custom-event)

---

## Проверка передачи событий

**Личный кабинет магазина -> Настройки -> Статус подключения**

---

# Профиль пользователя

При каждом изменении данных пользователя (авторизация, регистрация, изменение данных) необходимо их передавать.
🔗 [https://reference.api.rees46.com/#user-39-s-profile](https://reference.api.rees46.com/#user-39-s-profile)

---

# Интеграция инструментов

## Товарные рекомендации

При работе с товарными рекомендациями нужно учитывать, что алгоритмы блока ожидают данные со страницы, например ID просматриваемой категории или товара, поисковый запрос, локация, бренд. Ниже приведен общий рекомендованный алгоритм установки блоков на страницах сайта.

* **Главная** — нет обязательных параметров
* **Категория** — необходимо передать ID текущей категории
* **Товар** — необходимо передать ID текущего товара
* **Корзина** — корзину передавать не нужно, она собирается из событий и хранится в профиле пользователя
* **Результаты поиска** — необходимо передать поисковый запрос
* **Другие страницы** (например: 404, блог, контакты)

**JS SDK метод запроса товарных рекомендаций**
🔗 [https://reference.api.rees46.com/#request-product-recommendations](https://reference.api.rees46.com/#request-product-recommendations)

---

## Поиск

Поиск делится на быстрый и полный.

* **Быстрый поиск** — показывает результаты при вводе поискового запроса
🔗 [https://reference.api.rees46.com/#instant-search](https://reference.api.rees46.com/#instant-search)
* **Полный поиск** — используется на странице вывода результатов
🔗 [https://reference.api.rees46.com/#full-search](https://reference.api.rees46.com/#full-search)

---

# Настройка DNS

Необходимо добавить почтовый домен в раздел **Настройки -> Почтовые домены**

Рекомендуется создать для отправки разных типов писем отдельные поддомены. Это также позволит избежать конфликтов с существующими DNS записями на основном домене:

* `b.comain.com` — массовые рассылки (bulk)
* `c.comain.com` — триггерные рассылки (chain)
* `t.comain.com` — транзакционные рассылки (transact)

Для каждого домена на странице создания будет сгенерирована инструкция по добавлению DNS записей.

![img.png](images/DNS-settings.png)
---

# Импорт истории заказов

Для того, чтобы система быстрее обучилась, можно передать историю заказов пользователей за последние 6–24 месяца.
**Метод:** [https://reference.api.rees46.com/#import-orders](https://reference.api.rees46.com/#import-orders)
Отмененные заказы можно не передавать.

---

# Импорт аудитории

Для быстрого запуска массовых рассылок, можно передать данные о клиентах.
🔗 [https://reference.api.rees46.com/#import-users](https://reference.api.rees46.com/#import-users)
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
<details><summary>Актуальный список IP адресов</summary>


```
78.46.208.108
88.198.115.20
88.198.150.80
88.99.127.136
116.202.10.131
78.46.169.128
78.46.183.37
49.12.108.73
49.12.106.192
49.12.75.91
49.12.79.84
49.12.106.7
88.198.202.24
49.12.73.157
49.12.104.230
49.12.75.85
49.12.76.153
162.55.171.43
159.69.241.187
162.55.170.228
162.55.171.32
138.201.247.200
159.69.84.185
49.12.46.49
159.69.40.46
95.217.239.76
159.69.41.36
95.217.239.164
116.202.106.77
78.47.192.159
116.202.106.138
116.202.106.194
82.202.237.245
82.202.237.242
82.202.237.243
82.202.237.244
37.9.6.34
37.9.6.35
37.9.6.36
37.9.6.37
37.9.6.38
37.9.6.39
37.9.6.40
37.9.6.41
37.9.6.42
37.9.6.43
37.9.6.44
37.9.6.45
37.9.6.46
37.9.6.47
37.9.6.48
37.9.6.49
37.9.6.50
37.9.6.51
37.9.6.52
37.9.6.53
37.9.6.54
37.9.6.55
37.9.6.56
37.9.6.57
37.9.6.58
37.9.6.59
37.9.6.60
37.9.6.61
37.9.6.62

```

</details>

### Проверка в бан листе

Проверяем каждый IP по ссылке https://multirbl.valli.org/lookup/. При наличии IP в бан листе, согласно инструкции на сайте самого бан листа запрашиваем удаление из списка.

У каждого сервиса свои требования. В каких то можно удалить IP из списка, в каких то нельзя.

### Автоматическая проверка

Каждый день происходит проверка списка всех IP адресов автоматически. При наличии в популярных блек-листах появляется сообщение в канале #deliverability.

При наличии таких сообщений, необходимо сделать запрос в каждом блек-листе на исключение IP из списка.
Loading