吸收数字员工通知订阅策略
This commit is contained in:
@@ -195,6 +195,39 @@ function checkDigitalDiagnosticAuditProjection() {
|
||||
console.log("[DigitalEmployeeCheck] diagnostic/audit projection hooks OK");
|
||||
}
|
||||
|
||||
function checkDigitalNotificationPreferences() {
|
||||
console.log("\n[DigitalEmployeeCheck] Verify notification preference 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 typesPath = path.join(packageRoot, "embedded", "sgrobot-digital", "src", "types", "api.ts");
|
||||
const shellPath = path.join(packageRoot, "embedded", "sgrobot-digital", "src", "pages", "digital", "DigitalEmployeeShell.tsx");
|
||||
const stateServicePath = path.join(packageRoot, "src", "main", "services", "digitalEmployee", "stateService.ts");
|
||||
const adapter = fs.readFileSync(adapterPath, "utf8");
|
||||
const api = fs.readFileSync(apiPath, "utf8");
|
||||
const types = fs.readFileSync(typesPath, "utf8");
|
||||
const shell = fs.readFileSync(shellPath, "utf8");
|
||||
const stateService = fs.readFileSync(stateServicePath, "utf8");
|
||||
const requiredSnippets = [
|
||||
[adapter, "/api/notifications/preferences", "adapter notification preference endpoint"],
|
||||
[adapter, "handleNotificationPreferencesPatch", "adapter notification preference patch handler"],
|
||||
[adapter, "notificationMatchesPreferences", "adapter notification preference filter"],
|
||||
[adapter, "update_notification_preferences", "adapter notification preference save action"],
|
||||
[api, "getNotificationPreferences", "notification preferences API getter"],
|
||||
[api, "patchNotificationPreferences", "notification preferences API patcher"],
|
||||
[types, "NotificationPreferences", "notification preferences type"],
|
||||
[shell, "de-notification-preferences", "notification preferences UI"],
|
||||
[shell, "NOTIFICATION_KIND_OPTIONS", "notification kind mute UI options"],
|
||||
[stateService, "update_notification_preferences", "notification preference runtime event"],
|
||||
];
|
||||
const missing = requiredSnippets
|
||||
.filter(([content, snippet]) => !content.includes(snippet))
|
||||
.map(([, , label]) => label);
|
||||
if (missing.length > 0) {
|
||||
throw new Error(`Missing notification preference hooks: ${missing.join(", ")}`);
|
||||
}
|
||||
console.log("[DigitalEmployeeCheck] notification preference hooks OK");
|
||||
}
|
||||
|
||||
function checkLocalDatabaseSchema() {
|
||||
console.log("\n[DigitalEmployeeCheck] Verify local SQLite digital schema");
|
||||
const dbPath = path.join(os.homedir(), ".qimingclaw", "qimingclaw.db");
|
||||
@@ -238,6 +271,7 @@ function main() {
|
||||
runStep("Build embedded digital employee", "npm", ["run", "build:sgrobot-digital"]);
|
||||
checkSgrobotDigitalAssets();
|
||||
checkDigitalDiagnosticAuditProjection();
|
||||
checkDigitalNotificationPreferences();
|
||||
checkLocalDatabaseSchema();
|
||||
console.log("\n[DigitalEmployeeCheck] All checks passed");
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user