实现制度签收轻量回执(05-28-oa-policy-acknowledgement-v1)
这个提交包含在:
@@ -0,0 +1,43 @@
|
||||
ALTER TABLE "portal_announcements"
|
||||
ADD COLUMN "category" TEXT NOT NULL DEFAULT 'general',
|
||||
ADD COLUMN "requires_acknowledgement" BOOLEAN NOT NULL DEFAULT false,
|
||||
ADD COLUMN "acknowledgement_statement" TEXT,
|
||||
ADD COLUMN "acknowledgement_due_at" TIMESTAMP(3);
|
||||
|
||||
CREATE TABLE "portal_announcement_acknowledgements" (
|
||||
"id" UUID NOT NULL,
|
||||
"announcement_id" UUID NOT NULL,
|
||||
"employee_id" UUID NOT NULL,
|
||||
"acknowledged_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"statement_snapshot" TEXT NOT NULL,
|
||||
"title_snapshot" TEXT NOT NULL,
|
||||
"summary_snapshot" TEXT NOT NULL,
|
||||
"actor_id" UUID NOT NULL,
|
||||
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "portal_announcement_acknowledgements_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX "portal_announcement_acknowledgements_announcement_id_employee_id_key"
|
||||
ON "portal_announcement_acknowledgements"("announcement_id", "employee_id");
|
||||
|
||||
CREATE INDEX "portal_announcement_acknowledgements_employee_id_acknowledged_at_idx"
|
||||
ON "portal_announcement_acknowledgements"("employee_id", "acknowledged_at");
|
||||
|
||||
CREATE INDEX "portal_announcement_acknowledgements_announcement_id_acknowledged_at_idx"
|
||||
ON "portal_announcement_acknowledgements"("announcement_id", "acknowledged_at");
|
||||
|
||||
ALTER TABLE "portal_announcement_acknowledgements"
|
||||
ADD CONSTRAINT "portal_announcement_acknowledgements_announcement_id_fkey"
|
||||
FOREIGN KEY ("announcement_id") REFERENCES "portal_announcements"("id")
|
||||
ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
ALTER TABLE "portal_announcement_acknowledgements"
|
||||
ADD CONSTRAINT "portal_announcement_acknowledgements_employee_id_fkey"
|
||||
FOREIGN KEY ("employee_id") REFERENCES "employees"("id")
|
||||
ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
ALTER TABLE "portal_announcement_acknowledgements"
|
||||
ADD CONSTRAINT "portal_announcement_acknowledgements_actor_id_fkey"
|
||||
FOREIGN KEY ("actor_id") REFERENCES "employees"("id")
|
||||
ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
+37
-8
@@ -683,6 +683,8 @@ model Employee {
|
||||
email_login_codes EmailLoginCode[]
|
||||
lifecycle_events EmployeeLifecycleEvent[]
|
||||
checklist_tasks EmployeeChecklistTask[]
|
||||
portal_announcement_acknowledgements PortalAnnouncementAcknowledgement[] @relation("PortalAnnouncementAcknowledgementEmployee")
|
||||
portal_announcement_acknowledgement_actions PortalAnnouncementAcknowledgement[] @relation("PortalAnnouncementAcknowledgementActor")
|
||||
presence_records EmployeePresence[]
|
||||
attendance_records AttendanceRecord[]
|
||||
weekly_reports WeeklyReport[]
|
||||
@@ -1876,24 +1878,51 @@ model PaymentBatchReceiptAttachment {
|
||||
}
|
||||
|
||||
model PortalAnnouncement {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
title String
|
||||
summary String
|
||||
link_url String?
|
||||
starts_at DateTime?
|
||||
ends_at DateTime?
|
||||
enabled Boolean @default(true)
|
||||
priority Int @default(100)
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
title String
|
||||
summary String
|
||||
link_url String?
|
||||
starts_at DateTime?
|
||||
ends_at DateTime?
|
||||
enabled Boolean @default(true)
|
||||
priority Int @default(100)
|
||||
category String @default("general")
|
||||
requires_acknowledgement Boolean @default(false)
|
||||
acknowledgement_statement String?
|
||||
acknowledgement_due_at DateTime?
|
||||
|
||||
created_at DateTime @default(now())
|
||||
created_by String? @db.Uuid
|
||||
updated_at DateTime @default(now()) @updatedAt
|
||||
updated_by String? @db.Uuid
|
||||
|
||||
acknowledgements PortalAnnouncementAcknowledgement[]
|
||||
|
||||
@@index([enabled, priority, starts_at, ends_at], map: "idx_portal_announcements_enabled_priority")
|
||||
@@map("portal_announcements")
|
||||
}
|
||||
|
||||
model PortalAnnouncementAcknowledgement {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
announcement_id String @db.Uuid
|
||||
employee_id String @db.Uuid
|
||||
acknowledged_at DateTime @default(now())
|
||||
statement_snapshot String
|
||||
title_snapshot String
|
||||
summary_snapshot String
|
||||
actor_id String @db.Uuid
|
||||
created_at DateTime @default(now())
|
||||
|
||||
announcement PortalAnnouncement @relation(fields: [announcement_id], references: [id], onDelete: Cascade)
|
||||
employee Employee @relation("PortalAnnouncementAcknowledgementEmployee", fields: [employee_id], references: [id], onDelete: Restrict)
|
||||
actor Employee @relation("PortalAnnouncementAcknowledgementActor", fields: [actor_id], references: [id], onDelete: Restrict)
|
||||
|
||||
@@unique([announcement_id, employee_id])
|
||||
@@index([employee_id, acknowledged_at])
|
||||
@@index([announcement_id, acknowledged_at])
|
||||
@@map("portal_announcement_acknowledgements")
|
||||
}
|
||||
|
||||
model WorkspaceSetting {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
profile WorkspaceProfile @default(small_team_internal)
|
||||
|
||||
在新工单中引用
屏蔽一个用户