Automation

This commit is contained in:
Alex Emmet 2026-06-07 16:06:39 +02:00
commit e45a8063e3
6 changed files with 1022 additions and 4 deletions

View file

@ -2,7 +2,7 @@ use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use uuid::Uuid;
use crate::enums::ToDoStatus;
use crate::enums::{ToDoSource, ToDoStatus};
use crate::errors::ValidationError;
use crate::{CommunicationType, CommunicationValue, DataTypes, DataValue};
@ -24,6 +24,12 @@ pub struct ToDo {
pub updated_at: DateTime<Utc>,
pub created_by: Uuid,
pub project_id: Option<Uuid>,
pub parent_todo_id: Option<Uuid>,
pub subtask_ids: Vec<Uuid>,
pub affected_files: Vec<String>,
pub source: ToDoSource,
pub automation_chain_id: Option<Uuid>,
pub tags: Vec<String>,
}
impl Default for ToDo {
@ -40,6 +46,12 @@ impl Default for ToDo {
updated_at: now,
created_by: Uuid::nil(),
project_id: None,
parent_todo_id: None,
subtask_ids: Vec::new(),
affected_files: Vec::new(),
source: ToDoSource::User,
automation_chain_id: None,
tags: Vec::new(),
}
}
}
@ -58,6 +70,12 @@ impl ToDo {
updated_at: now,
created_by,
project_id: None,
parent_todo_id: None,
subtask_ids: Vec::new(),
affected_files: Vec::new(),
source: ToDoSource::User,
automation_chain_id: None,
tags: Vec::new(),
}
}
@ -112,6 +130,15 @@ impl ToDo {
(ToDoStatus::ReadyForAgent, ToDoStatus::InProgress) => true,
(ToDoStatus::ReadyForAgent, ToDoStatus::Pending) => true,
(ToDoStatus::ReadyForAgent, ToDoStatus::Blocked) => true,
(ToDoStatus::InProgress, ToDoStatus::Delegated) => true,
(ToDoStatus::InProgress, ToDoStatus::Failed) => true,
(ToDoStatus::InProgress, ToDoStatus::PendingApproval) => true,
(ToDoStatus::Delegated, ToDoStatus::InProgress) => true,
(ToDoStatus::Delegated, ToDoStatus::Completed) => true,
(ToDoStatus::Delegated, ToDoStatus::Blocked) => true,
(ToDoStatus::Failed, ToDoStatus::Pending) => true,
(ToDoStatus::PendingApproval, ToDoStatus::InProgress) => true,
(ToDoStatus::PendingApproval, ToDoStatus::Blocked) => true,
_ => self.status == status,
};