feat: add detailed employee publications storage and MCP docs
This commit is contained in:
@@ -41,6 +41,7 @@ class Employee(Base):
|
||||
|
||||
snapshots: Mapped[list["EmployeeSnapshot"]] = relationship(back_populates="employee")
|
||||
tabs: Mapped[list["ProfileTab"]] = relationship(back_populates="employee", cascade="all, delete-orphan")
|
||||
publications: Mapped[list["EmployeePublication"]] = relationship(back_populates="employee", cascade="all, delete-orphan")
|
||||
crawl_run_changes: Mapped[list["CrawlRunEmployeeChange"]] = relationship(back_populates="employee")
|
||||
|
||||
|
||||
@@ -60,6 +61,42 @@ class EmployeeSnapshot(Base):
|
||||
employee: Mapped[Employee] = relationship(back_populates="snapshots")
|
||||
|
||||
|
||||
class EmployeePublication(Base):
|
||||
__tablename__ = "employee_publications"
|
||||
__table_args__ = (
|
||||
UniqueConstraint("employee_id", "publication_id", name="uq_employee_publications_employee_publication"),
|
||||
UniqueConstraint("employee_id", "source_hash", name="uq_employee_publications_employee_source_hash"),
|
||||
Index("ix_employee_publications_employee_id", "employee_id"),
|
||||
Index("ix_employee_publications_publication_id", "publication_id"),
|
||||
Index("ix_employee_publications_doi_url", "doi_url"),
|
||||
Index("ix_employee_publications_year", "year"),
|
||||
Index("ix_employee_publications_publication_type", "publication_type"),
|
||||
)
|
||||
|
||||
id: Mapped[int] = mapped_column(Integer, primary_key=True)
|
||||
employee_id: Mapped[int] = mapped_column(ForeignKey("employees.id", ondelete="CASCADE"), nullable=False)
|
||||
publication_id: Mapped[str | None] = mapped_column(String(64))
|
||||
title: Mapped[str] = mapped_column(Text, nullable=False)
|
||||
year: Mapped[int | None] = mapped_column(Integer)
|
||||
publication_type: Mapped[str | None] = mapped_column(String(64))
|
||||
language: Mapped[str | None] = mapped_column(String(16))
|
||||
status: Mapped[int | None] = mapped_column(Integer)
|
||||
url: Mapped[str | None] = mapped_column(Text)
|
||||
doi_url: Mapped[str | None] = mapped_column(Text)
|
||||
other_url: Mapped[str | None] = mapped_column(Text)
|
||||
document_url: Mapped[str | None] = mapped_column(Text)
|
||||
citation_text: Mapped[str | None] = mapped_column(Text)
|
||||
annotation: Mapped[dict | None] = mapped_column(json_type)
|
||||
description: Mapped[dict | None] = mapped_column(json_type)
|
||||
authors: Mapped[list | None] = mapped_column(json_type)
|
||||
raw_data: Mapped[dict | None] = mapped_column(json_type)
|
||||
source_hash: Mapped[str] = mapped_column(String(64), nullable=False)
|
||||
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utcnow, nullable=False)
|
||||
updated_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utcnow, onupdate=utcnow, nullable=False)
|
||||
|
||||
employee: Mapped[Employee] = relationship(back_populates="publications")
|
||||
|
||||
|
||||
class CrawlRun(Base):
|
||||
__tablename__ = "crawl_runs"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user