Skip to content

Instantly share code, notes, and snippets.

@ogavrushev
Last active December 18, 2018 06:34
Show Gist options
  • Save ogavrushev/84e99c289365627f6bed100fef1734d8 to your computer and use it in GitHub Desktop.
Save ogavrushev/84e99c289365627f6bed100fef1734d8 to your computer and use it in GitHub Desktop.
Требования на реализацию приложения - Выгодный обмен валюты

Требования.

Описание. Приложение помогает пользователю найти максимально выгодный обменный курс валют среди популярных банков в Московском регионе.

Функционал.

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

Реализация.

  • Приложение должно быть реализование для использования в среде Windows x86/64

Отказоустойчивость.

  • При недоступности апи приложение должно уведомить пользователя о данной ошибке и попросить повторить действие попробовать чуть позже
  • При отсутствие интернета / соединения приложение должно уведомить пользователя о данной ошибке и попросить проверить интернет соединение
@Vankalif
Copy link

Vankalif commented Dec 17, 2018

Описание скрипта обновления данных приложения "Выгодный обмен валюты".

  • Процесс работы скрипта делится на три этапа:

    • Забор данных
    • Промежуточное сохранение
    • Сравнение и обновление полученных данных с текущими в базе
  • Этап первый - забор данных.
    Забор данных осуществляется посредством HTTP запросов к целевому ресурсу banki.ru. Скрипт обращается к утилите-итератору(currency_urls), которая возвращает URL-адрес для каждой валюты. На каждое возвращаемое значение создается отдельный поток, внутри потока выполняется запрос к адресу и парсинг ответа. Возвращаемое значение представлено именованным кортежем Bank, структура: имя банка, код валюты, покупка, продажа, время обновления ставки.

  • Этап второй - промежуточное сохранение.
    Данные полученные в результате работы потоков добавляются в массив.

  • Этап третий - сравнение полученных данных с текущими в базе.
    Сравнение работает в цикле по массиву значений полученном во втором этапе. Текущее значение массива передается функции rates_comparison. Функция берет последнее значение по коду валюты из общей таблицы, сравнивает со значениями кортежей из массива, если значения неравны, происходит перезапись.

@Vankalif
Copy link

Vankalif commented Dec 17, 2018

Описание таблиц базы данных приложения "Выгодный обмен валюты". SQLite.

  • Список таблиц:

    • currency_list
    • bank_rates
    • currency_rates_view
  • Таблица currency_list - хранит код и имя валюты.
    Структура таблицы:

    • ID - ключ
    • CODE - текст(кодовое название валюты)
    • NAME - текст(текстовое название валюты)
  • Таблица bank_rates - основная таблица хранящая ставки банков.
    Структура таблицы:

    • BANK_NAME - текст
    • CURRENCY_CODE - текст
    • BUY - число с точкой
    • SALE - число с точкой
    • TIMESTAMP - дата
  • Представления для валют - для каждой валюты имеется свое представление с последним полученным и единственным показателем ставки банка.(под вопросом)
    Структура представления:

    • BANK_NAME - текст
    • CURRENCY_CODE - текст
    • BUY - число с точкой
    • SALE - число с точкой
    • TIMESTAMP - дата

@Vankalif
Copy link

Vankalif commented Dec 17, 2018

Описание парсера "Выгодный обмен валюты". Библиотека Beautiful Soup

  • Функционал:

    • Сбор данных с сайта banki.ru. Парсер выполняет поиск внутри строк таблицы.
  • Входящие параметры:

    • Тег для поиска - строка
    • Словарь - словарь с указанием класса для поиска формат: { 'class': 'data-currencies-row-container' }
  • Возвращаемое значение:

    • Возвращаемое значение представлено объектом Bank, поля: имя банка, код валюты, покупка, продажа, время обновления ставки.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment