Merge branch 'dev-fastapi' into 'dev-fastapi'

demo

See merge request UnicodeLabs/OpenRPA!1
prd
Alex Kuralesov 2 years ago
commit f3ef7145cb

@ -0,0 +1,3 @@
Ник;Полное имя;Логика;Язык;Время(мин);Решение
@floidd;Влад Клычков;5;9;0;Отказ
@floidd;Влад Клычков;8;8;0;Отказ
1 Ник Полное имя Логика Язык Время(мин) Решение
2 @floidd Влад Клычков 5 9 0 Отказ
3 @floidd Влад Клычков 8 8 0 Отказ

@ -0,0 +1,39 @@
Button {
color: white;
background: rgb(82, 105, 95);
border-radius: 5px;
border-color: #FFFFFF #FFFFFF #FFFFFF;
border-width: 2px 2px;
padding: .5em 2em;
cursor: pointer;
}
Button:hover { background: rgb(53, 167, 110); }
i#first {
position: absolute;
top: 280px;
left: 135px;
}
i#second {
position: absolute;
top: 340px;
left: 135px;
}
h4 {
width: 100%;
text-align: center;
border-bottom: 5px solid rgb(82, 105, 95);
line-height: 0.1em;
margin: 10px 0 20px;
}
h4 span {
background:#fff;
padding:0 7px;
}

@ -0,0 +1,74 @@
$('.ui.selection.dropdown')
.dropdown("clear")
;
var switchFlag = "1,";
document.getElementById("Vacancy1Status").innerHTML = "Робот на вакансию 1 оффлайн"
document.getElementById("Vacancy2Status").innerHTML = "Робот на вакансию 2 оффлайн"
var btn1 = document.createElement("Button")
btn1.innerHTML = "Старт"
btn1.onclick = function() {
if (switchFlag == "1,"){
document.getElementById("Vacancy1Status").innerHTML = "Робот на вакансию 1 онлайн"
}
else {
document.getElementById("Vacancy2Status").innerHTML = "Робот на вакансию 2 онлайн"
}
}
var btn2 = document.createElement("Button")
btn2.innerHTML = "Стоп"
btn2.onclick = function() {
if (switchFlag == "1,"){
document.getElementById("Vacancy1Status").innerHTML = "Робот на вакансию 1 оффлайн"
}
else {
document.getElementById("Vacancy2Status").innerHTML = "Робот на вакансию 2 оффлайн"
}
}
function get_data(i)
{
var link = document.createElement('a');
if (i == 'question') {
link.setAttribute('href', '/HR_officer01/questions');
link.setAttribute('download', 'Questions.csv');
link.click();
} else if (i == "results") {
link.setAttribute('href', '/HR_officer01/results');
link.setAttribute('download', 'All_results.csv');
link.click();
} else if (i == "logs"){
link.setAttribute('href', '/HR_officer01/logs');
link.setAttribute('download', 'log.txt');
link.click();
}
return false;
}
function bot_change() {
switchFlag = $('.ui.selection.dropdown').dropdown("get value")
if ($('.ui.selection.dropdown').dropdown("get value") == "1,") {
document.getElementById("conteiner").appendChild(btn1)
document.getElementById("conteiner").appendChild(btn2)
}
else if ($('.ui.selection.dropdown').dropdown("get value") == "0,"){
document.getElementById("conteiner").appendChild(btn1)
document.getElementById("conteiner").appendChild(btn2)
}
}

@ -0,0 +1,31 @@
Вопрос;Ответ1 ;Ответ2;Ответ3;Ответ4;Правильный ответ
Шмурдик боится как мышей, так и тараканов;Шмурдик не боится тараканов;Шмурдик боится мышей;Шмурдик боится мышей больше, чем тараканов, но и тараканов боится тоже;;2
Известно, что грымзик обязательно или полосат, или рогат, или то и другое вместе;Грымзик не может быть однотонным и безрогим одновременно;Грымзик не может быть безрогим;Грымзик не может быть полосатым и безрогим одновременно;;1
Если запырку отравить, то она сразу начнет пускать пузыри;Если запырка пускает пузыри, то она была отравлена;Если запырку не отравить, то она не будет пускать пузыри;Если запырка не пускает пузыри, то она не отравлена;;3
Все охлотушки умеют играть в шашки;Не бывает охлотушек, которые не умеют играть в шашки;Все, кто умеет играть в шашки, являются охлотушками;Не бывает охлотушек, которые умеют играть в шашки;;1
Дубараторы бывают либо хорошими, либо плохими\. Неправда, что этот дубаратор не плохой;Этот дубаратор хороший;Этот дубаратор средненький;Этот дубаратор плохой;;3
В природе обнаружено более десятка тиалей\. Все обнаруженные тиали сплошь красного цвета;По крайней мере некоторые из тиалей красного цвета;По крайней мере некоторые из тиалей зеленые;Некоторые тиали \(из тех, что уже обнаружены\) могут оказаться не красными;;1
Существуют шакалы с больной мухропендией\. Мухропендия может быть, или больной, или здоровой;Не всякий шакал может похвастаться здоровой мухропендией;У некоторых шакалов мухропендия нездоровая;Существуют шакалы со здоровой мухропендией;;2
Неправда, что наша тумельница большая и круглая;Наша тумельница маленькая и некруглая;Наша тумельница маленькая, или некруглая, или то и другое вместе;Наша тумельница маленькая, или некруглая, но не то и другое вместе;;2
Джон всегда либо урдит, либо мурлит;Джон иногда урдит и мурлит;Джон иногда урдит, иногда мурлит, а иногда не мурлит;Джон никогда не занимается одновременно и урдением, и мурлением;;3
Журналисты наврали, что бздыш болотный безграмотен и нахален;На самом деле бздыш болотный образован и тактичен;На самом деле бздыш болотный безграмотен, но не нахален;Те журналисты солгали;;3
Если тряхнуть перпелькой, то немедленно начнется стрельба\. За последний час стрельбы не было;В течении последнего часа перпелькой не трясли;В течении последнего часа перпелькой трясли;А нечего было трясти чем попало;;1
Огромный бутряк напугал деревенского старосту;Старосте приснился ночной кошмар;Староста попробовал некачественной выпивки;Староста был напуган;;3
Если почесать угубку за ухом, он начнет довольно шипеть\. Если угубок довольно зашипит, то молоко поблизости скиснет;Если не чесать угубка за ухом, то молоко поблизости не скиснет;Если почесать угубка за ухом, молоко поблизости скиснет;Молоко вдалеке никогда не скисает от чесания угубков;;2
Всех, кто громко обуривает, обязательно съедают\. Все ухмырки постоянно громко обуривают;Все, кто громко обуривает \- ухмырки;Всех ухмырков обязательно съедают;Некоторых ухмырков не съедают;;2
В реках близ Тимуграда обитает и вобла, и щука;В реках близ Тимуграда не бывает воблы;В реках близ Тимуграда обитает щука;В реках близ Тимуграда обитает только вобла и щука;;2
Выберите верное утверждение;Бизнес\-процесс ничем не отличается от алгоритма;Бизнес\-процесс является агрегацией алгоритмов;Алгоритм является агерацией бизнес\-процессов;;2
Выберите верное утверждение;Задача и цель \- это синонимы;"Задача, чтобы задавать\; Цель, чтобы целиться";Цель \- это итоговая метрика, задача \- это действие, которое направлено на достижение цели;;3
Как правильно произносится\?;пАйтон;пайтОн;питОн;пифОн;1
Что является операндом в выражении\: x \= 6 \* 8 \/ y;x,y,6,8;\=,\*,\/;6,8,\*;6,8,y,\=;1
Как определяется working directory при запуске процесса\?;По расположению запускаемого файла;По местонахождению папки с исходными кодами;По текущему установленному пути оболочки Shell\/cmd, из под которой происходит запуск;;3
Список является массивом\?;Да;Нет;;;2
Какое отличие между str и bytes\?;Отличий нет \- типы являются синонимами;Str является декодированным представлением bytes;Str является енкодированным представлением bytes;;2
Какая операция в GIT отвечает за скачивание перечня ревизий с сервера\?;git push;git pull;git fetch;;3
Какое отличие между многопроцессными и многопроцессорными вычислениями\?;Отличий нет;В многопроцессных вычислениях может использоваться только 1 процессор, а в многопроцессорных вычислениях всегда может использоваться от 2\-х и более процессоров;В многопроцессорных вычислениях может использоваться только 1 процессор, а в многопроцессных вычислениях может использоваться от 2\-х и более процессоров;;2
Что является эквивалентом выражения\: \(X and Y\) or \(Z and Y\);not X and not Y and not Z;\(not X or not Y\) and \(not Z or not Y\);\(X and Y\) or \(X and Y\);not \(not X or not Y\) or not \(not Z or not Y\);4
Какое число в десятичной системе счисления является образом числа 11 в пятиричной системе счисления\?;3;11;6;7;3
Укажите корректное определение для SQL иснтрукции: SELECT \* FROM T1 INNER JOIN T2 ON T1\.ID \=\= T2\.T1\_ID;Выбрать все строки из таблицы T1;Выбрать все строки из таблицы T1, по связке с которыми имеется строка в T2;Выбрать все строки из таблицы T1 и показать строки из таблицы T2, если по ним имеется связь с T1;Выбрать все строки из таблицы T2 и показать строки из таблицы T1, если по ним имеется связь с T2;2
Что делает команда SQL\: DELETE\?;Удаляет таблицу из БД;Чистит строки внутри таблицы;;;2
Чем отличается относительный путь от абсолютного\?;Нет разницы \- оба пути указывают на один и тот же файл;Абсолютный путь в любом окружении будет указывать на один и тот же файл\. Относительный \- нет;Относительный путь в любом окружении будет указывать на один и тот же файл\. Абсолютный \- нет;;2
Можно ли из ветки except повторно сгенерировать то же самое исключение exception \(тот же самый экземпляр\)\?;Нет \- исключение уже было сформировано, повторно его вызвать будет невозможно;Да \- исключение уже было сформировано, но его можно будет вызвать повторно;Наверное \- не понимаю как работает try \.\. Except;;2
1 Вопрос Ответ1 Ответ2 Ответ3 Ответ4 Правильный ответ
2 Шмурдик боится как мышей, так и тараканов Шмурдик не боится тараканов Шмурдик боится мышей Шмурдик боится мышей больше, чем тараканов, но и тараканов боится тоже 2
3 Известно, что грымзик обязательно или полосат, или рогат, или то и другое вместе Грымзик не может быть однотонным и безрогим одновременно Грымзик не может быть безрогим Грымзик не может быть полосатым и безрогим одновременно 1
4 Если запырку отравить, то она сразу начнет пускать пузыри Если запырка пускает пузыри, то она была отравлена Если запырку не отравить, то она не будет пускать пузыри Если запырка не пускает пузыри, то она не отравлена 3
5 Все охлотушки умеют играть в шашки Не бывает охлотушек, которые не умеют играть в шашки Все, кто умеет играть в шашки, являются охлотушками Не бывает охлотушек, которые умеют играть в шашки 1
6 Дубараторы бывают либо хорошими, либо плохими\. Неправда, что этот дубаратор не плохой Этот дубаратор хороший Этот дубаратор средненький Этот дубаратор плохой 3
7 В природе обнаружено более десятка тиалей\. Все обнаруженные тиали сплошь красного цвета По крайней мере некоторые из тиалей красного цвета По крайней мере некоторые из тиалей зеленые Некоторые тиали \(из тех, что уже обнаружены\) могут оказаться не красными 1
8 Существуют шакалы с больной мухропендией\. Мухропендия может быть, или больной, или здоровой Не всякий шакал может похвастаться здоровой мухропендией У некоторых шакалов мухропендия нездоровая Существуют шакалы со здоровой мухропендией 2
9 Неправда, что наша тумельница большая и круглая Наша тумельница маленькая и некруглая Наша тумельница маленькая, или некруглая, или то и другое вместе Наша тумельница маленькая, или некруглая, но не то и другое вместе 2
10 Джон всегда либо урдит, либо мурлит Джон иногда урдит и мурлит Джон иногда урдит, иногда мурлит, а иногда не мурлит Джон никогда не занимается одновременно и урдением, и мурлением 3
11 Журналисты наврали, что бздыш болотный безграмотен и нахален На самом деле бздыш болотный образован и тактичен На самом деле бздыш болотный безграмотен, но не нахален Те журналисты солгали 3
12 Если тряхнуть перпелькой, то немедленно начнется стрельба\. За последний час стрельбы не было В течении последнего часа перпелькой не трясли В течении последнего часа перпелькой трясли А нечего было трясти чем попало 1
13 Огромный бутряк напугал деревенского старосту Старосте приснился ночной кошмар Староста попробовал некачественной выпивки Староста был напуган 3
14 Если почесать угубку за ухом, он начнет довольно шипеть\. Если угубок довольно зашипит, то молоко поблизости скиснет Если не чесать угубка за ухом, то молоко поблизости не скиснет Если почесать угубка за ухом, молоко поблизости скиснет Молоко вдалеке никогда не скисает от чесания угубков 2
15 Всех, кто громко обуривает, обязательно съедают\. Все ухмырки постоянно громко обуривают Все, кто громко обуривает \- ухмырки Всех ухмырков обязательно съедают Некоторых ухмырков не съедают 2
16 В реках близ Тимуграда обитает и вобла, и щука В реках близ Тимуграда не бывает воблы В реках близ Тимуграда обитает щука В реках близ Тимуграда обитает только вобла и щука 2
17 Выберите верное утверждение Бизнес\-процесс ничем не отличается от алгоритма Бизнес\-процесс является агрегацией алгоритмов Алгоритм является агерацией бизнес\-процессов 2
18 Выберите верное утверждение Задача и цель \- это синонимы Задача, чтобы задавать\; Цель, чтобы целиться Цель \- это итоговая метрика, задача \- это действие, которое направлено на достижение цели 3
19 Как правильно произносится\? пАйтон пайтОн питОн пифОн 1
20 Что является операндом в выражении\: x \= 6 \* 8 \/ y x,y,6,8 \=,\*,\/ 6,8,\* 6,8,y,\= 1
21 Как определяется working directory при запуске процесса\? По расположению запускаемого файла По местонахождению папки с исходными кодами По текущему установленному пути оболочки Shell\/cmd, из под которой происходит запуск 3
22 Список является массивом\? Да Нет 2
23 Какое отличие между str и bytes\? Отличий нет \- типы являются синонимами Str является декодированным представлением bytes Str является енкодированным представлением bytes 2
24 Какая операция в GIT отвечает за скачивание перечня ревизий с сервера\? git push git pull git fetch 3
25 Какое отличие между многопроцессными и многопроцессорными вычислениями\? Отличий нет В многопроцессных вычислениях может использоваться только 1 процессор, а в многопроцессорных вычислениях всегда может использоваться от 2\-х и более процессоров В многопроцессорных вычислениях может использоваться только 1 процессор, а в многопроцессных вычислениях может использоваться от 2\-х и более процессоров 2
26 Что является эквивалентом выражения\: \(X and Y\) or \(Z and Y\) not X and not Y and not Z \(not X or not Y\) and \(not Z or not Y\) \(X and Y\) or \(X and Y\) not \(not X or not Y\) or not \(not Z or not Y\) 4
27 Какое число в десятичной системе счисления является образом числа 11 в пятиричной системе счисления\? 3 11 6 7 3
28 Укажите корректное определение для SQL иснтрукции: SELECT \* FROM T1 INNER JOIN T2 ON T1\.ID \=\= T2\.T1\_ID Выбрать все строки из таблицы T1 Выбрать все строки из таблицы T1, по связке с которыми имеется строка в T2 Выбрать все строки из таблицы T1 и показать строки из таблицы T2, если по ним имеется связь с T1 Выбрать все строки из таблицы T2 и показать строки из таблицы T1, если по ним имеется связь с T2 2
29 Что делает команда SQL\: DELETE\? Удаляет таблицу из БД Чистит строки внутри таблицы 2
30 Чем отличается относительный путь от абсолютного\? Нет разницы \- оба пути указывают на один и тот же файл Абсолютный путь в любом окружении будет указывать на один и тот же файл\. Относительный \- нет Относительный путь в любом окружении будет указывать на один и тот же файл\. Абсолютный \- нет 2
31 Можно ли из ветки except повторно сгенерировать то же самое исключение exception \(тот же самый экземпляр\)\? Нет \- исключение уже было сформировано, повторно его вызвать будет невозможно Да \- исключение уже было сформировано, но его можно будет вызвать повторно Наверное \- не понимаю как работает try \.\. Except 2

@ -0,0 +1,171 @@
splitter1 = 'Рабочий процесс'
splitter2 = 'Пример доступных данных'
splitter3 = 'Пример запуска роботов'
title = 'Робот-кадровик'
introHeader = 'Применение:'
introText = 'Робот-кадровик помогает проводить отбор кандидатов'
workflowHeader1 = 'Размещение вакансии'
workflowDescription1 = 'Выполняет человек'
workflowHint1 = 'Размещение вакансии в telegram/HH.ru'
workflowHeader2 = 'Тестирование'
workflowDescription2 = 'Выполняет робот'
workflowHint2 = 'Автоматическое тестирования кандидатов'
workflowHeader3 = 'Подведение итогов'
workflowDescription3 = 'Выполняет робот'
workflowHint3 = 'Автоматическое подведение итогов тестирования'
workflowHeader4 = 'Личное собеседование'
workflowDescription4 = 'Выполняет человек'
workflowHint4 = 'Собеседование с лучшими кандидатами'
workflowHeader5 = 'Оформление будущего сотрудника'
workflowDescription5 = 'Выполняет человек'
workflowHint5 = 'Подписание трудового договора'
questionHeaderMsg = 'Вопросы'
questionDescriptionMsg = 'Список вопросов для первого этапа'
resultHeaderMsg = 'Результаты'
resultDescriptionMsg = 'Сводка по всем рекрутам'
logHeaderMsg = 'Лог'
logDescriptionMsg = 'Лог за текущие сутки'
dropdownInit = 'Выберите робота...'
dropdownRobot1 = 'Робот на вакансию 1'
dropdownRobot2 = 'Робот на вакансию 2'
html = f'''<!doctype html>
<html lang="en">
<head>
<title> Test </title>
<link rel="stylesheet" href="/HR_officer01/styles">
</head>
<body>
<div class="card" style="width:450px;" id="card1">
<div class="content">
<center><h1>{title}</h1></center><br>
<div class="ui message">
<div class="header">{introHeader}</div>
<p>{introText}</p>
</div>
<h4><span>{splitter1}</span></h4>
<div class="ui relaxed divided list">
<div class="item">
<i class="user icon"></i>
<div class="content">
<div class="header" data-tooltip="{workflowHint1}">{workflowHeader1}</div>
<div class="description">{workflowDescription1}</div>
</div>
</div>
<div class="item">
<i class="cog icon"></i>
<div class="content">
<div class="header" data-tooltip="{workflowHint2}">{workflowHeader2}</div>
<div class="description">{workflowDescription2}</div>
</div>
</div>
<div class="item">
<i class="cog icon"></i>
<div class="content">
<div class="header" data-tooltip="{workflowHint3}">{workflowHeader3}</div>
<div class="description">{workflowDescription3}</div>
</div>
</div>
<div class="item">
<i class="user icon"></i>
<div class="content">
<div class="header" data-tooltip="{workflowHint4}">{workflowHeader4}</div>
<div class="description">{workflowDescription4}</div>
</div>
</div>
<div class="item">
<i class="user icon"></i>
<div class="content">
<div class="header" data-tooltip="{workflowHint5}">{workflowHeader5}</div>
<div class="description">{workflowDescription5}</div>
</div>
</div>
</div>
<h4><span>{splitter2}</span></h4>
<div class="ui list">
<div class="item">
<i class="file icon"></i>
<div class="content">
<a class="header" onclick="get_data('question')">{questionHeaderMsg}</a>
<div class="description">{questionDescriptionMsg}</div>
</div>
</div>
<div class="item">
<i class="adress book icon"></i>
<div class="content">
<a class="header" onclick="get_data('results')">{resultHeaderMsg}</a>
<div class="description">{resultDescriptionMsg}</div>
</div>
</div>
<div class="item">
<i class="file alternate icon"></i>
<div class="content">
<a class="header" onclick="get_data('logs')">{logHeaderMsg}</a>
<div class="description">{logDescriptionMsg}</div>
</div>
</div>
</div>
<h4><span>{splitter3}</span></h4>
<div class="ui list">
<div class="item">
<i class="telegram icon"></i>
<div id="Vacancy1Status" class="content"></div>
</div>
<div class="item">
<i class="telegram icon"></i>
<div id="Vacancy2Status" class="content"></div>
</div>
</div>
<div class="ui selection dropdown" onchange="bot_change()">
<input type="hidden" name="bot">
<i class="dropdown icon"></i>
<div class="default text">{dropdownInit}</div>
<div class="menu">
<div class="item" data-value="1">{dropdownRobot1}</div>
<div class="item" data-value="0">{dropdownRobot2}</div>
</div>
</div>
<p><div id="conteiner"></div></p>
</div>
</div>
<script src="/HR_officer01/scripts"></script>
<script type="text/javascript" src="https://viewer.diagrams.net/js/viewer-static.min.js"></script>
</body>
</html>'''
with open('index.html', 'w', encoding='UTF-8') as file:
file.write(html)

@ -0,0 +1,125 @@
<!doctype html>
<html lang="en">
<head>
<title> Test </title>
<link rel="stylesheet" href="/HR_officer01/styles">
</head>
<body>
<div class="card" style="width:450px;" id="card1">
<div class="content">
<center><h1>Робот-кадровик</h1></center><br>
<div class="ui message">
<div class="header">Применение:</div>
<p>Робот-кадровик помогает проводить отбор кандидатов</p>
</div>
<h4><span>Рабочий процесс</span></h4>
<div class="ui relaxed divided list">
<div class="item">
<i class="user icon"></i>
<div class="content">
<div class="header" data-tooltip="Размещение вакансии в telegram/HH.ru">Размещение вакансии</div>
<div class="description">Выполняет человек</div>
</div>
</div>
<div class="item">
<i class="cog icon"></i>
<div class="content">
<div class="header" data-tooltip="Автоматическое тестирования кандидатов">Тестирование</div>
<div class="description">Выполняет робот</div>
</div>
</div>
<div class="item">
<i class="cog icon"></i>
<div class="content">
<div class="header" data-tooltip="Автоматическое подведение итогов тестирования">Подведение итогов</div>
<div class="description">Выполняет робот</div>
</div>
</div>
<div class="item">
<i class="user icon"></i>
<div class="content">
<div class="header" data-tooltip="Собеседование с лучшими кандидатами">Личное собеседование</div>
<div class="description">Выполняет человек</div>
</div>
</div>
<div class="item">
<i class="user icon"></i>
<div class="content">
<div class="header" data-tooltip="Подписание трудового договора">Оформление будущего сотрудника</div>
<div class="description">Выполняет человек</div>
</div>
</div>
</div>
<h4><span>Пример доступных данных</span></h4>
<div class="ui list">
<div class="item">
<i class="file icon"></i>
<div class="content">
<a class="header" onclick="get_data('question')">Вопросы</a>
<div class="description">Список вопросов для первого этапа</div>
</div>
</div>
<div class="item">
<i class="adress book icon"></i>
<div class="content">
<a class="header" onclick="get_data('results')">Результаты</a>
<div class="description">Сводка по всем рекрутам</div>
</div>
</div>
<div class="item">
<i class="file alternate icon"></i>
<div class="content">
<a class="header" onclick="get_data('logs')">Лог</a>
<div class="description">Лог за текущие сутки</div>
</div>
</div>
</div>
<h4><span>Пример запуска роботов</span></h4>
<div class="ui list">
<div class="item">
<i class="telegram icon"></i>
<div id="Vacancy1Status" class="content"></div>
</div>
<div class="item">
<i class="telegram icon"></i>
<div id="Vacancy2Status" class="content"></div>
</div>
</div>
<div class="ui selection dropdown" onchange="bot_change()">
<input type="hidden" name="bot">
<i class="dropdown icon"></i>
<div class="default text">Выберите робота...</div>
<div class="menu">
<div class="item" data-value="1">Робот на вакансию 1</div>
<div class="item" data-value="0">робот на вакансию 2</div>
</div>
</div>
<p><div id="conteiner"></div></p>
</div>
</div>
<script src="/HR_officer01/scripts"></script>
<script type="text/javascript" src="https://viewer.diagrams.net/js/viewer-static.min.js"></script>
</body>
</html>

@ -0,0 +1,184 @@
splitter1 = 'Рабочий процесс'
splitter2 = 'Окно настройки робота'
title = 'Робот-казначей'
introHeader = 'Применение:'
introText = 'Робот-казначей выполняет выгрузку банковских выписок'
workflowHeader1 = 'Авторизация в клиент-банке'
workflowDescription1 = 'Выполняет робот'
workflowHint1 = 'Авторизация на сайте банка'
workflowHeader2 = 'Выгрузка выписок'
workflowDescription2 = 'Выполняет робот'
workflowHint2 = 'Скачивание выписок с сайта банка'
workflowHeader3 = 'Перенаправление выписок'
workflowDescription3 = 'Выполняет робот'
workflowHint3 = 'Например, размещение в сетевой папке'
dropBankTitle = 'Выберите банк...'
dropBank1 = 'Сбербанк'
dropBank2 = 'ВТБ'
dropBank3= 'Альфа-банк'
dropBankAccountTitle = 'Выберите счет'
dropBankAccount1 = 'Счет 1'
dropBankAccount2 = 'Счет 2'
dropBankAccount3 = 'Счет 3'
dropBankAccountAll = 'Все'
checkboxPerTitle = 'Период:'
checkboxPer1 = 'За день'
checkboxPer2 = 'За месяц'
checkboxFormTitle = ''
checkboxForm1 = 'PDF'
checkboxForm2 = '1C'
checkboxForm3 = 'WORD'
checkboxForm4 = 'EXCEL'
emailTitle = 'Укажите почту (необязательно):'
emailWindow = 'example@gmail.ru'
btnDownload = 'Скачать'
btnEmail = 'Отправить'
html = f'''<!doctype html>
<html lang="en">
<head>
<title> Treasurer </title>
</head>
<body>
<div class="card" style="width:450px;" id="card1">
<div class="content">
<center><h1>{title}</h1></center><br>
<div class="ui message">
<div class="header">{introHeader}</div>
<p>{introText}</p>
</div>
<h4><span>{splitter1}</span></h4>
<div class="ui relaxed divided list">
<div class="item">
<i class="cog icon"></i>
<div class="content">
<div class="header" data-tooltip="{workflowHint1}">{workflowHeader1}</div>
<div class="description">{workflowDescription1}</div>
</div>
</div>
<div class="item">
<i class="cog icon"></i>
<div class="content">
<div class="header" data-tooltip="{workflowHint2}">{workflowHeader2}</div>
<div class="description">{workflowDescription2}</div>
</div>
</div>
<div class="item">
<i class="cog icon"></i>
<div class="content">
<div class="header" data-tooltip="{workflowHint3}">{workflowHeader3}</div>
<div class="description">{workflowDescription3}</div>
</div>
</div>
</div>
<h4><span>{splitter2}</span></h4>
<div class="ui selection dropdown">
<input type="hidden" name="bank">
<i class="dropdown icon"></i>
<div class="default text">{dropBankTitle}</div>
<div class="menu">
<div class="item" data-value="2">{dropBank1}</div>
<div class="item" data-value="1">{dropBank2}</div>
<div class="item" data-value="0">{dropBank3}</div>
</div>
</div><br><br>
<select class="ui fluid search dropdown" multiple="">
<option value="">{dropBankAccountTitle}</option>
<option value="All">{dropBankAccountAll}</option>
<option value="Ch1">{dropBankAccount1}</option>
<option value="Ch2">{dropBankAccount2}</option>
<option value="Ch3">{dropBankAccount3}</option>
</select><br>
<div class="ui form">
<div class="inline fields">
<label>{checkboxPerTitle}</label>
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="time">
<label>{checkboxPer1}</label>
</div>
</div>
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="time">
<label>{checkboxPer2}</label>
</div>
</div>
</div>
</div>
<div class="ui form">
<div class="inline fields">
<label>{checkboxFormTitle}</label>
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="format">
<label>{checkboxForm1}</label>
</div>
</div>
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="format">
<label>{checkboxForm2}</label>
</div>
</div>
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="format">
<label>{checkboxForm3}</label>
</div>
</div>
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="format">
<label>{checkboxForm4}</label>
</div>
</div>
</div>
</div>
<div><b>{emailTitle}</b></div>
<p><div class="ui input focus">
<input type="text" placeholder="{emailWindow}">
</div></p>
<button class="ui right labeled icon button"><i class="download icon"></i> {btnDownload} </button>
<button class="ui right labeled icon button"><i class="envelope icon"></i> {btnEmail} </button>
</div>
</div>
<script src="/Treasurer01/scripts"></script>
</body>
</html>'''
with open('index.html', 'w', encoding='UTF-8') as file:
file.write(html)

@ -0,0 +1,135 @@
<!doctype html>
<html lang="en">
<head>
<title> Treasurer </title>
</head>
<body>
<div class="card" style="width:450px;" id="card1">
<div class="content">
<center><h1>Робот-казначей</h1></center><br>
<div class="ui message">
<div class="header">Применение:</div>
<p>Робот-казначей выполняет выгрузку банковских выписок</p>
</div>
<h4><span>Рабочий процесс</span></h4>
<div class="ui relaxed divided list">
<div class="item">
<i class="cog icon"></i>
<div class="content">
<div class="header" data-tooltip="Авторизация на сайте банка">Авторизация в клиент-банке</div>
<div class="description">Выполняет робот</div>
</div>
</div>
<div class="item">
<i class="cog icon"></i>
<div class="content">
<div class="header" data-tooltip="Скачивание выписок с сайта банка">Выгрузка выписок</div>
<div class="description">Выполняет робот</div>
</div>
</div>
<div class="item">
<i class="cog icon"></i>
<div class="content">
<div class="header" data-tooltip="Например, размещение в сетевой папке">Перенаправление выписок</div>
<div class="description">Выполняет робот</div>
</div>
</div>
</div>
<h4><span>Окно настройки робота</span></h4>
<div class="ui selection dropdown">
<input type="hidden" name="bank">
<i class="dropdown icon"></i>
<div class="default text">Выберите банк...</div>
<div class="menu">
<div class="item" data-value="2">Сбербанк</div>
<div class="item" data-value="1">ВТБ</div>
<div class="item" data-value="0">Альфа-банк</div>
</div>
</div><br><br>
<select class="ui fluid search dropdown" multiple="">
<option value="">Выберите счет</option>
<option value="All">Все</option>
<option value="Ch1">Счет 1</option>
<option value="Ch2">Счет 2</option>
<option value="Ch3">Счет 3</option>
</select><br>
<div class="ui form">
<div class="inline fields">
<label>Период:</label>
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="time">
<label>За день</label>
</div>
</div>
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="time">
<label>За месяц</label>
</div>
</div>
</div>
</div>
<div class="ui form">
<div class="inline fields">
<label></label>
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="format">
<label>PDF</label>
</div>
</div>
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="format">
<label>1C</label>
</div>
</div>
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="format">
<label>WORD</label>
</div>
</div>
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="format">
<label>EXCEL</label>
</div>
</div>
</div>
</div>
<div><b>Укажите почту (необязательно):</b></div>
<p><div class="ui input focus">
<input type="text" placeholder="example@gmail.ru">
</div></p>
<button class="ui right labeled icon button"><i class="download icon"></i> Скачать </button>
<button class="ui right labeled icon button"><i class="envelope icon"></i> Отправить </button>
</div>
</div>
<script src="/Treasurer01/scripts"></script>
</body>
</html>

@ -0,0 +1,7 @@
$('.ui.dropdown')
.dropdown('clear')
;
$('.ui.dropdown')
.dropdown('clear')
;

@ -17,6 +17,35 @@ import threading
from fastapi import Depends
from fastapi.responses import PlainTextResponse
from fastapi.responses import FileResponse
# Подключени файлов связанных с роботом-кадровиком01
@app.get(path="/HR_officer01/questions",tags=["HR_officer01"])
def get_file():
return FileResponse(CrossOS.PathStr("Demo\\HR_officer01\\Questions.csv"))
@app.get(path="/HR_officer01/results",tags=["HR_officer01"])
def get_file():
return FileResponse(CrossOS.PathStr("Demo\\HR_officer01\\All_results.csv"))
@app.get(path="/HR_officer01/logs",tags=["HR_officer01"])
def get_file():
return FileResponse(CrossOS.PathStr("Demo\\HR_officer01\\log.txt"))
@app.get(path="/HR_officer01/scripts",tags=["HR_officer01"])
def get_file():
return FileResponse(CrossOS.PathStr("Demo\\HR_officer01\\HR_officer01.js"))
@app.get(path="/HR_officer01/styles",tags=["HR_officer01"])
def get_file():
return FileResponse(CrossOS.PathStr("Demo\\HR_officer01\\HR_officer01.css"))
# Подключени файлов связанных с роботом-казначеем01
@app.get(path="/Treasurer01/scripts",tags=["Treasurer01"])
def get_file():
return FileResponse("Demo\\Treasurer01\\Treasurer01.js")
# Пример создания функции на сервере (FASTAPI) /test/threads
@app.get(path="/test/threads",tags=["Test"],response_class=PlainTextResponse)
@ -42,7 +71,7 @@ else:
Orchestrator.UACUpdate(inGSettings=gSettings, inADLoginStr="ND", inADStr="", inADIsDefaultBool=True, inURLList=[], inRoleHierarchyAllowedDict=lUACClientDict)
Orchestrator.UACUpdate(inGSettings=gSettings, inADLoginStr="rpa00", inADStr="", inADIsDefaultBool=True, inURLList=[], inRoleHierarchyAllowedDict=lUACClientDict)
# TEST Add User IMaslov - Add Login IMaslov to superuser of the Orchestrator
Orchestrator.UACUpdate(inGSettings=gSettings, inADLoginStr="IMaslov", inADStr="", inADIsDefaultBool=True, inURLList=[])
Orchestrator.UACUpdate(inGSettings=gSettings, inADLoginStr="VLADICK", inADStr="", inADIsDefaultBool=True, inURLList=[])
# TEST Add Supertoken for the all access between robots
Orchestrator.UACSuperTokenUpdate(inGSettings=gSettings, inSuperTokenStr="1992-04-03-0643-ru-b4ff-openrpa52zzz")
# Add first interface!
@ -54,6 +83,10 @@ else:
Orchestrator.OrchestratorSessionRestore(inGSettings=gSettings)
# Autoinit control panels starts with CP_
lPyModules = Orchestrator.OrchestratorPySearchInit(inGlobPatternStr="ControlPanel\\CP_*.py", inDefStr="SettingsUpdate", inDefArgNameGSettingsStr="inGSettings", inAsyncInitBool=True)
lCPManager = Orchestrator.Managers.ControlPanel(inControlPanelNameStr="HR_officer01ControlPanel",
inRefreshHTMLJinja2TemplatePathStr=CrossOS.PathStr("D:\\For work\\RPA\\OpenRPA\\Orchestrator\\Demo\\HR_officer01\\index.html"), inJinja2TemplateRefreshBool = True)
lCPManager = Orchestrator.Managers.ControlPanel(inControlPanelNameStr="Treasurer01ControlPanel",
inRefreshHTMLJinja2TemplatePathStr=CrossOS.PathStr("D:\\For work\\RPA\\OpenRPA\\Orchestrator\\Demo\\Treasurer01\\index.html"), inJinja2TemplateRefreshBool = True)
# Call the orchestrator def
Orchestrator.Orchestrator(inGSettings=gSettings, inDumpRestoreBool=False)

Loading…
Cancel
Save