feat: overhaul UI styling, improve templates, enhance services and tests

This commit is contained in:
2026-06-06 00:38:56 +08:00
parent f7f1a4c0cb
commit 904eec392e
38 changed files with 1471 additions and 795 deletions
+27 -15
View File
@@ -58,10 +58,13 @@ def day_page(date_str: str, request: Request, db: Session = Depends(get_db)):
.limit(30)
.all()
)
available_dates = [d[0].isoformat() if isinstance(d[0], date) else str(d[0]) for d in dates_raw]
available_dates = [
d[0].isoformat() if isinstance(d[0], date) else str(d[0]) for d in dates_raw
]
return templates.TemplateResponse(
request, "index.html",
request,
"index.html",
{
"papers": papers,
"current_date": date_str,
@@ -105,7 +108,8 @@ def paper_detail(arxiv_id: str, request: Request, db: Session = Depends(get_db))
images = _get_paper_images(arxiv_id)
return templates.TemplateResponse(
request, "detail.html",
request,
"detail.html",
{
"paper": paper,
"summary_state": summary_state,
@@ -166,7 +170,11 @@ def _get_similar_papers(db: Session, arxiv_id: str, top_k: int = 6) -> list[dict
# 从 DB 加载论文信息
similar_ids = results["ids"][0]
distances = results["distances"][0] if results["distances"] else [0.0] * len(similar_ids)
distances = (
results["distances"][0]
if results["distances"]
else [0.0] * len(similar_ids)
)
# 排除自身
papers_info = {}
@@ -186,13 +194,15 @@ def _get_similar_papers(db: Session, arxiv_id: str, top_k: int = 6) -> list[dict
items = []
for p in papers:
items.append({
"arxiv_id": p.arxiv_id,
"title_zh": p.title_zh or p.title_en,
"distance": papers_info.get(p.arxiv_id, 0.0),
"paper_date": p.paper_date.isoformat() if p.paper_date else "",
"tags": [t.tag for t in p.tags[:3]],
})
items.append(
{
"arxiv_id": p.arxiv_id,
"title_zh": p.title_zh or p.title_en,
"distance": papers_info.get(p.arxiv_id, 0.0),
"paper_date": p.paper_date.isoformat() if p.paper_date else "",
"tags": [t.tag for t in p.tags[:3]],
}
)
# 按距离排序
items.sort(key=lambda x: x["distance"])
@@ -215,8 +225,10 @@ def _get_paper_images(arxiv_id: str) -> list[dict]:
images = []
for img_file in sorted(images_dir.iterdir()):
if img_file.suffix.lower() in (".png", ".jpg", ".jpeg", ".gif", ".svg"):
images.append({
"url": f"/papers/{arxiv_id}/images/{img_file.name}",
"name": img_file.name,
})
images.append(
{
"url": f"/papers/{arxiv_id}/images/{img_file.name}",
"name": img_file.name,
}
)
return images