智评罗盘 EcoSentinel 项目进度(七)
0. 阶段定位:从"数据呈现"走向"决策输出"
在前六个阶段,系统完成了数据治理、NLP分析、用户画像、竞品对比等核心分析能力的建设。各项分析结果可以独立查看,但缺少统一的输出形式,用户需要自行整理数据、手动编写报告,分析结论难以直接转化为运营决策。
第七阶段重点打造报告生成与营销文案两大输出模块。报告生成模块支持三种模板自动生成Word/PDF格式报告,嵌入全部分析图表,由大模型撰写执行摘要。营销文案模块基于好评高频词自动生成多风格标题、卖点清单和差评应对话术。两大模块让系统从"数据呈现"升级为"决策输出",形成完整的分析闭环。
1. 上阶段的遗留问题与初始痛点
分析结果分散在多个页面,缺少统一输出形式。用户查看LDA主题、情感分布、用户画像、竞品对比需要逐个切换页面,手动整理,耗时且容易遗漏关键信息。
报告编写效率低下且质量不稳定。运营人员需要将各模块数据汇总后手动撰写报告,不同人员编写风格差异大,核心结论容易遗漏,报告质量参差不齐。
营销文案缺乏数据支撑,创作效率低。商家撰写商品文案时缺少好评数据参考,标题卖点凭主观经验确定,差评回复话术单一,难以针对性化解用户不满。
产品优化建议缺少优先级排序。系统可以识别差评问题,但未给出整改优先级和具体建议,运营人员需要自行判断哪些问题需要紧急处理。
2. 阶段七核心攻坚工作与落地成果
2.1 多模板报告自动生成
2.1.1 三种报告模板设计
智评罗盘设计了三种报告模板,覆盖不同使用场景:
| 模板类型 | 适用场景 | 内容范围 | 预计页数 |
|---|---|---|---|
| 运营周报 | 快速了解本周数据概况 | 核心数据摘要+主题词云+情感趋势+TOP3改进建议 | 约5页 |
| 月度深度分析 | 全面复盘月度运营表现 | 全模块分析图表+大模型洞察+详细解读 | 约15页 |
| 竞品对标报告 | 专项竞品对比分析 | 竞品对比图表+SWOT分析+差距解读 | 约8页 |
REPORT_TEMPLATES = {
"weekly": {
"name": "运营周报",
"sections": ["summary", "keywords", "sentiment", "suggestions"],
"max_pages": 5,
"generate_time": "30秒-1分钟"
},
"monthly": {
"name": "月度深度分析",
"sections": ["summary", "lda", "sentiment", "profile", "competitor", "suggestions"],
"max_pages": 15,
"generate_time": "1-2分钟"
},
"competitor": {
"name": "竞品对标报告",
"sections": ["summary", "bhi_ranking", "radar", "swot", "gap_analysis"],
"max_pages": 8,
"generate_time": "45秒-1分钟"
}
}
2.1.2 图表自动嵌入机制
报告生成需要将ECharts图表转为静态图片嵌入Word文档。智评罗盘采用pyecharts生成静态图+matplotlib转base64的方案:
from pyecharts.charts import Bar, Pie, Line
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot
import matplotlib.pyplot as plt
import base64
from io import BytesIO
def embed_chart_to_doc(doc, chart_data: dict, chart_type: str):
# 生成matplotlib图表
fig, ax = plt.subplots(figsize=(8, 4))
if chart_type == "bar":
ax.bar(chart_data["x"], chart_data["y"])
elif chart_type == "line":
ax.plot(chart_data["x"], chart_data["y"])
# 转base64嵌入Word
buf = BytesIO()
plt.savefig(buf, format='png', dpi=150)
buf.seek(0)
img_base64 = base64.b64encode(buf.read()).decode()
# 添加到Word文档
doc.add_picture(BytesIO(base64.b64decode(img_base64)))
2.1.3 大模型执行摘要生成
报告开头需要一段200字的执行摘要,概括核心发现。智评罗盘调用大模型自动撰写:
SUMMARY_PROMPT = """基于以下分析数据,撰写200字执行摘要:
数据集:{dataset_name}
评论总量:{total_count}
平均评分:{avg_rating}
好评率:{positive_rate}%
主要主题:{top_topics}
情感趋势:{sentiment_trend}
用户群体:{user_clusters}
竞品差距:{competitor_gap}
要求:
1. 开篇一句话概括整体口碑状况
2. 列举3条核心发现
3. 给出1条关键建议
4. 语言简洁,数据支撑"""
2.1.4 Word与PDF双格式导出
报告生成后支持Word和PDF两种格式下载:
from docx import Document
from weasyprint import HTML
def generate_report(template: str, dataset_id: str) -> dict:
# 生成Word文档
doc = Document()
doc.add_heading("智评罗盘分析报告", level=0)
# 嵌入各章节内容
for section in REPORT_TEMPLATES[template]["sections"]:
section_data = fetch_section_data(dataset_id, section)
render_section(doc, section_data)
# 保存Word
word_path = f"reports/{dataset_id}_{template}.docx"
doc.save(word_path)
# 转换PDF
pdf_path = f"reports/{dataset_id}_{template}.pdf"
HTML(word_path).write_pdf(pdf_path)
return {"word": word_path, "pdf": pdf_path}
2.2 产品优化建议清单
2.2.1 三级优先级划分机制
差评归因结果需要转化为可执行的整改建议。智评罗盘按差评率划分三级优先级:
| 优先级 | 差评率阈值 | 响应时限 | 建议数量 |
|---|---|---|---|
| 紧急改进 | ≥15% | 本月内响应 | 至少2条 |
| 重要优化 | 5%-15% | 季度内规划 | 至少2条 |
| 保持优势 | 好评率≥80% | 持续保持 | 至少1条 |
def classify_priority(complaint_rate: float, positive_rate: float) -> str:
if complaint_rate >= 0.15:
return "urgent"
elif complaint_rate >= 0.05:
return "important"
elif positive_rate >= 0.80:
return "maintain"
else:
return "observe"
2.2.2 数据支撑说明生成
每条建议附带数据支撑说明,让运营人员理解建议来源:
SUGGESTION_PROMPT = """基于以下差评归因数据,生成整改建议:
问题类型:{issue_type}
差评提及率:{complaint_rate}%
典型差评样本:{sample_reviews}
请输出:
1. 建议内容(不超过30字)
2. 数据支撑说明(格式:"来自X条差评中Y%提及此问题")"""
生成结果示例:
- 建议:优化物流配送时效,重点解决偏远地区延迟问题
- 数据支撑:来自1,200条差评中38%提及物流延迟
2.2.3 建议清单前端渲染
前端以色块区分优先级,直观展示整改紧迫程度:
const SUGGESTION_COLORS = {
urgent: { bg: "#fff2f0", border: "#ff4d4f", tag: "紧急" },
important: { bg: "#fff7e6", border: "#fa8c16", tag: "重要" },
maintain: { bg: "#f6ffed", border: "#52c41a", tag: "保持" },
}
const SuggestionCard = ({ suggestion }) => {
const colorConfig = SUGGESTION_COLORS[suggestion.priority]
return (
<Card style={{ background: colorConfig.bg, borderLeft: `4px solid ${colorConfig.border}` }}>
<Tag color={colorConfig.border}>{colorConfig.tag}</Tag>
<Text>{suggestion.content}</Text>
<Text type="secondary" style={{ fontSize: 12 }}>
{suggestion.data_support}
</Text>
</Card>
)
}
2.3 营销文案智能生成
2.3.1 好评高频正面词提取
营销文案基于真实好评数据生成。智评罗盘提取好评评论中的高频正面词:
from collections import Counter
import jieba
POSITIVE_SEEDS = ["好", "满意", "推荐", "快", "精美", "优质", "超值", "完美"]
def extract_positive_words(reviews: list, top_n: int = 30) -> list:
positive_reviews = [r for r in reviews if r["rating"] >= 4]
all_words = []
for review in positive_reviews:
words = jieba.lcut(review["content"])
all_words.extend([w for w in words if w in POSITIVE_SEEDS or len(w) >= 2])
word_freq = Counter(all_words)
return [w for w, _ in word_freq.most_common(top_n)]
2.3.2 三风格标题文案生成
智评罗盘支持三种文案风格,适配不同营销场景:
| 风格类型 | 特点 | 适用场景 |
|---|---|---|
| 情感种草风 | 活泼口语,强调体验感 | 小红书、朋友圈推广 |
| 功能卖点风 | 参数化表达,突出性能 | 3C数码、家电详情页 |
| 数据背书风 | 精炼克制,引用好评数据 | 高端品牌、详情页首屏 |
TITLE_PROMPTS = {
"emotional": """基于好评关键词{keywords},生成情感种草风标题:
要求:口语化表达,15字以内,强调使用体验""",
"functional": """基于好评关键词{keywords},生成功能卖点风标题:
要求:参数化表达,20字以内,突出核心功能""",
"data_backed": """基于好评率{positive_rate}%和好评关键词{keywords},生成数据背书风标题:
要求:引用数据,15字以内,精炼克制"""
}
2.3.3 卖点提炼清单
除标题外,系统自动提炼3-5条卖点,每条不超过20字:
SELLING_POINT_PROMPT = """基于以下好评高频词,提炼3-5条产品卖点:
好评高频词:{keywords}
商品类别:{category}
要求:
1. 每条卖点不超过20字
2. 卖点之间不重复
3. 优先选择高频提及的优势"""
生成结果示例:
- 物流快,次日达
- 做工精细,手感好
- 性价比高,值得买
2.3.4 差评应对话术模板
针对差评场景,智评罗盘提供三套应对话术:
| 话术类型 | 特点 | 适用场景 |
|---|---|---|
| 关切型 | 表达理解,承诺改进 | 情绪化差评 |
| 解释型 | 说明原因,提供方案 | 理性差评 |
| 补偿型 | 提供补偿,化解不满 | 严重差评 |
REPLY_TEMPLATES = {
"concern": "感谢您的反馈,我们非常理解您的感受。针对您提到的问题,我们已记录并将在{timeline}内改进,感谢您的耐心等待。",
"explain": "感谢您的反馈。关于{issue}问题,主要原因是{reason}。我们建议{solution},如有需要请联系客服。",
"compensate": "感谢您的反馈。对于给您带来的不便,我们深表歉意。为弥补损失,我们提供{compensation},请联系客服领取。"
}
3. 阶段七核心开发进程
开发要点7-1:报告图表嵌入失败修复
主责:赵婧颐|协同:谭佳欣|验收:马烜钦
初期报告生成时,ECharts图表转base64嵌入Word失败,报告缺少关键可视化内容。
# 修复方案:使用matplotlib替代ECharts转图片
buf = BytesIO()
plt.savefig(buf, format='png', dpi=150, bbox_inches='tight')
buf.seek(0)
img_base64 = base64.b64encode(buf.read()).decode()
doc.add_picture(BytesIO(base64.b64decode(img_base64)), width=Inches(6))
实现后,报告完整嵌入评分分布直方图、情感趋势折线图、用户雷达图等全部图表。
开发要点7-2:大模型摘要超时处理
主责:马烜钦|协同:赵婧颐|验收:谭佳欣
初期大模型生成执行摘要时,偶尔超时导致报告生成失败。
# 修复方案:增加超时重试机制
async def generate_summary_with_retry(data: dict, max_retries: int = 3):
for attempt in range(max_retries):
try:
summary = await llm_client.generate(SUMMARY_PROMPT.format(**data), timeout=30)
return summary
except TimeoutError:
if attempt == max_retries - 1:
return "摘要生成失败,请手动补充"
await asyncio.sleep(2 ** attempt) # 指数退避
实现后,摘要生成成功率提升至98%,失败时降级为占位提示。
开发要点7-3:建议优先级色块渲染优化
主责:陈佳睿|协同:刘雨蒙|验收:马烜钦
初期建议清单页面色块颜色不明显,紧急/重要/保持区分度低。
// 修复方案:增加左侧边框和背景色对比
const SUGGESTION_COLORS = {
urgent: { bg: "#fff2f0", border: "#ff4d4f", tag: "紧急" },
important: { bg: "#fff7e6", border: "#fa8c16", tag: "重要" },
maintain: { bg: "#f6ffed", border: "#52c41a", tag: "保持" },
}
<Card style={{ background: colorConfig.bg, borderLeft: `4px solid ${colorConfig.border}` }}>
实现后,建议优先级一目了然,紧急建议红色边框醒目提示。
开发要点7-4:营销文案风格切换交互
主责:刘雨蒙|协同:陈佳睿|验收:赵婧颐
初期营销文案页面只展示单一风格标题,用户无法对比不同风格效果。
// 修复方案:三风格并列展示,支持一键切换
const [activeStyle, setActiveStyle] = useState('emotional')
<Tabs activeKey={activeStyle} onChange={setActiveStyle}>
<TabPane tab="情感种草风" key="emotional">
<TitleCard title={titles.emotional} />
</TabPane>
<TabPane tab="功能卖点风" key="functional">
<TitleCard title={titles.functional} />
</TabPane>
<TabPane tab="数据背书风" key="data_backed">
<TitleCard title={titles.data_backed} />
</TabPane>
</Tabs>
实现后,用户可快速对比三种风格,选择最适合的文案形式。
阶段七整体总结
阶段七总结
阶段七推动EcoSentinel完成从"数据呈现"到"决策输出"的升级。核心实现两大模块:一是报告生成模块,支持周报、月度分析、竞品对标三种模板,自动嵌入图表并由大模型撰写执行摘要,输出Word/PDF格式;二是营销文案模块,提取好评高频词生成三风格标题、卖点清单及差评应对话术。同时产品优化建议清单按差评率划分三级优先级,附带数据支撑。本阶段形成完整智能分析闭环,让数据直接转化为运营决策。
更多推荐
所有评论(0)