DG8 收口设计主参考系统治理
这个提交包含在:
@@ -17,6 +17,21 @@ const scanRoots = [
|
||||
];
|
||||
const sourceExtensions = new Set([".js", ".jsx", ".ts", ".tsx"]);
|
||||
const forbiddenCopy = ["先处理", "清爽"];
|
||||
const forbiddenCompetitorReferences = [
|
||||
"飞书",
|
||||
"钉钉",
|
||||
"泛微",
|
||||
"每刻",
|
||||
"合思",
|
||||
"易快报",
|
||||
"金蝶",
|
||||
"用友",
|
||||
"Ant Design",
|
||||
"WeUI",
|
||||
"e-office",
|
||||
"e-cology",
|
||||
];
|
||||
const forbiddenDesignMetaCopy = ["照搬"];
|
||||
const userFacingBusinessTermFiles = new Set([
|
||||
"client/src/pages/MobileCapturePage.tsx",
|
||||
"client/src/pages/MobileNotificationsPage.tsx",
|
||||
@@ -111,6 +126,38 @@ function scanForbiddenCopy(file, source) {
|
||||
}
|
||||
}
|
||||
|
||||
function scanCompetitorReferenceCopy(file, source) {
|
||||
for (const phrase of forbiddenCompetitorReferences) {
|
||||
let start = source.indexOf(phrase);
|
||||
while (start !== -1) {
|
||||
addFinding({
|
||||
rule: "copy.no_competitor_reference",
|
||||
severity: "error",
|
||||
file,
|
||||
line: lineNumber(source, start),
|
||||
message: `用户界面不得出现竞品或外部设计系统名称:${phrase}`,
|
||||
evidence: phrase,
|
||||
});
|
||||
start = source.indexOf(phrase, start + phrase.length);
|
||||
}
|
||||
}
|
||||
|
||||
for (const phrase of forbiddenDesignMetaCopy) {
|
||||
let start = source.indexOf(phrase);
|
||||
while (start !== -1) {
|
||||
addFinding({
|
||||
rule: "copy.no_design_meta_labels",
|
||||
severity: "error",
|
||||
file,
|
||||
line: lineNumber(source, start),
|
||||
message: `用户界面不得出现设计治理元话语:${phrase}`,
|
||||
evidence: phrase,
|
||||
});
|
||||
start = source.indexOf(phrase, start + phrase.length);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function scanMobileDarkControls(file, source) {
|
||||
const normalized = toPosix(file);
|
||||
const mobileScope = /\/Mobile|\/mobile\//.test(normalized) || /mobile/i.test(path.basename(file));
|
||||
@@ -487,6 +534,7 @@ function scanNavigationTitleCoverage(file, source) {
|
||||
|
||||
function scanFileSource(file, source) {
|
||||
scanForbiddenCopy(file, source);
|
||||
scanCompetitorReferenceCopy(file, source);
|
||||
scanUserFacingBusinessTerms(file, source);
|
||||
scanMobileDarkControls(file, source);
|
||||
scanNativeFileInputs(file, source);
|
||||
@@ -513,13 +561,15 @@ function runSelfTest() {
|
||||
file: "client/src/pages/MobileBadFixture.tsx",
|
||||
source: `
|
||||
export function MobileBadFixture() {
|
||||
return <div><table><tbody /></table><aside>备用模块</aside><button>Upload</button><div>任务ID:{task.id}</div><div>业务单号:{task.reference}</div></div>;
|
||||
return <div><table><tbody /></table><aside>备用模块</aside><button>Upload</button><div>任务ID:{task.id}</div><div>业务单号:{task.reference}</div><div>参考飞书布局照搬</div></div>;
|
||||
}
|
||||
`,
|
||||
expectedRules: [
|
||||
"mobile.no_desktop_table",
|
||||
"mobile.no_pc_shell",
|
||||
"copy.no_english_upload_labels",
|
||||
"copy.no_competitor_reference",
|
||||
"copy.no_design_meta_labels",
|
||||
"data.no_uuid_primary_display",
|
||||
"display.no_duplicate_business_identifier",
|
||||
],
|
||||
|
||||
在新工单中引用
屏蔽一个用户