From 845fa70af7ae66e9bad1acfc7336904594d70922 Mon Sep 17 00:00:00 2001 From: neo Date: Mon, 14 Sep 2026 13:59:24 +0500 Subject: [PATCH] =?UTF-8?q?docs:=20=D0=AD=D1=82=D0=B0=D0=BF=204=20=D0=B3?= =?UTF-8?q?=D1=80=D0=B0=D1=84=20=E2=80=94=20AGE=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=D0=B5=D1=82=20(Cypher)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 362280d..30d6318 100644 --- a/README.md +++ b/README.md @@ -74,15 +74,24 @@ **KPI:** 4+ канала, сквозная аналитика. -### Этап 4 — граф (Memgraph / Apache AGE) -**Цель:** обходы и анализ связей. +### Этап 4 — граф (Apache AGE) +**Статус:** ✅ РЕАЛИЗОВАНО (2026-09-14) +**Цель:** обходы и анализ связей через Cypher. -- Проекция: Atom → Topic → Entity → Project → Asset. -- graph_outbox — Postgres → воркер → Memgraph (только id + минимальные атрибуты, тело атома НЕ хранится). -- Идемпотентные операции (MERGE по id), ребилд из Postgres за час. -- Сборка через обходы графа (топологическая сортировка). +- Проекция: Atom (label=Atom, property=atom_id). +- graph_outbox — atom_relations (Postgres) → AGE через cypher() (OpenCypher). +- Тело атома НЕ хранится — только id + type (минимальные атрибуты). +- Синхронизация: `python3 stage4/graph_outbox.py --sync` (идемпотентно — DELETE + CREATE). +- Обход связей: `python3 stage4/graph_outbox.py --query` (MATCH по atom_id). -**KPI:** граф-проекция, сборка через обходы. +**Ключевые факты AGE:** +- `SET search_path TO ag_catalog;` перед каждым cypher()-запросом. +- Cypher: `CREATE`/`MATCH`/`RETURN` вместо устаревших `vertices()`/`edges()`. +- `cypher('graph', $$ ... $$) AS (v agtype)` — `$$` в SQL-файле, не в shell. +- Тестировать запросы: `docker exec -i age-db psql -U atom -d content_atom < file.cypher`. +- AGE_PASSWORD в контейнере = `agepass123` (не atompass123). + +**KPI:** граф-проекция, обходы связей через Cypher. ### Этап 5 — панель (дашборд смысла) **Цель:** управление атомами вместо статей.