G41_TAPD_BUG_SYNC/src3/overdue_fetcher.py

40 lines
1.3 KiB
Python

"""过期单获取器"""
from typing import List, Dict
from datetime import datetime
from src3.tapd_api import TAPDUnifiedApi
class OverdueFetcher:
"""过期单获取器"""
def __init__(self, workspace_id: str, logger):
self.workspace_id = workspace_id
self.logger = logger
self.api = TAPDUnifiedApi(workspace_id, logger)
def fetch_all_overdue(self, owner_list: List[str]) -> List[dict]:
"""获取所有过期单(需求+缺陷)"""
stories = self.api.get_overdue_stories(owner_list)
bugs = self.api.get_overdue_bugs(owner_list)
# 合并并计算过期天数
all_items = stories + bugs
for item in all_items:
item['overdue_days'] = self.calculate_overdue_days(item['due'])
item['url'] = self._get_url(item)
return all_items
def calculate_overdue_days(self, due_date: str) -> int:
"""计算过期天数"""
today = datetime.now().date()
due = datetime.strptime(due_date, '%Y-%m-%d').date()
return (today - due).days
def _get_url(self, item: dict) -> str:
"""获取单据URL"""
if item['type'] == 'story':
return self.api.get_story_url(item['id'])
else:
return self.api.get_bug_url(item['id'])