Task assigned to or managed by a digital employee.
| 11 | |
| 12 | |
| 13 | class Task(Base): |
| 14 | """Task assigned to or managed by a digital employee.""" |
| 15 | |
| 16 | __tablename__ = "tasks" |
| 17 | |
| 18 | id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) |
| 19 | agent_id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), ForeignKey("agents.id"), nullable=False) |
| 20 | title: Mapped[str] = mapped_column(String(500), nullable=False) |
| 21 | description: Mapped[str | None] = mapped_column(Text) |
| 22 | type: Mapped[str] = mapped_column( |
| 23 | Enum("todo", "supervision", name="task_type_enum", create_constraint=False), |
| 24 | default="todo", |
| 25 | nullable=False, |
| 26 | ) |
| 27 | status: Mapped[str] = mapped_column( |
| 28 | Enum("pending", "doing", "done", name="task_status_enum"), |
| 29 | default="pending", |
| 30 | nullable=False, |
| 31 | ) |
| 32 | priority: Mapped[str] = mapped_column( |
| 33 | Enum("low", "medium", "high", "urgent", name="task_priority_enum"), |
| 34 | default="medium", |
| 35 | nullable=False, |
| 36 | ) |
| 37 | assignee: Mapped[str] = mapped_column(String(50), default="self") # "self" or user_id |
| 38 | created_by: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=False) |
| 39 | due_date: Mapped[datetime | None] = mapped_column(DateTime(timezone=True)) |
| 40 | |
| 41 | # Supervision specific fields |
| 42 | supervision_target_user_id: Mapped[uuid.UUID | None] = mapped_column(UUID(as_uuid=True), ForeignKey("users.id")) |
| 43 | supervision_target_name: Mapped[str | None] = mapped_column(String(100)) |
| 44 | supervision_channel: Mapped[str | None] = mapped_column(String(50)) |
| 45 | remind_schedule: Mapped[str | None] = mapped_column(String(100)) |
| 46 | |
| 47 | created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now()) |
| 48 | updated_at: Mapped[datetime] = mapped_column( |
| 49 | DateTime(timezone=True), server_default=func.now(), onupdate=func.now() |
| 50 | ) |
| 51 | completed_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True)) |
| 52 | |
| 53 | # Relationships |
| 54 | agent: Mapped["Agent"] = relationship(back_populates="tasks") |
| 55 | creator: Mapped["User"] = relationship("User", foreign_keys=[created_by]) |
| 56 | logs: Mapped[list["TaskLog"]] = relationship(back_populates="task", cascade="all, delete-orphan") |
| 57 | |
| 58 | |
| 59 | class TaskLog(Base): |
no outgoing calls
no test coverage detected