Загрузка данных
Ты работаешь только в проекте:
/Users/23865613/IdeaProjects/untitled/zadanie2/source_project
Продолжи реализацию требований экспорта архитектуры META.
Требование, связанное с Git-веткой, полностью исключается из текущей задачи.
Не проверяй ветку, не создавай ветку, не меняй ветку, не выполняй commit и push.
Цель текущего этапа — закрыть все оставшиеся функциональные несоответствия,
но не подменять отсутствующие данные вымышленными объектами.
ВАЖНО:
- META используется только в read-only режиме;
- запрещены POST, PUT, PATCH, DELETE;
- запрещено автоматически вводить логин, пароль или токен;
- не читать и не сохранять cookies, localStorage и sessionStorage;
- не использовать API META;
- не использовать requests, httpx, aiohttp или urllib для META;
- использовать SberBrowser и Playwright;
- авторизация в META выполняется пользователем вручную;
- названия объектов брать только из META;
- не переводить и не русифицировать названия вручную;
- не выдумывать связи;
- идентичность объектов определять по META ID и META URL;
- один META-объект должен существовать в итоговой структуре один раз;
- не ставить статус «Закрыто» только на основании наличия пустого README
или таблицы без строк.
======================================================================
1. СОЗДАТЬ РЕЗЕРВНЫЕ КОПИИ
======================================================================
До изменений создать резервные копии:
scripts/structured_meta_writer.py
scripts/regenerate_reports.py
scripts/html_to_markdown.py
scripts/meta_page_expander.py
scripts/scrape_meta.py
output/TASK_COVERAGE.md
output/REQUIREMENTS_REPORT.md
projects/SNL/meta
Использовать понятный суффикс:
.before-functional-completion
Не создавать резервные копии внутри projects/SNL/meta/as/, чтобы они не
участвовали в подсчёте архитектурных объектов.
======================================================================
2. ПРОВЕРИТЬ ТЕКУЩУЮ ИЕРАРХИЮ
======================================================================
Требуемые варианты:
1. АС → ФП → ТК
2. АС → ФП → Модуль → ТК
3. АС → ФП → Модуль → Подмодуль → ТК
Текущие 24 ТК имеют подтверждённого родителя ФП и должны находиться здесь:
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/tk/{TK_NAME}/README.md
Это является корректной реализацией варианта:
АС → ФП → ТК
Исправить статус этого требования на «Закрыто».
Не переносить эти 24 ТК внутрь module/ или submodule/, если в META URL,
breadcrumb, META ID или сохранённом HTML нет подтверждения соответствующей
связи.
Проверить код генератора и подтвердить, что он технически умеет размещать ТК:
- у ФП;
- у модуля;
- у подмодуля;
в зависимости от подтверждённого родителя.
Если поддержка путей module/tk и submodule/tk отсутствует, добавить её.
Ожидаемые пути:
projects/SNL/meta/as/{AS}/fp/{FP}/tk/{TK}/README.md
projects/SNL/meta/as/{AS}/fp/{FP}/module/{MODULE}/tk/{TK}/README.md
projects/SNL/meta/as/{AS}/fp/{FP}/module/{MODULE}/submodule/{SUBMODULE}/tk/{TK}/README.md
Если реальных ТК уровня модуля или подмодуля в выгруженных данных нет,
статус соответствующего требования должен быть:
«Не применимо: связь отсутствует в данных META».
Это не является ошибкой и не должно отображаться красным крестиком.
======================================================================
3. ПОДГОТОВИТЬ БЕЗОПАСНЫЙ БРАУЗЕРНЫЙ ПРОГОН
======================================================================
Перед запуском:
1. Проверить наличие SberBrowser.
2. Проверить конфигурацию проекта.
3. Проверить meta_urls.txt.
4. Проверить, что используются только безопасные действия:
- переход по URL;
- чтение DOM;
- прокрутка;
- раскрытие вкладок;
- раскрытие таблиц;
- сохранение HTML.
5. Проверить deny-list кнопок и действий записи.
6. Не запускать браузер до завершения статической проверки.
После проверки запустить экспорт через SberBrowser.
Если требуется авторизация:
- открыть страницу;
- остановиться и попросить пользователя вручную авторизоваться;
- не запрашивать логин, пароль или токен в чате;
- продолжить после появления доступной страницы META.
Не завершать SberBrowser принудительно, если проект настроен на подключение
к уже открытому браузеру.
======================================================================
4. ПОЛНОСТЬЮ ЗАГРУЗИТЬ СТРАНИЦЫ META
======================================================================
Для каждой страницы:
- дождаться завершения загрузки;
- раскрыть допустимые вкладки;
- прокрутить виртуальные таблицы до конца;
- раскрыть строки и секции только безопасными кликами;
- убедиться, что в DOM присутствуют все строки;
- сохранить полный HTML в temp_html/;
- не считать страницу обработанной, если сохранён только каркас таблицы.
Отдельно проверить страницы:
- АС SberGeo;
- ФП SberGeo.СНЛ;
- модули;
- подмодули;
- технические компоненты;
- вкладку «Атрибуты»;
- интеграционные взаимодействия;
- точки взаимодействия;
- стенды;
- технические ресурсы.
Если URL стендов или технических ресурсов отсутствует в meta_urls.txt,
разрешается найти его только через реальные ссылки в сохранённой странице
АС или ФП.
Не конструировать URL вручную без доказательства.
======================================================================
5. ЗАПОЛНИТЬ АТРИБУТЫ АС И ФП
======================================================================
Текущие attributes/README.md нельзя считать завершёнными, если в них есть
только заголовки таблиц.
Для АС заполнить:
projects/SNL/meta/as/SberGeo/attributes/README.md
Для ФП заполнить:
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/attributes/README.md
Требуемые разделы:
- Карточка объекта или Карточка АС;
- Ответственность;
- Дополнительные атрибуты;
- Технические атрибуты.
Все реальные данные сохранить в Markdown-таблицах.
Пример:
## Карточка объекта
| Поле | Значение |
|---|---|
| ... | ... |
Требования:
- таблицы должны содержать реальные строки;
- строки нельзя удалять как заголовки или separator;
- данные АС и ФП нельзя смешивать;
- HTML каждой сущности обрабатывается отдельно;
- повторный запуск не дублирует таблицы;
- если конкретный раздел действительно отсутствует в META, написать:
«Раздел отсутствует в сохранённых данных META»;
- нельзя писать «Не найдено», если строки присутствуют в DOM.
Обновить парсер так, чтобы заполнение выполнялось генератором, а не вручную.
======================================================================
6. ПРОВЕРИТЬ ИНТЕГРАЦИОННЫЕ ОБЪЕКТЫ
======================================================================
Повторно проверить реальные данные для:
- integration-flow;
- integration;
- integration-point.
Уровень АС:
projects/SNL/meta/as/SberGeo/integration-flow/
projects/SNL/meta/as/SberGeo/integration/
projects/SNL/meta/as/SberGeo/integration-point/
Уровень ФП:
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/integration-flow/
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/integration/
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/integration-point/
Каждый реальный объект должен иметь отдельный каталог:
{TYPE}/{OBJECT_NAME}/README.md
Для каждого объекта сохранить:
- название;
- тип;
- META URL;
- META ID, если доступен;
- уровень родителя;
- поставщика;
- потребителя;
- ТК поставщика;
- ТК потребителя;
- владельца точки;
- API;
- остальные доступные поля.
Запрещено создавать объект из названия страницы:
- Интеграционные взаимодействия;
- Технологические взаимодействия;
- Точки взаимодействия;
- Инфопотоки;
- Стенды;
- unknown;
- README;
- Наименование;
- В эксплуатации.
Пять ранее найденных interaction-point имеют подтверждённого родителя ФП
и должны существовать только здесь:
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/integration-point/{NAME}/README.md
Не создавать их на уровне АС.
Если после полноценного браузерного прогона реальных объектов типа
integration-flow или integration не обнаружено:
- оставить только индексный README.md;
- указать проверенные META URL;
- указать, что отдельные объекты не обнаружены;
- поставить статус:
«Не применимо: объекты этого типа отсутствуют в данных META».
Не ставить красный статус «Не закрыто» только из-за отсутствия объектов.
======================================================================
7. ПЕРЕНЕСТИ СТЕНДЫ В ЦЕЛЕВУЮ СТРУКТУРУ
======================================================================
В output/STANDS.md ранее были обнаружены четыре стенда:
- Major-GO;
- DEV;
- ПРОМ;
- Major-Check.
Проверить их первичный источник.
Если это реальные объекты или реальные строки META:
- определить подтверждённого родителя;
- создать отдельный README для каждого стенда внутри projects/SNL/meta/as/;
- использовать существующее в проекте каноническое название каталога;
- если канонического названия нет, использовать:
stands/{STAND_NAME}/README.md
у подтверждённого родителя АС или ФП.
README стенда должен содержать:
- название;
- тип;
- META URL страницы-источника;
- META ID, если существует;
- родителя;
- назначение;
- окружение;
- доступные технические сведения;
- исходные поля таблицы.
Если четыре строки оказались не объектами, а значениями другого поля,
не создавать ложные каталоги. Зафиксировать результат проверки в отчёте.
======================================================================
8. ПРОВЕРИТЬ ТЕХНИЧЕСКИЕ РЕСУРСЫ
======================================================================
Не считать автоматически 24 ТК техническими ресурсами.
Проверить первичный HTML и страницу технических ресурсов.
Определить:
- существуют ли отдельные реальные технические ресурсы;
- являются ли строки из output/TECH_RESOURCES.md техническими ресурсами
или повторным списком ТК;
- имеется ли META URL или ID технического ресурса;
- имеется ли подтверждённый родитель.
Если реальные ресурсы обнаружены, сохранить их в projects/SNL/meta/as/
у подтверждённого родителя.
Использовать существующее каноническое название каталога. Если его нет:
tech-resources/{RESOURCE_NAME}/README.md
Если самостоятельных объектов нет, не создавать 24 дубля ТК.
Статус должен быть:
«Не применимо: самостоятельные технические ресурсы не обнаружены»
с перечислением проверенных источников.
======================================================================
9. ПРОВЕРИТЬ README ПЯТИ INTERACTION-POINT
======================================================================
Для пяти реальных interaction-point проверить, что каждый README содержит:
- реальное название;
- тип interaction-point;
- META URL страницы-источника;
- META ID объекта, если он доступен;
- родителя ФП;
- реальные строки таблицы;
- API, если присутствует;
- поставщика и потребителя;
- ТК поставщика и потребителя;
- владельца точки.
README не должен состоять только из ссылки на output/.
Если у строки таблицы отсутствует отдельный META URL и META ID:
- не выдумывать их;
- указать META URL страницы-источника;
- указать идентификатор строки или составной ключ, если он присутствует;
- написать, что отдельный META ID для строки не предоставлен.
======================================================================
10. ПРОВЕРИТЬ НЕПЕРЕНЕСЁННЫЕ ДАННЫЕ
======================================================================
Повторно построить:
output/UNMIGRATED_META_DATA.md
Проверить особенно строки, где ранее было указано:
- hierarchy/ перенесено частично;
- submodules/ перенесено частично;
- ius-request-approval отсутствует в as/.
Для каждого файла сравнить содержимое со структурой as/.
Не ориентироваться только на имя каталога.
Сравнить:
- META URL;
- META ID;
- название;
- таблицы;
- интеграционные данные;
- уникальные поля.
Если данные уже представлены в as/, отметить:
«Перенесено полностью».
Если уникальные данные отсутствуют в as/, перенести их к подтверждённому
объекту перед удалением старого источника.
======================================================================
11. ИСПРАВИТЬ ЛОГИКУ TASK_COVERAGE
======================================================================
Обновить output/TASK_COVERAGE.md и генератор этого отчёта.
Исключить из текущей оценки Git-ветку.
Использовать статусы:
- Закрыто;
- Частично;
- Не закрыто;
- Не применимо: связь отсутствует в данных META;
- Не применимо: объекты отсутствуют в данных META.
Исправить:
- АС → ФП → ТК — Закрыто, доказательство: 24 ТК на уровне ФП;
- АС → ФП → Модуль → ТК — Закрыто как поддержка генератора либо
«Не применимо», если реальных связей нет;
- АС → ФП → Модуль → Подмодуль → ТК — аналогично;
- integration-flow и integration — не красный статус, если реальные объекты
отсутствуют после полного прогона;
- атрибуты — Закрыто только при наличии реальных строк;
- стенды — Закрыто после переноса реальных данных либо Не применимо после
доказанной проверки;
- технические ресурсы — аналогично.
Не считать индексный README реальным объектом.
======================================================================
12. ОБНОВИТЬ REQUIREMENTS_REPORT
======================================================================
Обновить:
output/REQUIREMENTS_REPORT.md
Включить:
# Проверка функциональных требований
## Иерархия
## Поддержка трёх вариантов размещения ТК
## Атрибуты АС
## Атрибуты ФП
## Integration-flow уровня АС
## Integration уровня АС
## Integration-point уровня АС
## Integration-flow уровня ФП
## Integration уровня ФП
## Integration-point уровня ФП
## Стенды
## Технические ресурсы
## Неперенесённые данные
## Дубли
## Идемпотентность
## Ограничения исходных данных
Не упоминать Git-ветку в качестве функционального несоответствия.
======================================================================
13. ПРОВЕРКИ
======================================================================
После полного браузерного прогона выполнить:
python -m py_compile run_exporter.py scripts/*.py
python scripts/regenerate_reports.py
Создать контрольную копию:
find projects/SNL/meta -type f -print0 |
sort -z |
xargs -0 shasum > /tmp/meta-first.sha
Повторно выполнить:
python scripts/regenerate_reports.py
Создать вторую копию:
find projects/SNL/meta -type f -print0 |
sort -z |
xargs -0 shasum > /tmp/meta-second.sha
Сравнить:
diff -u /tmp/meta-first.sha /tmp/meta-second.sha
Ожидаемый результат — пустой diff.
Также выполнить:
find projects/SNL/meta/as -type f | sort
Показать статистику:
- АС;
- ФП;
- модули;
- подмодули;
- ТК на уровне ФП;
- ТК на уровне модулей;
- ТК на уровне подмодулей;
- integration-flow на АС;
- integration на АС;
- integration-point на АС;
- integration-flow на ФП;
- integration на ФП;
- integration-point на ФП;
- стенды;
- технические ресурсы;
- пустые README;
- дубли META ID;
- дубли META URL.
======================================================================
14. ФИНАЛЬНЫЙ РЕЗУЛЬТАТ
======================================================================
В конце выведи:
# Завершение функциональных требований
## Результат браузерного прогона
## Обработанные META URL
## Иерархия
## Размещение ТК
## Атрибуты АС
## Атрибуты ФП
## Интеграции АС
## Интеграции ФП
## Стенды
## Технические ресурсы
## Неперенесённые данные
## Результат py_compile
## Результат первой регенерации
## Результат повторной регенерации
## Идемпотентность
## Оставшиеся ограничения исходных данных
## Итоговая таблица
Формат итоговой таблицы:
| Требование | Статус | Доказательство |
|---|---|---|
Не указывать Git-ветку как незакрытое функциональное требование.
Не выполнять commit и push.
После завершения остановиться.