Загрузка данных
Ты работаешь только в проекте:
/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.