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


Продолжай работу только в проекте:

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

Причина остаточных ложных объектов подтверждена:
structured_meta_writer.py формирует новый результат, но не удаляет каталоги,
оставшиеся после предыдущей генерации.

Нужно реализовать безопасную и воспроизводимую пересборку только новых
каталогов интеграций.

Не запускай браузер.
Не обращайся к META.
Не выполняй Git-команды.
Не изменяй иерархию АС, ФП, модулей, подмодулей и ТК.
Не удаляй старые плоские каталоги-источники.

Целевая новая структура:

projects/SNL/meta/as/{AS_NAME}/integration-flow/
projects/SNL/meta/as/{AS_NAME}/integration/
projects/SNL/meta/as/{AS_NAME}/integration-point/

projects/SNL/meta/as/{AS_NAME}/fp/{FP_NAME}/integration-flow/
projects/SNL/meta/as/{AS_NAME}/fp/{FP_NAME}/integration/
projects/SNL/meta/as/{AS_NAME}/fp/{FP_NAME}/integration-point/

======================================================================
1. РЕЗЕРВНАЯ КОПИЯ
======================================================================

Перед изменениями создай:

scripts/structured_meta_writer.py.before-safe-integration-rebuild
scripts/regenerate_reports.py.before-safe-integration-rebuild

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

projects/SNL/meta.before-safe-integration-rebuild

Если такое имя существует, добавь timestamp.

======================================================================
2. БЕЗОПАСНАЯ ПЕРЕСБОРКА
======================================================================

Не удаляй каталоги интеграций сразу.

Реализуй следующий алгоритм внутри structured_meta_writer.py:

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

projects/SNL/.meta-integration-build-{timestamp}

3. Временная структура должна содержать только:

- integration-flow;
- integration;
- integration-point;

для уровня АС и ФП.

4. Полностью записать туда:

- индексные README.md;
- каталоги реальных объектов;
- отчёт о неразмещённых объектах, если он предусмотрен.

5. Проверить временный результат:

- нет каталога unknown;
- нет пустых имён;
- нет названий страниц в качестве объектов;
- нет дублей по canonical_key;
- каждый дочерний каталог содержит README.md;
- индексные README.md ссылаются только на существующие файлы.

6. Только после успешной проверки заменить соответствующие целевые поддеревья.

Разрешено заменять только:

as/{AS_NAME}/integration-flow
as/{AS_NAME}/integration
as/{AS_NAME}/integration-point

as/{AS_NAME}/fp/{FP_NAME}/integration-flow
as/{AS_NAME}/fp/{FP_NAME}/integration
as/{AS_NAME}/fp/{FP_NAME}/integration-point

Не затрагивать никакие другие каталоги.

7. Если временная генерация завершается ошибкой:

- не изменять текущую структуру;
- удалить только временный каталог;
- завершить операцию с понятной ошибкой.

======================================================================
3. ЗАПРЕЩЁННЫЕ УДАЛЕНИЯ
======================================================================

Запрещено удалять или изменять:

- projects/SNL/meta/hierarchy;
- projects/SNL/meta/modules;
- projects/SNL/meta/submodules;
- projects/SNL/meta/technical_components;
- projects/SNL/meta/integration_interactions;
- projects/SNL/meta/interaction_points;
- projects/SNL/meta/stands;
- projects/SNL/meta/tech_resources;
- as/{AS_NAME}/README.md;
- as/{AS_NAME}/attributes;
- as/{AS_NAME}/fp;
- module;
- submodule;
- tk.

Не использовать удаление всего projects/SNL/meta.

======================================================================
4. ПРАВИЛА РЕАЛЬНЫХ ОБЪЕКТОВ
======================================================================

Не создавать объекты из:

- unknown;
- пустого имени;
- названия страницы;
- названия раздела;
- breadcrumb;
- имени Markdown-файла;
- «Интеграционные взаимодействия»;
- «Технологические взаимодействия»;
- «Точки взаимодействия»;
- «Стенды»;
- «Данные не найдены».

Использовать canonical_key:

1. тип + META ID;
2. тип + нормализованный URL;
3. тип + подтверждённый родитель + нормализованное исходное название.

При совпадении URL или ID создавать один объект.

Не объединять разные объекты только из-за похожих названий.

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

В каждом каталоге типа должен быть индексный README.md.

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

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

Путь должен быть относительной Markdown-ссылкой на дочерний README.md.

Если реальные объекты не найдены:

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

======================================================================
6. REGENERATE_REPORTS
======================================================================

Проверь scripts/regenerate_reports.py.

Он должен вызывать актуальную функцию write_structured_export() только после
регенерации отчётов.

Не должно существовать второй старой реализации writer-а или второго вызова,
который повторно создаёт ложные каталоги.

Покажи все места, где вызывается:

write_structured_export

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

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

Выполни:

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

find projects/SNL/meta/as \
  -type d \
  \( -name "unknown" -o -name "*Стенды*" -o -name "*Интеграционные_взаимодействия*" -o -name "*Точки_взаимодействия*" \) \
  -print

Проверить отсутствие:

- integration-flow/unknown;
- каталогов из названий страниц;
- дублей с одинаковым URL или ID;
- пустых дочерних каталогов;
- ссылок индекса на отсутствующие README.md.

Показать таблицу:

| Тип | Реальных объектов | Индексных README | Ложных объектов | Дублей |
|---|---:|---:|---:|---:|
| integration-flow | ... | ... | ... | ... |
| integration | ... | ... | ... | ... |
| integration-point | ... | ... | ... | ... |

======================================================================
8. ВЫБОРОЧНАЯ ПРОВЕРКА СОДЕРЖИМОГО
======================================================================

Покажи полный текст:

- index integration-flow/README.md;
- index integration/README.md;
- index integration-point/README.md;
- README двух реальных integration-point;
- output/INTEGRATION_OBJECTS_REPORT.md.

Для каждого реального объекта показать:

- исходное название;
- родителя;
- URL;
- ID, если есть;
- источник;
- предметные атрибуты.

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

# Этап 1.2 — безопасная пересборка интеграций

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

## Реализованный механизм временной сборки

## Какие поддеревья были заменены

## Какие каталоги гарантированно не затронуты

## Удалённые ложные объекты

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

## Итоговые integration-flow

## Итоговые integration

## Итоговые integration-point

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

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

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

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

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

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