preflight

This commit is contained in:
Raykov-MS 2026-07-06 23:08:23 +03:00
parent 12ad103a00
commit b9d4ba6573
2 changed files with 31 additions and 1 deletions

View File

@ -229,7 +229,7 @@ def check_dir_write_access(
pass pass
return ( return (
False, False,
f"Недостаточно прав на запись/переименование в папке: {target_dir}. {exc}", f"Недостаточно прав на запись/переименование/удаление в папке: {target_dir}. {exc}",
) )

View File

@ -82,10 +82,12 @@ def run_batch(
run_context = create_run_context(input_dir=input_dir, samba_conn=samba_conn) run_context = create_run_context(input_dir=input_dir, samba_conn=samba_conn)
checks = [ checks = [
(input_dir, "Входная папка (перемещение файлов)"),
(run_context.run_dir, "Папка Out (текущий запуск)"), (run_context.run_dir, "Папка Out (текущий запуск)"),
(run_context.processed_dir, "Папка Processed"), (run_context.processed_dir, "Папка Processed"),
(run_context.error_dir, "Папка Err"), (run_context.error_dir, "Папка Err"),
] ]
preflight_labels: list[str] = []
for target_dir, label in checks: for target_dir, label in checks:
is_ok, write_error = check_dir_write_access( is_ok, write_error = check_dir_write_access(
target_dir=target_dir, target_dir=target_dir,
@ -103,9 +105,17 @@ def run_batch(
log_path="", log_path="",
messages=[write_error or f"Нет прав на запись в: {target_dir}"], messages=[write_error or f"Нет прав на запись в: {target_dir}"],
) )
preflight_labels.append(label)
messages.append(
"Проверка прав (чтение/запись/копирование/удаление) пройдена: "
+ ", ".join(preflight_labels)
+ "."
)
protocol_rows: list[ProtocolRow] = [] protocol_rows: list[ProtocolRow] = []
log_lines: list[str] = [] log_lines: list[str] = []
log_lines.append(f"{_now()} | preflight access checks: ok")
scan_result = scan_input_files(input_dir=input_dir, samba_conn=samba_conn) scan_result = scan_input_files(input_dir=input_dir, samba_conn=samba_conn)
log_lines.append( log_lines.append(
@ -180,6 +190,11 @@ def run_batch(
if errors == 0 and partial == 0 if errors == 0 and partial == 0
else ("partial" if partial > 0 else "error") else ("partial" if partial > 0 else "error")
) )
messages.append(
_build_result_message(
status=status, processed=processed, partial=partial, errors=errors
)
)
messages.extend(log_lines[-5:]) messages.extend(log_lines[-5:])
return BatchResult( return BatchResult(
status=status, status=status,
@ -332,3 +347,18 @@ def _upload_artifacts(
def _now() -> str: def _now() -> str:
return datetime.now().strftime("%Y-%m-%d %H:%M:%S") return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
def _build_result_message(
*, status: str, processed: int, partial: int, errors: int
) -> str:
if status == "success":
if processed > 0:
return f"Все успешно: обработано файлов {processed}."
return "Успешно: новых файлов для обработки нет."
if status == "partial":
return (
"Частично успешно: "
f"успешно={processed}, частично={partial}, с ошибками={errors}."
)
return f"Ошибка обработки: успешно={processed}, частично={partial}, с ошибками={errors}."