sf-loader

3.1.1 • Public • Published

Loader

Лоадер позволяет производить манипуляции с базой данных salesforce. Взаимодействие осуществляется при помощи библиотеки jsforce https://jsforce.github.io/ Документация: https://jsforce.github.io/document/

Структура

- loader
   ╞ data
     ╞ config.json - данные для создания презентаций (заполнение темплейтов)
     ╞ configsf.json - конфиг для доступа к песочнице, загрузки через ftp
     ╞ data.xls - данные для заполнения description и display order
   ╞ functions
     ╞ connect.js - авторизация и подключение к БД песочницы
     ╞ createCTL.js - создание CTL-файлов (файл-сопровождения архивов) для загрузки по ftp
     ╞ find.js - запрос и получение полной информации по презентации для дальнейшей работы
     ╞ ftpDeploy.js - авторизация и отправка файлов (CTL и zip) на ftp-сервер
     ╞ getConfirm.js - подтверждение для операции удаления презентации
     ╞ getDirsTree.js - получение структуры папок презентаций (работа с файловой системой в `zip\`)
     ╞ getInputValue.js - работа с консольным вводом
     ╞ parseJson.js - парсинг `loader\data\data.xls` в json
     ╞ getProductId.js - получение id продукта из SalesForce
   ╞ modules
     ╞ createPres.js - создание структуры презентации
     ╞ deletePres.js - удаление структуры презентации
     ╞ deploy.js - отправка презентации на ftp-сервер
     ╞ description.js - заполнение description презентации
     ╞ displayOrder.js - изменение display-order слайдов презентации
     ╞ manifest.js - создание манифеста
     ╞ checkStructure.js -  сравнивает структуру презентации в SalesForce и в папке zip на наличие новых слайдов или удаленных слайдов
     ╞ changeStructure.js - (перед запуском желательно проверить правильность изменений модулем checkStructure) добавляет в SalesForce записи о недостающих слайдах (если есть), удаляет из SalesForce лишние слайды(те которых нет в папке zip, но есть в SalesForce)
     ╞ createSurvey.js - создает Survey из json файла(для работы модуля требуются поля в package.json "survey_name", "survey_dir" и "survey_type"(сейчас есть 3 типа: Suggestion_Survey_vod, Recurring_vod, One_Time_vod), 
     пример: 
      "survey_name": "test_product_survay",
      "survey_dir": "./survey/test_product_survay",
      "survey_type": "Recurring_vod")
      Пример структуры jsona: 
      [
        {
          "question__text": "Какой сегодня день недели?",
          "question__type": "checkbox",
          "question__answers": [
            {
              "question__answer_text": "Понедельник",
            },
            {
              "question__answer_text": "Вторник",
            },
            {
              "question__answer_text": "Среда",
            },
            {
              "question__answer_text": "Четверг",
            },
            {
              "question__answer_text": "Пятница",
            },
            {
              "question__answer_text": "Суббота",
            },
            {
              "question__answer_text": "Воскресенье",
            }
          ]
        }
      ]
     ╞ deleteSurvey.js - ищет Survey по подстроке и удаляет его 
     ╞ findDuplicate.js - ищет КМ с именами слайдов из папки zip и смотрит есть ли слайды к которым приклеплен этот КМ, если нет слайдов с таким КМ, выводит сообщение с просьбой проверить этот КМ.Id
   ╞ index.js - исполняемый файл
- manifests - папка с выгруженными манифестами
- zip - папка с собранными презентациями

#Работа с загрузчиком, основные положения

Инструмент 'Loader' используется для автоматизации процессов создания, удаления, загрузки презентаций в тестовую среду salesforce Структура презентации представляет собой взаимодействие следующих сущностей (записи в бд salesforce):

  • презентация
  • слайды
  • keymessages
  • shared-ресурс (keymessage с типом shared-resource)

###Основные моменты:

  • Контент слайдов прикрепляется как zip-архив к keymessages
  • Презентация изначально никак не связана с keymessages
  • Для их связи используются cущности с типом 'slide'. В нем указываются айдишники презентации и keymessage
  • shared-ресурс возможно прикрепить к keymessages обычного типа (в нем рационально хранить конфиги, pdf, общие скрипты и стили для уменьшения объема zip-архивов слайдов сборки и отсутствия необходимость перезаливать всю презу)
  • shared-ресурс опционален и возможность работы с ним оговаривается при получени задания от менеджера.

В loader'е реализована данная схема:

  1. Получение id продукта под которым будет загружена презентация
  2. Создается презентация (берется ее id)
  3. Создается shared-ресурс (берется его id)
  4. Создаются keymessages с указанием id shared'a (берутся их id)
  5. Создаются слайды (используются id презентации и keymessages)

Манифесты генерятся только для презентаций с shared-ресурсом

shared-ресурс прикрепляется к основным key-messages

Последовательность

Если презентация не создана (отсутствует в песочнице), то создаем ее (список през прилетает из папки 'zip', по сути это названия папок собранных презентаций)

При создании презы есть возможность указать продукт. Дефолтное значение указано в package.json -> "product". Проверяем создан ли продукт в тестовой среде

ВАЖНО!!! если презентация уже создана, то создается дубляж презы и песочница засоряется. Нужно найти все вхождения по подстроке и удалить их. После этого создать заново.

Если возникает ошибка, то при попытке удалить презу из песочницы, вероятнее всего не удален shared ресурс у презы (смотрим внимательно на логи).

В этом случае, вручную удаляем ненужный shared из песочницы (через web-интерфейс salesforce). Так же на всякий случай смотрим удалены ли key-messages (ищем все вхождения через поиск в интерфейсе salesforce).

Слайды после этого удалять не нужно, нужно лишь вручную (web-интерфейс salesforce) удалить объект презентации. После этого создаем презу с помощью loadera

Deploy

Соответственно, последовательность действий следующая:

  1. Создаем презу
  2. Деплоим ее
  3. В случае необходимости обновляем display order. Конфиги хранятся в файле loader\data\data.xls.
  • Для добавления, создаем новую вкладку с именем презы, первая ячейка 'name', последующие в желаемом порядке слайдов. Важно не оставлять пустых строк.
  1. Descriptions. Тот же файл, вкладка descriptions
  2. При передаче презентаций клиенту неодходимо создавать манифесты - слепок-эксель из песочницы salesforce

#Check-list

  • [ ] Добавить возможность выгрузки манифестов без shared (реализовано в https://bitbucket.org/onpoint_dev/boehringer_pradaxa_praxbind_19_2).
  • [ ] Добавить возможность создания и удаления всех презентаций сразу на основе зипов.
  • [ ] В manifestUsual в поле Hidden определять если продукт "sandoz" то "NO"

Readme

Keywords

none

Package Sidebar

Install

npm i sf-loader

Weekly Downloads

1

Version

3.1.1

License

ISC

Unpacked Size

14.7 MB

Total Files

35

Last publish

Collaborators

  • onpoint-dev