Задание: C#. C# / WPF приложение для обработки Excel и расчёта прайс-листов (Дистанционная работа)
Требуется разработка Windows-приложения для автоматизированной обработки, нормализации, сопоставления и расчёта на основе Excel-данных. SK.
Проект — не форма загрузки таблицы, а локальная система обработки номенклатурных данных с собственной бизнес-логикой: правила расчёта, приоритеты, исключения, аналоги, история операций, журналирование и дальнейшее расширение без переработки архитектуры.
Основная задача: принимать Excel-файлы разной структуры, выполнять маппинг колонок, приводить данные к единому виду, сопоставлять позиции, определять идентичные товары, аналоги, исключения и выполнять перерасчёт цен по заданным правилам.
Приложение работает локально на Windows и хранит настройки, справочники, правила, историю и результаты обработки в локальной БД.
Ключевые блоки:
1. Импорт данных
Загрузка Excel-файлов с разной структурой колонок. Гибкий маппинг полей входного файла с внутренними полями системы. Обработка файлов объёмом 100 000+ строк без зависания интерфейса и потери данных.
Ожидается понимание пакетной обработки, оптимизации памяти, фоновых задач, отображения прогресса и безопасной работы с большими таблицами.
2. Нормализация номенклатуры
Система должна приводить разные варианты написания одной позиции к сопоставимому виду.
Учитываются бренд, модель, размер, технические обозначения, конструкция, страна производства, дата производства, тип товара и другие параметры.
Нормализация должна быть отдельным расширяемым механизмом, а не разовой обработкой строки.
3. Сопоставление позиций
Система должна поддерживать режимы:
• Identical — точное совпадение по установленным параметрам;
• Analog — аналог по заранее заданным пользовательским правилам;
• Exception — исключение с приоритетом над обычной логикой расчёта.
Для каждого результата сохраняется причина выбора: какой режим сработал, какие параметры совпали, какое правило применилось, почему позиция попала в расчёт, аналог, исключение или конфликт.
Если правило или аналог нельзя определить однозначно, система фиксирует Conflict без автоматического подбора по предположению.
4. Правила расчёта
Расчёт строится на настраиваемых правилах и справочниках.
Нужна работа с процентными корректировками, фиксированными значениями, приоритетами, исключениями, последовательным применением коэффициентов, разными режимами расчёта и историей применённых правил.
Проценты применяются последовательно, а не суммируются.
Архитектура должна позволять добавлять новые типы правил и условия расчёта без переписывания существующего функционала.
5. Исключения
Типы исключений: фиксированная цена, фиксированный процент, отсутствие перерасчёта, перевод позиции в отдельный статус.
При срабатывании исключения система явно фиксирует режим Exception и применённое правило.
6. Локальная база данных
Необходимо хранить шаблоны маппинга, настройки, справочники, правила расчёта, правила аналогов, исключения, историю запусков, результаты обработки, журнал ошибок и действий.
При первом запуске приложение самостоятельно создаёт БД и структуру таблиц. Пользователь не должен вручную создавать БД, таблицы, конфигурационные файлы или выполнять техническую подготовку.
7. Интерфейс и архитектура
Требуется удобный интерфейс для работы с большими таблицами, настройками, правилами, результатами расчёта и ошибками.
Интерфейс не должен зависать при обработке данных. Бизнес-логика должна быть отделена от интерфейса.
Ожидается понятная структура слоёв: импорт, нормализация, сопоставление, расчёт, хранение данных, интерфейс, логирование, история операций.
Правила, исключения, приоритеты и параметры сопоставления должны управляться через данные и настройки, а не быть жёстко зашитыми в код.
8. Результат
Результатом должно быть запускаемое Windows-приложение, которое можно распаковать, запустить и проверить на тестовых Excel.
Передача результата: готовая сборка, исходный код, локальная БД или автосоздание БД, инструкция по запуску, описание структуры проекта, описание загрузки Excel, Git-репозиторий с историей работы, понятные коммиты, запуск готовой сборки без Visual Studio.
9. Приёмка
Этап считается выполненным, если приложение запускается на чистой системе, БД создаётся автоматически, Excel-файл загружается через интерфейс, маппинг колонок работает, данные сохраняются локально, обработка больших файлов не блокирует интерфейс, ошибки фиксируются в журнале, результат расчёта можно проверить, исходный код передан, код находится в Git, есть инструкция по запуску.
При отклике просьба кратко указать:
• опыт WPF-разработки;
• опыт с локальными БД;
• опыт обработки больших Excel-файлов;
• подход к архитектуре;
• как планируется реализовать импорт, нормализацию, расчёт и хранение истории;
• примеры похожих задач.
Полное ТЗ с бизнес-логикой, правилами расчёта, приоритетами, исключениями и тестовыми сценариями предоставляется после обсуждения опыта и подхода исполнителя. Работаем по договору от юридического лица.