Доработка
This commit is contained in:
parent
450387d25a
commit
2b47ff8e24
24
README.md
24
README.md
@ -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. После чего страница перегрузится с того номера вопроса который был указан.
|
||||||
|
@ -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")
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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, "")
|
||||||
}
|
}
|
||||||
|
@ -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, "вопросов! Обновите страницу на сайте и продолжайте отвечать на подготовительные вопросы.")
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
BIN
mchs_test.xlsx
BIN
mchs_test.xlsx
Binary file not shown.
BIN
mtstep.exe → mtparse
Normal file → Executable file
BIN
mtstep.exe → mtparse
Normal file → Executable file
Binary file not shown.
BIN
mtparse.exe
BIN
mtparse.exe
Binary file not shown.
14
pkg/util/errors.go
Normal file
14
pkg/util/errors.go
Normal 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
BIN
test_886.xlsx
Executable file
Binary file not shown.
1
test_886_parse.json
Normal file
1
test_886_parse.json
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user