feat: include failed step in task errors
This commit is contained in:
+14
-10
@@ -792,6 +792,7 @@ class ApplyWorker(BaseWorker):
|
||||
)
|
||||
db.mark_running(task.id, "apply", path=self.db_path)
|
||||
self.row_updated.emit(task.id, {"status": "running", "last_error": None})
|
||||
current_step = "apply_task"
|
||||
result = editor.apply_task(
|
||||
account,
|
||||
task,
|
||||
@@ -800,6 +801,7 @@ class ApplyWorker(BaseWorker):
|
||||
)
|
||||
committed = bool(result.get("committed")) and not result.get("error")
|
||||
error = result.get("error")
|
||||
failed_step = self._failed_apply_step(result, current_step)
|
||||
current_step = "db_write"
|
||||
self._log_run_event(
|
||||
f"step=db_write result=start detail=任务 {task.id} 商品 {task.item_id} 保存更新结果",
|
||||
@@ -824,13 +826,13 @@ class ApplyWorker(BaseWorker):
|
||||
return "applied"
|
||||
|
||||
error = diagnostics.redact_log_text(error or "更新未提交")
|
||||
failed_step = self._failed_apply_step(result, current_step)
|
||||
db.set_applied(task.id, False, error, path=self.db_path)
|
||||
display_error = db.format_failure_error(error, failed_step)
|
||||
db.set_applied(task.id, False, error, path=self.db_path, step=failed_step)
|
||||
elapsed_ms = self._elapsed_ms(started)
|
||||
self.failed.emit(task.id, str(error))
|
||||
self.failed.emit(task.id, str(display_error))
|
||||
self.row_updated.emit(
|
||||
task.id,
|
||||
{"status": "failed", "last_error": str(error), "committed": 0},
|
||||
{"status": "failed", "last_error": str(display_error), "committed": 0},
|
||||
)
|
||||
self._log_run_event(
|
||||
f"step={failed_step} result=failed detail={error} elapsed_ms={elapsed_ms}",
|
||||
@@ -852,12 +854,13 @@ class ApplyWorker(BaseWorker):
|
||||
return "failed"
|
||||
except Exception as exc:
|
||||
error = diagnostics.redact_log_text(str(exc) or exc.__class__.__name__)
|
||||
db.set_applied(task.id, False, error, path=self.db_path)
|
||||
display_error = db.format_failure_error(error, current_step)
|
||||
db.set_applied(task.id, False, error, path=self.db_path, step=current_step)
|
||||
elapsed_ms = self._elapsed_ms(started)
|
||||
self.failed.emit(task.id, error)
|
||||
self.failed.emit(task.id, display_error)
|
||||
self.row_updated.emit(
|
||||
task.id,
|
||||
{"status": "failed", "last_error": error, "committed": 0},
|
||||
{"status": "failed", "last_error": display_error, "committed": 0},
|
||||
)
|
||||
self._log_run_event(
|
||||
f"step={current_step} result=failed detail={error} elapsed_ms={elapsed_ms}",
|
||||
@@ -1259,10 +1262,11 @@ class CollectWorker(BaseWorker):
|
||||
failed += 1
|
||||
error = str(exc) or exc.__class__.__name__
|
||||
safe_error = diagnostics.redact_log_text(error)
|
||||
display_error = db.format_failure_error(safe_error, current_step)
|
||||
elapsed_ms = self._elapsed_ms(started)
|
||||
db.mark_failed(task.id, "collect", safe_error, path=self.db_path)
|
||||
self.failed.emit(task.id, safe_error)
|
||||
self.row_updated.emit(task.id, {"status": "failed", "last_error": safe_error})
|
||||
db.mark_failed(task.id, "collect", safe_error, path=self.db_path, step=current_step)
|
||||
self.failed.emit(task.id, display_error)
|
||||
self.row_updated.emit(task.id, {"status": "failed", "last_error": display_error})
|
||||
self._log_run_event(
|
||||
"step={step} result=failed detail={error} elapsed_ms={elapsed_ms}".format(
|
||||
step=current_step,
|
||||
|
||||
Reference in New Issue
Block a user