from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, Text, Enum from sqlalchemy.orm import relationship from app.db.database import Base import datetime import enum class ActivityType(str, enum.Enum): INSPECTION = "inspection" MEETING = "meeting" VIRTUAL_MEETING = "virtual_meeting" COORDINATION = "coordination" TEST = "test" OTHER = "other" class Activity(Base): __tablename__ = "activities" id = Column(Integer, primary_key=True, index=True) project_id = Column(Integer, ForeignKey("projects.id")) specialty_id = Column(Integer, ForeignKey("specialties.id")) contractor_id = Column(Integer, ForeignKey("contractors.id"), nullable=True) user_id = Column(Integer, ForeignKey("users.id")) # Reporter date = Column(DateTime, default=datetime.datetime.utcnow) end_date = Column(DateTime, nullable=True) type = Column(Enum(ActivityType), default=ActivityType.INSPECTION) area = Column(String) # Frente de obra / Linea description = Column(Text) observations = Column(Text) audio_transcription = Column(Text, nullable=True) status = Column(String, default="completed") project = relationship("app.models.project.Project", back_populates="activities") specialty = relationship("app.models.specialty.Specialty") contractor = relationship("app.models.contractor.Contractor") reporter = relationship("app.models.user.User") non_conformities = relationship("NonConformity", back_populates="activity") evidences = relationship("Evidence", back_populates="activity")