first commit
This commit is contained in:
commit
e6c52820cd
227 changed files with 16156 additions and 0 deletions
64
modules/tasks/task.py
Normal file
64
modules/tasks/task.py
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
from datetime import datetime
|
||||
from typing import Optional, Literal, Dict, Any
|
||||
import uuid
|
||||
|
||||
|
||||
class Task:
|
||||
def __init__(
|
||||
self,
|
||||
title: str,
|
||||
due_date: str,
|
||||
description: str = "",
|
||||
entity_type: Optional[Literal["client", "prospect", "project", "campaign"]] = None,
|
||||
entity_id: Optional[str] = None,
|
||||
priority: Literal["basse", "normale", "haute"] = "normale",
|
||||
status: Literal["todo", "done", "canceled"] = "todo",
|
||||
id: Optional[str] = None,
|
||||
created_at: Optional[str] = None,
|
||||
completed_at: Optional[str] = None,
|
||||
metadata: Optional[Dict[str, Any]] = None,
|
||||
):
|
||||
self.id = id or f"tsk_{uuid.uuid4().hex[:8]}"
|
||||
self.title = title
|
||||
self.description = description
|
||||
# due_date: format ISO "YYYY-MM-DD"
|
||||
self.due_date = due_date
|
||||
self.entity_type = entity_type
|
||||
self.entity_id = entity_id
|
||||
self.priority = priority
|
||||
self.status = status
|
||||
now_iso = datetime.utcnow().isoformat()
|
||||
self.created_at = created_at or now_iso
|
||||
self.completed_at = completed_at
|
||||
self.metadata = metadata or {}
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
return {
|
||||
"id": self.id,
|
||||
"title": self.title,
|
||||
"description": self.description,
|
||||
"due_date": self.due_date,
|
||||
"entity_type": self.entity_type,
|
||||
"entity_id": self.entity_id,
|
||||
"priority": self.priority,
|
||||
"status": self.status,
|
||||
"created_at": self.created_at,
|
||||
"completed_at": self.completed_at,
|
||||
"metadata": self.metadata,
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def from_dict(data: Dict[str, Any]) -> "Task":
|
||||
return Task(
|
||||
id=data.get("id"),
|
||||
title=data.get("title", ""),
|
||||
description=data.get("description", ""),
|
||||
due_date=data.get("due_date", ""),
|
||||
entity_type=data.get("entity_type"),
|
||||
entity_id=data.get("entity_id"),
|
||||
priority=data.get("priority", "normale"),
|
||||
status=data.get("status", "todo"),
|
||||
created_at=data.get("created_at"),
|
||||
completed_at=data.get("completed_at"),
|
||||
metadata=data.get("metadata") or {},
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue