feat: refactor PDF extraction to caption-based screenshots, add upvote refresh, clean up UI

- PDF extractor: rewrite from embedded bitmap extraction to caption-based
  page region screenshots. Finds Figure/Table captions via regex,截取上方/下方
  page region, handles compound figures and vector graphics.
- Upvote refresh: new crawler.refresh_upvotes() re-fetches upvotes for recent
  N days without inserting new papers. Scheduler runs daily 30min after pipeline.
- Admin: add /admin/refresh-upvotes endpoint and dashboard button.
- UI: remove date quick nav, show upvote update time on detail/card pages,
  clean up CSS date-chip styles.
- Utils: add recent_date_strs() helper.
This commit is contained in:
2026-06-09 18:01:01 +08:00
parent b72b5a31bb
commit 1fc6303e09
13 changed files with 460 additions and 311 deletions
+5 -15
View File
@@ -138,20 +138,7 @@ a:hover {
}
/* ── Date Quick Nav ─────────────────────────────────────────────── */
.date-quick-nav {
margin-top: 32px;
padding-top: 16px;
border-top: 1px solid var(--border);
font-size: 0.85rem;
color: var(--ink-light);
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
}
/* ── Chips (shared) ─────────────────────────────────────────────── */
.date-chip,
.tag-chip,
.filter-chip {
display: inline-block;
@@ -162,14 +149,12 @@ a:hover {
font-size: 0.8rem;
color: var(--ink-light);
}
.date-chip:hover,
.tag-chip:hover,
.filter-chip:hover {
border-color: var(--accent);
color: var(--accent);
text-decoration: none;
}
.date-chip.active,
.tag-chip.active,
.filter-chip.active {
background: var(--accent);
@@ -352,6 +337,11 @@ a:hover {
margin-bottom: 12px;
}
.detail-upvote-time {
font-size: 0.78rem;
color: var(--border);
}
.detail-tags {
margin-bottom: 12px;
display: flex;