Skip to content

Repository files navigation

Technology Risk Assessment Tool — Sber Hackathon 2024

Team 36 — MIPT × Sber Hackathon

Objective

Develop an algorithm and web application for assessing technological risk in software release deployments, specifically for ETL (Extract, Transform, Load) procedures and data warehouse (DWH) computations.

Risk Parameters

The model evaluates 12 weighted risk factors:

Parameter Description
Business Importance Criticality of affected business processes
Technical Complexity Complexity of the release
Urgency Deployment urgency
Data Quality Quality of input data
Team Experience Experience level of the deployment team
Regulatory Compliance Alignment with regulatory requirements
Legal Impact Potential legal consequences
Financial Risk Financial exposure
Integration Level Degree of system integration
Stability of Previous Releases Historical release stability
Testing Maturity Maturity of testing processes
Backup Plan Availability of a rollback plan

Risk Classification

Risk Level Score Range
Low < 2.0
Medium 2.0 – 2.99
High 3.0 – 3.99
Very High ≥ 4.0

Additional categories for legal and financial risk can block deployment regardless of overall score.

Application Features

  • Automated Assessment: Upload a CSV file for batch risk evaluation
  • Manual Input: Enter parameters via web form for single-release assessment
  • Visualization: Dynamic charts and styled tables for result interpretation
  • Deployment: Flask web application deployed to production

Technical Architecture

  • Backend: Flask (Python)
  • Risk Engine: Weighted multi-parameter scoring with threshold classification
  • Visualization: Matplotlib, Plotly
  • Deployment: Vercel

Relevance to Credit Risk Modeling

This project implements the same architectural patterns used in credit scoring and SME risk assessment:

  • Multi-factor weighted evaluation
  • Threshold-based risk classification
  • Interpretable output for decision support
  • Batch and single-entity assessment modes

Team

  • Anna Traylor — Architecture & Code
  • Sergey Sarapulov — Algorithm Optimization
  • Maria Zemskova — Methodology Analysis
  • Iosif Ababneh — Data Visualization
  • Konstantin Cherkesov — Testing & Data Processing
  • Vagiz Yakupov — Risk Ranking

Links


Хакатон от МФТИ Х СБЕР 2024

Команда 36

Зоны ответственности:

  • Анна Трэйлор – разработка архитектуры и кода
  • Сергей Сарапулов – оптимизация алгоритмов
  • Мария Земскова – анализ методик оценки
  • Абабнех Иосиф – визуализация данных
  • Константин Черкесов – тестирование и работа с данными
  • Вагиз Якупов – ранжирование рисков

Презентация

Сбер_презентация_Команда_36.pdf

Задача

Разработать алгоритм (модель, методику) и программу его реализующую для оценки технологического риска внедрений релизов программного обеспечения, предназначенного для выполнения процедур трансформации данных (ETL) и расчетов на витринах хранилища данных (DWH).

Общее описание работы проекта

Проект предназначен для оценки технологических рисков внедрения релизов. Он позволяет:

  • Автоматически анализировать данные из загруженного CSV-файла.
  • Выполнять ручной ввод параметров для оценки риска.
  • Генерировать графики и таблицы для визуализации результатов.
  • Отображать результаты анализа в веб-интерфейсе.

Пример работы ручного ввода

Screen.Recording.2024-12-12.at.08.59.18.mov

Пример работы автоматической оценки

Screen.Recording.2024-12-12.at.09.01.09.mov

Описание файловой системы

├── Pipfile                 # Файл для управления виртуальной средой Python (используется с pipenv).
├── Procfile                # Файл для указания команд деплоя (Heroku).
├── README.md               # Основная документация проекта.
├── __pycache__/            # Кэшированные файлы Python (автоматически создаются).
├── app.py                  # Главный файл приложения Flask.
├── data/                   # Папка с данными (например, загружаемые CSV-файлы).
│   ├── example.csv         # Пример CSV-файла для анализа.
├── plots/                  # Папка для сохранения графиков.
│   ├── example_plot.png    # Пример графика, сгенерированного приложением.
├── requirements.txt        # Список зависимостей для проекта.
├── risk_assessment.py      # Логика расчёта и анализа рисков.
├── runtime.txt             # Указание версии Python для платформы деплоя (например, Heroku).
├── static/                 # Статические файлы (CSS, JS, изображения).
│   ├── styles.css          # Стили для оформления приложения.
├── templates/              # HTML-шаблоны для Flask.
│   ├── index.html          # Главная страница с формами загрузки и ручного ввода.
│   ├── results.html        # Страница отображения результатов анализа.
├── tree_description.md     # Дополнительное описание структуры проекта.
├── venv/                   # Виртуальная среда Python для изолированной работы.
├── vercel.json             # Конфигурация деплоя для Vercel.

Используемые параметры риска:

  • business_importance — Важность бизнес-процессов.
  • technical_complexity — Техническая сложность.
  • urgency — Срочность внедрения.
  • data_quality — Качество данных.
  • team_experience — Опыт команды.
  • regulatory_compliance — Соответствие нормативным требованиям.
  • legal_impact — Юридические последствия.
  • financial_risk — Финансовый риск.
  • integration_level — Уровень интеграции.
  • stability_of_previous_releases — Стабильность предыдущих релизов.
  • testing_maturity — Зрелость тестирования.
  • backup_plan — Наличие резервного плана

Весовые коэффициенты:

Каждый параметр имеет вес, определяющий его влияние на итоговый уровень риска. Весовые коэффициенты задаются в коде.

Классификация уровней риска:

  • Низкий: Итоговый балл < 2.
  • Средний: 2 ≤ Итоговый балл < 3.
  • Высокий: 3 ≤ Итоговый балл < 4.
  • Очень высокий: Итоговый балл ≥ 4.

Также есть отдельные категории рисков: юридический и финансовый. В данном случае, проект не может быть обновлён на моменте оценки рисков из-за финансовых или юридических вопросов.

Описание работы функций

1. app.py Основной файл приложения Flask. Обрабатывает маршруты (/, /upload, /manual):

1.1. index()

  • Описание: Отображает главную страницу с формой для загрузки файла и ручного ввода данных.
  • Маршрут: /
  • Возвращает: Шаблон index.html.

1.2. upload()

  • Описание: Обрабатывает загруженные пользователем CSV-файлы.
  • Маршрут: /upload
  • Метод: POST
  • Действия:
    • Проверяет наличие загруженного файла.
    • Считывает CSV-файл в pandas.DataFrame.
    • Вычисляет оценку риска для каждой строки с использованием функций из risk_assessment.py.
    • Генерирует график распределения рисков и визуализацию таблицы.
    • Передаёт данные и графики в шаблон results.html.
    • Возвращает: Шаблон results.html с таблицей и графиком.

1.3. manual()

  • Описание: Обрабатывает данные, введённые вручную пользователем через форму.
  • Маршрут: /manual
  • Метод: POST
  • Действия:
    • Извлекает значения из формы и формирует DataFrame.
    • Вычисляет оценку риска для введённых данных.
    • Генерирует график и таблицу.
    • Передаёт данные в шаблон results.html.
    • Возвращает: Шаблон results.html с таблицей и графиком.
    • Управляет обработкой данных, визуализацией и передачей данных в шаблоны.

2. risk_assessment.py

  • Содержит алгоритмы для оценки и классификации рисков.
  • Управляет визуализацией данных (графики, таблицы).

2.1. evaluate_risk(row)

  • Описание: Рассчитывает оценку риска (Risk Score) для строки данных на основе весовых коэффициентов.
  • Параметры:
    • row: строка DataFrame с параметрами риска.
  • Возвращает: Значение риска (число с плавающей запятой).

2.2. classify_risk(risk_score, row=None)

  • Описание: Определяет уровень риска на основе значения Risk Score.
  • Параметры:
    • risk_score: числовое значение риска.
    • row: строка данных (необязательно), может использоваться для расширения логики.
  • Возвращает: Уровень риска (строка: "Низкий", "Средний", "Высокий", "Очень высокий").

2.3. visualize_risks(data)

  • Описание: Генерирует график распределения уровней риска.
  • Параметры: data: DataFrame, содержащий данные с колонкой Risk Level.
  • Возвращает: График в формате PNG, отрисованный в браузере.

2.4. visualize_table(data)

  • Описание: Генерирует таблицу с увеличенным шрифтом и высотой строк для отображения результатов анализа.
  • Параметры: data: DataFrame с рассчитанными уровнями риска.
  • Возвращает: Таблицу в формате PNG.

3. requirements.txt Список зависимостей, необходимых для работы приложения. Устанавливается с помощью:

pip install -r requirements.txt

4. runtime.txt Указывает версию Python для деплоя на Vercel: 3.11

5. Папка templates/ Содержит HTML-шаблоны для страниц приложения.

  • index.html: Страница с формами для загрузки файла и ручного ввода данных.
  • results.html: Страница для отображения результатов анализа (графики, таблицы).

6. Папка static/ Статические файлы (CSS для стилей, JS для интерактивности, изображения). styles.css: Файл стилей для оформления страниц.

7. Папка data/ Для хранения входных данных, таких как CSV-файлы.

8. Папка plots/ Для сохранения временных графиков, если нужно.

9. vercel.json Конфигурационный файл для деплоя на платформе Vercel. Пример:

{
  "builds": [
    {
      "src": "app.py",
      "use": "@vercel/python"
    }
  ],
  "routes": [
    {
      "src": "/(.*)",
      "dest": "app.py"
    }
  ]
}

Команды для работы с venv

Действие Команда
Создать виртуальное окружение python -m venv venv
Активировать (Windows) venv\Scripts\activate
Активировать (Linux/MacOS) source venv/bin/activate
Установить зависимости pip install -r requirements.txt
Добавить зависимости в requirements.txt pip freeze > requirements.txt
Деактивировать виртуальное окружение deactivate

About

✨ Sber X MIPT HACKATHON 2024: Technology Risk Assessment Tool (AI)

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages