0bc8d9f6 by lihua

调整报告生成样式

1 parent cb50dc19
...@@ -125,7 +125,7 @@ const getAnalysisResultPageData = (isFull = false) => { ...@@ -125,7 +125,7 @@ const getAnalysisResultPageData = (isFull = false) => {
125 }); 125 });
126 obj['equivalenceClassNum'] = changeNum(d.equivalenceClassNum || 0, 0); 126 obj['equivalenceClassNum'] = changeNum(d.equivalenceClassNum || 0, 0);
127 obj['reIdentifyRisk'] = changeNum(d.reIdentifyRisk || 0, 2); 127 obj['reIdentifyRisk'] = changeNum(d.reIdentifyRisk || 0, 2);
128 obj['isGtThreshold'] = d.isGtThreshold; 128 obj['isGtThreshold'] = d.isGtThreshold === 'Y' ? '是取值为1' : '否取值为0';
129 fullResultData.value.push(obj); 129 fullResultData.value.push(obj);
130 }); 130 });
131 resultData.value = fullResultData.value.slice(0, pageInfo.value.limit); 131 resultData.value = fullResultData.value.slice(0, pageInfo.value.limit);
...@@ -139,7 +139,7 @@ const getAnalysisResultPageData = (isFull = false) => { ...@@ -139,7 +139,7 @@ const getAnalysisResultPageData = (isFull = false) => {
139 }); 139 });
140 obj['equivalenceClassNum'] = changeNum(d.equivalenceClassNum || 0, 0); 140 obj['equivalenceClassNum'] = changeNum(d.equivalenceClassNum || 0, 0);
141 obj['reIdentifyRisk'] = changeNum(d.reIdentifyRisk || 0, 2); 141 obj['reIdentifyRisk'] = changeNum(d.reIdentifyRisk || 0, 2);
142 obj['isGtThreshold'] = d.isGtThreshold; 142 obj['isGtThreshold'] = d.isGtThreshold === 'Y' ? '是取值为1' : '否取值为0';
143 resultData.value.push(obj); 143 resultData.value.push(obj);
144 }); 144 });
145 pageInfo.value.rows = res.data?.totalRows ?? 0; 145 pageInfo.value.rows = res.data?.totalRows ?? 0;
...@@ -206,7 +206,21 @@ const downloadWord = () => { ...@@ -206,7 +206,21 @@ const downloadWord = () => {
206 resultDataLoading.value = true; 206 resultDataLoading.value = true;
207 loadingText.value = '报告正在下载中,请勿关闭浏览器...'; 207 loadingText.value = '报告正在下载中,请勿关闭浏览器...';
208 downPromise.value = convertHtml2Img(report, dom).then(() => { 208 downPromise.value = convertHtml2Img(report, dom).then(() => {
209 downloadAnonReport({ taskGuid: taskGuid.value, title: `${analysisResultInfo.value.tenantName}持有的“${oldAnonTaskValueInfo.value.taskName}”`, evaluationDate: analysisResultInfo.value.execTime ? analysisResultInfo.value.execTime.substring(0, 10) : '', deIdentProcessorName: userData.tenantName, html: encodeURIComponent(`<div>${getHTML(dom.innerHTML)}</div>`) }).then((res: any) => { downPromise.value = null 209 const htmlContent = getHTML(dom.innerHTML);
210 const pageBreakRegex = /<br\s[^>]*>/gi;
211 const match = htmlContent.match(pageBreakRegex);
212 let htmlOverview = htmlContent;
213 let htmlContentPart = '';
214
215 if (match && match.length >= 1) {
216 const secondBr = match[0];
217 const index = htmlContent.indexOf(secondBr);
218 if (index !== -1) {
219 htmlOverview = htmlContent.substring(0, index + secondBr.length);
220 htmlContentPart = htmlContent.substring(index + secondBr.length);
221 }
222 }
223 downloadAnonReport({ taskGuid: taskGuid.value, title: `${analysisResultInfo.value.tenantName}持有的“${oldAnonTaskValueInfo.value.taskName}”`, evaluationDate: analysisResultInfo.value.execTime ? analysisResultInfo.value.execTime.substring(0, 10) : '', deIdentProcessorName: userData.tenantName, htmlOverview: encodeURIComponent(`<div>${htmlOverview}</div>`), htmlContent: encodeURIComponent(`<div>${htmlContentPart}</div>`) }).then((res: any) => {
210 loadingText.value = ''; 224 loadingText.value = '';
211 resultDataLoading.value = false; 225 resultDataLoading.value = false;
212 if (res && !res.msg) { 226 if (res && !res.msg) {
......
...@@ -2151,7 +2151,7 @@ const getAnalysisResultPageData = (isFull = false) => { ...@@ -2151,7 +2151,7 @@ const getAnalysisResultPageData = (isFull = false) => {
2151 }); 2151 });
2152 obj['equivalenceClassNum'] = changeNum(d.equivalenceClassNum || 0, 0); 2152 obj['equivalenceClassNum'] = changeNum(d.equivalenceClassNum || 0, 0);
2153 obj['reIdentifyRisk'] = changeNum(d.reIdentifyRisk || 0, 2); 2153 obj['reIdentifyRisk'] = changeNum(d.reIdentifyRisk || 0, 2);
2154 obj['isGtThreshold'] = d.isGtThreshold; 2154 obj['isGtThreshold'] = d.isGtThreshold === 'Y' ? '是取值为1' : '否取值为0';
2155 fullResultData.value.push(obj); 2155 fullResultData.value.push(obj);
2156 }); 2156 });
2157 resultData.value = fullResultData.value.slice(0, pageInfo.value.limit); 2157 resultData.value = fullResultData.value.slice(0, pageInfo.value.limit);
...@@ -2165,7 +2165,7 @@ const getAnalysisResultPageData = (isFull = false) => { ...@@ -2165,7 +2165,7 @@ const getAnalysisResultPageData = (isFull = false) => {
2165 }); 2165 });
2166 obj['equivalenceClassNum'] = changeNum(d.equivalenceClassNum || 0, 0); 2166 obj['equivalenceClassNum'] = changeNum(d.equivalenceClassNum || 0, 0);
2167 obj['reIdentifyRisk'] = changeNum(d.reIdentifyRisk || 0, 2); 2167 obj['reIdentifyRisk'] = changeNum(d.reIdentifyRisk || 0, 2);
2168 obj['isGtThreshold'] = d.isGtThreshold; 2168 obj['isGtThreshold'] = d.isGtThreshold === 'Y' ? '是取值为1' : '否取值为0';
2169 resultData.value.push(obj); 2169 resultData.value.push(obj);
2170 }); 2170 });
2171 pageInfo.value.rows = res.data?.totalRows ?? 0; 2171 pageInfo.value.rows = res.data?.totalRows ?? 0;
...@@ -2234,6 +2234,7 @@ const downloadWord = () => { ...@@ -2234,6 +2234,7 @@ const downloadWord = () => {
2234 dom.innerHTML = report?.innerHTML; 2234 dom.innerHTML = report?.innerHTML;
2235 loadingText.value = '报告正在下载中,请勿关闭浏览器...'; 2235 loadingText.value = '报告正在下载中,请勿关闭浏览器...';
2236 downloadLoading.value = true; 2236 downloadLoading.value = true;
2237
2237 downPromise.value = convertHtml2Img(report, dom).then(() => { 2238 downPromise.value = convertHtml2Img(report, dom).then(() => {
2238 downloadAnonReport({ taskGuid: oldAnonTaskValueInfo.value.guid, title: `${analysisResultInfo.value.tenantName}持有的“${oldAnonTaskValueInfo.value.taskName}”`, evaluationDate: analysisResultInfo.value.execTime ? analysisResultInfo.value.execTime.substring(0, 10) : '', 2239 downloadAnonReport({ taskGuid: oldAnonTaskValueInfo.value.guid, title: `${analysisResultInfo.value.tenantName}持有的“${oldAnonTaskValueInfo.value.taskName}”`, evaluationDate: analysisResultInfo.value.execTime ? analysisResultInfo.value.execTime.substring(0, 10) : '',
2239 deIdentProcessorName: userData.tenantName, html: encodeURIComponent(`<div>${getHTML(dom.innerHTML)}</div>`) }).then((res: any) => { 2240 deIdentProcessorName: userData.tenantName, html: encodeURIComponent(`<div>${getHTML(dom.innerHTML)}</div>`) }).then((res: any) => {
......
...@@ -123,16 +123,14 @@ ...@@ -123,16 +123,14 @@
123 show-overflow-tooltip></el-table-column> 123 show-overflow-tooltip></el-table-column>
124 <el-table-column label="重标识风险" prop="reIdentifyRisk" width="96" align="right" fixed="right" 124 <el-table-column label="重标识风险" prop="reIdentifyRisk" width="96" align="right" fixed="right"
125 show-overflow-tooltip></el-table-column> 125 show-overflow-tooltip></el-table-column>
126 <el-table-column label="判断重风险是否大于门限阈值" prop="isGtThreshold" width="130" align="left" fixed="right" 126 <el-table-column label="判断重风险是否大于门限阈值" prop="isGtThreshold" width="150" align="left" fixed="right"
127 show-overflow-tooltip></el-table-column> 127 show-overflow-tooltip></el-table-column>
128 </el-table> 128 </el-table>
129 <div v-show="!analysisResultTableFields.length" class="empty-content"> 129 <div v-show="!analysisResultTableFields.length" class="empty-content">
130 <img src="../../../assets/images/empty-data.png" :style="{ width: '168px', height: '96px' }" /> 130 <img src="../../../assets/images/empty-data.png" :style="{ width: '168px', height: '96px' }" />
131 <div class="empty-text">暂无数据</div> 131 <div class="empty-text">暂无数据</div>
132 </div> 132 </div>
133 <div v-show="analysisResultTableFields.length" class="result-table-desc">门限阈值的取值:完全公开共享数据发布,取值 133 <div v-show="analysisResultTableFields.length" class="result-table-desc">门限阈值的取值:完全公开共享数据发布,取值1/20;受控公开共享数据发布,取值1/5;领地公开共享数据发布,取值1/3</div>
134 1/20;受控公开共享数据发布,取值
135 1/5;领地公开共享数据发布,取值 1/3</div>
136 <PageNav v-show="analysisResultTableFields.length" :class="[pageInfo.type]" :pageInfo="pageInfo" 134 <PageNav v-show="analysisResultTableFields.length" :class="[pageInfo.type]" :pageInfo="pageInfo"
137 @pageChange="pageChange" /> 135 @pageChange="pageChange" />
138 <div class="row-two-main" style="margin-top: 12px;"> 136 <div class="row-two-main" style="margin-top: 12px;">
...@@ -199,62 +197,58 @@ ...@@ -199,62 +197,58 @@
199 </div> 197 </div>
200 <div v-show="isWordStyle" class="analysis-result-main report-main" ref="report"> 198 <div v-show="isWordStyle" class="analysis-result-main report-main" ref="report">
201 <!-- 报告总览 --> 199 <!-- 报告总览 -->
202 <h1 style="font-family: simsun;font-size: 18px;font-weight: 700;text-align: left;margin-top: 10px;margin-bottom: 10px;color: #212121;">报告总览</h1> 200 <h1 class="MsoHeading1" style="text-align: left;margin-top: 10px;margin-bottom: 10px;">报告总览</h1>
203 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ` 一、评价对象:${analysisResultInfo.tenantName}2025年1月1日至2025年12月31日的${oldAnonTaskValueInfo.taskName},该数据集包含1张表,字段总数量共计${changeNum(analysisResultInfo.fieldNum || 0)}个,记录总数量共计${changeNum(analysisResultInfo.dataSetRecord || 0)}条,数据元素总量为${changeNum(analysisResultInfo.dataTotal || 0)}个 。` }}</p> 201 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `一、评价对象:${analysisResultInfo.tenantName}2025年1月1日至2025年12月31日的${oldAnonTaskValueInfo.taskName},该数据集包含1张表,字段总数量共计${changeNum(analysisResultInfo.fieldNum || 0)}个,记录总数量共计${changeNum(analysisResultInfo.dataSetRecord || 0)}条,数据元素总量为${changeNum(analysisResultInfo.dataTotal || 0)}个 。` }}</p>
204 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ` 二、评价方法:基于匿名化评估国家标准GB/T 42460-2023《信息安全技术 个人信息去标识化效果评估指南》、GB/T 37964-2019《信息安全技术 个人信息去标识化指南》,以及《中华人民共和国个人信息保护法》、《中华人民共和国数据安全法》、《中华人民共和国网络安全法》、《面向数据流通的匿名化效果实施指南 草案》、《面向数据流通的匿名化效果评估指南 草案》和《数据安全技术 个人信息匿名化处理指南及评价方法 征求意见稿》相关法律法规,采用“定性分析”与“定量计算”相结合的综合评估方法。` }}</p> 202 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `二、评价方法:基于匿名化评估国家标准GB/T 42460-2023《信息安全技术 个人信息去标识化效果评估指南》、GB/T 37964-2019《信息安全技术 个人信息去标识化指南》,以及《中华人民共和国个人信息保护法》、《中华人民共和国数据安全法》、《中华人民共和国网络安全法》、《面向数据流通的匿名化效果实施指南 草案》、《面向数据流通的匿名化效果评估指南 草案》和《数据安全技术 个人信息匿名化处理指南及评价方法 征求意见稿》相关法律法规,采用“定性分析”与“定量计算”相结合的综合评估方法。` }}</p>
205 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ` 三、评估结论:综合定性与定量评估结果,根据GB/T 42460-2023的分级标准,该${oldAnonTaskValueInfo.taskName}的匿名化效果评定为${analysisResultInfo.rating}级${analysisResultInfo.rating <=2 ? '(重标识风险较高)' : ''}。${`需要对准标识符${analysisResultInfo.qualifiedIdentifier?.map(f => f.chName)?.join('、')}做有效的泛化和抑制,满足k-匿名要求(设定k10),从而使得该数据集适用于受控环境下进行跨机构流通。`} 。` }}</p> 203 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `三、评估结论:综合定性与定量评估结果,根据GB/T 42460-2023的分级标准,该${oldAnonTaskValueInfo.taskName}的匿名化效果评定为${analysisResultInfo.rating}级${analysisResultInfo.rating <=2 ? '(重标识风险较高)' : ''}。${`需要对准标识符${analysisResultInfo.qualifiedIdentifier?.map(f => f.chName)?.join('、')}做有效的泛化和抑制,满足k-匿名要求(设定k10),从而使得该数据集适用于受控环境下进行跨机构流通。`}` }}</p>
206 <div style="page-break-after: always;"> 204 <br clear="all" style="page-break-before:always;mso-break-type:section-break">
207 <span style="display: none;">&nbsp;</span> 205 <h1 class="MsoHeading1" style="text-align: left;margin-top: 10px;margin-bottom: 10px;">一、评估基本信息</h1>
208 </div> 206 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `评估项目名称:${oldAnonTaskValueInfo.taskName}匿名化效果评估` }}</p>
209 <!-- 1. 评估基本信息 --> 207 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `评估对象:${analysisResultInfo.tenantName}2025年1月1日至2025年12月31日的${oldAnonTaskValueInfo.taskName}(共计${changeNum(analysisResultInfo.dataSetRecord || 0)}条记录)` }}</p>
210 <h1 style="font-family: simsun;font-size: 18px;font-weight: 700;text-align: left;margin-top: 10px;margin-bottom: 10px;color: #212121;">一、评估基本信息</h1> 208 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `评估依据:GB/T 42460-2023《信息安全技术 个人信息去标识化效果评估指南》、GB/T 37964-2019《信息安全技术 个人信息去标识化指南》、《中华人民共和国个人信息保护法》、《中华人民共和国数据安全法》、《中华人民共和国网络安全法》、《面向数据流通的匿名化效果实施指南 草案》、《面向数据流通的匿名化效果评估指南 草案》和《数据安全技术 个人信息匿名化处理指南及评价方法 征求意见稿》。` }}</p>
211 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ` 评估项目名称:${oldAnonTaskValueInfo.taskName}匿名化效果评估` }}</p> 209 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `评估日期:${analysisResultInfo.execTime ? analysisResultInfo.execTime.substring(0, 10) : ''}` }}</p>
212 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ` 评估对象:${analysisResultInfo.tenantName}2025年1月1日至2025年12月31日的${oldAnonTaskValueInfo.taskName}(共计${changeNum(analysisResultInfo.dataSetRecord || 0)}条记录)` }}</p>
213 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ` 评估依据:GB/T 42460-2023《信息安全技术 个人信息去标识化效果评估指南》、GB/T 37964-2019《信息安全技术 个人信息去标识化指南》、《中华人民共和国个人信息保护法》、《中华人民共和国数据安全法》、《中华人民共和国网络安全法》、《面向数据流通的匿名化效果实施指南 草案》、《面向数据流通的匿名化效果评估指南 草案》和《数据安全技术 个人信息匿名化处理指南及评价方法 征求意见稿》。` }}</p>
214 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ` 评估日期:${analysisResultInfo.execTime ? analysisResultInfo.execTime.substring(0, 10) : ''}` }}</p>
215
216 <!-- 2. 评估准备 --> 210 <!-- 2. 评估准备 -->
217 <h1 style="font-family: simsun;font-size: 18px;font-weight: 700;text-align: left;margin-top: 10px;margin-bottom: 10px;color: #212121;">二、评估准备</h1> 211 <h1 class="MsoHeading1" style="text-align: left;margin-top: 10px;margin-bottom: 10px;">二、评估准备</h1>
218 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ` 数据集与环境确认:待评估数据集包含${analysisResultInfo?.column?.slice(0, 4)?.map(f => f.chName).join('、')}${analysisResultInfo?.column?.length > 4 ? '等字段' : ''}。数据将用于跨机构的科学研究,处于半开放网络环境。` }}</p> 212 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `数据集与环境确认:待评估数据集包含${analysisResultInfo?.column?.slice(0, 4)?.map(f => f.chName).join('、')}${analysisResultInfo?.column?.length > 4 ? '等字段' : ''}。数据将用于跨机构的科学研究,处于半开放网络环境。` }}</p>
219 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ` 风险阈值设定:结合科研数据共享需求,设定可接受的重标识风险阈值为0.05(即5%)。` }}</p> 213 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `风险阈值设定:结合科研数据共享需求,设定可接受的重标识风险阈值为0.05(即5%)。` }}</p>
220 214
221 <!-- 3. 定性评估 --> 215 <!-- 3. 定性评估 -->
222 <h1 style="font-family: simsun;font-size: 18px;font-weight: 700;text-align: left;margin-top: 10px;margin-bottom: 10px;color: #212121;">三、定性评估</h1> 216 <h1 style="text-align: left;margin-top: 10px;margin-bottom: 10px;">三、定性评估</h1>
223 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ` 依据GB/T 37964标准,对数据集中的标识符进行了识别与分类处理:` }}</p> 217 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `依据GB/T 37964标准,对数据集中的标识符进行了识别与分类处理:` }}</p>
224 218
225 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;font-weight: 700;">{{ ` 1.直接标识符处理` }}</p> 219 <p style="margin: 0px;white-space: pre-wrap;font-weight: 700;margin: 8px 0px;text-indent: 2em;">{{ `1.直接标识符处理` }}</p>
226 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ` 识别字段:姓名、身份证号、手机号、住院号、家庭详细住址等。` }}</p> 220 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `识别字段:姓名、身份证号、手机号、住院号、家庭详细住址等。` }}</p>
227 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ' 处理措施:采用完全删除技术。' }}</p> 221 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ '处理措施:采用完全删除技术。' }}</p>
228 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ` 评估结果:数据集中已完全消除直接标识符,无法通过单一字段直接识别特定患者。` }}</p> 222 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `评估结果:数据集中已完全消除直接标识符,无法通过单一字段直接识别特定患者。` }}</p>
229 223
230 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;font-weight: 700;">{{ ` 2.准标识符处理` }}</p> 224 <p style="margin: 0px;white-space: pre-wrap;font-weight: 700;margin: 8px 0px;text-indent: 2em;">{{ `2.准标识符处理` }}</p>
231 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ` 识别字段:性别、年龄、职业、入院日期、出院日期、出生日期、婚姻、受教育水平等。` }}</p> 225 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `识别字段:性别、年龄、职业、入院日期、出院日期、出生日期、婚姻、受教育水平等。` }}</p>
232 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ' 处理措施:' }}</p> 226 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ '处理措施:' }}</p>
233 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ` 时间泛化:将精确的“入院日期”、“出院日期”泛化为“年份”或住院天数、“年龄”泛化为“年龄段”(如将年龄转换为[40-50]区间)。` }}</p> 227 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `时间泛化:将精确的“入院日期”、“出院日期”泛化为“年份”或住院天数、“年龄”泛化为“年龄段”(如将年龄转换为[40-50]区间)。` }}</p>
234 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ` 对准标识符的泛化确保同一属性组合(相同的准标识符)下的记录数满足k-匿名要求(设定k≥10)。比如性别为男、年龄[40-50]、职业为其他、入院时间为2025年11月,出院时间为2025年11月的记录数满足10条以上。` }}</p> 228 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `对准标识符的泛化确保同一属性组合(相同的准标识符)下的记录数满足k-匿名要求(设定k≥10)。比如性别为男、年龄[40-50]、职业为其他、入院时间为2025年11月,出院时间为2025年11月的记录数满足10条以上。` }}</p>
235 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ` 评估结果:数据集中未对准标识符进行有效地泛化和抑制处理。` }}</p> 229 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `评估结果:数据集中未对准标识符进行有效地泛化和抑制处理。` }}</p>
236 230
237 <!-- 4. 定量评估(重标识风险计算) --> 231 <!-- 4. 定量评估(重标识风险计算) -->
238 <h1 style="font-family: simsun;font-size: 18px;font-weight: 700;text-align: left;margin-top: 10px;margin-bottom: 10px;color: #212121;">四、定量评估(重标识风险计算)</h1> 232 <h1 style="text-align: left;margin-top: 10px;margin-bottom: 10px;">四、定量评估(重标识风险计算)</h1>
239 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ` 依据GB/T 42460-2023《信息安全技术个人信息去标识化效果评估指南》附录D,对去标识化以后的数据集基于K匿名模型进行去标识化效果的评估。总体方案为先对所有的数据进行直接标识符识别,判断无直接标识符内容后,再计算数据集每行记录、整体数据集的重标识风险,进而计算环境重标识攻击概率,最后再结合环境重标识攻击概率计算整个数据集的重标识整体风险。` }}</p> 233 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `依据GB/T 42460-2023《信息安全技术个人信息去标识化效果评估指南》附录D,对去标识化以后的数据集基于K匿名模型进行去标识化效果的评估。总体方案为先对所有的数据进行直接标识符识别,判断无直接标识符内容后,再计算数据集每行记录、整体数据集的重标识风险,进而计算环境重标识攻击概率,最后再结合环境重标识攻击概率计算整个数据集的重标识整体风险。` }}</p>
240 234
241 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"><strong>{{ ` 直接标识符:` }}</strong>{{ '经扫描数据集的内容,比如现病史、既往史等长文本字段进行扫描,未发现直接标识符内容。' }}</p> 235 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;"><strong>{{ `直接标识符:` }}</strong>{{ '经扫描数据集的内容,比如现病史、既往史等长文本字段进行扫描,未发现直接标识符内容。' }}</p>
242 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"><strong>{{ ` 重标识风险总体风险:` }}</strong>{{ `准标识符${analysisResultInfo.rating > 2 ? '' : '并未'}进行有效泛化,计算的重标识符总体风险为${analysisResultInfo.reIdentifyOverallRisk != null ? 236 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;"><strong>{{ `重标识风险总体风险:` }}</strong>{{ `准标识符${analysisResultInfo.rating > 2 ? '' : '并未'}进行有效泛化,计算的重标识符总体风险为${analysisResultInfo.reIdentifyOverallRisk != null ?
243 (analysisResultInfo.reIdentifyOverallRisk || 0) * 100 : '--'}${analysisResultInfo.reIdentifyOverallRisk ? '%' : ''};` }}</p> 237 (analysisResultInfo.reIdentifyOverallRisk || 0) * 100 : '--'}${analysisResultInfo.reIdentifyOverallRisk ? '%' : ''};` }}</p>
244 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"><strong>{{ ` 重标识风险最大值:` }}</strong>{{ `计算数据集中重标识风险最高的记录所对应的风险值。经计算,该数据集最大重标识风险值为${analysisResultInfo.reIdentifyRiskRb != null ? 238 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;"><strong>{{ `重标识风险最大值:` }}</strong>{{ `计算数据集中重标识风险最高的记录所对应的风险值。经计算,该数据集最大重标识风险值为${analysisResultInfo.reIdentifyRiskRb != null ?
245 (analysisResultInfo.reIdentifyRiskRb || 0) : '--'}${analysisResultInfo.reIdentifyRiskRb ? `(即${analysisResultInfo.reIdentifyRiskRb*100}%)` : ''}。` }}</p> 239 (analysisResultInfo.reIdentifyRiskRb || 0) : '--'}${analysisResultInfo.reIdentifyRiskRb ? `(即${analysisResultInfo.reIdentifyRiskRb*100}%)` : ''}。` }}</p>
246 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"><strong>{{ ` 重标识风险平均值:` }}</strong>{{ `模拟攻击者随机抽取一条记录并尝试重标识的平均风险。经计算,该数据集重标识风险的平均值为${analysisResultInfo.reIdentifyRiskRc != null ? 240 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;"><strong>{{ `重标识风险平均值:` }}</strong>{{ `模拟攻击者随机抽取一条记录并尝试重标识的平均风险。经计算,该数据集重标识风险的平均值为${analysisResultInfo.reIdentifyRiskRc != null ?
247 (analysisResultInfo.reIdentifyRiskRc || 0) : '--'}${analysisResultInfo.reIdentifyRiskRc ? `(即${analysisResultInfo.reIdentifyRiskRc * 100}%)` : ''}。` }}</p> 241 (analysisResultInfo.reIdentifyRiskRc || 0) : '--'}${analysisResultInfo.reIdentifyRiskRc ? `(即${analysisResultInfo.reIdentifyRiskRc * 100}%)` : ''}。` }}</p>
248 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"><strong>{{ ` 环境重标识攻击概率:` }}</strong>{{ oldAnonTaskValueInfo.dataSharingTypeCode == '01' ? `${oldAnonTaskValueInfo.dataSharingTypeName}的数据集,攻击者对数据集进行环境重标识攻击的概率为1。即该数据集的攻击概率为${analysisResultInfo.envReAttackPr != null ? 242 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;"><strong>{{ `环境重标识攻击概率:` }}</strong>{{ oldAnonTaskValueInfo.dataSharingTypeCode == '01' ? `${oldAnonTaskValueInfo.dataSharingTypeName}的数据集,攻击者对数据集进行环境重标识攻击的概率为1。即该数据集的攻击概率为${analysisResultInfo.envReAttackPr != null ?
249 (analysisResultInfo.envReAttackPr || 0) : '--'}${analysisResultInfo.envReAttackPr ? `(即${analysisResultInfo.envReAttackPr * 100}%)` : ''}。` : 243 (analysisResultInfo.envReAttackPr || 0) : '--'}${analysisResultInfo.envReAttackPr ? `(即${analysisResultInfo.envReAttackPr * 100}%)` : ''}。` :
250 `${oldAnonTaskValueInfo.dataSharingTypeName}的数据集,环境重标识攻击概率为内部故意攻击概率、数据集包含熟人概率和数据泄露概率三者的最大值,经计算,该数据集的攻击概率为${analysisResultInfo.envReAttackPr != null ? 244 `${oldAnonTaskValueInfo.dataSharingTypeName}的数据集,环境重标识攻击概率为内部故意攻击概率、数据集包含熟人概率和数据泄露概率三者的最大值,经计算,该数据集的攻击概率为${analysisResultInfo.envReAttackPr != null ?
251 (analysisResultInfo.envReAttackPr || 0) : '--'}${analysisResultInfo.envReAttackPr ? `(即${analysisResultInfo.envReAttackPr * 100}%)` : ''}。` }}</p> 245 (analysisResultInfo.envReAttackPr || 0) : '--'}${analysisResultInfo.envReAttackPr ? `(即${analysisResultInfo.envReAttackPr * 100}%)` : ''}。` }}</p>
252 246
253 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;font-weight: 700;margin: 8px 0px 4px;">{{ ' 具体计算指标如下:' }}</p> 247 <p style="margin: 8px 0px 4px;white-space: pre-wrap;font-weight: 700;text-indent: 2em;">{{ '具体计算指标如下:' }}</p>
254 248
255 <!-- 1. 重标识风险表 --> 249 <!-- 1. 重标识风险表 -->
256 <div style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;white-space: pre-wrap;color: #212121;font-weight: 700;margin: 8px 0px 4px;">{{ ' 1. 重标识风险表' }}</div> 250 <p style="display: block;white-space: pre-wrap;font-weight: 700;margin: 8px 0px 4px;text-indent: 2em;">{{ '1. 重标识风险表' }}</p>
257 <div style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;margin-bottom: 4px;white-space: pre-wrap;">{{ ` 门限阈值的取值:该数据集为${oldAnonTaskValueInfo.dataSharingTypeName}数据,门限阈值为${oldAnonTaskValueInfo.dataSharingTypeCode == '01' ? '1/20' : (oldAnonTaskValueInfo.dataSharingTypeCode == '02' ? '1/5' : '1/3')} ` }}</div> 251 <p style="display: block;margin-bottom: 4px;white-space: pre-wrap;text-indent: 2em;">{{ `门限阈值的取值:该数据集为${oldAnonTaskValueInfo.dataSharingTypeName}数据,门限阈值为${oldAnonTaskValueInfo.dataSharingTypeCode == '01' ? '1/20' : (oldAnonTaskValueInfo.dataSharingTypeCode == '02' ? '1/5' : '1/3')} ` }}</p>
258 <table border="0" cellspacing="0" 252 <table border="0" cellspacing="0"
259 style="width:100%;word-break: break-all;margin: 0 auto;text-align: center;border-collapse: collapse;color: #212121"> 253 style="width:100%;word-break: break-all;margin: 0 auto;text-align: center;border-collapse: collapse;color: #212121">
260 <thead> 254 <thead>
...@@ -277,9 +271,9 @@ ...@@ -277,9 +271,9 @@
277 </table> 271 </table>
278 272
279 <!-- 2. 内部故意攻击概率 --> 273 <!-- 2. 内部故意攻击概率 -->
280 <div v-show="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;white-space: pre-wrap;color: #212121;font-weight: 700;margin: 8px 0px 4px;">{{ ' 2. 内部故意攻击概率'}}</div> 274 <p v-if="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="display: block;white-space: pre-wrap;font-weight: 700;margin: 8px 0px 4px;text-indent: 2em;">{{ '2. 内部故意攻击概率'}}</p>
281 <div v-show="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;margin-bottom: 4px;white-space: pre-wrap;">{{ ' 重标识数据的动机和能力为低,从重标识攻击可能性分析表可得出在内部攻击方面,重标识攻击概率的取值为0.05。' }}</div> 275 <p v-if="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="display: block;margin-bottom: 4px;white-space: pre-wrap;text-indent: 2em;">{{ '重标识数据的动机和能力为低,从重标识攻击可能性分析表可得出在内部攻击方面,重标识攻击概率的取值为0.05。' }}</p>
282 <table v-show="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" border="0" cellspacing="0" 276 <table v-if="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" border="0" cellspacing="0"
283 style="width:100%;word-break: break-all;margin: 0 auto;text-align: center;border-collapse: collapse;color: #212121;"> 277 style="width:100%;word-break: break-all;margin: 0 auto;text-align: center;border-collapse: collapse;color: #212121;">
284 <thead> 278 <thead>
285 <tr> 279 <tr>
...@@ -291,7 +285,7 @@ ...@@ -291,7 +285,7 @@
291 <tbody> 285 <tbody>
292 <tr v-for="(recordItem, j) in innerResultData" :key="j"> 286 <tr v-for="(recordItem, j) in innerResultData" :key="j">
293 <template v-for="(columnItem, i) in innerResultFields" :key="i"> 287 <template v-for="(columnItem, i) in innerResultFields" :key="i">
294 <td :rowspan="i == 0 ? 3 : 1" v-show="!(j % 3 != 0 && i == 0)" 288 <td :rowspan="i == 0 ? 3 : 1" v-if="!(j % 3 != 0 && i == 0)"
295 :style="{ border: '0.5px solid #d9d9d9', 'text-align': <any>(columnItem.align ?? 'left') }"> 289 :style="{ border: '0.5px solid #d9d9d9', 'text-align': <any>(columnItem.align ?? 'left') }">
296 <span :style="{ 'word-break': 'break-all' }"> 290 <span :style="{ 'word-break': 'break-all' }">
297 {{ recordItem[columnItem.field] }} 291 {{ recordItem[columnItem.field] }}
...@@ -303,25 +297,25 @@ ...@@ -303,25 +297,25 @@
303 </table> 297 </table>
304 298
305 <!-- 3. 数据集包含熟人概率 --> 299 <!-- 3. 数据集包含熟人概率 -->
306 <div v-show="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;font-weight: 700;margin: 8px 0px;white-space: pre-wrap;">{{ ' 3. 数据集包含熟人概率'}}</div> 300 <p v-if="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="display: block;font-weight: 700;margin: 8px 0px;white-space: pre-wrap;text-indent: 2em;">{{ '3. 数据集包含熟人概率'}}</p>
307 <div v-show="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="font-family: simsun;text-align: center; display: block;line-height: 21px;font-size: 14px;color: #212121;font-weight: 700">pr=1-(1-p)^m</div> 301 <p v-if="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="text-align: center; display: block;font-weight: 700">pr=1-(1-p)^m</p>
308 <div v-show="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;white-space: pre-wrap;"> 302 <p v-if="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="display: block;white-space: pre-wrap;text-indent: 2em;">
309 {{ ` 数据集包含熟人概率可通过以上公式计算,${new Date().getFullYear()}年我国最新的人口统计为${analysisResultInfo?.allPerson || 303 {{ `数据集包含熟人概率可通过以上公式计算,${new Date().getFullYear()}年我国最新的人口统计为${analysisResultInfo?.allPerson ||
310 0}亿人,其中该数据集的容量为${analysisResultInfo?.dataSetNum || 0}万,占总人口的比例为${analysisResultInfo.patientPopulationRate || 304 0}亿人,其中该数据集的容量为${analysisResultInfo?.dataSetNum || 0}万,占总人口的比例为${analysisResultInfo.patientPopulationRate ||
311 0}%m值取推荐值150,数据集包含熟人的概率为${analysisResultInfo.randomAcquaintancePr || 0}。` }} 305 0}%m值取推荐值150,数据集包含熟人的概率为${analysisResultInfo.randomAcquaintancePr || 0}。` }}
312 </div> 306 </p>
313 307
314 <!-- 4. 数据泄露概率 --> 308 <!-- 4. 数据泄露概率 -->
315 <div v-show="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;font-weight: 700;margin: 8px 0px;white-space: pre-wrap;">{{ ' 4. 数据泄露概率'}}</div> 309 <p v-if="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="display: block;font-weight: 700;margin: 8px 0px;white-space: pre-wrap;text-indent: 2em;">{{ '4. 数据泄露概率'}}</p>
316 <div v-show="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;white-space: pre-wrap;">{{ ' 对于安全和隐私控制能力评估为低的情况,推荐将数据泄露概率设定为0.55。' }}</div> 310 <p v-if="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="display: block;white-space: pre-wrap;text-indent: 2em;">{{ '对于安全和隐私控制能力评估为低的情况,推荐将数据泄露概率设定为0.55。' }}</p>
317 <div v-show="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;white-space: pre-wrap;">{{ ' 对于安全和隐私控制能力评估为中的情况,推荐将数据泄露概率设定为0.27。' }}</div> 311 <p v-if="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="display: block;white-space: pre-wrap;text-indent: 2em;">{{ '对于安全和隐私控制能力评估为中的情况,推荐将数据泄露概率设定为0.27。' }}</p>
318 <div v-show="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;white-space: pre-wrap;">{{ ' 对于安全和隐私控制能力评估为高的情况,推荐将数据泄露概率设定为0.14。' }}</div> 312 <p v-if="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="display: block;white-space: pre-wrap;text-indent: 2em;">{{ '对于安全和隐私控制能力评估为高的情况,推荐将数据泄露概率设定为0.14。' }}</p>
319 <div v-show="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;white-space: pre-wrap;">{{ ` 数据接收方的安全和隐私控制能力为高,按照推荐值将数据泄露概率设定为${analysisResultInfo.dataBreachPr || 0}。` }}</div> 313 <p v-if="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="display: block;white-space: pre-wrap;text-indent: 2em;">{{ `数据接收方的安全和隐私控制能力为高,按照推荐值将数据泄露概率设定为${analysisResultInfo.dataBreachPr || 0}。` }}</p>
320 314
321 <!-- 对抗性测试 (评级>=3时展示) --> 315 <!-- 对抗性测试 (评级>=3时展示) -->
322 <div v-show="analysisResultInfo.rating >= 3" style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;font-weight: 700;margin: 8px 0px;white-space: pre-wrap;">{{ oldAnonTaskValueInfo.dataSharingTypeCode != '01' ? ' 5. 对抗性测试' : ' 2. 对抗性测试' }}</div> 316 <p v-if="analysisResultInfo.rating >= 3" style="display: block;font-weight: 700;margin: 8px 0px;white-space: pre-wrap;text-indent: 2em;">{{ oldAnonTaskValueInfo.dataSharingTypeCode != '01' ? '5. 对抗性测试' : '2. 对抗性测试' }}</p>
323 <p v-show="analysisResultInfo.rating >= 3" style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;color: #212121;white-space: pre-wrap;">{{ ' 依据《数据安全技术个人信息匿名化处理指南及评价方法(征求意见稿)》4.2,去标识化的数据集达到3级可展开对数据级的对抗性测试和不可复原性核验。对抗性测试关键变量如下表:' }}</p> 317 <p v-if="analysisResultInfo.rating >= 3" style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ '依据《数据安全技术个人信息匿名化处理指南及评价方法(征求意见稿)》4.2,去标识化的数据集达到3级可展开对数据级的对抗性测试和不可复原性核验。对抗性测试关键变量如下表:' }}</p>
324 <table border="0" cellspacing="0" v-show="analysisResultInfo.rating >= 3" style="width:100%;word-break: break-all;margin: 4px auto 0px auto;text-align: center;border-collapse: collapse;color: #212121;"> 318 <table border="0" cellspacing="0" v-if="analysisResultInfo.rating >= 3" style="width:100%;word-break: break-all;margin: 4px auto 0px auto;text-align: center;border-collapse: collapse;color: #212121;">
325 <thead> 319 <thead>
326 <tr> 320 <tr>
327 <th v-for="(item, index) in adversarialTestFields" :key="index" style="border: 0.5px solid #d9d9d9"> 321 <th v-for="(item, index) in adversarialTestFields" :key="index" style="border: 0.5px solid #d9d9d9">
...@@ -339,26 +333,27 @@ ...@@ -339,26 +333,27 @@
339 </tr> 333 </tr>
340 </tbody> 334 </tbody>
341 </table> 335 </table>
342 <p v-show="analysisResultInfo.rating >= 3" style="font-family: simsun;margin: 4px 0px 0px;font-size: 14px;line-height: 21px;color: #212121;white-space: pre-wrap;">{{ ' 通过识别关键变量,选择标识度高于0.5的属性作为攻击测试的关键变量,在攻击测试中,涉及到的攻击场景,其重标识概率均远小于所接受的风险水平0.05。另外,未发现任何其它可能的安全性问题。' }}</p> 336 <p v-if="analysisResultInfo.rating >= 3" style="margin: 4px 0px 0px;white-space: pre-wrap;text-indent: 2em;">{{ '通过识别关键变量,选择标识度高于0.5的属性作为攻击测试的关键变量,在攻击测试中,涉及到的攻击场景,其重标识概率均远小于所接受的风险水平0.05。另外,未发现任何其它可能的安全性问题。' }}</p>
343 337
344 <!-- 指标说明 --> 338 <!-- 指标说明 -->
345 <div style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;font-weight: 700;margin: 8px 0px;white-space: pre-wrap;">{{ ' 指标说明:'}}</div> 339 <p style="display: block;font-weight: 700;margin: 8px 0px;white-space: pre-wrap;text-indent: 2em;">{{ '指标说明:'}}</p>
346 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;color: #212121;margin-top: 8px;white-space: pre-wrap;">{{ ' 重标识风险最大值:所有等价类的重标识风险最大值;' }}</p> 340 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ '重标识风险最大值:所有等价类的重标识风险最大值;' }}</p>
347 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;color: #212121;white-space: pre-wrap;">{{ ' 重标识风险平均值:所有等价类的重标识风险平均值;' }}</p> 341 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ '重标识风险平均值:所有等价类的重标识风险平均值;' }}</p>
348 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;color: #212121;white-space: pre-wrap;">{{ ' 环境重标识攻击概率:完全公开共享数据发布,攻击者对数据集进行环境重标识攻击的概率为1。领地公开共享与受控公开共享数据发布,环境重标识攻击概率为内部故意攻击概率、数据集包含熟人概率和数据泄露概率三者的最大值;' }}</p> 342 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ '环境重标识攻击概率:完全公开共享数据发布,攻击者对数据集进行环境重标识攻击的概率为1。领地公开共享与受控公开共享数据发布,环境重标识攻击概率为内部故意攻击概率、数据集包含熟人概率和数据泄露概率三者的最大值;' }}</p>
349 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;color: #212121;white-space: pre-wrap;">{{ ' 等价类门限风险:完全公开共享数据发布,门限阈值取值1/20;受控公开共享数据发布,门限阈值取值1/5;领地公开共享数据发布,门限阈值取值1/3;等价类门限风险为:等价类的重标识风险大于门限阈值为1,小于等于为0,求和后除以等价类个数;' }}</p> 343 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ '等价类门限风险:完全公开共享数据发布,门限阈值取值1/20;受控公开共享数据发布,门限阈值取值1/5;领地公开共享数据发布,门限阈值取值1/3;等价类门限风险为:等价类的重标识风险大于门限阈值为1,小于等于为0,求和后除以等价类个数;' }}</p>
350 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;color: #212121;white-space: pre-wrap;">{{ ' 重标识风险总体风险:完全公开共享,当等价类门限风险=0时,重标识风险总体风险公式为等价类重标识风险最大值*环境重标识攻击概率;当等价类门限风险!=0时,重标识风险总体风险为1。' }}</p> 344 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ '重标识风险总体风险:完全公开共享,当等价类门限风险=0时,重标识风险总体风险公式为等价类重标识风险最大值*环境重标识攻击概率;当等价类门限风险!=0时,重标识风险总体风险为1。' }}</p>
351 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;color: #212121;white-space: pre-wrap;">{{ ' 受控公开共享和领地公开共享,当等价类门限风险=0时,重标识风险总体风险公式为等价类重标识风险平均值*环境重标识攻击概率;当等价类门限风险!=0时,重标识风险总体风险为1。' }}</p> 345 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ '受控公开共享和领地公开共享,当等价类门限风险=0时,重标识风险总体风险公式为等价类重标识风险平均值*环境重标识攻击概率;当等价类门限风险!=0时,重标识风险总体风险为1。' }}</p>
352 346
353 <!-- 5. 评估结论与分级 --> 347 <!-- 5. 评估结论与分级 -->
354 <h1 style="font-family: simsun;font-size: 18px;font-weight: 700;text-align: left;margin-top: 10px;margin-bottom: 10px;color: #212121;">五、评估结论与分级</h1> 348 <h1 style="text-align: left;margin-top: 10px;margin-bottom: 10px;">五、评估结论与分级</h1>
355 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ` 定性评估结论:${analysisResultInfo.rating == 2 ? '数据集已消除所有直接标识符,但未对准标识符进行了有效的泛化与抑制处理。' : (analysisResultInfo.rating == 4 ? '数据集无任何的直接标识符和准标识符。' : '数据集已消除所有直接标识符,并对准标识符进行了有效的泛化与抑制处理。')}` }}</p> 349 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `定性评估结论:${analysisResultInfo.rating == 2 ? '数据集已消除所有直接标识符,但未对准标识符进行了有效的泛化与抑制处理。' : (analysisResultInfo.rating == 4 ? '数据集无任何的直接标识符和准标识符。' : '数据集已消除所有直接标识符,并对准标识符进行了有效的泛化与抑制处理。')}` }}</p>
356 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ` 定量评估结论:${analysisResultInfo.rating == 2 ? '数据集的重标识风险总体风险(1)大于预设的可接受风险阈值(0.05)。' : (analysisResultInfo.rating == 4 ? '数据集重标识风险总体风险为0。' : '数据集的重标识风险总体风险(1)小于等于预设的可接受风险阈值(0.05)。')}` }}</p> 350 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `定量评估结论:${analysisResultInfo.rating == 2 ? '数据集的重标识风险总体风险(1)大于预设的可接受风险阈值(0.05)。' : (analysisResultInfo.rating == 4 ? '数据集重标识风险总体风险为0。' : '数据集的重标识风险总体风险(1)小于等于预设的可接受风险阈值(0.05)。')}` }}</p>
357 <p style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ` 最终评级:综合定性与定量评估结果,根据GB/T 42460-2023的分级标准,该${oldAnonTaskValueInfo.taskName}的匿名化效果评定为${analysisResultInfo.rating}级${analysisResultInfo.rating <=2 ? '(重标识风险较高)' : ''}。` }}</p> 351 <p style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `最终评级:综合定性与定量评估结果,根据GB/T 42460-2023的分级标准,该${oldAnonTaskValueInfo.taskName}的匿名化效果评定为${analysisResultInfo.rating}级${analysisResultInfo.rating <=2 ? '(重标识风险较高)' : ''}。` }}</p>
358 352
359 <!-- 6. 建议与改进 --> 353 <!-- 6. 建议与改进 -->
360 <h1 v-show="analysisResultInfo.rating <= 2" style="font-family: simsun;font-size: 18px;font-weight: 700;text-align: left;margin-top: 10px;margin-bottom: 10px;color: #212121;">六、建议与改进</h1> 354 <h1 v-if="analysisResultInfo.rating <= 2" style="text-align: left;margin-top: 10px;margin-bottom: 10px;">六、建议与改进</h1>
361 <p v-show="analysisResultInfo.rating <= 2" style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ ` 需要对准标识符${analysisResultInfo.qualifiedIdentifier?.map(f => f.chName)?.join('、')}做有效的泛化和抑制,满足k-匿名要求(设定k10),从而使得该数据集适用于受控环境下进行跨机构流通。` }}</p> 355 <p v-if="analysisResultInfo.rating <= 2" style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `需要对准标识符${analysisResultInfo.qualifiedIdentifier?.map(f => f.chName)?.join('、')}做有效的泛化和抑制,满足k-匿名要求(设定k10),从而使得该数据集适用于受控环境下进行跨机构流通。` }}</p>
356 <br clear="all" style="page-break-before:always;mso-break-type:section-break">
362 </div> 357 </div>
363 </div> 358 </div>
364 </template> 359 </template>
...@@ -801,4 +796,19 @@ defineExpose({ ...@@ -801,4 +796,19 @@ defineExpose({
801 } 796 }
802 } 797 }
803 } 798 }
799
800 p {
801 font-family: simsun;
802 font-size: 14px;
803 line-height: 21px;
804 color: #212121;
805 }
806
807 h1 {
808 font-family: simsun;
809 font-size: 18px;
810 font-weight: 700;
811 color: #212121;
812 text-align: left; margin-top: 10px; margin-bottom: 10px;
813 }
804 </style> 814 </style>
...\ No newline at end of file ...\ No newline at end of file
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!