这是基于Vue 3的现代化前端重构版本,将原有的HTML页面转换为组件化的Vue应用。
- 🚀 Vue 3 + Vite - 使用最新的Vue 3 Composition API和Vite构建工具
- 🎨 现代化UI - 全新的界面设计,支持深色模式
- 📦 组件化开发 - 模块化的组件结构,易于维护和扩展
- 🔐 完整的认证系统 - JWT Token认证,路由守卫
- 💾 状态管理 - 使用Pinia进行全局状态管理
- 🌐 API集成 - 完整对接后端FastAPI接口
- 📱 响应式设计 - 适配各种屏幕尺寸
- 框架: Vue 3.4+
- 构建工具: Vite 5.0+
- 路由: Vue Router 4.2+
- 状态管理: Pinia 2.1+
- HTTP客户端: Axios 1.6+
- Markdown渲染: Marked 11.0+
- 代码高亮: Highlight.js 11.9+
- 框架: Spring Boot 3.3.5
- 运行环境: Java 17+ (必须)
- 构建工具: Maven 3.6+
- AI 框架: Spring AI
- 默认端口: 5000 (请确保此端口未被其他服务占用,如 Python Flask 等)
- 进入
aispring目录 - 运行
./mvnw.cmd spring-boot:run(Windows) 或./mvnw spring-boot:run(Linux/Mac) - 确保端口 5000 可用。如果启动失败并提示端口占用,请使用
netstat -ano | findstr :5000查找并终止冲突进程。
- 进入
vue-app目录 - 运行
npm install(首次启动) - 运行
npm run dev - 默认访问地址:
http://localhost:5173
- PDF & 图片预览修复:
- 修复了 PDF 预览显示“获取内容失败”的问题,通过在前端请求中添加
transformResponse: [(data) => data]成功获取并解析了原始 Blob 数据。 - 优化了预览弹窗的视觉效果,增加了磨砂玻璃背景、加载动画和更清晰的错误提示信息。
- 解决了 PDF 预览时 iframe 边框显示不协调的问题,使预览效果更加沉浸。
- 修复了 PDF 预览显示“获取内容失败”的问题,通过在前端请求中添加
- Word 下载体验优化:
- 修复了 Word 文件在弹窗中文字布局混乱的问题,增加了专门的文件信息展示区域。
- 确保了管理员可以跨用户安全地下载所有类型的文件。
- 接口稳定性增强:
- 将管理员下载接口路径统一调整为
/api/admin/files/download/{fileId},与内容获取接口保持一致。 - 增加了后端日志记录,支持在文件下载过程中实时追踪文件路径解析状态,便于后续排错。
- 增强了前端对 Blob 错误响应的解析能力,现在可以正确显示后端返回的 JSON 格式错误信息。
- 将管理员下载接口路径统一调整为
- 管理后台 UI 深度优化:
- 重构了用户管理、文件管理和反馈管理的表格样式,增加了交互动画和响应式适配。
- 优化了搜索框、下拉选择框的视觉效果,使其更符合现代化 UI 规范。
- 改进了操作按钮的视觉反馈,区分了“预览”、“编辑”和“查看”等不同功能场景。
- 全格式文件查看支持:
- PDF & 图片预览: 实现了基于 Blob 对象的安全预览功能,支持在管理后台直接查看 PDF 文件和各类图片格式(JPG, PNG, GIF)。
- Word 文件处理: 针对 Word (.doc/.docx) 文件,添加了“下载查看”功能,并优化了文件下载流程。
- 文本文件编辑: 优化了文本类文件的加载状态显示,增强了编辑器的容错处理。
- 后端管理接口加固:
- 在
AdminController中新增了管理员专用的文件下载/预览接口,绕过了普通用户的路径限制。 - 在
CloudDiskService中实现了downloadFileAdmin方法,支持管理员跨用户下载和预览文件。 - 完善了 API 端点配置,确保前后端在管理功能上的高度同步。
- 在
- 搜索与筛选功能增强:
- 在“文件管理”选项卡添加了用户筛选下拉框,支持直接点击选择特定用户查看其文件。
- 在“用户管理”列表添加了**“查看文件”快捷按钮**,点击即可跳转并自动筛选该用户的文件。
- 优化了搜索框布局,支持文件名实时过滤,提升了管理大批量文件的效率。
- 优化了管理后台的交互体验,增加了空数据状态的友好提示。
- 文件管理显示修复:
- 修复了
AdminView.vue中文件管理、用户管理和反馈管理等选项卡数据无法显示的问题。 - 修正了前端在解析后端
ApiResponse统一包装类时的路径错误,统一使用response.data获取业务数据。 - 修复了后端
AdminController中的LazyInitializationException问题,通过在UserFileRepository中使用JOIN FETCH优化查询,确保关联的用户数据能被正确加载。 - 增强了统计卡片的展示稳定性,确保在数据加载失败时显示默认值。
- 修复了
- 管理后台交互优化:
- 修复了文件编辑弹窗中文件内容无法加载的问题。
- 优化了管理后台各模块的数据刷新逻辑,确保在切换标签页时能够实时获取最新数据。
- 公共资源下载修复:
- 解决了下载公共文件时可能触发前端路由跳转而非浏览器下载的问题。
- 通过
encodeURIComponent处理文件名,并在前端强制使用新窗口打开下载链接,提升了不同浏览器下的兼容性。
- 管理后台数据统计修复:
- 修复了管理员仪表盘统计数据全为 0 的问题,通过在后端
AdminStatistics实体中添加@JsonProperty注解,确保了前后端数据字段映射的一致性。
- 修复了管理员仪表盘统计数据全为 0 的问题,通过在后端
- API 配置自动化:
- 优化了
api.js中的getBaseURL逻辑,能够根据当前域名自动切换localhost:5000或生产环境相对路径,简化了前后端分离部署的配置。 - 完善了公共资源的 API 端点配置,包括上传、列表、下载和删除功能。
- 优化了
- 删除功能增强:
- 在公共资源页面为管理员增加了文件删除功能,并实现了前后端联动实时刷新。
- 后端实现了
DELETE /api/public-files/{filename}接口,支持物理文件删除。
- 管理员自动化设置:
- 新增了
UserService.setAsAdmin事务性方法,支持将指定邮箱账号设置为管理员。 - 引入了
CommandLineRunner机制(adminSetupRunner),在应用启动时自动将指定账号(如3301767269@qq.com)配置为管理员。 - 增强了认证系统:在 JWT Token 中新增了
is_adminClaim,使前端能够实时感知用户的管理员身份。
- 新增了
- 数据库架构加固 (Flyway):
- 引入了
V2_2__fix_admin_table_defaults.sql迁移文件,通过存储过程安全地为admins表的is_active和is_superadmin字段添加了数据库级别的默认值(1 和 0)。 - 解决了
SQL Error 1364: Field 'is_active' doesn't have a default value报错,确保管理员记录在各种插入场景下的稳定性。
- 引入了
- 全屏滚动体验优化:
- 统一修复了全站页面的滚动失效问题。核心方案是将各子页面的
height: 100vh或固定计算高度修改为height: 100%,并由父容器AppLayout统一管理滚动条。 - 云盘页 (CloudDiskView): 修复了长文件列表无法下滑的问题。
- 聊天页 (ChatView): 修复了消息历史过长时的滚动异常。
- 设置页 (SettingsView): 解决了设置选项过多时无法滑动查看底部内容的问题。
- 管理页 (AdminView & ChatManagementView): 移除了
AdminView和ChatManagementView中冗余嵌套的AppLayout组件,修复了双重布局导致的滚动冲突和样式错乱。 - 布局系统加固: 在
AppLayout.vue的main-content容器中增加了min-height: 0配置,解决了 Flex 布局下子元素无法正确触发内部滚动的经典难题。
- 统一修复了全站页面的滚动失效问题。核心方案是将各子页面的
- 前端界面精简:
- 移除了聊天工具栏中暂不可用的功能图标(截图、通话、语音输入),提升了界面的整洁度和用户体验。
- 敏感配置加密 (Jasypt):
- 集成了 Jasypt 加密框架,对
application.yml中的数据库密码、邮件授权码、DeepSeek API Key 等敏感信息进行了加密处理(ENC(...)格式)。 - 支持通过环境变量
JASYPT_PASSWORD动态传入解密盐值。
- 集成了 Jasypt 加密框架,对
- 域名自动识别: 前端配置现在能够自动识别
aistudy.icu域名并切换后端基础地址到http://aistudy.icu:5000。 - CORS 与安全修复:
- 更新了后端 CORS 白名单,允许来自
aistudy.icu的跨域请求。 - 修复了 Spring Security 导致的 OPTIONS 预检请求返回 403 Forbidden 的问题。
- 更新了后端 CORS 白名单,允许来自
- 多环境配置支持: 引入了
application-dev.yml和application-prod.yml,支持通过--spring.profiles.active=prod参数切换环境。 - 数据库版本管理: 引入了 Flyway 数据库迁移工具,支持自动版本控制和基准线 (
baseline) 迁移。
- 参数映射修复: 修复了
ResetPasswordRequest中 JSON 字段无法正确映射的问题。 - 错误响应规范化: 更新了
GlobalExceptionHandler,将验证失败的返回格式统一为ErrorResponse对象。 - 验证码系统校准: 打通了发送重置码、验证并更新密码的完整流程。
- 前端设置保存: 修复了用户在前端设置工具批准规则后未保存到后端的问题。
- 批准同步: 确保用户批准/拒绝工具调用时正确同步到后端。
- 数据一致性: 统一了前端和后端的工具名称映射关系。
- AdminController: 新增管理员专用控制器,支持全站统计、用户管理及文件列表查询。
- 全格式文件编辑: 支持对多种文本格式(如
.js,.ts,.java,.py等)的直接编辑。 - 编码兼容性优化: 修复了读取非 UTF-8 编码文件(如 GBK)时的报错问题。
- 存储统计修复: 修复了管理员面板中全站总存储空间的统计逻辑。
- AgentLoopManager: 完整的 Agent 循环生命周期管理器。
- CheckpointTimeline: 时间旅行式检查点可视化。
- ToolApprovalManager: 智能工具批准系统。
- SessionStatePanel: 实时会话状态监控。
- UI 交互优化: 将任务链移至右侧面板,采用更紧凑的聊天框样式,提升了核心内容展示空间。