Сортировка в таблицах и попытка приструнить генерацию превьюшек
All checks were successful
Deploy MES Core / deploy (push) Successful in 13s

This commit is contained in:
2026-04-03 01:10:05 +03:00
parent cddbfeadde
commit b76ce4913f
16 changed files with 722 additions and 34 deletions

View File

@@ -0,0 +1,38 @@
# Generated by Django 6.0.3 on 2026-04-02 21:33
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('shiftflow', '0012_dxfpreviewsettings'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='DxfPreviewJob',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('status', models.CharField(choices=[('queued', 'В очереди'), ('running', 'Выполняется'), ('done', 'Готово'), ('failed', 'Ошибка')], default='queued', max_length=16, verbose_name='Статус')),
('started_at', models.DateTimeField(blank=True, null=True, verbose_name='Начато')),
('finished_at', models.DateTimeField(blank=True, null=True, verbose_name='Завершено')),
('total', models.PositiveIntegerField(default=0, verbose_name='Всего задач')),
('processed', models.PositiveIntegerField(default=0, verbose_name='Обработано')),
('updated', models.PositiveIntegerField(default=0, verbose_name='Обновлено')),
('skipped', models.PositiveIntegerField(default=0, verbose_name='Пропущено')),
('errors', models.PositiveIntegerField(default=0, verbose_name='Ошибок')),
('last_message', models.CharField(blank=True, default='', max_length=255, verbose_name='Сообщение')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Создано')),
('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='Запустил')),
],
options={
'verbose_name': 'Задача превью DXF',
'verbose_name_plural': 'Задачи превью DXF',
'ordering': ['-id'],
},
),
]

View File

@@ -0,0 +1,33 @@
# Generated by Django 6.0.3 on 2026-04-02 22:06
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('shiftflow', '0013_dxfpreviewjob'),
]
operations = [
migrations.AddField(
model_name='dxfpreviewjob',
name='cancel_requested',
field=models.BooleanField(default=False, help_text='Если включено — воркер завершит задачу после текущей детали', verbose_name='Запрошена остановка'),
),
migrations.AddField(
model_name='dxfpreviewjob',
name='pid',
field=models.PositiveIntegerField(blank=True, help_text='Номер процесса, который выполняет задачу (для диагностики)', null=True, verbose_name='PID процесса'),
),
migrations.AddField(
model_name='dxfpreviewsettings',
name='per_task_timeout_sec',
field=models.PositiveIntegerField(default=45, help_text='Если конкретный DXF завис — убиваем обработку этой детали и идём дальше', verbose_name='Таймаут на 1 DXF (сек)'),
),
migrations.AlterField(
model_name='dxfpreviewjob',
name='status',
field=models.CharField(choices=[('queued', 'В очереди'), ('running', 'Выполняется'), ('done', 'Готово'), ('failed', 'Ошибка'), ('cancelled', 'Остановлено')], default='queued', max_length=16, verbose_name='Статус'),
),
]