Загрузка данных


Ты работаешь только в проекте:

/Users/23865613/IdeaProjects/untitled/zadanie2/source_project

Предыдущий этап создал отдельные каталоги интеграционных объектов, но аудит
результата выявил ложные объекты, дубли и каталог unknown.

Не запускай браузер.
Не обращайся к META.
Не выполняй Git-команды.
Не изменяй иерархию АС, ФП, модулей, подмодулей и ТК.
Не удаляй старые плоские каталоги projects/SNL/meta.
Работай только с существующими output/*.md, temp_html/*.html и кодом проекта.

Цель:
исправить качество структурированных интеграционных объектов, чтобы каталог
создавался только для реальной строки таблицы или реального объекта META,
но не для заголовка страницы, названия раздела или имени исходного файла.

======================================================================
1. СОЗДАТЬ РЕЗЕРВНУЮ КОПИЮ
======================================================================

Создай резервную копию текущей структуры:

projects/SNL/meta.before-integration-cleanup

Если она уже существует, используй имя с timestamp.

Создай резервные копии изменяемых файлов:

scripts/structured_meta_writer.py.before-integration-cleanup
scripts/regenerate_reports.py.before-integration-cleanup

Если потребуется менять parser:

scripts/integration_interactions_parser.py.before-integration-cleanup

======================================================================
2. ОПРЕДЕЛИТЬ ЛОЖНЫЕ ОБЪЕКТЫ
======================================================================

Не считать отдельным интеграционным объектом названия страниц и разделов:

- ФП SberGeo.СНЛ — Интеграционные взаимодействия
- ФП SberGeo.СНЛ — Технологические взаимодействия
- ФП SberGeo.СНЛ — Точки взаимодействия
- ФП SberGeo.СНЛ — Стенды
- Интеграционные взаимодействия
- Технологические взаимодействия
- Точки взаимодействия
- Стенды
- Данные не найдены
- unknown
- пустое имя

Не создавать каталог из:

- заголовка Markdown;
- имени файла;
- названия страницы META;
- breadcrumb;
- общего названия раздела;
- пустой строки;
- строки статуса без имени объекта.

Реальный объект должен быть подтверждён хотя бы одним из признаков:

1. отдельная строка таблицы с непустым названием;
2. отдельный URL объекта;
3. ID META;
4. подтверждённая запись из parser-а;
5. строка с набором предметных атрибутов объекта.

======================================================================
3. КАНОНИЧЕСКИЙ КЛЮЧ И ДЕДУПЛИКАЦИЯ
======================================================================

Для каждого объекта сформировать canonical_key со следующим приоритетом:

1. type + META ID;
2. type + нормализованный URL;
3. type + parent + нормализованное исходное название.

Если два объекта имеют одинаковый ID или URL, это один объект.

При объединении:

- создать только один каталог;
- выбрать наиболее полное исходное название;
- сохранить остальные варианты в README.md в разделе «Альтернативные названия»;
- объединить непустые атрибуты;
- не дублировать одинаковые строки и ссылки.

Отдельно проверить вероятные дубли:

- СНЛ_IAM_Proxy_SIGMA;
- Точка взаимодействия СНЛ IAM Proxy SIGMA (Интеграционная);
- повторяющиеся «Технологические взаимодействия»;
- SNL.AI и СНЛ.AI.

Модули SNL.AI и СНЛ.AI не изменять на этом этапе, но добавить их в отдельный
отчёт как вероятный дубль с URL/ID для последующей проверки.

======================================================================
4. ПРАВИЛА ДЛЯ ТИПОВ
======================================================================

Создавать:

integration-flow/{NAME}/README.md

только для реального инфопотока.

Создавать:

integration/{NAME}/README.md

только для реального интеграционного или технологического взаимодействия.

Создавать:

integration-point/{NAME}/README.md

только для реальной точки взаимодействия.

Если в локальных данных реальные integration-flow не найдены:

- не создавать ложные дочерние каталоги;
- создать только индексный README.md;
- честно написать, что отдельные инфопотоки не были распознаны в доступной
  локальной выгрузке;
- указать просмотренные источники.

======================================================================
5. ИНДЕКСНЫЕ README.md
======================================================================

Файлы:

integration-flow/README.md
integration/README.md
integration-point/README.md

должны быть индексами.

Если дочерние объекты существуют, индекс должен содержать таблицу:

| Название | Тип | Родитель | Путь | Источник |
|---|---|---|---|---|

И ссылки на дочерние README.md.

В этом случае индекс не должен содержать заглушку «Данные не найдены».

Если дочерних объектов нет, индекс должен содержать честное пояснение,
какие источники проверены и почему объекты не созданы.

======================================================================
6. ОЧИСТИТЬ ТОЛЬКО ЛОЖНЫЙ РЕЗУЛЬТАТ
======================================================================

После формирования корректного набора удалить из новой структуры только
подтверждённо ложные каталоги:

- integration-flow/unknown;
- каталоги, созданные из названий страниц и разделов;
- подтверждённые дубли одного и того же объекта.

Перед удалением для каждого каталога показать:

- путь;
- почему он ложный или дублирующий;
- какой источник это подтверждает;
- куда перенесена полезная информация, если она была.

Не удалять старые каталоги:

- hierarchy;
- modules;
- submodules;
- technical_components;
- integration_interactions;
- interaction_points;
- stands;
- tech_resources.

======================================================================
7. ОТЧЁТЫ
======================================================================

Создать:

output/INTEGRATION_OBJECTS_REPORT.md

Со структурой:

# Отчёт по интеграционным объектам

## Реальные объекты

| Тип | Исходное название | Родитель | ID | URL | Созданный путь |
|---|---|---|---|---|---|

## Объединённые дубли

| Основной объект | Альтернативное название | Основание объединения |
|---|---|---|

## Отклонённые кандидаты

| Кандидат | Причина отклонения | Источник |
|---|---|---|

## Неразмещённые объекты

| Объект | Причина | Источник |
|---|---|---|

## Вероятные дубли вне текущего этапа

Включить SNL.AI / СНЛ.AI с URL или ID.

======================================================================
8. ПРОВЕРКИ
======================================================================

Выполнить:

python -m py_compile run_exporter.py scripts/*.py

python scripts/regenerate_reports.py

Не запускать run_exporter.py.

После регенерации проверить:

find projects/SNL/meta/as -type f | sort

Проверить, что отсутствуют:

- */unknown/README.md;
- каталоги с именем раздела «Стенды» внутри integration-flow;
- каталоги с общим именем «Интеграционные взаимодействия»;
- каталоги с общим именем «Точки взаимодействия»;
- два каталога для одного ID или URL.

Показать точные количества:

| Тип | Реальных объектов | Дублей объединено | Ложных отклонено | Неразмещённых |
|---|---:|---:|---:|---:|
| integration-flow | ... | ... | ... | ... |
| integration | ... | ... | ... | ... |
| integration-point | ... | ... | ... | ... |

Выборочно показать полный текст README.md:

- одного integration;
- двух integration-point;
- индекса integration/README.md;
- индекса integration-point/README.md;
- integration-flow/README.md.

======================================================================
ФИНАЛЬНЫЙ ОТЧЁТ
======================================================================

# Этап 1.1 — очистка интеграционных объектов

## Изменённые файлы

## Удалённые ложные каталоги

## Объединённые дубли

## Реальные integration-flow

## Реальные integration

## Реальные integration-point

## Неразмещённые объекты

## Результат py_compile

## Результат regenerate_reports.py

## Количество файлов до и после

## Оставшиеся проблемы

После выполнения остановиться.

Не переходить к атрибутам.