feat: 为审批记录增加翻页 (#115)

This commit is contained in:
RuoJi6 authored and GitHub committed 2026-09-15 00:52:48 +08:00
1 parent 5db71f7c53
commit 71fa919599
5 files changed
+179 -14

No files matched your search

+26 -4
View File
@@ -2056,7 +2056,7 @@ function route(m: string, path: string, seg: string[], q: URLSearchParams, b: Re
if (seg[0] === "intercept" && seg[1] === "pending" && seg[3] === "decide") {
const id = Number(seg[2]);
const row = mockInterceptHistory.find((r) => r.id === id) ?? mockInterceptPending.find((r) => r.id === id);
if (!row || row.status !== "pending") throw new Error("审批已处理或不存在,请刷新记录");
if (row?.status !== "pending") throw new Error("审批已处理或不存在,请刷新记录");
if (b.decision !== "allowed" && b.decision !== "denied") throw new Error("无效审批动作");
row.status = b.decision;
row.decided_at = new Date().toISOString();
@@ -2076,9 +2076,31 @@ function route(m: string, path: string, seg: string[], q: URLSearchParams, b: Re
}
if (seg[0] === "intercept" && seg[1] === "pending" && seg.length === 3 && m === "GET")
return mockInterceptPending.find((p) => p.id === Number(seg[2])) ?? null;
if (path === "/intercept/history") return { items: mockInterceptHistory };
if (seg[0] === "intercept" && seg[1] === "task")
return { items: mockInterceptHistory.filter((r) => r.task_id === seg[2]) };
if (path === "/intercept/history") {
if (!q.has("page") && !q.has("size")) return { items: mockInterceptHistory, total: mockInterceptHistory.length };
const page = Math.max(1, Number(q.get("page")) || 1);
const size = Math.min(100, Math.max(1, Number(q.get("size")) || 20));
const offset = (page - 1) * size;
return {
items: mockInterceptHistory.slice(offset, offset + size),
total: mockInterceptHistory.length,
page,
page_size: size,
};
}
if (seg[0] === "intercept" && seg[1] === "task") {
const filtered = mockInterceptHistory.filter((r) => r.task_id === seg[2]);
if (!q.has("page") && !q.has("size")) return { items: filtered, total: filtered.length };
const page = Math.max(1, Number(q.get("page")) || 1);
const size = Math.min(100, Math.max(1, Number(q.get("size")) || 20));
const offset = (page - 1) * size;
return {
items: filtered.slice(offset, offset + size),
total: filtered.length,
page,
page_size: size,
};
}
if (path === "/intercept/tool-config") return { enabled_tools: ["bash"] };
if (path === "/intercept/judge" && m === "GET")
return {