|
|
@@ -0,0 +1,123 @@
|
|
|
+## 2025-10-29 刷脸一致性校验记录表(旁路写入,不影响收费流程)
|
|
|
+
|
|
|
+执行顺序:按段落依次执行;首次建表可跳过“删除表”步骤。
|
|
|
+
|
|
|
+```sql
|
|
|
+-- ============================================
|
|
|
+-- 刷脸一致性校验记录表(旁路写入,不影响收费流程)
|
|
|
+-- ============================================
|
|
|
+
|
|
|
+-- 第一步:如果表已存在,先删除(首次建表可跳过这步)
|
|
|
+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
|
|
|
+```
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+### 追加(可选):存储完整身份证号字段
|
|
|
+
|
|
|
+如需在审计日志中存储完整身份证号码(不推荐明文,建议加密/脱敏后存),仅需在现有表上“加列”,不改动原有字段与逻辑:
|
|
|
+
|
|
|
+```sql
|
|
|
+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);
|
|
|
+```
|