docs: add pilot v1 acceptance evidence
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
# Pilot v1.0 Acceptance Checklist
|
||||
|
||||
## Назначение
|
||||
|
||||
Этот checklist закрепляет Pilot v1.0 как приемочный контур AWatch-rus для
|
||||
демонстрации заказчику. Базовый кодовый контур: commit
|
||||
`067ad0939c3b8c34df8af9ff55bb219277d08341`.
|
||||
|
||||
Pilot v1.0 принимается как Workforce Analytics + Security Analytics +
|
||||
Forensics с ролевым порталом, стабильными JSON API, UEBA Score v1 и pfSense
|
||||
readiness в режиме `contract_only`.
|
||||
|
||||
## Не входит в приемку
|
||||
|
||||
- SIEM.
|
||||
- Классический DLP.
|
||||
- ML/LLM scoring.
|
||||
- Автоматическое сетевое воздействие.
|
||||
- pfSense ingestion.
|
||||
- NAC, SOAR, quarantine, изменение firewall/VPN/routing.
|
||||
- Dioxus, React, Tauri, Electron как основной UI Pilot v1.0.
|
||||
|
||||
## Общие критерии
|
||||
|
||||
| Критерий | Ожидаемый результат | Статус |
|
||||
| --- | --- | --- |
|
||||
| Портал открывается | `/portal` загружается и показывает готовый статус данных | приемочный |
|
||||
| Главный вывод | В Executive View отображается первым | приемочный |
|
||||
| Русификация | В пользовательских блоках нет лишних англоязычных терминов | приемочный |
|
||||
| Demo data | Нет реальных IP, hostname, логинов, ФИО, подразделений заказчика | приемочный |
|
||||
| Документация | README и `docs/` содержат Pilot v1 материалы | приемочный |
|
||||
| Неизменность позиционирования | Нет заявлений SIEM/DLP/pfSense ingestion | приемочный |
|
||||
|
||||
## Роли
|
||||
|
||||
| Роль | Endpoint/UI | Должна видеть | Не должна видеть по умолчанию |
|
||||
| --- | --- | --- | --- |
|
||||
| `executive` | Executive Dashboard | главный вывод, риски подразделений, Workforce summary | ИБ-детализацию и материалы расследований |
|
||||
| `manager` | Workforce Portal | активность, подразделения, ответственных, тренды, Markdown-отчет | Security queue и evidence |
|
||||
| `security` | Security Portal | кандидатов на проверку, risk score, события безопасности, аудит | управленческий Workforce Dashboard |
|
||||
| `forensics` | Forensics Portal | карточки расследований, timeline, материалы, Markdown export | управленческие Workforce-разрезы |
|
||||
| `admin` | Operations/Admin | качество данных, настройки, ClickHouse/fallback-статусы | не используется как управленческая роль |
|
||||
|
||||
Серверная проверка обязательна: роль должна ограничивать доступ на API-уровне,
|
||||
а не только через скрытие кнопок в HTML.
|
||||
|
||||
## API contracts
|
||||
|
||||
Приемочные endpoint-ы:
|
||||
|
||||
- `/api/reports`;
|
||||
- `/api/executive`;
|
||||
- `/api/workforce`;
|
||||
- `/api/security`;
|
||||
- `/api/forensics`;
|
||||
- `/api/ueba`;
|
||||
- `/api/pfsense`;
|
||||
- `/api/contracts/openapi.json`;
|
||||
- `/api/contracts/typescript.d.ts`.
|
||||
|
||||
Ожидания:
|
||||
|
||||
- структуры JSON стабильны и additive-compatible;
|
||||
- роль возвращается в `role_context`;
|
||||
- неизвестные поля должны игнорироваться клиентом;
|
||||
- отказ доступа возвращает 403;
|
||||
- `/api/pfsense` возвращает `status=contract_only` и
|
||||
`ingestion_available=false`.
|
||||
|
||||
## UEBA Score v1
|
||||
|
||||
Приемочный UEBA-контур:
|
||||
|
||||
- rule-based;
|
||||
- без ML;
|
||||
- без LLM;
|
||||
- score 0-100;
|
||||
- severity: `normal`, `low`, `medium`, `high`, `critical`;
|
||||
- reason codes;
|
||||
- human-readable explanation;
|
||||
- компоненты:
|
||||
- `activity_anomaly`;
|
||||
- `time_anomaly`;
|
||||
- `application_anomaly`;
|
||||
- `network_anomaly`;
|
||||
- `history_anomaly`.
|
||||
|
||||
UEBA Score v1 только ранжирует риск для ручной проверки. Он не блокирует
|
||||
пользователей и не меняет сетевые политики.
|
||||
|
||||
## pfSense readiness
|
||||
|
||||
Приемочный статус: `contract_only`.
|
||||
|
||||
Допустимо:
|
||||
|
||||
- contracts;
|
||||
- fixtures;
|
||||
- docs;
|
||||
- API-заготовка;
|
||||
- demo-события только с RFC 5737 адресами.
|
||||
|
||||
Недопустимо:
|
||||
|
||||
- заявлять реальный ingestion без проверки;
|
||||
- называть контур SIEM;
|
||||
- обещать firewall/VPN enforcement;
|
||||
- показывать реальные IP, hostname, login или события заказчика.
|
||||
|
||||
## Smoke acceptance
|
||||
|
||||
Команда:
|
||||
|
||||
```bash
|
||||
node scripts/detmir-portal-tabs-smoke.mjs
|
||||
```
|
||||
|
||||
Smoke должен подтвердить:
|
||||
|
||||
- портал открывается;
|
||||
- Executive Dashboard открывается;
|
||||
- Workforce/Manager view открывается;
|
||||
- Security view открывается;
|
||||
- Forensics view открывается;
|
||||
- Admin/Operations view открывается;
|
||||
- `/api/reports` возвращает валидный JSON;
|
||||
- серверные role gates возвращают 403 для чужих срезов;
|
||||
- demo-data не содержит чувствительных значений.
|
||||
|
||||
## Обязательные проверки перед приемкой
|
||||
|
||||
Выполнять из `adk-rust/`, кроме `git diff --check` и smoke:
|
||||
|
||||
```bash
|
||||
cargo fmt --all --check
|
||||
cargo clippy --workspace --all-targets -- -D warnings
|
||||
cargo test --workspace
|
||||
cargo build --workspace --release
|
||||
git diff --check
|
||||
node scripts/detmir-portal-tabs-smoke.mjs
|
||||
```
|
||||
|
||||
Приемка Pilot v1.0 считается готовой только при успешном прохождении всех
|
||||
команд и отсутствии новых продуктовых обещаний за пределами текущего контура.
|
||||
@@ -0,0 +1,105 @@
|
||||
# Pilot v1.0 Evidence
|
||||
|
||||
## Базовый контур
|
||||
|
||||
Базовый commit Pilot v1.0:
|
||||
`067ad0939c3b8c34df8af9ff55bb219277d08341`.
|
||||
|
||||
Назначение evidence-документа: показать, какие артефакты подтверждают
|
||||
готовность AWatch-rus Pilot v1.0 к демонстрации и приемке по ролям, API
|
||||
contracts, UEBA Score v1 и pfSense readiness.
|
||||
|
||||
## Product boundary evidence
|
||||
|
||||
| Область | Артефакт | Что подтверждает |
|
||||
| --- | --- | --- |
|
||||
| Позиционирование | [PILOT_V1_RU.md](PILOT_V1_RU.md) | Workforce Analytics + Security Analytics + Forensics |
|
||||
| Роли | [ROLES_RU.md](ROLES_RU.md) | `executive`, `manager`, `security`, `forensics`, `admin` |
|
||||
| UEBA | [UEBA_SCORE_RU.md](UEBA_SCORE_RU.md) | rule-based scoring без ML/LLM |
|
||||
| pfSense | [PFSENSE_INTEGRATION_RU.md](PFSENSE_INTEGRATION_RU.md) | readiness=`contract_only`, без SIEM/ingestion claims |
|
||||
| Demo сценарий | [CUSTOMER_DEMO_SCENARIO_RU.md](CUSTOMER_DEMO_SCENARIO_RU.md) | 10-минутный показ заказчику |
|
||||
| Преддемо | [DEMO_RUNBOOK_RU.md](DEMO_RUNBOOK_RU.md) | прогрев и порядок проверки перед показом |
|
||||
| Gap analysis | [PILOT_GAP_ANALYSIS_RU.md](PILOT_GAP_ANALYSIS_RU.md) | известные риски и остаточные ограничения |
|
||||
|
||||
## API evidence
|
||||
|
||||
| Endpoint | Evidence | Приемочный смысл |
|
||||
| --- | --- | --- |
|
||||
| `/api/reports` | smoke + OpenAPI | общий отчет, role-filtered payload |
|
||||
| `/api/executive` | OpenAPI + role gate smoke | Executive Dashboard |
|
||||
| `/api/workforce` | OpenAPI + role gate smoke | Workforce Portal |
|
||||
| `/api/security` | OpenAPI + role gate smoke | Security Portal |
|
||||
| `/api/forensics` | OpenAPI + role gate smoke | Forensics Portal |
|
||||
| `/api/ueba` | OpenAPI + tests | UEBA Score v1 |
|
||||
| `/api/pfsense` | OpenAPI + fixture | pfSense readiness `contract_only` |
|
||||
| `/api/contracts/openapi.json` | repository contract | стабильный OpenAPI contract |
|
||||
| `/api/contracts/typescript.d.ts` | repository contract | стабильные TypeScript declarations |
|
||||
|
||||
Контрактные файлы:
|
||||
|
||||
- `adk-rust/crates/detmir-portal/src/contracts/openapi.json`;
|
||||
- `adk-rust/crates/detmir-portal/src/contracts/typescript.d.ts`.
|
||||
|
||||
## Demo data evidence
|
||||
|
||||
Демонстрационные материалы:
|
||||
|
||||
- `docs/screenshots/01-executive-overview.png`;
|
||||
- `docs/screenshots/02-risk-heatmap.png`;
|
||||
- `docs/screenshots/03-security-view.png`;
|
||||
- `docs/screenshots/04-operations-view.png`;
|
||||
- `docs/screenshots/05-investigation-pack.png`;
|
||||
- `docs/screenshots/06-markdown-report.png`;
|
||||
- `docs/fixtures/pfsense-demo-events.json`.
|
||||
|
||||
Требования:
|
||||
|
||||
- не использовать реальные IP-адреса;
|
||||
- не использовать реальные hostname;
|
||||
- не использовать реальные логины;
|
||||
- не использовать ФИО сотрудников;
|
||||
- не использовать реальные подразделения заказчика;
|
||||
- не использовать реальные события безопасности.
|
||||
|
||||
Для сетевых примеров допустимы только RFC 5737 диапазоны:
|
||||
|
||||
- `192.0.2.0/24`;
|
||||
- `198.51.100.0/24`;
|
||||
- `203.0.113.0/24`.
|
||||
|
||||
## Verification evidence
|
||||
|
||||
Обязательный набор команд:
|
||||
|
||||
```bash
|
||||
cd adk-rust
|
||||
cargo fmt --all --check
|
||||
cargo clippy --workspace --all-targets -- -D warnings
|
||||
cargo test --workspace
|
||||
cargo build --workspace --release
|
||||
cd ..
|
||||
git diff --check
|
||||
node scripts/detmir-portal-tabs-smoke.mjs
|
||||
```
|
||||
|
||||
Что подтверждают команды:
|
||||
|
||||
- `cargo fmt --all --check` - Rust-код форматирован.
|
||||
- `cargo clippy --workspace --all-targets -- -D warnings` - нет warnings в
|
||||
workspace.
|
||||
- `cargo test --workspace` - unit/integration tests проходят.
|
||||
- `cargo build --workspace --release` - release-сборка workspace проходит.
|
||||
- `git diff --check` - нет whitespace-ошибок в diff.
|
||||
- `node scripts/detmir-portal-tabs-smoke.mjs` - портал, вкладки, роли и
|
||||
server-side role gates проходят smoke.
|
||||
|
||||
## Приемочный вывод
|
||||
|
||||
Pilot v1.0 готов к демонстрации, если:
|
||||
|
||||
- все команды verification evidence прошли успешно;
|
||||
- role gates подтверждены smoke-тестом;
|
||||
- UEBA Score v1 остается rule-based;
|
||||
- pfSense readiness остается `contract_only`;
|
||||
- документация не содержит обещаний SIEM, классического DLP, ML/LLM или
|
||||
реального pfSense ingestion.
|
||||
Reference in New Issue
Block a user