task.py 1.3 KB

12345678910111213141516171819202122232425262728293031
  1. """Simulation task model for Web-Local dispatch (P4-M2)."""
  2. from sqlalchemy import Column, Integer, String, Float, DateTime, Text
  3. from sqlalchemy.sql import func
  4. from ..database import Base
  5. class Task(Base):
  6. """Simulation task dispatched from Web to Local executor."""
  7. __tablename__ = "tasks"
  8. id = Column(Integer, primary_key=True, index=True)
  9. task_id = Column(String(16), unique=True, index=True, nullable=False)
  10. task_name = Column(String(200), nullable=False)
  11. plan_id = Column(Integer, nullable=True)
  12. status = Column(String(20), default="pending", index=True)
  13. priority = Column(Integer, default=5)
  14. total_points = Column(Integer, default=0)
  15. completed_points = Column(Integer, default=0)
  16. task_dir = Column(String(500), nullable=True)
  17. task_file = Column(String(500), nullable=True)
  18. results_file = Column(String(500), nullable=True)
  19. progress_data = Column(Text, nullable=True)
  20. result_metrics = Column(Text, nullable=True)
  21. created_by = Column(String(50), default="web")
  22. created_at = Column(DateTime(timezone=True), server_default=func.now())
  23. dispatched_at = Column(DateTime(timezone=True), nullable=True)
  24. started_at = Column(DateTime(timezone=True), nullable=True)
  25. completed_at = Column(DateTime(timezone=True), nullable=True)
  26. duration = Column(Float, nullable=True)