# 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 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 для внешних интеграций