WARCH3/WCHECK1/WEXT1 完成受控上线后续自动化

Issue: WARCH3, WCHECK1, WEXT1
这个提交包含在:
2026-05-20 13:58:40 +08:00
父节点 512a58d40e
当前提交 56b720b8ab
共修改 28 个文件,包含 2909 行新增和 72 行删除
@@ -86,6 +86,7 @@ describe("check-wecom-approval-fixtures", () => {
live: false,
applicantEmployeeNo: "SMOKE002",
approverEmployeeNo: "SMOKE101",
targets: ["leave", "missed_punch"],
format: "json",
});
const live = parseArgs([
@@ -105,6 +106,28 @@ describe("check-wecom-approval-fixtures", () => {
});
});
it("supports WEXT1 outing and overtime dry-run targets without changing defaults", async () => {
const options = parseArgs(["--format=json", "--target=outing", "--targets=overtime"]);
expect(options.targets).toEqual(["outing", "overtime"]);
const createTemplateImpl = vi.fn();
const applyEventImpl = vi.fn();
const report = await executeApprovalFixtures(options, {
config: baseConfig(),
env: {},
actorRows: actorRows(),
createTemplateImpl,
applyEventImpl,
generatedAt: "2026-05-20T10:00:00.000Z",
});
expect(report.status).toBe("PASS_FIXTURE_DRY_RUN_READY");
expect(report.scope.targets).toEqual(["outing", "overtime"]);
expect(report.checks.fixturePayloads.map((item) => item.target)).toEqual(["outing", "overtime"]);
expect(createTemplateImpl).not.toHaveBeenCalled();
expect(applyEventImpl).not.toHaveBeenCalled();
});
it("passes dry-run without calling WeCom write APIs", async () => {
const createTemplateImpl = vi.fn();
const applyEventImpl = vi.fn();