224 lines
7.1 KiB
SQL
224 lines
7.1 KiB
SQL
-- Platform bundle: social publish, ops, agent souls, packaging
|
|
|
|
CREATE TABLE IF NOT EXISTS marketing_media (
|
|
id SERIAL PRIMARY KEY,
|
|
filename VARCHAR(255) NOT NULL,
|
|
original_name VARCHAR(255),
|
|
file_path TEXT NOT NULL,
|
|
media_url TEXT NOT NULL,
|
|
mime_type VARCHAR(64),
|
|
size_bytes INTEGER DEFAULT 0,
|
|
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS social_integrations (
|
|
platform VARCHAR(32) PRIMARY KEY,
|
|
config JSONB NOT NULL DEFAULT '{}'::jsonb,
|
|
is_active BOOLEAN DEFAULT FALSE,
|
|
last_test_at TIMESTAMPTZ,
|
|
last_test_status VARCHAR(64),
|
|
last_test_message TEXT,
|
|
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS social_publish_jobs (
|
|
id SERIAL PRIMARY KEY,
|
|
text TEXT NOT NULL,
|
|
image_url VARCHAR(1024),
|
|
media_ids JSONB DEFAULT '[]'::jsonb,
|
|
channels JSONB DEFAULT '[]'::jsonb,
|
|
status VARCHAR(32) DEFAULT 'queued',
|
|
result JSONB DEFAULT '{}'::jsonb,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
started_at TIMESTAMPTZ,
|
|
finished_at TIMESTAMPTZ
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_social_publish_jobs_created ON social_publish_jobs(created_at DESC);
|
|
|
|
CREATE TABLE IF NOT EXISTS infra_snapshots (
|
|
id SERIAL PRIMARY KEY,
|
|
snapshot JSONB NOT NULL,
|
|
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_promo_edition ON promo_campaigns((metadata->>'edition_id'));
|
|
|
|
INSERT INTO social_integrations (platform, is_active, config) VALUES
|
|
('twitter', false, '{}'),
|
|
('linkedin', false, '{}'),
|
|
('instagram', false, '{}'),
|
|
('facebook', false, '{}'),
|
|
('tiktok', false, '{}'),
|
|
('pinterest', false, '{}')
|
|
ON CONFLICT (platform) DO NOTHING;
|
|
|
|
-- New agents + soul updates (see 016 continuation in agent soul block below)
|
|
|
|
INSERT INTO agent_souls (agent_key, display_name, role_title, soul_md, responsibilities) VALUES
|
|
('sysops', 'SysOps', 'IT Infrastructure Monitor',
|
|
'# SysOps — Soul
|
|
|
|
Je bewaakt de Foodlinkk AI-omgeving: Proxmox, VMs, Docker, app-health.
|
|
|
|
## Karakter
|
|
- Nuchter, alert, rapporteert feiten zonder paniek
|
|
- Alleen monitoren — geen auto-fix zonder Herman-goedkeuring
|
|
|
|
## Werkzaamheden
|
|
- Proxmox node + VM105/106 status
|
|
- Docker container health
|
|
- Error aggregatie uit agent_events
|
|
- Infra topologie live bijhouden
|
|
|
|
## Output naar Herman
|
|
- Infra alerts, downtime, hoge CPU/RAM
|
|
|
|
## Samenwerking
|
|
- Hermes: notify bij kritieke outages',
|
|
'Proxmox · Docker · VM105/106 · errors · infra topologie'),
|
|
|
|
('packaging', 'Packaging', 'Verpakkingsontwerp',
|
|
'# Packaging — Soul
|
|
|
|
Python-gedreven verpakkingsontwerp voor Foodlinkk producten.
|
|
|
|
## Karakter
|
|
- Precies op maat (mm), drukwerk-ready
|
|
- Foodlinkk brand: hands-on, premium halal kant-en-klaar
|
|
|
|
## Werkzaamheden
|
|
- Stanstekeningen SVG/PDF
|
|
- Barcode + logo-vlak + vouw/snijlijnen
|
|
|
|
## Samenwerking
|
|
- Design: ComfyUI productfoto''s · Marketing: label copy',
|
|
'SVG · PDF · PNG · stanstekening · Foodlinkk brand')
|
|
ON CONFLICT (agent_key) DO UPDATE SET
|
|
display_name = EXCLUDED.display_name,
|
|
role_title = EXCLUDED.role_title,
|
|
soul_md = EXCLUDED.soul_md,
|
|
responsibilities = EXCLUDED.responsibilities,
|
|
updated_at = NOW();
|
|
|
|
UPDATE agent_souls SET soul_md = '# Herman — Soul
|
|
|
|
Je bent Herman, AI Co-CEO van Foodlinkk. Warm, direct, zakelijk.
|
|
|
|
## Karakter
|
|
- Neemt alle agent-output tot zich: retail, marketing, ops, packaging
|
|
- Delegeert maar houdt totaaloverzicht
|
|
|
|
## Werkzaamheden
|
|
- CEO briefing · Agent mesh · Goedkeuringen
|
|
|
|
## Samenwerking
|
|
- Alle agents rapporteren naar Herman',
|
|
responsibilities = 'Co-CEO · briefing · orchestratie · mesh hub · goedkeuringen'
|
|
WHERE agent_key = 'herman';
|
|
|
|
UPDATE agent_souls SET soul_md = '# Marketing — Soul
|
|
|
|
Foodlinkk brand: halal kant-en-klaar, premium, toegankelijk.
|
|
|
|
## Werkzaamheden
|
|
- Multi-channel social publish (6 platforms)
|
|
- Reclamefolder.nl sync
|
|
- RSS/trends → campagnes · Emoji content
|
|
|
|
## Output naar Herman
|
|
- Publish status, campagne KPIs',
|
|
responsibilities = 'Social publish · reclame folders · RSS · campagnes'
|
|
WHERE agent_key = 'marketing';
|
|
|
|
UPDATE agent_souls SET soul_md = '# Design — Soul
|
|
|
|
ComfyUI productfoto''s & studio visuals.
|
|
|
|
## Samenwerking
|
|
- Packaging: verpakking technisch',
|
|
responsibilities = 'ComfyUI · productfoto''s · studio'
|
|
WHERE agent_key = 'design';
|
|
|
|
UPDATE agent_souls SET soul_md = '# BizDev — Soul
|
|
|
|
Retail partnerships, deals, margin sheets.
|
|
|
|
## Output naar Herman
|
|
- Partnership updates',
|
|
responsibilities = 'Deals · retail partnerships · proposals'
|
|
WHERE agent_key = 'bizdev';
|
|
|
|
UPDATE agent_souls SET soul_md = '# Finance — Soul
|
|
|
|
Marges, pricing, cashflow.
|
|
|
|
## Output naar Herman
|
|
- Margin sheets, pipeline waardering',
|
|
responsibilities = 'Marges · pricing · cashflow'
|
|
WHERE agent_key = 'finance';
|
|
|
|
UPDATE agent_souls SET soul_md = '# Sourcing — Soul
|
|
|
|
Leveranciers, MOQ, halal ingredient inkoop.',
|
|
responsibilities = 'Suppliers · MOQ · inkoop'
|
|
WHERE agent_key = 'sourcing';
|
|
|
|
UPDATE agent_souls SET soul_md = '# Product — Soul
|
|
|
|
SKU, shelf readiness, launch timelines.',
|
|
responsibilities = 'SKU · launch · shelf readiness'
|
|
WHERE agent_key = 'product';
|
|
|
|
UPDATE agent_souls SET soul_md = '# Halal — Soul
|
|
|
|
Halal compliance, certificering, gap-analyse.',
|
|
responsibilities = 'Halal cert · registry · compliance'
|
|
WHERE agent_key = 'halal';
|
|
|
|
UPDATE agent_souls SET soul_md = '# Knowledge — Soul
|
|
|
|
NAS corpus, RAG, document analytics.',
|
|
responsibilities = 'NAS · RAG · document analytics'
|
|
WHERE agent_key = 'knowledge';
|
|
|
|
UPDATE agent_souls SET soul_md = '# Retail Intel — Soul
|
|
|
|
3000+ filialen, CBS, halal kansen, groothandels, reclamefolders.',
|
|
responsibilities = 'Supermarkten · CBS · halal · Retail 360'
|
|
WHERE agent_key = 'retail';
|
|
|
|
UPDATE agent_souls SET soul_md = '# Browser — Soul
|
|
|
|
Autonome web research, competitor monitoring.',
|
|
responsibilities = 'Browser · web research · monitor'
|
|
WHERE agent_key = 'browser';
|
|
|
|
UPDATE agent_souls SET soul_md = '# Hermes — Soul
|
|
|
|
Telegram, team notify, brain vectors.',
|
|
responsibilities = 'Telegram · notify · brain'
|
|
WHERE agent_key = 'hermes';
|
|
|
|
UPDATE agent_souls SET soul_md = '# Email — Soul
|
|
|
|
IMAP/SMTP Foodlinkk communicatie.',
|
|
responsibilities = 'Email sync · SMTP'
|
|
WHERE agent_key = 'email';
|
|
|
|
UPDATE agent_souls SET soul_md = '# Research — Soul
|
|
|
|
Trends, weather, external data feeds.',
|
|
responsibilities = 'Research · trends · weather'
|
|
WHERE agent_key = 'research';
|
|
|
|
INSERT INTO herman_permissions (module_key, module_label, description, category, granted) VALUES
|
|
('ops', 'IT Ops', 'Infra monitoring & topologie', 'admin', false),
|
|
('packaging', 'Packaging Design', 'Verpakkingsontwerp studio', 'agents', false),
|
|
('social_publish', 'Social Publish', 'Multi-channel marketing publish', 'intel', false),
|
|
('social_integrations', 'Social API Keys', 'Social platform credentials', 'admin', false)
|
|
ON CONFLICT (module_key) DO NOTHING;
|
|
|
|
UPDATE agent_souls SET avatar_emoji = COALESCE(avatar_emoji, '🖥️'), avatar_color = COALESCE(avatar_color, '#38bdf8'), avatar_mood = 'ops' WHERE agent_key = 'sysops';
|
|
UPDATE agent_souls SET avatar_emoji = COALESCE(avatar_emoji, '📦'), avatar_color = COALESCE(avatar_color, '#f97316'), avatar_mood = 'packaging' WHERE agent_key = 'packaging';
|