feat: show usable rule counts

This commit is contained in:
wren
2026-04-30 17:59:35 +08:00
parent 3fb7e9f5d0
commit 2eb40e8af6
3 changed files with 16 additions and 13 deletions
+2
View File
@@ -43,6 +43,7 @@ export interface RuleSetOption {
currentVersionId?: number | null; currentVersionId?: number | null;
fallbackVersionId?: number | null; fallbackVersionId?: number | null;
hasUsableVersion?: boolean; hasUsableVersion?: boolean;
usableRuleCount?: number;
} }
export interface EntryModuleOption { export interface EntryModuleOption {
@@ -264,6 +265,7 @@ export async function getRuleSets(
currentVersionId: r.currentVersionId ?? null, currentVersionId: r.currentVersionId ?? null,
fallbackVersionId: r.fallbackVersionId ?? null, fallbackVersionId: r.fallbackVersionId ?? null,
hasUsableVersion: !!r.hasUsableVersion, hasUsableVersion: !!r.hasUsableVersion,
usableRuleCount: Number(r.usableRuleCount || 0),
})), })),
}; };
} catch (error) { } catch (error) {
+7 -7
View File
@@ -360,20 +360,20 @@ export function buildUploadErrorDetails(
if (ruleSetDisplayName || payloadRuleSetId) { if (ruleSetDisplayName || payloadRuleSetId) {
detailLines.push(`疑似异常规则集:${ruleSetDisplayName || `规则集 ID ${payloadRuleSetId}`}`); detailLines.push(`疑似异常规则集:${ruleSetDisplayName || `规则集 ID ${payloadRuleSetId}`}`);
} else if (documentType?.ruleSetIds && documentType.ruleSetIds.length > 1) { } else if (documentType?.ruleSetIds && documentType.ruleSetIds.length > 1) {
detailLines.push('该文档类型绑定了多个规则集,需要逐个确认是否都已发布可用版本。'); detailLines.push('该文档类型绑定了多个规则集,需要逐个确认可用规则数是否正常。');
} else { } else {
detailLines.push('后端没有返回具体规则集名称,建议优先检查该文档类型绑定的规则集是否已发布版本。'); detailLines.push('后端没有返回具体规则集名称,建议优先检查该文档类型绑定的规则集是否存在可用规则。');
} }
detailLines.push(`后端返回:${message}`); detailLines.push(`后端返回:${message}`);
return { return {
title: '审核规则未配置完整', title: '审核规则未配置完整',
summary: `${documentTypeDisplayName} 目前没有可用的审核规则版本,所以系统无法接收本次上传。`, summary: `${documentTypeDisplayName} 目前没有可用的审核规则,所以系统无法接收本次上传。`,
detailLines, detailLines,
actionLines: [ actionLines: [
'到“系统设置 / 文档类型管理”检查该文档类型是否绑定了正确的规则集。', '到“系统设置 / 文档类型管理”检查该文档类型是否绑定了正确的规则集。',
'到“规则管理 / 规则集管理”确认对应规则集至少有一个已发布、可用的版本。', '到“规则管理 / 规则集管理”确认对应规则集的可用规则数是否正常。',
'如果首页入口也异常,请同时到“系统设置 / 入口模块管理”检查入口模块绑定。', '如果首页入口也异常,请同时到“系统设置 / 入口模块管理”检查入口模块绑定。',
], ],
rawMessage: message, rawMessage: message,
@@ -391,11 +391,11 @@ export function buildUploadErrorDetails(
]; ];
return { return {
title: '规则集版本不可用', title: '规则集不可用',
summary: '当前上传入口关联的规则集或规则版本不可用,文件无法开始审核。', summary: '当前上传入口关联的规则集不可用,文件无法开始审核。',
detailLines, detailLines,
actionLines: [ actionLines: [
'到“规则管理 / 规则集管理”检查对应规则集是否存在、是否已发布版本。', '到“规则管理 / 规则集管理”检查对应规则集是否存在、可用规则数是否正常。',
'如文档类型绑定了错误的规则集,请到“系统设置 / 文档类型管理”修正绑定关系。', '如文档类型绑定了错误的规则集,请到“系统设置 / 文档类型管理”修正绑定关系。',
], ],
rawMessage: message, rawMessage: message,
+7 -6
View File
@@ -79,6 +79,7 @@ export default function DocumentTypeNew() {
rs.ruleType, rs.ruleType,
rs.status, rs.status,
String(rs.id), String(rs.id),
String(rs.usableRuleCount || 0),
rs.currentVersionId ? String(rs.currentVersionId) : "", rs.currentVersionId ? String(rs.currentVersionId) : "",
rs.fallbackVersionId ? String(rs.fallbackVersionId) : "", rs.fallbackVersionId ? String(rs.fallbackVersionId) : "",
].some((value) => value.toLowerCase().includes(normalizedRuleSetKeyword)); ].some((value) => value.toLowerCase().includes(normalizedRuleSetKeyword));
@@ -102,7 +103,7 @@ export default function DocumentTypeNew() {
else if (!/^[a-zA-Z][a-zA-Z0-9_.]*$/.test(code.trim())) errs.code = "编码格式:字母开头,可含字母数字._"; else if (!/^[a-zA-Z][a-zA-Z0-9_.]*$/.test(code.trim())) errs.code = "编码格式:字母开头,可含字母数字._";
if (!name.trim()) errs.name = "名称不能为空"; if (!name.trim()) errs.name = "名称不能为空";
if (selectedUnavailableRuleSets.length > 0) { if (selectedUnavailableRuleSets.length > 0) {
errs.ruleSetIds = "已选择的规则集中包含不可用于上传评查的项,请先发布/回滚可用版本"; errs.ruleSetIds = "已选择的规则集中包含不可用于上传评查的项,请先确认可用规则数是否正常";
} }
setErrors(errs); setErrors(errs);
return Object.keys(errs).length === 0; return Object.keys(errs).length === 0;
@@ -334,7 +335,7 @@ export default function DocumentTypeNew() {
<strong></strong> <strong></strong>
<span> <span>
{selectedUnavailableRuleSets.map((item) => item.ruleName).join("、")} {selectedUnavailableRuleSets.map((item) => item.ruleName).join("、")}
{" "} {" "}
</span> </span>
</div> </div>
</div> </div>
@@ -376,20 +377,20 @@ export default function DocumentTypeNew() {
<span className="rule-set-id"> ID #{rs.id}</span> <span className="rule-set-id"> ID #{rs.id}</span>
<span className={`rule-set-version-badge ${rs.hasUsableVersion ? "ok" : "missing"}`}> <span className={`rule-set-version-badge ${rs.hasUsableVersion ? "ok" : "missing"}`}>
{rs.hasUsableVersion {rs.hasUsableVersion
? `可用版本 ${rs.currentVersionId || rs.fallbackVersionId}` ? `可用规则数:${rs.usableRuleCount || 0}`
: "可用版本"} : "可用规则数:0"}
</span> </span>
</div> </div>
{!rs.hasUsableVersion && ( {!rs.hasUsableVersion && (
<div className="rule-set-inline-warning"> <div className="rule-set-inline-warning">
<i className="ri-alarm-warning-line"></i> <i className="ri-alarm-warning-line"></i>
<span>/退</span> <span></span>
</div> </div>
)} )}
{rs.hasUsableVersion && !rs.currentVersionId && rs.fallbackVersionId && ( {rs.hasUsableVersion && !rs.currentVersionId && rs.fallbackVersionId && (
<div className="rule-set-inline-warning soft"> <div className="rule-set-inline-warning soft">
<i className="ri-information-line"></i> <i className="ri-information-line"></i>
<span>退使 #{rs.fallbackVersionId}</span> <span>退</span>
</div> </div>
)} )}
</div> </div>