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


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

/Users/23865613/IdeaProjects/untitled/zadanie2/source_project

Иерархия projects/SNL/meta уже проверена и исправлена.

Текущая подтверждённая структура:

- 1 АС;
- 1 ФП;
- 7 уникальных модулей;
- 4 уникальных подмодуля;
- 24 ТК на уровне ФП;
- 0 дублей по META ID;
- 0 дублей по META URL;
- повторная регенерация идемпотентна.

Не изменяй иерархию.
Не перемещай ТК.
Не выполняй дополнительную дедупликацию модулей.
Не удаляй существующие архитектурные объекты.

Текущая задача — выполнить ограниченный браузерный прогон только для
получения вкладки «Атрибуты» у АС и ФП.

Не выполнять git commit и git push.
Не выполнять Git reset, clean, restore или stash.
Не использовать API META.
Не использовать requests, httpx, aiohttp или urllib.
Не извлекать cookies, localStorage, sessionStorage или токены.
Не печатать секреты.
Работать только в read-only режиме.

======================================================================
1. ЦЕЛЕВЫЕ ОБЪЕКТЫ
======================================================================

Нужно обработать только два объекта:

1. АС SberGeo
   META ID: 2842

2. ФП SberGeo.СНЛ
   META ID: 236500

Точные URL взять из:

- существующих README.md;
- meta_urls.txt;
- сохранённых HTML;
- output-отчётов.

Не выдумывать URL.

Перед запуском показать найденные точные URL.

======================================================================
2. БРАУЗЕР
======================================================================

Использовать существующую конфигурацию проекта для SberBrowser и Playwright.

Не менять тип браузера.
Не добавлять Chromium, Safari или другой браузер.
Не запускать второй браузерный процесс, если проект настроен на подключение
к уже открытому SberBrowser.

Использовать существующую ручную авторизацию.

Если авторизация отсутствует:

- не вводить логин или пароль;
- не читать секреты;
- остановиться;
- сообщить, что пользователю необходимо вручную авторизоваться в открытом
  SberBrowser.

======================================================================
3. РЕЗЕРВНЫЕ КОПИИ
======================================================================

Перед изменениями создать резервные копии только релевантных файлов:

- сохранённого HTML страницы АС;
- сохранённого HTML страницы ФП;
- Python-файлов, которые потребуется изменить.

Суффикс резервных копий:

.before-attributes-browser-run

Не копировать целиком projects/SNL/meta внутрь самого projects/SNL/meta.

======================================================================
4. ОТКРЫТЬ ВКЛАДКУ «АТРИБУТЫ»
======================================================================

Для АС и ФП:

1. Открыть страницу объекта.
2. Найти вкладку «Атрибуты».
3. Безопасно открыть её.
4. Дождаться завершения загрузки.
5. Раскрыть доступные секции:

   - Карточка АС или Карточка объекта;
   - Ответственность;
   - Дополнительные атрибуты;
   - Технические атрибуты.

Не нажимать кнопки:

- сохранить;
- изменить;
- удалить;
- создать;
- согласовать;
- отправить;
- добавить.

Разрешены только действия чтения:

- открытие вкладки;
- раскрытие секции;
- прокрутка;
- чтение таблицы;
- получение DOM.

======================================================================
5. ВИРТУАЛИЗИРОВАННЫЕ ТАБЛИЦЫ
======================================================================

META может использовать виртуализированные таблицы.

Для каждой таблицы:

- определить фактический scroll-контейнер;
- прокручивать именно контейнер таблицы;
- собирать строки после каждой прокрутки;
- дедуплицировать строки по полному содержимому;
- продолжать до тех пор, пока число уникальных строк не перестанет расти
  минимум в трёх последовательных проходах;
- вернуть контейнер в начало после чтения.

Не ограничиваться только строками, видимыми на экране в первый момент.

Показать для каждой секции:

- количество найденных таблиц;
- количество строк;
- названия колонок.

======================================================================
6. СОХРАНИТЬ ПОЛНЫЙ HTML
======================================================================

После раскрытия всех секций и загрузки строк сохранить полный DOM обеих
страниц в соответствующие файлы temp_html/.

Сохранённый HTML должен содержать фактически загруженные данные таблиц.

Не создавать два файла для одного META ID.

Показать:

- путь HTML АС;
- размер HTML АС;
- путь HTML ФП;
- размер HTML ФП;
- наличие в каждом HTML заголовков четырёх секций.

======================================================================
7. ПАРСИНГ АТРИБУТОВ
======================================================================

Использовать существующий код проекта.

Проверить:

- scripts/html_to_markdown.py;
- scripts/scrape_meta.py;
- scripts/structured_meta_writer.py;
- scripts/meta_page_expander.py;
- scripts/regenerate_reports.py.

Не переписывать проект с нуля.

Вносить только минимальные изменения, если текущий парсер не извлекает уже
сохранённые таблицы.

Парсер должен сохранять:

- заголовок секции;
- заголовки колонок;
- все строки;
- пустые значения;
- многострочные значения;
- ссылки;
- кириллицу;
- идентификаторы;
- статусы.

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

======================================================================
8. ЦЕЛЕВЫЕ ФАЙЛЫ
======================================================================

Данные АС сохранить в:

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

Данные ФП сохранить в:

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

В каждом файле должны присутствовать отдельные разделы:

# Атрибуты

## Карточка объекта

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

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

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

Название «Карточка АС» допускается для страницы АС, если именно так называется
секция в META.

Каждый раздел должен содержать реальные Markdown-таблицы.

Не смешивать данные АС и ФП.

Не записывать вместо найденных данных:

- «Не найдено»;
- «Данные отсутствуют»;
- «Заглушка».

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

«Секция не представлена на странице META после полного раскрытия вкладки».

======================================================================
9. ПРОВЕРКИ ТАБЛИЧНОГО ФОРМАТА
======================================================================

Для обоих attributes/README.md проверить:

- таблица имеет строку заголовков;
- присутствует Markdown-разделитель `|---|`;
- количество колонок одинаково во всех строках конкретной таблицы;
- данные не превратились в один длинный текст;
- таблицы АС и ФП не совпадают полностью, если страницы содержат разные данные;
- таблицы не дублируются после повторной генерации.

======================================================================
10. РЕГЕНЕРАЦИЯ
======================================================================

После сохранения HTML выполнить:

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

Затем:

python scripts/regenerate_reports.py

Повторно:

python scripts/regenerate_reports.py

Проверить:

- число таблиц не увеличивается при втором запуске;
- строки не дублируются;
- иерархия не изменяется;
- 24 ТК остаются на уровне ФП;
- 7 модулей и 4 подмодуля не дублируются;
- пять interaction-point остаются только на уровне ФП;
- старые каталоги не восстанавливаются.

======================================================================
11. ОТЧЁТ
======================================================================

Создать:

output/ATTRIBUTES_BROWSER_RUN_REPORT.md

Структура:

# Результат браузерной выгрузки атрибутов

## Использованные URL

## Состояние авторизации

## Страница АС

## Страница ФП

## Найденные секции АС

## Найденные секции ФП

## Таблицы АС

## Таблицы ФП

## Количество строк

## Сохранённые HTML

## Изменённые файлы

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

## Первая регенерация

## Повторная регенерация

## Идемпотентность

## Проверка сохранения иерархии

## Ограничения исходных данных

======================================================================
12. ФИНАЛЬНЫЙ ОТВЕТ
======================================================================

В конце вывести:

# Браузерный прогон атрибутов завершён

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

## Найденные секции

## Количество таблиц и строк

## Обновлённые attributes/README.md

## Изменённые Python-файлы

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

## Идемпотентность

## Сохранность иерархии

## Остались ли незаполненные секции

## Требуется ли дополнительный прогон

После завершения остановиться.

Не выполнять commit и push.