Веб-приложение для автоматической обработки Excel файлов с данными о сотрудниках и задачах. Приложение группирует данные, агрегирует информацию и создает структурированный отчет.
- WebAssembly для производительности: Обработка данных выполняется на Rust с компиляцией в WebAssembly для максимальной скорости
- Группировка данных: Автоматическая группировка по задачам и сотрудникам
- Агрегация по периодам: Группировка данных по месяцам
- Объединение дубликатов: Суммирование времени для одинаковых сотрудников
- Браузерная обработка: Все данные обрабатываются локально в браузере, без отправки на сервер
- React 19 - UI библиотека
- TypeScript - типизация
- Material-UI - компоненты интерфейса
- Vite - сборщик и dev-сервер
- Rust - язык для обработки данных
- wasm-bindgen - связь между JavaScript и WebAssembly
- calamine - чтение Excel файлов
- rust_xlsxwriter - создание Excel отчетов
- chrono - работа с датами
- Node.js (версия 18+)
- Rust и wasm-pack
- npm или yarn
# Установка Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Установка wasm-pack
cargo install wasm-pack# Установка npm зависимостей
npm install
# Сборка WebAssembly модуля
npm run wasmnpm run devПриложение будет доступно по адресу http://localhost:5173
npm run buildСобранные файлы будут в папке dist/
npm run previewexcel-web/
├── src/ # Исходный код React приложения
│ ├── components/ # React компоненты
│ │ ├── FileButton/ # Компонент кнопки загрузки файла
│ │ └── FileInput.tsx
│ ├── helpers/ # Вспомогательные функции
│ ├── wasm/ # WebAssembly интерфейс
│ ├── App.tsx # Главный компонент
│ └── main.tsx # Точка входа
├── wasm-excel/ # Rust WebAssembly модуль
│ ├── src/
│ │ ├── lib.rs # Точка входа WASM
│ │ ├── models.rs # Модели данных
│ │ ├── helpers.rs # Функции обработки
│ │ └── file_io.rs # Чтение/запись Excel
│ └── Cargo.toml # Зависимости Rust
├── example/ # Примеры входных и выходных файлов
├── public/ # Статические файлы
├── dist/ # Собранное приложение
└── package.json # Зависимости Node.js
- Откройте приложение в браузере
- Нажмите кнопку "Выбрать файл"
- Выберите Excel файл (.xlsx) с данными
- Дождитесь обработки
- Отчет автоматически загрузится с именем
[исходное-имя]-output.xlsx
Приложение работает с Excel файлами (.xlsx), которые являются выгрузкой отчета из Jira.
Файл должен содержать столбцы с информацией о:
- Имени сотрудника
- Названии задачи
- Дате выполнения
- Длительности работы
- Описании
Отчет группируется по:
- Задачам
- Месяцам
- Сотрудникам
С автоматическим подсчетом общего времени и объединением описаний.
В папке example/ находятся примеры файлов для тестирования:
excel-web-example.xlsx- пример входного файла (выгрузка из Jira)excel-web-example-output.xlsx- пример обработанного отчета
Вы можете использовать эти файлы для ознакомления с форматом данных и тестирования приложения.
npm run dev- запуск dev-сервераnpm run build- сборка для productionnpm run wasm- компиляция Rust в WebAssemblynpm run lint- проверка кода ESLintnpm run preview- просмотр production сборки
Проект оптимизирован для быстрой работы:
- WebAssembly обеспечивает высокую скорость обработки данных
- LTO (Link Time Optimization) в Rust
- Оптимизация размера с
opt-level = "s" - Минимальное количество code units для уменьшения размера WASM
MIT
@drzelim