Перейти к содержанию

Откуда берутся замечания

Список замечаний в «Очереди решений» - это не один отчёт, а объединение нескольких проверок. У карточки есть важность, цитата, правило и обозначение источника. Интерфейс не запускает движки по отдельности: их вызывает пайплайн задачи.

Как задача доходит до этого списка: как проходит проверка.

Vale

Бинарник Vale 3.9.1 лежит в образе backend. Текст пишется во временный файл, Vale отдаёт JSON. Правила берутся из каталога backend/vale/ и из выбранного Style Guide.

Vale ищет то, что записано правилом: запрещённые конструкции, словарь, требования к тону. Он не «понимает» абзац. Если собственного гайда нет, используется встроенный набор из styleguide/rules.yaml.

Импорт docx разбирает документ на правила и словарь. Формулировки затем правятся вручную.

Морфология

custom_checks.py, pymorphy3 и razdel. То, что регуляркой Vale не выразить:

  • пассивный залог
  • антропоморфизм (система «думает», сервер «хочет»)
  • слишком длинное предложение
  • «Вы» с заглавной в неуместном месте
  • согласование прилагательного с существительным и подлежащего со сказуемым

На карточке источник виден как морфология / style-guide, в зависимости от правила.

LanguageTool

Отдельный контейнер, HTTP /v2/check, язык ru. Грамматика, пунктуация, типовые ошибки. Около 1.5 ГБ RAM и до 90 с на первый старт.

Пока healthcheck не пройден, этот слой молчит. Пустой список при включённом «Язык и ясность» чаще значит именно это.

В пайплайне v2 находка LanguageTool привязывается к правилу гайда «Базовая.Орфография». Если такого правила в гайде нет, сигнал в отчёт не попадает.

Слияние

Три движка работают параллельно (checker.check_text). Одинаковые находки по строке, колонке и тексту схлопываются. Если гайд уже пометил фрагмент, повтор LanguageTool на том же месте отбрасывается.

Пользовательские regex (/api/rules) тоже входят в этот список. Длина паттерна ограничена, на исполнение стоит таймаут, чтобы плохое выражение не подвесило процесс.

Языковая модель

Только при непустом адресе с протоколом OpenAI, метод chat/completions. Проходы v2: язык, гайд, структура, термины, согласованность, словарь, верификатор. Верификатор сверяет кандидата с исходным блоком и отсекает слабые.

Пустой адрес систему не ломает. Галочки на форме по-прежнему выбирают, какие группы замечаний войдут в отчёт.

Соответствие форме «Вычитка»

Параметр Без модели С моделью
Язык и ясность LanguageTool, часть морфологии плюс проход language
Style Guide Vale по выбранному гайду плюс проходы guide и lexicon
Термины и согласованность словарь гайда, морфология плюс terminology и consistency