文件
OmniCard/backend/src/modules/team/entity/handover-log.ts

109 行
2.3 KiB
TypeScript

import { BaseEntity } from '../../base/entity/base';
import { Column, Entity, Index } from 'typeorm';
import {
HandoverLeadAction,
HandoverRedirectType,
HandoverStatus,
TeamHandoverLog,
} from '../../../comm/types/omni';
/**
* 离职资产安全交接工单历史表
* 表名: team_handover_log
*/
@Entity('team_handover_log')
export class TeamHandoverLogEntity extends BaseEntity implements TeamHandoverLog {
@Index({ unique: true })
@Column({
name: 'handover_no',
comment: '不可逆工单流水号 (如 HO20260920xxxx)',
length: 64,
})
handoverNo: string;
@Index()
@Column({
name: 'from_user_id',
comment: '离职员工用户 ID',
})
fromUserId: number;
@Index()
@Column({
name: 'to_user_id',
comment: '接任人用户 ID (若仅划入公海则可为空)',
nullable: true,
})
toUserId?: number | null;
@Index()
@Column({
name: 'card_id',
comment: '交接的原名片 ID',
nullable: true,
})
cardId?: number | null;
@Column({
name: 'redirect_type',
comment: '短链重定向策略 (none/card/portal)',
length: 20,
default: 'none',
})
redirectType: HandoverRedirectType;
@Column({
name: 'redirect_target',
comment: '重定向目标 (接替人名片标识或微官网URL)',
length: 500,
nullable: true,
})
redirectTarget?: string | null;
@Column({
name: 'lead_action',
comment: '历史线索处理策略 (none/transfer/pool)',
length: 20,
default: 'none',
})
leadAction: HandoverLeadAction;
@Column({
name: 'migrated_lead_count',
comment: '实际迁移或划入公海的线索数量',
default: 0,
})
migratedLeadCount: number;
@Column({
name: 'operator_id',
comment: '操作人/管理员 ID',
nullable: true,
})
operatorId?: number | null;
@Column({
name: 'status',
comment: '工单状态 (completed: 已完成, failed: 失败)',
length: 20,
default: 'completed',
})
status: HandoverStatus;
@Column({
name: 'remark',
comment: '交接事由与操作说明',
length: 500,
nullable: true,
})
remark?: string | null;
@Column({
name: 'snapshot',
comment: '资产交接前安全快照 (不可逆审计防篡改存证)',
type: 'text',
nullable: true,
})
snapshot?: string | null;
}