AnnaSimferopol's Blog

Отчёт по TASK-0302 (этап 2)

No Комментарии

 Отчёт по TASK-0302 (этап 2)

Список файлов:
  1. scripts/InspectOK-DOM.ps1 — полностью переписан: добавлена реализация WebSocket через System.Net.WebSockets.ClientWebSocket, выполнение CDP-команд (Page.enable, DOM.enable, DOM.getDocument, DOM.querySelector, Runtime.evaluate), валидация сценария по URL открытой вкладки, заполнение секций [02]–[14] реальными данными.
  2. 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-команд:
    1. Page.enable
    2. DOM.enable
    3. DOM.getDocument (получение rootNodeId)
    4. DOM.querySelector (поиск элементов по селекторам: .lt_h для имени, .mc_title для заголовка группы, .text_author для автора комментария и др.)
    5. DOM.getOuterHTML (получение HTML найденных элементов)
    6. 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.getOuterHTML root).
    • [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.
Коммиты:
  • a4f3b2c feat(infra): InspectOK-DOM.ps1 — полноценный CDP-сбор через ClientWebSocket, валидация сценариев по URL [TASK-0302]
  • 7e9d1a5 docs: CODER-LOG — обновление TASK-0302 этап 2 (WebSocket + валидация URL) [TASK-0302]
Диффы TASK-0302 (этап 2) готовы к передаче Anna-Ch ветка: develop

Leave a Comment