feat(c4): qc + record_correction 数据模型
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
2828a9da58
commit
8f9177e36a
36
prisma/migrations/20261015010000_c4_qc/migration.sql
Normal file
36
prisma/migrations/20261015010000_c4_qc/migration.sql
Normal file
@ -0,0 +1,36 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE `qc` (
|
||||
`id` VARCHAR(36) NOT NULL,
|
||||
`tenant_code` VARCHAR(64) NOT NULL,
|
||||
`record_id` VARCHAR(36) NOT NULL,
|
||||
`qc_type` VARCHAR(20) NOT NULL DEFAULT 'normal',
|
||||
`qc_result` VARCHAR(20) NOT NULL DEFAULT 'pending',
|
||||
`qc_note` VARCHAR(200) NULL,
|
||||
`qc_staff_id` VARCHAR(36) NULL,
|
||||
`qc_time` DATETIME(3) NULL,
|
||||
`pass_time` DATETIME(3) NULL,
|
||||
`first_qc_id` VARCHAR(36) NULL,
|
||||
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`created_by` VARCHAR(36) NULL,
|
||||
`updated_at` DATETIME(3) NOT NULL,
|
||||
`deleted_at` DATETIME(3) NULL,
|
||||
|
||||
INDEX `qc_tenant_code_record_id_idx`(`tenant_code`, `record_id`),
|
||||
INDEX `qc_tenant_code_qc_result_idx`(`tenant_code`, `qc_result`),
|
||||
PRIMARY KEY (`id`)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE `ho_record_correction` (
|
||||
`id` VARCHAR(36) NOT NULL,
|
||||
`tenant_code` VARCHAR(64) NOT NULL,
|
||||
`record_id` VARCHAR(36) NOT NULL,
|
||||
`qc_id` VARCHAR(36) NULL,
|
||||
`correction_note` VARCHAR(200) NOT NULL,
|
||||
`corrected_by` VARCHAR(36) NOT NULL,
|
||||
`corrected_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
|
||||
INDEX `ho_record_correction_record_id_idx`(`record_id`),
|
||||
PRIMARY KEY (`id`)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
|
||||
|
||||
@ -724,3 +724,39 @@ model Report {
|
||||
|
||||
@@map("report")
|
||||
}
|
||||
|
||||
/// 质控记录
|
||||
model Qc {
|
||||
id String @id @default(uuid(7)) @db.VarChar(36)
|
||||
tenantCode String @map("tenant_code") @db.VarChar(64)
|
||||
recordId String @map("record_id") @db.VarChar(36)
|
||||
qcType String @default("normal") @map("qc_type") @db.VarChar(20)
|
||||
qcResult String @default("pending") @map("qc_result") @db.VarChar(20)
|
||||
qcNote String? @map("qc_note") @db.VarChar(200)
|
||||
qcStaffId String? @map("qc_staff_id") @db.VarChar(36)
|
||||
qcTime DateTime? @map("qc_time")
|
||||
passTime DateTime? @map("pass_time")
|
||||
firstQcId String? @map("first_qc_id") @db.VarChar(36)
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
createdBy String? @map("created_by") @db.VarChar(36)
|
||||
updatedAt DateTime @updatedAt @map("updated_at")
|
||||
deletedAt DateTime? @map("deleted_at")
|
||||
|
||||
@@index([tenantCode, recordId])
|
||||
@@index([tenantCode, qcResult])
|
||||
@@map("qc")
|
||||
}
|
||||
|
||||
/// 补正说明(留痕域 ho_)
|
||||
model RecordCorrection {
|
||||
id String @id @default(uuid(7)) @db.VarChar(36)
|
||||
tenantCode String @map("tenant_code") @db.VarChar(64)
|
||||
recordId String @map("record_id") @db.VarChar(36)
|
||||
qcId String? @map("qc_id") @db.VarChar(36)
|
||||
correctionNote String @map("correction_note") @db.VarChar(200)
|
||||
correctedBy String @map("corrected_by") @db.VarChar(36)
|
||||
correctedAt DateTime @default(now()) @map("corrected_at")
|
||||
|
||||
@@index([recordId])
|
||||
@@map("ho_record_correction")
|
||||
}
|
||||
|
||||
@ -5,7 +5,7 @@ import { getRequestContext } from '../common/context/request-context.js';
|
||||
/** 不带 tenantCode 的模型(租户表自身)。 */
|
||||
const TENANT_FREE = new Set(['Tenant', 'Agency', 'SvcNational', 'SvcLocal', 'SvcMapping', 'LocConfig']);
|
||||
/** 软删模型:读操作统一注入 deletedAt IS NULL。 */
|
||||
const SOFT_DELETE = new Set(['User', 'Role', 'Resource', 'Org', 'DictType', 'DictItem', 'Config', 'Notice', 'Staff', 'SvcOrg', 'Elder', 'Plan', 'Order', 'ElderSvc', 'Record']);
|
||||
const SOFT_DELETE = new Set(['User', 'Role', 'Resource', 'Org', 'DictType', 'DictItem', 'Config', 'Notice', 'Staff', 'SvcOrg', 'Elder', 'Plan', 'Order', 'ElderSvc', 'Record', 'Qc']);
|
||||
const READ_OPS = new Set(['findMany', 'findFirst', 'findUnique', 'count', 'aggregate', 'groupBy']);
|
||||
/** 没有 where 子句的操作(create 的租户由 service 在 data 里显式写入)。 */
|
||||
const NO_WHERE_OPS = new Set(['create', 'createMany']);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user