HRWD-0..9 实现人事生命周期企微通讯录同步
这个提交包含在:
@@ -0,0 +1,57 @@
|
||||
CREATE TABLE "wecom_directory_sync_runs" (
|
||||
"id" UUID NOT NULL,
|
||||
"employee_id" UUID NOT NULL,
|
||||
"external_user_id" VARCHAR(128),
|
||||
"operation" VARCHAR(32) NOT NULL,
|
||||
"status" VARCHAR(24) NOT NULL DEFAULT 'running',
|
||||
"attempts" INTEGER NOT NULL DEFAULT 1,
|
||||
"error_code" VARCHAR(80),
|
||||
"error_message" TEXT,
|
||||
"response_summary" JSONB,
|
||||
"triggered_by" UUID,
|
||||
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "wecom_directory_sync_runs_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE INDEX "idx_wecom_directory_sync_runs_employee_created"
|
||||
ON "wecom_directory_sync_runs"("employee_id", "created_at");
|
||||
|
||||
CREATE INDEX "idx_wecom_directory_sync_runs_status_created"
|
||||
ON "wecom_directory_sync_runs"("status", "created_at");
|
||||
|
||||
CREATE INDEX "idx_wecom_directory_sync_runs_operation_created"
|
||||
ON "wecom_directory_sync_runs"("operation", "created_at");
|
||||
|
||||
CREATE INDEX "idx_wecom_directory_sync_runs_triggered_by"
|
||||
ON "wecom_directory_sync_runs"("triggered_by");
|
||||
|
||||
ALTER TABLE "wecom_directory_sync_runs"
|
||||
ADD CONSTRAINT "wecom_directory_sync_runs_employee_id_fkey"
|
||||
FOREIGN KEY ("employee_id") REFERENCES "employees"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
ALTER TABLE "wecom_directory_sync_runs"
|
||||
ADD CONSTRAINT "wecom_directory_sync_runs_triggered_by_fkey"
|
||||
FOREIGN KEY ("triggered_by") REFERENCES "employees"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
INSERT INTO "feature_flags" (
|
||||
"id",
|
||||
"flag_key",
|
||||
"override_mode",
|
||||
"rollout_type",
|
||||
"department_ids",
|
||||
"note",
|
||||
"version",
|
||||
"created_at",
|
||||
"updated_at"
|
||||
) VALUES (
|
||||
'19d97df5-40a0-4dd3-a0b4-91a9d7e8e305'::uuid,
|
||||
'hr_wecom_directory_sync_v1',
|
||||
'force_off',
|
||||
'global',
|
||||
'[]'::jsonb,
|
||||
'bootstrap default: force_off',
|
||||
1,
|
||||
CURRENT_TIMESTAMP,
|
||||
CURRENT_TIMESTAMP
|
||||
) ON CONFLICT ("flag_key") DO NOTHING;
|
||||
@@ -620,6 +620,8 @@ model Employee {
|
||||
leave_ledgers LeaveLedger[]
|
||||
wecom_checkin_records WecomCheckinRecord[]
|
||||
wecom_checkin_sync_runs WecomCheckinSyncRun[] @relation("WecomCheckinSyncRunTrigger")
|
||||
wecom_directory_sync_runs WecomDirectorySyncRun[] @relation("WecomDirectorySyncRunEmployee")
|
||||
triggered_wecom_directory_sync_runs WecomDirectorySyncRun[] @relation("WecomDirectorySyncRunTrigger")
|
||||
attendance_corrections AttendanceCorrection[]
|
||||
owned_cost_centers CostCenter[] @relation("CostCenterOwner")
|
||||
purchase_requests_applicant PurchaseRequest[] @relation("PurchaseRequestApplicant")
|
||||
@@ -1991,6 +1993,31 @@ model WecomCheckinRecord {
|
||||
@@map("wecom_checkin_records")
|
||||
}
|
||||
|
||||
model WecomDirectorySyncRun {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
employee_id String @db.Uuid
|
||||
external_user_id String? @db.VarChar(128)
|
||||
operation String @db.VarChar(32)
|
||||
status String @default("running") @db.VarChar(24)
|
||||
attempts Int @default(1)
|
||||
error_code String? @db.VarChar(80)
|
||||
error_message String?
|
||||
response_summary Json?
|
||||
triggered_by String? @db.Uuid
|
||||
|
||||
created_at DateTime @default(now())
|
||||
updated_at DateTime @default(now()) @updatedAt
|
||||
|
||||
employee Employee @relation("WecomDirectorySyncRunEmployee", fields: [employee_id], references: [id], onDelete: Cascade)
|
||||
trigger Employee? @relation("WecomDirectorySyncRunTrigger", fields: [triggered_by], references: [id], onDelete: SetNull)
|
||||
|
||||
@@index([employee_id, created_at], map: "idx_wecom_directory_sync_runs_employee_created")
|
||||
@@index([status, created_at], map: "idx_wecom_directory_sync_runs_status_created")
|
||||
@@index([operation, created_at], map: "idx_wecom_directory_sync_runs_operation_created")
|
||||
@@index([triggered_by], map: "idx_wecom_directory_sync_runs_triggered_by")
|
||||
@@map("wecom_directory_sync_runs")
|
||||
}
|
||||
|
||||
model AttendanceCorrection {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
owner_id String @db.Uuid
|
||||
|
||||
在新工单中引用
屏蔽一个用户