Перейти к основному содержимому
Версия: Next

Скрипты

Скрипты используются для исполнения модели в Cleanroom. Подробнее о скриптах и процессе их согласования описано в документации по ссылке.

Для формирования скрипта необходимо сначала создать модель и отправить ее на согласование. При этом будут отправлены запросы на согласование скриптов.

1. Создание модели и отправка запросов на согласование скрипта

1.1. В системе Провайдера

  1. Перейти в DataLab в проект к которому была запрошена витрина. Создать модель с новым скриптом, в качестве витрины выбрать ранее согласованную из этого же проекта. При необходимости воспользоваться инструкцией по ссылке.

  2. Отправить модель на модерацию.

  3. Зафиксировать идентификатор проекта, по которому отправлена на модерацию модель:

  4. Перейти на вкладку Маркетплейс - Запросы (скрипты) Входящие. Зафиксировать номер запроса для датасета по которому только что был отправлен запрос.

    Untitled

  5. Номер запроса у партнера будет такой же.

1.2. В BC на стороне Провайдера

  1. Выполнить чтение BC последних сообщений с отправителем= Провайдер и получателем = Провайдер. Для этого выполнить: bash search-messages.sh 4 id_компании_провайдера id_компании_провайдера количество_сообщений

    Формат ответа:

      "id": 755281,
    "message": {
    "topic": 4,
    "sender": "dajwbgctmzxr",
    "receiver": "dajwbgctmzxr",
    "data": "{\"encryption\":\"rsa4096+aes256cbc\",\"message\":\"z/Vg3Sb9iFEilbNIDh1DisT84CLNmFBZbeohPtkxPoLRW2BnSGM7YZOrNMULCrOLkrS5YyncUXJq1oSk2l3uMrvEScFMGb7qRaW4EzC0FM9l1MY0a7RaKpd0sZu+JR7iwxkE4Ag3uHgPr48sIUoEQrpXYyDIg5jT+peQ8EgMuamM6xspiVMXUznx/1g75sQ1vKeY6Y8VBsgidvNmTjzHmHf5oX4gSRyobkaUNvTsNcgSzS3J8q8lls6DH+ExhUjWJI4k8W5lBgs7F8ImQrxWcv2uWba56MIpQq2EwwerWsZgyzeYyMnZulYFNP8IEn/DE6xNFIRS0mTC/RDJ2cCY8emu9Kgv0uR8GMr+U85mQ1H3oJE3EfE3LMbqAgA6tsAm5KgcaDeXsxJyOXn41Wh72a9g06yoK4P8wadWbvweM3N9p7czvcKT2TV6F3fVIr2Y5sJsVCUdNBaUv9s9Kn2+MxuxtnBcUZCuWHOvdNtHCl2MQpjokzVbb9dkdxJeOV8nDLHkp7ewYs1QqfWV+AwqWzx7JD+qeZ0aICYxKq7FjkUI/No23B3FuWZe+nDFYv4RO8AU9w82hvUGY/66UnpEJGuLfhHPzhRVjYoTFcrihHeP8RmEa4AL/QIQbstHrXw6jDaxwYRX6roowBibffWI+mtHJJ5tKiucXXbfOvNowLiwQgcZDOHCKLOa6X1EG9z3UudXGSF1DhAdyfa/0DeWy33db5+hIivc6Bv1Kej6xO2s68tI2S/0K3qY8b50Pu6C42BNbS3OXmx/J+yevtpNsA==\",\"masterKey\":\"A9a7h7VmH8DumUc7wh60bKurjhMq4dY5w/Ak8EZBcW0GMqweaH9ZPFXMQ94iWxm3MWRtQ9kSAwRTj9P6B/hKWeUjymJMZxTyvsmx8wBLPFTfZdCSoau7ZeKDyGMn6rlI3JmNy/PLx/cnsoHTUpqujlbQhC3ZiDorzeH1yQn9jyC256twJLkcXAUm15e7jzKLtiAjL1ZIF1NWdT83TOiWLRBEoseQ2NPtlsWX+iKbnjBZFZO3MLwLCs1nMzqV6PEMx1DlF512YMQ5baVEN2yZgvaLV5tQztTavo0SsJvXP1NRi1/rmU5DIdvXuimlau92NxvoiVE2nvmBGH4cDZpFQ8H89KJveWVR15kK5EdhhInyDm2l+XhiCH3hlc9AhpFJbRPXsROAXUfSpm+lEO0VV/MrHw6D26FWWYgn0YJt1KNC+BSUt+ZlUaot+G54XgerCunOTFVaQ+fDeJrMM7GH9aHA4w2OhbmwOSsiO6mCG0oJVMCDOjE1n2cAo9xhATte+l0odFE1QoJjl9ZLOVzagb3LVSHRCTe3BVdnq7r2j7jvWHxFyEI1SXFo+da7KNWRdPoBRTjaHWOdoeJy8NobhSU7D1nzfsWyE22+mWb3z816VsMKScGicgAlu/2kjnQ3LALjP1kO0fzvWQKBsD2+bKAPBpXMjOIrg5dCPksN4/o=\"}"
  2. Расшифровать последнее сообщение bash decrypt-messages.sh id_сообщения Будет получено сообщение согласно примеру ниже. В котором указана информация:

    • status - статус запроса на скрипт

    • source - репозиторий скрипта

    • project - идентификатор проекта

    • name - название скрипта

    • reviews - информация о проведении ревью по скрипту партнерами.

    • number - номер скрипта

        {
      "status": "ready4review",
      "source": {
      "repository": "2",
      "branch": "main",
      "tag": "",
      "commit": "e4d777a0e4c51cca83c5c89efa93b753b1c080be"
      },
      "_id": "635fc3c07978d80019909919",
      "project": "635fb5327978d800199096b4",
      "name": "bc test",
      "executableFilePath": "main.py",
      "ownerInfo": {
      "name": "Страхование"
      },
      "originProviderInstance": "dajwbgctmzxr",
      "owner": "5bqcyjp2lqpd",
      "userCreated": "cdgwzx3zeb22",
      "reviews": [
      {
      "status": "approved",
      "reviewer": "dajwbgctmzxr",
      "reviewedAt": "2022-11-01T06:46:45.019Z",
      "sign": "+UDK/Lc0RioDWOS6CdyuHiqQ5Big86VDr8NsNylfUfo=",
      "reason": null,
      "reviewedBy": "cdgwzx3zeb22"
      }
      ],
      "number": 371,
      "createdAt": "2022-10-31T12:46:56.742Z",
      "updatedAt": "2022-11-01T06:46:45.022Z",
      "__v": 0,
      "jobSetting": "635fc3c27978d8001990993c"
      }
  3. Если значения соответствуют ожидаемым, то есть:

    • номер и статус запроса на скрипт соответствуют запросу от Владельца инстанса самому себе (получен выше в разделе 1.1 п.4),
    • идентификатор проекта (получен выше в разделе 1.1 п.3), владелец датасета и получатель запроса совпадают с рассматриваемыми в запросе, То проверка прошла успешно.
  4. Если вид сообщения не соответствует, то следует проверить сообщение раньше, чтобы получить ожидаемый вид.

  5. Выполнить чтение сообщения от Провайдера Партнеру bash search-messages.sh 4 id_компании_провайдера id_компании_партнера количество_сообщений

    Формат ответа:

      "id": 755282,
    "message": {
    "topic": 4,
    "sender": "dajwbgctmzxr",
    "receiver": "3rooa5jcqxbj",
    "data": "{\"encryption\":\"rsa4096+aes256cbc\",\"message\":\"d9AFB0UizjL7a+0d5sBvlPs8JNeLZHgBSmLqF5xOXzozDTk70LSZKMlwdwgpt+COb1Ynv/nAWbAvcJglsnAr1AddMuLw7L1PIHWwM68a9t3iVDq84RUCuqan56mlFSFCd65HsgP5Ux1+aEQM4Ih0ryWyCiKumwijcTPL28Im5j8bu+UU0oQ9pJqk06R/WxHnkyg+GB2jrOz1DWua0Nr01qa0ECh/JuXLGcawLSPLOnkPI3QFpq/MJUiXs147YLG9S4sOH7Ixj9+JU3fhHBmfeVljLBPYLxTzO3GC6kaZB0ssmH99rp0RIfN8lq/BleFEuC3dnPOuDo8jChwEkthi2NZPRETr8GmpLe7dU5VExw66zbQASj+BuCn+HTFOFtd9TnMcb2OW8ro91dHm+Jj/xOs7ZJQTaa9ImxPBrQhBnweNYt/Hm6XaZoNhWZ1cr9ZTFdvmLhuIetkmA7wyRJYuG26jArKS/9qQPNOps71ptCPH6amTRgGS/AayQKRpg8rHakKW0absukYl7QjLm0+YGADaLKJBNuxgjlzU+rviANEJJU7cmNK/YCLQDQTmUgUCxO4zoChSmegsG4w6j6qVt3Gbc9MzUjVl5daFzkRohgVMbc0VVkxBVjCIuoJTxcmbgDpnGZOT2z4f62WXzP0HmAbnQzHXHHRH/0ghjfRnVL6Dr0CyTRxx/JnbYP5hkwzxR6zaZHhcSP8PtAVOxnpZEbBYdw6b88VOdAGkg6/2cU2gU+ou5WcBUCzjQIodSPp6ZAsYrrEkgRqe9uaOFNf2JQ==\",\"masterKey\":\"BWbeP7Cf/+0V9KVXh7UQqfeL49w+S7fFrw3spalYqhREFqbTsg/IPPWfw3334b1IMDrjweQd+5/hIXyouAW332GgeMyh1lzLMbyH7rc5Yth4AiYsVkpn0lfsk++nSg+fmPftTKZP67QBoxECgVPP554vH7NBrnb8gODUol9Qq8jOYq9ftAqHe9Zkg0/DfPar3yhPIn5z/gjqUJCHVh+XhqZQV2Lk75C/S/mjwbBE2qqcL2c2KO1F+y2kxW3lgNPxVii7yM9rTiTi+OhZw0rh3DLaH0DmBAJz1JCPUFKlQKyJUMPRmV1l2PpMuHwNAZPSt4K1NECQJ/ypaCyq0wrbJwJ/xTpLrfO4OI759hhcfCzVTW8LEeSu7cEdXPSa524uREZz21MZk+8MdwrPGWidGRwKuygDb45/bRC33kO9bSSXeRyTY2uWGYaliGQr3NQlqU1jQptDAIVWPxX2+11aHaKYRl4o7J8n/utPzGhE/zM+9uQScOAPvtkEgGEnsnDtq8y2DtOuwsyGcf+VMbfIF4IlZSm6DA2pRzR4B0hobNLVZpadOZUxsQ8deI66oXHUzlN0BD2RjcI45iYqLTGeLTeV+Utg2A14lq8ccnH2sSdP3HgndV4zSNqLP5xPxVIQKBcW4LqK/6wqLxJQzpGmyZCgzHtEMLig75mctTMlBhc=\"}"

1.3. В BC на стороне Партнера

  1. Расшифровать последнее сообщение bash decrypt-messages.sh id_сообщения. Id полученное на шаге 1.2.5. Будет получено сообщение согласно примеру ниже. В котором указана информация:

    • status - статус запроса на скрипт

    • source - репозиторий скрипта

    • project - идентификатор проекта

    • name - название скрипта

    • reviews - информация о проведении ревью по скрипту партнерами.

    • number - номер скрипта

      Сообщение от Провайдера партнеру:

          {
      "status": "ready4review",
      "source": {
      "repository": "24",
      "branch": "main",
      "tag": "",
      "commit": "26e73cb74cc7825a29faa84e2d03a965e5ddbde2"
      },
      "_id": "62b5cb1f145d5300307bddeb",
      "project": "62b33a63d8084c00313e9daf",
      "name": "wrong output",
      "executableFilePath": "wrong_output_file.py",
      "ownerInfo": {
      "name": "Страхование"
      },
      "originProviderInstance": "dajwbgctmzxr",
      "owner": "5bqcyjp2lqpd",
      "userCreated": "cdgwzx3zeb22",
      "reviews": [
      {
      "status": "waiting",
      "reviewer": "3rooa5jcqxbj"
      },
      {
      "status": "waiting",
      "reviewer": "dajwbgctmzxr"
      }
      ],
      "number": 226,
      "createdAt": "2022-06-24T14:33:03.611Z",
      "updatedAt": "2022-06-29T08:08:19.250Z",
      "__v": 0,
      "jobSetting": "62b5cb20145d5300307bdf53"
      }

2. Согласование скриптов

2.1. В системе на стороне Партнера

  1. Перейти в список запросов на скрипты, найти запрос, отправленный в рамках сценария и нажать “Согласовать”.

  2. Отобразится новый статус запроса “Одобрен”.

2.2. В BC на стороне Партнера

  1. Выполнить чтение BC последних сообщений с отправителем= Провайдер и получателем = Провайдер.

    Для этого выполнить: bash search-messages.sh 4 id_компании_партнера id_компании_провайдера количество_сообщений

  2. Проверить содержимое запроса. Получатель должен быть Провайдер, отправитель - Партнер.

    Пример зашифрованного сообщения со стороны партнера:

      "id": 755294,
    "message": {
    "topic": 4,
    "sender": "3rooa5jcqxbj",
    "receiver": "dajwbgctmzxr",
    "data": "{\"encryption\":\"rsa4096+aes256cbc\",\"message\":\"xCHM5Pqqp7GnSxweI8zyV3n2c+NKyEnmaMQky0ZGAPNOuBFDQts5oMo3QOpC3pA6TwgfcjdzWGzFrL5W4zqQHAxifCEO1iGlVYn42Ucpr9xZy3hEHH8mHiDFoD7lwbYN7c1YEWwPYEBzWjYgsK2Y3YPHji1fmQhv31+WA6ZQn4VLzciJJl88fBtsKl+03aEyTYtLPkVKRg98vXl/fQ3xLb16u1DhPNFrTWDce0C5WltQjXlIgkwj9KrJzMmHa+gy0+rhwIFBzmC6XGUsDZw8HZYbtZZjiMkteFP8W0iqy8zRyRCwEynC1u/uciBMnYZJIWu3XJo6PNL9ZQMtQaiOAJDZu6TUfluG2Z22XX454VHdFVZYGpV1myttej54fQy7vFfgYQpeWPX96NLSytss1uuCZpnnCVDJQIMecEz+i3H0IfeNqzjiKTrJ4bbA7Ra9QK4WHaSnK3BZ/PPRGVccJ3yNXeLozyfg7bA3c61MUh+BVsTB+VSASx/KyxQCwzyhfvQ8nYR8dGQNjITNPPyxXAsWTpS3pQKwPc53JhBtvObVdd3bnz2DmoVIwomWSwnfnOIM1cqxEVm4wKyEisLjtiwcw3t/kGTRr1R1JEPbApX3w+sWIJ1rliiOfgFMpJz0tgVkwfiq3v8AqIDwczyAKFr4l/lg/FhmBy3DSAGtsJBNoFvt4WI6Y21Bo00RXjrXFjhjjAhVOB3ZdcJWRBy9Eg==\",\"masterKey\":\"Awie9VmQLRMkW3xZ0pWAvvkR4MwVGQCQp4WLCvY6q5h5c0SyNuuf58l09m8cs3pCPo8Mt+1VirIeZedcTmP9uofVNp86K5964z/IfLBGbf3RK8L6J2W2JFTaMpg1MPmvWzzLihOMv2gryRuRKOI4j/My9vqgrwzhRNw11MP3fyTdnQ4znsKajO1USnNhnLPDbRov3Cwe8oQcm35F+goouMTtoJUh2QuvVs2CwLHBxfsXNOy16wdj5Q/6EHxsaj+zUNW+tbhJoyykG+MBlP6sRndwiOr49hened0REro0Ps913uL6v57QJrFFT+14OcjVI/jvOJKi97xoTS27tVVRYNjjT4wyUg1Bs1HjovK1v9jMiNk/ob5ISxZONJB1frHWZrAQrxbkHQwpPnyMNJ2+4QJPr53iHBX4FTQ5cZVlUqiSIofaOw6KgYe9RsV4OzNDPh6gPBETrrBuBShiwXoUzGx7BGFE9pOAqyCTwKNLJ3dC0XEXOzlI7IaIN86LUcvGWD0taxhReKMabhztB+P39F5L6tbFHrD+r7qwm88Il5EX2ImkHcATL/498fVX/XCgTC82Ay+MaEpEkPHMpgiJZCqK6Lsspplo7wM8hSSIzLPOZAshhcwUbAyRumDhfZ/DBDnliCid6VaKyV+8xTA8tPe92SQvOSMenE4ONK9Z7aU=\"}"
  3. Расшифровать сообщение может только его получатель. Поэтому далее действия выполняет Провайдер.

2.3. В системе на стороне Провайдера

  1. Перейти на инстанс Провайдера и проверить отображение статуса по запросу партнера в группе. Статус запроса должен смениться. Общий статус группы не изменится.

  2. Согласовать запрос на скрипт. Отображаемый статус скрипта изменится на Одобрен.

  3. Статус модели изменится на Одобрена.

2.4. В BC на стороне Провайдера

  1. Расшифровать сообщение Партнера по полученному идентификатору. bash decrypt-messages.sh id_сообщения (с шага 2.2.2 по согласованию скрипта)

    Пример расшифрованного сообщения:

        {
    "status": "approved",
    "source": {
    "repository": "2",
    "branch": "main",
    "tag": "",
    "commit": "e4d777a0e4c51cca83c5c89efa93b753b1c080be"
    },
    "_id": "635fca4b72d006001258f84f",
    "project": "635fb5327978d800199096b4",
    "name": "bc test",
    "executableFilePath": "main.py",
    "ownerInfo": {
    "name": "Страхование"
    },
    "originProviderInstance": "dajwbgctmzxr",
    "owner": "5bqcyjp2lqpd",
    "userCreated": "cdgwzx3zeb22",
    "reviews": [
    {
    "status": "approved",
    "reviewer": "3rooa5jcqxbj",
    "reviewedAt": "2022-10-31T14:08:28.712Z",
    "sign": "CK9Rjk2x67c0AwLD2ubng2nP8VcF/QWHF8/N7beG1yc="
    }
    ],
    "number": 371,
    "createdAt": "2022-10-31T13:14:51.228Z",
    "updatedAt": "2022-10-31T14:13:08.257Z",
    "__v": 0,
    "jobSetting": "635fca4e72d006001258f872"
    }
  2. Получить идентификатор сообщения о согласовании запроса на скрипт от Провайдера к самому себе. bash search-messages.sh topic:3 id_компании_провайдера id_компании_партнера

    В запросе на данные вместе со сменой статуса указывается токен для доступа к данным конкретного партнера. По этому токену будет происходить дальнейший запрос на данные при формировании витрины для выгрузки на виртуальную машину и запуске модели в Cleanroom.

    Зашифрованное сообщение:

      "id": 755295,
    "message": {
    "topic": 4,
    "sender": "dajwbgctmzxr",
    "receiver": "dajwbgctmzxr",
    "data": "{\"encryption\":\"rsa4096+aes256cbc\",\"message\":\"j1IdbraoDC3BufuXcjcSdorbLv7hX/lzMQeP9LFgKYhIawBOMAzCkzmedJssgUc6k7jriMCOMRFpo7NRkba3yq+Ub4wQPdhQLxYgYWYpX62sJPeiN4xRKP/th7zKwxpelbJtaaFzs6+usk5QcP/KfjfDIx2K8lgmWF0VMufAtJ3uNy35pggpUNFXfOX09dXF6Px4cGtCc02aPN6+cNcXWM8cgAy7bGA2MdTW7MH7yOr05u5+Q/CdF2xjLIYRgtFNkWISY7oi01F0TXw2e+CBznwMJjBWHuNh8QIKVSsNY1bfkjaew2ijT1pY5MG8PHWjLHMswsKa+Xd+DhCjiYirjdRQTXgJrmnKZSXddAwLgRSkjUNAaudrzxK+IKaAc8W6c2rP06wC39cW41KCy3kGajoSjk7cEjRK33zxOuRmisGdDOPJ4a1m67dXs5kRv2zVRMIez56c8fB184qaFBPVzu1QKS4lPvXbcJ+zT5SIgrUau4AlthwjtNBQIUiLbFnp3ecCZYxU9Iq1+ZdxASoM8TcV4+fs7DWswIPY+Ez4fd2ZTWAuX2vzGnY4QkHIVdA60XhBzRKWRP33nv6/37PAgfcwx533AAAWNg3RrZXduobzs1ow3Qy2kj6yqymjr22rbHawtCQbunJC5ogGt4aN11Y3n6B/f218oMRYZvgCFJp/7fHNZ9vkxgGpC9ZIZVdHqmiEsF6APqbVLTUmEz3vBtsxmwKkBrH0pufYs2SfTSGiIUlxTx66AJg+bRhUPvMkYGpEWbWbj8v9C57iOJrSW6KEet1H7faHHrBklDyInmr0AOrE+7JEgPvL+6GdGwNrRhFGZ4T8gnw7PymBeJuZl4K1aCOw0UPsdV3IsMyiToKZWF5a49OM5aPJQ4CoPTNlO+X0IxjXiHRlIfAE6E1uj+N0Wq0YHLnqItg5Vf2mniKtXG576YunDe8uomtgJ5DuAFrxid0H/xn0uxXJI7CoUw==\",\"masterKey\":\"Aq40+0HKUU0vCUX5GOiEYM7/i1ZWtinFvckYxiQyGfIFLWmEAco4LWm0ZhlsXe5K5aShNt+p0Xjb5pWG1Q3lOcwfPeIWAni0dDsOQrHTEJbf6ZV8cjB2gvYdWiLEOtKlWHtvXBAnl7jqBR98UOQEJE9MJM2XltMQ5zORgxcw5hfiL/4sHEKWcej+Qm0G0p7V+FUGKbhp+f9XndiPQ7dYJpuV6TJPUqAnfa2DLjjFoq+sVc2Fc+H/qGkVvtjjqqerdg31zJ37za7o/nT926lJsfiKahv2Ww1+ncUdheGAjRwZp2qjp0ZtE+2FLjv9DZy3vCq3/XzEDQCen/IuF7J5Yx1jQbzr4vVMU4oeXBjbwz4DMZCOLfkkUGm3ToLDR9a17CJwzn4IxLnI+LkWRLh0g+520FkssUn66Ys+7Q727ibxD64RLJj+U6nAttd7dTm7+n1e0wA083OEog8N+fqIf7kKrlfcSuJh7b2FkbTJIMv6CbdwkCFkWGE1y4PHnxZw6RkSIfC9jPjlTlM2OM2ntHBqyPMCvl9bJYxJISX4C3S8VJ7hb3Y2Oye015kiOF6es5R/zalTdbo1Cr8QSxji/JeBsUV770IYDkhlLLAb9ReDDaqUDY04/EVzIiIsthExCiCHw25x0Fuk3NbnlF65vCOUJ/CVrelSAPSDQFkP1iM=\"}"
  3. Расшифровать сообщение bash decrypt-messages.sh id_сообщения

    Формат ответа:

      {
    "status": "ready4review",
    "source": {
    "repository": "2",
    "branch": "main",
    "tag": "",
    "commit": "e4d777a0e4c51cca83c5c89efa93b753b1c080be"
    },
    "_id": "635fca4b72d006001258f84f",
    "project": "635fb5327978d800199096b4",
    "name": "bc test",
    "executableFilePath": "main.py",
    "ownerInfo": {
    "name": "Страхование"
    },
    "originProviderInstance": "dajwbgctmzxr",
    "owner": "5bqcyjp2lqpd",
    "userCreated": "cdgwzx3zeb22",
    "reviews": [
    {
    "status": "approved",
    "reviewer": "dajwbgctmzxr",
    "reviewedAt": "2022-10-31T14:12:55.862Z",
    "sign": "+UDK/Lc0RioDWOS6CdyuHiqQ5Big86VDr8NsNylfUfo=",
    "reason": null,
    "reviewedBy": "cdgwzx3zeb22"
    }
    ],
    "number": 372,
    "createdAt": "2022-10-31T13:14:51.228Z",
    "updatedAt": "2022-10-31T14:12:55.865Z",
    "__v": 0,
    "jobSetting": "635fca4e72d006001258f872"
    }

Сообщения с обеих сторон получены. Статус модели перейдет в "Одобрена".