# Generated by Django 5.2.13 on 2026-04-24 10:33 import django.db.models.deletion from django.conf import settings from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Category', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=50, unique=True, verbose_name='分类名称')), ('description', models.CharField(blank=True, default='', max_length=200, verbose_name='描述')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ], options={ 'verbose_name': '设备分类', 'verbose_name_plural': '设备分类', 'ordering': ['name'], }, ), migrations.CreateModel( name='Asset', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('asset_number', models.CharField(db_index=True, max_length=50, unique=True, verbose_name='资产编号')), ('name', models.CharField(max_length=100, verbose_name='设备名称')), ('brand', models.CharField(blank=True, default='', max_length=50, verbose_name='品牌')), ('model', models.CharField(blank=True, default='', max_length=100, verbose_name='型号')), ('serial_number', models.CharField(blank=True, db_index=True, default='', max_length=100, verbose_name='序列号')), ('location', models.CharField(blank=True, default='', help_text='楼层/房间/区域', max_length=200, verbose_name='设备位置')), ('cabinet', models.CharField(blank=True, default='', max_length=50, verbose_name='机柜')), ('cabinet_position', models.CharField(blank=True, default='', help_text='U位', max_length=50, verbose_name='机柜位置')), ('ip_address', models.GenericIPAddressField(blank=True, null=True, verbose_name='IP地址')), ('purchase_date', models.DateField(blank=True, null=True, verbose_name='采购日期')), ('warranty_expire', models.DateField(blank=True, null=True, verbose_name='质保到期')), ('supplier', models.CharField(blank=True, default='', max_length=100, verbose_name='供应商')), ('responsible_person', models.CharField(blank=True, default='', max_length=50, verbose_name='负责人')), ('status', models.CharField(choices=[('in_use', '在用'), ('idle', '闲置'), ('maintenance', '维修中'), ('scrapped', '已报废')], default='in_use', max_length=20, verbose_name='状态')), ('remark', models.TextField(blank=True, default='', verbose_name='备注')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('updated_at', models.DateTimeField(auto_now=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='创建人')), ('category', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='assets', to='assetapp.category', verbose_name='设备分类')), ], options={ 'verbose_name': '硬件资产', 'verbose_name_plural': '硬件资产', 'ordering': ['-created_at'], }, ), migrations.CreateModel( name='AssetChangeLog', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('asset_number', models.CharField(db_index=True, max_length=50, verbose_name='资产编号')), ('action', models.CharField(choices=[('create', '创建'), ('update', '更新'), ('delete', '删除'), ('import', '导入'), ('export', '导出'), ('status_change', '状态变更')], max_length=20, verbose_name='操作类型')), ('field_name', models.CharField(blank=True, default='', max_length=50, verbose_name='变更字段')), ('old_value', models.TextField(blank=True, default='', verbose_name='旧值')), ('new_value', models.TextField(blank=True, default='', verbose_name='新值')), ('description', models.TextField(blank=True, default='', verbose_name='描述')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='操作时间')), ('asset', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='change_logs', to='assetapp.asset', verbose_name='资产')), ('operator', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='操作人')), ], options={ 'verbose_name': '变更记录', 'verbose_name_plural': '变更记录', 'ordering': ['-created_at'], }, ), ]