feat: Implement Trading Twins Autopilot with Teams integration and फैक्टर-3 overbooking logic [31988f42]
This commit is contained in:
45
lead-engine/trading_twins/models.py
Normal file
45
lead-engine/trading_twins/models.py
Normal file
@@ -0,0 +1,45 @@
|
||||
from sqlalchemy import create_engine, Column, Integer, String, DateTime, ForeignKey, Boolean
|
||||
from sqlalchemy.orm import declarative_base, relationship, sessionmaker
|
||||
from datetime import datetime
|
||||
|
||||
Base = declarative_base()
|
||||
|
||||
class ProposalJob(Base):
|
||||
__tablename__ = 'proposal_jobs'
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
job_uuid = Column(String, unique=True, nullable=False) # Für die API-Links
|
||||
customer_email = Column(String, nullable=False)
|
||||
customer_name = Column(String, nullable=True)
|
||||
customer_company = Column(String, nullable=True)
|
||||
|
||||
# Status-Tracking
|
||||
status = Column(String, default='pending') # pending, approved, rejected, sent, failed
|
||||
|
||||
# Audit-Trail
|
||||
created_at = Column(DateTime, default=datetime.now)
|
||||
updated_at = Column(DateTime, default=datetime.now, onupdate=datetime.now)
|
||||
approved_at = Column(DateTime, nullable=True)
|
||||
|
||||
# Verknüpfung zu den vorgeschlagenen Slots
|
||||
slots = relationship("ProposedSlot", back_populates="job")
|
||||
|
||||
class ProposedSlot(Base):
|
||||
__tablename__ = 'proposed_slots'
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
job_id = Column(Integer, ForeignKey('proposal_jobs.id'))
|
||||
|
||||
start_time = Column(DateTime, nullable=False)
|
||||
end_time = Column(DateTime, nullable=False)
|
||||
|
||||
# Wir brauchen kein 'is_blocked' Flag mehr, da wir dynamisch zählen,
|
||||
# wie oft 'start_time' in den letzten 24h verwendet wurde.
|
||||
|
||||
job = relationship("ProposalJob", back_populates="slots")
|
||||
|
||||
# DB Setup Helper
|
||||
def init_db(db_path='sqlite:///trading_twins/trading_twins.db'):
|
||||
engine = create_engine(db_path)
|
||||
Base.metadata.create_all(engine)
|
||||
return sessionmaker(bind=engine)
|
||||
Reference in New Issue
Block a user