Spaces:
Sleeping
Sleeping
File size: 2,246 Bytes
c1d533e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | from sqlalchemy import Column, Integer, String, Text, DateTime, ForeignKey, Float
from sqlalchemy.orm import relationship
from datetime import datetime
from app.database import Base
class RFP(Base):
__tablename__ = "rfps"
id = Column(Integer, primary_key=True, index=True)
title = Column(String(500), nullable=False)
description = Column(Text)
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
questions = relationship("Question", back_populates="rfp", cascade="all, delete-orphan")
class Question(Base):
__tablename__ = "questions"
id = Column(Integer, primary_key=True, index=True)
rfp_id = Column(Integer, ForeignKey("rfps.id"), nullable=False)
section = Column(String(200))
question_id = Column(String(50)) # Custom question ID like "Q1.1"
question_text = Column(Text, nullable=False)
answer_text = Column(Text, nullable=False)
page_start = Column(Integer)
page_end = Column(Integer)
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
rfp = relationship("RFP", back_populates="questions")
embedding = relationship("QuestionEmbedding", back_populates="question", uselist=False, cascade="all, delete-orphan")
class QuestionEmbedding(Base):
__tablename__ = "question_embeddings"
id = Column(Integer, primary_key=True, index=True)
question_id = Column(Integer, ForeignKey("questions.id"), nullable=False, unique=True)
embedding = Column(Text, nullable=False) # JSON serialized numpy array
question = relationship("Question", back_populates="embedding")
class UploadedRFP(Base):
__tablename__ = "uploaded_rfps"
id = Column(Integer, primary_key=True, index=True)
filename = Column(String(500), nullable=False)
rfp_name = Column(String(500)) # Friendly name for the RFP
file_path = Column(String(1000), nullable=False)
uploaded_at = Column(DateTime, default=datetime.utcnow)
text_content = Column(Text) # Extracted text from first 3 pages or full document
|