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
3.7 KiB
3.7 KiB
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-кімнатами.
Запуск (приклад):
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)
Скрипт для автоматичного виправлення типових помилок.
Що він робить:
- Агенти:
- Якщо
public_slugвідсутній → встановлюєpublic_slug = id. - Логує агентів без
node_idта MicroDAO membership.
- Якщо
- MicroDAO:
- Перевіряє наявність кімнат.
- Якщо є кімнати, але немає
primary→ призначає кімнату з найменшимsort_orderяк primary. - Якщо є кілька
primary→ залишає одну, інші робитьteam.
Запуск:
- Зайти в контейнер
city-service(або локально з налаштованим venv). - Запустити в режимі Dry Run (тільки логування):
python tools/fix_microdao_agent_consistency.py - Застосувати зміни:
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_nameprimary_city_room(об'єкт з деталями кімнати)
4. Рекомендації для Operations
- Регулярно запускати
audit.sqlдля моніторингу здоров'я даних. - При створенні нових агентів вручну через SQL — обов'язково додавати їх у
microdao_agentsта прописуватиnode_id. - При створенні MicroDAO — обов'язково створювати хоча б одну кімнату і робити її
primary.