fix(plagiarism): не матчить против чужих/своих же загруженных работ
All checks were successful
Deploy / deploy (push) Successful in 14m38s
Deploy / test (push) Successful in 2m47s

Критично: L1/L2/L3 сравнивали фрагменты со ВСЕЙ базой documents, включая
source=user_submission — работы, которые auto_approve_submission сам же
затаскивал в корпус после проверки. Итог: студент, перепроверивший тот
же файл дважды, получал 100% "точное совпадение" по всем фрагментам —
против собственной же более ранней загрузки.

Фикс: все три уровня исключают source=user_submission из кандидатов на
совпадение. AUTO_APPROVE_SUBMISSIONS выключен по умолчанию — раньше рос
корпус для будущего сравнения, но без защиты от self/cross-match это
опаснее, чем полезно.
This commit is contained in:
jze9
2026-08-25 17:42:23 +05:00
parent 43034eda33
commit 74cbf1b8f4
3 changed files with 20 additions and 7 deletions

View File

@@ -61,10 +61,12 @@ class Settings(BaseSettings):
# Автоматически добавлять проверенные работы студентов в базу для сравнения
# (как в коммерческих системах — Антиплагиат.ру/Turnitin ловят списывание у
# предыдущих потоков именно так). Без этого каждая работа лежит в StagedWork
# и ждёт ручного одобрения админом — сейчас это дефолт для роста корпуса;
# выключить, если нужна модерация перед публикацией.
AUTO_APPROVE_SUBMISSIONS: bool = True
# предыдущих потоков именно так). Выключено по умолчанию: без ручной
# модерации студент, перепроверивший тот же файл дважды, получал 100%
# "плагиата" — против собственной же более ранней загрузки. L1/L2/L3 теперь
# и так исключают source=user_submission из сравнения, так что включать это
# обратно есть смысл только вместе с реальной защитой от self/cross-match.
AUTO_APPROVE_SUBMISSIONS: bool = False
# App
ENVIRONMENT: str = "development"