from typing import List from .client import RedmineClient from .models import IssueRecord def fetch_issues_for_period( client: RedmineClient, from_date: str, to_date: str ) -> List[IssueRecord]: user_id = client.get_current_user_id() time_entries = client.get_time_entries(user_id, from_date, to_date) if not time_entries: return [] issue_ids = list({str(e.issue.id) for e in time_entries if hasattr(e, 'issue') and e.issue}) issues = client.get_issues_by_ids(issue_ids) records = [] for issue in issues: project = str(getattr(issue, 'project', 'Unknown')) version = str(getattr(issue, 'version', '')) status = str(getattr(issue, 'status', 'Unknown')) records.append(IssueRecord( project=project, version=version, issue_id=issue.id, subject=issue.subject, status=status )) records.sort(key=lambda r: (r.project, r.version)) return records