Files
sklad_legacy/README.md
2025-08-22 19:26:43 +03:00

428 lines
21 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Система управления складом "Склад-Менеджер"
Современная веб-система для управления складом деталей и операциями с разными уровнями доступа.
## 🚀 Возможности системы
### Основной функционал
- **Управление позициями**: добавление, редактирование, удаление позиций
- **Операции склада**: приход и расход позиций
- **Каталог позиций**: удобный просмотр с фильтрами и поиском
- **История операций**: полный учет всех операций со складом
- **Поиск**: быстрый поиск позиций и операций
- **Отчеты**: генерация различных отчетов
- **Экспорт данных**: выгрузка в 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](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: экспорт всей структуры отчета (сводка, таблицы)
## 📊 Структура данных
### Позиция
```javascript
{
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"
}
```
### Операция
```javascript
{
id: 1,
type: "incoming", // или "outgoing"
itemId: 1,
itemName: "Название товара",
quantity: 10,
employeeId: 1,
employeeName: "Имя сотрудника",
date: "2025-08-15T10:00:00Z",
status: "completed",
supplier: "Поставщик",
recipient: "Получатель",
notes: "Примечания"
}
```
### Пользователь
```javascript
{
id: 1,
username: "admin",
name: "Администратор",
email: "admin@company.com",
roles: ["admin"],
permissions: ["read", "write", "delete", "admin"],
department: "IT",
position: "Системный администратор"
}
```
### Категория
```javascript
{
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`:
```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`:
```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](DEPLOYMENT.md)** - подробные инструкции по развертыванию
### Сообщение об ошибках
При обнаружении ошибок:
1. Опишите проблему подробно
2. Укажите версию браузера
3. Приложите скриншот ошибки
4. Опишите шаги для воспроизведения
### Запросы функций
Для добавления новых функций:
1. Опишите требуемую функциональность
2. Укажите приоритет
3. Приведите примеры использования
## 👥 Авторы
- **Разработка**: Roman Pylaev
- **Дизайн**: Roman Pylaev
- **Тестирование**: Roman Pylaev
- **Production-готовность**: Roman Pylaev
## 📞 Контакты
- **Telegram/Discord**: @dark7es