Загрузка данных
Ты работаешь в старом проекте-образце, который уже есть локально.
Задача:
Проанализировать текущий проект как основу для выполнения моей второй задачи на стажировке:
"Реализовать выгрузку МЕТА в 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.