项目:智评罗盘(EcoSentinel)电商评论智能分析平台
本阶段核心任务:Axios统一封装、SSE流式对话实现、全局样式完善、NLP页面骨架开发、Mock数据联调
一、本阶段工作总览
主要完成了这几部分工作:
1.完成Axios请求统一封装,实现请求拦截、错误处理、登录态自动携带,并专门封装了异步任务轮询工具,用来处理LDA训练、报告生成这类耗时操作;
2.实现SSE流式接收工具类,完成AI对话打字机效果,支持重连、保序、异常处理;
3.完善并落地全局样式系统,统一导航、卡片、按钮、图表、状态卡片的视觉风格;
4.搭建NLP分析引擎全套页面骨架,包括LDA、情感分析、差评归因、水军识别四大模块;
5.使用Mock模拟数据完成所有ECharts图表渲染、页面布局与交互调试;
6.对整体交互体验进行优化,包括加载状态、空状态、图表动画、响应式布局等。
二、Axios统一请求封装与异步任务轮询工具
因为项目里大量功能(LDA训练、报告生成、模型推理、批量分析)都是异步耗时任务,不能靠普通接口等待返回,所以必须把请求层做得足够稳定。
对所有接口做了统一规范:
请求拦截器:统一添加请求头、接口版本、超时时间;
响应拦截器:自动处理常见错误码,全局提示成功/失败;
统一的loading控制,避免页面多次触发请求;
超时、重试、取消请求机制,提升弱网环境稳定性;
异步任务轮询工具:传入taskId,自动定时查询状态,支持开始、暂停、销毁。
// 统一请求配置示例 axios({ url: url, method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + token }, timeout: 30000 }) // 异步轮询逻辑示例 const startPoll = (taskId) => { let timer = setInterval(async () => { let res = await getTaskStatus(taskId) if (res.finished) clearInterval(timer) }, 2000) }三、SSE流式接收工具实现
RAG智能问答要做出像ChatGPT一样的打字机效果,需要用SSE(ServerSentEvents)。这也是我花时间最多、收获最大的部分。
封装的SSE工具类具备以下完整的工程能力:
单例模式,避免重复建立连接;
自动连接、自动关闭、页面卸载时销毁;
逐字接收后端返回,前端实时渲染;
异常断开自动重试,最多重试3次;
const sse = new EventSource('/api/rag/chat?msg=' + userMsg) sse.onmessage = (e) => { setText(prev => prev + e.data) } sse.onerror = () => { sse.close() setTimeout(() => reconnect(), 2000) // 自动重连 }四、全局样式与组件规范全面落地
在第一周的基础上,我把全局样式彻底完善,让整个系统风格统一、质感提升。
包括:
统一全局重置、字体、行高、颜色系统;
左侧导航栏渐变、圆角、高亮、hover效果全部定制;
卡片、标题、分割线、间距、阴影统一规范;
图表容器统一类名`.chartcontainer`,方便全局控制;
Agent状态卡片统一样式:运行中、完成、失败三种状态;
滚动条、按钮、空状态、加载状态统一美化。
* { margin: 0; padding: 0; box-sizing: border-box; } body { background: #f5f0ea; font-family: Microsoft YaHei; } .ant-menu-item-selected { background: #ff6b00 !important; color: #fff; border-radius: 8px; } .chart-container { width: 100%; min-height: 300px; }五、NLP分析引擎四大页面骨架
把之前设计的NLP四大模块做成了真实页面
1.LDA主题挖掘页面
顶部概览卡片:主题数量、最优K值、训练时间;
中间区域:Coherence/Perplexity双曲线图;
可交互pyLDAvis嵌入区域;
主题词云、关键词列表、主题热度时间轴。
2.细粒度情感分析页面
整体情感分布饼图;
五维情感热力图(物流/质量/外观/客服/性价比);
情感趋势折线图,支持日/周/月切换;
正面词Top30、负面词Top30柱状图;
预警记录列表。
3.差评归因分析页面
差评统计卡片:差评数、占比、爆发时间;
ECharts树图展示归因结构:主问题→子问题→细节;
三级优先级整改卡片:紧急/重要/待观察;
数据支撑说明,展示每条问题来自多少评论。
4.水军识别页面
可信/疑似/高风险水军占比饼图;
疑似评论列表,可展开查看原文;
剔除水军前后情感得分对比;
净化后数据提示面板。
六、Mock数据接入与全页面图表调试
因为后端接口还在开发,我提前用Mock数据把所有图表全部调试了一遍。
做这件事的好处非常多:
提前发现图表配置错误、样式冲突、布局溢出;
统一所有图表的颜色、提示框、动画、字体;
预览了页面的交互、切换、展开、折叠、筛选;
我先后调试了折线图、柱状图、饼图、热力图、树图、词云,确保每一张图都能正常渲染、自适应、tooltip显示正常。
七、交互体验与细节优化
除了功能,我还做了大量体验优化:
给所有图表加入入场动画,观感更流畅;
卡片hover上浮、按钮按压反馈;
图表支持刷新、全屏、下载;
空数据、加载中、请求失败状态统一展示;
页面路由切换流畅,无卡顿、无闪烁。
力图让系统更专业、更好用、更有产品感。
八、总结与收获
真正理解了AI项目前端如何处理异步任务以及如何输出;掌握了ECharts在实战项目中的统一配置与调试;体会到前端工程化、统一规范对多人协作的重要性;学会把复杂的NLP算法逻辑,转化为简单易懂的页面展示。接下来我会继续推进NLP核心模块的开发,把每一个分析能力都完整落地,让智评罗盘真正可用、好用。