系列定位:继“开篇篇:从0到1搭建企业级 LangChain4j + Spring AI 智能对话与知识库框架(架构与模块总览)”之后,本篇聚焦企业级 AI 管理平台治理能力:权限模型、动态菜单路由、按钮级控制、审计日志与国际化工作流,为后续与 Chat/RAG/MCP 模块的统一治理奠定基础。

1. 本文你能收获什么?

  • 如何设计“菜单 + 权限 + 路由”三位一体数据结构。
  • 用后端返回菜单树动态注入前端路由的工程化步骤。
  • RBAC 权限标识体系与按钮级(细粒度)显示/操作控制策略。
  • 审计日志埋点与后续可观测扩展预留位。
  • 国际化(i18n)工作流与命名规范示例。
  • 与 AI 中台其他模块(模型管理 / 对话 / 知识库 / MCP 工具)协作的扩展点。

2. 为什么需要“治理能力”管理平台?

单纯的 CRUD 后台无法满足企业级 AI 应用落地:

  • 多身份 & 多角色:区分运营、研发、审计、管理员、普通业务使用者。
  • 多维权限:页面、按钮、数据域(租户/部门)与未来成本/模型使用配额控制。
  • 合规 & 留痕:操作行为(新增用户、修改角色权限、删除菜单)需审计追踪。
  • 可扩展:后续接入模型管理、工具注册、知识库索引、对话会话审计。

管理平台即“治理基座”:集中承载用户与权限体系,并向 AI 功能层提供统一认证与授权数据。

3. 后端结构速览(langchain4j-spring-ai-security-v1

入口主类:SecurityV1ServerApplication

关键能力:

  • Spring Boot + MyBatis + MapperScan。
  • JWT 登录认证:POST /api/v1/auth/login → 返回 Bearer Token。
  • 菜单树接口:GET /api/v1/menus/tree → 驱动前端动态路由。
  • 用户 / 角色 / 部门 / 岗位管理:组织结构与权限映射基础。
  • 审计日志查询:操作记录可检索。

建议增强:

  • Token 刷新与黑名单(支持强制下线)。
  • 异步审计(MQ/队列)与失败重试策略。
  • 统一错误码分层:系统级 / 业务级 / 安全级。
  • 多租户隔离(tenantId 透传 + 数据过滤 + 索引前缀)。

4. 前端骨架速览(langchain4j-spring-ai-ui-v1

目录要点:

  • src/api:接口与类型封装。
  • src/router:基础路由 + 动态注入逻辑。
  • src/store:登录态、token、权限集合缓存。
  • src/layout:主框架(侧栏 + 顶栏 + 内容区)。
  • src/views:功能页面(用户、角色、菜单、部门、岗位、审计日志等)。
  • src/i18n:多语言资源与规范文档。

技术栈:Vue3 + TypeScript + Vite + Element Plus + Pinia + Axios + vue-i18n。

5. 动态菜单路由注入核心思路

  1. 用户登录成功后,携带 token 请求菜单树接口。
  2. 将返回的菜单节点递归转换为路由对象(RouteRecordRaw)。
  3. 使用 router.addRoute() 注入到既有 layout 下,实现按用户权限动态装配功能。
  4. 按钮/操作权限在组件中通过权限标识集合决策显示与禁用。

推荐菜单节点字段:

id, parentId, name, path, component, icon, order, perms[], hidden(boolean)

权限标识命名规范:模块:资源:动作,例如:user:list / user:create / role:assign

6. RBAC 与按钮级权限控制

实现路径:

  • 用户 → 角色 → 权限标识集合(多对多)。
  • 登录后获取权限集合缓存到 store.permissions
  • 通过自定义指令 v-perm 或工具函数 hasPerm('user:create') 控制按钮、操作列显示。
  • 列表操作栏在渲染前过滤不具备的操作。

扩展建议:

  • 行/列级数据权限(基于部门或租户过滤)。
  • 高风险操作二次确认(删除、角色分配、权限变更)。
  • 操作频控(同一敏感接口单位时间调用次数限制)。

7. 国际化(i18n)工作流与规范

工作流:新增界面文案 → 定义 i18n key → 同步添加到 en.json & zh.json → 使用 $t('key')
示例(密码校验):

enter_password: "请输入密码"
password_min_6: "密码至少 6 位"

好处:统一术语、避免硬编码、支持后续自动抽取/翻译平台接入。

8. 审计日志与可观测预留

审计对象:登录/登出、用户新增修改、角色权限调整、菜单结构变更、敏感操作(禁用账户等)。
后续扩展:

  • TraceId 注入响应头(链路可追踪)。
  • 指标采集(接口失败率、权限拒绝次数)。
  • 风险策略(异常频率/地理位置异常触发告警)。

9. 与 AI 中台其它模块协作

  • 统一认证:管理平台签发/验证 JWT,Chat/RAG/MCP 服务复用同 token 校验逻辑。
  • 功能集成:菜单增加“模型管理”“知识库索引”“工具注册(MCP)”等分类。
  • 权限驱动:不同角色访问不同模型、知识库集合或工具集(如限制某角色调用昂贵模型)。
  • 审计延伸:记录对话检索、工具调用参数,用于成本与合规分析。

10. 快速启动(最小示例)

后端(security-v1):

cd langchain4j-spring-ai/langchain4j-spring-ai-security-v1
mvn -DskipTests clean package
# 若出现“没有主清单属性”需确保 spring-boot-maven-plugin 已执行 repackage
java -jar target/langchain4j-spring-ai-security-v1-*.jar

前端(ui-v1):

cd langchain4j-spring-ai-ui/langchain4j-spring-ai-ui-v1
pnpm install
pnpm dev
# .env 中设置 VITE_API_BASE=http://127.0.0.1:9006

浏览器访问:http://localhost:5173(视 Vite 配置)。

10.1 仓库地址

Gitee:https://gitee.com/zhangjq123/langchain4j-spring-agent.git

git clone https://gitee.com/zhangjq123/langchain4j-spring-agent.git
cd langchain4j-spring-agent

10.2 数据库初始化脚本位置

模块 脚本路径 说明
security-v1 langchain4j-spring-ai/langchain4j-spring-ai-security-v1/doc/init.sql 用户 / 角色 / 菜单 / 审计 / 组织岗位等治理表

创建数据库(示例名与脚本中的库名保持一致,脚本里为 langchain4j-spring-ai-v1,如需修改请全局替换后再执行):

CREATE DATABASE IF NOT EXISTS `langchain4j-spring-ai-v1` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

执行初始化:

mysql -u root -p langchain4j-spring-ai-v1 < langchain4j-spring-ai/langchain4j-spring-ai-security-v1/doc/init.sql

10.3 默认账号说明

初始化脚本中已导入示例用户:

用户名 密码(明文) 密文(bcrypt) 角色示例
admin 123456 $2a$10$AwapFP1WbIjtwGYiK8JFiuQfPXMaDyl9hXhoaEGdF0JZBgpEfN1K2 SYS_ADMIN / ORG_ADMIN / AUDITOR
user 123456 $2a$10$imULMsKchYt0128bnhZ0Fe2eaFiLJ3fbDMwygSz6nxuMbtxcpXaNi 普通用户

登录后请立即:

  1. 在“用户管理”中修改默认密码。
  2. 调整角色与权限标识(最小授权原则)。
  3. 若用于生产演示,替换默认 JWT 签名密钥并开启 Token 过期刷新策略。

安全提示:演示环境的初始密码仅用于快速体验,不建议在生产保留;请结合密码复杂度策略、失败锁定、审计阈值等治理手段。

启动排错:

问题 原因 解决
404 / 空白菜单 菜单树接口失败或未调用 检查登录流程 & F12 网络请求
按钮缺失 权限标识不匹配 核对后端返回 perms 与前端指令使用值
401 未授权 Token 未带或过期 拦截器注入 Bearer;校准服务器时间
国际化丢失 未同步到 en/zh.json grep key 并补齐
审计无记录 未埋点或异步组件未生效 检查切面/队列配置

11. 扩展路线图

方向 增强 价值
多租户 租户上下文 + 数据隔离 SaaS 化准备
SSO OAuth2 / 企业内部统一身份 减少重复账号
操作审批 高风险动作工单流 合规可控
审计下沉 接入集中日志/链路系统 分析与留存
权限可视化 图谱展示 用户→角色→权限 治理与排错加速
菜单建模生成 菜单+字段驱动 CRUD 代码生成 提升交付效率

12. 界面速览(截图)

以下截图均来自目录 img-platform/,按常见使用路径排序:

  1. 登录页面
    请添加图片描述

  2. 登录后首页(导航+菜单)
    请添加图片描述

  3. 个人资料页面
    请添加图片描述

  4. 用户管理列表
    请添加图片描述

  5. 用户新增页面
    请添加图片描述

  6. 用户编辑页面
    请添加图片描述

  7. 角色管理页面
    请添加图片描述

  8. 角色新增页面
    请添加图片描述

  9. 角色编辑页面
    请添加图片描述

  10. 菜单管理页面
    请添加图片描述

  11. 菜单新增页面
    请添加图片描述

  12. 菜单编辑页面
    请添加图片描述

  13. 审计日志页面
    请添加图片描述

  14. 部门管理页面
    请添加图片描述

  15. 部门新增页面
    请添加图片描述

  16. 部门编辑页面
    请添加图片描述

  17. 岗位管理页面
    请添加图片描述

  18. 岗位新增页面
    请添加图片描述

  19. 岗位编辑页面
    请添加图片描述

提示:如需在外部平台显示不出中文文件名,可临时复制一份使用英文别名;仓库内部保留原始中文更贴近使用场景。

可在发布平台按需插入对应图片增强可读性与视觉记忆点。

13. 为什么这套骨架易扩展?

  • 菜单驱动:功能扩展只需新增菜单 + 路由组件。
  • 权限原子化:标识粒度可控,从页面 → 按钮 → 动作。
  • 分层清晰:api / router / store / layout / views 各司其职。
  • 治理组件可插拔:审计、权限校验、国际化均独立,便于替换增强。

14. 总结与行动

如果你正准备:

  • 构建自己的 AI 中台或内部智能助手治理后台;
  • 将现有零散脚本与模型调用纳入统一权限与审计体系;
  • 搭建一个可持续演进(多租户/成本控制/RAG/工具调用治理)的管理骨架;

那可以直接 Fork 本项目的管理平台部分进行二次开发。欢迎补充:多租户、权限可视化、审批流、操作风控等高级能力。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐