Unveränderter Stand von certvia/dev (a48c5fb) plus Craftvia-Spezifikation und Brandbook unter docs/craftvia/. ISMS-Module werden im Folgecommit entfernt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
159 lines
6.0 KiB
SQL
159 lines
6.0 KiB
SQL
-- Globale Richtlinien-Vorlagen (Plattform-Ebene, KEIN tenantId/RLS — analog implementation_hints).
|
|
-- Master-Quelle für den Mandanten-Import; Versionierung (DRAFT/PUBLISHED) + Sprache (locale).
|
|
|
|
-- CreateEnum
|
|
CREATE TYPE "PolicyTemplateStatus" AS ENUM ('DRAFT', 'PUBLISHED', 'ARCHIVED');
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "policy_template_versions" (
|
|
"id" TEXT NOT NULL,
|
|
"version" TEXT NOT NULL,
|
|
"status" "PolicyTemplateStatus" NOT NULL DEFAULT 'DRAFT',
|
|
"notes" TEXT,
|
|
"published_by" TEXT,
|
|
"published_at" TIMESTAMP(3),
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "policy_template_versions_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "policy_template_docs" (
|
|
"id" TEXT NOT NULL,
|
|
"version_id" TEXT NOT NULL,
|
|
"locale" TEXT NOT NULL,
|
|
"code" TEXT NOT NULL,
|
|
"type" "PolicyDocType" NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"doc_version" TEXT NOT NULL DEFAULT '1.0',
|
|
"policy_code" TEXT,
|
|
"fulfills" TEXT[] DEFAULT ARRAY[]::TEXT[],
|
|
"domain" "Domain",
|
|
"raw_markdown" TEXT NOT NULL,
|
|
"order_idx" INTEGER NOT NULL DEFAULT 0,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "policy_template_docs_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "policy_template_requirements" (
|
|
"id" TEXT NOT NULL,
|
|
"version_id" TEXT NOT NULL,
|
|
"locale" TEXT NOT NULL,
|
|
"req_id" TEXT NOT NULL,
|
|
"policy_code" TEXT NOT NULL,
|
|
"control" TEXT NOT NULL,
|
|
"obligation" TEXT NOT NULL,
|
|
"condition" TEXT,
|
|
"requirement" TEXT NOT NULL,
|
|
"implementation" TEXT NOT NULL,
|
|
"va_codes" TEXT[] DEFAULT ARRAY[]::TEXT[],
|
|
"nachweis_link" TEXT,
|
|
"order_idx" INTEGER NOT NULL DEFAULT 0,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "policy_template_requirements_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "policy_template_variables" (
|
|
"id" TEXT NOT NULL,
|
|
"version_id" TEXT NOT NULL,
|
|
"locale" TEXT NOT NULL,
|
|
"key" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"kind" TEXT NOT NULL,
|
|
"group_name" TEXT,
|
|
"value" TEXT NOT NULL,
|
|
"required" BOOLEAN NOT NULL DEFAULT false,
|
|
"order_idx" INTEGER NOT NULL DEFAULT 0,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "policy_template_variables_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "policy_template_baseline_params" (
|
|
"id" TEXT NOT NULL,
|
|
"version_id" TEXT NOT NULL,
|
|
"locale" TEXT NOT NULL,
|
|
"bl_id" TEXT NOT NULL,
|
|
"section" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"vorgabe" TEXT NOT NULL,
|
|
"order_idx" INTEGER NOT NULL DEFAULT 0,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "policy_template_baseline_params_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "policy_template_evidence" (
|
|
"id" TEXT NOT NULL,
|
|
"version_id" TEXT NOT NULL,
|
|
"locale" TEXT NOT NULL,
|
|
"nr" INTEGER NOT NULL,
|
|
"policy_code" TEXT NOT NULL,
|
|
"nachweis" TEXT NOT NULL,
|
|
"quelle" TEXT NOT NULL,
|
|
"verantwortlich" TEXT NOT NULL,
|
|
"turnus" TEXT NOT NULL,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "policy_template_evidence_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "policy_template_versions_version_key" ON "policy_template_versions"("version");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "policy_template_versions_status_idx" ON "policy_template_versions"("status");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "policy_template_docs_version_id_locale_idx" ON "policy_template_docs"("version_id", "locale");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "policy_template_docs_version_id_locale_code_key" ON "policy_template_docs"("version_id", "locale", "code");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "policy_template_requirements_version_id_locale_idx" ON "policy_template_requirements"("version_id", "locale");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "policy_template_requirements_version_id_locale_req_id_key" ON "policy_template_requirements"("version_id", "locale", "req_id");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "policy_template_variables_version_id_locale_idx" ON "policy_template_variables"("version_id", "locale");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "policy_template_variables_version_id_locale_key_key" ON "policy_template_variables"("version_id", "locale", "key");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "policy_template_baseline_params_version_id_locale_idx" ON "policy_template_baseline_params"("version_id", "locale");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "policy_template_baseline_params_version_id_locale_bl_id_key" ON "policy_template_baseline_params"("version_id", "locale", "bl_id");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "policy_template_evidence_version_id_locale_idx" ON "policy_template_evidence"("version_id", "locale");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "policy_template_evidence_version_id_locale_nr_key" ON "policy_template_evidence"("version_id", "locale", "nr");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "policy_template_docs" ADD CONSTRAINT "policy_template_docs_version_id_fkey" FOREIGN KEY ("version_id") REFERENCES "policy_template_versions"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "policy_template_requirements" ADD CONSTRAINT "policy_template_requirements_version_id_fkey" FOREIGN KEY ("version_id") REFERENCES "policy_template_versions"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "policy_template_variables" ADD CONSTRAINT "policy_template_variables_version_id_fkey" FOREIGN KEY ("version_id") REFERENCES "policy_template_versions"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "policy_template_baseline_params" ADD CONSTRAINT "policy_template_baseline_params_version_id_fkey" FOREIGN KEY ("version_id") REFERENCES "policy_template_versions"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "policy_template_evidence" ADD CONSTRAINT "policy_template_evidence_version_id_fkey" FOREIGN KEY ("version_id") REFERENCES "policy_template_versions"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|