# Windows validation ## Базовая проверка после развёртывания ### 1. Проверить установленные файлы ```powershell Test-Path 'C:\Program Files\ActivityWatch\aw-watcher-afk\aw-watcher-afk.exe' Test-Path 'C:\Program Files\ActivityWatch\aw-watcher-window\aw-watcher-window.exe' Test-Path 'C:\ProgramData\ActivityWatch\browser-domains-native-collector.ps1' Test-Path 'C:\ProgramData\ActivityWatch\deployment-config.json' ``` Ожидаемый результат — везде `True`. ### 2. Проверить задачи ```powershell Get-ScheduledTask -TaskName 'ActivityWatch*' | Select-Object TaskName, Author, State ``` Ожидаемо: - по одной задаче `ActivityWatch Launch [...]` на пользователя; - одна задача `ActivityWatch Recovery`. ### 3. Проверить процессы после логина пользователя ```powershell Get-Process aw-watcher-afk, aw-watcher-window -ErrorAction SilentlyContinue | Select-Object ProcessName, SessionId, StartTime ``` И collector: ```powershell Get-CimInstance Win32_Process | Where-Object { $_.Name -in 'powershell.exe', 'pwsh.exe' -and $_.CommandLine -match 'browser-domains-native-collector.ps1' } | Select-Object ProcessId, SessionId, CommandLine ``` ### 4. Проверить сетевую связность ```powershell Test-NetConnection aw.example.local -Port 5600 Invoke-WebRequest http://aw.example.local:5600/api/0/info ``` Если используется HTTPS: ```powershell Invoke-WebRequest https://aw.example.local/api/0/info ``` ### 5. Проверить buckets на сервере После открытия нескольких сайтов в браузере на сервере должны появиться: - `aw-watcher-window_` - `aw-watcher-web-edge_` или другой browser bucket - `aw-watcher-web-category_` Проверка через API: ```powershell Invoke-WebRequest http://aw.example.local:5600/api/0/buckets | Select-Object -ExpandProperty Content ``` ## Проверка категоризации 1. Откройте сайт из кастомного правила. 2. Подождите `PollSeconds + PulseSeconds`. 3. Проверьте category bucket на сервере. 4. Убедитесь, что поля `domain`, `rootDomain`, `category`, `categoryGroup`, `categoryRule` заполнены. ## Проверка восстановления 1. Завершите `aw-watcher-afk.exe` и `aw-watcher-window.exe` у тестового пользователя. 2. Подождите до `RecoveryIntervalSeconds`. 3. Убедитесь, что per-user launch task стартовала процессы заново. Ручной запуск recovery: ```powershell Start-ScheduledTask -TaskName 'ActivityWatch Recovery' ``` ## Проверка ACL ```powershell icacls 'C:\Program Files\ActivityWatch' icacls 'C:\ProgramData\ActivityWatch' icacls 'C:\ProgramData\ActivityWatch\logs' ``` Ожидаемо: - `SYSTEM` и `Administrators` имеют `F`; - `Users` имеет `RX` на install/state; - `Users` имеет `M` на `logs`. ## Критерий готовности к массовому развёртыванию - Установка проходит без ручного редактирования скриптов. - Все параметры инфраструктуры передаются снаружи. - Повторный запуск не ломает текущую установку. - Recovery восстанавливает запуск watcher'ов после остановки. - Collector пишет domain/category события без расширений браузера.