feat: 实现 AI-First 代理系统
核心功能: - AIAgent 模型:AI 代理身份管理 - AIOperationLog: AI 操作日志记录 - AITask: AI 异步任务系统 - AIWebhook: AI webhook 订阅 API 端点: - POST /api/agents/auth/ - AI 代理认证 - GET/POST /api/agents/ - 代理管理 - GET /api/agent-logs/ - 操作日志查询 - GET/POST /api/agent-tasks/ - 任务管理 - GET/POST /api/agent-webhooks/ - Webhook 管理 - POST /api/batch/ - 批量操作 预置 AI 代理: - content-moderator-ai: 内容审核 AI - content-generator-ai: 内容生成 AI - service-curator-ai: 服务推荐 AI - analytics-ai: 数据分析 AI - admin-ai: 管理员 AI 文档: - AI_AGENT.md: AI-First 设计文档 - init_agents.py: AI 代理初始化脚本 测试: - 认证系统测试通过 - JWT token 生成正常 - 权限系统工作正常
This commit is contained in:
107
city-manual/backend/agents/admin.py
Normal file
107
city-manual/backend/agents/admin.py
Normal file
@@ -0,0 +1,107 @@
|
||||
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']
|
||||
}),
|
||||
)
|
||||
Reference in New Issue
Block a user