feat(workforce): add ClickHouse workforce analytics contour
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
# Источники ActivityWatch для workforce ingest: SHARKON2025
|
||||
|
||||
Дата проверки: `2026-06-23`
|
||||
|
||||
AW API: `http://10.10.10.13:5600/api/0`
|
||||
|
||||
Хост: `SHARKON2025`
|
||||
|
||||
## Итоговое решение P1
|
||||
|
||||
Основные источники для `aw_workforce`:
|
||||
|
||||
| Поток | Bucket | Решение | Поля |
|
||||
|---|---|---|---|
|
||||
| Desktop/window facts | `aw-watcher-window_SHARKON2025` | Загружать в `aw_window_events` | `app`, `hostname`, `processId`, `sessionId`, `source`, `title`, `username` |
|
||||
| Browser facts, Edge | `aw-watcher-web-edge_SHARKON2025` | Загружать в `aw_browser_events` | `app`, `browser`, `hostname`, `sessionId`, `source`, `title`, `url`, `username` |
|
||||
| Browser facts, Chrome | `aw-watcher-web-chrome_SHARKON2025` | Загружать как исторический browser source; если `username` отсутствует, писать `unknown` | `app`, `browser`, `sessionId`, `source`, `title`, `url` |
|
||||
|
||||
Не использовать как основной fact-source продуктивности:
|
||||
|
||||
| Bucket | Причина |
|
||||
|---|---|
|
||||
| `aw-rdp-window_SHARKON2025` | Есть активное окно RDP bridge, но нет `username` в событии; не годится для точной per-user привязки. |
|
||||
| `aw-detmir-web-category_SHARKON2025` | Это health/category signal с `signalType=collector_health` и нулевой длительностью; полезен для диагностики collector/user presence, но не для длительности продуктивности. |
|
||||
| `aw-worktime-sessions_SHARKON2025` | Авторитетный источник сессий и пользователей RDP, но это presence/session facts, а не window/browser usage facts. |
|
||||
|
||||
## Подтвержденные факты
|
||||
|
||||
`aw-watcher-window_SHARKON2025`:
|
||||
|
||||
- type: `currentwindow`;
|
||||
- client: `aw-watcher-window`;
|
||||
- hostname: `SHARKON2025`;
|
||||
- за последние 24 часа есть события с пользователями `USER1`, `USER4`, `USER5`, `Администратор`;
|
||||
- `USER1` подтвержден в этом bucket и будет нормализован loader-ом в `user1`.
|
||||
|
||||
`aw-watcher-web-edge_SHARKON2025`:
|
||||
|
||||
- type: `web.tab.current`;
|
||||
- client: `aw-watcher-web-edge`;
|
||||
- hostname: `SHARKON2025`;
|
||||
- события за последние 30 дней содержат `username`;
|
||||
- на момент проверки событий за последние 24 часа не было, поэтому источник включается как основной browser source, но freshness контролируется отдельно.
|
||||
|
||||
`aw-watcher-web-chrome_SHARKON2025`:
|
||||
|
||||
- type: `web.tab.current`;
|
||||
- client: `aw-watcher-web-chrome`;
|
||||
- hostname: `SHARKON2025`;
|
||||
- последние найденные события исторические и не содержат `username`;
|
||||
- loader загружает их с `user_login='unknown'`, пока нет надежной session correlation.
|
||||
|
||||
## Первая привязка P3
|
||||
|
||||
Файл загрузки: `clickhouse-workforce/sample/seed_sharkon2025_p3.sql`.
|
||||
|
||||
| host_name | user_domain | user_login | department | branch |
|
||||
|---|---|---|---|---|
|
||||
| `SHARKON2025` | `sharkon2025` | `user1` | `tsj` | `tsj` |
|
||||
|
||||
Ключ словаря остается `(host_name, user_login)`. Домен хранится как атрибут
|
||||
`user_domain`, потому что текущие raw-события ActivityWatch дают `username`, а не
|
||||
стабильный `DOMAIN\user` в window/browser facts.
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user