Добавление интеграции OpenRouter AI

This commit is contained in:
2026-01-15 12:19:29 +03:00
parent 401993526b
commit a23d714128
8 changed files with 571 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
# Generated by Django 5.0.10 on 2026-01-14 14:17
import integrations.fields
import integrations.models.ai_services.glm
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('integrations', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='GLMIntegration',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('is_active', models.BooleanField(db_index=True, default=False, help_text='Глобальный тумблер включения интеграции', verbose_name='Активна')),
('name', models.CharField(blank=True, default='', help_text='Произвольное название для удобства (опционально)', max_length=100, verbose_name='Название')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Дата создания')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Дата обновления')),
('extra_config', models.JSONField(blank=True, default=dict, verbose_name='Доп. настройки')),
('api_key', integrations.fields.EncryptedCharField(blank=True, help_text='Ключ для доступа к API GLM от Z.AI (шифруется в БД)', max_length=500, verbose_name='API ключ')),
('api_url', models.URLField(default='https://api.z.ai/api/paas/v4', help_text='URL для обращения к API GLM (обычно https://api.z.ai/api/paas/v4)', max_length=500, verbose_name='URL API')),
('model_name', models.CharField(default='glm-4.7', help_text='Название используемой модели GLM (например, glm-4.7)', max_length=100, verbose_name='Название модели')),
('temperature', models.FloatField(default=0.7, help_text='Параметр температуры для генерации (0.0-1.0)', validators=[integrations.models.ai_services.glm.validate_temperature], verbose_name='Температура')),
('is_coding_endpoint', models.BooleanField(default=False, help_text='Отметьте, если используете специальный эндпоинт для задач программирования', verbose_name='Использовать эндпоинт для кодинга')),
],
options={
'verbose_name': 'Интеграция GLM',
'verbose_name_plural': 'Интеграции GLM',
},
),
migrations.AlterField(
model_name='recommerceintegration',
name='integration_type',
field=models.CharField(choices=[('marketplace', 'Маркетплейс'), ('payment', 'Платёжная система'), ('shipping', 'Служба доставки'), ('ai_service', 'Сервис ИИ')], default='marketplace', editable=False, max_length=20),
),
migrations.AlterField(
model_name='woocommerceintegration',
name='integration_type',
field=models.CharField(choices=[('marketplace', 'Маркетплейс'), ('payment', 'Платёжная система'), ('shipping', 'Служба доставки'), ('ai_service', 'Сервис ИИ')], default='marketplace', editable=False, max_length=20),
),
]

View File

@@ -0,0 +1,35 @@
# Generated migration for OpenRouter integration
import integrations.fields
import integrations.models.ai_services.openrouter
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('integrations', '0006_update_glm_model_to_glm4'),
]
operations = [
migrations.CreateModel(
name='OpenRouterIntegration',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('is_active', models.BooleanField(db_index=True, default=False, help_text='Глобальный тумблер включения интеграции', verbose_name='Активна')),
('name', models.CharField(blank=True, default='', help_text='Произвольное название для удобства (опционально)', max_length=100, verbose_name='Название')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Дата создания')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Дата обновления')),
('extra_config', models.JSONField(blank=True, default=dict, verbose_name='Доп. настройки')),
('api_key', integrations.fields.EncryptedCharField(blank=True, help_text='Ключ для доступа к API OpenRouter (шифруется в БД)', max_length=500, verbose_name='API ключ')),
('api_url', models.URLField(default='https://openrouter.ai/api/v1', help_text='URL для обращения к API OpenRouter (обычно https://openrouter.ai/api/v1)', max_length=500, verbose_name='URL API')),
('model_name', models.CharField(default='xiaomi/mimo-v2-flash:free', help_text='Название используемой модели OpenRouter', max_length=100, verbose_name='Название модели')),
('temperature', models.FloatField(default=0.7, help_text='Параметр температуры для генерации (0.0-2.0)', validators=[integrations.models.ai_services.openrouter.validate_temperature], verbose_name='Температура')),
('max_tokens', models.IntegerField(default=1000, help_text='Максимальное количество токенов в ответе', verbose_name='Макс. токенов')),
],
options={
'verbose_name': 'Интеграция OpenRouter',
'verbose_name_plural': 'Интеграции OpenRouter',
},
),
]

View File

@@ -0,0 +1,32 @@
# Generated migration for OpenRouter temperature choices
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('integrations', '0007_openrouter'),
]
operations = [
migrations.AlterField(
model_name='openrouterintegration',
name='temperature',
field=models.FloatField(
default=0.7,
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 - Максимальная креативность'),
],
help_text='Параметр температуры для генерации (0.0-2.0)',
validators=[],
verbose_name='Температура'
),
),
]