feat(masking): keep first N chars of the original surname; configurable prefix and faker locale (v3.0.8) - #51
Merged
Conversation
…le prefix and faker locale (v3.0.8) - surname mask = first N chars of the original + synthetic stem + original grammatical ending; N default 3, short surnames keep at most half of the word, and at least one stem char always changes; no-leak checks unchanged; prefix/stem joint kept pronounceable - masking_rules.surname_prefix_length / DATA_MASKING_SURNAME_PREFIX_LENGTH (0 = fully synthetic as in 3.0.2-3.0.7); invalid values are fatal - system.faker_locale / DATA_MASKING_FAKER_LOCALE (default uk_UA): Faker no longer hard-wired at import (constants.set_faker_locale); unknown locale rejected; locales without patronymics fall back to uk_UA for them - README EN/UK note; tests/test_surname_prefix.py (45 tests). 771 passed. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XT6iUWaQgahXDB9TWX9Bq7
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
v3.0.8 — префікс оригінального прізвища в масці; налаштування префікса і локалі faker
Реалізація вимог ТЗ:
1. Перші символи прізвища зберігаються
Маска прізвища = перші N символів оригіналу + синтетична основа + відмінкове закінчення оригіналу:
Петренку → Петаченку,Іванова → Іварунова,Лисенко → Ливченко. N типово 3; для коротких прізвищ — не більше половини слова (Ґудзь → Ґу…,Ткач → Тк…,Рак → Р…); хоча б один символ основи завжди змінюється. Префікс береться з самого слова незалежно від того, де починається закінчення, але в закінчення не заходить. Усі no-leak перевірки лишаються (маска не дорівнює/не містить оригінал, його основу чи слово документа); стик префікса й хвоста вимовний (голосна + приголосна).2. Число в конфігу
masking_rules.surname_prefix_length(YAML) /DATA_MASKING_SURNAME_PREFIX_LENGTH(ENV).0= повністю синтетична маска (поведінка 3.0.2–3.0.7); від'ємне чи не-ціле — фатальна помилка конфігу. Є в шаблоні--init-config.3. Локаль faker у конфігу
system.faker_locale(YAML) /DATA_MASKING_FAKER_LOCALE(ENV), типовоuk_UA.Faker('uk_UA')більше не зашитий при імпорті —constants.set_faker_locale(). Морфологія (закінчення прізвищ, відмінки звань, рід по батькові) лишається українською; локалі без по батькові (більшість) отримують fallback наuk_UA; невідома локаль відхиляється на старті з чіткою помилкою.Тести
tests/test_surname_prefix.py— 45 тестів (довжини префікса включно з короткими, збереження закінчення/регістру, дефісні прізвища, вимовний стик, YAML/ENV, перемикання локалі, невідома локаль, fallback по батькові). 771 passed, mypy 0.Сумісність
Маски прізвищ відрізняються від 3.0.2–3.0.7; розмаскування файлів будь-якої попередньої версії не зачеплено.
🤖 Generated with Claude Code
https://claude.ai/code/session_01XT6iUWaQgahXDB9TWX9Bq7
Generated by Claude Code