发布候选:整合桌面端界面与发布稳定化里程碑
Client Quality Gates / Shared client and Web (push) Has been cancelled
Client Quality Gates / macOS Desktop (push) Has been cancelled
Storage Persistence Guard / storage-persistence-audit (push) Has been cancelled
Client Quality Gates / Shared client and Web (pull_request) Has been cancelled
Client Quality Gates / macOS Desktop (pull_request) Has been cancelled
Storage Persistence Guard / storage-persistence-audit (pull_request) Has been cancelled

This commit is contained in:
Cheng Zhou
2026-07-01 10:53:24 +08:00
parent b283cf1e5c
commit b491b6a146
132 changed files with 17337 additions and 2375 deletions
+55 -22
View File
@@ -32,38 +32,71 @@ const missing = [
];
const pageContractChecks = [
"src/views/ia/ProjectMilestones.vue",
"src/views/ia/SubjectManagement.vue",
"src/views/ia/RiskIssueSae.vue",
"src/views/ia/RiskIssuePd.vue",
"src/views/ia/RiskIssueMonitoringVisits.vue"
{
file: "src/views/ia/ProjectMilestones.vue",
groups: [
["ctms-page-shell", "page"],
["unified-action-bar", "table-card-toolbar"],
["ctms-table-card", "table-card"]
]
},
{
file: "src/views/ia/SubjectManagement.vue",
groups: [
["ctms-page-shell", "page"],
["unified-action-bar", "table-card-toolbar"],
["ctms-table-card", "table-card"],
["subject-table"]
]
},
{
file: "src/views/ia/RiskIssueSae.vue",
groups: [
["ctms-page-shell", "page"],
["unified-action-bar", "table-card-toolbar"],
["ctms-table-card", "table-card"],
["risk-table"]
]
},
{
file: "src/views/ia/RiskIssuePd.vue",
groups: [
["ctms-page-shell", "page"],
["unified-action-bar", "table-card-toolbar"],
["ctms-table-card", "table-card"],
["risk-table"]
]
},
{
file: "src/views/ia/RiskIssueMonitoringVisits.vue",
groups: [
["ctms-page-shell", "page"],
["unified-action-bar", "monitoring-toolbar", "template-toolbar", "toolbar"],
["ctms-table-card", "table-card", "monitoring-table", "issue-table-panel"],
["issue-table"]
]
}
];
const requiredPageClasses = [
"ctms-page-shell",
"unified-action-bar",
"ctms-table-card"
];
for (const file of pageContractChecks) {
for (const { file, groups } of pageContractChecks) {
const content = readFileSync(file, "utf8");
for (const className of requiredPageClasses) {
if (!content.includes(className)) {
missing.push(`${file}:${className}`);
for (const group of groups) {
if (!group.some((className) => content.includes(className))) {
missing.push(`${file}:${group.join("|")}`);
}
}
}
const overview = readFileSync("src/views/ia/ProjectOverview.vue", "utf8");
const requiredOverviewClasses = [
"ctms-page-shell",
"kpi",
"unified-section"
const requiredOverviewGroups = [
["ctms-page-shell", "page"],
["kpi", "overview-card"],
["unified-section", "overview-container"]
];
for (const className of requiredOverviewClasses) {
if (!overview.includes(className)) {
missing.push(`src/views/ia/ProjectOverview.vue:${className}`);
for (const group of requiredOverviewGroups) {
if (!group.some((className) => overview.includes(className))) {
missing.push(`src/views/ia/ProjectOverview.vue:${group.join("|")}`);
}
}