Repository navigation
fix(validate): читать очередь теми же правилами, что и прогон - #8
Merged
Merged
Conversation
`rake submit` роутил очередь с `--on-invalid skip`, а `validate` следом читал ту же очередь строгим загрузчиком — и падал с кодом 2 на первой же битой заявке. Файлы решений и отчёта при этом уже лежали в корне, но сдача оставалась без вердикта, причём ровно в час стопкода. Теперь `--on-invalid` есть и у `validate`, и `rake submit` его передаёт. Карантин не проглатывается: покрытие сверяется по уцелевшим заявкам, а рядом печатается `WARN в карантине N заявок, решений по ним нет` со списком идентификаторов — неполный файл решений не должен выглядеть полным. Проверено репетицией на очереди из 302 заявок с двумя заведомо битыми строками: 300 решений, 0 `selected_provider: null`, 303 проверки, 0 ошибок, 1 предупреждение. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N7LBzBD5qBUzAAPsGTB9Nk
- 243 спека вместо 242, покрытие строк 96.2% и ветвей 80.3% — после нового регресс-теста на карантин в `validate`; - доля Python приведена к одному основанию: 1 056 строк — 9% от всего Ruby-кода (10 639 с тестами) и 12% от рантайма `lib` + `bin` (7 548); раньше в разных документах стояли 9% и 12% без объяснения, откуда разница; - в чек-лист перед стопкодом добавлены две строки: перезаписать `data/providers.json` и историю, если организаторы дадут свои (`rake submit` берёт пути по умолчанию), и разобрать руками заявки, о которых валидатор напечатал WARN про карантин; - в `docs/criteria.md` записана репетиция сдачи на 302 заявках. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N7LBzBD5qBUzAAPsGTB9Nk
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что и зачем
rake submit— этоroute --on-invalid skipплюсvalidateпо тем же файлам. Прогон битую заявкупереживал (карантин + предупреждение), а
validateследом читал очередь строгим загрузчиком и падална ней же с кодом 2. Файлы решений и отчёта к тому моменту уже лежали в корне, но сдача оставалась
без вердикта — и происходило бы это ровно в час стопкода, когда разбираться некогда.
Нашлось на репетиции сдачи: синтетическая очередь на 302 заявки (шесть банков, карты и СБП, суммы
1–300 тыс., числа строкой, целочисленные
operation_id, дата без «T», неизвестные поля и двезаведомо битые строки).
Как сделано
validateпоявился флаг--on-invalid fail|skip— тот же, что уroute; по умолчанию,как и раньше,
fail;rake submitпередаёт--on-invalid skip, так что проверка видит ровно ту очередь, которуюроутил прогон;
WARN в карантине N заявок, решений по ним нет: …со списком идентификаторов. Неполный файлрешений не должен выглядеть полным;
providers.jsonи историю от организаторов (rake submitберёт пути по умолчанию);доля Python приведена к одному основанию (9% от всего Ruby, 12% от рантайма
lib+bin).Как проверить
Регресс-тест —
spec/payout_router/cli_spec.rb: без флагаvalidateпадает с кодом 2, с--on-invalid skipпроверяет уцелевшие заявки и печатает WARN про карантин.Репетиция сдачи на 302 заявках после исправления: 300 решений, ни одного
selected_provider: null,303 проверки, 0 ошибок, 1 предупреждение, 0.45 с.
🤖 Generated with Claude Code
https://claude.ai/code/session_01N7LBzBD5qBUzAAPsGTB9Nk