5.6 KiB
N8N Workflows — pull из источников в raw_* схемы
Подготовка credentials (один раз)
Открой http://localhost:5678 → Credentials (левая панель) → Add credential.
Credential A: PostgreSQL для нашего хранилища
| Поле | Значение |
|---|---|
| Type | Postgres |
| Name | bit_flight_deck PG |
| Host | pipeline_postgres |
| Port | 5432 |
| Database | bit_flight_deck |
| User | bit_flight_deck_user |
| Password | (значение PG_PASSWORD из ~/projects/bit-flight-deck/.env) |
| SSL | Disable |
Save → должен быть зелёный «Connection tested successfully».
Credential B: HTTP Basic Auth для BIT.RA API
| Поле | Значение |
|---|---|
| Type | HTTP Basic Auth |
| Name | BIT.RA API |
| User | Админ Рома (временно, пока bfd_api_user не настроен в БСП) |
| Password | FoxsuXHiS~ |
Save.
Workflow #1 — pull-bitra-employees
Это образец. По нему клонируются остальные. Создавать в UI:
-
Workflows → Add Workflow. Имя:
pull-bitra-employees. -
Добавить ноду Schedule Trigger:
- Trigger Times: Cron expression
0 */6 * * *(раз в 6 часов).
- Trigger Times: Cron expression
-
Добавить ноду HTTP Request (соединить от Schedule Trigger):
- Method: GET
- URL:
http://188.93.213.204/LURV/hs/bfd-api/v1/employees - Authentication: Generic Credential Type → HTTP Basic Auth → выбрать credential
BIT.RA API. - Response Format: JSON
-
Добавить ноду Postgres (соединить от HTTP Request):
- Credential:
bit_flight_deck PG - Operation: Execute Query
- Query:
INSERT INTO raw_bitra.employees (bitra_id, payload, synced_at) SELECT elem->>'id' AS bitra_id, elem AS payload, now() AS synced_at FROM jsonb_array_elements($1::jsonb) AS elem ON CONFLICT (bitra_id) DO UPDATE SET payload = EXCLUDED.payload, synced_at = now(); INSERT INTO public.sync_log (source, entity, last_sync_ts, records_count, status) VALUES ('bitra', 'employees', now(), jsonb_array_length($1::jsonb), 'ok'); - Query Parameters: добавить параметр $1 со значением
={{ JSON.stringify($json) }}.
- Credential:
-
Save workflow.
-
Execute Workflow (правый верх) — тестовый запуск.
- В каждой ноде должны быть зелёные галки и виден output.
- HTTP Request: массив объектов сотрудников.
- Postgres: ответ с количеством обновлённых строк.
-
Verify в БД:
docker exec -e PGPASSWORD=<PG_PASSWORD> -i pipeline_postgres psql -h localhost -U bit_flight_deck_user -d bit_flight_deck -c "SELECT count(*) FROM raw_bitra.employees;"Ожидаемо: > 0.
-
Activate (тумблер вверху) — workflow начнёт выполняться по расписанию.
-
Export → правый клик на workflow в списке → Download → положить JSON в
n8n/workflows/01-pull-bitra-employees.json.
Дальше — клонирование на остальные эндпоинты
Когда pull-bitra-employees отлажен — для каждого следующего эндпоинта:
- Duplicate workflow (правый клик на workflow → Duplicate).
- Переименовать.
- Изменить только: URL в HTTP Request, Query в Postgres (другая таблица + другой entity в sync_log).
- Возможно — расписание Schedule (для works — каждые 30 мин, для словарей — раз в сутки).
- Save, Activate, Export.
Список workflows для MVP-1
| # | Имя | URL endpoint | Расписание | Postgres таблица |
|---|---|---|---|---|
| 1 | pull-bitra-employees | /v1/employees |
0 */6 * * * |
raw_bitra.employees |
| 2 | pull-bitra-works | /v1/works?modified_since={{last_sync}} |
*/30 * * * * |
raw_bitra.works |
| 3 | pull-bitra-projects | /v1/projects |
0 */6 * * * |
raw_bitra.projects |
| 4 | pull-bitra-stages | /v1/stages |
0 */6 * * * |
raw_bitra.dictionaries (kind='stage') |
| 5 | pull-bitra-work-types | /v1/work_types |
0 4 * * * (daily 04:00) |
raw_bitra.work_types |
| 6 | pull-bitra-dictionaries | /v1/dictionaries |
0 4 * * * |
raw_bitra.dictionaries |
| 7 | pull-bitra-dept-history | /v1/dept_history?modified_since={{last_sync}} |
0 */6 * * * |
raw_bitra.dept_history |
| 8 | pull-eva-incremental | EVA CmfAudit | */30 * * * * |
raw_eva.* |
| 9 | pull-eva-nightly-full | EVA .list на все модели |
0 2 * * * |
raw_eva.* |
| 10 | pull-bitrix-deals | Bitrix crm.deal.list?filter[CATEGORY_ID]=16 |
*/15 * * * * |
raw_bitrix.deals |
| 11 | pull-bitrix-users | Bitrix user.get |
0 5 * * * |
raw_bitrix.users |
Детальные SQL для каждой таблицы — см. SQL views/procs в sql/views/ и sql/procedures/ (будут сгенерированы после успешного запуска первого pull).
Когда первый workflow отработает
Скажи мне — я:
- Подготовлю остальные workflows (через duplicate-pattern).
- Напишу SQL для
stg_bitra.*views,core.merge_*procedures,mart.*views. - Подготовлю Metabase dashboard.