feat(models): Add priority field to Ticket dataclass and update serialization

This commit is contained in:
2026-03-07 15:27:30 -05:00
parent e9d9cdeb28
commit 035c74ed36
4 changed files with 229 additions and 189 deletions

View File

@@ -66,7 +66,7 @@ This file tracks all major tracks for the project. Each track has its own detail
### Manual UX Controls ### Manual UX Controls
14. [ ] **Track: Manual Ticket Queue Management** 14. [~] **Track: Manual Ticket Queue Management**
*Link: [./tracks/ticket_queue_mgmt_20260306/](./tracks/ticket_queue_mgmt_20260306/)* *Link: [./tracks/ticket_queue_mgmt_20260306/](./tracks/ticket_queue_mgmt_20260306/)*
15. [ ] **Track: Kill/Abort Running Workers** 15. [ ] **Track: Kill/Abort Running Workers**

View File

@@ -5,10 +5,10 @@
## Phase 1: Priority Field ## Phase 1: Priority Field
Focus: Add priority to Ticket model Focus: Add priority to Ticket model
- [ ] Task 1.1: Initialize MMA Environment - [x] Task 1.1: Initialize MMA Environment
- Run `activate_skill mma-orchestrator` before starting - Run `activate_skill mma-orchestrator` before starting
- [ ] Task 1.2: Add priority field to Ticket - [~] Task 1.2: Add priority field to Ticket
- WHERE: `src/models.py` `Ticket` dataclass - WHERE: `src/models.py` `Ticket` dataclass
- WHAT: Add `priority: str = "medium"` field - WHAT: Add `priority: str = "medium"` field
- HOW: - HOW:

View File

@@ -66,6 +66,7 @@ class Ticket:
description: str description: str
status: str = "todo" status: str = "todo"
assigned_to: str = "unassigned" assigned_to: str = "unassigned"
priority: str = "medium"
target_file: Optional[str] = None target_file: Optional[str] = None
target_symbols: List[str] = field(default_factory=list) target_symbols: List[str] = field(default_factory=list)
context_requirements: List[str] = field(default_factory=list) context_requirements: List[str] = field(default_factory=list)
@@ -90,6 +91,7 @@ class Ticket:
"description": self.description, "description": self.description,
"status": self.status, "status": self.status,
"assigned_to": self.assigned_to, "assigned_to": self.assigned_to,
"priority": self.priority,
"target_file": self.target_file, "target_file": self.target_file,
"target_symbols": self.target_symbols, "target_symbols": self.target_symbols,
"context_requirements": self.context_requirements, "context_requirements": self.context_requirements,
@@ -105,7 +107,8 @@ class Ticket:
id=data["id"], id=data["id"],
description=data.get("description", ""), description=data.get("description", ""),
status=data.get("status", "todo"), status=data.get("status", "todo"),
assigned_to=data.get("assigned_to", ""), assigned_to=data.get("assigned_to", "unassigned"),
priority=data.get("priority", "medium"),
target_file=data.get("target_file"), target_file=data.get("target_file"),
target_symbols=data.get("target_symbols", []), target_symbols=data.get("target_symbols", []),
context_requirements=data.get("context_requirements", []), context_requirements=data.get("context_requirements", []),

View File

@@ -0,0 +1,37 @@
import pytest
from src.models import Ticket
def test_ticket_priority_default():
ticket = Ticket(id="T1", description="Test ticket")
assert ticket.priority == "medium"
def test_ticket_priority_custom():
ticket_high = Ticket(id="T2", description="High priority", priority="high")
assert ticket_high.priority == "high"
ticket_low = Ticket(id="T3", description="Low priority", priority="low")
assert ticket_low.priority == "low"
def test_ticket_to_dict_priority():
ticket = Ticket(id="T4", description="To dict test", priority="high")
d = ticket.to_dict()
assert "priority" in d
assert d["priority"] == "high"
def test_ticket_from_dict_priority():
data = {
"id": "T5",
"description": "From dict test",
"priority": "low",
"status": "todo"
}
ticket = Ticket.from_dict(data)
assert ticket.priority == "low"
def test_ticket_from_dict_default_priority():
data = {
"id": "T6",
"description": "No priority in dict"
}
ticket = Ticket.from_dict(data)
assert ticket.priority == "medium"