Initial commit of Descrybe v2 without local scratch artifacts.

Drop one-shot tmp/axe scripts and agent i18n scratch so the Gitea tree is deployable.
This commit is contained in:
2026-08-09 22:47:43 +02:00
commit 8580c996c3
1285 changed files with 325780 additions and 0 deletions
@@ -0,0 +1,47 @@
-- +goose Up
-- Email campaign drafts + generated versions (Marketing suite P0).
-- Provider / unsubscribe / send log tables live in 012_integrations_email.sql.
CREATE TABLE email_campaigns (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
company_id UUID NOT NULL REFERENCES companies(id) ON DELETE CASCADE,
name TEXT NOT NULL,
template_key TEXT NOT NULL DEFAULT 'custom'
CHECK (template_key IN ('christmas', 'black_friday', 'spring', 'custom')),
status TEXT NOT NULL DEFAULT 'draft'
CHECK (status IN ('draft', 'ready', 'scheduled', 'sent', 'cancelled')),
category_ids UUID[] NOT NULL DEFAULT '{}',
product_ids UUID[] NOT NULL DEFAULT '{}',
prompt TEXT NOT NULL DEFAULT '',
use_default_prompt BOOLEAN NOT NULL DEFAULT true,
audience_filter JSONB NOT NULL DEFAULT '{}'::jsonb,
scheduled_at TIMESTAMPTZ,
sent_at TIMESTAMPTZ,
created_by UUID REFERENCES users(id) ON DELETE SET NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX email_campaigns_company_id_idx ON email_campaigns (company_id);
CREATE INDEX email_campaigns_company_status_idx ON email_campaigns (company_id, status);
CREATE TABLE email_campaign_versions (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
campaign_id UUID NOT NULL REFERENCES email_campaigns(id) ON DELETE CASCADE,
company_id UUID NOT NULL REFERENCES companies(id) ON DELETE CASCADE,
version INT NOT NULL DEFAULT 1,
subject TEXT NOT NULL DEFAULT '',
html_body TEXT NOT NULL DEFAULT '',
plain_body TEXT NOT NULL DEFAULT '',
generation_mode TEXT NOT NULL DEFAULT 'template'
CHECK (generation_mode IN ('template', 'ai')),
generated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
UNIQUE (campaign_id, version)
);
CREATE INDEX email_campaign_versions_campaign_idx ON email_campaign_versions (campaign_id, version DESC);
-- +goose Down
DROP TABLE IF EXISTS email_campaign_versions;
DROP TABLE IF EXISTS email_campaigns;