добавил предпросмотр и защиту от повторной отправки трудочасов
This commit is contained in:
@@ -12,11 +12,12 @@ logger = logging.getLogger(__name__)
|
||||
class TrackingService:
|
||||
"""Координирует загрузку, сохранение и перенос активностей в Redmine."""
|
||||
|
||||
def __init__(self, clock, red, db, is_debug: bool):
|
||||
def __init__(self, clock, red, db, is_debug: bool, is_dry_run: bool = False):
|
||||
self.clock = clock
|
||||
self.red = red
|
||||
self.db = db
|
||||
self.is_debug = is_debug
|
||||
self.is_dry_run = is_dry_run
|
||||
|
||||
def track_period(self, start, end, page_size: int | None):
|
||||
"""Переносит активности за период и возвращает список найденных активностей."""
|
||||
@@ -34,6 +35,9 @@ class TrackingService:
|
||||
if not activities:
|
||||
logger.info(Fore.YELLOW + "Нет задач для занесения трудочасов" + Fore.RESET)
|
||||
return []
|
||||
if self.is_dry_run:
|
||||
self._log_preview(activities)
|
||||
return activities
|
||||
|
||||
self.db.insert_activities(activities)
|
||||
self.red.track_activities(
|
||||
@@ -64,3 +68,21 @@ class TrackingService:
|
||||
"""Сохраняет активность как успешно перенесенную в Redmine."""
|
||||
self.db.insert_activities([activity])
|
||||
self.db.insert_time_entries([activity])
|
||||
|
||||
def _log_preview(self, activities):
|
||||
"""Выводит план переноса активностей без сохранения и отправки."""
|
||||
total_hours = sum(activity.time_spent for activity in activities if activity.date_end)
|
||||
trackable_activities = [
|
||||
activity
|
||||
for activity in activities
|
||||
if not activity.is_tracked and activity.date_end
|
||||
]
|
||||
logger.info(f"{Fore.YELLOW}Предпросмотр переноса трудочасов{Fore.RESET}")
|
||||
logger.info(f"Найдено активностей: {len(activities)}")
|
||||
logger.info(f"Готово к переносу: {len(trackable_activities)}")
|
||||
logger.info(f"Всего часов: {total_hours}")
|
||||
for activity in trackable_activities:
|
||||
logger.info(
|
||||
f"{activity.date_start.date()} | #{activity.task_id} | "
|
||||
f"{activity.time_spent} ч | {activity.description}"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user