OPOLICY1 对齐制度与OA启用门禁
这个提交包含在:
@@ -78,6 +78,7 @@ const qaFlowDir = path.join(rootDir, "artifacts", "qa-flow");
|
||||
const oalaunchCsv = path.join(rootDir, "issues", "2026-05-23_16-49-39-oa-final-launch-readiness-v1.csv");
|
||||
const oaopsCsv = path.join(rootDir, "issues", "2026-05-22_20-09-22-oa-real-use-stabilization-v1.csv");
|
||||
const assetCsv = path.join(rootDir, "issues", "2026-05-23_10-42-03-oa-asset-deploy-and-trial-v1.csv");
|
||||
const opolicyCsv = path.join(rootDir, "issues", "2026-05-24_01-20-52-oa-policy-system-alignment-v1.csv");
|
||||
|
||||
function readJson(file) {
|
||||
if (!file || !fs.existsSync(file)) return null;
|
||||
@@ -302,10 +303,13 @@ try {
|
||||
const oaopsRows = readCsvRows(oaopsCsv);
|
||||
const assetRows = readCsvRows(assetCsv);
|
||||
const oalaunchRows = readCsvRows(oalaunchCsv);
|
||||
const opolicyRows = readCsvRows(opolicyCsv);
|
||||
const oaopsRequired = ["OAOPS1-3", "OAOPS1-4", "OAOPS1-5", "OAOPS1-6"];
|
||||
const oalaunchRequired = ["OALAUNCH1-0", "OALAUNCH1-1", "OALAUNCH1-2", "OALAUNCH1-3", "OALAUNCH1-4", "OALAUNCH1-5", "OALAUNCH1-6", "OALAUNCH1-7", "OALAUNCH1-8"];
|
||||
const opolicyRequired = ["OPOLICY1-0", "OPOLICY1-1", "OPOLICY1-2", "OPOLICY1-3", "OPOLICY1-4", "OPOLICY1-5", "OPOLICY1-6", "OPOLICY1-7"];
|
||||
const oaopsStatuses = statuses(oaopsRows, oaopsRequired);
|
||||
const oalaunchStatuses = statuses(oalaunchRows, oalaunchRequired);
|
||||
const opolicyStatuses = statuses(opolicyRows, opolicyRequired);
|
||||
const assetDone = allPrefixDone(assetRows, "ASSET1D-");
|
||||
const latestOaops = latestSummary(["oa-real-use-daily-", "oaops1-daily-", "oaops1-daily-after-throttle-"]);
|
||||
const latestAssetTrial = latestSummary(["asset1d-public-trial-"]);
|
||||
@@ -314,6 +318,7 @@ const latestAssetImport = latestSummary(["asset-redacted-index-import-live-"]);
|
||||
const backupEvidence = resolveEvidenceRef(process.env.OALAUNCH_BACKUP_EVIDENCE || "");
|
||||
const permissionEvidence = resolveEvidenceRef(process.env.OALAUNCH_PERMISSION_EVIDENCE || "");
|
||||
const businessEvidence = resolveEvidenceRef(process.env.OALAUNCH_BUSINESS_EVIDENCE || "");
|
||||
const policyEvidence = resolveEvidenceRef(process.env.OALAUNCH_POLICY_EVIDENCE || opolicyCsv);
|
||||
const manualAccept = String(process.env.OALAUNCH_MANUAL_ACCEPT || "").trim();
|
||||
const stabilization = summarizeStabilization(["oa-real-use-daily-", "oaops1-daily-", "oaops1-daily-after-throttle-"]);
|
||||
|
||||
@@ -326,6 +331,10 @@ for (const [id, state] of Object.entries(oaopsStatuses)) {
|
||||
for (const [id, state] of Object.entries(oalaunchStatuses)) {
|
||||
if (!state.done) openGates.push({ gate: id, reason: "OALAUNCH1 本轮合同/脚本/事实源/门禁尚未全部回填 DONE", state });
|
||||
}
|
||||
for (const [id, state] of Object.entries(opolicyStatuses)) {
|
||||
if (!state.done) openGates.push({ gate: id, reason: "OPOLICY1 制度与 OA 对齐证据尚未全量收口", state });
|
||||
}
|
||||
if (!policyEvidence?.exists) openGates.push({ gate: "OPOLICY1_POLICY_EVIDENCE", reason: "缺制度边界和资料留存证据;可用 OALAUNCH_POLICY_EVIDENCE 指定脱敏证据路径" });
|
||||
if (!assetDone) openGates.push({ gate: "ASSET1D", reason: "资产台账部署与试录未全量完成" });
|
||||
if (!latestOaops) openGates.push({ gate: "OAOPS1_DAILY_REPORT", reason: "未找到 OAOPS1 每日巡检 summary.json" });
|
||||
if (latestOaops && /BLOCKED|FAIL|ERROR/i.test(latestOaops.status)) findings.push({ source: "latest_oaops1_daily", severity: "blocker", status: latestOaops.status, reportRef: latestOaops.reportRef });
|
||||
@@ -389,12 +398,15 @@ const summary = {
|
||||
backupEvidence,
|
||||
permissionEvidence,
|
||||
businessEvidence,
|
||||
policyEvidence,
|
||||
stabilization,
|
||||
},
|
||||
issueStatus: {
|
||||
oaopsRequired: oaopsStatuses,
|
||||
oalaunchRequired,
|
||||
oalaunchStatuses,
|
||||
opolicyRequired,
|
||||
opolicyStatuses,
|
||||
assetDone,
|
||||
},
|
||||
gates: {
|
||||
@@ -429,8 +441,12 @@ const summary = {
|
||||
"image_ocr",
|
||||
"complex_bpm",
|
||||
"budget_control",
|
||||
"complex_procurement",
|
||||
"e_signature",
|
||||
"full_e_archive",
|
||||
"erp_write",
|
||||
"bank_statement_import",
|
||||
"ai_rule_writes",
|
||||
"real_payment_provider",
|
||||
"wecom_hr_deep_mirror",
|
||||
"emergency_takeover",
|
||||
|
||||
在新工单中引用
屏蔽一个用户