WARCH3/WCHECK1/WEXT1 完成受控上线后续自动化
Issue: WARCH3, WCHECK1, WEXT1
这个提交包含在:
@@ -0,0 +1,85 @@
|
||||
-- WCHECK1: 企微打卡摘要留存。
|
||||
-- 仅保存规范化摘要、规则快照和 hash;不保存位置、人脸、设备明文或原始 payload。
|
||||
|
||||
CREATE TABLE "wecom_checkin_daily_summaries" (
|
||||
"id" UUID NOT NULL DEFAULT gen_random_uuid(),
|
||||
"employee_id" UUID NOT NULL,
|
||||
"external_user_id_prefix" VARCHAR(32),
|
||||
"checkin_date" DATE NOT NULL,
|
||||
"record_count" INTEGER NOT NULL DEFAULT 0,
|
||||
"first_checkin_at" TIMESTAMP(3),
|
||||
"last_checkin_at" TIMESTAMP(3),
|
||||
"exception_count" INTEGER NOT NULL DEFAULT 0,
|
||||
"abnormal_count" INTEGER NOT NULL DEFAULT 0,
|
||||
"checkin_type_summary" JSONB,
|
||||
"result_summary" JSONB,
|
||||
"source_type_summary" JSONB,
|
||||
"raw_hash_digest" VARCHAR(64),
|
||||
"source_record_count" INTEGER NOT NULL DEFAULT 0,
|
||||
"last_sync_run_id" UUID,
|
||||
"archived_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "wecom_checkin_daily_summaries_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE TABLE "wecom_checkin_monthly_summaries" (
|
||||
"id" UUID NOT NULL DEFAULT gen_random_uuid(),
|
||||
"employee_id" UUID NOT NULL,
|
||||
"month" VARCHAR(7) NOT NULL,
|
||||
"start_date" DATE NOT NULL,
|
||||
"end_date" DATE NOT NULL,
|
||||
"summary_day_count" INTEGER NOT NULL DEFAULT 0,
|
||||
"checkin_day_count" INTEGER NOT NULL DEFAULT 0,
|
||||
"exception_day_count" INTEGER NOT NULL DEFAULT 0,
|
||||
"abnormal_record_count" INTEGER NOT NULL DEFAULT 0,
|
||||
"missing_day_candidate_count" INTEGER NOT NULL DEFAULT 0,
|
||||
"first_checkin_at" TIMESTAMP(3),
|
||||
"last_checkin_at" TIMESTAMP(3),
|
||||
"result_summary" JSONB,
|
||||
"raw_hash_digest" VARCHAR(64),
|
||||
"archived_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "wecom_checkin_monthly_summaries_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE TABLE "wecom_checkin_rule_snapshots" (
|
||||
"id" UUID NOT NULL DEFAULT gen_random_uuid(),
|
||||
"employee_id" UUID,
|
||||
"external_user_id_prefix" VARCHAR(32),
|
||||
"snapshot_date" DATE NOT NULL,
|
||||
"rule_hash" VARCHAR(64) NOT NULL,
|
||||
"rule_summary" JSONB,
|
||||
"source_endpoint" VARCHAR(120) NOT NULL DEFAULT '/cgi-bin/checkin/getcheckinoption',
|
||||
"archived_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "wecom_checkin_rule_snapshots_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX "wecom_checkin_daily_summaries_emp_date_ux" ON "wecom_checkin_daily_summaries"("employee_id", "checkin_date");
|
||||
CREATE INDEX "idx_wecom_checkin_daily_summaries_date" ON "wecom_checkin_daily_summaries"("checkin_date");
|
||||
CREATE INDEX "idx_wecom_checkin_daily_summaries_run" ON "wecom_checkin_daily_summaries"("last_sync_run_id");
|
||||
|
||||
CREATE UNIQUE INDEX "wecom_checkin_monthly_summaries_emp_month_ux" ON "wecom_checkin_monthly_summaries"("employee_id", "month");
|
||||
CREATE INDEX "idx_wecom_checkin_monthly_summaries_month" ON "wecom_checkin_monthly_summaries"("month");
|
||||
|
||||
CREATE UNIQUE INDEX "wecom_checkin_rule_snapshots_emp_date_hash_ux" ON "wecom_checkin_rule_snapshots"("employee_id", "snapshot_date", "rule_hash");
|
||||
CREATE INDEX "idx_wecom_checkin_rule_snapshots_date" ON "wecom_checkin_rule_snapshots"("snapshot_date");
|
||||
CREATE INDEX "idx_wecom_checkin_rule_snapshots_hash" ON "wecom_checkin_rule_snapshots"("rule_hash");
|
||||
|
||||
ALTER TABLE "wecom_checkin_daily_summaries"
|
||||
ADD CONSTRAINT "wecom_checkin_daily_summaries_employee_id_fkey"
|
||||
FOREIGN KEY ("employee_id") REFERENCES "employees"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
ALTER TABLE "wecom_checkin_monthly_summaries"
|
||||
ADD CONSTRAINT "wecom_checkin_monthly_summaries_employee_id_fkey"
|
||||
FOREIGN KEY ("employee_id") REFERENCES "employees"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
ALTER TABLE "wecom_checkin_rule_snapshots"
|
||||
ADD CONSTRAINT "wecom_checkin_rule_snapshots_employee_id_fkey"
|
||||
FOREIGN KEY ("employee_id") REFERENCES "employees"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
在新工单中引用
屏蔽一个用户