diff --git a/myproject/integrations/migrations/0009_alter_glmintegration_model_name_and_more.py b/myproject/integrations/migrations/0009_alter_glmintegration_model_name_and_more.py new file mode 100644 index 0000000..c64c3ae --- /dev/null +++ b/myproject/integrations/migrations/0009_alter_glmintegration_model_name_and_more.py @@ -0,0 +1,29 @@ +# Generated by Django 5.0.10 on 2026-01-15 12:25 + +import integrations.models.ai_services.openrouter +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('integrations', '0008_openrouter_temperature_choices'), + ] + + operations = [ + migrations.AlterField( + model_name='glmintegration', + name='model_name', + field=models.CharField(choices=[('glm-4', 'GLM-4 (Платная, дешевле)'), ('glm-4.7', 'GLM-4.7 (Платная)'), ('charglm-3', 'ChargLM-3 (Платная)'), ('glm-4.6v', 'GLM-4.6V (Бесплатная)'), ('glm-4.5v', 'GLM-4.5V (Бесплатная)'), ('glm-4.5-air', 'GLM-4.5-Air (Бесплатная)'), ('glm-4.5-flash', 'GLM-4.5-Flash (Бесплатная)'), ('glm-4.5-flashx', 'GLM-4.5-FlashX (Бесплатная)')], default='glm-4', help_text='Название используемой модели GLM (например, glm-4.7, glm-4)', max_length=100, verbose_name='Название модели'), + ), + migrations.AlterField( + model_name='openrouterintegration', + name='model_name', + field=models.CharField(choices=[('xiaomi/mimo-v2-flash:free', 'Xiaomi MIMO v2 Flash (Бесплатная)'), ('mistralai/devstral-2512:free', 'Mistral Devstral 2512 (Бесплатная)'), ('z-ai/glm-4.5-air:free', 'Z.AI GLM-4.5 Air (Бесплатная)'), ('qwen/qwen3-coder:free', 'Qwen 3 Coder (Бесплатная)')], default='xiaomi/mimo-v2-flash:free', help_text='Название используемой модели OpenRouter', max_length=100, verbose_name='Название модели'), + ), + migrations.AlterField( + model_name='openrouterintegration', + name='temperature', + field=models.FloatField(choices=[(0.1, '0.1 - Очень консервативно'), (0.3, '0.3 - Консервативно'), (0.5, '0.5 - Умеренно'), (0.7, '0.7 - Баланс (по умолчанию)'), (1.0, '1.0 - Креативно'), (1.5, '1.5 - Очень креативно'), (2.0, '2.0 - Максимальная креативность')], default=0.7, help_text='Параметр температуры для генерации (0.0-2.0)', validators=[integrations.models.ai_services.openrouter.validate_temperature], verbose_name='Температура'), + ), + ] diff --git a/myproject/orders/forms.py b/myproject/orders/forms.py index 395ef0d..9e6bc6a 100644 --- a/myproject/orders/forms.py +++ b/myproject/orders/forms.py @@ -194,9 +194,16 @@ class OrderForm(forms.ModelForm): 'needs_product_photo', 'needs_delivery_photo', 'special_instructions', + 'summary', ] widgets = { 'special_instructions': forms.Textarea(attrs={'rows': 3}), + 'summary': forms.Textarea(attrs={ + 'rows': 5, + 'placeholder': 'Кратко опишите заказ на естественном языке...', + 'class': 'form-control', + 'style': 'resize: vertical; min-height: 100px;' + }), } def __init__(self, *args, **kwargs): diff --git a/myproject/orders/migrations/0003_order_summary.py b/myproject/orders/migrations/0003_order_summary.py new file mode 100644 index 0000000..713e702 --- /dev/null +++ b/myproject/orders/migrations/0003_order_summary.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0.10 on 2026-01-15 12:25 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('orders', '0002_initial'), + ] + + operations = [ + migrations.AddField( + model_name='order', + name='summary', + field=models.TextField(blank=True, help_text="Краткое описание заказа на естественном языке (например: '21 фридом 60 см в упаковке на наше усмотрение')", null=True, verbose_name='Резюме заказа'), + ), + ] diff --git a/myproject/orders/models/order.py b/myproject/orders/models/order.py index b7786e6..be8fd7e 100644 --- a/myproject/orders/models/order.py +++ b/myproject/orders/models/order.py @@ -122,6 +122,13 @@ class Order(models.Model): help_text="Комментарии и пожелания к заказу" ) + summary = models.TextField( + blank=True, + null=True, + verbose_name="Резюме заказа", + help_text="Краткое описание заказа на естественном языке (например: '21 фридом 60 см в упаковке на наше усмотрение')" + ) + # Фото needs_product_photo = models.BooleanField( default=False, diff --git a/myproject/orders/templates/orders/order_detail.html b/myproject/orders/templates/orders/order_detail.html index af723af..93cbe6a 100644 --- a/myproject/orders/templates/orders/order_detail.html +++ b/myproject/orders/templates/orders/order_detail.html @@ -21,6 +21,12 @@ {% endif %} + {% if order.summary %} +
{{ order.summary|linebreaks }}
+