看板增加ECharts图表(自托管): 近30天趋势折线/级别环形/学历柱状/期望城市TOP8/筛选漏斗; 统计接口扩充
This commit is contained in:
@@ -153,10 +153,13 @@ app.get('/api/stats', requireAuth, (req, res) => {
|
||||
today: rdb.prepare("SELECT COUNT(*) c FROM candidates WHERE scraped_at >= ?").get(today + 'T00:00').c,
|
||||
greetedTotal: rdb.prepare('SELECT COUNT(*) c FROM candidates WHERE greeted = 1').get().c,
|
||||
byLevel: rdb.prepare("SELECT COALESCE(score_level,'?') k, COUNT(*) c FROM candidates GROUP BY score_level").all(),
|
||||
last7: rdb.prepare(`SELECT substr(scraped_at,1,10) d, COUNT(*) c,
|
||||
byEducation: rdb.prepare("SELECT COALESCE(NULLIF(education,''),'未知') k, COUNT(*) c FROM candidates GROUP BY education ORDER BY c DESC LIMIT 8").all(),
|
||||
byCity: rdb.prepare("SELECT expected_city k, COUNT(*) c FROM candidates WHERE expected_city != '' GROUP BY expected_city ORDER BY c DESC LIMIT 8").all(),
|
||||
byAccount: rdb.prepare("SELECT COALESCE(NULLIF(account,''),'未知') k, COUNT(*) c, SUM(greeted) g FROM candidates GROUP BY account ORDER BY c DESC").all(),
|
||||
last30: rdb.prepare(`SELECT substr(scraped_at,1,10) d, COUNT(*) c,
|
||||
SUM(CASE WHEN score_level='推荐' THEN 1 ELSE 0 END) rec,
|
||||
SUM(CASE WHEN greeted=1 THEN 1 ELSE 0 END) greeted
|
||||
FROM candidates WHERE scraped_at >= date('now','localtime','-6 days','start of day')
|
||||
FROM candidates WHERE scraped_at >= date('now','-29 days','start of day')
|
||||
GROUP BY substr(scraped_at,1,10) ORDER BY d`).all(),
|
||||
lastBatch: rdb.prepare('SELECT created_at, mode, new_count, greet_count FROM scrape_log ORDER BY id DESC LIMIT 1').get() || null,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user