A2/A4/A6 实现员工头像后端、组织架构接口与合同模型
这个提交包含在:
+91
-59
@@ -343,6 +343,13 @@ enum EmployeePresenceSource {
|
||||
admin_override
|
||||
}
|
||||
|
||||
enum EmployeeContractType {
|
||||
labor
|
||||
nda
|
||||
non_compete
|
||||
internship
|
||||
}
|
||||
|
||||
enum WeeklyReportStatus {
|
||||
draft
|
||||
submitted
|
||||
@@ -497,6 +504,7 @@ model Employee {
|
||||
emergency_contact_name String?
|
||||
emergency_contact_phone String?
|
||||
notes String?
|
||||
avatar_path String?
|
||||
|
||||
bank_account_encrypted String
|
||||
bank_name String
|
||||
@@ -563,28 +571,29 @@ model Employee {
|
||||
workflow_tasks_assigned WorkflowTask[] @relation("WorkflowTaskAssignee")
|
||||
workflow_tasks_completed WorkflowTask[] @relation("WorkflowTaskCompleter")
|
||||
|
||||
approval_transfers_from ApprovalTransfer[] @relation("TransferFrom")
|
||||
approval_transfers_to ApprovalTransfer[] @relation("TransferTo")
|
||||
password_reset_codes PasswordResetCode[]
|
||||
lifecycle_events EmployeeLifecycleEvent[]
|
||||
checklist_tasks EmployeeChecklistTask[]
|
||||
presence_records EmployeePresence[]
|
||||
weekly_reports WeeklyReport[]
|
||||
todo_items_assigned TodoItem[] @relation("TodoAssignee")
|
||||
todo_items_created TodoItem[] @relation("TodoCreator")
|
||||
wecom_identity_binding WecomIdentityBinding?
|
||||
owned_projects Project[] @relation("ProjectOwner")
|
||||
managed_projects Project[] @relation("ProjectManager")
|
||||
project_memberships ProjectMember[]
|
||||
owned_project_milestones ProjectMilestone[] @relation("ProjectMilestoneOwner")
|
||||
assigned_project_tasks ProjectTask[] @relation("ProjectTaskAssignee")
|
||||
created_project_tasks ProjectTask[] @relation("ProjectTaskCreator")
|
||||
owned_project_risks ProjectRisk[] @relation("ProjectRiskOwner")
|
||||
owned_project_delivery_records ProjectDeliveryRecord[] @relation("ProjectDeliveryRecordOwner")
|
||||
created_project_communication_logs ProjectCommunicationLog[] @relation("ProjectCommunicationLogCreator")
|
||||
approval_transfers_from ApprovalTransfer[] @relation("TransferFrom")
|
||||
approval_transfers_to ApprovalTransfer[] @relation("TransferTo")
|
||||
password_reset_codes PasswordResetCode[]
|
||||
lifecycle_events EmployeeLifecycleEvent[]
|
||||
checklist_tasks EmployeeChecklistTask[]
|
||||
presence_records EmployeePresence[]
|
||||
weekly_reports WeeklyReport[]
|
||||
todo_items_assigned TodoItem[] @relation("TodoAssignee")
|
||||
todo_items_created TodoItem[] @relation("TodoCreator")
|
||||
wecom_identity_binding WecomIdentityBinding?
|
||||
owned_projects Project[] @relation("ProjectOwner")
|
||||
managed_projects Project[] @relation("ProjectManager")
|
||||
project_memberships ProjectMember[]
|
||||
owned_project_milestones ProjectMilestone[] @relation("ProjectMilestoneOwner")
|
||||
assigned_project_tasks ProjectTask[] @relation("ProjectTaskAssignee")
|
||||
created_project_tasks ProjectTask[] @relation("ProjectTaskCreator")
|
||||
owned_project_risks ProjectRisk[] @relation("ProjectRiskOwner")
|
||||
owned_project_delivery_records ProjectDeliveryRecord[] @relation("ProjectDeliveryRecordOwner")
|
||||
created_project_communication_logs ProjectCommunicationLog[] @relation("ProjectCommunicationLogCreator")
|
||||
completed_project_closure_checklists ProjectClosureChecklistItem[] @relation("ProjectClosureChecklistItemCompleter")
|
||||
owned_contract_registries ContractRegistry[] @relation("ContractRegistryOwner")
|
||||
owned_confidential_document_refs ConfidentialDocumentRef[] @relation("ConfidentialDocumentRefOwner")
|
||||
owned_contract_registries ContractRegistry[] @relation("ContractRegistryOwner")
|
||||
owned_confidential_document_refs ConfidentialDocumentRef[] @relation("ConfidentialDocumentRefOwner")
|
||||
contracts EmployeeContract[]
|
||||
|
||||
@@index([department_id])
|
||||
@@index([legal_entity_id], map: "idx_employees_legal_entity")
|
||||
@@ -1549,30 +1558,30 @@ model EntityRiskFlag {
|
||||
}
|
||||
|
||||
model PaymentBatch {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
batch_no String @unique @db.VarChar(64)
|
||||
entity_type PaymentBatchEntityType
|
||||
name String
|
||||
status PaymentBatchStatus @default(draft)
|
||||
default_payment_date DateTime? @db.Date
|
||||
default_payment_channel String? @db.VarChar(20)
|
||||
voucher_prefix String? @db.VarChar(32)
|
||||
review_comment String?
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
batch_no String @unique @db.VarChar(64)
|
||||
entity_type PaymentBatchEntityType
|
||||
name String
|
||||
status PaymentBatchStatus @default(draft)
|
||||
default_payment_date DateTime? @db.Date
|
||||
default_payment_channel String? @db.VarChar(20)
|
||||
voucher_prefix String? @db.VarChar(32)
|
||||
review_comment String?
|
||||
secondary_review_comment String?
|
||||
execution_summary_json Json?
|
||||
execution_summary_json Json?
|
||||
|
||||
created_at DateTime @default(now())
|
||||
created_by String? @db.Uuid
|
||||
reviewed_at DateTime?
|
||||
reviewed_by String? @db.Uuid
|
||||
created_at DateTime @default(now())
|
||||
created_by String? @db.Uuid
|
||||
reviewed_at DateTime?
|
||||
reviewed_by String? @db.Uuid
|
||||
secondary_reviewed_at DateTime?
|
||||
secondary_reviewed_by String? @db.Uuid
|
||||
executed_at DateTime?
|
||||
executed_by String? @db.Uuid
|
||||
cancelled_at DateTime?
|
||||
cancelled_by String? @db.Uuid
|
||||
updated_at DateTime @updatedAt
|
||||
updated_by String? @db.Uuid
|
||||
executed_at DateTime?
|
||||
executed_by String? @db.Uuid
|
||||
cancelled_at DateTime?
|
||||
cancelled_by String? @db.Uuid
|
||||
updated_at DateTime @updatedAt
|
||||
updated_by String? @db.Uuid
|
||||
|
||||
items PaymentBatchItem[]
|
||||
|
||||
@@ -1780,15 +1789,15 @@ model Project {
|
||||
created_at DateTime @default(now())
|
||||
updated_at DateTime @default(now()) @updatedAt
|
||||
|
||||
owner Employee @relation("ProjectOwner", fields: [owner_employee_id], references: [id], onDelete: Restrict)
|
||||
manager Employee? @relation("ProjectManager", fields: [manager_employee_id], references: [id], onDelete: SetNull)
|
||||
members ProjectMember[]
|
||||
milestones ProjectMilestone[]
|
||||
tasks ProjectTask[]
|
||||
risks ProjectRisk[]
|
||||
reimbursements ReimbursementForm[]
|
||||
travel_requests TravelRequest[]
|
||||
todo_items TodoItem[]
|
||||
owner Employee @relation("ProjectOwner", fields: [owner_employee_id], references: [id], onDelete: Restrict)
|
||||
manager Employee? @relation("ProjectManager", fields: [manager_employee_id], references: [id], onDelete: SetNull)
|
||||
members ProjectMember[]
|
||||
milestones ProjectMilestone[]
|
||||
tasks ProjectTask[]
|
||||
risks ProjectRisk[]
|
||||
reimbursements ReimbursementForm[]
|
||||
travel_requests TravelRequest[]
|
||||
todo_items TodoItem[]
|
||||
weekly_reports ProjectLinkOnWeeklyReport[]
|
||||
communication_logs ProjectCommunicationLog[]
|
||||
closure_checklist_items ProjectClosureChecklistItem[]
|
||||
@@ -1905,16 +1914,16 @@ model ProjectLinkOnWeeklyReport {
|
||||
}
|
||||
|
||||
model ProjectCommunicationLog {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
project_id String @db.Uuid
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
project_id String @db.Uuid
|
||||
happened_at DateTime
|
||||
channel ProjectCommunicationChannel
|
||||
external_contact_name String?
|
||||
external_org_name String?
|
||||
summary String
|
||||
next_action String?
|
||||
next_follow_up_date DateTime? @db.Date
|
||||
created_by String @db.Uuid
|
||||
next_follow_up_date DateTime? @db.Date
|
||||
created_by String @db.Uuid
|
||||
|
||||
created_at DateTime @default(now())
|
||||
updated_at DateTime @default(now()) @updatedAt
|
||||
@@ -1929,15 +1938,15 @@ model ProjectCommunicationLog {
|
||||
}
|
||||
|
||||
model ProjectClosureChecklistItem {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
project_id String @db.Uuid
|
||||
item_key String @db.VarChar(64)
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
project_id String @db.Uuid
|
||||
item_key String @db.VarChar(64)
|
||||
title String
|
||||
status ProjectClosureChecklistStatus @default(pending)
|
||||
note String?
|
||||
sort_order Int @default(100)
|
||||
sort_order Int @default(100)
|
||||
completed_at DateTime?
|
||||
completed_by String? @db.Uuid
|
||||
completed_by String? @db.Uuid
|
||||
|
||||
created_at DateTime @default(now())
|
||||
updated_at DateTime @default(now()) @updatedAt
|
||||
@@ -1975,6 +1984,29 @@ model ContractRegistry {
|
||||
@@map("contract_registry")
|
||||
}
|
||||
|
||||
model EmployeeContract {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
employee_id String @db.Uuid
|
||||
contract_no String
|
||||
contract_type EmployeeContractType
|
||||
start_date DateTime @db.Date
|
||||
end_date DateTime @db.Date
|
||||
terminated_date DateTime? @db.Date
|
||||
attachment_path String?
|
||||
|
||||
created_at DateTime @default(now())
|
||||
created_by String? @db.Uuid
|
||||
updated_at DateTime @default(now()) @updatedAt
|
||||
updated_by String? @db.Uuid
|
||||
|
||||
employee Employee @relation(fields: [employee_id], references: [id], onDelete: Cascade)
|
||||
|
||||
@@unique([employee_id, contract_no], map: "employee_contracts_employee_contract_no_ux")
|
||||
@@index([employee_id, start_date], map: "idx_employee_contracts_employee_start")
|
||||
@@index([employee_id, end_date], map: "idx_employee_contracts_employee_end")
|
||||
@@map("employee_contracts")
|
||||
}
|
||||
|
||||
model ProjectDeliveryRecord {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
project_id String @db.Uuid
|
||||
|
||||
在新工单中引用
屏蔽一个用户