重新架构了整个models

This commit is contained in:
2025-09-07 16:47:12 +08:00
parent 1a4271232f
commit 1cac84b9d4
17 changed files with 1141 additions and 88 deletions

View File

@@ -1,6 +1,7 @@
# Generated by Django 4.2.7 on 2025-06-16 12:51
# Generated by Django 4.2.7 on 2025-09-07 08:41
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
@@ -16,17 +17,50 @@ class Migration(migrations.Migration):
name='Service',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100, verbose_name='服务名称')),
('status', models.CharField(choices=[('operational', '正常运行'), ('degraded', '性能下降'), ('outage', '服务中断')], default='operational', max_length=20, verbose_name='服务状态')),
('description', models.TextField(verbose_name='服务描述')),
('ip_address', models.GenericIPAddressField(verbose_name='IP地址')),
('port', models.PositiveIntegerField(verbose_name='端口号')),
('reliability', models.DecimalField(decimal_places=2, default=99.0, max_digits=5, verbose_name='可靠率(%)')),
('last_updated', models.DateTimeField(default=django.utils.timezone.now, verbose_name='最后更新时间')),
('name', models.CharField(max_length=200, verbose_name='服务名称')),
('host', models.CharField(max_length=255, verbose_name='主机/IP')),
('port', models.PositiveIntegerField(blank=True, null=True, verbose_name='端口(可选)')),
('check_type', models.CharField(choices=[('ping', 'Ping检测'), ('tcp', 'TCP端口检测'), ('http', 'HTTP请求'), ('custom', '自定义脚本')], default='ping', max_length=50, verbose_name='检测类型')),
('description', models.TextField(blank=True, null=True, verbose_name='描述')),
('is_active', models.BooleanField(default=True, verbose_name='是否启用监控')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
],
options={
'verbose_name': '服务状态',
'verbose_name_plural': '服务状态',
'verbose_name': '服务',
'verbose_name_plural': '服务',
},
),
migrations.CreateModel(
name='ServiceGroup',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100, unique=True, verbose_name='服务分组')),
('description', models.TextField(blank=True, null=True, verbose_name='描述')),
],
options={
'verbose_name': '服务分组',
'verbose_name_plural': '服务分组',
},
),
migrations.CreateModel(
name='ServiceCheckRecord',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('status', models.CharField(choices=[('UP', '正常'), ('DOWN', '故障'), ('UNKNOWN', '未知')], max_length=10, verbose_name='状态')),
('response_time', models.FloatField(blank=True, null=True, verbose_name='响应时间(ms)')),
('message', models.TextField(blank=True, null=True, verbose_name='返回信息/错误原因')),
('checked_at', models.DateTimeField(default=django.utils.timezone.now, verbose_name='检测时间')),
('service', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='records', to='status.service')),
],
options={
'verbose_name': '服务检测记录',
'verbose_name_plural': '服务检测记录',
'ordering': ['-checked_at'],
},
),
migrations.AddField(
model_name='service',
name='group',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='services', to='status.servicegroup', verbose_name='所属分组'),
),
]