# Generated by Django 6.0.2 on 2026-02-13 19:18 import django.db.models.deletion from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ ('bom_manager', '0004_alter_bomnode_options_alter_bomnode_quantity_and_more'), ] operations = [ migrations.CreateModel( name='WorkCenter', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100, verbose_name='Название станка/участка')), ('rate_per_hour', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='Стоимость часа')), ], options={ 'verbose_name': 'Станок/участок', 'verbose_name_plural': 'Станки/участки', }, ), migrations.CreateModel( name='RoutingStep', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('operation_type', models.CharField(choices=[('LRL', 'Лазерная резка листа (ЛРЛ)'), ('LRT', 'Лазерная резка трубы (ЛРТ)'), ('TO', 'Токарная обработка (ТО)'), ('WELD', 'Сварка'), ('PAINT', 'Покраска'), ('BEND', 'Гибка'), ('CLEAN', 'Зачистка'), ('BANDSAW', 'Лентопильный станок'), ('MOVE', 'Перемещение')], max_length=10, verbose_name='Тип операции')), ('order', models.PositiveIntegerField(default=10, help_text='Например: 10, 20, 30...', verbose_name='Номер операции')), ('drawing_file', models.FileField(blank=True, null=True, upload_to='tech_files/%Y/%m', verbose_name='Тех. файл (DXF/IGES)')), ('tech_params', models.JSONField(blank=True, default=dict, verbose_name='Технологические параметры')), ('setup_time', models.DurationField(blank=True, null=True, verbose_name='Время наладки')), ('cycle_time', models.DurationField(blank=True, null=True, verbose_name='Время цикла (на 1 шт)')), ('item', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='routing_steps', to='bom_manager.item', verbose_name='Деталь/Сборка')), ('work_center', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='bom_manager.workcenter', verbose_name='Станок/Участок')), ], options={ 'verbose_name': 'Технологическая операция', 'verbose_name_plural': 'Технологический маршрут', 'ordering': ['order'], }, ), ]