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