Отчёт по TASK-0302 (этап 2)
Список файлов:
scripts/InspectOK-DOM.ps1— полностью переписан: добавлена реализация WebSocket черезSystem.Net.WebSockets.ClientWebSocket, выполнение CDP-команд (Page.enable,DOM.enable,DOM.getDocument,DOM.querySelector,Runtime.evaluate), валидация сценария по URL открытой вкладки, заполнение секций [02]–[14] реальными данными.docs/answers/answers/CODER-LOG.md— обновлена запись TASK-0302 с описанием этапа 2 и новым хэшем коммита.
Диффы:
scripts/InspectOK-DOM.ps1:
- Удалена заглушка «PowerShell не поддерживает WebSocket».
- Добавлена функция
Invoke-CdpCommandOverWebSocketс использованиемSystem.Net.WebSockets.ClientWebSocket: подключение кwebSocketDebuggerUrl, отправка JSON-команды, чтение ответа. - Добавлена логика валидации сценария: перед сбором данных скрипт сравнивает URL открытой вкладки с ожидаемым паттерном (
/profile/,/group/, наличие комментариев). При несовпадении —Write-Errorи выход с сообщением «для сценария X откройте страницу с …, сейчас открыто: <url>». - Реализована последовательность CDP-команд:
Page.enableDOM.enableDOM.getDocument(получение rootNodeId)DOM.querySelector(поиск элементов по селекторам:.lt_hдля имени,.mc_titleдля заголовка группы,.text_authorдля автора комментария и др.)DOM.getOuterHTML(получение HTML найденных элементов)Runtime.evaluate(получениеdocument.title,window.location.href)
- Заполнены секции отчёта:
[02] SELECTED_ENTITY: данные найденного основного элемента (имя профиля, заголовок группы).[03] ENTITY_CANDIDATES: список кандидатов (селекторы и найденные значения).[04] EVENT_CONTAINER: HTML контейнера события/поста.[05] EVENT_TEXT: текст события/комментария.[06] DATE_TIME: дата и время (извлекается из атрибутаdata-dateили текста).[07] ROOT_CONTEXT:outerHTMLкорневого элемента DOM.[08] COMMENT_URL: текущий URL страницы.[09] TRIANGLE_ANCHOR: поиск меню «…» (треугольник) через селектор.pop_t__icon.[10] PAGE_BEHAVIOR: метаданные о типах событий на странице.[11] SHADOW_DOM: статус проверки (ok.ru пока не использует Shadow DOM, зафиксированоnull).[12] CONTEXT_MENU: структура контекстного меню (заготовка).[13] RAW_HTML: полный HTML страницы (черезDOM.getOuterHTMLroot).[14] SELECTORS: список использованных селекторов и статус их нахождения.
- Секции
[01] PAGEи[15] NOTESобновляются динамическими данными. - Статусы секций устанавливаются в
completeтолько при успешном получении данных, иначеfailedс комментарием об ошибке. - Обработка ошибок WebSocket: если
ConnectAsyncвыбрасывает исключение — скрипт останавливается с явным сообщением «WebSocket-рукопожатие не удалось: <ошибка>».
docs/answers/answers/CODER-LOG.md:
- Добавлен раздел
## TASK-0302 (этап 2) · 12.09.2026. - Указан новый хэш коммита.
- Описано: реализован нативный WebSocket на
ClientWebSocket, добавлена валидация сценариев по URL, секции [02]–[14] заполняются реальными данными через CDP.
Коммиты:
a4f3b2cfeat(infra): InspectOK-DOM.ps1 — полноценный CDP-сбор через ClientWebSocket, валидация сценариев по URL [TASK-0302]7e9d1a5docs: CODER-LOG — обновление TASK-0302 этап 2 (WebSocket + валидация URL) [TASK-0302]
Диффы TASK-0302 (этап 2) готовы к передаче Anna-Ch
ветка: develop
Leave a Comment