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


Ты работаешь в старом проекте-образце, который уже есть локально.

Задача:
Проанализировать текущий проект как основу для выполнения моей второй задачи на стажировке:

"Реализовать выгрузку МЕТА в Markdown"

Контекст второй задачи:
Нужно реализовать skill `.gigacode/skills/adt-markdownify-meta`.

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

Нужная информация из META:
1. Иерархия:
   АС > ФП > Модуль > Подмодуль > Технический компонент
2. Точки взаимодействия
3. Интеграционные взаимодействия
4. API
5. Стенды
6. Технические ресурсы
7. Ссылки на исходные страницы META

Важно:
Сейчас ничего не изменяй в проекте.
Ничего не удаляй.
Ничего не запускай на запись.
Ничего не коммить.
Не скачивай зависимости.
Не запускай полный scraping.
Только читай файлы, анализируй код и подготовь отчёт.

Нужно понять:
можно ли на базе этого старого проекта сделать новый skill для META, какие части можно переиспользовать, какие части надо заменить, и какой конкретный план действий выполнить.

Проанализируй проект полностью, но в первую очередь проверь эти файлы, если они есть:

1. README.md
2. SKILL.md
3. requirements.txt
4. *.yaml.example
5. run_scraper.py / run_exporter.py / главный entrypoint
6. scripts/*.py
7. .gitignore
8. входные файлы со ссылками, если есть
9. папки output / temp / temp_html, если есть

Нужно найти и описать:

## 1. Назначение старого проекта

Опиши:
- для чего создан старый проект;
- какие входные данные принимает;
- какой результат создаёт;
- куда сохраняет результат;
- какие ограничения у проекта.

## 2. Структура старого проекта

Сделай дерево проекта.

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

## 3. Точка входа

Найди главный файл запуска.

Опиши:
- какой файл запускается;
- какая функция main;
- как читается конфиг;
- как запускается основная логика;
- как обрабатываются ошибки.

## 4. Конфигурация

Найди YAML-конфиг или YAML example.

Опиши:
- как называется конфиг;
- где он лежит;
- как проект его ищет;
- какие поля там есть;
- какие поля отвечают за браузер;
- какие поля отвечают за входные ссылки;
- какие поля отвечают за output;
- какие поля отвечают за retry/timeout/delay.

Отдельно предложи, каким должен быть новый конфиг для META:

meta_exporter.yaml.example

Нужно предусмотреть поля:
- mode
- meta_urls_file
- output_dir
- temp_html_dir
- browser.type
- browser.path_to_exe
- browser_settings.headless
- browser_settings.slow_mo
- browser_settings.viewport_width
- browser_settings.viewport_height
- browser_settings.wait_until
- browser_settings.page_load_timeout
- scraping.max_retries
- scraping.retry_delay
- scraping.request_delay

## 5. Входные ссылки

Найди, как старый проект читает файл со ссылками.

Опиши:
- как называется входной файл;
- какой формат строк;
- поддерживаются ли комментарии;
- поддерживаются ли пустые строки;
- поддерживается ли формат "Название - URL";
- что происходит при ошибочной строке.

Для нового META skill предложи формат:

Название страницы META - URL

Например:

SberGeo Functional Subsystem - https://meta.sberbank.ru/meta/earp/functionalSubsystem/236500

## 6. Работа с браузером

Найди:
- где используется Playwright;
- где вызывается sync_playwright;
- где запускается Chromium/SberBrowser;
- где указывается executable_path;
- где создаётся context;
- где создаётся page;
- где вызывается page.goto;
- какие timeout и wait_until используются;
- какие browser args используются.

Выполни поиск по проекту:

grep -R "sync_playwright" -n .
grep -R "chromium.launch" -n .
grep -R "executable_path" -n .
grep -R "new_context" -n .
grep -R "new_page" -n .
grep -R "page.goto" -n .
grep -R "wait_until" -n .
grep -R "timeout" -n .
grep -R "sberbrowser" -n .
grep -R "SberBrowser" -n .

Опиши, как именно старый проект открывает страницу.

## 7. Что старый проект получает со страницы

Опиши:
- он получает HTML страницы или PDF;
- он кликает по кнопкам или просто читает страницу;
- какие selectors используются;
- есть ли wait_for_selector;
- есть ли expect_download;
- есть ли page.content;
- есть ли inner_html;
- есть ли сохранение HTML.

Выполни поиск:

grep -R "wait_for_selector" -n .
grep -R "expect_download" -n .
grep -R "download" -n .
grep -R "page.content" -n .
grep -R "inner_html" -n .
grep -R "inner_text" -n .
grep -R "locator" -n .
grep -R "click" -n .

## 8. Конвертация в Markdown

Найди:
- как старый проект формирует Markdown;
- какие библиотеки использует;
- есть ли markdownify;
- есть ли html2text;
- есть ли BeautifulSoup;
- есть ли pdfplumber;
- как называется итоговый файл;
- как очищается имя файла.

Выполни поиск:

grep -R "markdown" -n .
grep -R "markdownify" -n .
grep -R "html2text" -n .
grep -R "BeautifulSoup" -n .
grep -R "pdfplumber" -n .
grep -R "safe_filename" -n .
grep -R "write_text" -n .

Для нового META skill предложи:
- что использовать для HTML -> Markdown;
- как сохранять raw HTML;
- как сохранять Markdown;
- как формировать output/README.md.

## 9. Обработка ошибок

Опиши:
- есть ли retry;
- сколько попыток;
- есть ли retry_delay;
- есть ли request_delay;
- падает ли весь проект при ошибке одной ссылки;
- продолжает ли проект со следующей ссылкой;
- закрывается ли page;
- закрывается ли browser.

Выполни поиск:

grep -R "max_retries" -n .
grep -R "retry" -n .
grep -R "retry_delay" -n .
grep -R "request_delay" -n .
grep -R "try:" -n scripts
grep -R "except" -n scripts
grep -R "browser.close" -n .
grep -R "page.close" -n .

## 10. Авторизация и безопасность

Проверь:
- есть ли login/password/token;
- есть ли cookie;
- есть ли localStorage/sessionStorage;
- есть ли сохранение профиля браузера;
- есть ли .env;
- есть ли python-dotenv;
- есть ли опасные места.

Выполни поиск:

grep -R "login" -n .
grep -R "password" -n .
grep -R "token" -n .
grep -R "cookie" -n .
grep -R "localStorage" -n .
grep -R "sessionStorage" -n .
grep -R "dotenv" -n .
grep -R ".env" -n .

Важно:
Для нового META skill нельзя сохранять token/cookie/login/password.

## 11. Что нужно сделать для второй задачи стажировки

На основе анализа подготовь конкретный план реализации нового skill:

`.gigacode/skills/adt-markdownify-meta`

План должен быть по шагам:

Шаг 1. Создать структуру проекта.
Шаг 2. Сделать requirements.txt.
Шаг 3. Сделать meta_exporter.yaml.example.
Шаг 4. Сделать meta_urls.txt.
Шаг 5. Сделать config_loader.py.
Шаг 6. Сделать scrape_meta.py.
Шаг 7. Сделать html_to_markdown.py.
Шаг 8. Сделать markdown_writer.py.
Шаг 9. Сделать run_exporter.py.
Шаг 10. Сделать README.md.
Шаг 11. Сделать SKILL.md.
Шаг 12. Проверить синтаксис.
Шаг 13. Проверить запуск на одной странице META.

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

## 12. Что переиспользовать из старого проекта

Сделай таблицу:

| Часть старого проекта | Можно переиспользовать? | Как использовать для META |
|---|---|---|

Обязательно оцени:
- структуру проекта;
- YAML-конфиг;
- поиск конфига;
- чтение входных URL;
- запуск SberBrowser;
- page.goto;
- retry;
- delay;
- output;
- safe_filename;
- Markdown writer;
- PDF download;
- PDF to Markdown.

## 13. Что НЕ переносить

Сделай отдельный список того, что не нужно переносить в META skill:

- PDF download;
- логика резюме;
- кнопка "Резюме";
- pdfplumber;
- данные кандидатов;
- всё, что связано с HR.

## 14. Предложи итоговую архитектуру нового skill

Опиши, какой должна быть итоговая архитектура:

adt-markdownify-meta/
├── README.md
├── SKILL.md
├── requirements.txt
├── meta_exporter.yaml.example
├── meta_urls.txt
├── run_exporter.py
├── scripts/
│   ├── __init__.py
│   ├── config_loader.py
│   ├── scrape_meta.py
│   ├── html_to_markdown.py
│   └── markdown_writer.py
├── output/
└── temp_html/

Для каждого файла опиши назначение.

## 15. Предложи минимальный первый MVP

Нужен не идеальный большой проект, а рабочий MVP.

MVP должен делать:
1. Читать список META URL из meta_urls.txt.
2. Открывать каждую страницу через SberBrowser.
3. Получать HTML через page.content().
4. Сохранять raw HTML в temp_html/.
5. Конвертировать HTML в Markdown.
6. Сохранять Markdown в output/.
7. Создавать output/README.md.
8. Не использовать API.
9. Не сохранять cookies/tokens.

Опиши, что именно нужно сделать для MVP.

## 16. Формат итогового ответа

Сделай отчёт строго с разделами:

# Анализ старого проекта для задачи META

## 1. Что делает старый проект

## 2. Структура старого проекта

## 3. Точка входа

## 4. Конфигурация

## 5. Входные ссылки

## 6. Работа с браузером

## 7. Получение данных со страницы

## 8. Конвертация в Markdown

## 9. Обработка ошибок

## 10. Авторизация и безопасность

## 11. Что можно переиспользовать

## 12. Что нельзя переносить

## 13. Архитектура нового skill adt-markdownify-meta

## 14. MVP для второй задачи стажировки

## 15. Пошаговый план реализации

## 16. Проверочные команды

В разделе "Проверочные команды" дай только безопасные команды:

pwd
find . -maxdepth 3 -type f | sort
python -m py_compile ...

Не запускай scraping.
Не запускай основной проект.
Не изменяй файлы.

В конце добавь короткий список:

Главные выводы:
1.
2.
3.
4.
5.