Виндсерф сгенерировал реадми
All checks were successful
Auto-Deploy-prodman / deploy (push) Successful in 10s
All checks were successful
Auto-Deploy-prodman / deploy (push) Successful in 10s
This commit is contained in:
282
README.md
Normal file
282
README.md
Normal file
@@ -0,0 +1,282 @@
|
|||||||
|
# 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 для внешних интеграций
|
||||||
@@ -223,7 +223,7 @@ class Item(models.Model):
|
|||||||
help_text="Выберите тип заготовки для этой детали"
|
help_text="Выберите тип заготовки для этой детали"
|
||||||
)
|
)
|
||||||
|
|
||||||
weight = models.FloatField("Вес", default=0, blank=True, null=True)
|
weight = models.FloatField("Масса", default=0, blank=True, null=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = "Компонент"
|
verbose_name = "Компонент"
|
||||||
|
|||||||
BIN
media/drawings/МТЛЕ_0323.000.00_СБ_ФМ-0159-2Новая.pdf
Normal file
BIN
media/drawings/МТЛЕ_0323.000.00_СБ_ФМ-0159-2Новая.pdf
Normal file
Binary file not shown.
3254
media/dxf_files/2026/02/ИИ_0323.000.02-71_Фланец.DXF
Normal file
3254
media/dxf_files/2026/02/ИИ_0323.000.02-71_Фланец.DXF
Normal file
File diff suppressed because it is too large
Load Diff
3190
media/dxf_files/2026/02/ИИ_0323.000.03_Косынка.DXF
Normal file
3190
media/dxf_files/2026/02/ИИ_0323.000.03_Косынка.DXF
Normal file
File diff suppressed because it is too large
Load Diff
2547
media/iges_files/2026/02/ИИ_0323.000.01-71_Труба_159х4_L1990.IGS
Normal file
2547
media/iges_files/2026/02/ИИ_0323.000.01-71_Труба_159х4_L1990.IGS
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user