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


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

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

Сейчас выполняется только проверка и исправление иерархии каталогов.

Не запускать браузер.
Не обращаться к META.
Не запускать полный exporter.
Не выполнять git commit и git push.
Не изменять интеграции и атрибуты, кроме ссылок, которые необходимо
обновить после изменения пути архитектурного объекта.

Цель:

Проверить, что генератор формирует иерархию:

АС → ФП → Модуль → Подмодуль → ТК

и поддерживает три допустимых варианта:

1. АС → ФП → ТК
2. АС → ФП → Модуль → ТК
3. АС → ФП → Модуль → Подмодуль → ТК

Важно:

- не требуется искусственно создавать все три варианта;
- конкретный ТК должен размещаться только по реально подтверждённой связи;
- если подтверждена только связь ТК → ФП, ТК должен остаться на уровне ФП;
- похожее название объекта не является доказательством связи;
- один META-объект должен существовать только один раз;
- идентичность определять по META ID и META URL;
- названия объектов брать из META;
- не выполнять ручной перевод или русификацию названий.

======================================================================
1. ПРОВЕРИТЬ ТЕКУЩУЮ СТРУКТУРУ
======================================================================

Показать полное дерево:

find projects/SNL/meta/as -type f -name README.md | sort

Проверить фактические пути:

АС:

projects/SNL/meta/as/{AS_NAME}/README.md

ФП:

projects/SNL/meta/as/{AS_NAME}/fp/{FP_NAME}/README.md

Модуль:

projects/SNL/meta/as/{AS_NAME}/fp/{FP_NAME}/module/{MODULE_NAME}/README.md

Подмодуль:

projects/SNL/meta/as/{AS_NAME}/fp/{FP_NAME}/module/{MODULE_NAME}/submodule/{SUBMODULE_NAME}/README.md

ТК уровня АС:

projects/SNL/meta/as/{AS_NAME}/tk/{TK_NAME}/README.md

ТК уровня ФП:

projects/SNL/meta/as/{AS_NAME}/fp/{FP_NAME}/tk/{TK_NAME}/README.md

ТК уровня модуля:

projects/SNL/meta/as/{AS_NAME}/fp/{FP_NAME}/module/{MODULE_NAME}/tk/{TK_NAME}/README.md

ТК уровня подмодуля:

projects/SNL/meta/as/{AS_NAME}/fp/{FP_NAME}/module/{MODULE_NAME}/submodule/{SUBMODULE_NAME}/tk/{TK_NAME}/README.md

Для каждого уровня посчитать количество объектов.

======================================================================
2. ПРОВЕРИТЬ ПОДТВЕРЖДЁННЫЕ СВЯЗИ
======================================================================

Для каждого ТК проверить сохранённые данные:

- README.md;
- META URL;
- META ID;
- breadcrumb;
- temp_html/;
- output/;
- структурные ссылки в HTML;
- ссылки на родительские страницы.

Создать таблицу:

| ТК | META ID | META URL | Подтверждённый родитель | Доказательство | Текущий путь | Требуемый путь |
|---|---:|---|---|---|---|---|

Допустимые значения родителя:

- АС;
- ФП;
- Модуль;
- Подмодуль;
- не определён.

Не определять родителя по совпадению части имени.

Например, наличие в имени ТК слова Integrations не доказывает, что его
родитель — модуль SNL.Integrations.

======================================================================
3. ПРОВЕРИТЬ ТЕКУЩИЕ 24 ТК
======================================================================

Отдельно проверить все 24 ТК, которые сейчас находятся в:

projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/tk/

Для каждого определить:

- подтверждена ли связь с ФП;
- есть ли доказательство связи с конкретным модулем;
- есть ли доказательство связи с конкретным подмодулем.

Если подтверждена только связь с ФП, оставить ТК в текущем каталоге.

Не переносить ТК без доказательства.

======================================================================
4. ПРОВЕРИТЬ ГЕНЕРАТОР
======================================================================

Проверить:

scripts/structured_meta_writer.py
scripts/regenerate_reports.py

Найти код, который выбирает родительский путь для ТК.

Генератор должен использовать следующую логику:

1. Если подтверждён подмодуль:

   as/{AS}/fp/{FP}/module/{MODULE}/submodule/{SUBMODULE}/tk/{TK}/README.md

2. Иначе, если подтверждён модуль:

   as/{AS}/fp/{FP}/module/{MODULE}/tk/{TK}/README.md

3. Иначе, если подтверждён ФП:

   as/{AS}/fp/{FP}/tk/{TK}/README.md

4. Иначе, если подтверждён только АС:

   as/{AS}/tk/{TK}/README.md

5. Если родитель не подтверждён:

   не выдумывать путь;
   не переносить объект автоматически;
   зафиксировать его в отчёте.

Логика должна опираться на ID, URL или структурную связь, а не на название.

======================================================================
5. ПРОВЕРИТЬ ПОДДЕРЖКУ ВСЕХ ТРЁХ КЕЙСОВ
======================================================================

Проверить кодовыми тестами или локальными тестовыми данными, что writer
технически умеет сформировать:

1. АС → ФП → ТК;
2. АС → ФП → Модуль → ТК;
3. АС → ФП → Модуль → Подмодуль → ТК.

Тестовые данные не должны записываться в реальный projects/SNL/meta.

Использовать временный каталог.

После теста временный каталог удалить.

Не создавать вымышленные объекты в итоговой архитектуре.

======================================================================
6. ДЕДУПЛИКАЦИЯ МОДУЛЕЙ И ПОДМОДУЛЕЙ
======================================================================

Проверить, существуют ли несколько каталогов для одного META URL или META ID.

Особенно проверить пары названий на латинице и кириллице.

Если два каталога имеют один META ID или URL:

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

Не объединять объекты с разными META ID или URL.

======================================================================
7. README ОБЪЕКТОВ
======================================================================

Для каждого АС, ФП, модуля, подмодуля и ТК проверить README.md.

README должен содержать минимум:

- название;
- тип объекта;
- META URL;
- META ID, если доступен;
- подтверждённого родителя;
- источник подтверждения родителя.

README не должен быть пустым.

======================================================================
8. СОЗДАТЬ ОТЧЁТ
======================================================================

Создать:

output/HIERARCHY_PLACEMENT_REPORT.md

Структура:

# Проверка размещения архитектурных объектов

## Текущая структура

## АС

## ФП

## Модули

## Подмодули

## Технические компоненты

## Подтверждённые связи

## ТК уровня ФП

## ТК уровня модулей

## ТК уровня подмодулей

## Объекты с неподтверждённым родителем

## Дубли по META ID

## Дубли по META URL

## Поддержка трёх вариантов иерархии

## Требуемые исправления

## Итог

======================================================================
9. ВНЕСТИ МИНИМАЛЬНЫЕ ИСПРАВЛЕНИЯ
======================================================================

После аудита внести только необходимые изменения:

- исправить выбор родительского каталога ТК;
- удалить подтверждённые дубли;
- сохранить уникальные данные;
- предотвратить повторное создание дублей;
- не изменять корректные объекты.

Перед изменением создать резервную копию только изменяемых Python-файлов
с суффиксом:

.before-hierarchy-fix

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

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

Выполнить:

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

python scripts/regenerate_reports.py

Повторно:

python scripts/regenerate_reports.py

После двух запусков проверить:

- структура одинакова;
- число объектов не растёт;
- дубли не восстанавливаются;
- ТК не перемещаются между родителями без изменения исходных данных;
- модули и подмодули не дублируются;
- старые плоские каталоги не восстанавливаются;
- все README остаются непустыми.

Повторно показать:

find projects/SNL/meta/as -type f -name README.md | sort

======================================================================
11. ФИНАЛЬНАЯ СТАТИСТИКА
======================================================================

Вывести:

- количество АС;
- количество ФП;
- количество уникальных модулей;
- количество уникальных подмодулей;
- количество уникальных ТК;
- количество ТК уровня АС;
- количество ТК уровня ФП;
- количество ТК уровня модулей;
- количество ТК уровня подмодулей;
- количество ТК с неподтверждённым родителем;
- количество дублей по META ID;
- количество дублей по META URL.

Для трёх вариантов показать статус:

| Вариант | Поддерживается генератором | Реальные объекты найдены | Доказательство |
|---|---|---|---|
| АС → ФП → ТК | | | |
| АС → ФП → Модуль → ТК | | | |
| АС → ФП → Модуль → Подмодуль → ТК | | | |

Статус «реальные объекты не найдены» не является ошибкой, если в сохранённых
данных META отсутствует соответствующая связь.

======================================================================
12. ФИНАЛЬНЫЙ ОТВЕТ
======================================================================

В конце вывести:

# Проверка иерархии завершена

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

## Фактическая структура

## Подтверждённые связи

## Размещение 24 ТК

## Поддержка трёх вариантов

## Удалённые дубли

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

## Результат первой регенерации

## Результат повторной регенерации

## Идемпотентность

## Требуется ли браузерный прогон

После завершения остановиться.

Не запускать браузер.
Не обращаться к META.
Не выполнять commit и push.