Загрузка данных
Продолжай работу только в проекте:
/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
## Количество файлов до и после
## Оставшиеся проблемы
После выполнения остановиться.
Не переходить к атрибутам.