Files
ai-ticket-platform/backend/apps/accounts/permissions.py
2026-07-01 14:04:22 +08:00

71 lines
2.6 KiB
Python

from dataclasses import dataclass
@dataclass(frozen=True)
class PermissionSpec:
codename: str
name: str
module: str
PERMISSIONS: tuple[PermissionSpec, ...] = (
PermissionSpec("ticket.view", "查看工单", "工单"),
PermissionSpec("ticket.create", "创建工单", "工单"),
PermissionSpec("ticket.edit", "编辑工单", "工单"),
PermissionSpec("ticket.export", "导出工单", "工单"),
PermissionSpec("ticket.assign", "分派工单", "工单"),
PermissionSpec("ticket.close", "关闭工单", "工单"),
PermissionSpec("solution.view", "查看解决方案", "解决方案"),
PermissionSpec("solution.manage", "管理解决方案", "解决方案"),
PermissionSpec("knowledge.view", "查看知识库", "知识库"),
PermissionSpec("knowledge.manage", "管理知识库", "知识库"),
PermissionSpec("agent.use", "使用 Agent", "AI 平台"),
PermissionSpec("agent.manage", "管理 Agent", "AI 平台"),
PermissionSpec("model.manage", "管理模型配置", "AI 平台"),
PermissionSpec("tool.manage", "管理 MCP 工具", "AI 平台"),
PermissionSpec("system.user.view", "查看用户", "系统治理"),
PermissionSpec("system.user.manage", "管理用户", "系统治理"),
PermissionSpec("system.user_group.view", "查看用户组", "系统治理"),
PermissionSpec("system.user_group.manage", "管理用户组", "系统治理"),
PermissionSpec("system.role.view", "查看角色权限", "系统治理"),
PermissionSpec("system.role.manage", "管理角色权限", "系统治理"),
PermissionSpec("system.menu.view", "查看菜单权限", "系统治理"),
PermissionSpec("system.menu.manage", "管理菜单权限", "系统治理"),
PermissionSpec("system.audit.view", "查看操作审计", "系统治理"),
PermissionSpec("system.setting.manage", "管理系统设置", "系统治理"),
)
DEFAULT_GROUPS: dict[str, tuple[str, ...]] = {
"系统管理员": tuple(permission.codename for permission in PERMISSIONS),
"知识库管理员": (
"ticket.view",
"knowledge.view",
"knowledge.manage",
"solution.view",
"solution.manage",
"agent.use",
),
"技术支持": (
"ticket.view",
"ticket.create",
"ticket.edit",
"ticket.assign",
"ticket.close",
"knowledge.view",
"solution.view",
"agent.use",
),
"普通建单人": (
"ticket.view",
"ticket.create",
"knowledge.view",
"solution.view",
),
"只读审计员": (
"ticket.view",
"knowledge.view",
"solution.view",
"system.audit.view",
),
}