# Том 6. Данные / Граф знаний / Data Architecture

## 6.1. Принципы данных

- **Data as a product:** каждый домен (геология, добыча, транспорт, переработка, финансы) владеет своими данными и публикует контракты.
- **Trusted source:** у каждого датасета — владелец, частота обновления, lineage, confidence, confidentiality.
- **Provenance:** любая цифра в UI имеет обратную трассировку к источнику.
- **Synthetic vs real:** демо использует маркированные синтетические/исторические данные; реальные интеграции — read-only.

## 6.2. Data architecture

```
┌─────────────────────────────────────────────────────────────┐
│  Sources: SCADA, MES, ERP, EAM, GIS, lab, sat, docs, CBDC   │
├─────────────────────────────────────────────────────────────┤
│  Ingestion: Kafka Connect / Airbyte / custom adapters        │
├─────────────────────────────────────────────────────────────┤
│  Data Lake / Lakehouse: Delta Lake / Iceberg on MinIO/S3    │
├─────────────────────────────────────────────────────────────┤
│  Domain stores:                                              │
│   - PostgreSQL (asset registry, passports, transactions)    │
│   - TimescaleDB (telemetry)                                 │
│   - Neo4j/ArangoDB (knowledge graph)                        │
│   - ClickHouse (analytics, events)                          │
│   - Vector DB (embeddings)                                  │
│   - Object store (docs, 3D assets)                            │
├─────────────────────────────────────────────────────────────┤
│  Serving API: GraphQL, REST, WebSocket, gRPC                │
├─────────────────────────────────────────────────────────────┤
│  Catalog & Lineage: DataHub / Amundsen / OpenLineage        │
└─────────────────────────────────────────────────────────────┘
```

## 6.3. Каталог источников демо

| Домен | Источник | Формат | Частота | Маркер | Владелец |
|-------|----------|--------|---------|--------|----------|
| Геология | ГИС месторождения, скважинные карты | LAS, GeoJSON, CSV | ежедневно/месяц | demo/historical | Геол. служба (модель) |
| Добыча | SCADA/АСУ ТП месторождения | OPC-UA, MQTT | 1 с | demo | Промышленный оператор |
| Подготовка | MES/SCADA ДНС/ЦПСН | Modbus, OPC-UA | 1–5 с | demo | Цех |
| Транспорт | KazTransOil GIS, SCADA НПС | REST, OPC-UA | 1–60 с | demo/historical | KTO |
| Переработка | MES НПЗ | SQL, OPC-UA | 1 мин | demo | НПЗ |
| Сбыт | ERP/трейдинг | REST, CSV | ежедневно | demo | Трейдер |
| Финансы | Налоговая, бюджет, CBDC testnet | REST, blockchain | ежедневно | demo/testnet | Минфин/NBK |
| Банки | Open Banking API test | REST | мгновенно | mock/test | Halyk/Kaspi/BCC |
| Документы | IPFS, S3, EDO | PDF/DOCX/JSON | ad-hoc | fact/demo | Юр. служба |
| Спутник | Sentinel-2, meteo | GeoTIFF, WMS | ежедневно | demo | Косм. агентство |

## 6.4. Модель данных (core entities)

### 6.4.1. Asset
- `asset_id` (UUID)
- `name_kk`, `name_ru`, `name_en`
- `type` (well, pump, tank, pipeline_segment, refinery_unit, sensor, valve, nps, cluster, field)
- `coordinates` (WGS84 + local)
- `parent_id` (иерархия)
- `operator`, `owner`, `license`
- `status` (active, standby, repair, decommissioned)
- `digital_twin_7d` JSONB

### 6.4.2. Telemetry
- `timestamp`, `asset_id`, `sensor_id`, `signal_name`, `value`, `unit`, `quality`, `confidence`, `origin`

### 6.4.3. Digital Passport
- `passport_id`, `asset_id`, `version`, `legal`, `technical`, `production`, `financial`, `ecological`, `documents[]`

### 6.4.4. Scenario
- `scenario_id`, `name`, `baseline`, `parameters`, `results`, `created_by`, `confidence`

### 6.4.5. Transaction / Digital Tenge
- `tx_id`, `asset_id`, `scenario_id`, `amount_kzt`, `category` (tax, pension, salary, dividend, budget, social), `wallet`, `status`

## 6.5. Граф знаний

### 6.5.1. Онтология (основные классы и отношения)

```cypher
(:Country {name: "Kazakhstan"})-[:HAS_REGION]->(:Region {name: "Mangystau"})
(:Region)-[:HAS_FIELD]->(:Field {name: "Uzen"})
(:Field)-[:HAS_WELL]->(:Well {name: "UZ-101"})
(:Well)-[:PRODUCES]->(:Product {name: "crude_oil"})
(:Well)-[:CONNECTED_TO]->(:Pipeline {name: "flowline_UZ101_DNS"})
(:Pipeline)-[:LEADS_TO]->(:PumpStation {name: "NPS-Zhetibay"})
(:PumpStation)-[:PRESSES_INTO]->(:TrunkPipeline {name: "Uzen-Atyrau-Samara"})
(:TrunkPipeline)-[:SUPPLIES]->(:Refinery {name: "Atyrau NPZ"})
(:Refinery)-[:PRODUCES]->(:Product {name: "AI-92"})
(:Product)-[:TRANSPORTED_BY]->(:Route {name: "CPC"})
(:Route)-[:DELIVERS_TO]->(:Market {name: "Europe"})
(:Asset)-[:HAS_SENSOR]->(:Sensor {name: "vib_NPS2_P1"})
(:Sensor)-[:MEASURES]->(:Metric {name: "vibration"})
(:Asset)-[:LICENSED_BY]->(:License {number: "..."})
(:Asset)-[:OWNED_BY]->(:Organization {name: "KazMunayGas"})
(:Production)-[:GENERATES]->(:Tax {type: "rent"})
(:Tax)-[:PAID_TO]->(:Budget {level: "national"})
```

### 6.5.2. Примеры запросов к графу

**Q1: Какие объекты могут повлиять на экспорт нефти в ближайшие 3 месяца?**
```cypher
MATCH (f:Field)-[:HAS_WELL]->(w:Well)-[:CONNECTED_TO]->(p:Pipeline)-[:LEADS_TO]->(ps:PumpStation)-[:PRESSES_INTO]->(tp:TrunkPipeline)-[:SUPPLIES]->(r:Refinery)
WHERE w.status IN ['repair', 'depletion_alert'] OR ps.status IN ['warning', 'critical'] OR tp.status IN ['leak_suspected']
RETURN f, w, p, ps, tp, r
```

**Q2: Какие электростанции зависят от поставок угля по одной ЖД-ветке?**
```cypher
MATCH (es:PowerStation)-[:FUELLED_BY]->(c:Coal)-[:TRANSPORTED_BY]->(rl:RailLine)
WITH rl, collect(es) AS stations
WHERE size(stations) > 1
RETURN rl.name, stations
```

**Q3: Какие инвестпроекты сокращают дефицит электроэнергии и улучшают ESG?**
```cypher
MATCH (p:Project)-[:IMPACTS]->(e:ElectricityBalance),
      (p)-[:IMPACTS]->(esg:ESG)
WHERE e.effect = 'increase_supply' AND esg.co2_reduction > 0
RETURN p.name, e.effect, esg.co2_reduction
```

### 6.5.3. Векторизация документов

- Каждый документ (лицензия, отчёт, P&ID) разбивается на чанки, эмбеддится, сохраняется в vector DB.
- Связи с графом: документ относится к `(asset)-[:HAS_DOCUMENT]->(:Document)`.
- RAG-ретривал использует гибридный поиск: вектор + keyword + графовое расширение.

## 6.6. Data quality & lineage

- **Quality rules:** completeness, freshness, range, consistency, uniqueness.
- **Lineage:** OpenLineage/DataHub от источника до UI.
- **Confidence score:** 0.0–1.0, рассчитывается из источника, давности, качества.
- **Confidentiality labels:** public, internal, confidential, secret.
- **Retention:** telemetry — 1 год hot, 5 лет warm, архив cold; документы — согласно законодательству.

## 6.7. Data security

- Шифрование at-rest (AES-256) and in-transit (TLS 1.3).
- Column-level encryption для PII и финансов.
- Tokenization кошельков цифрового тенге.
- Row-level security в PostgreSQL/ClickHouse.
- Field-level access по ABAC (например, инвестор не видит детальную телеметрию).

## 6.8. ETL / потоковая обработка

- **Batch:** Airflow/Prefect для ежедневных обновлений паспортов, отчётов, аналитики.
- **Streaming:** Kafka Streams/Flink для телеметрии, аварий, AI-рекомендаций.
- **CDC:** Debezium для PostgreSQL → Kafka.
- **3D asset pipeline:** CI/CD сборка FBX/glTF → Unreal pak → CDN.

## 6.9. Интеграция с KUT-RGP, KazSubsoil и NEB

### 6.9.1. KUT-RGP — цифровой геном ресурса

Каждый объект в демо имеет цифровой геном по протоколу KUT-RGP:

| Сущность | Описание | Пример |
|----------|----------|--------|
| Asset | Кадастровый/производственный объект | UZ-101 |
| Measurement | Измерение с датчика | PD-101 = 12,4 МПа |
| Event | Бизнес-событие | evt-004: добыто 25 тонн |
| Right | Право/лицензия/токен | лицензия LIC-1961-UZ |
| Claim | Требование: налог/пенсия/зарплата | RFSC claim |
| Transaction | Перевод прав/денег/токена | npc-tx-... |

### 6.9.2. Единая учётная книга недр (KazSubsoil)

Тройной учёт:
- **Физическая книга** — SCADA/historian + MONOLITHAR (тонны, м³, кВт·ч).
- **Финансовая книга** — цифровой банк KUT / NPC / банки (KZT, USD, DT).
- **Правовая книга** — MONOLITHAR (токены, права, лицензии, аудиторские заключения).

### 6.9.3. Национальная шина событий (NEB)

NEB заменяет модель «база данных + веб-интерфейс» на потоковую обработку событий:

- **Производители:** датчики, SCADA/HMI KUT, Edge AI, цифровой двойник, госреестры, лаборатории, транспорт, финансовые системы.
- **Потребители:** цифровой двойник, MONOLITHAR, KazSubsoil, налоговый реестр, реестр РВА-КЗ, слой цифрового тенге, аудиторы, министерства.
- **Хранение:** Industrial Event Ledger (IEL) вместо хранения «последнего значения»; любое состояние восстанавливается через replay.

**Пример события (Kafka/JSON):**

```json
{
  "event_id": "evt-004",
  "event_type": "production_batch",
  "asset_id": "UZ-101",
  "timestamp": "2025-07-29T08:18:00Z",
  "payload": {
    "quantity_tonnes": 25.0,
    "quality": { "density": 845, "sulfur_ppm": 1200, "wc": 0.78 }
  },
  "sources": ["SCADA", "SIKNN", "lab", "tank", "energy_model", "logistics"],
  "c_pop": 0.96,
  "status": "Production Accepted",
  "monolithar_cid": "bafy...",
  "consumers": ["digital_twin", "monolithar", "tax_ledger", "pension_ledger", "rva_ledger"]
}
```

## 6.10. Эталонные данные демо (пилот)

| Показатель | Значение (демо) | Маркер |
|------------|-----------------|--------|
| Добыча Узен, т/сут | 13 000 | demo |
| Обводнённость, % | 78 | demo |
| Длина трубопровода Узень–Атырау, км | 450 | fact (approx) |
| Диаметр трубопровода, мм | 720 | demo |
| Мощность НПС-2, м³/ч | 3 500 | demo |
| Мощность Атырау НПЗ, млн т/год | 5.5 | fact |
| Глубина переработки, % | 86 | fact |
| Доля лёгких нефтепродуктов, % | 70 | demo |
| Удельные выбросы CO₂, кг/т | 45 | demo |
| Тариф транспорта, USD/тонна | 12 | demo |
