Доработка

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

View File

@ -2,30 +2,32 @@ package main
import ( import (
"encoding/json" "encoding/json"
"fmt"
"io/ioutil" "io/ioutil"
"os" "os"
"gitstore.ru/tolikproh/mchstest/internal/model" "gitstore.ru/tolikproh/mchstest/internal/model"
"gitstore.ru/tolikproh/mchstest/pkg/util"
) )
func main() { func main() {
var inTest []model.MTType var inTest []model.MTType
var outTest []model.MTParseT var outTest []model.MTParseT
bs, err := ioutil.ReadFile("mchs_test.json") filename := util.InputTerminal("Введите имя файла базы данных сохранненой с сайта для парсинга (json)")
if err != nil {
fmt.Println(err) bs, err := ioutil.ReadFile(filename + ".json")
os.Exit(1) util.Check(err, "")
}
err = json.Unmarshal(bs, &inTest) err = json.Unmarshal(bs, &inTest)
if err != nil { util.Check(err, "")
fmt.Println(err)
os.Exit(1)
}
for _, in := range inTest { for _, in := range inTest {
outTest = append(outTest, in.Parse()) 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,21 +11,19 @@ import (
) )
func main() { func main() {
fmt.Println("Утилита для пропуска подготовительных вопросов (марафон) к тестированию с сайта: https://digital.mchs.gov.ru/fgpn/simulator") fmt.Println("Утилита для пропуска подготовительных вопросов (марафон) к тестированию с сайта: https://digital.mchs.gov.ru/fgpn/simulator")
uidMchs, err := uuid.Parse(util.InputTerminalStr("Необходимо ввести UUID сессии для начала загрузки")) uidMchs, err := uuid.Parse(util.InputTerminal("Необходимо ввести UUID сессии"))
if err != nil { util.Check(err, "ОШИБКА: формат UUID не верный. Завершение работы.")
fmt.Println("ОШИБКА: формат UUID не верный. Завершение работы.")
} else { numMchsStr := util.InputTerminal("Необходимо ввести номер вопроса (с 1 до 520)")
numMchsStr := util.InputTerminalStr("Необходимо ввести номер вопроса (с 1 до 520)")
numMchs, err := strconv.Atoi(numMchsStr) numMchs, err := strconv.Atoi(numMchsStr)
if err != nil { util.Check(err, "ОШИБКА: необходимо ввести номер в диапазоне с 1 до 520. Завершение работы.")
fmt.Println("ОШИБКА: необходимо ввести номер в диапазоне с 1 до 520. Завершение работы.")
}
if numMchs <= 0 || numMchs > 520 { if numMchs <= 0 || numMchs > 520 {
fmt.Println("ОШИБКА: не верный диапазон (должно быть с 1 до 520). Завершение работы.") util.Check(nil, "ОШИБКА: не верный диапазон (должно быть с 1 до 520). Завершение работы.")
} else { }
var rN model.ReqNull var rN model.ReqNull
var rA model.ReqAnswer var rA model.ReqAnswer
fmt.Print("Выполняется") fmt.Print("Выполняется")
@ -34,11 +32,8 @@ func main() {
d := model.UnmarshalJSONToMTType(body) d := model.UnmarshalJSONToMTType(body)
fmt.Print(".") fmt.Print(".")
rA.Answer = d.ValidAnswer rA.Answer = d.ValidAnswer
body, _ = util.ReqestToSiteJSON(rA, cnst.Url, uidMchs) body, err = util.ReqestToSiteJSON(rA, cnst.Url, uidMchs)
util.Check(err, "")
} }
fmt.Println("\nРабота выполнена, пропущено", numMchs, "вопросов! Обновите страницу на сайте и продолжайте отвечать на подготовительные вопросы.") 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