feat: optimize and enhance IssueActivity class - Issue #126

Enhanced IssueActivity dataclass with convenient methods and properties:
- Added activity_type_value, activity_type_display properties
- Added formatted_date, formatted_datetime properties
- Added truncated_details property for display
- Added contains_keyword() and has_implementation_activity() methods
- Added to_dict() method for clean serialization

Simplified code across the codebase:
- Reduced JSON serialization from 18 lines to 1 line (94% reduction)
- Reduced implementation detection from 13 lines to 3 lines (77% reduction)
- Improved table formatting using property access
- Fixed test inconsistencies using proper IssueActivity objects
- Removed complex helper code for dict/dataclass handling

Benefits:
- Single source of truth for all IssueActivity operations
- Consistent interface across all usage patterns
- Better encapsulation and maintainability
- Enhanced code readability and reliability
- All tests passing (1329/1329)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-10-05 13:59:33 +02:00
parent bce680e6cb
commit 4121745651
5 changed files with 242 additions and 33 deletions

View File

@@ -82,10 +82,22 @@ class TestIssueWrapUpService:
def test_review_requirements_with_activities(self, service):
"""Test requirement review when issue has activities."""
# Mock activity tracker to return some activities
from markitect.issues.activity_tracker import IssueActivity, ActivityType
with patch.object(service.activity_tracker, 'get_issue_activities') as mock_activities:
mock_activities.return_value = [
{'activity_type': 'implementation', 'description': 'Implemented feature'},
{'activity_type': 'test', 'description': 'Added tests'}
IssueActivity(
id=1,
issue_id=123,
activity_type=ActivityType.CREATED,
activity_details='Implemented feature'
),
IssueActivity(
id=2,
issue_id=123,
activity_type=ActivityType.MODIFIED,
activity_details='Added tests'
)
]
result = service._review_requirements(123, {'title': 'Test Issue'}, False)