Changing logic
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user