knowledge_point.py 1.4 KB

123456789101112131415161718192021222324252627282930
  1. from typing import Optional
  2. from datetime import datetime, timezone
  3. from sqlalchemy import Column, String, Text, Integer, Float, DateTime, Boolean, ForeignKey, JSON, func
  4. from sqlalchemy.orm import Mapped, mapped_column
  5. from app.models.user import Base
  6. class KnowledgePoint(Base):
  7. __tablename__ = "knowledge_points"
  8. id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
  9. point_id: Mapped[str] = mapped_column(String(64), unique=True, nullable=False, index=True)
  10. subject: Mapped[str] = mapped_column(String(64), nullable=False, index=True)
  11. chapter_id: Mapped[str] = mapped_column(String(64), nullable=False, index=True)
  12. chapter_name: Mapped[str] = mapped_column(String(256))
  13. title: Mapped[str] = mapped_column(String(512), nullable=False)
  14. content: Mapped[str] = mapped_column(Text, nullable=False)
  15. difficulty: Mapped[int] = mapped_column(default=1) # 1-5
  16. frequency: Mapped[Optional[str]] = mapped_column(String(16)) # 高频/中频/低频/未考
  17. related_drugs: Mapped[Optional[list]] = mapped_column(JSON)
  18. source: Mapped[Optional[str]] = mapped_column(Text)
  19. vector_id: Mapped[Optional[str]] = mapped_column(String(128), index=True)
  20. created_at: Mapped[datetime] = mapped_column(
  21. DateTime(timezone=True), server_default=func.now()
  22. )
  23. updated_at: Mapped[datetime] = mapped_column(
  24. DateTime(timezone=True), server_default=func.now(), onupdate=func.now()
  25. )