| import uuid |
| from datetime import datetime |
| from sqlalchemy import String, Text, DateTime, JSON, Float, Integer, func |
| from sqlalchemy.orm import Mapped, mapped_column |
| from sqlalchemy.dialects.postgresql import UUID, ARRAY |
| from ..database import Base |
|
|
|
|
| class JobDescription(Base): |
| __tablename__ = "job_descriptions" |
|
|
| id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) |
| title: Mapped[str] = mapped_column(String(255)) |
| raw_text: Mapped[str] = mapped_column(Text) |
| parsed_requirements: Mapped[dict] = mapped_column(JSON, default=dict) |
| required_skills: Mapped[list] = mapped_column(JSON, default=list) |
| min_yoe: Mapped[float | None] = mapped_column(Float, nullable=True) |
| max_yoe: Mapped[float | None] = mapped_column(Float, nullable=True) |
| role_type: Mapped[str | None] = mapped_column(String(100), nullable=True) |
| engineer_type: Mapped[str | None] = mapped_column(String(100), nullable=True) |
| location: Mapped[str | None] = mapped_column(String(255), nullable=True) |
| remote_allowed: Mapped[bool | None] = mapped_column(nullable=True) |
| jd_quality: Mapped[dict] = mapped_column(JSON, default=dict) |
| custom_weights: Mapped[dict] = mapped_column(JSON, default=dict) |
| embedding_text: Mapped[str | None] = mapped_column(Text, nullable=True) |
| qdrant_id: Mapped[str | None] = mapped_column(String(64), nullable=True) |
| status: Mapped[str] = mapped_column(String(32), default="pending") |
| session_id: Mapped[uuid.UUID | None] = mapped_column(UUID(as_uuid=True), nullable=True) |
| created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now()) |
| updated_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) |
|
|