Евгений Колесников 4 months ago
parent
commit
08c47af7ff
3 changed files with 102 additions and 0 deletions
  1. 28 0
      DE09/2026/M6/server.py
  2. 72 0
      articles/de2026_6_analysis.md
  3. 2 0
      articles/de2026_example.md

+ 28 - 0
DE09/2026/M6/server.py

@@ -0,0 +1,28 @@
+from http.server import BaseHTTPRequestHandler
+from http.server import HTTPServer
+import random
+
+class HttpGetHandler(BaseHTTPRequestHandler):
+    """Обработчик с реализованным методом do_GET."""
+
+    def do_GET(self):
+        self.send_response(200)
+        self.send_header('Content-Type', 'application/json')
+        self.end_headers()
+        bad_symbol = "" if random.randint(0, 1) == 0 else "!@^$*#"[random.randint(0,5)]
+        last_name = ['Иванов','Петров','Сидоров'][random.randint(0,2)]
+        first_name = ['Иван','Пётр','Сидор'][random.randint(0,2)]
+        middle_name = ['Иванович','Петрович','Сидорович'][random.randint(0,2)]
+        self.wfile.write(f'{{"value":"{last_name}{bad_symbol} {first_name} {middle_name}"}}'.encode(encoding='utf_8'))
+
+
+def run():
+  server_address = ('', 4444)
+  httpd = HTTPServer(server_address, HttpGetHandler)
+  try:
+      httpd.serve_forever()
+  except KeyboardInterrupt:
+      httpd.server_close()
+
+if __name__ == "__main__":
+    run()

+ 72 - 0
articles/de2026_6_analysis.md

@@ -0,0 +1,72 @@
+# Модуль 6. Интеграция программных модулей
+
+>Для проверки данных от клиентов разработайте приложение, которое позволит провести валидацию на корректность данных. Результат проверки необходимо фиксировать в документе `ТестКейс.docx`.
+>
+>Сначала заполните в документе ТестКейс.docx столбец "Действие" и "Ожидаемый результат" используя предоставленный текстовый редактор. Добавьте закладки в столбец "Результат". Необходимо провести валидацию ФИО клиента на вхождение запрещенных символов. Проверьте два любых критерия.
+>
+>Для эмуляции отправки данных от клиента Вам необходимо запустить приложение `TransferSimulator.exe`. Методы эмулятора описаны в файле `api_info.pdf`.
+>
+>Макет формы представлен на рисунке.
+>
+>![Макет окна приложения валидации данных](../img/de2026_01.png)
+>
+При нажатии на кнопку "Получить данные" данные загружаются с эмулятора и отображаются на форме.
+>
+>После нажатия на кнопку "Отправить результат теста" происходит проверка данных по заполненному шаблону, и результат проверки
+отображается на форме и в соответствующей строке таблицы в столбце "Результат".
+>
+>Важно: Разрабатывать API Вам не нужно. Используйте предоставленный API из приложения.
+
+## Решение
+
+Своими словами: Вы должны написать оконное приложение с двумя кнопками (скрин есть выше). При клике на кнопку "Получить данные" вы должны получить данные из АПИ (http сервер прилагается) и показать полученные данные в окне (справа от кнопки). При клике на кнопку "Отправить результаты теста" Вы должны вызвать **свой** метод проверки и результат проверки вывести справа от кнопки. Потом руками переписать полученные данные в приложенный файл `ТестКейс.docx`.
+
+1. Получение данных из АПИ
+
+    Для "разбора" json-строки (которую возвращает сервер) используется библиотека `Newtonsoft.json`, которую нужно установить из **NuGet** 
+
+    ```cs
+    // обработчик клика на кнопку
+    private void GetFIOFromApi(object sender, RoutedEventArgs e)
+    {
+        HttpClient client = new HttpClient();
+
+        // получение "тела" ответа от АПИ 
+        var body = client.GetStringAsync("http://localhost:4444").Result;
+
+        // разбор полученной JSON-строки в объект
+        JObject jObject = JObject.Parse(body);
+
+        // из объекта получаем значение по ключу
+        FullNameTextButton.Text = JObject["value"].ToString();
+    }
+    ```
+
+1. Проверка валидности ФИО
+
+    Вариантов может быть несколько: либо создать массив запрещённых символов и перебрать их в цикле сравнив с ФИО из предыдущего пункта, либо написать регулярку (что на мой взгляд правильнее)
+
+    Ниже пример проверки с выводом на консоль, Вам нужно выводить в текстовое поле вашего оконного приложения.
+
+    ```cs
+    Console.Write(jObject["value"].ToString());
+
+    if (Regex.IsMatch(jObject["value"].ToString(), @"^[А-Яа-яЁё]+\s+[А-Яа-яЁё]+\s+[А-Яа-яЁё]+$"))
+        Console.WriteLine(": Успешно");
+    else     
+        Console.WriteLine(": Не успешно");
+    ```
+
+## Пример заполнения `ТестКейс.docx`
+
+Действие | Ожидаемый результат | Результат (Успешно/Не успешно)
+---------|---------------------|-------------------------------
+Колесников Евгений Иванович | Успешно | Успешно
+Кропинов! Андрей Михайлович | Не успешно | Не успешно
+Сергеев# Иван Сергеевич | Не успешно | Успешно
+
+1. В колонке "Действие" пишете ФИО, полученное от АПИ
+1. В Колонке "Ожидаемый результат" пишете то что должно получиться
+1. В колонке "Результат" пишете результат проверки вашим методом
+
+В идеале "Ожидаемый результат" и "Результат" должны совпадать

+ 2 - 0
articles/de2026_example.md

@@ -72,6 +72,8 @@
 Разработайте проектную документацию на разработанный функционал.
 Разработайте проектную документацию на разработанный функционал.
 Включите описание функционального назначения, используемые методы с указанием параметров.
 Включите описание функционального назначения, используемые методы с указанием параметров.
 
 
+>Простыми словами нужно описать функции (методы) приложения, реализованного в 3-м модуле
+
 ### Модуль 6. Интеграция программных модулей
 ### Модуль 6. Интеграция программных модулей
 
 
 Для проверки данных от клиентов разработайте приложение, которое позволит провести валидацию на корректность данных. Результат проверки необходимо фиксировать в документе `ТестКейс.docx`.
 Для проверки данных от клиентов разработайте приложение, которое позволит провести валидацию на корректность данных. Результат проверки необходимо фиксировать в документе `ТестКейс.docx`.