Commit Graph
16 Commits
Author SHA1 Message Date
dakocha3 3ba248b8a9 refactor: убрать ограничение maxChars из хранилища соответствий
- Удалены поле maxChars, параметр конструктора и метод evictWhileOverLimit.
- Хранилище теперь ограничено только TTL (ttl-minutes), без вытеснения по объёму.
- Конструкторы переведены на (int ttlMinutes) и (int ttlMinutes, SharedIndex, PayloadCipher).
- Обновлены тесты и PipelineWarmup на новые сигнатуры.
2026-09-23 22:33:54 +03:00
Максименко Никита Владимирович 1328a7b234 refactor: подтянуть Legal NER, переформатировать код и добавить тесты
Слияние с 685ec97 (третья ступень NER для юридических реквизитов),
код приведён к google-java-format, добавлены юнит-тесты
AdaptiveConcurrencyLimiter/SystemsConfig/PayloadCipher.
2026-09-23 22:02:45 +03:00
dakocha3 685ec977de feat: интеграция LLAIM Legal NER как третьей ступени распознавания
- Подключение ru-legal-ner (ONNX) для юридических реквизитов: ИНН, ОГРН,
  СНИЛС, паспорт, телефон, email, банковский счёт, дата.
- Отдельный проход LEGAL_CANDIDATE, чтобы не вытеснять кандидатов имён и адресов.
- coversAny(policy) в Pipeline вместо проверки только FIO.
- Нормализация цифровых ПД (ИНН/СНИЛС/карта/ОГРН) в свободной форме.
- Фикс ложного срабатывания ФИО на аббревиатуре «ИНН» (PD_MARKERS).
- Рефакторинг конструкторов NameCascade через record EngineConfig (Sonar S107).
2026-09-23 21:40:53 +03:00
Максименко Никита Владимирович c209c4a366 feat: добавление STRICT режима (более строгий MASKED) 2026-09-23 18:20:54 +03:00
Максименко Никита ВладимировичandClaude Sonnet 5 0b9371e4f2 refactor: разбить RuleRegistry на классы по категориям правил
RuleRegistry.java вырос до 621 строки — вынесены общие regex-фрагменты
в RulePatterns и группы правил в DocumentRules, FinanceRules, DateRules,
FioRules, ContactRules, AddressRules. RuleRegistry теперь только собирает
списки и хранит публичный API (detect, isAddressType, hasAddressContext).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-23 17:23:05 +03:00
Максименко Никита Владимирович d5b54b3f5c refactor: улучшение качества кода 2026-09-23 14:41:05 +03:00
Максименко Никита Владимирович 6ac5bb7819 feat: улучшение regexp + деплой одного инстанса 2026-09-23 13:26:14 +03:00
Максименко Никита Владимирович f0e9c6c60c fix: sonarQube замечания 2026-09-23 09:55:48 +03:00
dakocha3 1cee7d0f0f fix: распознавать одиночные имена и расширить правила дат и CVV/PIN 2026-09-22 23:32:45 +03:00
dakocha3 6ca880a992 fix: расширить правила детекции ПД и добавить датасет утечек 2026-09-22 23:09:11 +03:00
Максименко Никита Владимирович aa4c926a8f refactor: устранить нарушения DRY, SRP, KISS
- DRY: вынести scoped() в общий ScopedKey (был дублирован в PayloadStore и SharedIndex)
- DRY: вынести чтение словарей и перечитывание файлов в ResourceLoader
  (было дублировано в NameDictionary, ToponymDictionary, SystemsConfig)
- DRY: вынести алгоритм Луна в Validators.luhnCheckDigit (Synthetic переиспользует)
- SRP: вынести константы типов ПД из RuleRegistry в PdTypes
- SRP: вынести проверку организаций из NameDictionary в OrganisationDetector
- KISS: словари оставлены статическими (неизменяемые, детерминированные)

Поведение не изменилось: 1840 тестов проходят, NodeLogsLeakTest по-прежнему
падает на тех же 55 задокументированных утечках.
2026-09-22 22:39:16 +03:00
Максименко Никита Владимирович 6b5a7ae35f fix: вернуть 200 при сбое обработки вместо 500
Проверяющая система останавливает прогон после 5 подряд невалидных
ответов (5xx). Возврат 500 при сбое обработки мог оборвать прогон и
завалить оценку, тогда как 200 с безопасным телом [обработка недоступна]
прогон не останавливает и не раскрывает исходные ПД.
2026-09-22 22:17:07 +03:00
Onbehalfofmeanddakocha3 1c9c030283 Шифрование персональных данных в хранилище (AES-GCM) 2026-09-22 21:42:14 +03:00
Максименко Никита Владимирович 6afe3442f2 fix: устойчивость Redis-кластера под нагрузкой и код-ревью замечания
Redis timeout 200ms давал ложные срабатывания под пиковой нагрузкой на общем
хосте — подняли до 800ms и добавили cpu/mem лимиты сервисам в compose, чтобы
соседи не выедали CPU у Redis. Добавили метрику и WARN на случай, когда
демаскирование не находит соответствие ни по id, ни по отпечатку маски (раньше
тихо превращалось в повторное маскирование без единого следа в логах).

Кластерные узлы (node-a/node-b) получили обе NER-модели (WikiNEuRal для имён,
ruBERT для адресов) — раньше конфиг ссылался на несуществующие свойства и
вторая ступень молча не работала. lb (nginx) и volume для prometheus/grafana
данных зафиксированы в compose.

Плюс код-ревью фиксы: утечка нативных ONNX-ресурсов при ошибке загрузки модели
(BLOCKER), неверный HTTP-статус при сбое обработки, generic Exception в
LlmClient заменён на конкретные, лишние same-package импорты убраны.
2026-09-22 21:40:18 +03:00
Onbehalfofme e3fbc4140e Двухмодельная архитектура NER: WikiNEuRal для имён, ruBERT для адресов
- WikiNEuRal размечает имена (PER), не распознаёт известных личностей
- ruBERT размечает адреса (страна, регион, город, улица, дом)
- Повышена полнота FIO до 1.000: полные имена клиентов маскируются целиком
- Новый набор benchmark-two-model.txt и тесты TwoModelBenchmarkTest, TwoModelCascadeTest
2026-09-22 20:51:22 +03:00
Onbehalfofme 41052fac6a PD Guard: модуль безопасности персональных данных 2026-09-22 17:43:33 +03:00