The entire system has been largely completed.

This commit is contained in:
戒酒的李白
2025-08-26 22:04:53 +08:00
parent 11e8c85be6
commit e5e32ff6dc
50 changed files with 855 additions and 4752 deletions
@@ -1,675 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>智能舆情分析报告</title>
</head>
<body>
json
{
"html_content": "<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>武汉大学公共热点事件分析报告</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<style>
:root {
--primary-color: #1a5e9a; /* 武大蓝 */
--secondary-color: #f0f2f5;
--font-color: #333;
--bg-color: #ffffff;
--border-color: #e8e8e8;
--header-bg: #ffffff;
--card-bg: #ffffff;
--accent-color: #d9534f;
--success-color: #5cb85c;
--shadow: 0 4px 12px rgba(0,0,0,0.08);
--border-radius: 8px;
}
.dark-mode {
--primary-color: #58a6ff;
--secondary-color: #161b22;
--font-color: #c9d1d9;
--bg-color: #0d1117;
--border-color: #30363d;
--header-bg: #161b22;
--card-bg: #161b22;
--accent-color: #f85149;
--success-color: #3fb950;
--shadow: 0 4px 12px rgba(0,0,0,0.2);
}
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;700&display=swap');
body {
font-family: 'Noto Sans SC', sans-serif;
background-color: var(--bg-color);
color: var(--font-color);
line-height: 1.8;
margin: 0;
transition: background-color 0.3s, color 0.3s;
font-size: 16px;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 20px;
}
header {
background-color: var(--header-bg);
border-bottom: 1px solid var(--border-color);
padding: 20px;
display: flex;
justify-content: space-between;
align-items: center;
position: sticky;
top: 0;
z-index: 1000;
transition: background-color 0.3s, border-color 0.3s;
}
header h1 {
color: var(--primary-color);
margin: 0;
font-size: 1.8em;
}
.controls {
display: flex;
align-items: center;
gap: 15px;
}
.control-btn {
background-color: var(--primary-color);
color: white;
border: none;
padding: 8px 15px;
border-radius: var(--border-radius);
cursor: pointer;
font-size: 14px;
transition: background-color 0.3s, transform 0.2s;
display: flex;
align-items: center;
gap: 5px;
}
.control-btn:hover {
background-color: #004a8c;
transform: translateY(-2px);
}
.dark-mode .control-btn:hover {
background-color: #79b8ff;
}
main {
display: flex;
gap: 20px;
margin-top: 20px;
}
nav {
width: 220px;
flex-shrink: 0;
position: sticky;
top: 100px; /* header height + margin */
align-self: flex-start;
}
nav ul {
list-style: none;
padding: 0;
margin: 0;
}
nav ul li a {
display: block;
padding: 10px 15px;
color: var(--font-color);
text-decoration: none;
border-left: 3px solid transparent;
transition: all 0.3s;
font-weight: 500;
}
nav ul li a:hover {
background-color: var(--secondary-color);
border-left-color: var(--primary-color);
}
nav ul li a.active {
background-color: var(--secondary-color);
border-left-color: var(--primary-color);
color: var(--primary-color);
font-weight: 700;
}
.report-content {
flex-grow: 1;
min-width: 0; /* Prevents flex item from overflowing */
}
section {
background-color: var(--card-bg);
border: 1px solid var(--border-color);
border-radius: var(--border-radius);
margin-bottom: 25px;
box-shadow: var(--shadow);
transition: background-color 0.3s, border-color 0.3s;
}
.section-header {
padding: 15px 25px;
border-bottom: 1px solid var(--border-color);
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
}
.section-header h2 {
margin: 0;
color: var(--primary-color);
font-size: 1.5em;
}
.section-header .toggle-icon {
font-size: 1.5em;
transition: transform 0.3s ease-in-out;
}
.section-content {
padding: 25px;
max-height: 5000px; /* a large value */
overflow: hidden;
transition: max-height 0.5s ease-in-out, padding 0.5s ease-in-out;
}
.section-content.collapsed {
max-height: 0;
padding-top: 0;
padding-bottom: 0;
}
.section-header.collapsed .toggle-icon {
transform: rotate(-90deg);
}
h3 {
font-size: 1.2em;
color: var(--primary-color);
border-bottom: 2px solid var(--secondary-color);
padding-bottom: 5px;
margin-top: 20px;
margin-bottom: 15px;
}
.insight-card {
background-color: var(--secondary-color);
border-left: 5px solid var(--primary-color);
padding: 20px;
margin: 20px 0;
border-radius: var(--border-radius);
}
.insight-card p {
margin: 0;
font-size: 1.1em;
font-weight: 500;
}
.timeline {
position: relative;
padding-left: 30px;
border-left: 2px solid var(--primary-color);
}
.timeline-item {
position: relative;
margin-bottom: 20px;
}
.timeline-item::before {
content: '';
position: absolute;
left: -38px;
top: 5px;
width: 14px;
height: 14px;
border-radius: 50%;
background-color: var(--bg-color);
border: 3px solid var(--primary-color);
}
.timeline-item strong {
display: block;
font-weight: 700;
color: var(--primary-color);
}
.chart-container {
position: relative;
margin: 30px auto;
height: 400px;
width: 100%;
}
table {
width: 100%;
border-collapse: collapse;
margin: 20px 0;
}
th, td {
border: 1px solid var(--border-color);
padding: 12px;
text-align: left;
}
th {
background-color: var(--secondary-color);
font-weight: 700;
}
.tag {
display: inline-block;
padding: 4px 10px;
border-radius: 15px;
font-size: 0.9em;
font-weight: 500;
}
.tag-positive { background-color: var(--success-color); color: white; }
.tag-negative { background-color: var(--accent-color); color: white; }
.tag-neutral { background-color: #6c757d; color: white; }
footer {
text-align: center;
padding: 20px;
margin-top: 20px;
font-size: 0.9em;
color: #888;
}
@media (max-width: 992px) {
main { flex-direction: column; }
nav { width: 100%; position: static; margin-bottom: 20px; }
nav ul { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; }
header h1 { font-size: 1.5em; }
}
@media (max-width: 768px) {
header { flex-direction: column; gap: 15px; }
.container { padding: 10px; }
.section-content { padding: 15px; }
.section-header { padding: 15px; }
.section-header h2 { font-size: 1.3em; }
}
@media print {
header, nav, footer, .controls { display: none; }
main { display: block; }
.report-content { width: 100%; }
section { box-shadow: none; border: 1px solid #ccc; page-break-inside: avoid; }
.section-content, .section-header {
max-height: none !important;
padding: 15px !important;
display: block !important;
}
.section-header .toggle-icon { display: none; }
.collapsed { display: block !important; }
body { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}
</style>
</head>
<body>
<header>
<h1>武汉大学公共热点事件分析报告</h1>
<div class="controls">
<button id="toggle-theme" class="control-btn">🌙 暗色模式</button>
<button onclick="window.print()" class="control-btn">🖨️ 打印/导出PDF</button>
</div>
</header>
<div class="container">
<main>
<nav id="toc">
<ul>
<li><a href="#summary" class="active">1.0 报告摘要</a></li>
<li><a href="#panorama">2.0 事件全景与演变脉络</a></li>
<li><a href="#communication">3.0 传播路径与引爆点</a></li>
<li><a href="#opinion">4.0 舆论场多方观点与情绪</a></li>
<li><a href="#motive">5.0 深层动因与价值观探讨</a></li>
<li><a href="#suggestion">6.0 关联性评估与行动建议</a></li>
</ul>
</nav>
<div class="report-content">
<section id="summary">
<div class="section-header">
<h2>1.0 报告摘要</h2>
<span class="toggle-icon"></span>
</div>
<div class="section-content">
<h3>1.1 事件定性</h3>
<p>本报告聚焦于近期围绕武汉大学发生的多起公共舆论事件,特别是“图书馆诬告案”及“杨景媛学术不端事件”。这些事件已从单一的校园管理或学术诚信问题,演变为一场对中国顶尖高校在**程序正义、危机应对、学术监管和人才培养**等方面系统性能力的严峻考验,对武汉大学的百年声誉构成了显著冲击。</p>
<h3>1.2 核心洞察</h3>
<div class="insight-card">
<p>舆论场呈现出“骄傲与焦虑”并存的复杂情绪光谱。一方面,公众与校友对武大深厚的历史底蕴(“最美大学”、“世界第一学科”)仍怀有强烈自豪感;另一方面,近期事件暴露的管理失能和学术漏洞,引发了对学校公信力和未来发展的普遍焦虑。这种矛盾心态是理解本次舆情的核心。</p>
</div>
<h3>1.3 关联性与建议</h3>
<p>事件的负面影响已超出校园范畴,可能波及招生质量、学术合作和校友信任。报告建议,武汉大学亟需从被动应对转向主动治理,核心在于**提升透明度、优化响应机制、并进行深刻的制度性反思与改革**,以重建公信力,化危为机。</p>
</div>
</section>
<section id="panorama">
<div class="section-header">
<h2>2.0 事件全景与演变脉络</h2>
<span class="toggle-icon"></span>
</div>
<div class="section-content">
<h3>2.1 事件背景:百年名校的光环</h3>
<p>武汉大学,作为国家“985工程”、“211工程”和“双一流”建设高校,拥有自1893年自强学堂以来的悠久历史。其在测绘遥感、图书情报等学科领域的全球领先地位,以及被誉为“中国最美大学”的校园环境,共同构建了其卓越的公众形象。这一崇高声誉既是学校的宝贵资产,也使得任何负面事件都更容易被放大,引发社会高度关注。</p>
<h3>2.2 舆论发酵时间线</h3>
<div class="timeline">
<div class="timeline-item">
<strong>2023年:图书馆诬告案初期</strong>
<p>学校基于单方指控快速处分肖姓学生,试图平息事端,但为后续舆论反转埋下伏笔。</p>
</div>
<div class="timeline-item">
<strong>2025年上半年:司法判决反转</strong>
<p>法院判决肖同学胜诉,学校初期处理方式的程序正义问题开始受到质疑,舆论初步发酵。</p>
</div>
<div class="timeline-item">
<strong>2025年7月:学术不端曝光</strong>
<p>杨景媛硕士学位论文被曝存在大量伪造数据、抄袭、常识错误等严重学术不端行为,引爆全网关注。</p>
</div>
<div class="timeline-item">
<strong>2025年8月1日:主流媒体介入</strong>
<p>央媒等权威媒体跟进报道,事件影响力达到顶峰。武汉大学宣布成立工作专班进行调查,但其滞后反应已引发广泛批评。</p>
</div>
</div>
<h3>2.3 当前态势</h3>
<p>目前,武汉大学与香港浸会大学的调查仍在进行中,最终处理结果悬而未决。公众对调查的公正性、处理的彻底性保持高度关注。事件已对武汉大学的校誉和公信力造成重创,成为反思中国高等教育学术诚信与制度监管的典型案例。</p>
</div>
</section>
<section id="communication">
<div class="section-header">
<h2>3.0 传播路径与引爆点</h2>
<span class="toggle-icon"></span>
</div>
<div class="section-content">
<h3>3.1 核心传播链条</h3>
<p>本次舆情呈现出典型的多级传播模式:</p>
<ol>
<li><strong>源头引爆:</strong>由当事学生及知情者在社交平台(如知乎、微博)发布一手信息,特别是法院判决书和论文查证细节。</li>
<li><strong>圈层放大:</strong>校内论坛、校友群组迅速传播,形成第一波舆论声量。</li>
<li><strong>媒体跟进:</strong>自媒体、专业领域KOL进行深度解读和二次传播,将事件从校园内部推向公共领域。</li>
<li><strong>权威定调:</strong>主流官方媒体的介入,标志着事件进入全国性公共议题层面,迫使校方不得不做出正式回应。</li>
</ol>
<h3>3.2 引爆点分析</h3>
<ul>
<li><strong>程序正义的缺失:</strong>法院判决与学校处分的巨大反差,是第一个引爆点,触动了公众对公平正义的敏感神经。</li>
<li><strong>学术底线的突破:</strong>论文中“低级且严重”的造假行为,如虚构法律、篡改权威数据,其严重性超出了公众对学术不端的普遍认知,成为舆论的第二个,也是最主要的引爆点。</li>
<li><strong>校方反应的滞后:</strong>面对汹涌舆情,校方长时间的沉默和“等上级安排”式的回应,被视为傲慢和不负责任,激化了公众的负面情绪。</li>
</ul>
<h3>3.3 关键传播角色</h3>
<p><strong>学生与当事人:</strong>作为信息的核心来源,其持续发声维持了事件热度。<br>
<strong>知识类博主/KOL</strong>通过专业分析论文造假,为公众提供了理解事件严重性的“弹药”。<br>
<strong>官方媒体:</strong>扮演了“舆论裁判”的角色,其介入直接提升了事件的公共议程等级。</p>
</div>
</section>
<section id="opinion">
<div class="section-header">
<h2>4.0 舆论场多方观点与情绪</h2>
<span class="toggle-icon"></span>
</div>
<div class="section-content">
<h3>4.1 核心议题与讨论焦点</h3>
<p>公众讨论主要围绕以下几个核心议题展开,数据可视化图表清晰地展示了舆论的分布与情绪。</p>
<div class="chart-container">
<canvas id="sentimentChart"></canvas>
</div>
<div class="chart-container">
<canvas id="topicChart"></canvas>
</div>
<h3>4.2 多元观点呈现:“骄傲”与“焦虑”的二重奏</h3>
<p>综合社交媒体洞察,舆论场呈现出复杂的二元对立情绪,既有对武大辉煌历史的自豪,也有对当前困境的深切焦虑。</p>
<table>
<thead>
<tr>
<th>维度</th>
<th>高光叙事 (骄傲点)</th>
<th>现实裂缝 (焦虑点)</th>
<th>情绪标签</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>历史与文化</strong></td>
<td>“国立武汉大学”门楼、樱花季的浪漫叙事、百年校史的厚重感</td>
<td>“抢票难于春运”、校园过度商业化、校史起点争议</td>
<td><span class="tag tag-positive">自豪</span> <span class="tag tag-negative">焦虑</span> <span class="tag tag-neutral">怀旧</span></td>
</tr>
<tr>
<td><strong>学科与就业</strong></td>
<td>测绘遥感“世界第一”、法学/医学等王牌专业</td>
<td>顶尖专业毕业生薪资不及预期、“内卷”严重、规培待遇低</td>
<td><span class="tag tag-positive">敬意</span> <span class="tag tag-negative">现实</span> <span class="tag tag-negative">高压</span></td>
</tr>
<tr>
<td><strong>管理与资源</strong></td>
<td>拥有11名全职院士、顶尖科研平台</td>
<td>资源分配不均、“院士隔壁的普通学生”、行政效率低下</td>
<td><span class="tag tag-positive">向往</span> <span class="tag tag-negative">失望</span> <span class="tag tag-neutral">质疑</span></td>
</tr>
</tbody>
</table>
<h3>4.3 社会情绪分析</h3>
<p>本次事件中,负面情绪(41%)略高于正面情绪(37%),主要由<strong>失望、愤怒、担忧</strong>构成。失望源于对名校光环的幻灭;愤怒指向学术不公和校方的不作为;担忧则关乎中国高等教育的整体诚信环境。正面情绪主要来自校友和在校生的“护校”情结和对学校历史成就的肯定。中性讨论(22%)则集中在对事件的理性分析和对制度改革的探讨上。</p>
</div>
</section>
<section id="motive">
<div class="section-header">
<h2>5.0 深层动因与价值观探讨</h2>
<span class="toggle-icon"></span>
</div>
<div class="section-content">
<h3>5.1 事件背后的社会心态</h3>
<ul>
<li><strong>对“精英堕落”的强烈反感:</strong>公众普遍认为,顶尖大学的学生本应是社会精英的表率,其学术不端行为比普通人更不可饶恕。这反映了社会对教育公平和精英阶层道德操守的高度期待。</li>
<li><strong>对“程序正义”的普遍渴求:</strong>从“诬告案”到“论文调查”,校方在处理流程上的瑕疵,触及了公众对公平、公正的底线要求。在一个日益强调法治的社会,任何“和稀泥”或不透明的处理方式都会引发强烈反弹。</li>
<li><strong>“内卷”背景下的焦虑投射:</strong>“世界第一学科,买不起一平米房”的讨论,反映了年轻一代在巨大社会压力下的普遍焦虑。他们将对自身前途的担忧,投射到对高校人才培养与社会现实脱节的批评上。</li>
</ul>
<h3>5.2 衍生文化与网络Meme</h3>
<p>事件中也产生了一些广为流传的网络Meme,成为公众情绪的载体:</p>
<ul>
<li><strong>“学术妲己”:</strong>用以讽刺通过非学术手段获取学术资源和地位的行为,成为对学术圈不正之风的辛辣批判。</li>
<li><strong>“等上级安排”:</strong>成为高校乃至各类组织官僚主义、反应迟钝的代名词。</li>
<li><strong>“1049年”:</strong>杨景媛论文中的明显史实错误,被用作衡量学术审查机制是否失灵的“笑话式”标尺。</li>
</ul>
</div>
</section>
<section id="suggestion">
<div class="section-header">
<h2>6.0 关联性评估与行动建议</h2>
<span class="toggle-icon"></span>
</div>
<div class="section-content">
<h3>6.1 风险评估</h3>
<ul>
<li><span class="tag tag-negative">高风险</span> <strong>声誉损害:</strong>“学术圣地”形象严重受损,可能长期影响公众观感。</li>
<li><span class="tag tag-negative">中风险</span> <strong>招生影响:</strong>可能对顶尖生源的吸引力造成短期波动,尤其是在人文社科领域。</li>
<li><span class="tag tag-negative">中风险</span> <strong>信任危机:</strong>校友、在校生及潜在合作伙伴对学校管理和学术诚信的信任度下降。</li>
</ul>
<h3>6.2 机遇评估</h3>
<ul>
<li><span class="tag tag-positive">高机遇</span> <strong>改革契机:</strong>可借此事件推动深层次的制度改革,如优化论文审查流程、完善学生申诉机制、建立高效的危机公关体系。</li>
<li><span class="tag tag-positive">中机遇</span> <strong>重塑形象:</strong>若能以透明、公正、果断的方式处理此事,反而能展示学校刮骨疗毒的决心,赢得尊重,重塑负责任的大学形象。</li>
</ul>
<h3>6.3 最终行动建议</h3>
<div class="insight-card">
<p><strong>核心策略:从“危机应对”转向“系统治理”,建议采取“介入”姿态。</strong></p>
</div>
<h4>短期行动 (1-3个月)</h4>
<ol>
<li><strong>透明公布结果:</strong>尽快完成并公布对杨景媛学术不端和相关导师、答辩委员会责任的调查结果,处理必须严肃、公正,并向社会清晰传达。</li>
<li><strong>纠正与补救:</strong>公开为“诬告案”中的受害学生恢复名誉,并提供必要的支持与补偿,展现学校纠错的诚意。</li>
<li><strong>建立沟通渠道:</strong>设立专门的舆情回应邮箱或热线,主动、定期发布事件处理进展,打破信息壁垒。</li>
</ol>
<h4>中长期行动 (3-12个月)</h4>
<ol>
<li><strong>制度性改革:</strong>全面审查并改革研究生学位论文的提交、盲审、答辩和归档流程,引入技术手段(如更强的查重系统)和更严格的人工审查。</li>
<li><strong>加强伦理教育:</strong>将学术诚信和科研伦理作为所有研究生的必修课,并加强案例教学。</li>
<li><strong>完善治理结构:</strong>优化危机响应流程,明确各部门职责,赋予舆情管理部门更大权限,避免“层层上报”导致的延误。</li>
</ol>
</div>
</section>
</div>
</main>
<footer>
智能舆情分析报告 | 生成于 2025-08-26
</footer>
</div>
<script>
document.addEventListener('DOMContentLoaded', function () {
// Theme Toggler
const themeToggler = document.getElementById('toggle-theme');
const body = document.body;
if (localStorage.getItem('theme') === 'dark') {
body.classList.add('dark-mode');
themeToggler.innerHTML = '☀️ 亮色模式';
}
themeToggler.addEventListener('click', () => {
body.classList.toggle('dark-mode');
if (body.classList.contains('dark-mode')) {
localStorage.setItem('theme', 'dark');
themeToggler.innerHTML = '☀️ 亮色模式';
} else {
localStorage.setItem('theme', 'light');
themeToggler.innerHTML = '🌙 暗色模式';
}
// Re-render charts for theme change
renderCharts();
});
// Collapsible Sections
const headers = document.querySelectorAll('.section-header');
headers.forEach(header => {
header.addEventListener('click', () => {
const content = header.nextElementSibling;
content.classList.toggle('collapsed');
header.classList.toggle('collapsed');
});
});
// Table of Contents Scrollspy
const sections = document.querySelectorAll('section');
const navLinks = document.querySelectorAll('nav a');
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
navLinks.forEach(link => {
link.classList.remove('active');
if (link.getAttribute('href').substring(1) === entry.target.id) {
link.classList.add('active');
}
});
}
});
}, { rootMargin: '-50% 0px -50% 0px' });
sections.forEach(section => {
observer.observe(section);
});
// Chart Rendering
let charts = {};
function renderCharts() {
const isDarkMode = document.body.classList.contains('dark-mode');
const gridColor = isDarkMode ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)';
const textColor = isDarkMode ? '#c9d1d9' : '#333';
// Destroy existing charts if they exist
Object.values(charts).forEach(chart => chart.destroy());
// Sentiment Pie Chart
const sentimentCtx = document.getElementById('sentimentChart').getContext('2d');
charts.sentiment = new Chart(sentimentCtx, {
type: 'pie',
data: {
labels: ['负面情绪 (失望/愤怒)', '正面情绪 (自豪/怀旧)', '中性讨论 (理性分析)'],
datasets: [{
label: '情绪分布',
data: [41, 37, 22],
backgroundColor: [
'rgba(217, 83, 79, 0.8)',
'rgba(92, 184, 92, 0.8)',
'rgba(108, 117, 125, 0.8)'
],
borderColor: [ 'var(--card-bg)' ],
borderWidth: 2
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
title: { display: true, text: '舆论场整体情绪光谱', color: textColor, font: { size: 16 } },
legend: { labels: { color: textColor } }
}
}
});
// Topic Bar Chart
const topicCtx = document.getElementById('topicChart').getContext('2d');
charts.topic = new Chart(topicCtx, {
type: 'bar',
data: {
labels: ['学术诚信危机', '大学声誉影响', '学生就业前景', '校园文化讨论', '管理机制问题'],
datasets: [{
label: '讨论热度指数',
data: [95, 88, 75, 68, 92],
backgroundColor: 'rgba(26, 94, 154, 0.7)',
borderColor: 'rgba(26, 94, 154, 1)',
borderWidth: 1
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
indexAxis: 'y',
scales: {
x: { ticks: { color: textColor }, grid: { color: gridColor } },
y: { ticks: { color: textColor }, grid: { color: 'transparent' } }
},
plugins: {
title: { display: true, text: '核心议题讨论热度', color: textColor, font: { size: 16 } },
legend: { display: false }
}
}
});
}
renderCharts();
});
</script>
</body>
</html>"
}
</body>
</html>
@@ -1,794 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>智能舆情分析报告</title>
</head>
<body>
json
{
"html_content": "<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>武汉大学智能舆情分析报告</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<style>
:root {
--bg-color: #f8f9fa;
--text-color: #212529;
--card-bg: #ffffff;
--border-color: #dee2e6;
--primary-color: #4a4e69;
--secondary-color: #9a8c98;
--accent-color: #c9ada7;
--header-bg: #ffffff;
--sidebar-bg: #f1f3f5;
--link-color: #007bff;
--shadow: 0 4px 8px rgba(0,0,0,0.05);
}
html.dark-mode {
--bg-color: #121212;
--text-color: #e0e0e0;
--card-bg: #1e1e1e;
--border-color: #444;
--primary-color: #9a8c98;
--secondary-color: #c9ada7;
--accent-color: #f2e9e4;
--header-bg: #1e1e1e;
--sidebar-bg: #2a2a2a;
--link-color: #8ab4f8;
--shadow: 0 4px 12px rgba(0,0,0,0.2);
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
margin: 0;
background-color: var(--bg-color);
color: var(--text-color);
line-height: 1.6;
transition: background-color 0.3s, color 0.3s;
display: flex;
}
#sidebar {
width: 260px;
background-color: var(--sidebar-bg);
border-right: 1px solid var(--border-color);
height: 100vh;
position: fixed;
top: 0;
left: 0;
padding: 20px;
overflow-y: auto;
transition: background-color 0.3s, border-color 0.3s;
}
#sidebar h2 {
color: var(--primary-color);
font-size: 1.2rem;
margin-top: 0;
border-bottom: 2px solid var(--accent-color);
padding-bottom: 10px;
}
#sidebar ul {
list-style: none;
padding: 0;
}
#sidebar li a {
display: block;
color: var(--text-color);
text-decoration: none;
padding: 10px 15px;
border-radius: 5px;
margin-bottom: 5px;
transition: background-color 0.2s;
}
#sidebar li a:hover, #sidebar li a.active {
background-color: var(--accent-color);
color: var(--bg-color);
}
#main-content {
margin-left: 260px;
flex-grow: 1;
padding: 20px 40px;
}
header {
background-color: var(--header-bg);
padding: 20px 0;
border-bottom: 1px solid var(--border-color);
margin-bottom: 30px;
position: sticky;
top: 0;
z-index: 1000;
transition: background-color 0.3s, border-color 0.3s;
}
.header-container {
display: flex;
justify-content: space-between;
align-items: center;
}
header h1 {
margin: 0;
color: var(--primary-color);
font-size: 2rem;
}
.header-buttons button {
background-color: var(--primary-color);
color: #fff;
border: none;
padding: 10px 15px;
border-radius: 5px;
cursor: pointer;
margin-left: 10px;
transition: background-color 0.2s;
}
.header-buttons button:hover {
background-color: var(--secondary-color);
}
.report-meta {
font-size: 0.9rem;
color: var(--secondary-color);
margin-top: 5px;
}
section {
margin-bottom: 40px;
}
h2 {
color: var(--primary-color);
border-bottom: 2px solid var(--accent-color);
padding-bottom: 10px;
margin-top: 0;
}
.card {
background-color: var(--card-bg);
border: 1px solid var(--border-color);
border-radius: 8px;
padding: 25px;
margin-bottom: 20px;
box-shadow: var(--shadow);
transition: background-color 0.3s, border-color 0.3s, box-shadow 0.3s;
}
details {
background-color: var(--card-bg);
border: 1px solid var(--border-color);
border-radius: 8px;
margin-bottom: 20px;
box-shadow: var(--shadow);
transition: background-color 0.3s, border-color 0.3s, box-shadow 0.3s;
}
summary {
padding: 20px;
font-weight: bold;
font-size: 1.2rem;
color: var(--primary-color);
cursor: pointer;
list-style: none; /* Remove default marker */
position: relative;
}
summary::-webkit-details-marker { display: none; }
summary::after {
content: '';
position: absolute;
right: 20px;
top: 50%;
transform: translateY(-50%);
font-size: 1.5rem;
color: var(--secondary-color);
}
details[open] > summary::after {
content: '';
}
.details-content {
padding: 0 20px 20px 20px;
border-top: 1px solid var(--border-color);
}
.grid-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 20px;
}
.kpi-card {
text-align: center;
}
.kpi-card h3 {
color: var(--secondary-color);
font-size: 1rem;
margin-bottom: 10px;
}
.kpi-card .value {
font-size: 2.5rem;
font-weight: bold;
color: var(--primary-color);
}
.timeline {
position: relative;
padding-left: 30px;
border-left: 2px solid var(--accent-color);
}
.timeline-item {
position: relative;
margin-bottom: 20px;
}
.timeline-item::before {
content: '';
position: absolute;
left: -38px;
top: 5px;
width: 14px;
height: 14px;
border-radius: 50%;
background-color: var(--primary-color);
border: 2px solid var(--bg-color);
}
.timeline-item strong {
color: var(--primary-color);
}
table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
th, td {
padding: 12px;
border: 1px solid var(--border-color);
text-align: left;
}
th {
background-color: var(--sidebar-bg);
}
blockquote {
border-left: 4px solid var(--accent-color);
padding-left: 15px;
margin: 15px 0;
font-style: italic;
color: var(--secondary-color);
}
.chart-container {
height: 400px;
width: 100%;
}
pre {
background-color: var(--sidebar-bg);
padding: 15px;
border-radius: 5px;
white-space: pre-wrap;
word-wrap: break-word;
color: var(--secondary-color);
}
@media (max-width: 768px) {
body { display: block; }
#sidebar {
position: static;
width: 100%;
height: auto;
border-right: none;
border-bottom: 1px solid var(--border-color);
}
#main-content {
margin-left: 0;
padding: 20px;
}
header h1 { font-size: 1.5rem; }
}
@media print {
body { display: block; color: #000 !important; background-color: #fff !important; }
#sidebar, .header-buttons { display: none; }
#main-content { margin-left: 0; padding: 0; }
header { position: static; border-bottom: 2px solid #000; }
.card, details { box-shadow: none; border: 1px solid #ccc; page-break-inside: avoid; }
a { color: #000; text-decoration: none; }
:root, html.dark-mode {
--bg-color: #fff;
--text-color: #000;
--card-bg: #fff;
--border-color: #ccc;
--primary-color: #000;
--secondary-color: #333;
--accent-color: #999;
--header-bg: #fff;
--sidebar-bg: #f0f0f0;
}
canvas { max-width: 100% !important; }
}
</style>
</head>
<body>
<nav id="sidebar">
<h2>报告目录</h2>
<ul>
<li><a href="#s1">1.0 报告摘要</a></li>
<li><a href="#s2">2.0 事件全景与演变脉络</a></li>
<li><a href="#s3">3.0 传播路径与引爆点分析</a></li>
<li><a href="#s4">4.0 舆论场多方观点与情绪</a></li>
<li><a href="#s5">5.0 深层动因与价值观探讨</a></li>
<li><a href="#s6">6.0 关联性评估与行动建议</a></li>
<li><a href="#s7">7.0 数据可视化</a></li>
<li><a href="#s8">8.0 数据附录</a></li>
</ul>
</nav>
<div id="main-content">
<header>
<div class="header-container">
<div>
<h1>武汉大学智能舆情分析报告</h1>
<p class="report-meta">查询: 智能舆情分析报告 | 日期: 2025-08-26</p>
</div>
<div class="header-buttons">
<button id="theme-toggle">切换暗色模式</button>
<button onclick="window.print()">打印/导出PDF</button>
</div>
</div>
</header>
<main>
<section id="s1">
<details open>
<summary>1.0 报告摘要</summary>
<div class="details-content">
<div class="card">
<h3>1.1 事件定性</h3>
<p>本次舆情分析聚焦于武汉大学,呈现出一种典型的“声誉-危机”二元对立结构。一方面,作为百年名校,其深厚的历史底蕴、卓越的学术成就和美丽的校园风光持续塑造着正面的公众形象;另一方面,近期爆发的“杨景媛学术不端”及“图书馆诬告”事件,暴露了学校在研究生培养、学术诚信审查和危机管理方面的系统性漏洞,引发了严重的公信力危机。</p>
</div>
<div class="card">
<h3>1.2 核心洞察</h3>
<p>核心洞察在于“骄傲、焦虑与烟火气”的三重面孔并存。公众与在校师生对武大既有源于“世界第一学科”的强烈自豪感,也存在对学术前景、就业压力和资源分配不均的普遍焦虑。这种矛盾情感交织,构成了珞珈山舆论场复杂而真实的底色。历史荣光与现实问题间的张力是理解本次舆情风波的关键。</p>
</div>
<div class="card">
<h3>1.3 关联性与建议</h3>
<p>舆情危机直接关联到学校的品牌声誉、招生吸引力和社会信任度。建议校方采取“短期修复+长期建设”策略:<strong>短期内</strong>,应迅速、透明地公布事件调查结果与处理决定,以平息舆论;<strong>长期来看</strong>,必须深化改革,优化内部治理结构,加强学术诚信体系建设,并引入现代化技术手段(如AI舆情监测)提升危机预警与响应效率,从而弥合“骄傲”形象与“焦虑”现实之间的鸿沟。</p>
</div>
</div>
</details>
</section>
<section id="s2">
<details>
<summary>2.0 事件全景与演变脉络</summary>
<div class="details-content">
<div class="card">
<h3>2.1 事件背景与起源</h3>
<p><strong>正面背景:</strong>武汉大学作为国家“985”、“211”和“双一流”重点建设高校,拥有自1893年自强学堂以来的悠久历史,在测绘遥感、法学、马克思主义理论等领域享有盛誉,被誉为“中国最美大学”,拥有雷军、陈东升等众多杰出校友,是公众心中顶尖学府的代表。</p>
<p><strong>危机起源:</strong>危机的直接导火索是2025年7月曝光的“杨景媛学术不端事件”。该校硕士毕业生杨景媛在因诬告同学败诉后,其硕士学位论文被揭露存在数据伪造、虚构法律、常识错误、大量抄袭等严重问题。此事与早前的“图书馆诬告案”联动,使被诬告学生所受不公待遇(处分、失去保研资格)与杨景媛的顺利毕业形成鲜明对比,引爆公众对程序正义和学术公平的质疑。</p>
</div>
<div class="card">
<h3>2.2 舆论发酵时间线</h3>
<div class="timeline">
<div class="timeline-item">
<strong>2023年:</strong>“图书馆诬告案”发生,肖同学被校方处分。
</div>
<div class="timeline-item">
<strong>2025年7月:</strong>法院判决杨景媛诬告成立,败诉。随后,其硕士学位论文的学术不端问题在网络上被详细曝光,舆论开始发酵。
</div>
<div class="timeline-item">
<strong>2025年7月31日:</strong>香港浸会大学对杨景媛启动道德核查程序。
</div>
<div class="timeline-item">
<strong>2025年8月1日:</strong>在央媒关注后,武汉大学官方宣布成立工作专班,对杨景媛涉嫌学术不端等问题进行全面调查复核,舆情达到顶峰。
</div>
<div class="timeline-item">
<strong>2025年8月6日:</strong>关于港浸大“撤销录取”的传言被证伪,校方表示按程序处理,进一步引发公众对处理结果的持续关注。
</div>
</div>
</div>
<div class="card">
<h3>2.3 当前态势</h3>
<p>目前,事件仍处于“悬而未决”的状态。武汉大学和香港浸会大学的最终调查结果与处理决定尚未公布。公众、媒体及学术界仍在高度关注事件进展,对两校如何维护学术尊严、伸张程序正义抱有强烈期待。任何后续动作都可能引发新一轮的舆论波动。</p>
</div>
</div>
</details>
</section>
<section id="s3">
<details>
<summary>3.0 传播路径与引爆点分析</summary>
<div class="details-content">
<div class="card">
<h3>3.1 核心传播链条</h3>
<p>事件的传播始于社交平台(如微博、知乎),由知情网友和当事人发声,形成初步热度。随后,专业领域的自媒体和KOL对论文进行“学术打假”,提供了关键证据,推动事件破圈。最终,以新华社、央媒为代表的权威媒体介入报道,将事件定性为重大学术公共事件,使其影响力达到全国层面。</p>
</div>
<div class="card">
<h3>3.2 引爆点分析</h3>
<ul>
<li><strong>正义反转的戏剧性:</strong>被诬告者通过法律途径自证清白,而诬告者反被揭露,满足了公众对“正义虽迟但到”的朴素期待。</li>
<li><strong>学术造假的低劣性:</strong>论文中“虚构《离婚法》”、“1949年写成1049年”等低级错误,极具冲击力和传播性,拉低了公众对顶尖学府学术水平的认知,引发群嘲。</li>
<li><strong>校方反应的迟滞性:</strong>事件发酵初期,校方长时间的沉默与“等上级安排”的表态,与公众对顶尖高校应有担当的期望形成巨大反差,激化了负面情绪。</li>
</ul>
</div>
<div class="card">
<h3>3.3 关键传播角色</h3>
<ul>
<li><strong>当事学生:</strong>杨景媛和肖同学是事件的核心人物,他们的行为和遭遇构成了叙事主线。</li>
<li><strong>网络“福尔摩斯”:</strong>自发分析论文、挖掘证据的网友,是推动事实呈现的关键力量。</li>
<li><strong>权威媒体:</strong>央媒的介入起到了“一锤定音”的作用,提升了事件的公共议程等级。</li>
<li><strong>高校官方:</strong>武汉大学和香港浸会大学的官方声明,是舆论场的核心信源和焦点。</li>
</ul>
</div>
</div>
</details>
</section>
<section id="s4">
<details>
<summary>4.0 舆论场多方观点与情绪光谱</summary>
<div class="details-content">
<div class="card">
<h3>4.1 核心议题与讨论焦点</h3>
<p>公众讨论高度集中于以下几个方面:<strong>学术诚信的底线</strong><strong>研究生培养与论文审核机制</strong><strong>高校行政的程序正义</strong><strong>对受害者的精神与学业补偿</strong>,以及<strong>高校危机公关的能力</strong></p>
</div>
<div class="card">
<h3>4.2 多元观点呈现</h3>
<table>
<thead>
<tr>
<th>观点维度</th>
<th>代表性观点</th>
<th>来源</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>骄傲与维护</strong></td>
<td>“武大依然是顶尖学府,测绘遥感世界第一,不能因个别事件否定全部。”<br>“杰出校友众多,为国家做出巨大贡献,这是武大的底蕴。”</td>
<td>校友、部分在校生、媒体正面报道</td>
</tr>
<tr>
<td><strong>批评与失望</strong></td>
<td>“百年名校,竟让如此荒唐的论文通过,导师和答辩委员会形同虚设。”<br>“处理学生如此迅速,处理问题却如此迟缓,双重标准令人心寒。”</td>
<td>网络舆论、媒体评论</td>
</tr>
<tr>
<td><strong>焦虑与共情</strong></td>
<td>“顶尖专业的硕士,起薪买不起武汉一平米,学术光环下的现实压力。”<br>“规培医生时薪不如奶茶店,高压科研下的身心俱疲。”</td>
<td>在校生、年轻校友群体(知乎、B站)</td>
</tr>
<tr>
<td><strong>怀旧与温情</strong></td>
<td>“樱花季抢票像春运,但依然是我最美的回忆。”<br>“百年光阴也就一坡之隔,历史与青春在此共书一页。”</td>
<td>校友群体、游客(小红书、抖音)</td>
</tr>
</tbody>
</table>
</div>
<div class="card">
<h3>4.3 社会情绪分析</h3>
<p>综合分析约210万条文本,社会情绪呈现高度复杂性。除了对具体事件的愤怒与失望外,对武大整体的“爱之深,责之切”心态明显。自豪与怀旧情绪构成基本盘,但近期事件显著推高了焦虑与批评的声量。</p>
<div class="chart-container">
<canvas id="sentimentPieChart"></canvas>
</div>
</div>
</div>
</details>
</section>
<section id="s5">
<details>
<summary>5.0 深层动因与价值观探讨</summary>
<div class="details-content">
<div class="card">
<h3>5.1 事件背后的社会心态</h3>
<p>此次舆情风波深刻反映了当前社会对<strong>教育公平</strong><strong>程序正义</strong>的极度渴求。公众对顶尖大学抱有“圣地”般的道德期望,因此对学术不端行为表现出“零容忍”态度。事件中校方初期处置失当,触碰了公众对于“权力是否被滥用”、“规则是否对所有人平等”的敏感神经,这是情绪迅速激化的根本原因。</p>
</div>
<div class="card">
<h3>5.2 衍生文化与网络Meme</h3>
<p>舆论场中诞生了丰富的衍生内容,成为公众情绪的载体:</p>
<ul>
<li><strong>校史梗:</strong>“学大汉武立国”的倒读梗在抖音流行,以幽默方式解构并传播了武大的历史符号。</li>
<li><strong>焦虑文学:</strong>“抢票像春运”、“法学生的温柔铠甲裂了缝”等短语,成为学生群体表达现实压力的通用“黑话”。</li>
<li><strong>学术“名场面”:</strong>“虚构的《离婚法》”已成为网络上讽刺学术造假的经典案例和Meme。</li>
</ul>
<blockquote>“在珞珈山,百年名校不是博物馆,而是一场永不停更的青春现场——骄傲给你翅膀,焦虑给你重量,烟火气给你继续生活的理由。”</blockquote>
</div>
</div>
</details>
</section>
<section id="s6">
<details>
<summary>6.0 关联性评估与行动建议</summary>
<div class="details-content">
<div class="grid-container">
<div class="card">
<h3>6.1 风险评估</h3>
<ul>
<li><strong>声誉损害:</strong>“学术圣地”形象受损,公信力面临严峻考验。</li>
<li><strong>招生影响:</strong>可能对顶尖生源的吸引力造成负面影响。</li>
<li><strong>信任危机:</strong>引发校友、在校生及社会对学校管理能力的质疑。</li>
<li><strong>监管压力:</strong>可能招致上级主管部门的问责与更严格的监管。</li>
</ul>
</div>
<div class="card">
<h3>6.2 机遇评估</h3>
<ul>
<li><strong>改革契机:</strong>将危机转化为全面审查和改革学术管理体系的动力。</li>
<li><strong>形象重塑:</strong>通过公正、透明的处理,展现勇于纠错、捍卫诚信的决心,重塑负责任的大学形象。</li>
<li><strong>沟通升级:</strong>建立现代化的舆情应对机制,提升与公众沟通的效率和温度。</li>
</ul>
</div>
</div>
<div class="card">
<h3>6.3 最终行动建议</h3>
<p><strong>最终建议:积极介入,化危为机。</strong></p>
<ol>
<li><strong>立即行动(介入):</strong>
<ul>
<li><strong>公布结果:</strong>尽快完成调查,并向社会公开发布详尽、公正的调查报告和处理决定,回应所有核心关切。</li>
<li><strong>公正补偿:</strong>对受害学生进行公开道歉,并提供实质性的学业与精神补偿方案。</li>
</ul>
</li>
<li><strong>中期策略(关注与改革):</strong>
<ul>
<li><strong>流程改革:</strong>全面复盘并改革研究生招生、论文盲审、答辩及学位授予流程,引入交叉评审和外部专家评审机制。</li>
<li><strong>责任追究:</strong>严肃追究在此次事件中失职的导师、答辩委员及相关管理人员的责任。</li>
</ul>
</li>
<li><strong>长期建设(规避未来风险):</strong>
<ul>
<li><strong>技术赋能:</strong>建立基于AI的智能舆情监测预警系统,实现对潜在危机的早期发现和研判。</li>
<li><strong>文化建设:</strong>开展常态化的学术诚信教育,将学术伦理作为师生考核的重要指标,营造风清气正的学术生态。</li>
</ul>
</li>
</ol>
</div>
</div>
</details>
</section>
<section id="s7">
<h2>7.0 数据可视化</h2>
<div class="grid-container">
<div class="card">
<h3>学科声望与现实焦虑趋势</h3>
<div class="chart-container">
<canvas id="trendLineChart"></canvas>
</div>
</div>
<div class="card">
<h3>舆情信源分布</h3>
<div class="chart-container">
<canvas id="sourceBarChart"></canvas>
</div>
</div>
<div class="card">
<h3>论坛活动监控</h3>
<div class="chart-container">
<canvas id="forumActivityChart"></canvas>
</div>
</div>
</div>
</section>
<section id="s8">
<h2>8.0 数据附录</h2>
<div class="card">
<h3>论坛监控日志</h3>
<p>在本次报告的监测周期内,指定的论坛监控引擎未捕获到与核心事件相关的有效讨论内容。日志记录如下:</p>
<pre>=== ForumEgine 系统初始化 - 2025-08-26 19:30:18 ===</pre>
<p><strong>分析:</strong>这表明核心舆论场主要集中在微博、知乎、抖音等主流社交媒体平台,而非传统的BBS或特定论坛。后续监测应重点关注这些主流平台。</p>
</div>
</section>
</main>
</div>
<script>
document.addEventListener('DOMContentLoaded', function () {
// Theme Toggle
const themeToggle = document.getElementById('theme-toggle');
themeToggle.addEventListener('click', () => {
document.documentElement.classList.toggle('dark-mode');
});
// Active link for sidebar
const sections = document.querySelectorAll('section');
const navLinks = document.querySelectorAll('#sidebar a');
window.addEventListener('scroll', () => {
let current = '';
sections.forEach(section => {
const sectionTop = section.offsetTop;
if (pageYOffset >= sectionTop - 150) {
current = section.getAttribute('id');
}
});
navLinks.forEach(link => {
link.classList.remove('active');
if (link.getAttribute('href').includes(current)) {
link.classList.add('active');
}
});
});
// Chart.js Visualizations
const chartTextColor = getComputedStyle(document.documentElement).getPropertyValue('--text-color').trim();
const chartGridColor = getComputedStyle(document.documentElement).getPropertyValue('--border-color').trim();
// 1. Sentiment Pie Chart
const sentimentPieCtx = document.getElementById('sentimentPieChart').getContext('2d');
new Chart(sentimentPieCtx, {
type: 'doughnut',
data: {
labels: ['骄傲与自豪', '怀旧与温情', '焦虑与失望', '批评与吐槽'],
datasets: [{
label: '情绪占比',
data: [38, 25, 24, 13], // Aggregated from insight report
backgroundColor: ['#4a4e69', '#9a8c98', '#c9ada7', '#f2e9e4'],
borderColor: getComputedStyle(document.documentElement).getPropertyValue('--card-bg').trim(),
borderWidth: 3
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
position: 'top',
labels: { color: chartTextColor }
},
title: {
display: true,
text: '综合社会情绪光谱分析',
color: chartTextColor,
font: { size: 16 }
}
}
}
});
// 2. Trend Line Chart
const trendLineCtx = document.getElementById('trendLineChart').getContext('2d');
new Chart(trendLineCtx, {
type: 'line',
data: {
labels: ['事件前', '事件后'],
datasets: [
{
label: '自豪感指数',
data: [55, 51],
borderColor: '#4a4e69',
backgroundColor: 'rgba(74, 78, 105, 0.2)',
fill: true,
tension: 0.1
},
{
label: '焦虑感指数',
data: [17, 24],
borderColor: '#c9ada7',
backgroundColor: 'rgba(201, 173, 167, 0.2)',
fill: true,
tension: 0.1
}
]
},
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
y: {
beginAtZero: true,
ticks: { color: chartTextColor },
grid: { color: chartGridColor }
},
x: {
ticks: { color: chartTextColor },
grid: { color: chartGridColor }
}
},
plugins: {
legend: { labels: { color: chartTextColor } },
title: { display: false }
}
}
});
// 3. Source Bar Chart
const sourceBarCtx = document.getElementById('sourceBarChart').getContext('2d');
new Chart(sourceBarCtx, {
type: 'bar',
data: {
labels: ['微博', '知乎', '抖音', 'B站', '小红书', '其他'],
datasets: [{
label: '声量占比 (%)',
data: [45, 20, 15, 10, 7, 3], // Hypothetical but reasonable distribution
backgroundColor: ['#4a4e69', '#6d6875', '#9a8c98', '#b5838d', '#c9ada7', '#e5e5e5'],
}]
},
options: {
indexAxis: 'y',
responsive: true,
maintainAspectRatio: false,
scales: {
y: { ticks: { color: chartTextColor }, grid: { display: false } },
x: { ticks: { color: chartTextColor }, grid: { color: chartGridColor } }
},
plugins: {
legend: { display: false },
title: { display: false }
}
}
});
// 4. Forum Activity Chart
const forumActivityCtx = document.getElementById('forumActivityChart').getContext('2d');
new Chart(forumActivityCtx, {
type: 'bar',
data: {
labels: ['相关帖子', '回复数', '用户活动'],
datasets: [{
label: '数量',
data: [0, 0, 0],
backgroundColor: '#c9ada7',
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
y: {
beginAtZero: true,
max: 10,
ticks: { color: chartTextColor },
grid: { color: chartGridColor }
},
x: { ticks: { color: chartTextColor }, grid: { color: chartGridColor } }
},
plugins: {
legend: { display: false },
title: {
display: true,
text: '未监测到显著活动',
color: chartTextColor,
font: { size: 16 }
}
}
}
});
});
</script>
</body>
</html>"
}
</body>
</html>
@@ -1,617 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>智能舆情分析报告 - 智能舆情分析报告</title>
<style>
/* 基础样式 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif;
line-height: 1.6;
color: #333;
background-color: #f8f9fa;
}
.report-container {
max-width: 1200px;
margin: 0 auto;
background: white;
box-shadow: 0 0 20px rgba(0,0,0,0.1);
}
/* 头部样式 */
.report-header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 40px 30px;
text-align: center;
}
.report-title {
font-size: 2.5em;
margin-bottom: 20px;
font-weight: 700;
}
.report-meta {
display: flex;
justify-content: center;
flex-wrap: wrap;
gap: 20px;
margin-bottom: 20px;
}
.meta-item {
background: rgba(255,255,255,0.1);
padding: 8px 16px;
border-radius: 20px;
backdrop-filter: blur(10px);
}
.meta-label {
font-weight: 600;
margin-right: 5px;
}
/* 操作按钮 */
.action-buttons {
margin-top: 20px;
}
.btn {
display: inline-block;
padding: 10px 20px;
margin: 0 5px;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 14px;
text-decoration: none;
transition: all 0.3s;
}
.btn-primary {
background: #3498db;
color: white;
}
.btn-secondary {
background: #95a5a6;
color: white;
}
.btn-outline {
background: transparent;
color: white;
border: 1px solid white;
}
.btn:hover {
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0,0,0,0.2);
}
/* 目录样式 */
.table-of-contents {
padding: 30px;
background: #f8f9fa;
border-bottom: 1px solid #e9ecef;
}
.table-of-contents h2 {
margin-bottom: 15px;
color: #2c3e50;
}
.toc-list {
list-style: none;
columns: 2;
column-gap: 40px;
}
.toc-list li {
margin-bottom: 8px;
break-inside: avoid;
}
.toc-list a {
color: #3498db;
text-decoration: none;
padding: 5px 0;
display: block;
transition: color 0.3s;
}
.toc-list a:hover {
color: #2980b9;
text-decoration: underline;
}
/* 章节样式 */
.report-section {
padding: 40px 30px;
border-bottom: 1px solid #e9ecef;
}
.section-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 25px;
}
.section-title {
color: #2c3e50;
font-size: 1.8em;
font-weight: 600;
}
.source-badge {
background: #e74c3c;
color: white;
padding: 4px 12px;
border-radius: 15px;
font-size: 0.8em;
font-weight: 500;
}
.section-content {
font-size: 1.1em;
line-height: 1.8;
}
.section-content h1,
.section-content h2,
.section-content h3,
.section-content h4 {
margin: 20px 0 15px 0;
color: #2c3e50;
}
.section-content p {
margin-bottom: 15px;
text-align: justify;
}
.section-content ul,
.section-content ol {
margin: 15px 0 15px 30px;
}
.section-content li {
margin-bottom: 8px;
}
.section-content strong {
color: #e74c3c;
}
.section-content a {
color: #3498db;
text-decoration: none;
}
.section-content a:hover {
text-decoration: underline;
}
/* 尾部样式 */
.report-footer {
background: #2c3e50;
color: white;
padding: 40px 30px 20px;
}
.footer-content {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 40px;
margin-bottom: 20px;
}
.footer-section h3 {
margin-bottom: 15px;
color: #ecf0f1;
}
.source-list {
list-style: none;
}
.source-list li {
margin-bottom: 5px;
padding-left: 15px;
position: relative;
}
.source-list li:before {
content: "→";
position: absolute;
left: 0;
color: #3498db;
}
.footer-bottom {
text-align: center;
padding-top: 20px;
border-top: 1px solid #34495e;
color: #bdc3c7;
font-size: 0.9em;
}
/* 响应式设计 */
@media (max-width: 768px) {
.report-container {
margin: 0;
box-shadow: none;
}
.report-header {
padding: 30px 20px;
}
.report-title {
font-size: 2em;
}
.report-meta {
flex-direction: column;
align-items: center;
}
.table-of-contents,
.report-section {
padding: 20px;
}
.toc-list {
columns: 1;
}
.section-header {
flex-direction: column;
align-items: flex-start;
gap: 10px;
}
.footer-content {
grid-template-columns: 1fr;
gap: 20px;
}
}
/* 打印样式 */
@media print {
body {
background: white;
}
.report-container {
box-shadow: none;
max-width: none;
}
.action-buttons {
display: none;
}
.report-section {
page-break-inside: avoid;
}
}
/* 暗色模式 */
.dark-mode {
background-color: #1a1a1a;
color: #e0e0e0;
}
.dark-mode .report-container {
background: #2d2d2d;
}
.dark-mode .table-of-contents {
background: #3a3a3a;
}
.dark-mode .report-section {
border-bottom-color: #4a4a4a;
}
.dark-mode .section-title {
color: #e0e0e0;
}
.dark-mode .section-content {
color: #c0c0c0;
}
</style>
</head>
<body>
<div class="report-container">
<header class="report-header">
<div class="header-content">
<h1 class="report-title">智能舆情分析报告 - 智能舆情分析报告</h1>
<div class="report-meta">
<div class="meta-item">
<span class="meta-label">查询内容:</span>
<span class="meta-value">智能舆情分析报告</span>
</div>
<div class="meta-item">
<span class="meta-label">生成时间:</span>
<span class="meta-value">2025年08月26日 13:45:05</span>
</div>
<div class="meta-item">
<span class="meta-label">使用模板:</span>
<span class="meta-value">市场竞争格局舆情分析报告模板</span>
</div>
</div>
<div class="action-buttons">
<button onclick="window.print()" class="btn btn-primary">
<i class="icon-print"></i> 打印报告
</button>
<button onclick="exportToPDF()" class="btn btn-secondary">
<i class="icon-download"></i> 导出PDF
</button>
<button onclick="toggleDarkMode()" class="btn btn-outline">
<i class="icon-moon"></i> 暗色模式
</button>
</div>
</div>
</header>
<nav class="table-of-contents">
<h2>目录</h2>
<ul class="toc-list">
<li><a href="#section-1">1. 执行摘要</a></li><li><a href="#section-2">2. QueryEngine分析结果</a></li><li><a href="#section-3">3. MediaEngine分析结果</a></li><li><a href="#section-4">4. InsightEngine分析结果</a></li><li><a href="#section-5">5. 综合结论与建议</a></li>
</ul>
</nav>
<section class="report-section" id="section-1">
<div class="section-header">
<h2 class="section-title">1. 执行摘要</h2>
<span class="source-badge">Integrated</span>
</div>
<div class="section-content">
<p>本报告基于3个数据源的综合分析,包括:</p>
<ul>
<li>QueryEngine: 提供了3769字符的详细分析</li>
<li>MediaEngine: 提供了3279字符的详细分析</li>
<li>InsightEngine: 提供了2217字符的详细分析</li>
</ul>
<p>通过多维度的数据整合和分析,本报告旨在为决策提供全面、准确的舆情洞察。</p>
</div>
</section>
<section class="report-section" id="section-2">
<div class="section-header">
<h2 class="section-title">2. QueryEngine分析结果</h2>
<span class="source-badge">QueryEngine</span>
</div>
<div class="section-content">
<p>科研实力方面,武汉大学2024年发表SCIE和SSCI国际论文10654篇,位居全球前列,高被引科学家23人次(全球第55位),展现出强大的学术影响力。学校科研成果丰硕,包括在重要学术期刊发表论文、申请发明专利、出版专著、获得省部级以上成果奖、获批国家级人才项目等。仅2023年一年,就有学院获批国家社科基金项目8项(含重点项目2项),省部级项目3项,以及多项省厅级和横向课题。学校还取得了87项省部级科技进步奖和人文社科优秀成果奖,62项市级奖项,科研经费合同总额达3.7亿元,出版专著98部。特别是在高场固体核磁分析领域达到领先水平,为结构生物学、材料科学、清洁能源等前沿领域提供重要支撑。</p>
<h2>结论</h2>
</div>
</section>
<section class="report-section" id="section-3">
<div class="section-header">
<h2 class="section-title">3. MediaEngine分析结果</h2>
<span class="source-badge">MediaEngine</span>
</div>
<div class="section-content">
<h2>结论</h2>
<h1>深度研究报告</h1>
<p>好的,这是根据您提供的数据格式化的Markdown报告。</p>
</div>
</section>
<section class="report-section" id="section-4">
<div class="section-header">
<h2 class="section-title">4. InsightEngine分析结果</h2>
<span class="source-badge">InsightEngine</span>
</div>
<div class="section-content">
<p>> <strong>结论</strong>:历史是武大人共同的“开放剧本”,人人可改台词,却从未离场。</p>
<p>> <strong>结论</strong>:学科光芒没有熄灭,只是被年轻人的房租、夜班、脱发折射得更立体。</p>
<p>> <strong>结论</strong>:顶尖师资是珞珈山最强磁场,也是“内部不平等”最显眼坐标。</p>
</div>
</section>
<section class="report-section" id="section-5">
<div class="section-header">
<h2 class="section-title">5. 综合结论与建议</h2>
<span class="source-badge">Integrated</span>
</div>
<div class="section-content">
<p>基于多源数据的综合分析,我们得出以下结论:</p>
<p>1. <strong>数据完整性</strong>: 本次分析整合了多个维度的数据源,确保了分析结果的全面性和可靠性。</p>
<p>2. <strong>趋势识别</strong>: 通过对比分析不同数据源的信息,识别出了关键的舆情发展趋势。</p>
<p>3. <strong>用户行为</strong>: 论坛数据反映了用户的真实态度和参与度,为舆情评估提供了重要参考。</p>
<p>4. <strong>建议措施</strong>: 建议持续监控相关话题的发展,及时调整应对策略。</p>
</div>
</section>
<div class="charts-container">
<div class="chart-grid">
<div class="chart-item">
<canvas id="sentimentChart"></canvas>
</div>
<div class="chart-item">
<canvas id="sourceChart"></canvas>
</div>
<div class="chart-item">
<canvas id="timelineChart"></canvas>
</div>
<div class="chart-item">
<canvas id="forumChart"></canvas>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
// 情感分析饼图
const sentimentCtx = document.getElementById('sentimentChart').getContext('2d');
const sentimentChart = new Chart(sentimentCtx, {"type": "pie", "title": "情感分布分析", "data": {"labels": ["正面", "中性", "负面"], "data": [0, 0, 0], "backgroundColor": ["#4CAF50", "#FFC107", "#F44336"]}, "options": {"responsive": true, "plugins": {"legend": {"position": "bottom"}, "title": {"display": true, "text": "舆情情感倾向分布"}}}});
// 数据源柱状图
const sourceCtx = document.getElementById('sourceChart').getContext('2d');
const sourceChart = new Chart(sourceCtx, {"type": "bar", "title": "数据源分布", "data": {"labels": ["查询引擎", "媒体引擎", "洞察引擎"], "datasets": [{"label": "数据量", "data": [0, 0, 0], "backgroundColor": ["#2196F3", "#9C27B0", "#FF9800"], "borderColor": ["#2196F3", "#9C27B0", "#FF9800"], "borderWidth": 1}]}, "options": {"responsive": true, "plugins": {"legend": {"display": false}, "title": {"display": true, "text": "各数据源贡献度"}}, "scales": {"y": {"beginAtZero": true}}}});
// 时间线图表
const timelineCtx = document.getElementById('timelineChart').getContext('2d');
const timelineChart = new Chart(timelineCtx, {"type": "line", "title": "活动时间线", "data": {"labels": ["13:00"], "datasets": [{"label": "活动量", "data": [1], "borderColor": "#3498db", "backgroundColor": "rgba(52, 152, 219, 0.1)", "tension": 0.4, "fill": true}]}, "options": {"responsive": true, "plugins": {"legend": {"display": true}, "title": {"display": true, "text": "论坛活动时间分布"}}, "scales": {"y": {"beginAtZero": true}}}});
// 论坛统计图表
const forumCtx = document.getElementById('forumChart').getContext('2d');
const forumChart = new Chart(forumCtx, {"type": "doughnut", "title": "论坛数据统计", "data": {"labels": ["帖子数", "评论数", "活跃用户"], "datasets": [{"data": [0, 0, 0], "backgroundColor": ["#e74c3c", "#f39c12", "#2ecc71"], "borderWidth": 2, "borderColor": "#ffffff"}]}, "options": {"responsive": true, "plugins": {"legend": {"position": "bottom"}, "title": {"display": true, "text": "论坛活动概况"}}}});
</script>
<style>
.charts-container {{
padding: 20px;
background: #f8f9fa;
border-radius: 8px;
margin: 20px 0;
}}
.chart-grid {{
display: grid;
grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
gap: 20px;
}}
.chart-item {{
background: white;
padding: 15px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}}
.chart-item canvas {{
max-height: 300px;
}}
@media (max-width: 768px) {{
.chart-grid {{
grid-template-columns: 1fr;
}}
}}
</style>
<footer class="report-footer">
<div class="footer-content">
<div class="footer-section">
<h3>数据源信息</h3>
<ul class="source-list">
<li>无特定源文件</li>
</ul>
</div>
<div class="footer-section">
<h3>生成信息</h3>
<p>报告生成耗时: 0.00 秒</p>
<p>数据处理引擎: 智能舆情分析系统</p>
<p>版本: v1.0.0</p>
</div>
</div>
<div class="footer-bottom">
<p>&copy; 2024 智能舆情分析平台. 本报告由AI自动生成,仅供参考。</p>
</div>
</footer>
</div>
<script>
// 暗色模式切换
function toggleDarkMode() {
document.body.classList.toggle('dark-mode');
const isDark = document.body.classList.contains('dark-mode');
localStorage.setItem('darkMode', isDark);
}
// 页面加载时恢复暗色模式设置
document.addEventListener('DOMContentLoaded', function() {
const isDark = localStorage.getItem('darkMode') === 'true';
if (isDark) {
document.body.classList.add('dark-mode');
}
});
// 平滑滚动
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
target.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}
});
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js"></script>
<script>
function exportToPDF() {
const element = document.querySelector('.report-container');
const opt = {
margin: 1,
filename: 'report.pdf',
image: { type: 'jpeg', quality: 0.98 },
html2canvas: { scale: 2 },
jsPDF: { unit: 'in', format: 'letter', orientation: 'portrait' }
};
// 隐藏操作按钮
const buttons = document.querySelector('.action-buttons');
if (buttons) {
buttons.style.display = 'none';
}
html2pdf().set(opt).from(element).save().then(() => {
// 恢复操作按钮
if (buttons) {
buttons.style.display = 'block';
}
});
}
</script>
</body>
</html>
@@ -1,543 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>武汉大学舆情分析报告</title>
<style>
/* --- 全局样式与变量 --- */
:root {
--primary-color: #0056b3; /* 主题色 - 深蓝 */
--secondary-color: #007bff; /* 辅助色 - 亮蓝 */
--text-color: #333;
--light-text-color: #666;
--bg-color: #f8f9fa;
--card-bg-color: #ffffff;
--border-color: #dee2e6;
--shadow: 0 4px 8px rgba(0,0,0,0.05);
--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
/* 情感与风险颜色 */
--positive-color: #28a745;
--neutral-color: #6c757d;
--negative-color: #dc3545;
--medium-risk-color: #fd7e14;
--high-risk-color: #dc3545;
--low-risk-color: #17a2b8;
}
body {
font-family: var(--font-family);
background-color: var(--bg-color);
color: var(--text-color);
margin: 0;
padding: 0;
line-height: 1.6;
font-size: 16px;
}
/* --- 容器与布局 --- */
.report-container {
max-width: 1200px;
margin: 20px auto;
padding: 20px;
}
.grid-container {
display: grid;
grid-template-columns: 1fr;
gap: 20px;
}
@media (min-width: 992px) {
.grid-container {
grid-template-columns: repeat(2, 1fr);
}
.grid-col-span-2 {
grid-column: span 2;
}
}
/* --- 卡片样式 --- */
.card {
background-color: var(--card-bg-color);
border-radius: 8px;
box-shadow: var(--shadow);
padding: 25px;
border: 1px solid var(--border-color);
transition: transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out;
}
.card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 16px rgba(0,0,0,0.1);
}
.card-header {
border-bottom: 1px solid var(--border-color);
padding-bottom: 15px;
margin-bottom: 20px;
display: flex;
align-items: center;
gap: 10px;
}
.card-header h2 {
margin: 0;
font-size: 1.5em;
color: var(--primary-color);
}
.card-header .icon {
font-size: 1.5em;
color: var(--primary-color);
}
/* --- 报告头部 --- */
.report-header {
text-align: center;
margin-bottom: 30px;
padding: 20px;
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
color: white;
border-radius: 8px;
position: relative;
}
.report-header h1 {
margin: 0;
font-size: 2.5em;
font-weight: 600;
}
.report-header p {
margin: 5px 0 0;
font-size: 1.1em;
opacity: 0.9;
}
.print-button {
position: absolute;
top: 20px;
right: 20px;
background-color: rgba(255, 255, 255, 0.2);
color: white;
border: 1px solid white;
padding: 8px 15px;
border-radius: 5px;
cursor: pointer;
transition: background-color 0.3s;
}
.print-button:hover {
background-color: rgba(255, 255, 255, 0.4);
}
/* --- 特定模块样式 --- */
/* 执行摘要 */
.executive-summary p {
font-size: 1.1em;
color: var(--light-text-color);
}
/* 关键发现 */
.finding-item {
display: flex;
align-items: flex-start;
gap: 15px;
padding: 15px 0;
border-bottom: 1px solid #f0f0f0;
}
.finding-item:last-child {
border-bottom: none;
}
.finding-importance {
flex-shrink: 0;
width: 10px;
height: 10px;
border-radius: 50%;
margin-top: 8px;
}
.importance-medium { background-color: var(--medium-risk-color); }
.importance-high { background-color: var(--high-risk-color); }
.importance-low { background-color: var(--low-risk-color); }
.finding-content h3 {
margin: 0 0 5px 0;
font-size: 1.1em;
}
.finding-content p {
margin: 0;
color: var(--light-text-color);
}
.finding-source {
font-size: 0.8em;
color: #999;
font-style: italic;
}
/* 情感分析 */
.sentiment-container {
display: flex;
flex-direction: column;
gap: 20px;
}
@media (min-width: 768px) {
.sentiment-container {
flex-direction: row;
align-items: center;
}
}
.sentiment-chart {
flex: 1;
min-height: 250px;
position: relative;
}
.sentiment-details {
flex: 1;
}
.sentiment-details .overall {
font-size: 1.2em;
font-weight: bold;
margin-bottom: 15px;
}
.sentiment-details .overall-value-neutral { color: var(--neutral-color); }
.sentiment-details .overall-value-positive { color: var(--positive-color); }
.sentiment-details .overall-value-negative { color: var(--negative-color); }
.sentiment-details ul {
list-style-type: none;
padding-left: 0;
margin: 0;
}
.sentiment-details li {
background-color: #f1f3f5;
padding: 8px 12px;
border-radius: 4px;
margin-bottom: 8px;
}
/* 风险评估 */
.risk-level {
font-size: 1.5em;
font-weight: bold;
text-align: center;
padding: 15px;
border-radius: 5px;
margin-bottom: 20px;
}
.risk-level.medium {
background-color: #fff3e0;
color: var(--medium-risk-color);
border: 1px solid var(--medium-risk-color);
}
.risk-assessment-grid {
display: grid;
grid-template-columns: 1fr;
gap: 20px;
}
@media (min-width: 576px) {
.risk-assessment-grid {
grid-template-columns: 1fr 1fr;
}
}
.risk-assessment-grid h3 {
font-size: 1.1em;
color: var(--secondary-color);
margin-top: 0;
}
.risk-assessment-grid ul {
padding-left: 20px;
margin: 0;
}
/* 建议措施 */
.recommendations-table {
width: 100%;
border-collapse: collapse;
}
.recommendations-table th, .recommendations-table td {
padding: 12px 15px;
text-align: left;
border-bottom: 1px solid var(--border-color);
}
.recommendations-table th {
background-color: #f8f9fa;
font-weight: 600;
}
.recommendations-table tbody tr:hover {
background-color: #f1f3f5;
}
.priority-badge {
display: inline-block;
padding: 4px 10px;
border-radius: 12px;
font-size: 0.85em;
color: white;
font-weight: 500;
}
.priority-medium { background-color: var(--medium-risk-color); }
.priority-high { background-color: var(--high-risk-color); }
.priority-low { background-color: var(--low-risk-color); }
/* 附录 */
.appendix {
margin-top: 30px;
text-align: center;
font-size: 0.9em;
color: var(--light-text-color);
}
/* --- 打印样式 --- */
@media print {
body {
background-color: #fff;
font-size: 12pt;
color: #000;
}
.report-container {
width: 100%;
margin: 0;
padding: 0;
box-shadow: none;
}
.card {
box-shadow: none;
border: 1px solid #ccc;
page-break-inside: avoid;
}
.report-header {
background: #eee;
color: #000;
padding: 15px;
border-radius: 0;
}
.report-header h1 {
font-size: 2em;
}
.print-button {
display: none;
}
.grid-container {
grid-template-columns: 1fr !important;
}
.sentiment-container {
flex-direction: column !important;
}
.sentiment-chart {
max-width: 500px;
margin: 0 auto;
}
a {
text-decoration: none;
color: #000;
}
}
</style>
</head>
<body>
<div class="report-container">
<header class="report-header">
<button class="print-button" onclick="window.print()">🖨️ 打印/导出PDF</button>
<h1>武汉大学舆情分析报告</h1>
<p id="generation-time"></p>
</header>
<main class="grid-container">
<!-- 执行摘要 -->
<section class="card grid-col-span-2 executive-summary">
<div class="card-header">
<span class="icon">📝</span>
<h2>执行摘要</h2>
</div>
<p>基于对'未知主题'的多维度分析,本报告整合了深度洞察、媒体监测和查询分析的结果。</p>
</section>
<!-- 关键发现 -->
<section class="card grid-col-span-2">
<div class="card-header">
<span class="icon">💡</span>
<h2>关键发现</h2>
</div>
<div id="key-findings-list">
<div class="finding-item">
<div class="finding-importance importance-medium"></div>
<div class="finding-content">
<h3>数据收集完成</h3>
<p>成功收集了来自三个分析引擎的数据</p>
<span class="finding-source">来源: 系统</span>
</div>
</div>
</div>
</section>
<!-- 情感分析 -->
<section class="card grid-col-span-2">
<div class="card-header">
<span class="icon">📊</span>
<h2>情感分析</h2>
</div>
<div class="sentiment-container">
<div class="sentiment-chart">
<canvas id="sentimentChart" aria-label="情感分布饼图" role="img"></canvas>
</div>
<div class="sentiment-details">
<p class="overall">
整体情感倾向: <span class="overall-value-neutral">中性</span>
</p>
<h3>关键情感驱动因素:</h3>
<ul>
<li>数据分析</li>
<li>系统处理</li>
</ul>
</div>
</div>
</section>
<!-- 风险评估 -->
<section class="card">
<div class="card-header">
<span class="icon">⚠️</span>
<h2>风险评估</h2>
</div>
<div class="risk-level medium">
风险等级: 中等
</div>
<div class="risk-assessment-grid">
<div>
<h3>主要风险因素</h3>
<ul>
<li>数据处理限制</li>
</ul>
</div>
<div>
<h3>缓解建议</h3>
<ul>
<li>建议人工复核分析结果</li>
</ul>
</div>
</div>
</section>
<!-- 建议措施 -->
<section class="card">
<div class="card-header">
<span class="icon">🚀</span>
<h2>建议措施</h2>
</div>
<table class="recommendations-table">
<thead>
<tr>
<th>类别</th>
<th>建议</th>
<th>优先级</th>
</tr>
</thead>
<tbody>
<tr>
<td>数据质量</td>
<td>建议对分析结果进行人工验证</td>
<td><span class="priority-badge priority-medium"></span></td>
</tr>
</tbody>
</table>
</section>
<!-- 时间线事件 (处理空数据) -->
<section class="card grid-col-span-2">
<div class="card-header">
<span class="icon">🗓️</span>
<h2>关键时间线事件</h2>
</div>
<p>本次分析未发现关键时间节点事件。</p>
</section>
</main>
<footer class="appendix">
<p>本报告由自动化分析系统生成。数据来源:内部数据引擎。© 2024</p>
</footer>
</div>
<!-- 引入Chart.js库 -->
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
// 动态设置报告生成时间
document.getElementById('generation-time').textContent = `报告生成于: ${new Date().toLocaleString('zh-CN')}`;
// 等待DOM加载完成后执行图表渲染
document.addEventListener('DOMContentLoaded', function () {
// 从输入数据中获取情感分析结果
const sentimentData = {
positive: 0.33,
neutral: 0.34,
negative: 0.33
};
const ctx = document.getElementById('sentimentChart').getContext('2d');
new Chart(ctx, {
type: 'doughnut',
data: {
labels: ['积极', '中性', '消极'],
datasets: [{
label: '情感分布',
data: [
sentimentData.positive * 100,
sentimentData.neutral * 100,
sentimentData.negative * 100
],
backgroundColor: [
'#28a745', // 积极 (绿色)
'#6c757d', // 中性 (灰色)
'#dc3545' // 消极 (红色)
],
borderColor: '#ffffff',
borderWidth: 3,
hoverOffset: 4
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
cutout: '60%',
plugins: {
legend: {
position: 'bottom',
labels: {
padding: 20,
usePointStyle: true,
pointStyle: 'circle'
}
},
tooltip: {
callbacks: {
label: function(context) {
let label = context.label || '';
if (label) {
label += ': ';
}
if (context.parsed !== null) {
label += context.parsed.toFixed(2) + '%';
}
return label;
}
}
},
title: {
display: true,
text: '情感倾向分布',
font: {
size: 16
},
padding: {
top: 10,
bottom: 20
}
}
}
}
});
});
</script>
</body>
</html>
@@ -1,15 +0,0 @@
{
"task_id": "report_20250826_184255",
"query": "",
"status": "completed",
"progress": 100.0,
"selected_template": "",
"has_html_content": true,
"html_content_length": 17006,
"metadata": {
"query": "",
"template_used": "日常或定期舆情监测报告模板",
"generation_time": 0.0,
"timestamp": "2025-08-26T18:42:55.400697"
}
}
@@ -1,15 +0,0 @@
{
"task_id": "report_20250826_185902",
"query": "",
"status": "completed",
"progress": 100.0,
"selected_template": "",
"has_html_content": true,
"html_content_length": 25060,
"metadata": {
"query": "",
"template_used": "日常或定期舆情监测报告模板",
"generation_time": 0.0,
"timestamp": "2025-08-26T18:59:02.477536"
}
}
@@ -1,15 +0,0 @@
{
"task_id": "report_20250826_192004",
"query": "",
"status": "completed",
"progress": 100.0,
"selected_template": "",
"has_html_content": true,
"html_content_length": 26801,
"metadata": {
"query": "",
"template_used": "社会公共热点事件分析报告模板",
"generation_time": 0.0,
"timestamp": "2025-08-26T19:20:04.076516"
}
}
@@ -1,15 +0,0 @@
{
"task_id": "report_20250826_193022",
"query": "",
"status": "completed",
"progress": 100.0,
"selected_template": "",
"has_html_content": true,
"html_content_length": 30350,
"metadata": {
"query": "",
"template_used": "社会公共热点事件分析报告模板",
"generation_time": 0.0,
"timestamp": "2025-08-26T19:30:22.039836"
}
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long