Phân quyền Arkon — tra cứu đầy đủ
Hai khái niệm nền:
Employee.global_rolelà enum cố định (viewer|contributor|knowledge_manager|admin) + tư cách thành viênEmployeeDepartment(một người thuộc nhiều dept; zero-dept chỉ thấyglobal). Quyền có format{resource}:{action}:{scope}vớiown_deptvsall.
Bảng role
| Role | Quyền cốt lõi (ROLE_PERMISSIONS_MAP) | Là ai |
|---|---|---|
viewer | doc/wiki/skill:read:own_dept, org:departments:read, org:employees:read | Đọc tri thức trong dept mình + global |
contributor | viewer + doc:create:own_dept, wiki:write:own_dept, skill:create:own_dept | Upload tài liệu, propose draft Wiki/skill |
knowledge_manager | doc/wiki/skill:*:all + skill:contribution:review + org:departments:read/manage, org:employees:read/manage, org:audit:read | Duyệt nội dung toàn hệ thống, quản category và department |
admin | ALL_PERMISSIONS (bypass mọi check) | Quản trị hệ thống |
Chưa gán role mặc định: doc:read/create:own_dept, wiki:read/write:own_dept, skill:read:own_dept,
org:departments:read.
Scope Department vs Global
Department: cô lập theo phòng ban (HR, Legal, Engineering…). Không có hàng liên kết department = tài liệuglobal(SOP/chính sách chung).- Out-of-scope chỉ lộ tên scope, không lộ tiêu đề/nội dung.
Tài liệu Arkon cũ còn mô tả Workspace realm + routers/projects.py, nhưng code hiện tại không còn —
thực tế dùng Department / Global scope.
Ngưỡng viết vs duyệt
propose draftcầnwiki:write:*(contributor làm được).- Direct edit / approve cần
wiki:write:all(chỉ manager/admin) — contributor không tự duyệt bài mình.
MCP token scope
Token HMAC-SHA256, verify mỗi request (đổi role/dept/revoke hiệu lực ngay, không cache).
MCP_TOKEN_PEPPER bắt buộc. User tự phục vụ ở Profile → McpTokenCard; admin cấp/thu hồi ở Employees
(POST/DELETE /api/employees/{id}/token).
Chi tiết dùng: Board ↔ Wiki, Skills & MCP.