huibao/frontend/index.html

309 lines
14 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>眼镜行业情报分析系统</title>
<link rel="stylesheet" href="css/style.css?v=3">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/toast.css">
</head>
<body>
<!-- Toast 容器 -->
<div id="toast-container" class="toast-container"></div>
<!-- Confirm 弹窗 -->
<div id="confirm-overlay" class="confirm-overlay">
<div class="confirm-box">
<h3 id="confirm-title" class="confirm-title">确认操作</h3>
<p id="confirm-message" class="confirm-message">确定要执行此操作吗?</p>
<div class="confirm-actions">
<button id="confirm-cancel" class="btn-cancel">取消</button>
<button id="confirm-ok" class="btn primary">确定</button>
</div>
</div>
</div>
<div class="app-container">
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="logo">
<i class="fas fa-glasses"></i>
<span>情报分析系统</span>
</div>
<nav class="nav-menu">
<a href="#" class="nav-item active" data-page="dashboard">
<i class="fas fa-chart-pie"></i> 概览
</a>
<a href="#" class="nav-item" data-page="reports">
<i class="fas fa-file-alt"></i> 报告管理
</a>
<a href="#" class="nav-item" data-page="companies">
<i class="fas fa-building"></i> 公司管理
</a>
<a href="#" class="nav-item" data-page="settings">
<i class="fas fa-cog"></i> 系统设置
</a>
</nav>
<div class="scheduler-status">
<div class="status-header">
<span>定时任务</span>
<span id="scheduler-indicator" class="status-dot"></span>
</div>
<div class="status-time" id="next-run-time">下次: --</div>
<button id="run-now-btn" class="btn-xs">立即同步</button>
</div>
</aside>
<!-- Mobile Menu Toggle -->
<button id="mobile-menu-btn" class="mobile-menu-btn">
<i class="fas fa-bars"></i>
</button>
<!-- Sidebar Overlay (Mobile) -->
<div id="sidebar-overlay" class="sidebar-overlay"></div>
<!-- 主内容区 -->
<main class="main-content">
<!-- 仪表盘 -->
<section id="dashboard-page" class="page active">
<header class="page-header">
<h1>情报概览</h1>
<div class="actions">
<button class="btn-primary" onclick="app.fetchDashboard()">
<i class="fas fa-sync"></i> 刷新
</button>
</div>
</header>
<div class="stats-grid">
<div class="card stat-card">
<div class="stat-icon bg-blue"><i class="fas fa-building"></i></div>
<div class="stat-info">
<h3 id="stat-companies">0</h3>
<p>监控公司</p>
</div>
</div>
<div class="card stat-card">
<div class="stat-icon bg-green"><i class="fas fa-file-pdf"></i></div>
<div class="stat-info">
<h3 id="stat-reports">0</h3>
<p>收集报告</p>
</div>
</div>
<div class="card stat-card">
<div class="stat-icon bg-purple"><i class="fas fa-brain"></i></div>
<div class="stat-info">
<h3 id="stat-analyzed">0</h3>
<p>已AI分析</p>
</div>
</div>
</div>
<div class="dashboard-grid">
<div class="card recent-analyses">
<h3><i class="fas fa-star"></i> 最新AI洞察</h3>
<div id="recent-insights-list" class="list-container">
<!-- JS填充 -->
<div class="loading">加载中...</div>
</div>
</div>
<div class="card task-logs">
<h3><i class="fas fa-tasks"></i> 系统日志</h3>
<div id="logs-list" class="log-container">
<!-- JS填充 -->
</div>
</div>
</div>
</section>
<!-- 报告页 -->
<section id="reports-page" class="page">
<header class="page-header">
<h1>行业报告</h1>
<div class="filters-container">
<div class="filter-group">
<i class="fas fa-filter filter-icon"></i>
<select id="filter-company" class="modern-select">
<option value="">所有公司</option>
</select>
</div>
<div class="filter-group">
<select id="filter-type" class="modern-select">
<option value="">所有类型</option>
<option value="年度报告">年报</option>
<option value="半年度报告">半年报</option>
</select>
</div>
<div class="filter-group">
<select id="filter-status" class="modern-select">
<option value="">所有状态</option>
<option value="analyzed">已分析</option>
<option value="pending">待分析</option>
</select>
</div>
</div>
</header>
<div class="table-container card">
<table id="reports-table">
<thead>
<tr>
<th>公司名称</th>
<th>报告标题</th>
<th>类型</th>
<th>年份</th>
<th>发布日期</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<tbody id="reports-list">
<!-- JS填充 -->
</tbody>
</table>
</div>
<!-- 报告详情弹窗 -->
<div id="report-modal" class="modal">
<div class="modal-content large">
<span class="close">&times;</span>
<div class="modal-header">
<h2 id="modal-title">报告详情</h2>
<div class="modal-tags" id="modal-tags"></div>
</div>
<div class="tabs">
<button class="tab-btn active" data-tab="ai-summary">AI总结</button>
<button class="tab-btn" data-tab="ai-sections">章节分析</button>
<button class="tab-btn" data-tab="extracted-content">原文提取</button>
</div>
<div class="modal-body">
<div id="ai-summary" class="tab-content active">
<div id="summary-content" class="markdown-body"></div>
</div>
<div id="ai-sections" class="tab-content">
<div id="sections-list"></div>
</div>
<div id="extracted-content" class="tab-content">
<div id="raw-content-list"></div>
</div>
</div>
<div class="modal-footer">
<button class="btn-secondary" id="btn-reanalyze">重新分析</button>
<a href="#" target="_blank" class="btn-primary" id="btn-download">下载PDF</a>
</div>
</div>
</div>
</section>
<!-- 公司页 -->
<section id="companies-page" class="page">
<header class="page-header">
<h1>上市公司管理</h1>
<button class="btn-primary" id="btn-add-company">
<i class="fas fa-plus"></i> 添加公司
</button>
</header>
<div class="table-container card">
<table id="companies-table">
<thead>
<tr>
<th>代码</th>
<th>简称</th>
<th>全称</th>
<th>行业</th>
<th>报告数</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<!-- JS填充 -->
</tbody>
</table>
<div id="company-modal" class="modal">
<div class="modal-content">
<span class="close">&times;</span>
<h2 id="company-modal-title">添加公司</h2>
<p id="company-modal-desc" style="color:#64748b;font-size:0.9rem;margin-bottom:20px">
输入股票代码后,系统将自动从巨潮资讯网获取公司信息
</p>
<form id="add-company-form">
<input type="hidden" name="id" id="company-id">
<div class="form-group">
<label>股票代码 <span style="color:red">*</span></label>
<input type="text" name="stock_code" id="company-code" required
placeholder="如: 300622、600519" maxlength="6">
</div>
<div class="form-group">
<label>公司全称</label>
<input type="text" name="company_name" id="company-name" placeholder="自动获取或手动输入">
</div>
<div class="form-group">
<label>公司简称</label>
<input type="text" name="short_name" id="company-short-name" placeholder="自动获取">
</div>
<div class="form-group">
<label>所属行业</label>
<input type="text" name="industry" id="company-industry" placeholder="如: 眼镜零售、白酒">
</div>
<button type="submit" class="btn-primary full-width" id="btn-save-company">
<i class="fas fa-save"></i> 保存
</button>
</form>
</div>
</div>
</section>
<!-- 设置页 -->
<section id="settings-page" class="page">
<header class="page-header">
<h1>系统设置</h1>
</header>
<div class="settings-grid">
<div class="card">
<h3>🤖 AI模型配置</h3>
<div class="form-group">
<label>当前模型</label>
<input type="text" value="gemini-3-pro-preview-thinking-*" disabled>
</div>
<div class="form-group">
<label>并行分析数</label>
<input type="number" value="3" disabled>
</div>
</div>
<div class="card">
<h3>🕷️ 爬虫设置</h3>
<div class="form-group">
<label>检查频率 (小时)</label>
<input type="number" value="24" disabled>
</div>
<div class="form-group">
<label>提取关键词</label>
<textarea disabled rows="5">投资方案, 未来发展规划, 发展战略, 经营计划, 战略规划...</textarea>
</div>
</div>
</div>
</section>
</main>
</div>
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<script src="js/app.js?v=5"></script>
</body>
</html>