Commit Graph
24 Commits
Author SHA1 Message Date
prog1764 9d2690e3e0 fix: 6 замечаний по генератору
1) нормализация адреса: «Р-Н Крымский» → «р-н. Крымский»,
   «Г Крымск» → «г. Крымск», «УЛ» → «ул.», «Д.» → «д.»
2) убрана строчка «ПО» на вкладке ИС
3) СЗИ без категорий: «Kaspersky, КриптоПро» (через запятую)
4) кнопка «Выбрать из списка» в подвкладке «Пользователи ИС»
5) бумажные документы: «хранятся в сейфе» (авто-предлог+падеж)
6) незаполненные данные «—» подсвечиваются жёлтым (незаменённые
   переменные — красным, как было)
2026-08-03 13:23:52 +04:00
prog1764 2f4a08b2e4 feat: проверка данных через Морфер/DaData/DeepSeek (ИИ)
- правая панель на вкладке «Организация»: проверка склонений
  (Морфер 3.0 — бесплатно, без ключа; DeepSeek — ИИ) и реквизитов
  (DaData по ИНН; DeepSeek — ИИ-рецензия)
- мини-табло результата: источник, дисклеймер для ИИ («сгенерировано
  ИИ — перепроверьте»), кнопки «Применить»/«Очистить»
- меню «Файл → Настройки…»: вкладка API-ключей (DaData, DeepSeek,
  модель), сохраняются в api_settings.json рядом с программой
- веб-проверки показывают источник (morpher.ru / dadata.ru)
2026-08-03 12:59:51 +04:00
prog1764 3a4cd2fde4 fix: нормализация КАПСа по словам (город + должности)
- раньше: если в тексте есть аббревиатура (ООО, И.О.) или цифры
  (индекс в адресе) — весь текст оставался КАПСОМ
- теперь: каждое слово нормализуется отдельно, аббревиатуры
  (АРМ, СКУД, ООО, ИНН и т.п.) и инициалы сохраняются
- город: '350000, Г. КРАСНОДАР...' → 'Г. Краснодар' → город
  снова определяется при импорте
- должность: 'ГЛАВА' → 'Глава', ФИО: 'ИВАНОВ ИВАН ИВАНОВИЧ' → 'Иванов Иван Иванович'
2026-08-03 12:45:10 +04:00
prog1764 4fca29e7d6 fix: структура ИС — чтение и из колонки B, и из той же ячейки после ':'
- если значение записано в B7 — берём оттуда
- если в A7 «Структура ИС: АРМ 2 шт.» — извлекаем после двоеточия
2026-08-03 12:39:42 +04:00
prog1764 12817588ff fix: ЛВС не импортировалась в модель ИС (галочка терялась)
- is_local_network=is_data.get('is_has_lan') при создании ИС из импорта
- проверено: АРМ №1 → ЛВС=да, Интернет=да
2026-08-03 12:33:02 +04:00
prog1764 1faf6196af feat: вкладка «Бумажные документы» + импорт из опросника
- Новая вкладка: название документа + место хранения, добавить/удалить
- Импорт из опросника: «Названия документов» (строка 61) и «Место
  хранения» (строка 62) → цикл {{paper_documents}} ({{document}}/{{storage}})
- Сохранение/автосохранение/генерация собирают данные вкладки
- Загрузка файла проекта восстанавливает список документов
2026-08-03 12:27:32 +04:00
prog1764 353e7403d0 fix: импорт под новый формат опросника 5.25
- clean_value не портит аббревиатуры/номера (АРМ №1, СКУД)
- ПО: 'Названия программ...' → {{item.software}}
- 'локальную сеть' → is_has_lan (поле is_local_network)
- Цель обработки ПД — значение из объединённой ячейки (val_b)
- Роли комиссии ищутся и в колонке E, и в Примечании (D)
- Проверено на присланном опроснике: КПП, подразделение по
  безопасности, действия с ПДн, структура ИС — импортируются
2026-08-03 12:22:49 +04:00
prog1764 79952bf735 feat: настройки импорта вынесены в текстовый файл-словарь
- import_settings.json рядом с программой (создаётся автоматически):
  что импортировать (var), откуда (cell: 'Общие сведения'!B2 или
  keywords: регэксп поиска по колонке A)
- importer.py читает словарь: сначала конкретная ячейка, потом ключевые слова
- листы общих сведений/сотрудников/ИС тоже настраиваются (ключевые слова)
- UI: меню «Генерация → Файл настроек импорта…» — выбор пути к словарю
- при сборке .exe файл остаётся редактируемым без пересборки
2026-08-03 12:09:13 +04:00
prog1764 9998410dd6 feat: импорт новых переменных из опросника 152-ФЗ
- {{security_department}} — наименование структурного подразделения
  по безопасности (из поля 'структурное подразделение')
- {{item.pd_actions}} — действия с ПДн в цикле ИС
- {{item.structure}} — структура ИС импортируется из листов ИС
- КПП уже импортировался ({{company_kpp}})
- UI: применение подразделения, структуры и действий при импорте
2026-08-03 12:00:57 +04:00
prog1764 ee76fabdf6 feat: поддержка синтаксиса {{item_поле}} (без точки) в циклах
Работают оба варианта: {{item.fio_initials}} и {{item_fio_initials}},
{{item.fio_short}} и {{item_fio_short}}.
Проверено: И.О. Фамилия -> В.Н. Черник, Фамилия И.О. -> Черник В.Н.
2026-08-03 11:20:20 +04:00
prog1764 c5f03164c8 feat: недостающие переменные из инструкции 152-ФЗ
- {{item.fio_initials}} (И.О. Фамилия) и {{item.fio_short}} (Фамилия И.О.)
  для комиссии
- {{item.software}} (ПО) для ИС + поле «ПО» в интерфейсе
- модель: поле software у InformationSystem
2026-08-03 11:17:20 +04:00
prog1764 4b4fcbc59d fix: убраны пустые строки между итерациями цикла + сохранены разрывы страниц
Word оставляет пустые параграфы и обрывки вокруг маркеров <!-- loop:... -->.
При размножении цикла они копировались между строками (комиссия слипалась
с пустыми строками). Теперь:
- template разделяется на prefix/core/suffix, пустые параграфы в core чистятся
- остатки маркеров удаляются после обработки (не трогая таблицы и page breaks)
- разрыв страницы из параграфа loop_end выносится между итерациями

Проверено: комиссия без пустых строк, акт 6 с 2 ИС — 2 разрыва страниц, XML валиден.
2026-08-03 11:14:10 +04:00
prog1764 24956cd27c feat: переменная подписи {{item.signature}} в цикле комиссии
Председатель комиссии: ___________ / А.А. Емельянов
Члены комиссии: _________________ / К.Е. Кузина
_________________ / Т.Б. Ахаева
2026-08-03 10:58:15 +04:00
prog1764 47630dbbfb feat: переменная «Структура ИС» (structure) в цикле information_systems
- models.py: поле structure у InformationSystem
- variables.py: {{item.structure}} / {{structure}} в цикле,
  {{is_structure_N}} в индексированных
- ui.py: поле «Структура ИС» на вкладке ИС
2026-08-03 10:56:35 +04:00
prog1764 577bed22d6 feat: клавиши (Ctrl/Alt/Del) в исключения + подсветка маркером только переменной
- IGNORED_OLD_VARS: <Ctrl>, <Alt>, <Del> и др. клавиши больше не
  считаются незаменёнными переменными (7.6 Инструкция Пользователя)
- Подсветка: вместо красного цвета текста — красный маркер
  (w:highlight) на самой переменной, а не на всём абзаце
- OLD_VAR_MAP: ShortCompanyName1-6 (склонения краткого названия),
  IspdnName → {{is_name_1}}
2026-08-03 10:53:59 +04:00
prog1764 f5e9d3523d feat: группировка комиссии — председатель отдельно, члены без повтора роли
- Председатель/Секретарь/Заместитель — своей ролью
- Первый обычный член получает «Члены комиссии», остальные — пустая роль
- Пустая строка в цикле больше не превращается в «—»
Проверено: 1 председатель + 4 члена в шаблоне «6. Акт...»
2026-08-03 10:34:05 +04:00
prog1764 65480ea5ed fix: сохранять разрыв страницы (w:br type=page) при развороте циклов
Word хранит перенос страницы отдельным run в параграфе с <!-- loop_end -->.
Нормализация раньше удаляла его при склейке текста — акты слипались.
Теперь page break сохраняется и копируется в каждую итерацию цикла.
Проверено: 2 ИС -> 2 разрыва страниц, XML валиден.
2026-08-03 10:29:10 +04:00
prog1764 f4306f130e fix: заменять переменные без префикса item. внутри циклов
Word разбивает на run'ы не только маркеры циклов, но и переменные
({{name}}, {{number}}, {{pd_list}} и т.д.). Нормализация теперь
склеивает все параграфы с {{...}}, а размножение цикла подставляет
и {{item.field}}, и {{field}} (шаблон '0. Акт обследования.docx')
2026-08-03 10:12:09 +04:00
prog1764 ab96991a72 fix: Word разбивает маркеры циклов/переменные на run'ы + адрес ИС
- _normalize_loop_markers: склейка текста параграфа в один run перед
  поиском <!-- loop:... --> и {{item.*}}, иначе циклы не разворачивались
  (шаблон '6. Акт определения уровня защищенности ПДн.docx')
- variables.py: поле address в цикле information_systems
2026-08-03 10:08:45 +04:00
prog1764 28ac7f69ab fix: пустой временный файл при отсутствии циклов в шаблоне (Package not found)
expand_loops_in_zip возвращал путь к пустому tmp-файлу, если в шаблоне
не было маркеров <!-- loop:... -->. python-docx падал с
'Package not found'. Теперь при отсутствии циклов возвращается
исходный шаблон, tmp удаляется. Тесты: без циклов, с циклом,
вложенные циклы — всё ок.
2026-08-03 09:28:45 +04:00
prog1764 12df5f106c Revert "feat: import_mapper + кнопка в UI"
This reverts commit dd909792d4.
2026-08-03 09:15:28 +04:00
prog1764 dd909792d4 feat: import_mapper + кнопка в UI 2026-07-31 00:39:07 +04:00
prog1764 44b4060021 fix: unpack 4→3 в _employee_entries (ui.py) 2026-07-31 00:36:57 +04:00
prog1764 66753f6607 merge: рабочий генератор из rewrite + тест пройден 2026-07-31 00:35:52 +04:00