2025-10-29.md 6.0 KB

2025-10-29 刷脸一致性校验记录表(旁路写入,不影响收费流程)

执行顺序:按段落依次执行;首次建表可跳过“删除表”步骤。

-- ============================================
-- 刷脸一致性校验记录表(旁路写入,不影响收费流程)
-- ============================================

-- 第一步:如果表已存在,先删除(首次建表可跳过这步)
IF OBJECT_ID('dbo.t_face_verify_log', 'U') IS NOT NULL
    DROP TABLE dbo.t_face_verify_log;
GO

-- 第二步:创建表结构
CREATE TABLE dbo.t_face_verify_log (
    -- 主键:自增ID
    id bigint IDENTITY(1,1) PRIMARY KEY,
    
    -- 最终采用身份:face=采用刷脸身份,card=采用社保卡身份(必填)
    adopted_identity varchar(10) NOT NULL,
    
    -- 患者ID:从页面获取的患者编号,可为空
    patient_id varchar(50) NULL,
    
    -- 就诊次数:从页面获取的就诊次数,可为空
    times int NULL,
    
    -- 是否一致:1=社保卡和刷脸身份证号一致,0=不一致,NULL=未完成比对
    is_match bit NULL,
    
    -- 用户操作:go_face=用户选择去刷脸,skip_face=用户跳过刷脸直接结算,continue_with_card=不一致时继续按卡结算,redo=返回重新核验
    user_action varchar(50) NULL,
    
    -- 失败原因:fail=刷脸失败,error=网络异常,cancel=用户取消刷脸
    reason varchar(50) NULL,
    
    -- 社保卡身份证号尾号:仅存储后4位(例如:1234),用于脱敏展示,不存完整身份证号
    card_tail varchar(8) NULL,
    
    -- 刷脸身份证号尾号:仅存储后4位(例如:1234),用于脱敏展示,不存完整身份证号
    face_tail varchar(8) NULL,
    
    -- 实人认证业务流水号:从刷脸接口返回的res.data.data.authNo字段获取,用于追踪刷脸记录
    auth_no varchar(64) NULL,
    
    -- 预留扩展字段:存储JSON格式的额外信息,可为空
    ext_json nvarchar(max) NULL,
    
    -- 创建时间:记录插入时间,默认当前时间
    created_at datetime NOT NULL DEFAULT GETDATE(),
    
    -- 操作人编码:从Token中获取的当前登录用户编码,可为空
    created_by varchar(50) NULL
);
GO

-- 第三步:给表添加备注
EXEC sp_addextendedproperty 'MS_Description', '刷脸一致性校验记录表(旁路写入,不影响收费流程)', 'SCHEMA', 'dbo', 'TABLE', 't_face_verify_log';
GO

-- 第四步:给每个字段添加详细备注
EXEC sp_addextendedproperty 'MS_Description', '主键:自增ID', 'SCHEMA', 'dbo', 'TABLE', 't_face_verify_log', 'COLUMN', 'id';
GO

EXEC sp_addextendedproperty 'MS_Description', '最终采用身份:face=采用刷脸身份,card=采用社保卡身份(必填)', 'SCHEMA', 'dbo', 'TABLE', 't_face_verify_log', 'COLUMN', 'adopted_identity';
GO

EXEC sp_addextendedproperty 'MS_Description', '患者ID:从页面获取的患者编号,可为空', 'SCHEMA', 'dbo', 'TABLE', 't_face_verify_log', 'COLUMN', 'patient_id';
GO

EXEC sp_addextendedproperty 'MS_Description', '就诊次数:从页面获取的就诊次数,可为空', 'SCHEMA', 'dbo', 'TABLE', 't_face_verify_log', 'COLUMN', 'times';
GO

EXEC sp_addextendedproperty 'MS_Description', '是否一致:1=社保卡和刷脸身份证号一致,0=不一致,NULL=未完成比对', 'SCHEMA', 'dbo', 'TABLE', 't_face_verify_log', 'COLUMN', 'is_match';
GO

EXEC sp_addextendedproperty 'MS_Description', '用户操作:go_face=用户选择去刷脸,skip_face=用户跳过刷脸直接结算,continue_with_card=不一致时继续按卡结算,redo=返回重新核验', 'SCHEMA', 'dbo', 'TABLE', 't_face_verify_log', 'COLUMN', 'user_action';
GO

EXEC sp_addextendedproperty 'MS_Description', '失败原因:fail=刷脸失败,error=网络异常,cancel=用户取消刷脸', 'SCHEMA', 'dbo', 'TABLE', 't_face_verify_log', 'COLUMN', 'reason';
GO

EXEC sp_addextendedproperty 'MS_Description', '社保卡身份证号尾号:仅存储后4位(例如:1234),用于脱敏展示,不存完整身份证号', 'SCHEMA', 'dbo', 'TABLE', 't_face_verify_log', 'COLUMN', 'card_tail';
GO

EXEC sp_addextendedproperty 'MS_Description', '刷脸身份证号尾号:仅存储后4位(例如:1234),用于脱敏展示,不存完整身份证号', 'SCHEMA', 'dbo', 'TABLE', 't_face_verify_log', 'COLUMN', 'face_tail';
GO

EXEC sp_addextendedproperty 'MS_Description', '实人认证业务流水号:从刷脸接口返回的res.data.data.authNo字段获取,用于追踪刷脸记录', 'SCHEMA', 'dbo', 'TABLE', 't_face_verify_log', 'COLUMN', 'auth_no';
GO

EXEC sp_addextendedproperty 'MS_Description', '预留扩展字段:存储JSON格式的额外信息,可为空', 'SCHEMA', 'dbo', 'TABLE', 't_face_verify_log', 'COLUMN', 'ext_json';
GO

EXEC sp_addextendedproperty 'MS_Description', '创建时间:记录插入时间,默认当前时间', 'SCHEMA', 'dbo', 'TABLE', 't_face_verify_log', 'COLUMN', 'created_at';
GO

EXEC sp_addextendedproperty 'MS_Description', '操作人编码:从Token中获取的当前登录用户编码,可为空', 'SCHEMA', 'dbo', 'TABLE', 't_face_verify_log', 'COLUMN', 'created_by';
GO

-- 第五步:创建索引(提升查询效率,不影响写入性能)
CREATE INDEX IX_face_verify_log_created_at ON dbo.t_face_verify_log(created_at DESC);
GO

CREATE INDEX IX_face_verify_log_patient_times ON dbo.t_face_verify_log(patient_id, times);
GO

追加(可选):存储完整身份证号字段

如需在审计日志中存储完整身份证号码(不推荐明文,建议加密/脱敏后存),仅需在现有表上“加列”,不改动原有字段与逻辑:

ALTER TABLE dbo.t_face_verify_log
ADD card_id_no varchar(32) NULL,     -- 社保卡身份证完整号(如需可加密后存)
    face_id_no varchar(32) NULL;     -- 刷脸身份证完整号(如需可加密后存)

-- 可选:如需检索,建掩码索引(不建议对明文建索引)
-- CREATE INDEX IX_face_verify_log_card_id_no ON dbo.t_face_verify_log(card_id_no);