Repository navigation
v1.2.0
v1.2.0 - Укрепление надежности и аудит кода
Конвертер валют на основе официальных курсов ЦБ РФ
Go реализация проекта CurRate с современной архитектурой, XML API и desktop UI
Что нового в v1.2.0
Укрепление надежности
- context.Context через весь call chain -
Converter.Convert->RateProvider.FetchRates->fetchXMLтеперь принимают и пробрасывают контекст для отменяемости операций - Ограничение XML ответа до 4 MB - защита от аномально больших ответов через
io.LimitReaderвParseXML - Nil-проверки и defensive guards - безопасная инициализация
Appи RUB-провайдера - Улучшенная диагностика ошибок - информативные сообщения для XML size limit и Telegram API
Рефакторинг
- Консолидация
ErrUnsupportedCurrency- единый sentinel error вместо дублирования - Удаление мёртвого кода - удалены неиспользуемые функции календаря и дубликаты тестов
- Корректная семантика ошибок 4xx -
fetchXMLтеперь корректно обрабатывает клиентские ошибки - Race detector в CI - добавлен флаг
-raceдля Ubuntu в CI pipeline
Аудит документации
- Полная актуализация документации - обновлены TESTING, ARCHITECTURE, SUMMARY, README, ROADMAP, CONTRIBUTING, PERFORMANCE, CHANGELOG
- Тестовое покрытие - удалены дублирующие тесты, исправлены проверки ошибок через
errors.Is
Технические детали
Архитектурные изменения
| Изменение | Описание |
|---|---|
context.Context |
Пробрасывается через Converter.Convert -> RateProvider.FetchRates -> fetchXML |
ParseXML |
Использует io.LimitReader(r, 4*1024*1024) для защиты от больших ответов |
ErrUnsupportedCurrency |
Консолидирован в единый sentinel в models/currency.go |
| Ошибки 4xx | Корректная семантика в fetchXML (не retry для клиентских ошибок) |
Обновления зависимостей
| Зависимость | Было | Стало |
|---|---|---|
| Go | 1.25.5 | 1.26 |
| golang.org/x/text | v0.32.0 | v0.34.0 |
| golangci-lint | v1 | v2 |
Изменения в коде
| Параметр | Было | Стало |
|---|---|---|
AppVersion |
1.1.0 | 1.2.0 |
UserAgent |
версия 1.1 | версия 1.2 |
| Размер окна | 360x748 | 360x758 |
Системные требования
| Компонент | Требование |
|---|---|
| Go | 1.26 |
| Wails | v2.11.0 |
| Покрытие тестами | >90% |
| API | XML API ЦБ РФ |
| Платформа | Windows 10 (22H2+) / Windows 11 |
| Размер exe | ~10 MB |
Установка
Для пользователей
- Скачайте
CurRate.exeиз раздела Assets ниже - Запустите файл (установка не требуется)
- Готово! Приложение готово к использованию
Для разработчиков
# Клонировать репозиторий
git clone https://github.com/bivlked/CurRate-Go.git
cd CurRate-Go
# Установить зависимости
go mod download
# Запустить в режиме разработки
wails dev
# Собрать production версию
wails buildОбновление с v1.1.0
Обновление полностью совместимо с предыдущей версией:
- Скачайте новую версию
CurRate.exe - Замените старый файл
- Запустите приложение
Никаких дополнительных действий не требуется. Все пользовательские данные (%APPDATA%/CurRate/user.json) сохраняются.
Документация
- README.md - Обзор проекта и быстрый старт
- CHANGELOG.md - Полная история изменений
- Архитектура - Архитектура системы
- Тестирование - Покрытие тестами
- Производительность - Benchmarks и оптимизации
- Руководство пользователя - Как использовать приложение
Связанные проекты
- CurRate (Python) - Оригинальная версия на Python
- ЦБ РФ API - Официальный API курсов валют
Полная история изменений
См. CHANGELOG.md для детальной истории изменений.
Сделано с Go
Если вам нравится проект, нажмите "Послать звезду!" в приложении или поставьте звезду на GitHub!