Files
chengshishouce/city-manual/backend/agents/admin.py

108 lines
3.6 KiB
Python
Raw Normal View History

from django.contrib import admin
from .models import AIAgent, AIOperationLog, AITask, AIWebhook
@admin.register(AIAgent)
class AIAgentAdmin(admin.ModelAdmin):
list_display = ['agent_id', 'name', 'is_active', 'rate_limit', 'last_seen', 'created_at']
list_filter = ['is_active', 'permissions', 'created_at']
search_fields = ['agent_id', 'name', 'description']
readonly_fields = ['created_at', 'updated_at', 'last_seen']
fieldsets = (
('基本信息', {
'fields': ['agent_id', 'name', 'description', 'secret_key']
}),
('权限配置', {
'fields': ['permissions'],
'description': '可用权限read, write, review, delete, batch, analytics'
}),
('速率限制', {
'fields': ['rate_limit', 'rate_limit_window'],
'description': 'rate_limit: 每小时请求数rate_limit_window: 时间窗口(秒)'
}),
('状态', {
'fields': ['is_active', 'last_seen']
}),
('元数据', {
'fields': ['created_at', 'updated_at'],
'classes': ['collapse']
}),
)
@admin.register(AIOperationLog)
class AIOperationLogAdmin(admin.ModelAdmin):
list_display = ['agent', 'action', 'resource_type', 'resource_id', 'status', 'confidence', 'created_at']
list_filter = ['status', 'action', 'resource_type', 'created_at']
search_fields = ['agent__agent_id', 'action', 'resource_type']
readonly_fields = ['created_at']
date_hierarchy = 'created_at'
fieldsets = (
('操作信息', {
'fields': ['agent', 'action', 'resource_type', 'resource_id', 'status']
}),
('AI 元数据', {
'fields': ['confidence', 'reasoning']
}),
('请求/响应', {
'fields': ['request_data', 'response_data', 'error_message'],
'classes': ['collapse']
}),
('性能', {
'fields': ['execution_time_ms', 'created_at'],
'classes': ['collapse']
}),
)
@admin.register(AITask)
class AITaskAdmin(admin.ModelAdmin):
list_display = ['task_id', 'agent', 'task_type', 'status', 'progress', 'created_at', 'completed_at']
list_filter = ['status', 'task_type', 'created_at']
search_fields = ['task_id', 'agent__agent_id', 'task_type']
readonly_fields = ['created_at', 'started_at', 'completed_at']
fieldsets = (
('任务信息', {
'fields': ['task_id', 'agent', 'task_type', 'status']
}),
('进度', {
'fields': ['progress', 'processed_items', 'total_items']
}),
('结果', {
'fields': ['result', 'error_message'],
'classes': ['collapse']
}),
('回调', {
'fields': ['callback_url', 'callback_secret'],
'classes': ['collapse']
}),
('时间', {
'fields': ['created_at', 'started_at', 'completed_at'],
'classes': ['collapse']
}),
)
@admin.register(AIWebhook)
class AIWebhookAdmin(admin.ModelAdmin):
list_display = ['agent', 'event', 'url', 'is_active', 'last_triggered', 'failure_count']
list_filter = ['event', 'is_active', 'created_at']
search_fields = ['agent__agent_id', 'url', 'event']
readonly_fields = ['created_at', 'last_triggered']
fieldsets = (
('Webhook 信息', {
'fields': ['agent', 'event', 'url', 'secret']
}),
('状态', {
'fields': ['is_active', 'last_triggered', 'failure_count']
}),
('元数据', {
'fields': ['created_at'],
'classes': ['collapse']
}),
)