Skip to content

Report checker

Dmitry Ivanov edited this page Jun 13, 2022 · 3 revisions

Общий конвейер

  1. Пользователь загружает файл через веб-форму
  2. Файл парсится
  3. На обработанном файле запускаются проверки
  4. Результат проверок отображается пользователю

Обработка текстовых документов

  • Для первоначальной загрузки используется python-docx
  • В классе DocxUploader составляются основные данные о файле, рисунки, таблицы, параграфы (= текст документа)

Литература

Для критериев проверки литературы необходимы

  • Поиск раздела литературы (без реализованных разделов - поиск ключевой фразы, то, что после нее считать списком) и составление списка источников
  • Проверка наличия ссылок на источники в тексте

Разделы

Для формирования разделов потребуется дополнительно анализировать результат парсинга DocxUploader. В качестве примера (не для использования) можно посмотреть класс ChapterCreator, имеющего существенные недостатки

  • Разделы должны формироваться на основании шрифтов (поскольку существуют четкие требования к ним)
  • Проверка наличия обязательных разделов должна быть отделена от обработки (обработка файла происходит до всех проверок, проверки запускаются в другом месте)
  • Для проверки местоположения разделов (разделы начинаются с новой страницы) и количества страниц потребуется использования pdf-версии файла (поскольку docx не содержит информацию о страницах), в качестве примера обработки pdf - PdfDocumentManager

Рисунки/Таблицы

DocxUploader формирует информацию о рисунках/таблицах документа, однако не сохраняет / не ищет информацию о подписи объекта - требуется добавить логику поиска и сохранения (для дальнейшего использования и проверки) Поскольку требуется проверять наличие ссылки на рисунок/таблицу

  • Стоит предусмотреть проверку только в разделе, где содержится рисунок/таблица, а так же по всему документу (чтобы иметь возможность сообщить о неверном расположении)
  • Проверять нумерацию рисунков/таблиц

Проверка обработанного файла

  • Базовый класс критерия - BaseCheck
    • Критерий должен иметь результат True/False (в отдельных случаях можно предусмотреть дробный результат [0,1])
    • В случае не удовлетворения фидбек по критерию должен содержать подробную и понятную информацию об ошибках, чтобы пользователю было ясно что и как необходимо исправлять.
  • Каждый критерий располагайте в отдельном файле в каталоге - app/main/checks/report_checks
  • Запуск последовательности проверок - check_report
    • На данный момент для простоты добавляйте реализованные проверки в set_checks, чтобы проверять документы по всем реализованным параметрам.
    • Для каждой новой проверки добавьте соответствующий лейбл в CRITERIA_LABELS для отображения на странице.

Запуск

  • Используйте в качестве основы ветку dev, в неё же создавайте PR
  • Для развертывания используются технологии docker/docker-compose, разместите .env файл (прикрепил к письму) в корне репозитория и выполните следующие команды:
docker-compose build
docker-compose up
  • Авторизоваться можно в качестве пользователя admin с паролем из env-файла.
  • Для возможности загрузки отчетов используйте url-аргумент report в ссылке (http://127.0.0.1:8080/upload?report=tru)