# 🚀 Memory Stack - NODA2 Quick Start

## ✅ Що вже готово:

1. **Cohere API Key** додано в .env ✅
2. **Docker Compose конфігурація** створена ✅
3. **Скрипти запуску** готові ✅

---

## 📦 Компоненти Memory Stack:

| Сервіс | Порт | Призначення | Статус |
|--------|------|-------------|--------|
| **Qdrant** | 6333, 6334 | Векторна БД | ⏳ To Start |
| **PostgreSQL** | 5433 | Реляційна БД | ⏳ To Start |
| **Neo4j** | 7474, 7687 | Графова БД | ⏳ To Start |
| **Memory Service** | 8000 | API для пам'яті | ⏳ To Start |
| **Redis** | 6379 | Кешування | ⏳ To Start |
| **Adminer** | 8080 | UI для БД | ⏳ To Start |

---

## 🚀 Запуск Memory Stack:

### Варіант 1: Через скрипт (рекомендовано)

```bash
cd /Users/apple/github-projects/microdao-daarion
./scripts/start-memory-node2.sh
```

### Варіант 2: Напряму через Docker Compose

```bash
cd /Users/apple/github-projects/microdao-daarion

# Запустити всі сервіси
docker-compose -f docker-compose.memory-node2.yml up -d

# Перевірити статус
docker-compose -f docker-compose.memory-node2.yml ps

# Переглянути логи
docker-compose -f docker-compose.memory-node2.yml logs -f
```

---

## 📝 Після запуску:

### 1. Перевірити здоров'я сервісів

```bash
# Qdrant
curl http://localhost:6333/healthz

# PostgreSQL
docker exec dagi-postgres-node2 pg_isready -U daarion

# Memory Service
curl http://localhost:8000/health

# Neo4j (може потребувати 30-40 сек)
curl http://localhost:7474
```

### 2. Ініціалізувати колекції Sofiia

```bash
# Створити колекції для Sofiia
python3 scripts/init-sofiia-memory.py
```

Це створить:
- `sofiia_messages` - історія повідомлень
- `sofiia_docs` - документація
- `sofiia_memory_items` - довгострокова пам'ять
- `sofiia_user_context` - контекст користувачів

### 3. Перевірити колекції

```bash
# Список всіх колекцій
curl http://localhost:6333/collections | jq

# Інформація про конкретну колекцію
curl http://localhost:6333/collections/sofiia_messages | jq
```

---

## 🎯 Інтерфейси:

### Qdrant Dashboard
- **URL:** http://localhost:6333/dashboard
- **Функції:** Перегляд колекцій, пошук векторів, статистика

### Neo4j Browser
- **URL:** http://localhost:7474
- **Login:** neo4j
- **Password:** daarion_node2_secret
- **Функції:** Візуалізація графу, Cypher запити

### Adminer (PostgreSQL UI)
- **URL:** http://localhost:8080
- **System:** PostgreSQL
- **Server:** postgres-node2
- **Username:** daarion
- **Password:** daarion_secret_node2
- **Database:** daarion_memory

### Memory Service API
- **Health:** http://localhost:8000/health
- **API Docs:** http://localhost:8000/docs (Swagger UI)
- **ReDoc:** http://localhost:8000/redoc

---

## 🔌 Підключення до Sofiia:

### Для OpenClaw:

```json
{
  "agents": {
    "list": [
      {
        "id": "sofiia",
        "memory": {
          "enabled": true,
          "serviceUrl": "http://localhost:8000",
          "collections": {
            "messages": "sofiia_messages",
            "docs": "sofiia_docs",
            "memory": "sofiia_memory_items",
            "context": "sofiia_user_context"
          }
        }
      }
    ]
  }
}
```

### Для Python коду:

```python
import requests

# Збереження повідомлення
response = requests.post(
    "http://localhost:8000/agents/sofiia/memory",
    json={
        "user_id": "telegram:123456",
        "channel_id": "telegram:sofiia",
        "content": "User asked about DAARION architecture",
        "role": "user",
        "metadata": {
            "topic": "architecture",
            "project": "DAARION"
        }
    }
)

# Отримання контексту
context = requests.get(
    "http://localhost:8000/agents/sofiia/context",
    params={
        "user_id": "telegram:123456",
        "query": "архітектура",
        "limit": 10
    }
)
```

---

## 🔧 Корисні команди:

### Docker Compose

```bash
# Зупинити всі сервіси
docker-compose -f docker-compose.memory-node2.yml down

# Перезапустити конкретний сервіс
docker-compose -f docker-compose.memory-node2.yml restart memory-service-node2

# Переглянути логи сервісу
docker-compose -f docker-compose.memory-node2.yml logs -f memory-service-node2

# Статус всіх сервісів
docker-compose -f docker-compose.memory-node2.yml ps
```

### Qdrant

```bash
# Список колекцій
curl http://localhost:6333/collections

# Створити колекцію вручну
curl -X PUT http://localhost:6333/collections/test_collection \
  -H "Content-Type: application/json" \
  -d '{"vectors": {"size": 1024, "distance": "Cosine"}}'

# Видалити колекцію
curl -X DELETE http://localhost:6333/collections/test_collection
```

### PostgreSQL

```bash
# Підключитись до БД
docker exec -it dagi-postgres-node2 psql -U daarion -d daarion_memory

# Створити таблицю
CREATE TABLE test_table (
    id SERIAL PRIMARY KEY,
    name TEXT
);

# Переглянути таблиці
\dt
```

### Neo4j

```bash
# Підключитись через Cypher Shell
docker exec -it dagi-neo4j-node2 cypher-shell -u neo4j -p daarion_node2_secret

# Створити тестовий вузол
CREATE (n:Test {name: 'Sofiia'}) RETURN n;

# Переглянути всі вузли
MATCH (n) RETURN n LIMIT 10;
```

---

## 📊 Моніторинг:

### Перевірка використання ресурсів

```bash
# Всі контейнери
docker stats --no-stream

# Конкретний контейнер
docker stats --no-stream dagi-qdrant-node2 dagi-postgres-node2 dagi-neo4j-node2
```

### Перевірка дискового простору

```bash
# Розмір даних
du -sh /Users/apple/github-projects/microdao-daarion/data/*

# Docker volumes
docker volume ls
docker system df
```

---

## 🔄 Гібридний режим (NODA1 + NODA2):

### Увімкнути доступ до NODA1:

Відкоментуйте в `docker-compose.memory-node2.yml`:

```yaml
environment:
  # Remote NODA1 access
  - REMOTE_QDRANT_HOST=144.76.224.179
  - REMOTE_QDRANT_PORT=6333
  - REMOTE_DATABASE_URL=postgresql://daarion_reader:***@144.76.224.179:5432/daarion_memory
  - READ_ONLY_MODE=false
```

### Використання:

```python
# Локальна пам'ять (NODA2)
local_memory = MemoryService(url="http://localhost:8000")

# Віддалена пам'ять (NODA1)
remote_memory = MemoryService(url="http://144.76.224.179:8000")

# Гібридний пошук
results = await hybrid_search(
    query="архітектура",
    local_service=local_memory,
    remote_service=remote_memory
)
```

---

## 🚨 Troubleshooting:

### Проблема: Qdrant не стартує

```bash
# Перевірити логи
docker logs dagi-qdrant-node2

# Перевірити права доступу
ls -la /Users/apple/github-projects/microdao-daarion/data/qdrant-node2

# Перезапустити
docker-compose -f docker-compose.memory-node2.yml restart qdrant-node2
```

### Проблема: PostgreSQL не приймає підключення

```bash
# Перевірити чи готовий
docker exec dagi-postgres-node2 pg_isready

# Перевірити логи
docker logs dagi-postgres-node2

# Перевірити пароль
docker exec -it dagi-postgres-node2 psql -U daarion -d daarion_memory
```

### Проблема: Memory Service не бачить Qdrant

```bash
# Перевірити мережу
docker network inspect dagi-memory-network-node2

# Перевірити DNS
docker exec dagi-memory-service-node2 ping qdrant-node2

# Перевірити з'єднання
docker exec dagi-memory-service-node2 curl http://qdrant-node2:6333/healthz
```

---

## ✅ Чек-лист:

- [ ] Cohere API Key в .env
- [ ] Docker Compose запущено
- [ ] Всі сервіси healthy
- [ ] Колекції Sofiia створено
- [ ] Memory Service API доступний
- [ ] UI (Qdrant, Neo4j, Adminer) відкриваються
- [ ] OpenClaw налаштовано
- [ ] Тестове повідомлення збережено

---

## 🎯 Наступні кроки після запуску:

1. **Запустити Memory Stack**
   ```bash
   ./scripts/start-memory-node2.sh
   ```

2. **Ініціалізувати колекції**
   ```bash
   python3 scripts/init-sofiia-memory.py
   ```

3. **Налаштувати OpenClaw**
   - Додати конфігурацію пам'яті

4. **Протестувати**
   - Зберегти тестове повідомлення
   - Отримати контекст
   - Перевірити в Qdrant UI

5. **Підключити Sofiia**
   - Telegram бот з пам'яттю
   - Notion інтеграція
   - GitHub інтеграція

---

**Готові до запуску! 🚀**

```bash
./scripts/start-memory-node2.sh
```
