feat(formatter): unify data pipeline with ReportRow and report_builder
This commit is contained in:
@@ -2,22 +2,40 @@ from datetime import datetime
|
||||
|
||||
|
||||
def get_month_name_from_range(from_date: str, to_date: str) -> str:
|
||||
"""Определяет название месяца по диапазону дат.
|
||||
- Если from == to - возвращает месяц этой даты.
|
||||
- Если диапазон охватывает несколько месяцев - возвращает месяц из to_date.
|
||||
"""
|
||||
"""Определяет название месяца по диапазону дат"""
|
||||
|
||||
try:
|
||||
end = datetime.strptime(to_date, "%Y-%m-%d")
|
||||
except ValueError:
|
||||
return "Январь" # fallback, хотя лучше бы не срабатывало
|
||||
return "Январь"
|
||||
|
||||
months = [
|
||||
"", "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь",
|
||||
"Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"
|
||||
]
|
||||
|
||||
return months[end.month]
|
||||
|
||||
|
||||
def get_version(issue) -> str:
|
||||
"""Возвращает версию задачи или '<N/A>', если не задана."""
|
||||
return str(getattr(issue, 'fixed_version', '<N/A>'))
|
||||
|
||||
|
||||
def hours_to_human(hours: float) -> str:
|
||||
"""Преобразует часы в человекочитаемый формат: '2ч 30м'."""
|
||||
|
||||
if hours <= 0:
|
||||
return "0ч"
|
||||
|
||||
total_minutes = round(hours * 60)
|
||||
h = total_minutes // 60
|
||||
m = total_minutes % 60
|
||||
parts = []
|
||||
|
||||
if h:
|
||||
parts.append(f"{h}ч")
|
||||
if m:
|
||||
parts.append(f"{m}м")
|
||||
|
||||
return " ".join(parts) if parts else "0ч"
|
||||
|
||||
Reference in New Issue
Block a user