Initial commit: NetMesh smart ops platform with 3D topology, inspection reports, RCA and AI ops assistant
Some checks failed
AI automation / Route event (push) Has been cancelled
AI automation / Hand reopened issue to maintainers (push) Has been cancelled
AI automation / Clean source issue state (push) Has been cancelled
AI automation / Reconcile handoffs (push) Has been cancelled
AI automation / Classify issue (push) Has been cancelled
AI automation / Claude Code smoke (push) Has been cancelled
AI automation / Review issue follow-up (push) Has been cancelled
AI automation / Publish issue follow-up (push) Has been cancelled
AI automation / Implement with Claude Code (push) Has been cancelled
AI automation / Publish implement PR (push) Has been cancelled
AI automation / Continue queued issue comments (push) Has been cancelled
AI automation / Codex review loop (push) Has been cancelled
AI automation / Publish Codex fix (push) Has been cancelled
AI automation / Clear Codex dispatch marker (push) Has been cancelled
AI automation / Own PR re-request Codex (push) Has been cancelled
AI automation / External PR re-request Codex (push) Has been cancelled
AI automation / Poll Codex reaction / retry (push) Has been cancelled

This commit is contained in:
2026-10-15 13:53:04 +08:00
commit 2f9f8da48e
3299 changed files with 926841 additions and 0 deletions

View File

@@ -0,0 +1,89 @@
"use strict";
/**
* 巡检模块主进程存储适配器
*
* 使用 userData 目录下的 JSON 文件存储巡检相关数据(设备配置、告警规则、巡检结果等)。
* 提供与 localStorage 类似的 key-value 接口,方便注入到 store 模块。
*/
const fs = require("node:fs");
const path = require("node:path");
const STORAGE_FILENAME = "inspection-data.json";
let _storageCache = null;
let _filePath = null;
let _dirty = false;
let _saveTimer = null;
function init(userDataDir) {
_filePath = path.join(userDataDir, STORAGE_FILENAME);
_loadFromDisk();
}
function _loadFromDisk() {
if (!_filePath) {
_storageCache = {};
return;
}
try {
if (fs.existsSync(_filePath)) {
const raw = fs.readFileSync(_filePath, "utf-8");
_storageCache = JSON.parse(raw);
} else {
_storageCache = {};
}
} catch (e) {
console.error("[Inspection Storage] 加载失败:", e?.message);
_storageCache = {};
}
}
function _scheduleSave() {
if (_saveTimer) return;
_saveTimer = setTimeout(() => {
_saveTimer = null;
_flushToDisk();
}, 200);
}
function _flushToDisk() {
if (!_filePath || !_dirty) return;
try {
const dir = path.dirname(_filePath);
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir, { recursive: true });
}
fs.writeFileSync(_filePath, JSON.stringify(_storageCache, null, 2), "utf-8");
_dirty = false;
} catch (e) {
console.error("[Inspection Storage] 保存失败:", e?.message);
}
}
function readStorage(key) {
if (!_storageCache) _loadFromDisk();
return _storageCache[key] ?? null;
}
function writeStorage(key, value) {
if (!_storageCache) _loadFromDisk();
if (value === null || value === undefined) {
delete _storageCache[key];
} else {
_storageCache[key] = value;
}
_dirty = true;
_scheduleSave();
}
function flushSync() {
_flushToDisk();
}
module.exports = {
init,
readStorage,
writeStorage,
flushSync,
};