Files
microdao-daarion/docs/internal/maintenance/MICRODAO_AGENT_CLEANUP_037A.md
Apple 3ccc0e2d43 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
2025-11-29 01:35:54 -08:00

3.7 KiB
Raw Blame History

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)

Скрипт для автоматичного виправлення типових помилок.

Що він робить:

  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 (тільки логування):
    python tools/fix_microdao_agent_consistency.py
    
  3. Застосувати зміни:
    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.