Changing logic

This commit is contained in:
Mikan
2026-03-12 19:54:31 +03:00
parent 0f8a86e536
commit 534aa9a7d1
2 changed files with 93 additions and 97 deletions

View File

@@ -14,15 +14,25 @@ class WorkSession(BaseModel):
end_time: datetime
details: List[WorkDetail]
synchronized: bool = False
id: Optional[str] = None # ID work item в YouTrack
youtrack_created_at: Optional[datetime] = None # Время создания в YouTrack для сопоставления
description: Optional[str] = None # Описание для сопоставления (опционально)
id: Optional[str] = None
youtrack_created_at: Optional[datetime] = None
description: Optional[str] = None
youtrack_duration_minutes: Optional[float] = None
class Config:
json_encoders = {
datetime: lambda v: v.isoformat()
}
@property
def total_minutes(self) -> float:
return sum(d.duration_seconds for d in self.details) / 60.0
def is_modified(self) -> bool:
"""Проверяет, изменилась ли длительность сессии после последней синхронизации"""
if self.youtrack_duration_minutes is None:
return not self.synchronized # Несинхронизированная сессия = изменённая
return abs(self.total_minutes - self.youtrack_duration_minutes) > 0.5 # погрешность 30 сек
class TrackedTask(BaseModel):
task_id: str