Files
Rain-Bus 1fc6303e09 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.
2026-06-09 18:01:01 +08:00

48 lines
1.3 KiB
HTML

{% extends "base.html" %}{% from "partials/paper_card.html" import render_card %}
{% block title %}{{ page_title }} — HF Daily Papers{%
endblock %} {% block content %}
<div class="date-nav">
{% if prev_day %}
<a href="/day/{{ prev_day }}" class="date-nav-btn">← 前一天</a>
{% endif %}
<div class="date-title" id="date-picker-trigger">{{ current_date }}</div>
{% if next_day <= today %}
<a href="/day/{{ next_day }}" class="date-nav-btn">后一天 →</a>
{% endif %}
<a href="/" class="date-nav-btn">今日</a>
</div>
{% if papers %}
<div class="paper-list">
{% for paper in papers %}{{ render_card(paper) }}{% endfor %}
</div>
{% else %}
<div class="empty-state">
<p>📭 当天暂无论文数据</p>
<p class="hint">试试浏览其他日期,或使用管理接口抓取数据</p>
</div>
{% endif %}
{% endblock %}
{% block scripts %}
<script src="/static/js/date-picker.js"></script>
<script>
(function() {
var trigger = document.getElementById('date-picker-trigger');
if (!trigger) return;
var markedDates = {{ available_dates | tojson }};
new KamiDatePicker(trigger, {
value: {{ current_date | tojson }},
maxDate: {{ today | tojson }},
markedDates: markedDates,
onChange: function(dateStr) {
if (dateStr) window.location.href = '/day/' + dateStr;
}
});
})();
</script>
{% endblock %}