Files
KnowledgeBase/.kiro/specs/admin-management-features/requirements.md
lizhuoran 7d13a560f3 feat(权限): 安装和配置 Spatie Permission 包
- 安装 spatie/laravel-permission 包(v6.24.1)
- 发布配置文件和迁移文件
- 运行迁移创建权限表
- 在 User 模型中添加 HasRoles trait
- 添加 isSuperAdmin 和 isAdmin 辅助方法
- 创建 PermissionSeeder 定义 45 个权限
- 创建 3 个预设角色(super-admin、admin、user)
- 为角色分配相应权限
- 为第一个用户分配超级管理员角色
2026-03-11 09:55:40 +08:00

484 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 管理后台功能增强 - 需求文档
## 项目概述
为知识库系统的Filament管理后台添加三个核心管理功能系统设置与操作日志、大屏配置管理、SOP模板管理。
## 功能需求
### 1. 系统设置与操作日志页面
#### 1.1 用户故事
作为系统管理员,我需要能够配置系统全局参数并查看所有用户的操作审计日志,以便管理系统配置和追踪系统变更。
#### 1.2 功能描述
实现系统全局设置和操作审计日志的前端页面。
#### 1.3 验收标准
- [ ] 系统设置页面
- [ ] 嵌入模型配置模型名称、API密钥、端点URL等
- [ ] 分块参数默认值(块大小、重叠大小等)
- [ ] 全局参数(系统名称、超时设置等)
- [ ] 配置保存和验证功能
- [ ] 操作日志列表
- [ ] 显示字段:时间、用户、操作类型、对象、详情
- [ ] 分页功能
- [ ] 排序功能(按时间倒序)
- [ ] 日志筛选功能
- [ ] 时间范围筛选(开始时间、结束时间)
- [ ] 操作类型筛选(创建、更新、删除等)
- [ ] 用户筛选(下拉选择)
- [ ] 日志详情弹窗
- [ ] 显示完整操作信息
- [ ] 变更前后数据对比JSON diff视图
- [ ] 关联对象信息
- [ ] 日志导出功能
- [ ] 支持导出为CSV格式
- [ ] 支持导出为Excel格式
- [ ] 根据当前筛选条件导出
#### 1.4 数据模型需求
- SystemSetting 模型(系统设置)
- key: string配置键
- value: json配置值
- group: string配置分组
- description: text配置说明
- ActivityLog 模型(操作日志)
- user_id: bigint操作用户
- log_name: string日志名称
- description: text操作描述
- subject_type: string对象类型
- subject_id: bigint对象ID
- causer_type: string操作者类型
- causer_id: bigint操作者ID
- properties: json变更数据
- created_at: timestamp操作时间
---
### 2. 大屏配置管理页面
#### 2.1 用户故事
作为系统管理员我需要能够管理大屏终端的配置包括终端绑定、知识库关联和AI提示词设置以便为不同的生产线站提供定制化的大屏展示。
#### 2.2 功能描述
实现大屏终端配置的前端管理页面,支持终端绑定与提示词编辑。
#### 2.3 验收标准
- [ ] 终端列表页
- [ ] 显示在线状态(在线/离线,带状态指示器)
- [ ] 按线站分组显示
- [ ] 终端基本信息名称、IP地址、最后在线时间
- [ ] 快速操作按钮(编辑、删除、查看详情)
- [ ] 终端配置编辑页
- [ ] 线站绑定(选择生产线和工作站)
- [ ] 组态图URL配置
- [ ] 终端名称和描述
- [ ] 显示参数配置(分辨率、刷新频率等)
- [ ] 知识库关联选择器
- [ ] 多选功能
- [ ] 搜索功能(按知识库名称)
- [ ] 显示已选知识库列表
- [ ] 支持拖拽排序优先级
- [ ] AI提示词编辑器
- [ ] 使用Monaco Editor语法高亮
- [ ] 变量提示功能({user}, {station}, {time}等)
- [ ] 模板预设选择
- [ ] 实时预览功能
- [ ] 配置下发与同步
- [ ] 配置下发按钮
- [ ] 同步状态展示(待同步/同步中/已同步/失败)
- [ ] 同步历史记录
- [ ] 批量配置下发
#### 2.4 数据模型需求
- Terminal 模型(大屏终端)
- name: string终端名称
- code: string终端编码
- ip_address: stringIP地址
- station_id: bigint线站ID
- diagram_url: string组态图URL
- display_config: json显示配置
- is_online: boolean在线状态
- last_online_at: timestamp最后在线时间
- TerminalKnowledgeBase 模型(终端知识库关联)
- terminal_id: bigint终端ID
- knowledge_base_id: bigint知识库ID
- priority: integer优先级
- TerminalPrompt 模型(终端提示词)
- terminal_id: bigint终端ID
- prompt_template: text提示词模板
- variables: json变量配置
- TerminalSyncLog 模型(终端同步日志)
- terminal_id: bigint终端ID
- status: enum待同步/同步中/已同步/失败)
- config_snapshot: json配置快照
- synced_at: timestamp同步时间
- error_message: text错误信息
#### 2.5 技术依赖
- 需要安装:`composer require amidesfahani/filament-monaco-editor`
---
### 3. SOP 模板管理页面
#### 3.1 用户故事
作为内容管理员我需要能够创建和管理SOP标准操作程序模板包括步骤编辑和交互任务配置以便为不同的操作场景提供标准化的指导流程。
#### 3.2 功能描述
实现SOP模板与步骤的前端管理页面支持可视化编辑。
#### 3.3 验收标准
- [ ] SOP模板列表页
- [ ] 状态筛选(草稿/已发布/已归档)
- [ ] 分类浏览(按业务分类)
- [ ] 搜索功能(按模板名称、标签)
- [ ] 模板卡片展示(名称、描述、步骤数、状态)
- [ ] 模板创建/编辑表单
- [ ] 基本信息(名称、描述、分类、标签)
- [ ] 适用范围(部门、岗位)
- [ ] 版本管理(版本号、变更说明)
- [ ] 状态管理(草稿/发布/归档)
- [ ] 步骤可视化编辑器
- [ ] 富文本编辑器(支持图片、表格、代码块)
- [ ] 拖拽排序功能
- [ ] 步骤编号自动更新
- [ ] 步骤折叠/展开
- [ ] 步骤复制/删除
- [ ] 交互任务配置组件
- [ ] 任务类型选择(确认、输入、选择、拍照、扫码等)
- [ ] 参数设定(必填项、验证规则、默认值)
- [ ] 条件分支配置
- [ ] 任务超时设置
- [ ] 模板预览与发布
- [ ] 预览模式(模拟实际使用场景)
- [ ] 发布前验证(检查必填项、步骤完整性)
- [ ] 发布确认弹窗
- [ ] 版本历史查看
- [ ] 模板导入/导出
- [ ] 导出为JSON格式
- [ ] 导出为PDF格式用于打印
- [ ] 从JSON导入
- [ ] 批量导入功能
#### 3.4 数据模型需求
- SopTemplate 模型SOP模板
- name: string模板名称
- description: text模板描述
- category: string分类
- tags: json标签
- version: string版本号
- status: enum草稿/已发布/已归档)
- applicable_departments: json适用部门
- applicable_positions: json适用岗位
- published_at: timestamp发布时间
- SopStep 模型SOP步骤
- sop_template_id: bigint模板ID
- step_number: integer步骤序号
- title: string步骤标题
- content: text步骤内容富文本
- sort_order: integer排序
- is_required: boolean是否必需
- SopInteractiveTask 模型(交互任务)
- sop_step_id: bigint步骤ID
- task_type: enum确认/输入/选择/拍照/扫码)
- task_config: json任务配置
- validation_rules: json验证规则
- timeout_seconds: integer超时时间
- is_required: boolean是否必需
- SopTemplateVersion 模型(模板版本)
- sop_template_id: bigint模板ID
- version: string版本号
- change_log: text变更说明
- content_snapshot: json内容快照
- created_by: bigint创建人
- created_at: timestamp创建时间
---
### 4. 权限管理系统
#### 4.1 用户故事
作为系统管理员,我需要能够灵活地为用户、角色和分组配置不同功能模块的访问权限,以便实现细粒度的权限控制和数据隔离。
#### 4.2 功能描述
实现基于角色、用户和分组的多维度权限管理系统,支持功能模块级和数据级权限控制。
#### 4.3 验收标准
- [ ] 角色管理
- [ ] 角色列表(名称、描述、权限数量、用户数量)
- [ ] 角色创建/编辑(名称、描述、权限配置)
- [ ] 角色删除(检查是否有关联用户)
- [ ] 预设角色(超级管理员、管理员、普通用户)
- [ ] 权限配置界面
- [ ] 按功能模块分组展示权限
- [ ] 权限类型viewAny列表、view详情、create创建、update编辑、delete删除、特殊操作
- [ ] 支持批量授权/撤销
- [ ] 权限继承关系展示
- [ ] 用户权限管理
- [ ] 用户角色分配(支持多角色)
- [ ] 用户特殊权限配置(覆盖角色权限)
- [ ] 用户分组关联
- [ ] 权限预览(显示用户的最终权限)
- [ ] 分组权限管理
- [ ] 分组数据访问权限(如专用知识库)
- [ ] 分组成员管理
- [ ] 跨分组访问控制
- [ ] 权限验证
- [ ] 菜单项根据权限动态显示/隐藏
- [ ] 操作按钮根据权限动态显示/隐藏
- [ ] API请求权限验证
- [ ] 数据查询自动应用权限过滤
#### 4.4 权限模块定义
使用 Spatie Permission 的命名约定module.action格式
- **文档管理**
- document.viewAny - 查看文档列表
- document.view - 查看文档详情
- document.create - 创建文档
- document.update - 编辑文档
- document.delete - 删除文档
- document.download - 下载文档
- **系统设置**
- system-setting.viewAny - 查看系统设置
- system-setting.view - 查看设置详情
- system-setting.update - 修改系统设置
- **操作日志**
- activity-log.viewAny - 查看操作日志
- activity-log.view - 查看日志详情
- activity-log.export - 导出日志
- **终端管理**
- terminal.viewAny - 查看终端列表
- terminal.view - 查看终端详情
- terminal.create - 创建终端
- terminal.update - 编辑终端
- terminal.delete - 删除终端
- terminal.sync - 同步终端配置
- **SOP模板**
- sop-template.viewAny - 查看SOP列表
- sop-template.view - 查看SOP详情
- sop-template.create - 创建SOP
- sop-template.update - 编辑SOP
- sop-template.delete - 删除SOP
- sop-template.publish - 发布SOP
- sop-template.archive - 归档SOP
- **分组管理**
- group.viewAny - 查看分组列表
- group.view - 查看分组详情
- group.create - 创建分组
- group.update - 编辑分组
- group.delete - 删除分组
- **用户管理**
- user.viewAny - 查看用户列表
- user.view - 查看用户详情
- user.create - 创建用户
- user.update - 编辑用户
- user.delete - 删除用户
- **角色管理**
- role.viewAny - 查看角色列表
- role.view - 查看角色详情
- role.create - 创建角色
- role.update - 编辑角色
- role.delete - 删除角色
#### 4.5 数据模型需求
使用 Spatie Laravel Permission 包提供的模型和表结构:
- **Role 模型**(角色)- 由 Spatie 包提供
- name: string角色名称如 super-admin
- guard_name: string守卫名称默认 web
- 关联关系belongsToMany(Permission)、belongsToMany(User)
- **Permission 模型**(权限)- 由 Spatie 包提供
- name: string权限名称如 document.create
- guard_name: string守卫名称默认 web
- 关联关系belongsToMany(Role)
- **model_has_permissions 表**(用户直接权限)- 由 Spatie 包提供
- permission_id: bigint
- model_type: string通常是 User
- model_id: bigint用户ID
- **model_has_roles 表**(用户角色关联)- 由 Spatie 包提供
- role_id: bigint
- model_type: string通常是 User
- model_id: bigint用户ID
- **role_has_permissions 表**(角色权限关联)- 由 Spatie 包提供
- permission_id: bigint
- role_id: bigint
Spatie 包会自动创建这些表和模型,无需手动创建。
#### 4.6 技术实现
- 使用 **Spatie Laravel Permission** 包实现权限管理
- 包提供的核心功能:
- Role角色模型和管理
- Permission权限模型和管理
- 用户角色和权限关联
- 权限检查方法hasPermissionTo、hasRole等
- 中间件支持role、permission
- Blade指令支持@role@can等
- 使用 Laravel Policy 实现业务逻辑权限验证
- 使用 Gate 定义额外的权限规则
- 在 Filament Resource 中集成权限检查
- 权限缓存自动管理
---
## 技术栈
- **后端框架**: Laravel 12
- **管理面板**: Filament 3.x
- **数据库**: MySQL 8.0
- **前端组件**: Livewire 3.x
- **代码编辑器**: Monaco Editor (via filament-monaco-editor)
- **活动日志**: spatie/laravel-activitylog
## 非功能性需求
### 性能要求
- 操作日志列表页面加载时间 < 2秒
- 大屏配置同步响应时间 < 3秒
- SOP模板预览加载时间 < 1秒
### 安全要求
- 所有操作需要身份验证
- 敏感配置API密钥需要加密存储
- 操作日志不可删除,只能归档
- **权限管理**
- 支持基于角色的权限控制RBAC
- 支持基于用户的权限控制
- 支持基于分组的权限控制
- 功能模块级别的权限控制(查看、创建、编辑、删除、特殊操作)
- 数据级别的权限控制(如文档的全局/专用访问)
### 可用性要求
- 界面响应式设计支持1920x1080及以上分辨率
- 表单验证提供清晰的错误提示
- 关键操作需要二次确认
- 支持键盘快捷键操作
### 可维护性要求
- 代码遵循Laravel最佳实践
- 使用Filament标准组件
- 数据库迁移文件完整
- 关键功能需要单元测试
## 依赖项
### Composer包
```bash
composer require spatie/laravel-activitylog
composer require spatie/laravel-permission # 权限管理包
composer require amidesfahani/filament-monaco-editor
composer require maatwebsite/excel # 用于日志导出
```
### 数据库表
- system_settings
- activity_log由 spatie/laravel-activitylog 创建)
- terminals
- terminal_knowledge_bases
- terminal_prompts
- terminal_sync_logs
- sop_templates
- sop_steps
- sop_interactive_tasks
- sop_template_versions
- roles由 spatie/laravel-permission 创建)
- permissions由 spatie/laravel-permission 创建)
- model_has_permissions由 spatie/laravel-permission 创建)
- model_has_roles由 spatie/laravel-permission 创建)
- role_has_permissions由 spatie/laravel-permission 创建)
## 实施优先级
1. **高优先级**(第一阶段)
- 系统设置页面基础功能
- 操作日志列表和筛选
- 大屏终端列表和基础配置
2. **中优先级**(第二阶段)
- 日志详情和导出功能
- 大屏知识库关联和提示词编辑
- SOP模板列表和基础编辑
3. **低优先级**(第三阶段)
- 配置下发和同步状态
- SOP步骤可视化编辑器
- SOP交互任务配置
- 模板导入/导出功能
## 验收测试计划
### 功能测试
- [ ] 系统设置保存和读取
- [ ] 操作日志记录和查询
- [ ] 日志筛选和导出
- [ ] 终端配置CRUD操作
- [ ] 知识库关联和提示词编辑
- [ ] SOP模板CRUD操作
- [ ] 步骤编辑和排序
- [ ] 模板发布和版本管理
### 集成测试
- [ ] 操作日志自动记录
- [ ] 终端配置同步
- [ ] SOP模板导入导出
### 性能测试
- [ ] 10000条日志记录的查询性能
- [ ] 100个终端的列表加载性能
- [ ] 50个步骤的SOP模板编辑性能
## 风险与限制
### 技术风险
- Monaco Editor在Filament中的集成可能需要额外配置
- 大屏终端实时同步可能需要WebSocket支持
- 富文本编辑器的内容安全性需要特别注意
### 业务风险
- SOP模板的版本管理可能导致数据量快速增长
- 操作日志的长期存储需要考虑归档策略
- 大屏配置的实时性要求可能影响系统性能
### 限制条件
- 本期不包含移动端适配
- 不包含多语言支持
- 不包含高级权限管理(如字段级权限)