alwrity chatbot assistant, content scheduler, and content repurposing
This commit is contained in:
75
lib/content_scheduler/models/timeline.py
Normal file
75
lib/content_scheduler/models/timeline.py
Normal file
@@ -0,0 +1,75 @@
|
||||
"""
|
||||
Timeline models for the Content Scheduler.
|
||||
"""
|
||||
|
||||
from dataclasses import dataclass
|
||||
from datetime import datetime
|
||||
from typing import List, Dict, Any, Optional
|
||||
from enum import Enum
|
||||
|
||||
class TimelineViewType(Enum):
|
||||
"""Types of timeline views."""
|
||||
GANTT = "gantt"
|
||||
TIMELINE = "timeline"
|
||||
LIST = "list"
|
||||
|
||||
class TimelineDependencyType(Enum):
|
||||
"""Types of timeline dependencies."""
|
||||
FINISH_TO_START = "finish_to_start"
|
||||
START_TO_START = "start_to_start"
|
||||
FINISH_TO_FINISH = "finish_to_finish"
|
||||
START_TO_FINISH = "start_to_finish"
|
||||
|
||||
@dataclass
|
||||
class TimelineDependency:
|
||||
"""Timeline dependency model."""
|
||||
source_id: str
|
||||
target_id: str
|
||||
dependency_type: TimelineDependencyType
|
||||
lag: Optional[int] = None # Lag time in minutes
|
||||
|
||||
@dataclass
|
||||
class TimelineTask:
|
||||
"""Timeline task model."""
|
||||
id: str
|
||||
title: str
|
||||
start_time: datetime
|
||||
end_time: datetime
|
||||
platform: str
|
||||
status: str
|
||||
progress: float
|
||||
dependencies: List[TimelineDependency]
|
||||
metadata: Dict[str, Any]
|
||||
|
||||
@dataclass
|
||||
class TimelineMilestone:
|
||||
"""Timeline milestone model."""
|
||||
id: str
|
||||
title: str
|
||||
date: datetime
|
||||
description: Optional[str] = None
|
||||
status: str = "pending"
|
||||
metadata: Dict[str, Any] = None
|
||||
|
||||
@dataclass
|
||||
class TimelineView:
|
||||
"""Timeline view model."""
|
||||
view_type: TimelineViewType
|
||||
start_date: datetime
|
||||
end_date: datetime
|
||||
tasks: List[TimelineTask]
|
||||
milestones: List[TimelineMilestone]
|
||||
dependencies: List[TimelineDependency]
|
||||
metadata: Dict[str, Any]
|
||||
|
||||
@dataclass
|
||||
class TimelineProgress:
|
||||
"""Timeline progress model."""
|
||||
total_tasks: int
|
||||
completed_tasks: int
|
||||
in_progress_tasks: int
|
||||
pending_tasks: int
|
||||
progress_percentage: float
|
||||
by_platform: Dict[str, float]
|
||||
by_date: Dict[str, float]
|
||||
metadata: Dict[str, Any]
|
||||
Reference in New Issue
Block a user