# SEED_RECOVERY — Аварійне відновлення міста ## Коли використовувати Цей процес використовується коли: - База даних була повністю втрачена - Немає доступних бекапів - Потрібно швидко відновити мінімально робочий стан DAARION City --- ## Крок 1: Переконатися що база порожня ```bash # Перевірити чи є дані docker exec daarion-postgres psql -U postgres -d daarion -c "SELECT COUNT(*) FROM microdao;" # Якщо є дані - очистити (ОБЕРЕЖНО!) docker exec daarion-postgres psql -U postgres -d daarion -c "TRUNCATE TABLE microdao, agents, city_rooms CASCADE;" ``` --- ## Крок 2: Застосувати міграції ```bash cd /opt/microdao-daarion # Застосувати всі міграції for f in migrations/*.sql; do echo "Applying: $f" docker exec -i daarion-postgres psql -U postgres -d daarion < "$f" 2>&1 | grep -v "ERROR\|NOTICE" || true done ``` --- ## Крок 3: Запустити seed-скрипт ```bash # Встановити змінні оточення export DATABASE_URL="postgresql://postgres:postgres@localhost:5432/daarion" # Запустити seed python3 scripts/seed_full_city_reset.py ``` Очікуваний вивід: ``` 🏙️ DAARION City Emergency Recovery ============================================================ 🔗 Connecting to database... ✅ Connected 📦 Seeding MicroDAOs... ✅ DAARION DAO ✅ Energy Union ✅ GreenFood DAO ✅ Soul Retreat Hub ✅ Seeded 4 MicroDAOs 🤖 Seeding core agents (NODE1)... ✅ DAARWIZZ ✅ Helion ✅ GreenFood Bot ✅ Soul Bot ✅ Seeded 4 core agents 🔗 Linking agents to MicroDAOs... ✅ Linked daarwizz → dao_daarion ✅ Linked helion → dao_energy ✅ Linked greenfood → dao_greenfood ✅ Linked soul → dao_soul ✅ Linked agents to MicroDAOs ============================================================ ✅ Recovery complete! MicroDAOs: 4 Agents: 4 📝 Next steps: 1. Run migrations if needed 2. Run scripts/sync-node2-dagi-agents.py for NODE2 agents 3. Upload logos/banners to MinIO if not already done ============================================================ ``` --- ## Крок 4: Відновити DAGI-агентів NODE2 ```bash python3 scripts/sync-node2-dagi-agents.py ``` Це додасть ~50 DAGI-агентів для NODE2 з `config/agents_city_mapping.yaml`. --- ## Крок 5: Перевірити відновлення ### Перевірка MicroDAOs ```bash docker exec daarion-postgres psql -U postgres -d daarion -c " SELECT slug, name, district, is_platform FROM microdao ORDER BY pinned_weight; " ``` Очікуваний результат: ``` slug | name | district | is_platform --------------+-----------------+----------+------------- daarion | DAARION DAO | Core | t energy-union | Energy Union | Energy | t greenfood | GreenFood DAO | Green | t soul-retreat | Soul Retreat Hub| Soul | t ``` ### Перевірка агентів ```bash docker exec daarion-postgres psql -U postgres -d daarion -c " SELECT COUNT(*) as total, COUNT(*) FILTER (WHERE node_id = 'node-1-hetzner-gex44') as node1, COUNT(*) FILTER (WHERE node_id = 'node-2-macbook-m4max') as node2 FROM agents; " ``` ### Перевірка через API ```bash # MicroDAOs curl -s "https://daarion.space/api/city/microdao?limit=4" | python3 -m json.tool | head -20 # Agents curl -s "https://daarion.space/api/city/agents?limit=5" | python3 -m json.tool | head -20 ``` --- ## Крок 6: Завантажити логотипи/банери в MinIO (якщо потрібно) Якщо логотипи ще не завантажені в MinIO: 1. Відкрити MinIO Console: `http://localhost:9001` (або `https://minio.daarion.space`) 2. Створити bucket `daarion-assets` (якщо не існує) 3. Завантажити файли: - `microdao/logo/daarion.png` - `microdao/logo/energy-union.png` - `microdao/logo/greenfood.png` - `microdao/logo/soul-retreat.png` 4. Встановити public read policy для bucket Або використати MinIO CLI: ```bash # Встановити mc (MinIO Client) # https://min.io/docs/minio/linux/reference/minio-mc.html # Налаштувати alias mc alias set local http://localhost:9000 assets-admin # Завантажити файли mc cp ./assets/logos/daarion.png local/daarion-assets/microdao/logo/daarion.png mc cp ./assets/logos/energy-union.png local/daarion-assets/microdao/logo/energy-union.png # ... і т.д. ``` --- ## Що відновлюється ### ✅ Відновлюється seed-скриптом: - 4 базові MicroDAOs (DAARION, Energy Union, GreenFood, Soul) - 4 core агентів NODE1 (DAARWIZZ, Helion, GreenFood Bot, Soul Bot) - Зв'язки агентів з MicroDAOs ### ❌ НЕ відновлюється автоматично: - City Rooms (потрібно запустити `scripts/seed_city_rooms.py`) - DAGI-агенти NODE2 (потрібно запустити `scripts/sync-node2-dagi-agents.py`) - Node cache дані (відновляться через heartbeat) - Логотипи/банери файли (потрібно завантажити в MinIO) --- ## Швидкий чекліст - [ ] База даних створена та порожня - [ ] Всі міграції застосовані - [ ] `seed_full_city_reset.py` виконано успішно - [ ] `sync-node2-dagi-agents.py` виконано (для NODE2) - [ ] Логотипи завантажені в MinIO - [ ] API повертає дані - [ ] Frontend відображає MicroDAOs та агентів --- ## Troubleshooting ### Помилка: "relation does not exist" Міграції не застосовані. Запустити Крок 2. ### Помилка: "duplicate key value" Дані вже існують. Seed-скрипт використовує `ON CONFLICT`, тому це нормально. ### Помилка: "connection refused" PostgreSQL не запущений: ```bash docker compose -f docker-compose.db.yml up -d db ``` ### Логотипи не відображаються 1. Перевірити що файли в MinIO 2. Перевірити що bucket має public read policy 3. Перевірити що URL в БД правильні: ```bash docker exec daarion-postgres psql -U postgres -d daarion -c "SELECT slug, logo_url FROM microdao;" ```