Files
sklad_legacy/README.md
2025-08-22 19:27:49 +03:00

21 KiB
Raw Permalink Blame History

Система управления складом "Склад-Менеджер"

Современная веб-система для управления складом деталей и операциями с разными уровнями доступа.

🚀 Возможности системы

Основной функционал

  • Управление позициями: добавление, редактирование, удаление позиций
  • Операции склада: приход и расход позиций
  • Каталог позиций: удобный просмотр с фильтрами и поиском
  • История операций: полный учет всех операций со складом
  • Поиск: быстрый поиск позиций и операций
  • Отчеты: генерация различных отчетов
  • Экспорт данных: выгрузка в CSV и JSON форматах
  • Настраиваемые категории: полный CRUD для категорий позиций
  • Hover-навигация: выпадающее меню категорий при наведении

Система безопасности

  • Многоуровневая авторизация с разными ролями
  • Контроль доступа к функциям системы
  • Безопасные сессии пользователей
  • Валидация данных на всех уровнях
  • Проверка прав доступа для каждой операции
  • Безопасная обработка ошибок с информативными уведомлениями
  • URL валидация параметров и фильтров
  • Автоматическое скрытие элементов в зависимости от ролей

Уровни доступа

🔧 Администратор (admin/admin123)

  • Полный доступ ко всем функциям
  • Управление пользователями
  • Настройка системы
  • Просмотр всех отчетов
  • Удаление позиций и категорий

👔 Менеджер (manager/manager123)

  • Чтение и запись данных
  • Управление товарами
  • Оформление операций
  • Просмотр отчетов
  • Создание и редактирование категорий

👷 Оператор (operator/operator123)

  • Только чтение данных
  • Просмотр каталога и истории
  • Экспорт данных
  • Ограниченный доступ к функциям

👁️ Наблюдатель (viewer/viewer123)

  • Ограниченный просмотр
  • Только чтение данных
  • Экспорт данных
  • Минимальный доступ

📁 Структура проекта

warehouse-system/
├── index.html              # Главная страница
├── login.html              # Страница авторизации
├── catalog.html            # Каталог товаров
├── history.html            # История операций
├── search.html             # Поиск
├── profile.html            # Профиль пользователя
├── admin/
│   ├── categories.html     # Управление категориями
│   └── users.html          # Управление пользователями
├── css/
│   └── style.css           # Основные стили
├── js/
│   ├── auth.js             # Система авторизации и прав доступа
│   ├── main.js             # Основная логика
│   ├── warehouse.js        # Управление складом
│   ├── catalog.js          # Каталог товаров
│   ├── history.js          # История операций
│   ├── search.js           # Поиск
│   ├── profile.js          # Профиль пользователя
│   ├── categories.js       # Управление категориями
│   └── users.js            # Управление пользователями
└── README.md               # Документация

🚀 Старт

Для разработки/демо

  1. Откройте login.html
  2. Используйте тестовые учетные записи:
    • Администратор: admin / admin123
    • Менеджер: manager / manager123
    • Оператор: operator / operator123
    • Наблюдатель: viewer / viewer123

Настройка Email-уведомлений

  1. Скопируйте server/env.email.example в server/.env
  2. Настройте параметры SMTP-сервера:
    • Для Gmail: используйте App Password
    • Для Yandex/Mail.ru: используйте обычный пароль
  3. Перезапустите сервер
  4. Протестируйте отправку в разделе "Тест Email" (только для администраторов)

Для продакшна

Система полностью готова к развертыванию в продакшн! См. подробные инструкции:

  • 📋 DEPLOYMENT.md - пошаговое руководство по развертыванию

2. Начальная настройка

  1. Войдите как администратор
  2. Создайте категории позиций через "Администрирование" → "Категории позиций"
  3. Добавьте первые позиции через "Каталог" → "Добавить позицию"
  4. Настройте права доступа для пользователей

📖 Руководство пользователя

Главная страница

  • Быстрые действия: добавление товаров, приход/расход (согласно правам доступа)
  • Статистика: общая информация о складе
  • Последние операции: мониторинг активности
  • Быстрая навигация: выпадающее меню категорий при наведении

Hover-навигация по категориям

  • Выпадающее меню: появляется при наведении на "Каталог"
  • Плавная анимация: плавное появление и исчезновение
  • Быстрый переход: клик по категории открывает отфильтрованный каталог
  • URL фильтрация: прямые ссылки вида catalog.html?category=electronics
  • Визуальная обратная связь: иконки, цвета и количество позиций в категориях
  • Единообразие: одинаковое меню на всех страницах
  • Умное поведение: меню не закрывается при наведении на само меню

Каталог позиций

  • Просмотр: все позиции с фильтрами и статистикой
  • Поиск: по названию, описанию, штрих-коду
  • Фильтры: по категории, цене, наличию, статусу запасов
  • Редактирование: изменение информации о позициях (только для админов и менеджеров)
  • Удаление: удаление позиций (только для администраторов)
  • Экспорт: выгрузка каталога в CSV формате
  • Безопасность: проверка прав доступа для всех операций
  • Hover-навигация: выпадающее меню категорий при наведении
  • URL фильтрация: прямая ссылка на отфильтрованный каталог

История операций

  • Просмотр: все операции с детализацией
  • Фильтры: по типу, дате, товару, сотруднику
  • Отчеты: генерация различных отчетов
  • Экспорт: выгрузка данных

Поиск

  • Универсальный поиск: позиции и операции
  • Расширенные фильтры: точная настройка
  • Результаты: с подсветкой найденного
  • Экспорт результатов: сохранение найденного
  • Hover-навигация: переход к категориям из результатов поиска

Профиль пользователя

  • Информация: личные данные и права
  • Статистика: активность пользователя
  • Настройки: персонализация интерфейса
  • Безопасность: смена пароля

Администрирование

  • Управление категориями: создание, редактирование, удаление категорий
  • Настройка иконок: выбор иконок Font Awesome для категорий
  • Цветовая схема: настройка цветов категорий
  • Активность категорий: включение/отключение категорий
  • Управление пользователями: полный CRUD для пользователей системы
  • Назначение ролей: гибкая система ролей и разрешений
  • Статус пользователей: активация/деактивация учетных записей
  • Отчеты: фильтры по периоду, категории, сотруднику; экспорт CSV/JSON

📊 Отчеты

Доступ

Откройте "Администрирование" → "Отчеты" (admin/reports.html). Доступен пользователям с правами admin или manager (чтение).

Фильтры

  • Период: дата от/до
  • Тип операции: приход/расход/все
  • Категория: выбор категории
  • Товар: название/штрихкод
  • Сотрудник: логин или ФИО

Разделы

  • Сводка: суммарный приход, расход, количество операций, уникальные товары
  • Операции: таблица операций с деталями
  • Остатки по категориям: количество позиций и суммарный остаток
  • ТОП товаров по движению: лидеры по приходу/расходу

Экспорт

  • CSV: экспорт таблицы операций
  • JSON: экспорт всей структуры отчета (сводка, таблицы)

📊 Структура данных

Позиция

{
  id: 1,
  name: "Название товара",
  category: "electronics",
  price: 1000,
  quantity: 50,
  description: "Описание товара",
  barcode: "1234567890123",
  minQuantity: 10,
  location: "Стеллаж A-1",
  supplier: "Поставщик",
  createdAt: "2025-08-15T10:00:00Z",
  updatedAt: "2025-08-15T10:00:00Z"
}

Операция

{
  id: 1,
  type: "incoming", // или "outgoing"
  itemId: 1,
  itemName: "Название товара",
  quantity: 10,
  employeeId: 1,
  employeeName: "Имя сотрудника",
  date: "2025-08-15T10:00:00Z",
  status: "completed",
  supplier: "Поставщик",
  recipient: "Получатель",
  notes: "Примечания"
}

Пользователь

{
  id: 1,
  username: "admin",
  name: "Администратор",
  email: "admin@company.com",
  roles: ["admin"],
  permissions: ["read", "write", "delete", "admin"],
  department: "IT",
  position: "Системный администратор"
}

Категория

{
  id: "electronics",
  name: "Электроника",
  description: "Электронные компоненты и устройства",
  icon: "fas fa-microchip",
  color: "#2c5aa0",
  active: true,
  itemCount: 25,
  totalQuantity: 150,
  createdAt: "2025-08-15T10:00:00Z",
  updatedAt: "2025-08-15T10:00:00Z"
}

🎨 Кастомизация

Изменение цветовой схемы

Отредактируйте CSS переменные в css/style.css:

:root {
    --primary-color: #0d6efd;
    --secondary-color: #6c757d;
    --success-color: #198754;
    --warning-color: #ffc107;
    --danger-color: #dc3545;
    --info-color: #0dcaf0;
}

Настройка hover-меню категорий

Для настройки стилей hover-меню отредактируйте CSS в css/style.css:

#catalogCategoriesDropdown {
    min-width: 280px;
    max-height: 500px;
    overflow-y: auto;
    border: none;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
    border-radius: 12px;
    padding: 0.5rem 0;
}

/* Hover dropdown functionality */
.nav-item.dropdown:hover .dropdown-menu {
    display: block !important;
}

.nav-item.dropdown:hover .dropdown-toggle::after {
    transform: rotate(180deg);
}

Настройка прав доступа

В файле js/auth.js измените массив пользователей или добавьте новые роли и разрешения. Система автоматически скрывает элементы в зависимости от ролей пользователя.

Добавление новых категорий

Через интерфейс системы:

  1. Войдите как администратор или менеджер
  2. Перейдите в "Администрирование" → "Категории позиций"
  3. Нажмите "Добавить категорию"
  4. Заполните форму с иконкой, цветом и описанием

🔒 Безопасность

Система управления правами доступа

  • Автоматическое скрытие элементов: кнопки и функции скрываются согласно ролям
  • Проверка прав на сервере: все операции проверяют права доступа
  • Безопасные сессии: данные пользователя хранятся в LocalStorage
  • Валидация данных: проверка всех входных данных
  • Информативные подсказки: кнопки показывают требуемые права

Production-готовность

  • Удалены отладочные логи из фронтенда
  • Созданы production конфигурации (.env файлы)
  • Настроена безопасность (JWT, CORS, rate limiting)
  • Готовы инструкции по развертыванию

Рекомендации по безопасности

  1. Измените пароли по умолчанию при первом входе
  2. Настройте JWT_SECRET в production окружении
  3. Включите HTTPS с SSL сертификатом
  4. Настройте файрвол и rate limiting
  5. Регулярно обновляйте права доступа
  6. Ведите логи всех операций
  7. Делайте резервные копии данных

📈 Производительность

Оптимизация

  • Используйте современный браузер
  • Включите кэширование
  • Минимизируйте количество одновременных операций
  • Регулярно очищайте старые данные

Production-оптимизация

  • Удалены отладочные логи - улучшена производительность
  • Оптимизирован код - убраны лишние console.log
  • Готовы production скрипты - npm run start:prod
  • Настроено кэширование - статические файлы
  • Оптимизированы запросы - эффективная фильтрация

Технические улучшения

  • Безопасная обработка данных: проверка на null/undefined
  • Валидация форм: клиентская проверка ввода
  • Обработка ошибок: информативные уведомления
  • Права доступа: детальная проверка ролей
  • Оптимизация производительности: эффективная фильтрация
  • URL маршрутизация: обработка параметров и фильтров
  • Асинхронная загрузка: динамическое обновление меню
  • Кэширование данных: оптимизация производительности
  • Hover-функциональность: плавные анимации и переходы

🐛 Устранение неполадок

Частые проблемы

Не работает авторизация

  • Проверьте правильность логина/пароля
  • Очистите кэш браузера
  • Проверьте консоль на ошибки JavaScript
  • Убедитесь, что JavaScript включен в браузере

Не сохраняются данные

  • Проверьте доступ к LocalStorage
  • Убедитесь, что JavaScript включен
  • Проверьте права доступа пользователя

Медленная работа

  • Закройте лишние вкладки
  • Очистите кэш браузера
  • Проверьте количество товаров/операций

Проблемы с каталогом

  • Проверьте права доступа пользователя
  • Убедитесь, что категории загружены корректно
  • Проверьте консоль на ошибки загрузки данных
  • Очистите фильтры, если каталог пустой
  • Проверьте URL параметры для фильтрации по категориям
  • Убедитесь, что hover-меню категорий загружается

Не работает hover-меню

  • Проверьте, что JavaScript загружен корректно
  • Убедитесь, что jQuery подключен
  • Проверьте консоль на ошибки
  • Очистите кэш браузера

Элементы интерфейса скрыты

  • Проверьте роль пользователя
  • Убедитесь, что пользователь авторизован
  • Проверьте права доступа в auth.js
  • Очистите LocalStorage и войдите заново

Логи и отладка

Откройте консоль разработчика (F12) для просмотра ошибок и логов.

🤝 Поддержка

Документация

  • 📋 DEPLOYMENT.md - подробные инструкции по развертыванию

Сообщение об ошибках

При обнаружении ошибок:

  1. Опишите проблему подробно
  2. Укажите версию браузера
  3. Приложите скриншот ошибки
  4. Опишите шаги для воспроизведения

Запросы функций

Для добавления новых функций:

  1. Опишите требуемую функциональность
  2. Укажите приоритет
  3. Приведите примеры использования

👥 Авторы

  • Разработка: Roman Pylaev
  • Дизайн: Roman Pylaev
  • Тестирование: Roman Pylaev

📞 Контакты

  • Telegram/Discord: @dark7es