-
Notifications
You must be signed in to change notification settings - Fork 2
Report checker
Dmitry Ivanov edited this page Jun 13, 2022
·
3 revisions
- Пользователь загружает файл через веб-форму
- Файл парсится
- На обработанном файле запускаются проверки
- Результат проверок отображается пользователю
- Для первоначальной загрузки используется
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
)