市场页改版:三栏展示(行业+趋势信号+小果扫描),取代旧洞察/潜力股

This commit is contained in:
知微
2026-06-21 02:47:04 +08:00
parent 70514bf542
commit 4eb409b51a
+40 -24
View File
@@ -362,38 +362,54 @@ let marketRefreshInterval = null;
function refreshMarketData() {
const el = document.getElementById('tab-market');
if (!el || el.classList.contains('hidden')) return;
fetchJSON('/api/market').then(d => {
const sectors = d.sectors || [];
const insights = d.insights || [];
const potentials = d.potential_stocks || [];
Promise.all([
fetchJSON('/api/market'),
fetchJSON('/api/signals'),
]).then(([mkt, signals]) => {
const sectors = mkt.sectors || [];
const sigs = signals || [];
const xiaoguo = sigs.filter(s => s.source === 'xiaoguo');
const trend = sigs.filter(s => s.source !== 'xiaoguo');
el.innerHTML = `
<div class="grid grid-cols-1 lg:grid-cols-2 gap-4">
<div class="grid grid-cols-1 lg:grid-cols-3 gap-4 mb-4">
<div class="card p-4">
<h3 class="text-sm font-semibold mb-3">🏭 行业热点</h3>
${sectors.length ? sectors.map(s => `
<div class="flex justify-between items-center p-2 bg-slate-800/30 rounded-lg mb-1">
<span class="text-sm">${s.name}</span>
<span class="text-xs font-mono ${(s.change||0)>=0?'badge-up':'badge-down'}">
${(s.change||0)>=0?'+':''}${(s.change||0).toFixed(2)}%
</span>
<h3 class="text-sm font-semibold mb-2">🏭 行业热点</h3>
${sectors.length ? sectors.slice(0,8).map(s => `
<div class="flex justify-between items-center p-1.5 ${s.change>=0?'':'bg-slate-800/20'} rounded mb-0.5">
<span class="text-xs">${s.name}</span>
<span class="text-xs font-mono ${(s.change||0)>=0?'badge-up':'badge-down'}">${(s.change||0)>=0?'+':''}${(s.change||0).toFixed(1)}%</span>
</div>
`).join('') : '<div class="text-xs text-slate-500">暂无行业数据</div>'}
`).join('') : '<div class="text-xs text-slate-500">暂无</div>'}
</div>
<div class="card p-4">
<h3 class="text-sm font-semibold mb-3">💡 知微洞察</h3>
${insights.length ? insights.map(i =>
`<div class="p-2 bg-slate-800/30 rounded-lg mb-1 text-xs">${i}</div>`
).join('') : '<div class="text-xs text-slate-500">暂无洞察</div>'}
<h3 class="text-sm font-semibold mb-2">📡 趋势信号 (${trend.length})</h3>
${trend.length ? trend.slice(0,6).map(s => `
<div class="p-1.5 bg-slate-800/30 rounded mb-0.5 text-xs">
<span class="font-semibold ${s.overall_sentiment==='利好'?'text-green-400':s.overall_sentiment==='利空'?'text-red-400':'text-slate-400'}">${s.overall_sentiment||'中性'}</span>
${s.sector} ${(s.summary||'').slice(0,60)}
</div>
`).join('') : '<div class="text-xs text-slate-500">暂无</div>'}
</div>
<div class="card p-4">
<h3 class="text-sm font-semibold mb-2">🔍 小果扫描 (${xiaoguo.length})</h3>
${xiaoguo.length ? xiaoguo.slice(0,6).map(s => `
<div class="p-1.5 bg-slate-800/30 rounded mb-0.5 text-xs">
<span class="font-semibold ${s.overall_sentiment==='利好'?'text-green-400':s.overall_sentiment==='利空'?'text-red-400':'text-slate-400'}">${s.overall_sentiment||'中性'}</span>
${s.sector} ${(s.summary||'').slice(0,60)}
</div>
`).join('') : '<div class="text-xs text-slate-500">暂无</div>'}
</div>
</div>
<div class="card p-4 mt-4">
<h3 class="text-sm font-semibold mb-3">🔍 潜力股挖掘</h3>
${potentials.length ? potentials.map(p => `
<div class="flex justify-between items-center p-2 bg-slate-800/30 rounded-lg mb-1">
<span class="text-sm">${p.name||p.code}</span>
<span class="text-xs text-slate-400">${p.reason||''}</span>
<div class="card p-4">
<h3 class="text-sm font-semibold mb-2">📋 全部板块排行(${sectors.length}</h3>
<div class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-1 max-h-48 overflow-y-auto">
${sectors.map(s => `
<div class="flex justify-between p-1 bg-slate-800/20 rounded text-xs">
<span>${s.name}</span>
<span class="font-mono ${(s.change||0)>=0?'badge-up':'badge-down'}">${(s.change||0)>=0?'+':''}${(s.change||0).toFixed(1)}%</span>
</div>
`).join('')}
</div>
`).join('') : '<div class="text-xs text-slate-500">暂无挖掘</div>'}
</div>
`;
});