Веб-приложение для сверки оборудования и анализа устаревшего оборудования на основе Excel файлов.
- База данных — загрузка файла склада для сверки
- Множественная обработка — неограниченное количество файлов
- Автоопределение столбцов — по ключевым словам (серийный номер, дата)
- Сверка с базой данных — проверка наличия на складе (лист "Возврат")
- Анализ устаревания — оборудование старше 5 лет
- Градация:
- 6-9 лет → "Да, X лет"
-
9 лет → "Критично, X лет"
- Скачивание результатов — отдельные файлы или ZIP-архив
- Backend: FastAPI, Python 3.14
- Excel processing: Pandas, python-calamine, openpyxl, pyxlsb
- Frontend: Vanilla JS, современный CSS
- Поддержка форматов: .xlsx, .xlsb, strict OOXML
# Создать виртуальное окружение
python3 -m venv .venv
source .venv/bin/activate # macOS/Linux
# Установить зависимости
pip install -r requirements.txt
# Запустить сервер
./start.shПриложение будет доступно по адресу: http://127.0.0.1:8001/
- Загрузите базу данных (файл склада с листом "Возврат")
- Добавьте файлы для обработки (кнопка "+")
- Нажмите "Загрузить все файлы"
- Выберите листы для каждого файла
- Столбцы определяются автоматически
- Выберите операции:
- ☑ Сверка с базой данных
- ☑ Анализ устаревшего оборудования
- Скачайте отдельные файлы
- Или скачайте все в ZIP-архиве
Каждый файл получает два новых столбца:
Да— серийный номер найден на листе "Возврат" базы данныхНет— серийный номер не найден
Нет— оборудование ≤ 5 летДа, 6 лет— устарело (6-9 лет)Критично, 11 лет— критически устарело (> 9 лет)Не найдено в базе данных— невалидная дата
- Strict OOXML поддержка — работает с проблемными Excel файлами
- Низкоуровневое чтение — ZIP/XML парсинг для сложных файлов
- Множественные fallback — 7 методов чтения листов
- Calamine engine — быстрое чтение (в 20 раз быстрее openpyxl)
myapps/
├── app/
│ ├── main.py # FastAPI приложение
│ ├── excel_logic.py # Логика обработки Excel
│ └── __init__.py
├── requirements.txt # Зависимости
├── start.sh # Скрипт запуска
├── README.md # Документация
└── Промт-задача.md # Спецификация задачи
MIT