From dca5697b439d471e551f829a987fba5cc82b4ac2 Mon Sep 17 00:00:00 2001 From: Eduard Date: Tue, 20 May 2025 16:28:26 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=94=D0=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/clockify.py | 3 ++- classes.py | 11 +++++++---- config/__init__.py | 21 +++++++++++++++++++++ enums.py | 21 +++++++++++++++++++++ track.py | 6 ++++-- 5 files changed, 55 insertions(+), 7 deletions(-) diff --git a/api/clockify.py b/api/clockify.py index 2653ac9..2543966 100644 --- a/api/clockify.py +++ b/api/clockify.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta +from datetime import datetime import logging from colorama import Fore @@ -51,6 +51,7 @@ class ClockifyAPI(ClockifyConfig): task_title=task_title, project_id=activity["projectId"], vetro_project_id=activity["taskId"], + vetro_project_title=config.VETRO_PROJECTS.get(activity.get("taskId")), description=activity["description"], time_spent=time_to_hour((end if end else datetime.now()) - start), date_start=start, diff --git a/classes.py b/classes.py index 6d21ad5..8c3bc27 100644 --- a/classes.py +++ b/classes.py @@ -1,23 +1,26 @@ from dataclasses import dataclass -from datetime import datetime +from datetime import datetime, timedelta + +from enums import ClockifyProjects, VetroProjects @dataclass class Activity: id: str task_id: int - vetro_project_id: str + vetro_project_id: VetroProjects + vetro_project_title: str task_title: str tag_id: str description: str - project_id: str + project_id: ClockifyProjects time_spent: float date_start: datetime date_end: datetime = None is_tracked: bool = False def __str__(self): - return f'{self.date_start}: {self.description} для задачи "{self.task_title}"' + return f'{self.date_start + timedelta(hours=3)}|{self.vetro_project_title}|{self.description} для задачи "{self.task_title}"' @dataclass diff --git a/config/__init__.py b/config/__init__.py index c363ae3..8a61855 100644 --- a/config/__init__.py +++ b/config/__init__.py @@ -14,6 +14,27 @@ class Config(BaseSettings): DATETIME_FORMAT: str = "%Y-%m-%dT%H:%M:%SZ" + VETRO_PROJECTS: dict = { + "682c438ca9a5d61a4cc9a405": "Админка", + "682c7c1b537d26222fe3cde8": "Чаты Авито", + "682c7cc5a4e2fd3c34a5e933": "Звонки", + "682b2c2d537d26222fc5671c": "Регистрация гарантии", + "682b3cc4f01c6c02e4e765b0": "Клиент", + "682b2c1366a3b415535a23fa": "Контрагенты", + "682b2c3f24f321560e283cb2": "Урегулирование страховых случаев", + "682b2c52d7ce797b226fddef": "Почта", + "682c7cd766a3b4155378f8a4": "Товар", + "682c7d05d7ce797b228edd06": "Закупка", + "682b2bf324f321560e283084": "Страховые направления", + "682b2c09f01c6c02e4e49681": "Задачи направлений", + "682b2c1bd096503066890985": "Заказ", + "682b2c22b417733736a3ae9f": "Задачи заказов", + "682b3280560c2445c917951c": "Услуга клиенту", + "682b2c7324f321560e284588": "Потерянные трудочасы", + "682c7d0ed7ce797b228edf3a": "WhatsApp", + "682b2bada9a5d61a4cb1b6e1": "Прочие активности по Ветро", + } + def configure_argument_parser(): parser = argparse.ArgumentParser(description='Трекер трудочасов с Clockify в Redmine') diff --git a/enums.py b/enums.py index 6c8dbe0..9718dc9 100644 --- a/enums.py +++ b/enums.py @@ -13,3 +13,24 @@ class ClockifyProjects(StrEnum): VETRO3 = "67e266148411754017d0cee5" VETRO_RETAIL = "67e29b8e837a92506f5e86df" SPHERA = "67e5476b1b872e13361e007c" + + +class VetroProjects(StrEnum): + ADMIN = "682c438ca9a5d61a4cc9a405" + AVITO_CHAT = "682c7c1b537d26222fe3cde8" + CALL = "682c7cc5a4e2fd3c34a5e933" + CLAIM_STOA = "682b2c2d537d26222fc5671c" + CLIENT = "682b3cc4f01c6c02e4e765b0" + CONTRACTOR = "682b2c1366a3b415535a23fa" + INS_CLAIM = "682b2c3f24f321560e283cb2" + MAIL_GUI = "682b2c52d7ce797b226fddef" + PRODUCT = "682c7cd766a3b4155378f8a4" + PURCHASE = "682c7d05d7ce797b228edd06" + REQUEST = "682b2bf324f321560e283084" + REQUEST_TASK = "682b2c09f01c6c02e4e49681" + SALE = "682b2c1bd096503066890985" + SALE_TASK = "682b2c22b417733736a3ae9f" + SERVICE = "682b3280560c2445c917951c" + UNDEFINED_TIME = "682b2c7324f321560e284588" + WHATSAPP = "682c7d0ed7ce797b228edf3a" + OTHER = "682b2bada9a5d61a4cb1b6e1" diff --git a/track.py b/track.py index cac00e5..d37118d 100644 --- a/track.py +++ b/track.py @@ -37,8 +37,10 @@ def main(): "page-size": args.page_size, }, ) - tracked_activities = red.track_activities(activities) - clock.mark_tracked(tracked_activities) + # tracked_activities = red.track_activities(activities) + # clock.mark_tracked(tracked_activities) + for activity in activities: + print(activity) if __name__ == "__main__":