feat: 基础设施加固 — 修复构建、数据保留、错误边界、bundle 拆分
- 修复 build script 引用已删除的 registerCheckers,恢复生产构建 - 生产入口添加 SIGINT/SIGTERM 优雅关闭(与 dev.ts 一致) - 新增 runtime.retention 配置(默认 7d),ProbeStore.prune() 定时清理过期数据 - parseDuration 扩展支持 h/d 单位 - 新增前端 ErrorBoundary 组件,防止渲染错误白屏 - Vite codeSplitting.groups 拆分 vendor chunks(业务代码 1180KB → 47KB) - 同步 delta specs 到主规范
This commit is contained in:
@@ -220,4 +220,55 @@ describe("ProbeEngine", () => {
|
||||
void httpServer.stop();
|
||||
}
|
||||
});
|
||||
|
||||
test("retentionMs > 0 时 start 调用 prune", () => {
|
||||
let pruneCalled = false;
|
||||
const mockStore = {
|
||||
...createMockStore(["test"]),
|
||||
prune() {
|
||||
pruneCalled = true;
|
||||
return 0;
|
||||
},
|
||||
} as unknown as ProbeStore;
|
||||
|
||||
const targets: ResolvedTargetBase[] = [makeCommandTarget("test")];
|
||||
const engine = new ProbeEngine(mockStore, targets, 20, 86400000);
|
||||
engine.start();
|
||||
expect(pruneCalled).toBe(true);
|
||||
engine.stop();
|
||||
});
|
||||
|
||||
test("retentionMs = 0 时不调用 prune", () => {
|
||||
let pruneCalled = false;
|
||||
const mockStore = {
|
||||
...createMockStore(["test"]),
|
||||
prune() {
|
||||
pruneCalled = true;
|
||||
return 0;
|
||||
},
|
||||
} as unknown as ProbeStore;
|
||||
|
||||
const targets: ResolvedTargetBase[] = [makeCommandTarget("test")];
|
||||
const engine = new ProbeEngine(mockStore, targets, 20, 0);
|
||||
engine.start();
|
||||
expect(pruneCalled).toBe(false);
|
||||
engine.stop();
|
||||
});
|
||||
|
||||
test("retentionMs 未传时不调用 prune", () => {
|
||||
let pruneCalled = false;
|
||||
const mockStore = {
|
||||
...createMockStore(["test"]),
|
||||
prune() {
|
||||
pruneCalled = true;
|
||||
return 0;
|
||||
},
|
||||
} as unknown as ProbeStore;
|
||||
|
||||
const targets: ResolvedTargetBase[] = [makeCommandTarget("test")];
|
||||
const engine = new ProbeEngine(mockStore, targets);
|
||||
engine.start();
|
||||
expect(pruneCalled).toBe(false);
|
||||
engine.stop();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user