重新架构了整个models
This commit is contained in:
@@ -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='所属分组'),
|
||||
),
|
||||
]
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user