Skip to content

Исправления по аудиту: обезличивание отчёта, нечитаемые файлы, CI - #2

Merged
malinkin-s merged 3 commits into
mainfrom
claude/audit-fixes-2026-09-28-0250
Sep 28, 2026
Merged

malinkin-s merged 3 commits into
mainfrom
claude/audit-fixes-2026-09-28-0250

Conversation

@malinkin-s

Copy link
Copy Markdown
Owner

Исправления по итогам security review, code review и аудита кода.

Отчёт об ошибке (приватность)

Отчёт по шаблону issue прикладывают публично, поэтому утечки здесь важнее всего.

  • Пути с пробелами. Виндовый путь обрывался на первом пробеле, и хвост вроде Ivan Petrov\Desktop\... или Общая папка\Иванов И.И\... уходил в отчёт. Теперь путь тянется до кавычки или конца строки (report.py).
  • Имена программ без задания. При падении до загрузки задания (всегда в CLI, в окне — до открытия папки) подстановке PRG_NN не из чего строиться, и реальный номер вроде 000101zz201006.nc оставался в пути. Теперь от небезопасного имени остаётся FILE.<расширение>; исходники .py и уже обезличенные PRG_NN / PART_NN сохраняются.

Устойчивость

  • Нечитаемый .nc (заблокирован, недокопирован) больше не мешает открыть смену: программа остаётся на своём месте в задании, в расчёт не идёт, оператор видит замечание warn.unreadable.
  • Сверка пропускает нечитаемые программы и отчёты наладки вместо падения.
  • Окно считает сверку до смены состояния: при ошибке отметки прошлой смены не переходят на новую.
  • Ввод «²» в поиске программ и в номере выполненной программы больше не роняет окно (isdecimal вместо isdigit).

Чистка лишнего кода

  • Удалены FONT_BIG, var_lang, status_at (тесты переведены на status_for + positions_upto), лишняя проверка в _save_report.
  • Одинаковые dimension() из двух парсеров слиты в reader.search_float.

CI

Добавлен .github/workflows/tests.yml: pytest на Windows + Python 3.8 x86 (ближе всего к цеховой машине) и на Linux + 3.13. Раньше тесты в CI не запускались.

Проверка

  • 232 passed, 6 skipped на Python 3.8, 3.11 и 3.13 (пропущенные требуют реального датасета).
  • 9 новых тестов падают на старом коде.
  • GUI не запускался (в среде нет tkinter), gui.py проверен компиляцией.

Не вошло

  • Поле ProgramNest.number оставлено.
  • Мелочи из аудита: сброс сортировки при смене языка, сообщение на --done 0, экранирование формул в CSV.

🤖 Generated with Claude Code

https://claude.ai/code/session_01CW3WfPRekjK4x6M8VNRckz


Generated by Claude Code

…иком

Виндовый путь обрывался на первом пробеле, и хвост вроде
"Ivan Petrov\Desktop\..." или "Общая папка\Иванов И.И\..." уходил в отчёт,
который по шаблону issue прикладывают публично. Теперь путь тянется до
кавычки или конца строки.

Имя файла из пути остаётся, только если оно безопасно (исходник .py или уже
PRG_NN / PART_NN). Иначе остаётся FILE.<расширение>: при падении без
загруженного задания подстановке не из чего строиться, и реальный номер
программы попадал в отчёт как есть.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CW3WfPRekjK4x6M8VNRckz
…ишнего

- Программа, файл которой не читается, остаётся на своём месте в задании,
  в расчёт не идёт и даёт замечание warn.unreadable. Раньше один
  заблокированный файл не давал открыть всю смену.
- Сверка пропускает нечитаемые программы и отчёты наладки вместо падения.
- Окно считает сверку до смены состояния: если она упадёт, отметки
  прошлой смены не перейдут на новую.
- isdecimal вместо isdigit в поиске программ и разборе номера: «²» —
  digit, но int() на нём падал.
- Убрано неиспользуемое: FONT_BIG, var_lang, status_at (тесты переведены
  на status_for + positions_upto), лишняя проверка в _save_report.
  Одинаковые dimension() из двух парсеров слиты в reader.search_float.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CW3WfPRekjK4x6M8VNRckz
Раньше в CI были только workflow Claude, тесты не запускались.
Windows + 3.8 x86 ближе всего к цеховой машине.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CW3WfPRekjK4x6M8VNRckz
@malinkin-s
malinkin-s merged commit 9221c37 into main Sep 28, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants