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


Ты работаешь на корпоративном MacBook.

Исходный рабочий проект находится здесь:

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

Важно:
Этот проект уже запускается и успешно выгружает страницу META через SberBrowser в Markdown.
Его нельзя ломать.
Его нельзя удалять.
Его нельзя переписывать поверх.

Задача:
Создать копию текущего проекта рядом с ним, добавив в название слово mvp:

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

После создания копии работать только в новой папке:

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

Старый проект:

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

не изменять.

Контекст задания:
Нужно реализовать MVP skill-а для выгрузки страниц META в Markdown.

Исходное требование второго задания:
Скилл должен уметь выгружать в markdown-файлы текущую архитектуру АС из META:

1. Иерархия:
   АС > ФП > Модуль > Подмодуль > Тех-компонент

2. Точки взаимодействия / интеграции

3. Дополнительная архитектурная информация со страниц META

Текущий проект уже умеет:
- читать meta_urls.txt;
- запускаться через SberBrowser;
- открывать страницу META;
- получать HTML через page.content();
- сохранять сырой HTML в temp_html/;
- конвертировать HTML в Markdown;
- сохранять Markdown в output/;
- создавать output/README.md;
- не использовать API;
- не использовать requests/httpx/aiohttp/urllib;
- не использовать token/cookie/login/password;
- не сохранять credentials.

Главная задача сейчас:
Не переписывать проект с нуля, а аккуратно довести копию до более завершённого MVP.

Ограничения:
- Не используй API META.
- Не добавляй requests.
- Не добавляй httpx.
- Не добавляй aiohttp.
- Не добавляй urllib.
- Не добавляй token.
- Не добавляй cookie.
- Не добавляй login/password.
- Не сохраняй cookies.
- Не сохраняй localStorage/sessionStorage.
- Не добавляй PDF.
- Не добавляй pdfplumber.
- Не меняй старый проект.
- Не удаляй рабочую browser-логику через SberBrowser.
- Не добавляй Safari.
- Не добавляй CDP existing mode, если его сейчас нет или он не нужен.
- Не запускай массовую выгрузку без необходимости.
- Все изменения делай только в adt-markdownify-meta-mvp.

Шаг 1. Создай копию проекта

Выполни:

cd /Users/23865613/IdeaProjects/untitled
cp -R adt-markdownify-meta adt-markdownify-meta-mvp
cd adt-markdownify-meta-mvp

Проверь, что находишься именно в:

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

Покажи результат:

pwd
ls -la

Шаг 2. Проанализируй текущую реализацию

Проанализируй файлы:

- run_exporter.py
- meta_exporter.yaml
- meta_exporter.yaml.example
- meta_urls.txt
- requirements.txt
- README.md
- SKILL.md
- scripts/config_loader.py
- scripts/scrape_meta.py
- scripts/html_to_markdown.py
- scripts/markdown_writer.py
- output/README.md
- output/*.md
- temp_html/*.html

Нужно понять:
1. Как запускается проект.
2. Как читается конфиг.
3. Как читаются URL.
4. Как запускается браузер.
5. Как получается HTML.
6. Как HTML превращается в Markdown.
7. Как пишутся файлы в output.
8. Какие данные META уже извлекаются.
9. Какие требования второго задания уже закрыты.
10. Какие требования закрыты частично.
11. Чего не хватает для ощущения полноценного MVP.

Сначала дай краткий отчёт:

# Анализ текущего проекта adt-markdownify-meta-mvp

## 1. Как устроен запуск

## 2. Как устроена выгрузка META

## 3. Что уже работает

## 4. Что закрывает требования второго задания

## 5. Что закрыто частично

## 6. Чего не хватает для полноценного MVP

После этого переходи к доработкам.

Шаг 3. Добавь файл итогового отчёта EXPORT_REPORT.md

Нужно реализовать создание файла:

output/EXPORT_REPORT.md

Он должен создаваться после каждого запуска.

В отчёте должны быть:

# Отчёт по выгрузке META

## Общий результат

- Всего страниц в meta_urls.txt: X
- Успешно выгружено: Y
- Ошибок: Z
- Дата/время выгрузки: YYYY-MM-DD HH:MM:SS

## Успешно выгруженные страницы

| № | Название | URL | Markdown | HTML |
|---|---|---|---|---|

## Ошибки выгрузки

| № | Название | URL | Ошибка |
|---|---|---|---|

## Созданные файлы

- output/README.md
- output/ARCHITECTURE_TREE.md
- output/INTERACTIONS.md
- output/*.md
- temp_html/*.html

Если ошибок нет, написать:

Ошибок не обнаружено.

Технически можно добавить функцию в scripts/markdown_writer.py:

write_export_report(output_dir: str, exported_files: list, failed_files: list, total: int) -> Path

И вызывать её из scripts/scrape_meta.py после завершения обработки всех URL.

Шаг 4. Добавь общий файл архитектуры ARCHITECTURE_TREE.md

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

output/ARCHITECTURE_TREE.md

Цель:
Чтобы проект выглядел как выгрузка архитектуры, а не просто сохранение одной страницы.

Файл должен содержать:

# Иерархия архитектуры META

Источник данных: выгруженные Markdown/HTML страницы META.

## Обнаруженные объекты

Далее список объектов, найденных в Markdown.

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

## Автоматизированные системы

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

## Модули

## Подмодули

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

Если тип объекта точно определить нельзя, добавить раздел:

## Прочие найденные объекты

Требования:
- Не придумывать данные.
- Использовать только то, что реально есть в выгруженном Markdown/HTML.
- Если точная иерархия не восстановлена, прямо написать:
  "Точная вложенность объектов требует дополнительной выгрузки страниц модулей, подмодулей и технических компонентов."
- Но всё равно сохранить найденные объекты списком.

Можно реализовать простую функцию:

build_architecture_tree(output_dir: str, exported_files: list) -> Path

Она может:
- читать созданные Markdown-файлы;
- искать раздел "Структура";
- вытаскивать строки-элементы списка;
- убирать дубли;
- записывать их в ARCHITECTURE_TREE.md.

Шаг 5. Добавь файл INTERACTIONS.md

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

output/INTERACTIONS.md

Цель:
Показать, что проект учитывает требование по точкам взаимодействия/интеграциям.

Файл должен содержать:

# Точки взаимодействия и интеграции META

Источник данных: выгруженные Markdown/HTML страницы META.

## Найденные разделы интеграций

Собрать всё, что удалось найти по словам:

- Интеграции
- Точки взаимодействия
- API
- Взаимодействия
- Интеграционные взаимодействия

Если найдены ссылки, сохранить их списком.

Если точные точки взаимодействия не найдены, написать честно:

"В текущей выгрузке не найдены детальные карточки точек взаимодействия. Для полноценной выгрузки нужно добавить в meta_urls.txt ссылки на страницы интеграций или точки взаимодействия из META."

Но файл всё равно должен создаваться.

Можно реализовать функцию:

build_interactions_report(output_dir: str, exported_files: list) -> Path

Шаг 6. Улучши output/README.md

Сейчас output/README.md должен стать не просто списком файлов, а индексом результата.

Сделай структуру:

# META export

## Что выгружено

- Markdown-файлы страниц META
- Сырые HTML-файлы
- Общая иерархия архитектуры
- Отчёт по интеграциям
- Технический отчёт по выгрузке

## Основные файлы

- [Иерархия архитектуры](ARCHITECTURE_TREE.md)
- [Точки взаимодействия и интеграции](INTERACTIONS.md)
- [Отчёт по выгрузке](EXPORT_REPORT.md)

## Выгруженные страницы

- [Название страницы](filename.md) — URL

Шаг 7. Улучши README.md проекта

README.md должен выглядеть как нормальная инструкция к MVP.

Обнови README.md так, чтобы там были разделы:

# adt-markdownify-meta-mvp

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

Проект выгружает страницы META в Markdown через браузерный доступ.

## Что умеет MVP

- читает список страниц из meta_urls.txt;
- открывает страницы META через SberBrowser;
- получает HTML через page.content();
- сохраняет HTML в temp_html/;
- конвертирует HTML в Markdown;
- сохраняет Markdown в output/;
- формирует output/README.md;
- формирует output/ARCHITECTURE_TREE.md;
- формирует output/INTERACTIONS.md;
- формирует output/EXPORT_REPORT.md.

## Что не делает

- не использует API;
- не использует requests/httpx/aiohttp/urllib;
- не сохраняет токены;
- не сохраняет cookies;
- не сохраняет логины/пароли;
- не работает с PDF;
- не выгружает данные вне открытых пользователем страниц META.

## Установка

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

## Настройка

cp meta_exporter.yaml.example meta_exporter.yaml

Проверить путь к SberBrowser в meta_exporter.yaml:

/Applications/SberBrowser.app/Contents/MacOS/SberBrowser

## Настройка ссылок

Открыть meta_urls.txt и добавить страницы META в формате:

Название страницы - https://meta.sberbank.ru/...

## Запуск

source .venv/bin/activate
python run_exporter.py

## Результат

После запуска будут созданы:

- output/*.md
- output/README.md
- output/ARCHITECTURE_TREE.md
- output/INTERACTIONS.md
- output/EXPORT_REPORT.md
- temp_html/*.html

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

python -m py_compile run_exporter.py scripts/config_loader.py scripts/scrape_meta.py scripts/html_to_markdown.py scripts/markdown_writer.py

## Ограничения MVP

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

Шаг 8. Улучши SKILL.md

SKILL.md должен описывать skill как законченную сущность:

# adt-markdownify-meta-mvp

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

Выгрузка страниц META в Markdown для последующего анализа архитектуры АС.

## Входные данные

- meta_urls.txt
- meta_exporter.yaml

## Выходные данные

- output/*.md
- output/README.md
- output/ARCHITECTURE_TREE.md
- output/INTERACTIONS.md
- output/EXPORT_REPORT.md
- temp_html/*.html

## Основной сценарий

1. Пользователь добавляет ссылки META в meta_urls.txt.
2. Пользователь запускает проект.
3. Проект открывает страницы через браузер.
4. Проект сохраняет HTML.
5. Проект конвертирует HTML в Markdown.
6. Проект формирует индекс, отчёт, иерархию и интеграции.

## Безопасность

- API не используется.
- Токены не используются.
- Cookies не сохраняются.
- Логины и пароли не сохраняются.
- Авторизация происходит вручную в браузере.

## Ограничения

- MVP работает только с доступными пользователю страницами META.
- Полнота архитектурной иерархии зависит от списка URL.
- Для полной выгрузки точек взаимодействия нужны ссылки на соответствующие страницы META.

Шаг 9. Не меняй requirements.txt без необходимости

Не добавляй новые зависимости, если можно сделать стандартной библиотекой.

Если текущий проект уже использует beautifulsoup4/html2text и они есть в requirements.txt, не удаляй их.
Но не добавляй ничего лишнего.

Шаг 10. Проверка после доработок

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

python -m py_compile run_exporter.py scripts/config_loader.py scripts/scrape_meta.py scripts/html_to_markdown.py scripts/markdown_writer.py

Потом можно выполнить один тестовый запуск, если проект уже был успешно настроен и meta_exporter.yaml существует:

source .venv/bin/activate
python run_exporter.py

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

Шаг 11. Финальный отчёт

В конце дай отчёт:

# adt-markdownify-meta-mvp готовность

## 1. Где создана копия проекта

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

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

## 4. Что теперь умеет MVP

## 5. Какие требования второго задания закрыты

## 6. Что осталось ограничением MVP

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

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

## 9. Какие команды пользователю выполнить вручную

Команды для пользователя:

cd /Users/23865613/IdeaProjects/untitled/adt-markdownify-meta-mvp
source .venv/bin/activate
python run_exporter.py

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

ls -la output
ls -la temp_html
open output/README.md
open output/ARCHITECTURE_TREE.md
open output/INTERACTIONS.md
open output/EXPORT_REPORT.md