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


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

/Users/23865613/IdeaProjects/untitled/adt-markdownify-meta-mvp

Контекст:
Проект уже умеет выгружать данные из META в Markdown и создавать отчеты в output/*.md.

Теперь пришел фидбек от наставника. Нужно доработать skill так, чтобы выгруженная архитектура сохранялась не только в output/*.md, но и в структурированной папке:

projects/SNL/meta

Важно:
- Не переписывай проект с нуля.
- Не ломай текущую выгрузку output/*.md.
- Не удаляй существующие функции.
- Не используй API META.
- Не используй requests/httpx/aiohttp/urllib для обращения к META.
- Не добавляй token/cookie/login/password.
- Не сохраняй cookies/sessionStorage/localStorage.
- Авторизация только вручную через SberBrowser.
- Skill остается read-only.
- Не создавай, не редактируй и не удаляй объекты META.

Нужно реализовать новый слой сохранения архитектуры в файловую структуру.

Перед изменениями:
1. Перейди в проект:
cd /Users/23865613/IdeaProjects/untitled/adt-markdownify-meta-mvp

2. Создай отдельную ветку, если ее еще нет:
git checkout -b features/adt-markdownify-meta

Если ветка уже существует, просто переключись на нее:
git checkout features/adt-markdownify-meta

3. Проверь текущую структуру:
find . -maxdepth 4 -type f | sort

4. Найди и удали только старые временные папки C1, C2, C3, C4, если они есть в корне проекта. Если таких папок нет — ничего не делай.

---

## Цель доработки

Нужно сохранять выгруженную архитектуру в:

projects/SNL/meta

Структура должна соответствовать иерархии META:

АС > ФП > Модуль > Подмодуль > Тех-компонент

Возможные кейсы:
1. АС > ФП > ТК
2. АС > ФП > Модуль > ТК
3. АС > ФП > Модуль > Подмодуль > ТК

---

## Часть 1. Добавить генератор структуры каталогов

Создай новый файл:

scripts/structured_meta_writer.py

В нем реализуй функции:

1. safe_dir_name(name: str) -> str

Функция должна делать безопасное имя папки:
- заменять "/" на "-"
- заменять ":" на "-"
- заменять пробелы на "_"
- удалять лишние символы, которые ломают путь
- не делать пустое имя

2. write_structured_meta_export(output_dir: str, structured_dir: str) -> None

Где:
- output_dir = "output"
- structured_dir = "projects/SNL/meta"

Функция должна брать уже созданные Markdown-отчеты из output и создавать структурированную папку projects/SNL/meta.

---

## Часть 2. Создать базовую структуру АС и ФП

Нужно создать:

projects/SNL/meta/README.md

Содержимое:

# META architecture export

## Назначение

Выгрузка архитектуры META в Markdown.

## Корневая АС

- SberGeo

## Функциональная подсистема

- SberGeo.СНЛ

## Состав выгрузки

- Иерархия архитектуры
- Атрибуты
- Точки взаимодействия
- Интеграционные взаимодействия
- Технологические взаимодействия
- Стенды
- Технические ресурсы

Создать:

projects/SNL/meta/as/SberGeo/README.md

Содержимое должно включать:
- название АС;
- ссылку на исходную страницу META, если она есть в meta_urls.txt;
- краткую информацию из output/HIERARCHY.md;
- раздел "Функциональные подсистемы".

Создать:

projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/README.md

Содержимое должно включать:
- название ФП;
- ссылку на исходную страницу META, если она есть в meta_urls.txt;
- разделы:
  - Модули
  - Подмодули
  - Технические компоненты
  - Интеграции
  - Стенды
  - Атрибуты

---

## Часть 3. Разложить модули по папкам

Из output/HIERARCHY.md или output/ARCHITECTURE_TREE.md извлеки найденные модули.

Для каждого модуля создай:

projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/module/{MODULE_NAME}/README.md

Например:

projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/module/СНЛ.Sowa_SIGMA/README.md
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/module/СНЛ.AI/README.md
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/module/СНЛ.Интеграции/README.md

В README.md модуля должно быть:

# {MODULE_NAME}

## Тип объекта

Модуль

## Родитель

SberGeo.СНЛ

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

Список ТК, если удалось определить связь.

Если связь ТК с модулем не определена, честно написать:

Технические компоненты модуля не определены в текущей выгрузке.

---

## Часть 4. Разложить подмодули

Если в output/HIERARCHY.md или output/ARCHITECTURE_TREE.md найдены подмодули, создай:

projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/module/{MODULE_NAME}/submodule/{SUBMODULE_NAME}/README.md

Если подмодули не найдены, создай в README.md ФП раздел:

## Подмодули

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

Не выдумывай подмодули.

---

## Часть 5. Разложить технические компоненты

Из output/TECH_RESOURCES.md или output/HIERARCHY.md извлеки технические компоненты.

Для каждого ТК создай папку.

Если ТК связан только с АС:

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

Если ТК связан с ФП:

projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/tk/{TK_NAME}/README.md

Если связь с модулем известна:

projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/module/{MODULE_NAME}/tk/{TK_NAME}/README.md

Если связь с подмодулем известна:

projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/module/{MODULE_NAME}/submodule/{SUBMODULE_NAME}/tk/{TK_NAME}/README.md

Если точную связь определить нельзя, используй безопасный вариант:

projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/tk/{TK_NAME}/README.md

В README.md каждого ТК должно быть:

# {TK_NAME}

## Тип объекта

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

## Родитель

SberGeo.СНЛ

## Источник данных

Указать, из какого output/*.md был найден объект.

---

## Часть 6. Выгрузка вкладки "Атрибуты"

Нужно добавить поддержку атрибутов.

Если в выгруженном HTML/Markdown есть вкладка или раздел "Атрибуты", нужно сформировать:

projects/SNL/meta/as/SberGeo/attributes/README.md
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/attributes/README.md

Внутри должны быть разделы:

# Атрибуты

## Карточка АС / Карточка ФП

Таблица Markdown.

## Ответственность

Таблица Markdown.

## Дополнительные атрибуты

Таблица Markdown.

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

Таблица Markdown.

Важно:
- Сохранять табличный формат.
- Если таблица не найдена, писать:
"Данные не найдены в текущей выгрузке."
- Не выдумывать значения.

Также создай сводный отчет:

output/ATTRIBUTES.md

Он должен содержать найденные атрибуты в табличном формате.

---

## Часть 7. Разложить интеграции по каталогам

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

### Инфопотоки

Для АС:

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

Для ФП:

projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/integration-flow/{NAME}/README.md

Источник данных:
- output/INTERACTIONS.md
- страницы META, где есть инфопотоки

Если инфопотоки не найдены, создать:

projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/integration-flow/README.md

с текстом:

Инфопотоки не найдены в текущей выгрузке.

### Интеграционные взаимодействия

Для АС:

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

Для ФП:

projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/integration/{NAME}/README.md

Источник данных:
- output/INTEGRATION_INTERACTIONS.md
- URL /integrationInteractions

Если структурные строки не распознаны, использовать fallback: брать найденные названия/строки из Markdown.

### Точки взаимодействия

Для АС:

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

Для ФП:

projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/integration-point/{NAME}/README.md

Источник данных:
- output/INTERACTION_POINTS.md
- URL /interactionPoints

Если таблица не распознана, использовать fallback: брать найденные названия/строки из Markdown.

---

## Часть 8. Обновить основной запуск

В scripts/scrape_meta.py после формирования output/*.md добавь вызов:

write_structured_meta_export(
    output_dir="output",
    structured_dir="projects/SNL/meta"
)

Если пути берутся из конфига — добавь в meta_exporter.yaml.example новую настройку:

structured_output_dir: "projects/SNL/meta"

И используй ее.

---

## Часть 9. Обновить README.md

Добавь раздел:

## Структурированная выгрузка архитектуры

После запуска skill создает не только отчеты в output/, но и структурированную архитектуру в:

projects/SNL/meta

Пример структуры:

projects/SNL/meta/as/SberGeo/README.md
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/README.md
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/module/{MODULE_NAME}/README.md
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/tk/{TK_NAME}/README.md
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/integration/{NAME}/README.md
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/integration-point/{NAME}/README.md
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/integration-flow/{NAME}/README.md
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/attributes/README.md

---

## Часть 10. Обновить SKILL.md

Добавь, что skill формирует:

1. Сводные отчеты в output/*.md
2. Структурированную архитектуру в projects/SNL/meta

И что структура соответствует:

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

---

## Часть 11. Проверка

Выполни py_compile для всех Python-файлов:

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

Потом выполни тестовый запуск:

source .venv/bin/activate
python run_exporter.py

После запуска проверь:

find projects/SNL/meta -maxdepth 8 -type f | sort

Проверь, что появились:

projects/SNL/meta/README.md
projects/SNL/meta/as/SberGeo/README.md
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/README.md
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/attributes/README.md

А также папки:

projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/module/
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/tk/
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/integration/
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/integration-point/
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/integration-flow/

---

## Финальный отчет

В конце покажи:

# Итог доработки структурированной выгрузки META

## 1. Что сделал

## 2. Где теперь сохраняется архитектура

Указать:

projects/SNL/meta

## 3. Какая структура каталогов создана

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

find projects/SNL/meta -maxdepth 6 -type f | sort

## 4. Какие файлы изменены

## 5. Какие файлы добавлены

## 6. Как закрыт фидбек наставника

Таблица:

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

Строки:
- Удалить C1-4
- Сохранить архитектуру в projects/SNL/meta
- Отпочковаться в ветку features/adt-markdownify-meta
- Группировать АС > ФП > Модуль > Подмодуль > ТК
- Группировать ТК по каталогам
- Выгружать вкладку Атрибуты
- Сохранять атрибуты в табличном формате
- Разложить инфопотоки
- Разложить интеграционные взаимодействия
- Разложить точки взаимодействия

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

## 8. Результат тестового запуска

## 9. Готовность

Честно напиши, готов ли проект к повторному показу наставнику.