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
+54 -14
View File
@@ -43,13 +43,39 @@ class Paper(Base):
raw_output_path = Column(String)
summary_quality = Column(String)
authors = relationship("PaperAuthor", back_populates="paper", cascade="all, delete-orphan")
tags = relationship("PaperTag", back_populates="paper", cascade="all, delete-orphan")
summary = relationship("PaperSummary", back_populates="paper", uselist=False, cascade="all, delete-orphan")
summary_status = relationship("SummaryStatus", back_populates="paper", uselist=False, cascade="all, delete-orphan")
bookmark = relationship("UserBookmark", back_populates="paper", uselist=False, cascade="all, delete-orphan")
reading_status = relationship("UserReadingStatus", back_populates="paper", uselist=False, cascade="all, delete-orphan")
note = relationship("UserNote", back_populates="paper", uselist=False, cascade="all, delete-orphan")
authors = relationship(
"PaperAuthor", back_populates="paper", cascade="all, delete-orphan"
)
tags = relationship(
"PaperTag", back_populates="paper", cascade="all, delete-orphan"
)
summary = relationship(
"PaperSummary",
back_populates="paper",
uselist=False,
cascade="all, delete-orphan",
)
summary_status = relationship(
"SummaryStatus",
back_populates="paper",
uselist=False,
cascade="all, delete-orphan",
)
bookmark = relationship(
"UserBookmark",
back_populates="paper",
uselist=False,
cascade="all, delete-orphan",
)
reading_status = relationship(
"UserReadingStatus",
back_populates="paper",
uselist=False,
cascade="all, delete-orphan",
)
note = relationship(
"UserNote", back_populates="paper", uselist=False, cascade="all, delete-orphan"
)
# ── paper_authors ───────────────────────────────────────────────────────
@@ -58,7 +84,9 @@ class PaperAuthor(Base):
__table_args__ = (UniqueConstraint("paper_id", "name"),)
id = Column(Integer, primary_key=True, autoincrement=True)
paper_id = Column(Integer, ForeignKey("papers.id", ondelete="CASCADE"), nullable=False)
paper_id = Column(
Integer, ForeignKey("papers.id", ondelete="CASCADE"), nullable=False
)
name = Column(String, nullable=False)
position = Column(Integer, default=0)
@@ -71,7 +99,9 @@ class PaperTag(Base):
__table_args__ = (UniqueConstraint("paper_id", "tag", "source"),)
id = Column(Integer, primary_key=True, autoincrement=True)
paper_id = Column(Integer, ForeignKey("papers.id", ondelete="CASCADE"), nullable=False)
paper_id = Column(
Integer, ForeignKey("papers.id", ondelete="CASCADE"), nullable=False
)
tag = Column(String, nullable=False)
source = Column(String, default="hf")
@@ -82,7 +112,9 @@ class PaperTag(Base):
class PaperSummary(Base):
__tablename__ = "paper_summaries"
paper_id = Column(Integer, ForeignKey("papers.id", ondelete="CASCADE"), primary_key=True)
paper_id = Column(
Integer, ForeignKey("papers.id", ondelete="CASCADE"), primary_key=True
)
one_line = Column(Text)
difficulty = Column(String)
prerequisites_json = Column(Text)
@@ -111,7 +143,9 @@ class SummaryStatus(Base):
__table_args__ = (UniqueConstraint("paper_id"),)
id = Column(Integer, primary_key=True, autoincrement=True)
paper_id = Column(Integer, ForeignKey("papers.id", ondelete="CASCADE"), nullable=False)
paper_id = Column(
Integer, ForeignKey("papers.id", ondelete="CASCADE"), nullable=False
)
status = Column(String, nullable=False, default="pending")
quality = Column(String)
error_type = Column(String)
@@ -158,7 +192,9 @@ class UserBookmark(Base):
__table_args__ = (UniqueConstraint("paper_id"),)
id = Column(Integer, primary_key=True, autoincrement=True)
paper_id = Column(Integer, ForeignKey("papers.id", ondelete="CASCADE"), nullable=False)
paper_id = Column(
Integer, ForeignKey("papers.id", ondelete="CASCADE"), nullable=False
)
note = Column(Text)
created_at = Column(DateTime, nullable=False)
@@ -170,7 +206,9 @@ class UserReadingStatus(Base):
__table_args__ = (UniqueConstraint("paper_id"),)
id = Column(Integer, primary_key=True, autoincrement=True)
paper_id = Column(Integer, ForeignKey("papers.id", ondelete="CASCADE"), nullable=False)
paper_id = Column(
Integer, ForeignKey("papers.id", ondelete="CASCADE"), nullable=False
)
status = Column(String, nullable=False, default="unread")
updated_at = Column(DateTime, nullable=False)
@@ -182,7 +220,9 @@ class UserNote(Base):
__table_args__ = (UniqueConstraint("paper_id"),)
id = Column(Integer, primary_key=True, autoincrement=True)
paper_id = Column(Integer, ForeignKey("papers.id", ondelete="CASCADE"), nullable=False)
paper_id = Column(
Integer, ForeignKey("papers.id", ondelete="CASCADE"), nullable=False
)
content = Column(Text, nullable=False)
created_at = Column(DateTime, nullable=False)
updated_at = Column(DateTime, nullable=False)