在远光知识云项目中,我负责核心功能模块 "知识问答" 的前端开发,全程采用 Vue 技术栈实现。该模块作为企业内部知识交互的核心载体,需满足员工高效提问、专家精准解答及智能机器人实时响应的业务需求。
技术架构设计
基于 Vue 3 + Vue Router 构建单页应用,利用 Composition API 实现逻辑复用,将问答流程拆分为QuestionList、AnswerDetail、ExpertConsult等 12 个组件
采用 Pinia 管理全局状态,设计questionStore存储提问历史与未读消息,通过userStore同步用户权限信息
集成 Element Plus 组件库定制业务组件,如基于ElDialog封装的提问弹窗,支持富文本编辑与标签选择
核心功能实现
智能问答交互
开发 CICI 机器人对话界面,使用 WebSocket 实现实时通信,在ChatBot.vue组件中处理流式响应
通过 Vue 自定义指令v-highlight实现答案关键词高亮,基于用户输入动态调整匹配权重
专家协作系统
设计专家标签匹配算法,在ExpertMatcher.vue中通过计算用户问题标签与专家领域的余弦相似度,实现智能推荐
开发多人协同编辑功能,基于quill编辑器二次封装,利用vuex同步编辑状态,支持实时光标定位
权限与安全控制
实现基于 RBAC 模型的权限组件PermissionGuard,结合路由元信息控制问答可见范围
开发敏感信息检测指令v-sensitivity,通过正则匹配自动识别涉密内容并触发审核流程
性能优化措施
采用虚拟滚动vue-virtual-scroller优化长列表渲染,将问答历史加载时间从 3.2s 降至 0.8s
实现组件懒加载与路由预加载,配合 Service Worker 缓存静态资源,首屏加载提速 40%
设计问答数据预取策略,在QuestionDetail组件中通过onMounted提前加载相关推荐内容
技术难点突破
解决大文件上传阻塞问题:采用分片上传 + 断点续传,在FileUploader.vue中使用axios并发控制实现分块传输
优化全文检索体验:集成 Elasticsearch 前端 SDK,开发SearchSuggest组件实现输入联想,响应时间控制在 200ms 内