All checks were successful
Auto-Deploy-prodman / deploy (push) Successful in 10s
283 lines
10 KiB
Markdown
283 lines
10 KiB
Markdown
# ProdMan - Production Management System
|
||
|
||
Система управления производством для управления спецификациями (BOM), материалами и технологическими операциями.
|
||
|
||
## Обзор проекта
|
||
|
||
ProdMan - это веб-приложение на базе Django, предназначенное для управления производственными процессами, включая:
|
||
|
||
- Управление спецификациями материалов (BOM)
|
||
- Учёт и управление складскими запасами
|
||
- Технологические маршруты и операции
|
||
- Управление материалами и заготовками
|
||
- Поддержка различных типов операций (лазерная резка, механическая обработка и др.)
|
||
|
||
## Основные возможности
|
||
|
||
### 📋 Управление спецификациями (BOM Manager)
|
||
- Иерархическая структура изделий с поддержкой MPTT
|
||
- Полиморфные модели для различных типов компонентов
|
||
- Технологические маршруты с последовательностью операций
|
||
- Поддержка различных типов операций (лазерная резка, гибка, сварка и др.)
|
||
|
||
### 🏭 Управление материалами (Stock)
|
||
- Справочник марок стали и нормативных документов (ГОСТ, ТУ, ОСТ)
|
||
- Учёт различных типов заготовок (листовой прокат, трубы, профили)
|
||
- Интеграция с BOM для автоматического расчёта потребности в материалах
|
||
|
||
### 🔧 Технологические операции
|
||
- Лазерная резка листовых материалов
|
||
- Механическая обработка
|
||
- Сборочные операции
|
||
- Контроль качества
|
||
- Гибочные и сварочные работы
|
||
|
||
### 📁 Управление файлами
|
||
- Загрузка и хранение DXF файлов для лазерной резки
|
||
- Поддержка PDF документов для нормативной документации
|
||
- Медиа-файлы для чертежей и документации
|
||
|
||
## Технологический стек
|
||
|
||
- **Backend**: Django 6.0.2
|
||
- **Database**: PostgreSQL (production) / SQLite (development)
|
||
- **Frontend**: Django Templates с Bootstrap
|
||
- **Containerization**: Docker + Docker Compose
|
||
- **Web Server**: Nginx (reverse proxy)
|
||
- **WSGI Server**: Gunicorn
|
||
- **Python**: 3.12
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
Prodman/
|
||
├── bom_manager/ # Управление спецификациями
|
||
│ ├── models.py # Модели BOM, операций, изделий
|
||
│ ├── views.py # Представления
|
||
│ └── ...
|
||
├── stock/ # Управление материалами
|
||
│ ├── models.py # Модели материалов, ГОСТов, заготовок
|
||
│ ├── views.py # Представления
|
||
│ └── ...
|
||
├── core/ # Основные настройки Django
|
||
│ ├── settings.py # Конфигурация проекта
|
||
│ ├── urls.py # URL маршрутизация
|
||
│ └── ...
|
||
├── media/ # Медиа файлы
|
||
├── staticfiles/ # Статические файлы
|
||
├── templates/ # Шаблоны HTML
|
||
├── nginx/ # Конфигурация Nginx
|
||
├── docker-compose.yml # Docker конфигурация
|
||
├── Dockerfile # Docker образ приложения
|
||
└── requirements.txt # Зависимости Python
|
||
```
|
||
|
||
## Установка и запуск
|
||
|
||
### Требования
|
||
- Docker и Docker Compose
|
||
- Python 3.12+ (для локальной разработки)
|
||
- PostgreSQL (для production)
|
||
|
||
### Быстрый старт с Docker
|
||
|
||
1. **Клонирование репозитория**
|
||
```bash
|
||
git clone <repository-url>
|
||
cd Prodman
|
||
```
|
||
|
||
2. **Настройка переменных окружения**
|
||
|
||
Создайте файл `.env` на основе примера:
|
||
```bash
|
||
cp .env.example .env
|
||
```
|
||
|
||
Отредактируйте `.env` файл:
|
||
```env
|
||
ENV_TYPE=server
|
||
DB_NAME=prodman_db
|
||
DB_USER=prodman_user
|
||
DB_PASS=your_secure_password
|
||
DB_HOST=db
|
||
ALLOWED_HOSTS=localhost,your-domain.com
|
||
```
|
||
|
||
3. **Запуск приложения**
|
||
```bash
|
||
docker-compose up -d
|
||
```
|
||
|
||
4. **Выполнение миграций**
|
||
```bash
|
||
docker-compose exec web python manage.py migrate
|
||
```
|
||
|
||
5. **Создание суперпользователя**
|
||
```bash
|
||
docker-compose exec web python manage.py createsuperuser
|
||
```
|
||
|
||
6. **Сбор статических файлов**
|
||
```bash
|
||
docker-compose exec web python manage.py collectstatic --noinput
|
||
```
|
||
|
||
Приложение будет доступно по адресу: `http://localhost:8085`
|
||
|
||
### Локальная разработка
|
||
|
||
1. **Создание виртуального окружения**
|
||
```bash
|
||
python -m venv venv
|
||
source venv/bin/activate # для Windows: venv\Scripts\activate
|
||
```
|
||
|
||
2. **Установка зависимостей**
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
3. **Настройка базы данных**
|
||
|
||
По умолчанию используется SQLite. Для PostgreSQL:
|
||
```env
|
||
ENV_TYPE=dev
|
||
```
|
||
|
||
4. **Выполнение миграций**
|
||
```bash
|
||
python manage.py migrate
|
||
```
|
||
|
||
5. **Запуск сервера разработки**
|
||
```bash
|
||
python manage.py runserver
|
||
```
|
||
|
||
## Конфигурация
|
||
|
||
### Переменные окружения
|
||
|
||
- `ENV_TYPE`: Тип окружения (`local`, `dev`, `server`)
|
||
- `DB_NAME`: Имя базы данных
|
||
- `DB_USER`: Пользователь базы данных
|
||
- `DB_PASS`: Пароль базы данных
|
||
- `DB_HOST`: Хост базы данных
|
||
- `ALLOWED_HOSTS`: Разрешённые хосты через запятую
|
||
|
||
### Режимы работы
|
||
|
||
- **local**: SQLite база данных, DEBUG=True, все хосты разрешены
|
||
- **dev**: PostgreSQL база данных, DEBUG=True, все хосты разрешены
|
||
- **server**: PostgreSQL база данных, DEBUG=False, ограниченные хосты
|
||
|
||
## API и интеграция
|
||
|
||
### Основные модели
|
||
|
||
- **Item**: Базовая модель для компонентов и изделий
|
||
- **BaseOperation**: Базовый класс для технологических операций
|
||
- **BaseMaterial**: Базовая модель для материалов и заготовок
|
||
- **Gost**: Нормативные документы (ГОСТ, ТУ, ОСТ)
|
||
- **MaterialGrade**: Марки материалов
|
||
|
||
### Типы операций
|
||
|
||
- `LaserCutSheet`: Лазерная резка листовых материалов
|
||
- `BendingOperation`: Гибочные операции
|
||
- `WeldingOperation`: Сварочные операции
|
||
- `AssemblyOperation`: Сборочные операции
|
||
|
||
## Разработка
|
||
|
||
### Структура приложений
|
||
|
||
#### bom_manager
|
||
- Модели для управления спецификациями
|
||
- Технологические маршруты
|
||
- Иерархическая структура изделий
|
||
|
||
#### stock
|
||
- Модели материалов и заготовок
|
||
- Справочники ГОСТов и марок стали
|
||
- Учёт складских операций
|
||
|
||
### Добавление новых типов операций
|
||
|
||
1. Создайте новый класс, наследуемый от `BaseOperation`
|
||
2. Определите необходимые поля
|
||
3. Реализуйте метод `clean()` для валидации
|
||
4. Добавьте представление и шаблон при необходимости
|
||
|
||
Пример:
|
||
```python
|
||
class NewOperationType(BaseOperation):
|
||
custom_field = models.CharField("Пользовательское поле", max_length=100)
|
||
|
||
def clean(self):
|
||
super().clean()
|
||
# Дополнительная валидация
|
||
pass
|
||
```
|
||
|
||
## Тестирование
|
||
|
||
```bash
|
||
# Запуск всех тестов
|
||
python manage.py test
|
||
|
||
# Запуск тестов для конкретного приложения
|
||
python manage.py test bom_manager
|
||
python manage.py test stock
|
||
```
|
||
|
||
## Развертывание
|
||
|
||
### Production развертывание
|
||
|
||
1. Настройте переменные окружения в `.env` файле
|
||
2. Убедитесь, что `ENV_TYPE=server`
|
||
3. Настройте SSL сертификаты для HTTPS
|
||
4. Настройте бэкапы базы данных
|
||
5. Настройте мониторинг и логирование
|
||
|
||
### Бэкап и восстановление
|
||
|
||
```bash
|
||
# Бэкап базы данных
|
||
docker-compose exec db pg_dump -U prodman_user prodman_db > backup.sql
|
||
|
||
# Восстановление базы данных
|
||
docker-compose exec -T db psql -U prodman_user prodman_db < backup.sql
|
||
```
|
||
|
||
## Вклад в проект
|
||
|
||
1. Fork репозитория
|
||
2. Создайте feature ветку
|
||
3. Внесите изменения
|
||
4. Добавьте тесты
|
||
5. Отправьте pull request
|
||
|
||
## Лицензия
|
||
|
||
[Добавьте информацию о лицензии]
|
||
|
||
## Контакты
|
||
|
||
[Добавьте контактную информацию]
|
||
|
||
## Известные проблемы
|
||
|
||
- [Список известных проблем и их статусы]
|
||
|
||
## Roadmap
|
||
|
||
- [Планируемые функции и улучшения]
|
||
- Интеграция с CAD системами
|
||
- Автоматический расчёт себестоимости
|
||
- Мобильное приложение
|
||
- API для внешних интеграций
|