吸收数字员工风险策略远端下发
This commit is contained in:
@@ -458,6 +458,60 @@ function checkDigitalSkillRemotePolicy() {
|
||||
console.log("[DigitalEmployeeCheck] skill remote policy hooks OK");
|
||||
}
|
||||
|
||||
function checkDigitalRiskApprovalPolicy() {
|
||||
console.log("\n[DigitalEmployeeCheck] Verify risk approval policy hooks");
|
||||
const adapterPath = path.join(packageRoot, "embedded", "sgrobot-digital", "src", "lib", "qimingclawAdapter.ts");
|
||||
const apiPath = path.join(packageRoot, "embedded", "sgrobot-digital", "src", "lib", "api.ts");
|
||||
const commandDeckPath = path.join(packageRoot, "embedded", "sgrobot-digital", "src", "pages", "digital", "CommandDeck.tsx");
|
||||
const stateServicePath = path.join(packageRoot, "src", "main", "services", "digitalEmployee", "stateService.ts");
|
||||
const syncServicePath = path.join(packageRoot, "src", "main", "services", "digitalEmployee", "syncService.ts");
|
||||
const ipcHandlersPath = path.join(packageRoot, "src", "main", "ipc", "digitalEmployeeHandlers.ts");
|
||||
const preloadPath = path.join(packageRoot, "src", "preload", "webviewPerfBridge.ts");
|
||||
const adapter = fs.readFileSync(adapterPath, "utf8");
|
||||
const api = fs.readFileSync(apiPath, "utf8");
|
||||
const commandDeck = fs.readFileSync(commandDeckPath, "utf8");
|
||||
const stateService = fs.readFileSync(stateServicePath, "utf8");
|
||||
const syncService = fs.readFileSync(syncServicePath, "utf8");
|
||||
const ipcHandlers = fs.readFileSync(ipcHandlersPath, "utf8");
|
||||
const preload = fs.readFileSync(preloadPath, "utf8");
|
||||
const requiredSnippets = [
|
||||
[stateService, "riskApprovalPolicy", "risk approval policy UI state"],
|
||||
[stateService, "normalizeRiskApprovalPolicy", "risk approval policy normalizer"],
|
||||
[stateService, "evaluateDigitalEmployeeRiskPolicy", "risk approval policy evaluator"],
|
||||
[stateService, "risk_approval_required", "risk approval-required event kind"],
|
||||
[stateService, "risk_policy_rejected", "risk policy rejected event kind"],
|
||||
[stateService, "pull_risk_approval_policy", "risk approval policy pull UI event"],
|
||||
[syncService, "pullDigitalEmployeeRiskApprovalPolicy", "remote risk approval policy pull service"],
|
||||
[syncService, "riskApprovalPolicyEndpoint", "remote risk approval policy endpoint config"],
|
||||
[syncService, "/api/digital-employee/policies/risk-approval", "remote risk approval policy default path"],
|
||||
[syncService, "risk_approval_required", "risk approval-required sync event kind"],
|
||||
[syncService, "risk_policy_rejected", "risk policy rejected sync event kind"],
|
||||
[syncService, "riskPolicyBusinessView", "risk policy sync business view"],
|
||||
[ipcHandlers, "digitalEmployee:pullRiskApprovalPolicy", "IPC risk approval policy pull handler"],
|
||||
[ipcHandlers, "digitalEmployee:evaluateRiskPolicy", "IPC risk policy evaluation handler"],
|
||||
[preload, "pullRiskApprovalPolicy", "preload risk approval policy pull bridge"],
|
||||
[preload, "evaluateRiskPolicy", "preload risk policy evaluation bridge"],
|
||||
[adapter, "pullRiskApprovalPolicy", "adapter risk approval policy pull bridge"],
|
||||
[adapter, "evaluateRiskPolicy", "adapter risk policy evaluation bridge"],
|
||||
[adapter, "/api/risk-approval/policy/pull", "adapter risk approval policy pull endpoint"],
|
||||
[adapter, "riskPolicyBlockedResponse", "adapter risk policy blocked response"],
|
||||
[adapter, "governanceCommandRiskLevel", "adapter governance risk level mapper"],
|
||||
[adapter, "managed_service.restart", "managed service restart risk action"],
|
||||
[adapter, "artifact.access", "artifact access risk action"],
|
||||
[adapter, "plan_step.dispatch_ready_steps", "ready PlanStep dispatch risk action"],
|
||||
[api, "pullRiskApprovalPolicy", "embedded risk approval policy pull API"],
|
||||
[commandDeck, "pull_risk_approval_policy", "home risk approval policy pull action"],
|
||||
[commandDeck, "风险策略", "home risk approval policy pull button"],
|
||||
];
|
||||
const missing = requiredSnippets
|
||||
.filter(([content, snippet]) => !content.includes(snippet))
|
||||
.map(([, , label]) => label);
|
||||
if (missing.length > 0) {
|
||||
throw new Error(`Missing risk approval policy hooks: ${missing.join(", ")}`);
|
||||
}
|
||||
console.log("[DigitalEmployeeCheck] risk approval policy hooks OK");
|
||||
}
|
||||
|
||||
function checkLocalDatabaseSchema() {
|
||||
console.log("\n[DigitalEmployeeCheck] Verify local SQLite digital schema");
|
||||
const dbPath = path.join(os.homedir(), ".qimingclaw", "qimingclaw.db");
|
||||
@@ -505,6 +559,7 @@ function main() {
|
||||
checkDigitalApprovalHistorySubscriptions();
|
||||
checkDigitalPlanStepGraphDispatchPolicy();
|
||||
checkDigitalSkillRemotePolicy();
|
||||
checkDigitalRiskApprovalPolicy();
|
||||
checkLocalDatabaseSchema();
|
||||
console.log("\n[DigitalEmployeeCheck] All checks passed");
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user