feat: TASK 037A/B - MicroDAO Multi-Room Cleanup & UI Polish
TASK 037A: Backend Consistency - Added db/sql/037_microdao_agent_audit.sql - Added services/city-service/tools/fix_microdao_agent_consistency.py - Updated repo_city.get_public_citizens with stricter filtering (node_id, microdao_membership) - Updated PublicCitizenSummary model to include home_microdao and primary_city_room - Updated NodeProfile model and get_node_by_id to include microdaos list TASK 037B: UI Polish - Updated MicrodaoRoomsSection with role-based colors/icons and mini-map - Updated /microdao/[slug] with new Hero Block (badges, stats, orchestrator) - Updated /citizens/[slug] with MicroDAO cross-link in DAIS profile - Updated /nodes/[nodeId] with MicroDAO Presence section
This commit is contained in:
80
docs/internal/maintenance/MICRODAO_AGENT_CLEANUP_037A.md
Normal file
80
docs/internal/maintenance/MICRODAO_AGENT_CLEANUP_037A.md
Normal file
@@ -0,0 +1,80 @@
|
||||
# MicroDAO & Agent Consistency Cleanup (Task 037A)
|
||||
|
||||
**Дата:** 29 листопада 2025
|
||||
**Статус:** Реалізовано (інструменти готові)
|
||||
|
||||
Цей документ описує процедуру очистки та вирівнювання даних між агентами, MicroDAO та Citizens Layer.
|
||||
|
||||
---
|
||||
|
||||
## 1. Проблематика
|
||||
|
||||
У системі накопичилися:
|
||||
* Агенти без привʼязки до MicroDAO (orphans).
|
||||
* Публічні агенти без `public_slug` або `node_id`.
|
||||
* MicroDAO без кімнат або без `primary` кімнати.
|
||||
* Це призводить до некоректного відображення у `/citizens`, `/microdao` та `/nodes`.
|
||||
|
||||
## 2. Інструменти аудиту
|
||||
|
||||
### SQL Аудит (`db/sql/037_microdao_agent_audit.sql`)
|
||||
|
||||
Цей SQL-файл містить запити для ручної перевірки стану бази даних:
|
||||
* Пошук публічних агентів без membership.
|
||||
* Пошук агентів без `node_id`.
|
||||
* Пошук MicroDAO без кімнат.
|
||||
* Пошук MicroDAO з дубльованими primary-кімнатами.
|
||||
|
||||
Запуск (приклад):
|
||||
```bash
|
||||
cat db/sql/037_microdao_agent_audit.sql | docker exec -i dagi-postgres psql -U postgres -d daarion
|
||||
```
|
||||
|
||||
### Автоматичний скрипт (`services/city-service/tools/fix_microdao_agent_consistency.py`)
|
||||
|
||||
Скрипт для автоматичного виправлення типових помилок.
|
||||
|
||||
**Що він робить:**
|
||||
1. **Агенти:**
|
||||
* Якщо `public_slug` відсутній → встановлює `public_slug = id`.
|
||||
* Логує агентів без `node_id` та MicroDAO membership.
|
||||
2. **MicroDAO:**
|
||||
* Перевіряє наявність кімнат.
|
||||
* Якщо є кімнати, але немає `primary` → призначає кімнату з найменшим `sort_order` як primary.
|
||||
* Якщо є кілька `primary` → залишає одну, інші робить `team`.
|
||||
|
||||
**Запуск:**
|
||||
1. Зайти в контейнер `city-service` (або локально з налаштованим venv).
|
||||
2. Запустити в режимі Dry Run (тільки логування):
|
||||
```bash
|
||||
python tools/fix_microdao_agent_consistency.py
|
||||
```
|
||||
3. Застосувати зміни:
|
||||
```bash
|
||||
python tools/fix_microdao_agent_consistency.py --apply
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Зміни в API (Citizens Layer)
|
||||
|
||||
Впроваджено суворішу фільтрацію для публічних громадян (`/public/citizens`):
|
||||
* Агент повинен мати `is_public = true`.
|
||||
* `public_slug` не NULL.
|
||||
* **`node_id` не NULL.**
|
||||
* **Має хоча б одне MicroDAO membership** (`EXISTS (SELECT 1 FROM microdao_agents ...)`).
|
||||
|
||||
Це гарантує, що "сміттєві" тестові агенти не потрапляють у публічні списки.
|
||||
|
||||
Також API тепер повертає розширену інформацію:
|
||||
* `home_microdao_slug`, `home_microdao_name`
|
||||
* `primary_city_room` (об'єкт з деталями кімнати)
|
||||
|
||||
---
|
||||
|
||||
## 4. Рекомендації для Operations
|
||||
|
||||
1. Регулярно запускати `audit.sql` для моніторингу здоров'я даних.
|
||||
2. При створенні нових агентів вручну через SQL — обов'язково додавати їх у `microdao_agents` та прописувати `node_id`.
|
||||
3. При створенні MicroDAO — обов'язково створювати хоча б одну кімнату і робити її `primary`.
|
||||
|
||||
Reference in New Issue
Block a user