108 lines
3.6 KiB
Python
108 lines
3.6 KiB
Python
|
|
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']
|
|||
|
|
}),
|
|||
|
|
)
|