Manage the Slack digest in the admin

New settings area: the webhook lives in the database and is only shown
shortened afterwards, the environment variable stays as a fallback. A switch
decides whether internal entries travel, a button sends the digest right
away, and every run is recorded with period, count, projects, result and
who triggered it.
This commit is contained in:
Matthias G
2026-08-03 12:13:57 +02:00
parent 65346d0c09
commit 0fd6da62d1
19 changed files with 2663 additions and 31 deletions
+17
View File
@@ -0,0 +1,17 @@
CREATE TABLE "app_setting" (
"key" text PRIMARY KEY NOT NULL,
"value" text NOT NULL,
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
);
--> statement-breakpoint
CREATE TABLE "report_run" (
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
"from_at" timestamp with time zone NOT NULL,
"to_at" timestamp with time zone NOT NULL,
"total" integer NOT NULL,
"projects" jsonb DEFAULT '[]'::jsonb NOT NULL,
"sent" boolean DEFAULT false NOT NULL,
"trigger" text NOT NULL,
"detail" text
);
File diff suppressed because it is too large Load Diff
+7
View File
@@ -78,6 +78,13 @@
"when": 1785579010161,
"tag": "0010_steady_wither",
"breakpoints": true
},
{
"idx": 11,
"version": "7",
"when": 1785751667390,
"tag": "0011_concerned_domino",
"breakpoints": true
}
]
}