refactor ProgressHelper

This commit is contained in:
jxxghp
2025-08-24 09:02:55 +08:00
parent ba146e13ef
commit 71a9fe10f4
6 changed files with 99 additions and 97 deletions

View File

@@ -1,55 +1,49 @@
from enum import Enum
from typing import Union, Optional
from app.core.cache import TTLCache
from app.schemas.types import ProgressKey
from app.utils.singleton import WeakSingleton
class ProgressHelper(metaclass=WeakSingleton):
"""
处理进度辅助类
"""
def __init__(self):
self._process_detail = {}
def init_config(self):
pass
def __reset(self, key: Union[ProgressKey, str]):
def __init__(self, key: Union[ProgressKey, str]):
if isinstance(key, Enum):
key = key.value
self._process_detail[key] = {
self._key = key
self._progress = TTLCache(maxsize=1024, ttl=24 * 60 * 60)
def __reset(self):
self._progress[self._key] = {
"enable": False,
"value": 0,
"text": "请稍候..."
}
def start(self, key: Union[ProgressKey, str]):
self.__reset(key)
if isinstance(key, Enum):
key = key.value
self._process_detail[key]['enable'] = True
def start(self):
self.__reset()
self._progress[self._key]['enable'] = True
def end(self, key: Union[ProgressKey, str]):
if isinstance(key, Enum):
key = key.value
if not self._process_detail.get(key):
def end(self):
if not self._progress.get(self._key):
return
self._process_detail[key] = {
self._progress[self._key] = {
"enable": False,
"value": 100,
"text": "正在处理..."
}
def update(self, key: Union[ProgressKey, str], value: Union[float, int] = None, text: Optional[str] = None):
if isinstance(key, Enum):
key = key.value
if not self._process_detail.get(key, {}).get('enable'):
def update(self, value: Union[float, int] = None, text: Optional[str] = None):
if not self._progress.get(self._key).get('enable'):
return
if value:
self._process_detail[key]['value'] = value
self._progress[self._key]['value'] = value
if text:
self._process_detail[key]['text'] = text
self._progress[self._key]['text'] = text
def get(self, key: Union[ProgressKey, str]) -> dict:
if isinstance(key, Enum):
key = key.value
return self._process_detail.get(key)
def get(self) -> dict:
return self._progress.get(self._key)