task015 implement seo and language review flow
This commit is contained in:
@@ -233,6 +233,41 @@ POSTGRES_SCHEMA_STATEMENTS: tuple[str, ...] = (
|
||||
"ALTER TABLE article_drafts ADD COLUMN IF NOT EXISTS evidence_references JSONB NOT NULL DEFAULT '[]'::jsonb",
|
||||
"ALTER TABLE article_drafts ADD COLUMN IF NOT EXISTS unsupported_claim_warnings JSONB NOT NULL DEFAULT '[]'::jsonb",
|
||||
"ALTER TABLE article_drafts ADD COLUMN IF NOT EXISTS based_on_draft_id UUID REFERENCES article_drafts(id) ON DELETE SET NULL",
|
||||
"""
|
||||
CREATE TABLE IF NOT EXISTS article_review_reports (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
article_id UUID NOT NULL REFERENCES articles(id) ON DELETE CASCADE,
|
||||
review_kind TEXT NOT NULL CHECK (review_kind IN ('SEO', 'LANGUAGE')),
|
||||
draft_id UUID NOT NULL REFERENCES article_drafts(id) ON DELETE CASCADE,
|
||||
score INTEGER NOT NULL,
|
||||
issues JSONB NOT NULL DEFAULT '[]'::jsonb,
|
||||
recommended_slug TEXT NOT NULL,
|
||||
recommended_title TEXT NOT NULL,
|
||||
schema_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||
rules_snapshot JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
)
|
||||
""",
|
||||
"""
|
||||
CREATE TABLE IF NOT EXISTS article_review_suggestions (
|
||||
id UUID PRIMARY KEY,
|
||||
article_id UUID NOT NULL REFERENCES articles(id) ON DELETE CASCADE,
|
||||
review_kind TEXT NOT NULL CHECK (review_kind IN ('SEO', 'LANGUAGE')),
|
||||
report_id UUID NOT NULL REFERENCES article_review_reports(id) ON DELETE CASCADE,
|
||||
suggestion_key TEXT NOT NULL,
|
||||
severity TEXT NOT NULL,
|
||||
location TEXT NOT NULL,
|
||||
message TEXT NOT NULL,
|
||||
suggested_fix TEXT,
|
||||
suggested_rewrite TEXT,
|
||||
patch JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||
status TEXT NOT NULL CHECK (status IN ('PENDING', 'ACCEPTED', 'REJECTED', 'EDITED')),
|
||||
applied_text TEXT,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
UNIQUE (article_id, review_kind, suggestion_key)
|
||||
)
|
||||
""",
|
||||
f"""
|
||||
CREATE TABLE IF NOT EXISTS assets (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
@@ -401,6 +436,14 @@ POSTGRES_SCHEMA_STATEMENTS: tuple[str, ...] = (
|
||||
CREATE INDEX IF NOT EXISTS idx_script_config_version_events_site
|
||||
ON script_config_version_events (target_site_id, created_at)
|
||||
""",
|
||||
"""
|
||||
CREATE INDEX IF NOT EXISTS idx_article_review_reports_article
|
||||
ON article_review_reports (article_id, review_kind, created_at)
|
||||
""",
|
||||
"""
|
||||
CREATE INDEX IF NOT EXISTS idx_article_review_suggestions_report
|
||||
ON article_review_suggestions (report_id, status)
|
||||
""",
|
||||
)
|
||||
|
||||
|
||||
@@ -570,6 +613,41 @@ SQLITE_SCHEMA_STATEMENTS: tuple[str, ...] = (
|
||||
)
|
||||
""",
|
||||
"""
|
||||
CREATE TABLE IF NOT EXISTS article_review_reports (
|
||||
id TEXT PRIMARY KEY,
|
||||
article_id TEXT NOT NULL,
|
||||
review_kind TEXT NOT NULL,
|
||||
draft_id TEXT NOT NULL,
|
||||
score INTEGER NOT NULL,
|
||||
issues TEXT NOT NULL DEFAULT '[]',
|
||||
recommended_slug TEXT NOT NULL,
|
||||
recommended_title TEXT NOT NULL,
|
||||
schema_json TEXT NOT NULL DEFAULT '{}',
|
||||
rules_snapshot TEXT NOT NULL DEFAULT '{}',
|
||||
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)
|
||||
""",
|
||||
"""
|
||||
CREATE TABLE IF NOT EXISTS article_review_suggestions (
|
||||
id TEXT PRIMARY KEY,
|
||||
article_id TEXT NOT NULL,
|
||||
review_kind TEXT NOT NULL,
|
||||
report_id TEXT NOT NULL,
|
||||
suggestion_key TEXT NOT NULL,
|
||||
severity TEXT NOT NULL,
|
||||
location TEXT NOT NULL,
|
||||
message TEXT NOT NULL,
|
||||
suggested_fix TEXT,
|
||||
suggested_rewrite TEXT,
|
||||
patch TEXT NOT NULL DEFAULT '{}',
|
||||
status TEXT NOT NULL,
|
||||
applied_text TEXT,
|
||||
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE (article_id, review_kind, suggestion_key)
|
||||
)
|
||||
""",
|
||||
"""
|
||||
CREATE TABLE IF NOT EXISTS assets (
|
||||
id TEXT PRIMARY KEY,
|
||||
article_id TEXT NOT NULL,
|
||||
@@ -725,6 +803,14 @@ SQLITE_SCHEMA_STATEMENTS: tuple[str, ...] = (
|
||||
CREATE INDEX IF NOT EXISTS idx_script_config_version_events_site
|
||||
ON script_config_version_events (target_site_id, created_at)
|
||||
""",
|
||||
"""
|
||||
CREATE INDEX IF NOT EXISTS idx_article_review_reports_article
|
||||
ON article_review_reports (article_id, review_kind, created_at)
|
||||
""",
|
||||
"""
|
||||
CREATE INDEX IF NOT EXISTS idx_article_review_suggestions_report
|
||||
ON article_review_suggestions (report_id, status)
|
||||
""",
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user