hoangs commited on
Commit
294d395
·
verified ·
1 Parent(s): 1c1be6c

Upload model.py

Browse files
Files changed (1) hide show
  1. model.py +38 -0
model.py ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing import List, TypedDict
2
+ from datetime import datetime
3
+
4
+ class TaskItem(TypedDict):
5
+ task_id: str
6
+ priority: str # low, normal, high, urgent
7
+ deadline_local: str # ISO-like datetime string
8
+
9
+ PRIORITY_ORDER = {
10
+ "urgent": 0,
11
+ "high": 1,
12
+ "normal": 2,
13
+ "low": 3,
14
+ }
15
+
16
+ def _priority_key(task: TaskItem):
17
+ pr = task.get("priority", "normal").lower()
18
+ pr_rank = PRIORITY_ORDER.get(pr, 2)
19
+ try:
20
+ dt = datetime.fromisoformat(task.get("deadline_local", ""))
21
+ except Exception:
22
+ dt = datetime.max
23
+ return (pr_rank, dt)
24
+
25
+ def sort_tasks(tasks: List[TaskItem]) -> List[TaskItem]:
26
+ """Sort tasks by priority and deadline, highest priority first."""
27
+ return sorted(tasks, key=_priority_key)
28
+
29
+
30
+ if __name__ == "__main__":
31
+ sample = [
32
+ {"task_id": "T1", "priority": "normal", "deadline_local": "2025-01-14 21:00"},
33
+ {"task_id": "T2", "priority": "urgent", "deadline_local": "2025-01-14 10:00"},
34
+ {"task_id": "T3", "priority": "high", "deadline_local": "2025-01-14 09:30"},
35
+ {"task_id": "T4", "priority": "low", "deadline_local": "2025-01-16 09:00"},
36
+ ]
37
+ for t in sort_tasks(sample):
38
+ print(t)