stage4: graph_outbox на AGE (Cypher, fixed password+syntax)
This commit is contained in:
1 parent
cae85627fe
commit
a93aa24b54
4 files changed
+469
-23
No files matched your search
@@ -115,3 +115,77 @@ CREATE TABLE atom_relations (
|
||||
CREATE INDEX ON atom_relations (atom_id_a, relation_type);
|
||||
CREATE INDEX ON atom_relations (atom_id_b, relation_type);
|
||||
CREATE INDEX ON atom_relations (similarity DESC);
|
||||
|
||||
-- Медиа-активы (stage 3)
|
||||
CREATE TABLE assets (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
project_id UUID REFERENCES projects(id) ON DELETE CASCADE,
|
||||
asset_type TEXT NOT NULL, -- image | audio | video | subtitle
|
||||
format TEXT NOT NULL, -- mp4 | mp3 | wav | jpg | png | srt
|
||||
uri TEXT, -- путь или URL
|
||||
title TEXT,
|
||||
duration_sec NUMERIC,
|
||||
transcript TEXT,
|
||||
meta JSONB DEFAULT '{}',
|
||||
size_bytes BIGINT,
|
||||
created_at TIMESTAMPTZ DEFAULT now()
|
||||
);
|
||||
CREATE INDEX ON assets (project_id, asset_type);
|
||||
|
||||
-- Привязка атомов к медиа (stage 3)
|
||||
CREATE TABLE atom_assets (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
atom_id UUID REFERENCES atoms(id) ON DELETE CASCADE,
|
||||
asset_id UUID REFERENCES assets(id) ON DELETE CASCADE,
|
||||
start_time_sec NUMERIC, -- таймкод начала
|
||||
end_time_sec NUMERIC, -- таймкод конца
|
||||
role TEXT, -- narration | b-roll | caption
|
||||
created_at TIMESTAMPTZ DEFAULT now(),
|
||||
UNIQUE (atom_id, asset_id, start_time_sec)
|
||||
);
|
||||
CREATE INDEX ON atom_assets (asset_id);
|
||||
CREATE INDEX ON atom_assets (atom_id);
|
||||
|
||||
-- Композиции (stage 3)
|
||||
CREATE TABLE compositions (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
project_id UUID REFERENCES projects(id) ON DELETE CASCADE,
|
||||
channel TEXT NOT NULL, -- youtube | podcast | newsletter | web | telegram
|
||||
slug TEXT,
|
||||
title TEXT,
|
||||
status TEXT DEFAULT 'draft', -- draft | building | ready | scheduled | published
|
||||
recipe JSONB NOT NULL, -- правила сборки: типы, темы, порядок
|
||||
atom_ids UUID[] NOT NULL, -- порядок атомов в композиции
|
||||
content TEXT,
|
||||
meta JSONB DEFAULT '{}',
|
||||
scheduled_at TIMESTAMPTZ,
|
||||
published_at TIMESTAMPTZ,
|
||||
created_at TIMESTAMPTZ DEFAULT now(),
|
||||
UNIQUE (project_id, channel, slug)
|
||||
);
|
||||
CREATE INDEX ON compositions (project_id, channel, status);
|
||||
|
||||
-- Публикации (stage 3)
|
||||
CREATE TABLE publications (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
composition_id UUID REFERENCES compositions(id) ON DELETE CASCADE,
|
||||
target TEXT NOT NULL, -- URL, channel_id, video_id, list_id
|
||||
external_id TEXT,
|
||||
published_at TIMESTAMPTZ DEFAULT now(),
|
||||
metrics JSONB DEFAULT '{}' -- views, clicks, conversions, revenue
|
||||
);
|
||||
CREATE INDEX ON publications (composition_id);
|
||||
|
||||
-- Промпты как данные (stage 3)
|
||||
CREATE TABLE prompts (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
slug TEXT NOT NULL,
|
||||
version TEXT NOT NULL DEFAULT 'v1',
|
||||
description TEXT,
|
||||
system_prompt TEXT,
|
||||
user_prompt TEXT,
|
||||
params JSONB DEFAULT '{}', -- model, temperature, max_tokens
|
||||
created_at TIMESTAMPTZ DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ DEFAULT now(),
|
||||
UNIQUE (slug, version)
|
||||
);
|
||||
Reference in new issue
Block a user