Доработка

This commit is contained in:
Anatoly Prohacky 2023-01-19 19:13:08 +10:00
parent 450387d25a
commit 2b47ff8e24
13 changed files with 614 additions and 582 deletions

View File

@ -1,13 +1,21 @@
# mtstep вер1.0
## Утилита для пропуска вопросов тренажера для сдачи тестов по аттестации лиц на право проектирования средств обеспечения пожарной безопасности зданий и сооружений, введённых в эксплуатацию с сайта: https://digital.mchs.gov.ru/fgpn/simulator
## Инструкция
#### 1. Необходимо выбрать пункт `"марафон"`
#### 2. Нажать на `"Начать тестирование"`
#### 3. Из адресной строки: `"https://digital.mchs.gov.ru/testing/instance/75342faa-c77c-4811-abbe-ff8d8cec32a8"` выделить `"75342faa-c77c-4811-abbe-ff8d8cec32a8"`. Всегда индивидуальный при каждом начале тестирования и скопировать его в буфер обмена.
#### 4. Запустить программу `"mtstep"`
#### 5. Вставить в поле `"Необходимо ввести UUID сессии для начала загрузки"` скопированый в буфер обмена UUID (`"75342faa-c77c-4811-abbe-ff8d8cec32a8"`), у Вас будет другой необходимо ввести свой.
#### 6. Далее необходимо указать номер с какого вопроса хотите начинать отвечать
#### 7. После окончания работы утилиты, необходимо обновить страницу с тестами не закрывая ее.
#### 8. После чего страница перегрузится с того номера вопроса который был указан.
#### 1. Необходимо выбрать пункт `"марафон"`
#### 2. Нажать на `"Начать тестирование"`
#### 3. Из адресной строки: `"https://digital.mchs.gov.ru/testing/instance/75342faa-c77c-4811-abbe-ff8d8cec32a8"` выделить `"75342faa-c77c-4811-abbe-ff8d8cec32a8"`. Всегда индивидуальный при каждом начале тестирования и скопировать его в буфер обмена.
#### 4. Запустить программу `"mtstep"`
#### 5. Вставить в поле `"Необходимо ввести UUID сессии"` скопированый в буфер обмена UUID (`"75342faa-c77c-4811-abbe-ff8d8cec32a8"`), у Вас будет другой необходимо ввести свой.
#### 6. Далее необходимо указать номер с какого вопроса хотите начинать отвечать
#### 7. После окончания работы утилиты, необходимо обновить страницу с тестами не закрывая ее.
#### 8. После чего страница перегрузится с того номера вопроса который был указан.

View File

@ -2,6 +2,7 @@ package main
import (
"fmt"
"os"
"github.com/google/uuid"
"gitstore.ru/tolikproh/mchstest/internal/cnst"
@ -10,24 +11,35 @@ import (
)
func main() {
fmt.Println("Загрузка вопросов для тестирования с сайта:", cnst.Url)
fmt.Println("Загрузка вопросов для тестирования с сайта: https://digital.mchs.gov.ru/fgpn/simulator")
uidMchs, err := uuid.Parse(util.InputTerminal("Необходимо ввести UUID сессии для начала загрузки"))
if err != nil {
fmt.Println("ОШИБКА: формат UUID не верный. Зазрузка отменена.")
} else {
var rN model.ReqNull
var rA model.ReqAnswer
body, _ := util.ReqestToSiteJSON(rN, cnst.Url, uidMchs)
fmt.Println("[")
for i := 0; i < 520; i++ {
d := model.UnmarshalJSONToMTType(body)
fmt.Print(model.MTTypeToJSON(d), ",\n")
rA.Answer = d.ValidAnswer
body, _ = util.ReqestToSiteJSON(rA, cnst.Url, uidMchs)
}
util.Check(err, "ОШИБКА: формат UUID не верный. Зазрузка отменена.")
filename := util.InputTerminal("Введите имя файла для сохранения")
util.Check(err, "")
var rN model.ReqNull
var rA model.ReqAnswer
f, err := os.Create(filename + ".json")
util.Check(err, "")
defer f.Close()
body, err := util.ReqestToSiteJSON(rN, cnst.Url, uidMchs)
util.Check(err, "")
_, err = f.WriteString("[\n")
util.Check(err, "")
fmt.Print("Выполняется сохранение")
for i := 0; i < 520; i++ {
d := model.UnmarshalJSONToMTType(body)
fmt.Println(model.MTTypeToJSON(d))
fmt.Println("]")
_, err = f.WriteString(model.MTTypeToJSON(d) + ",\n")
util.Check(err, "")
rA.Answer = d.ValidAnswer
body, err = util.ReqestToSiteJSON(rA, cnst.Url, uidMchs)
util.Check(err, "")
fmt.Print(".")
}
d := model.UnmarshalJSONToMTType(body)
_, err = f.WriteString(model.MTTypeToJSON(d) + "\n]")
util.Check(err, "")
fmt.Println("\nСохранение списка вопросов завершено в файле", filename+".json")
}

View File

@ -2,30 +2,32 @@ package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"os"
"gitstore.ru/tolikproh/mchstest/internal/model"
"gitstore.ru/tolikproh/mchstest/pkg/util"
)
func main() {
var inTest []model.MTType
var outTest []model.MTParseT
bs, err := ioutil.ReadFile("mchs_test.json")
if err != nil {
fmt.Println(err)
os.Exit(1)
}
filename := util.InputTerminal("Введите имя файла базы данных сохранненой с сайта для парсинга (json)")
bs, err := ioutil.ReadFile(filename + ".json")
util.Check(err, "")
err = json.Unmarshal(bs, &inTest)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
util.Check(err, "")
for _, in := range inTest {
outTest = append(outTest, in.Parse())
}
fmt.Println(model.SaveToExel("mchs_test.xlsx", &outTest))
model.SaveToExel(filename+".xlsx", &outTest)
outTestJSON, err := json.Marshal(outTest)
util.Check(err, "")
err = os.WriteFile(filename+"_parse.json", outTestJSON, 0644)
util.Check(err, "")
}

View File

@ -11,34 +11,29 @@ import (
)
func main() {
fmt.Println("Утилита для пропуска подготовительных вопросов (марафон) к тестированию с сайта: https://digital.mchs.gov.ru/fgpn/simulator")
uidMchs, err := uuid.Parse(util.InputTerminalStr("Необходимо ввести UUID сессии для начала загрузки"))
if err != nil {
fmt.Println("ОШИБКА: формат UUID не верный. Завершение работы.")
uidMchs, err := uuid.Parse(util.InputTerminal("Необходимо ввести UUID сессии"))
util.Check(err, "ОШИБКА: формат UUID не верный. Завершение работы.")
} else {
numMchsStr := util.InputTerminalStr("Необходимо ввести номер вопроса (с 1 до 520)")
numMchs, err := strconv.Atoi(numMchsStr)
if err != nil {
fmt.Println("ОШИБКА: необходимо ввести номер в диапазоне с 1 до 520. Завершение работы.")
}
if numMchs <= 0 || numMchs > 520 {
fmt.Println("ОШИБКА: не верный диапазон (должно быть с 1 до 520). Завершение работы.")
} else {
var rN model.ReqNull
var rA model.ReqAnswer
fmt.Print("Выполняется")
body, _ := util.ReqestToSiteJSON(rN, cnst.Url, uidMchs)
for i := 1; i < numMchs; i++ {
d := model.UnmarshalJSONToMTType(body)
fmt.Print(".")
rA.Answer = d.ValidAnswer
body, _ = util.ReqestToSiteJSON(rA, cnst.Url, uidMchs)
}
fmt.Println("\nРабота выполнена, пропущено", numMchs, "вопросов! Обновите страницу на сайте и продолжайте отвечать на подготовительные вопросы.")
}
numMchsStr := util.InputTerminal("Необходимо ввести номер вопроса (с 1 до 520)")
numMchs, err := strconv.Atoi(numMchsStr)
util.Check(err, "ОШИБКА: необходимо ввести номер в диапазоне с 1 до 520. Завершение работы.")
if numMchs <= 0 || numMchs > 520 {
util.Check(nil, "ОШИБКА: не верный диапазон (должно быть с 1 до 520). Завершение работы.")
}
var rN model.ReqNull
var rA model.ReqAnswer
fmt.Print("Выполняется")
body, _ := util.ReqestToSiteJSON(rN, cnst.Url, uidMchs)
for i := 1; i < numMchs; i++ {
d := model.UnmarshalJSONToMTType(body)
fmt.Print(".")
rA.Answer = d.ValidAnswer
body, err = util.ReqestToSiteJSON(rA, cnst.Url, uidMchs)
util.Check(err, "")
}
fmt.Println("\nРабота выполнена, пропущено", numMchs, "вопросов! Обновите страницу на сайте и продолжайте отвечать на подготовительные вопросы.")
}

Binary file not shown.

BIN
mtdown

Binary file not shown.

BIN
mtstep.exe → mtparse Normal file → Executable file

Binary file not shown.

Binary file not shown.

BIN
mtstep

Binary file not shown.

14
pkg/util/errors.go Normal file
View File

@ -0,0 +1,14 @@
package util
import (
"fmt"
"os"
)
func Check(e error, msg string) {
if e != nil {
fmt.Println(msg)
fmt.Println(e)
os.Exit(1)
}
}

File diff suppressed because it is too large Load Diff

BIN
test_886.xlsx Executable file

Binary file not shown.

1
test_886_parse.json Normal file

File diff suppressed because one or more lines are too long