v0.8.2: DatePicker/Select 暗色主题、公告跑马灯、Toast 全局化、失败原因 tooltip v0.8.3: 团队详情抽屉→弹窗重构 + 修改秒数池功能 + member_count 修复 v0.8.4: AdminAuditLog 模型 + 12 处管理操作埋点 + 日志查询页面(/admin/logs) 审计日志覆盖所有管理员 mutation 操作(充值、修改额度、创建/禁用用户等), 记录操作人、变更前后值、IP 地址,支持按操作类型/操作人/日期筛选。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
37 lines
2.3 KiB
Python
37 lines
2.3 KiB
Python
# Generated by Django 4.2.29 on 2026-03-15 17:11
|
|
|
|
from django.conf import settings
|
|
from django.db import migrations, models
|
|
import django.db.models.deletion
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('accounts', '0004_data_migrate_default_team'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name='AdminAuditLog',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('operator_name', models.CharField(max_length=150, verbose_name='操作人用户名')),
|
|
('action', models.CharField(choices=[('team_create', '创建团队'), ('team_update', '更新团队'), ('team_topup', '团队充值'), ('team_set_pool', '设置团队额度池'), ('team_create_admin', '创建团队管理员'), ('user_create', '创建用户'), ('user_quota_update', '更新用户额度'), ('user_status_toggle', '切换用户状态'), ('settings_update', '更新系统设置'), ('member_create', '创建团队成员'), ('member_quota_update', '更新成员额度'), ('member_status_toggle', '切换成员状态')], max_length=30, verbose_name='操作类型')),
|
|
('target_type', models.CharField(max_length=20, verbose_name='目标类型')),
|
|
('target_id', models.IntegerField(blank=True, null=True, verbose_name='目标ID')),
|
|
('target_name', models.CharField(blank=True, default='', max_length=200, verbose_name='目标名称')),
|
|
('before', models.JSONField(blank=True, null=True, verbose_name='变更前')),
|
|
('after', models.JSONField(blank=True, null=True, verbose_name='变更后')),
|
|
('ip_address', models.GenericIPAddressField(blank=True, null=True, verbose_name='IP地址')),
|
|
('created_at', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='操作时间')),
|
|
('operator', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='audit_logs', to=settings.AUTH_USER_MODEL, verbose_name='操作人')),
|
|
],
|
|
options={
|
|
'verbose_name': '审计日志',
|
|
'verbose_name_plural': '审计日志',
|
|
'ordering': ['-created_at'],
|
|
},
|
|
),
|
|
]
|