## [0.1.0] - 2024-12-11 ### Добавлено: - Базовые настройки в файле config.properties; - Подключение к базе данных через пул, создание таблиц при старте, если база пустая; - Использование функций базы: Автоудаление старых сессий, Проверка данных при сохранении (constraints); - Создание пользователя admin и роли admin, если их нет, вывод пароля в консоль; - Хэширование пароля через bcrypt. в открытом виде пароль в базе не хранится; - Генерация токена через java.randomUUID(), хранение в базе с привязкой к userID; - Пользовательские сообщения об ошибках, чтобы не раскрывать инф о системе; - Панель управления: вход, выход, пользователи и роли, поддержка сессий и кук; - Логирование на уровне info, warn и debug; - Перенос config.properties и logback.xml в корневой каталог приложения. Можно будет их менять без пересборки пакета; - Страница настроек - загрузка и сохранение данных в базу. Из всех полей сохраняется часовой пояс и время сессии. ## [0.1.1] - 2024-12-11 ### Исправлено: - выбор часового пояса. Настройка перенесена из базы в файл во избежание багов и для корректного отображения логов. ### Добавлено: - после смены часового пояса в админке на странице Настройки будет показано - "требуется перезапуск приложения". ## [0.1.2] - 2024-12-18 ### Исправлено: - проверка прав доступа роли, можно ли с ней входить в админку. Условие не проверялось, т.к. использовался Elvis-оператор. Заменил на if(). ### Добавлено: Маршруты для страниц Пользователи, Роли, Редактировать/Добавить/Удалить пользователя, роль. ## [0.1.3] - 2024-12-19 ### Добавлено: - нельзя удалять единственного админа и единственную роль с админ-правами. ## [0.1.4] - 2024-12-20 ### Добавлено: - проверка прав доступа для маршрута. например, для запросов к /api/editUser и /api/deleteUser требуется role.isEditUserAndRole; - /login теперь помимо текста возвращает id пользователя, который нужен для отключения лишних элементов на фронте. ## [0.1.5] - 2024-12-23 ### Добавлено - маршруты для страницы Новости, Редактировать/Добавить/Удалить новость. ## [0.1.6] - 2024-12-24 ### Добавлено - проверка при сохранении роли, чтобы оставалась хотя бы одна роль для редактирования пользователей и ролей. ## [0.1.7] - 2024-12-30 ### Исправлено: - все маршруты переписаны в соответствии с правилами REST. Например, теперь один маршрут roles, но с разными типами запросов: get, post, put, delete. Раньше был только get и post и куча маршрутов: roles, editRole, deleteRole. ### Добавлено: - разбивка на страницы для новостей, пользователей, добавил start, count. Роли оставил как есть, их мало; - параметры запроса для пользователей - roleId, query - это имя или почта. Раньше все выгружалось одним запросом. ## [0.1.8] - 2025-01-04 ### Добавлено: - маршруты для страниц Валюты, Поля валют (например, ФИО или Memo); - проработан механизм для запросов полей валют: а) поля Отдаю и Получаю, которые включены для данной валюты; б) валюты Отдаю и Получаю, которые включены для данного поля; в) список всех полей. ## [0.1.9] - 2025-01-05 ### Добавлено: - маршруты для валидации счета: 17 криптовалют и карта. Выгрузил список всех валют с Bestchange, посчитал количество сетей (блокчейнов). Для криптовалют использовал библиотеку с github. Для банковских карт реализовал алгоритм Луна. ## [0.1.10] - 2025-01-08 ### Исправлено: - при проверке адресов через библиотеку обнаружены ошибки. Переписал реализацию для сетей BEP20, ERC20, TRC20, BTC, SOL, ADA. Использовал библиотеки Bitcoinj и Bouncycastle. Base58 реализован вручную. ### Добавлено: для маршрута валидации теперь можно указать не только валюту, но и сеть (по умолчанию - AUTO). ## [0.1.11] - 2025-01-10 ### Добавлено: - Загрузка курса с Garantex; - Составление обратного курса; - Поиск кратчайшего пути по количеству вершин и вариантов с таким же количеством вершин. ## [0.1.12] - 2025-01-11 ### Добавлено: - Загрузка курса с Bybit; - Сохранение списка торговых пар, это нужно для 2х целей: -- для определения валют. На Bybit при загрузке курсов не указаны валюты "Отдаю" и "Получаю", вместо этого одна строка - "BTCUSDT"; -- чтобы показать названия пар в админке при добавлении новой валюты. ## [0.1.13] - 2025-01-13 ### Добавлено: - Загрузка курса с Binance. ### Исправлено: - обновление записей в базе. Было: 15 сек, стало: < 1 сек. Использовал bulkInsertOrUpdate(), это спец.функция для MySQL. Было 2 ошибки - не указал id при обновлении и не указал ключевое слово value для excluded-значений, из-за этого данные обновлялись некорректно. ## [0.1.14] - 2025-01-15 ### Исправлено: - добавил расчет спреда для обратного курса. Раньше он не учитывался, из-за этого про поиске курса в первую очередь выбирались варианты с обратным курсом. ## [0.1.15] - 2025-01-16 ### Исправлено: - Ошибка при работе с сетью. Поменял библиотеку Apache5 на Okhttp. ### Добавлено: - проверка курса через CoinMarketCap и через среднее значение; - мастер-ключ в config-файле, чтобы хранить ключи в базе в зашифрованном виде. ## [0.1.16] - 2025-01-17 ### Добавлено: - маршруты для загрузки и сохранения настроек бирж; - маршрут для загрузки курсов. ### Исправлено: - расчет спреда для обратного курса. ## [0.1.17] - 2025-01-27 ### Добавлено: - Документация по API; - Загрузка, редактирование, подбор формул. ## [0.1.18] - 2025-01-28 ### Добавлено: - Выгрузка формул для CoinMarketCap. ### Исправлено: - Ошибка при расчете спреда с полем price. ## [0.1.19] - 2025-01-29 ### Исправлено: - ошибка с графом Дейкстра. при обновлении курсов старые вершины не удалялись. ## [0.1.20] - 2025-02-02 ### Добавлено: - Загрузка и редактирование шаблонов описаний для направлений обмена. ## [0.1.21] - 2025-02-06 ### Добавлено: - Загрузка и редактирование шаблонов статусов для направлений; - Загрузка и редактирование направлений. ## [0.1.22] - 2025-02-14 ### Добавлено: - полная документация по API; - пробная страница для сайта: форма обмена; - маршрут для пакетного редактирования направлений. ### Исправлено: - права доступа. Часть маршрутов сделал открытыми для сайта; - при добавлении новой формулы цена не сразу добавлялась в таблицу, только при обновл курсов. ## [0.1.23] - 2025-02-23 ### Добавлено: - маршруты для заявок. ## [0.1.24] - 2025-03-03 ### Исправлено: - сделал структуру проще - убрал отдельный маршрут Описание обмена. При необходимости можно добавить его в статусы; - добавил foreign key constraint, потому что on delete cascade не работает в MySQL. ### Добавлено: - маршрут для сайта: направления обмена; - переделал статусы заявок, добавил новые. ## [0.1.25] - 2025-03-05 ### Исправлено: - при валидации адреса, если валидатор не выбран, получали ошибку. теперь отправляется текст и код 200 (OK). ### Добавлено: - направления обмена для сайта: добавлены доп.поля валют Отдаю и Получаю, чтобы при создании заявки не загружать их отдельно. ## [0.1.26] - 2025-03-10 ### Добавлено: - защита от атак из 2х частей - Rate Limit и Cookie. ## [0.1.27] - 2025-03-14 ### Добавлено: - верификация заявки и нового пользователя; - временная таблица в памяти при создании заявки без авторизации и при регистрации; - работа с почтой: отправка писем и rate limit. ## [1.0] - 2025-04-18 Первая стабильная версия, закачал на боевой сайт (production). ## [1.0.1] - 2025-04-28 ### Добавлено: - Поддержка биржи Mexc. ### Исправлено: - Проверка лимитов при создании заявки; - Проверка лимитов при редактировании направления. ## [1.0.2] - 2025-04-30 ### Добавлено: - Новый статус "Отменено системой (курс изменился)", если курс стал невыгодным. ## [1.0.3] - 2025-05-11 ### Добавлено: - Отзывы с модерацией, оценками и стоп-списком слов; - Новости. ## [1.0.4] - 2025-05-23 ### Добавлено: - Бонусная программа; - Реферальная программа. ### Исправлено: - Переделан API. Теперь на всех маршрутах стандартный формат ответов; - Дополнил формат таблицы orders, чтобы даже при удалении валют можно было увидеть инф по старым заявкам. ## [1.0.5] - 2025-06-18 ### Добавлено: - Полная документация по API; - Создание настроек по умолчанию для таблиц Роли, Уведомления, Статусы заявок.