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


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

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

Задача состоит из двух последовательных частей:

1. Привести проект adt-markdownify-meta в точное соответствие техническим требованиям задания.
2. Подготовить проект к размещению в общем корпоративном репозитории: удалить персональные, локальные и внутренние служебные формулировки, не затрагивая реализованную функциональность.

Не добавляй требований от себя.

Не выполнять git commit и git push.

======================================================================
ОБЩИЕ ОГРАНИЧЕНИЯ
======================================================================

Обязательно соблюдать:

- названия объектов и каталогов брать из данных META;
- специально переводить или русифицировать названия нельзя;
- один объект META должен существовать только один раз;
- идентичность объектов определять по META ID и URL;
- если META ID и URL отсутствуют, использовать нормализованное реальное имя объекта, подтверждённое исходными данными;
- похожее название само по себе не является подтверждением идентичности или родительской связи;
- не выдумывать объекты, данные и родительские связи;
- не запускать браузер;
- не обращаться к META без отдельного разрешения;
- использовать уже сохранённые temp_html/, output/ и существующие данные;
- не удалять полезные данные без проверки переноса;
- не переписывать проект с нуля;
- вносить только минимальные изменения, необходимые для выполнения требований;
- не выполнять git reset, git clean, git restore или git stash без отдельного разрешения;
- не изменять посторонние файлы IDE;
- не удалять Ralph Loop;
- не выполнять git commit;
- не выполнять git push.

META должна использоваться только в read-only режиме.

======================================================================
1. ПРЕДВАРИТЕЛЬНЫЙ АУДИТ
======================================================================

До изменения файлов выполни аудит проекта.

Покажи:

- корень Git-репозитория;
- текущую ветку;
- git status --short;
- существующую структуру projects/SNL/meta;
- существующие файлы в output/;
- существующие каталоги hierarchy/, modules/, submodules/,
  technical_components/, integration_interactions/,
  interaction_points/, integration_points/, stands/, tech_resources/;
- список файлов, которые предполагается изменить;
- список абсолютных пользовательских путей;
- список персональных и внутренних служебных формулировок.

Не изменяй файлы до завершения первоначального аудита.

======================================================================
2. ПРОВЕРИТЬ УДАЛЕНИЕ ПАПОК C1–C4
======================================================================

Найди, какие именно каталоги проекта соответствовали папкам C1–C4.

Покажи:

- существовали ли они;
- существуют ли сейчас;
- остались ли ссылки на них в коде, конфигурации или документации.

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

Если C1–C4 уже удалены, зафиксируй статус:

Выполнено.

Если точное соответствие C1–C4 невозможно определить по данным проекта,
зафиксируй:

Требует уточнения: исходные названия C1–C4 не определены.

======================================================================
3. ПЕРЕЙТИ В СУЩЕСТВУЮЩУЮ ВЕТКУ
======================================================================

Определи корень Git-репозитория:

git rev-parse --show-toplevel

Покажи текущую ветку:

git branch --show-current

Проверь наличие существующей ветки:

git branch --list features/adt-markdownify-meta

Ветка features/adt-markdownify-meta уже создана.

Не выполнять:

git checkout -b features/adt-markdownify-meta
git switch -c features/adt-markdownify-meta

Нужно только перейти в существующую ветку:

git checkout features/adt-markdownify-meta

или, если поддерживается:

git switch features/adt-markdownify-meta

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

git branch --show-current
git status --short

Если переход невозможен из-за несохранённых изменений:

- не удалять изменения;
- не выполнять reset, clean, restore или stash;
- показать причину;
- остановиться до дальнейшего разрешения.

Не выполнять commit и push.

======================================================================
4. ПРОВЕРИТЬ ЦЕЛЕВОЙ КАТАЛОГ
======================================================================

Вся итоговая выгруженная архитектура должна находиться в:

projects/SNL/meta

Проверить:

- каталог существует;
- все целевые Markdown-файлы архитектуры находятся внутри него;
- генератор сохраняет архитектуру именно туда;
- повторный запуск не создаёт итоговую архитектуру в output/,
  hierarchy/, modules/ или других альтернативных структурах.

output/ может содержать технические отчёты.

temp_html/ может содержать сохранённые HTML-страницы.

Итоговая архитектура должна находиться только в:

projects/SNL/meta

======================================================================
5. ПРОВЕРИТЬ ИЕРАРХИЮ КАТАЛОГОВ
======================================================================

Требуемая иерархия:

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

Поддерживаемые варианты:

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

Шаблоны каталогов:

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

Правила размещения:

- ТК размещается только у подтверждённого родителя;
- родитель подтверждается только по META URL, META ID, breadcrumb
  или структурной ссылке в сохранённом HTML;
- похожее название не является подтверждением;
- нельзя переносить ТК внутрь модуля или подмодуля без доказательства;
- нельзя создавать одну и ту же ТК на нескольких уровнях.

Если для 24 ТК подтверждён только родитель ФП, они должны находиться здесь:

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

Не переносить их внутрь модулей или подмодулей без подтверждённой связи.

Для отсутствующих в исходных данных связей использовать статус:

Не применимо: связь отсутствует в данных META.

======================================================================
6. ПРОВЕРИТЬ README АРХИТЕКТУРНЫХ ОБЪЕКТОВ
======================================================================

Для каждого реального объекта проверить отдельный README.md:

- АС;
- ФП;
- модуль;
- подмодуль;
- ТК.

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

Минимальное содержание:

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

Требования:

- нельзя создавать два каталога для одного META ID;
- нельзя создавать два каталога для одного META URL;
- названия каталогов должны соответствовать названиям объектов в META;
- не выполнять ручную русификацию;
- не переводить английские названия;
- не заменять названия объектов на придуманные удобные варианты;
- не использовать название страницы или раздела вместо названия объекта.

======================================================================
7. ВЫГРУЗИТЬ ВКЛАДКУ «АТРИБУТЫ»
======================================================================

Проверить выгрузку разделов:

- Карточка АС;
- Ответственность;
- Дополнительные атрибуты;
- Технические атрибуты.

Для АС:

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

Для ФП, если вкладка присутствует:

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

Проверить:

- используются реальные данные из сохранённого HTML;
- данные не подставляются статическим текстом;
- строки таблиц не удаляются;
- заголовки и значения таблиц сохранены;
- данные не заменяются текстом «Не найдено», если они присутствуют;
- данные АС и ФП не смешиваются;
- каждая страница обрабатывается независимо;
- повторная генерация не дублирует таблицы;
- табличный Markdown остаётся валидным.

Формат:

| Поле | Значение |
|---|---|

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

======================================================================
8. ИНТЕГРАЦИИ УРОВНЯ АС
======================================================================

Требуемые пути:

projects/SNL/meta/as/{AS_NAME}/integration-flow/{NAME}/README.md

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

projects/SNL/meta/as/{AS_NAME}/integration-point/{NAME}/README.md

Каждый реальный объект должен находиться в собственном каталоге `{NAME}`.

Нельзя создавать ложные объекты:

- unknown;
- Интеграционные взаимодействия;
- Технологические взаимодействия;
- Точки взаимодействия;
- Стенды;
- другие названия страниц или разделов;
- пустые имена;
- каталоги, созданные только из заголовка страницы.

Если на уровне АС реальные объекты конкретного типа не найдены:

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

======================================================================
9. ИНТЕГРАЦИИ УРОВНЯ ФП
======================================================================

Требуемые пути:

projects/SNL/meta/as/{AS_NAME}/fp/{FP_NAME}/integration-flow/{NAME}/README.md

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

projects/SNL/meta/as/{AS_NAME}/fp/{FP_NAME}/integration-point/{NAME}/README.md

Каждая реальная интеграционная сущность должна иметь отдельный каталог.

Для каждого объекта сохранить доступные поля:

- название;
- тип;
- META URL;
- META ID, если доступен;
- уровень родителя: АС или ФП;
- поставщик;
- потребитель;
- технические компоненты;
- владелец точки;
- API, если присутствует;
- остальные доступные поля.

Пять уже найденных interaction-point должны находиться только на уровне
подтверждённого родителя ФП.

Не создавать их дубли на уровне АС.

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

1. META ID;
2. META URL;
3. нормализованное реальное имя — только при отсутствии ID и URL.

Пустой URL не должен приводить к объединению всех объектов в один.

======================================================================
10. ПРОВЕРИТЬ ДАННЫЕ ИЗ СТАРОЙ СТРУКТУРЫ
======================================================================

Проверить полезные данные вне целевой структуры as/.

Особенно проверить:

- hierarchy/;
- modules/;
- submodules/;
- technical_components/;
- данные страницы «Интеграционные взаимодействия»;
- данные, связанные с ius-request-approval;
- integration_interactions/;
- interaction_points/;
- integration_points/;
- stands/;
- tech_resources/.

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

- старый путь;
- META URL;
- META ID;
- тип страницы;
- существует ли эквивалент в as/;
- полностью ли перенесены данные;
- можно ли безопасно удалить старый файл.

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

Создать отчёт:

output/UNMIGRATED_META_DATA.md

Формат:

| Старый путь | META URL | META ID | Тип данных | Целевой путь | Статус переноса |
|---|---|---:|---|---|---|

Допустимые статусы:

- Перенесено полностью;
- Перенесено частично;
- Не перенесено;
- Дубликат по META ID;
- Дубликат по META URL;
- Требует уточнения;
- Данные отсутствуют.

Удалять старые каталоги разрешается только после подтверждения, что:

- данные перенесены;
- целевые README.md существуют;
- файлы не содержат уникальной информации;
- генератор не восстановит старые каталоги повторно.

======================================================================
11. СТЕНДЫ И ТЕХНИЧЕСКИЕ РЕСУРСЫ
======================================================================

Проверить сохранённые HTML и Markdown-данные на наличие:

- стендов;
- технических ресурсов.

Если реальные данные найдены:

- сохранить их в projects/SNL/meta;
- разместить у подтверждённого родителя;
- создать отдельный README.md для каждого реального объекта;
- сохранить META URL и META ID, если доступны.

Если реальные данные не найдены:

- не создавать вымышленные объекты;
- не создавать ложные пустые дочерние каталоги;
- не ставить статус «Закрыто»;
- перечислить проверенные источники;
- использовать статус «Не применимо» или «Не закрыто» в зависимости
  от наличия исходной страницы.

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

Проверить:

scripts/structured_meta_writer.py
scripts/regenerate_reports.py
scripts/html_to_markdown.py
scripts/integration_interactions_parser.py

Генератор должен:

- формировать только целевую архитектурную структуру;
- использовать реальные сохранённые данные;
- не создавать дубли;
- не создавать ложные интеграционные объекты;
- сохранять таблицы атрибутов;
- размещать ТК только у подтверждённого родителя;
- разделять integration-flow, integration и integration-point;
- разделять уровень АС и уровень ФП;
- не создавать один объект одновременно на уровнях АС и ФП;
- не восстанавливать удалённые старые каталоги;
- быть идемпотентным;
- записывать архитектуру в projects/SNL/meta;
- записывать технические отчёты в output/.

Разрешены минимальные исправления алгоритмов, необходимые для выполнения
этих требований.

Не переписывать проект с нуля.

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

.before-requirements-fix

Резервные копии не должны попадать в итоговую архитектуру или отчёты.

======================================================================
13. ПРОВЕРКИ ФУНКЦИОНАЛЬНОСТИ
======================================================================

Выполнить:

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

Затем:

python scripts/regenerate_reports.py

После завершения выполнить повторно:

python scripts/regenerate_reports.py

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

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

Показать:

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

Показать статистику:

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

======================================================================
14. ОБНОВИТЬ TASK_COVERAGE
======================================================================

Обновить:

output/TASK_COVERAGE.md

Проверять только реальные технические требования:

1. Папки C1–C4 удалены.
2. Архитектура сохранена в projects/SNL/meta.
3. Активна существующая ветка features/adt-markdownify-meta.
4. Создана иерархия АС → ФП → Модуль → Подмодуль → ТК.
5. Поддерживается путь АС → ФП → ТК.
6. Поддерживается путь АС → ФП → Модуль → ТК при наличии связи.
7. Поддерживается путь АС → ФП → Модуль → Подмодуль → ТК при наличии связи.
8. Для реальных объектов созданы README.md.
9. Выгружена вкладка «Атрибуты».
10. Атрибуты сохранены в табличном формате.
11. Integration-flow для АС структурирован.
12. Integration для АС структурирован.
13. Integration-point для АС структурирован.
14. Integration-flow для ФП структурирован.
15. Integration для ФП структурирован.
16. Integration-point для ФП структурирован.
17. Нет ложных объектов и дублей.
18. Повторная генерация идемпотентна.
19. Полезные данные старой структуры перенесены или учтены в отчёте.
20. В отслеживаемых файлах нет персональных абсолютных путей.
21. В проекте нет внутренних персональных формулировок.

Допустимые статусы:

- Закрыто;
- Частично;
- Не закрыто;
- Не применимо: связь отсутствует в данных META;
- Требует уточнения.

Не ставить «Закрыто», если:

- существует только заглушка;
- исходные данные отсутствуют;
- объект не подтверждён META ID или URL;
- данные ещё находятся только в старой структуре;
- повторная генерация восстанавливает старые каталоги.

======================================================================
15. ОЧИСТИТЬ ПРОЕКТ ДЛЯ ОБЩЕГО РЕПОЗИТОРИЯ
======================================================================

Этот этап выполнять только после завершения функциональных исправлений.

На этом этапе запрещено менять:

- алгоритмы парсинга;
- иерархию projects/SNL/meta;
- размещение ТК;
- определение родительских связей;
- генерацию атрибутов;
- интеграционные объекты;
- реальные данные;
- Ralph Loop.

Разрешены:

- изменение формулировок;
- переименование отчёта;
- обновление ссылок;
- удаление персональных и внутренних служебных фраз;
- замена абсолютных пользовательских путей относительными.

----------------------------------------------------------------------
15.1. НАЙТИ ПЕРСОНАЛЬНЫЕ И ВНУТРЕННИЕ УПОМИНАНИЯ
----------------------------------------------------------------------

Выполни поиск по всему проекту, включая скрытые каталоги:

- наставник
- наставника
- наставнику
- mentor
- mentoring
- mentor requirements
- требования наставника
- фидбек наставника
- по словам наставника
- как потребовал наставник
- MENTOR_REQUIREMENTS_REPORT
- mentor_feedback
- mentor-feedback
- куратор
- стажировка
- моё задание
- мне сказали
- пользователь попросил
- готово для наставника
- ожидаю дальнейших указаний
- остановился и жду подтверждения
- наш проект
- мы решили

Проверить:

- Python-код;
- комментарии;
- docstring;
- README.md;
- SKILL.md;
- MAIN_GOAL.md;
- AGENTS.md;
- конфигурационные файлы;
- scripts/;
- docs/;
- output/;
- projects/SNL/meta/;
- .gigacode/;
- шаблоны отчётов;
- генерируемые строки и заголовки.

Сначала показать список найденных файлов и строк.

----------------------------------------------------------------------
15.2. ЗАМЕНИТЬ ФОРМУЛИРОВКИ НА НЕЙТРАЛЬНЫЕ
----------------------------------------------------------------------

Использовать нейтральные формулировки:

- «требования наставника» → «требования задания»
- «фидбек наставника» → «результаты проверки»
- «проверка требований наставника» → «проверка требований»
- «готовность наставнику» → «готовность результата»
- «что требует наставник» → «что требуется по заданию»
- «по указанию наставника» → «согласно требованиям»
- «согласовать с наставником» → «требует уточнения»
- «для демонстрации наставнику» → «для итоговой проверки»
- «ожидаю дальнейших указаний» → «проверка завершена»
- «остановился и жду подтверждения» → «требует уточнения»
- «по твоим словам» → удалить или заменить доказательством из данных
- «мы решили» → «принятое техническое решение»
- «наш проект» → «проект»
- «выполняем совет наставника» → «выполняются требования задания»

Не использовать в новых текстах:

- наставник;
- mentor;
- куратор;
- стажировка;
- моё задание;
- мне сказали;
- пользователь попросил.

Технические требования нельзя удалять. Они должны называться:

- требования задания;
- требования экспорта;
- критерии готовности;
- критерии проверки.

----------------------------------------------------------------------
15.3. ПЕРЕИМЕНОВАТЬ ОТЧЁТ
----------------------------------------------------------------------

Если существует:

output/MENTOR_REQUIREMENTS_REPORT.md

переименовать в:

output/REQUIREMENTS_REPORT.md

Обновить ссылки в:

- Python-скриптах;
- README.md;
- SKILL.md;
- MAIN_GOAL.md;
- AGENTS.md;
- TASK_COVERAGE.md;
- остальных отчётах;
- генераторах отчётов.

Заголовок файла:

# Проверка требований

Не оставлять файл:

output/MENTOR_REQUIREMENTS_REPORT.md

Если отчёт создаётся программно, изменить имя и заголовок в генераторе,
а не только переименовать существующий Markdown-файл.

----------------------------------------------------------------------
15.4. УБРАТЬ ЛОКАЛЬНЫЕ И ПЕРСОНАЛЬНЫЕ ДАННЫЕ
----------------------------------------------------------------------

Проверить текстовые файлы на наличие:

/Users/23865613/
/Users/23865613/IdeaProjects/untitled/zadanie2
/Users/23865613/snl-ai-spec

В документации, отчётах, примерах и комментариях заменить абсолютные пути
относительными:

- корень проекта;
- .gigacode/skills/adt-markdownify-meta;
- projects/SNL/meta;
- output/;
- temp_html/.

Также удалить из отслеживаемых файлов:

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

Не удалять технические настройки SberBrowser, если они необходимы
для запуска проекта.

Локальный конфигурационный файл может содержать локальный путь только если:

- он исключён через .gitignore;
- это явно зафиксировано в отчёте;
- в отслеживаемых файлах этого пути нет.

======================================================================
16. ФИНАЛЬНЫЕ ПРОВЕРКИ ПОСЛЕ ОЧИСТКИ
======================================================================

Выполнить:

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

Если изменялся генератор отчётов:

python scripts/regenerate_reports.py

После этого проверить отсутствие персональных формулировок:

grep -RniE \
'наставник|наставника|наставнику|mentor|mentoring|MENTOR_REQUIREMENTS_REPORT|фидбек наставника|требования наставника|куратор|стажировка|моё задание|мне сказали|пользователь попросил' \
. \
--exclude-dir=.git \
--exclude-dir=.venv \
--exclude-dir=__pycache__ \
--exclude-dir=.local-backup

Ожидаемый результат: совпадений нет.

Проверить абсолютные пути:

grep -RniE \
'/Users/23865613|IdeaProjects/untitled/zadanie2|/Users/23865613/snl-ai-spec' \
. \
--exclude-dir=.git \
--exclude-dir=.venv \
--exclude-dir=__pycache__ \
--exclude-dir=.local-backup

В отслеживаемых документах, коде, отчётах и примерах совпадений быть не должно.

Проверить Git-состояние:

git branch --show-current
git status --short
git diff --stat
git diff --name-status

Не выполнять commit и push.

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

Создать:

output/REQUIREMENTS_REPORT.md

Структура:

# Проверка требований

## Папки C1–C4

## Целевой каталог projects/SNL/meta

## Активная Git-ветка

## Иерархия

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

## README архитектурных объектов

## Атрибуты

## Интеграции уровня АС

## Интеграции уровня ФП

## Неперенесённые данные

## Стенды

## Технические ресурсы

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

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

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

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

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

## Проверка идемпотентности

## Очистка внутренних формулировок

## Проверка абсолютных путей

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

## Итоговая таблица соответствия

Итоговая таблица:

| Требование задания | Статус | Доказательство |
|---|---|---|

В финале явно указать:

- какие файлы изменены;
- какие файлы переименованы;
- какие файлы удалены;
- какие резервные копии созданы;
- какая ветка активна;
- сколько объектов каждого типа создано;
- сколько объектов каждого типа найдено на уровнях АС и ФП;
- какие требования полностью выполнены;
- какие выполнены частично;
- какие не закрыты;
- какие не применимы из-за отсутствия связей в META;
- какие данные ещё остаются вне as/;
- остались ли ложные объекты;
- остались ли дубли;
- остались ли персональные формулировки;
- остались ли абсолютные пользовательские пути;
- требуется ли повторный браузерный прогон;
- требуется ли ручная проверка.

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

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