Загрузка данных
Ты работаешь только в проекте:
/Users/23865613/IdeaProjects/untitled/zadanie2/source_project
Сверочный аудит завершён. Причина потери точек взаимодействия подтверждена.
В локальных данных существуют пять реальных integration-point:
1. СНЛ REST-API SCIM
2. СНЛ REST-API публикация событий аудита
3. СНЛ IAM Proxy ALPHA
4. СНЛ IAM Proxy SIGMA
5. ТчВ СНЛ Sowa Sigma2Alpha
Текущий structured_meta_writer.py объединяет их, потому что у объектов без URL
формируется одинаковый canonical_key:
url:
или:
id:
Нужно минимально исправить canonical_key и восстановить пять реальных точек.
Не запускать браузер.
Не обращаться к META.
Не запускать run_exporter.py.
Не выполнять Git-команды.
Не переходить к атрибутам.
Не изменять иерархию АС, ФП, модулей, подмодулей и ТК.
Сохранить реализованный механизм временной безопасной сборки.
======================================================================
1. РЕЗЕРВНАЯ КОПИЯ
======================================================================
Создай резервную копию:
scripts/structured_meta_writer.py.before-empty-url-fix
Если потребуется изменить regenerate_reports.py, создать:
scripts/regenerate_reports.py.before-empty-url-fix
Создай резервную копию структуры:
projects/SNL/meta.before-empty-url-fix
Если имя существует, добавь timestamp.
======================================================================
2. ИСПРАВИТЬ CANONICAL_KEY
======================================================================
Найди все функции и участки кода, формирующие canonical_key, в том числе:
- _canonical_key
- _build_canonical_set
- код дедупликации integration-point
- объединение объектов из known_ip и ip_objs
Использовать следующий строгий приоритет:
1. Если META ID непустой:
type + ":id:" + normalized_id
2. Иначе, если URL непустой:
type + ":url:" + normalized_url
3. Иначе, если имя непустое:
type + ":name:" + normalized_parent + ":" + normalized_name
4. Если одновременно отсутствуют ID, URL и имя:
объект отклоняется как пустой кандидат.
Запрещено создавать ключи:
- `url:`
- `id:`
- `name:`
- ключ только из пустой строки;
- один общий ключ для всех объектов без URL.
Нормализация имени должна:
- привести пробелы к одному пробелу;
- убрать пробелы по краям;
- привести регистр только для сравнения;
- не изменять исходное отображаемое название в README.md.
======================================================================
3. ПРАВИЛА ДЕДУПЛИКАЦИИ
======================================================================
Объединять объекты только при одном из условий:
1. одинаковый непустой META ID;
2. одинаковый непустой URL;
3. одинаковый подтверждённый родитель и одинаковое нормализованное название.
Не объединять разные точки только потому, что у обеих отсутствует URL.
Отдельно проверить:
- `СНЛ IAM Proxy SIGMA`;
- `Точка взаимодействия СНЛ IAM Proxy SIGMA (Интеграционная)`.
Если у них одинаковый непустой URL или ID:
- создать один объект;
- основное название: `СНЛ IAM Proxy SIGMA`;
- альтернативное название сохранить в README.md;
- объединить непустые атрибуты и источники.
Если одинаковый URL или ID не подтверждён, не объединять их автоматически.
======================================================================
4. ИСТОЧНИКИ ПЯТИ ТОЧЕК
======================================================================
Использовать данные из:
- output/INTERACTION_POINTS.md;
- output/INTERACTIONS.md;
- output/LINK_DISCOVERY_REPORT.md;
- output/API.md;
- старой структуры interaction_points/;
- temp_html, когда это нужно для подтверждения уже сохранённых данных.
Отсутствие отдельного URL не является основанием удалить точку, если она
существует отдельной предметной строкой с непустым названием.
Для каждого объекта сохранить доступные:
- исходное название;
- тип;
- родителя;
- URL;
- META ID;
- API;
- технический компонент;
- статус;
- владельца;
- источник данных.
Не выдумывать отсутствующие значения.
======================================================================
5. ОЖИДАЕМЫЙ РЕЗУЛЬТАТ
======================================================================
После регенерации должно быть:
integration-flow:
- 0 реальных объектов;
- индексный README.md на уровне АС;
- индексный README.md на уровне ФП;
- честное пояснение об отсутствии распознанных отдельных инфопотоков.
integration:
- 0 реальных объектов;
- индексный README.md на уровне АС;
- индексный README.md на уровне ФП;
- честное пояснение об отсутствии подтверждённых отдельных взаимодействий.
integration-point:
- 5 реальных объектов на подтверждённом уровне ФП;
- 2 индексных README.md: уровень АС и уровень ФП;
- отсутствие unknown;
- отсутствие каталогов из названий страниц;
- отсутствие ошибочного объединения объектов без URL.
Ожидаемые каталоги уровня ФП:
integration-point/СНЛ_REST-API_SCIM/README.md
integration-point/СНЛ_REST-API_публикация_событий_аудита/README.md
integration-point/СНЛ_IAM_Proxy_ALPHA/README.md
integration-point/СНЛ_IAM_Proxy_SIGMA/README.md
integration-point/ТчВ_СНЛ_Sowa_Sigma2Alpha/README.md
Фактические безопасно нормализованные имена могут незначительно отличаться,
но объектов должно быть ровно пять.
======================================================================
6. СОХРАНИТЬ БЕЗОПАСНУЮ ПЕРЕСБОРКУ
======================================================================
Не удалять механизм временного каталога вида:
.meta-integration-build-*
Генерация должна:
1. собрать результат во временном каталоге;
2. проверить его;
3. заменить только шесть управляемых поддеревьев integration-*;
4. не изменять остальные каталоги;
5. при ошибке оставить текущую структуру нетронутой.
======================================================================
7. ПРОВЕРИТЬ WRITE_STRUCTURED_EXPORT
======================================================================
Выполни:
grep -RIn "write_structured_export" run_exporter.py scripts
Посчитай отдельно:
- определения;
- импорты;
- реальные вызовы.
Убедись, что запуск:
python scripts/regenerate_reports.py
выполняет одну логическую структурированную генерацию.
Не считай import вызовом.
Если реальных вызовов два, устранить только подтверждённый лишний вызов.
Не менять код без доказательства повторного выполнения.
======================================================================
8. ПРОВЕРКИ
======================================================================
Выполнить:
python -m py_compile run_exporter.py scripts/*.py
python scripts/regenerate_reports.py
Не запускать run_exporter.py.
После регенерации выполнить:
find projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/integration-point \
-type f | sort
Проверить:
- ровно пять дочерних каталогов реальных точек;
- один индексный README.md;
- нет unknown;
- нет названий страниц;
- нет двух каталогов SIGMA;
- все дочерние каталоги содержат README.md;
- индекс содержит пять работающих относительных ссылок.
Проверить количество дочерних объектов командой, не считая индексный README.md.
======================================================================
9. ПОКАЗАТЬ СОДЕРЖИМОЕ
======================================================================
Покажи полный текст:
- integration-point/README.md;
- README.md всех пяти точек;
- integration/README.md;
- integration-flow/README.md;
- output/INTEGRATION_OBJECTS_REPORT.md.
Для каждого объекта отдельно показать canonical_key, использованный при
дедупликации.
======================================================================
ФИНАЛЬНЫЙ ОТЧЁТ
======================================================================
# Этап 1.3 — восстановление integration-point без URL
## Изменённые файлы
## Причина ошибки
## Новая схема canonical_key
## Восстановленные точки
## Объединённые дубли
## Integration-flow
## Integration
## Integration-point
## Количество реальных вызовов write_structured_export
## Результат py_compile
## Результат regenerate_reports.py
## Количество файлов до и после
## Оставшиеся проблемы
В конце явно указать:
- integration-flow: 0 реальных;
- integration: 0 реальных;
- integration-point: 5 реальных.
После выполнения остановиться.
Не переходить к атрибутам.