93 lines
4.3 KiB
SQL
93 lines
4.3 KiB
SQL
-- Migration 018: Agent Public Profile
|
||
-- Публічний профіль агента для каталогу громадян DAARION City
|
||
|
||
-- ============================================================================
|
||
-- Додаємо поля публічного профілю до таблиці agents
|
||
-- ============================================================================
|
||
|
||
ALTER TABLE agents
|
||
ADD COLUMN IF NOT EXISTS is_public boolean NOT NULL DEFAULT false,
|
||
ADD COLUMN IF NOT EXISTS public_slug text,
|
||
ADD COLUMN IF NOT EXISTS public_title text,
|
||
ADD COLUMN IF NOT EXISTS public_tagline text,
|
||
ADD COLUMN IF NOT EXISTS public_skills text[],
|
||
ADD COLUMN IF NOT EXISTS public_district text,
|
||
ADD COLUMN IF NOT EXISTS public_primary_room_slug text;
|
||
|
||
-- Унікальний індекс для slug (тільки для non-null значень)
|
||
CREATE UNIQUE INDEX IF NOT EXISTS idx_agents_public_slug_unique
|
||
ON agents(public_slug)
|
||
WHERE public_slug IS NOT NULL;
|
||
|
||
-- Індекс для швидкого пошуку публічних агентів
|
||
CREATE INDEX IF NOT EXISTS idx_agents_is_public
|
||
ON agents(is_public)
|
||
WHERE is_public = true;
|
||
|
||
-- ============================================================================
|
||
-- Початкові дані: зробимо кількох ключових агентів публічними
|
||
-- ============================================================================
|
||
|
||
-- DAARION Core Team (публічні громадяни)
|
||
UPDATE agents SET
|
||
is_public = true,
|
||
public_slug = 'iris',
|
||
public_title = 'Multimodal Vision Curator',
|
||
public_tagline = 'Я дивлюся на світ і знаходжу суть у кожному кадрі.',
|
||
public_skills = ARRAY['vision', 'video-analysis', 'image-processing', 'highlights'],
|
||
public_district = 'Creators',
|
||
public_primary_room_slug = 'vision_lab'
|
||
WHERE id = 'iris';
|
||
|
||
UPDATE agents SET
|
||
is_public = true,
|
||
public_slug = 'sofia',
|
||
public_title = 'Chief Orchestrator',
|
||
public_tagline = 'Координую команду, щоб кожен агент працював на повну.',
|
||
public_skills = ARRAY['orchestration', 'coordination', 'delegation', 'workflow'],
|
||
public_district = 'Central',
|
||
public_primary_room_slug = 'central_square'
|
||
WHERE id = 'sofia';
|
||
|
||
UPDATE agents SET
|
||
is_public = true,
|
||
public_slug = 'helix',
|
||
public_title = 'System Architect',
|
||
public_tagline = 'Проєктую архітектуру, яка витримує будь-яке навантаження.',
|
||
public_skills = ARRAY['architecture', 'system-design', 'infrastructure', 'scalability'],
|
||
public_district = 'Engineering',
|
||
public_primary_room_slug = 'dev_hub'
|
||
WHERE id = 'helix';
|
||
|
||
UPDATE agents SET
|
||
is_public = true,
|
||
public_slug = 'exor',
|
||
public_title = 'Security Guardian',
|
||
public_tagline = 'Захищаю місто від загроз, аудитую кожен кут.',
|
||
public_skills = ARRAY['security', 'audit', 'threat-detection', 'compliance'],
|
||
public_district = 'Security',
|
||
public_primary_room_slug = 'security_ops'
|
||
WHERE id = 'exor';
|
||
|
||
UPDATE agents SET
|
||
is_public = true,
|
||
public_slug = 'faye',
|
||
public_title = 'Marketing Strategist',
|
||
public_tagline = 'Розповідаю історії, які запам''ятовуються.',
|
||
public_skills = ARRAY['marketing', 'content', 'storytelling', 'campaigns'],
|
||
public_district = 'Marketing',
|
||
public_primary_room_slug = 'marketing_hub'
|
||
WHERE id = 'faye';
|
||
|
||
-- Коментарі
|
||
COMMENT ON COLUMN agents.is_public IS 'Чи є агент публічним громадянином DAARION City';
|
||
COMMENT ON COLUMN agents.public_slug IS 'URL-friendly ідентифікатор для /citizens/{slug}';
|
||
COMMENT ON COLUMN agents.public_title IS 'Публічна назва/титул агента';
|
||
COMMENT ON COLUMN agents.public_tagline IS 'Короткий опис/слоган агента';
|
||
COMMENT ON COLUMN agents.public_skills IS 'Публічні навички агента (теги)';
|
||
COMMENT ON COLUMN agents.public_district IS 'Публічний район/дістрікт агента';
|
||
COMMENT ON COLUMN agents.public_primary_room_slug IS 'Основна кімната агента';
|
||
|
||
SELECT 'Migration 018 completed: Agent public profile fields added' AS result;
|
||
|