|
@@ -1,5 +1,8 @@
|
|
|
+import json
|
|
|
from typing import Optional
|
|
|
|
|
|
+from applications.utils import get_task_chinese_name
|
|
|
+
|
|
|
|
|
|
def _build_where(id_eq=None, date_string=None, trace_id=None, task_status=None):
|
|
|
conds, params = [], []
|
|
@@ -25,6 +28,15 @@ def _build_where(id_eq=None, date_string=None, trace_id=None, task_status=None):
|
|
|
return where_clause, params
|
|
|
|
|
|
|
|
|
+def _safe_json(v):
|
|
|
+ try:
|
|
|
+ if isinstance(v, (str, bytes, bytearray)):
|
|
|
+ return json.loads(v)
|
|
|
+ return v or {}
|
|
|
+ except Exception:
|
|
|
+ return {}
|
|
|
+
|
|
|
+
|
|
|
class TaskConst:
|
|
|
INIT_STATUS = 0
|
|
|
PROCESSING_STATUS = 1
|
|
@@ -77,13 +89,13 @@ class TaskManagerService(TaskConst):
|
|
|
SELECT COUNT(1) AS cnt
|
|
|
FROM long_articles_task_manager
|
|
|
WHERE {where_clause}
|
|
|
- """
|
|
|
+ """
|
|
|
count_rows = await self.pool.async_fetch(query=sql_count, params=tuple(params))
|
|
|
total = count_rows[0]["cnt"] if count_rows else 0
|
|
|
|
|
|
# 5) 查询数据
|
|
|
sql_list = f"""
|
|
|
- SELECT id, date_string, task_name, task_status, start_timestamp, finish_timestamp, trace_id
|
|
|
+ SELECT id, date_string, task_status, start_timestamp, finish_timestamp, trace_id, data
|
|
|
FROM long_articles_task_manager
|
|
|
WHERE {where_clause}
|
|
|
ORDER BY {sort_by} {sort_dir}
|
|
@@ -95,7 +107,7 @@ class TaskManagerService(TaskConst):
|
|
|
{
|
|
|
**r,
|
|
|
"status_text": self.STATUS_TEXT.get(r["task_status"], str(r["task_status"])),
|
|
|
- "data_json": self.data
|
|
|
+ "task_name": get_task_chinese_name(_safe_json(r["data"]))
|
|
|
}
|
|
|
for r in rows
|
|
|
]
|