本文详细拆解了基于 Spring Boot + Vue.js 的 AI 对话系统“通意千应”附件上传全链路实现。通过前端多文件选择、类型/大小/数量/去重校验并即时预览,后端提供统一上传 API、用户鉴权、批量限制以及文件大小校验。核心服务层在接收文件后采用 UUID 命名、日期分层路径,将文件同步上传至七牛云 OSS、利用策略模式对 PDF、Word、Excel、PPT、TXT、图片等七类格式进行文本抽取,并将提取的内容、元数据写入 MyBatis 管理的 chat_file 表,实现文件‑消息关联。技术亮点包括上传即解析、预提取文本存库、事务化处理、CDN 加速的云存储以及多模态(图片 + Base64)AI 交互支持。全链路设计兼顾安全、性能和用户体验。

本文针对 AI 对话、智能客服等实时语音交互场景,提出基于异步分段合成、流式预加载和语义级文本分割的 TTS 方案。通过首段优先合成、后段后台预加载,实现低延迟;采用标点层级的三级分割算法,保证语义完整;利用本地 Caffeine 与 Redis 多级缓存避免重复合成。系统采用 Vue3 前端、Spring Boot 后端,调用百度云语音合成 API,配合 Token 缓存、单段合成服务及播放控制,支持流式播放、无缝衔接、异常自愈等特性。

线上博客进程日志突断,排查发现系统 OOM Killer 在内存耗尽时直接 kill -9 Java 进程。根因是 2 GB 机器上运行 3 个未限制 -Xmx 的 Spring Boot、MySQL 8 默认占用大且无 swap。通过为每个 JVM 设置‑Xms/‑Xmx、调小 MySQL 缓冲池、连接数等参数并创建 2 GB swap,内存使用恢复正常,服务不再被 OOM 杀死。文章总结了 JVM、MySQL、swap 配置的坑点及后续升级方案。

通意千应是一款企业级AI对话平台,采用Spring Boot + Vue 前后端分离架构,集成ChatGPT、DeepSeek、Qwen、Llama 等多模型并支持灵活切换。系统基于 Spring Security、JWT、MySQL、Redis 实现完整的身份认证、会话管理与数据安全,提供流式响应、Markdown 与代码高亮、深度思考、网络搜索增强等交互特性,并可生成无需登录的分享链接。后台具备用户、会话、数据统计等管理员功能,支持多模型调用、Token 消耗统计及高可用的 API Key 切换,满足企业快速搭建专属 AI 助手的需求。

项目采用 Keep a Changelog 与语义化版本管理,记录自 2023‑01‑10 首版 v1.0.0 起的功能演进。最新 v2.2.0(2026‑03‑26)引入文章付费阅读、微信公众号集成、验证码 Redis 存储及多项安全加固;v2.1.0(2026‑03‑20)上线基于 GPT 的 AI 对话机器人、AI 评论审核、表情系统、弹幕等交互功能;v2.0.0(2026‑03‑10)实现 AI 智能摘要、实时天气展示及登录防暴力破解。每个版本均列出新功能、改进、修复细节,并附提交规范、维护者联系方式等信息。

博客文章解锁功能原先仅依赖本地 storage 的 `blog_global_unlocked` 标记,导致用户可通过浏览器开发者工具直接修改为 `true`,绕过关注公众号、验证码验证,破坏付费阅读与引流策略。为根除该漏洞,方案将关键验证逻辑迁移至服务器端,采用 Spring Boot REST 接口配合 Redis 保存解锁状态和一次性令牌。通过拦截器统一生成并写入 `blog_client_id` Cookie,前端在页面加载时请求 `/status` 接口获取解锁状态与令牌,若未解锁则提示验证码,验证码验证成功后服务器标记解锁并返回令牌。令牌基于 clientId、时间戳和 UUID 的 MD5 生成并在 Redis 中滑动过期,防止伪造和篡改。整体实现保持用户体验流畅,同时实现服务器可追踪、不可伪造的安全解锁机制。