mirror of
https://github.com/ccmjga/zhilu-admin
synced 2026-03-17 07:03:42 +08:00
更新AopLogQueryDto中的时间字段类型为OffsetDateTime,优化AopLogRepository中的时间范围查询逻辑,调整前端模拟数据生成器以支持新的时间格式,修复日期选择器样式,优化日志管理页面的用户体验。
This commit is contained in:
@@ -3,82 +3,86 @@ import { http, HttpResponse } from "msw";
|
||||
|
||||
// 生成AOP日志数据
|
||||
const generateAopLog = () => ({
|
||||
id: faker.number.int({ min: 1, max: 1000 }),
|
||||
className: faker.helpers.arrayElement([
|
||||
"com.example.controller.UserController",
|
||||
"com.example.service.UserService",
|
||||
"com.example.controller.RoleController",
|
||||
"com.example.service.RoleService",
|
||||
"com.example.controller.DepartmentController",
|
||||
"com.example.service.DepartmentService",
|
||||
]),
|
||||
methodName: faker.helpers.arrayElement([
|
||||
"findById",
|
||||
"save",
|
||||
"update",
|
||||
"delete",
|
||||
"findAll",
|
||||
"findByName",
|
||||
"pageQuery",
|
||||
]),
|
||||
methodArgs: JSON.stringify([
|
||||
{ name: "id", value: faker.number.int({ min: 1, max: 100 }) },
|
||||
{ name: "name", value: faker.person.fullName() },
|
||||
]),
|
||||
returnValue: JSON.stringify({
|
||||
id: faker.number.int({ min: 1, max: 100 }),
|
||||
name: faker.person.fullName(),
|
||||
success: true,
|
||||
}),
|
||||
executionTime: faker.number.int({ min: 10, max: 5000 }),
|
||||
success: faker.datatype.boolean(0.9), // 90%成功率
|
||||
errorMessage: faker.helpers.maybe(() => faker.lorem.sentence(), { probability: 0.1 }),
|
||||
userId: faker.number.int({ min: 1, max: 100 }),
|
||||
username: faker.internet.userName(),
|
||||
ipAddress: faker.internet.ip(),
|
||||
userAgent: faker.internet.userAgent(),
|
||||
curl: `curl -X GET "${faker.internet.url()}" -H "Authorization: Bearer ${faker.string.alphanumeric(32)}"`,
|
||||
createTime: faker.date.recent({ days: 30 }).toISOString(),
|
||||
id: faker.number.int({ min: 1, max: 1000 }),
|
||||
className: faker.helpers.arrayElement([
|
||||
"com.example.controller.UserController",
|
||||
"com.example.service.UserService",
|
||||
"com.example.controller.RoleController",
|
||||
"com.example.service.RoleService",
|
||||
"com.example.controller.DepartmentController",
|
||||
"com.example.service.DepartmentService",
|
||||
]),
|
||||
methodName: faker.helpers.arrayElement([
|
||||
"findById",
|
||||
"save",
|
||||
"update",
|
||||
"delete",
|
||||
"findAll",
|
||||
"findByName",
|
||||
"pageQuery",
|
||||
]),
|
||||
methodArgs: JSON.stringify([
|
||||
{ name: "id", value: faker.number.int({ min: 1, max: 100 }) },
|
||||
{ name: "name", value: faker.person.fullName() },
|
||||
]),
|
||||
returnValue: JSON.stringify({
|
||||
id: faker.number.int({ min: 1, max: 100 }),
|
||||
name: faker.person.fullName(),
|
||||
success: true,
|
||||
}),
|
||||
executionTime: faker.number.int({ min: 10, max: 5000 }),
|
||||
success: faker.datatype.boolean(0.9), // 90%成功率
|
||||
errorMessage: faker.helpers.maybe(() => faker.lorem.sentence(), {
|
||||
probability: 0.1,
|
||||
}),
|
||||
userId: faker.number.int({ min: 1, max: 100 }),
|
||||
username: faker.internet.userName(),
|
||||
ipAddress: faker.internet.ip(),
|
||||
userAgent: faker.internet.userAgent(),
|
||||
curl: `curl -X GET "${faker.internet.url()}" -H "Authorization: Bearer ${faker.string.alphanumeric(32)}"`,
|
||||
createTime: faker.date.recent({ days: 30 }).toISOString(),
|
||||
});
|
||||
|
||||
export default [
|
||||
// 分页查询AOP日志
|
||||
http.get("/aop-log/page-query", () => {
|
||||
const mockData = {
|
||||
data: faker.helpers.multiple(generateAopLog, { count: 10 }),
|
||||
total: 100,
|
||||
};
|
||||
return HttpResponse.json(mockData);
|
||||
}),
|
||||
// 分页查询AOP日志
|
||||
http.get("/aop-log/page-query", () => {
|
||||
const mockData = {
|
||||
data: faker.helpers.multiple(generateAopLog, { count: 10 }),
|
||||
total: 100,
|
||||
};
|
||||
return HttpResponse.json(mockData);
|
||||
}),
|
||||
|
||||
// 查询单条日志详情
|
||||
http.get("/aop-log/:id", ({ params }) => {
|
||||
const id = params.id;
|
||||
return HttpResponse.json({
|
||||
...generateAopLog(),
|
||||
id: Number(id),
|
||||
});
|
||||
}),
|
||||
// 查询单条日志详情
|
||||
http.get("/aop-log/:id", ({ params }) => {
|
||||
const id = params.id;
|
||||
return HttpResponse.json({
|
||||
...generateAopLog(),
|
||||
id: Number(id),
|
||||
});
|
||||
}),
|
||||
|
||||
// 删除单条日志
|
||||
http.delete("/aop-log/:id", ({ params }) => {
|
||||
console.log(`Captured a "DELETE /aop-log/${params.id}" request`);
|
||||
return HttpResponse.json({ success: true });
|
||||
}),
|
||||
// 删除单条日志
|
||||
http.delete("/aop-log/:id", ({ params }) => {
|
||||
console.log(`Captured a "DELETE /aop-log/${params.id}" request`);
|
||||
return HttpResponse.json({ success: true });
|
||||
}),
|
||||
|
||||
// 批量删除日志
|
||||
http.delete("/aop-log/batch", async ({ request }) => {
|
||||
const ids = await request.json();
|
||||
console.log(`Captured a "DELETE /aop-log/batch" request with ids: ${ids}`);
|
||||
return HttpResponse.json(ids.length);
|
||||
}),
|
||||
// 批量删除日志
|
||||
http.delete("/aop-log/batch", async ({ request }) => {
|
||||
const ids = await request.json();
|
||||
console.log(`Captured a "DELETE /aop-log/batch" request with ids: ${ids}`);
|
||||
return HttpResponse.json(ids.length);
|
||||
}),
|
||||
|
||||
// 删除指定时间前的日志
|
||||
http.delete("/aop-log/before", ({ params }) => {
|
||||
const { beforeTime } = Object.fromEntries(
|
||||
new URL(params.request.url).searchParams
|
||||
);
|
||||
console.log(`Captured a "DELETE /aop-log/before" request with time: ${beforeTime}`);
|
||||
return HttpResponse.json(faker.number.int({ min: 5, max: 50 }));
|
||||
}),
|
||||
];
|
||||
// 删除指定时间前的日志
|
||||
http.delete("/aop-log/before", ({ params }) => {
|
||||
const { beforeTime } = Object.fromEntries(
|
||||
new URL(params.request.url).searchParams,
|
||||
);
|
||||
console.log(
|
||||
`Captured a "DELETE /aop-log/before" request with time: ${beforeTime}`,
|
||||
);
|
||||
return HttpResponse.json(faker.number.int({ min: 5, max: 50 }));
|
||||
}),
|
||||
];
|
||||
|
||||
@@ -3,90 +3,95 @@ import { http, HttpResponse } from "msw";
|
||||
|
||||
// 生成模拟的知识库数据
|
||||
const generateLibrary = () => ({
|
||||
id: faker.number.int({ min: 1, max: 100 }),
|
||||
name: faker.lorem.words(2),
|
||||
description: faker.lorem.sentence(),
|
||||
createTime: faker.date.recent().toISOString()
|
||||
id: faker.number.int({ min: 1, max: 100 }),
|
||||
name: faker.lorem.words(2),
|
||||
description: faker.lorem.sentence(),
|
||||
createTime: faker.date.recent().toISOString(),
|
||||
});
|
||||
|
||||
// 生成模拟的文档数据
|
||||
const generateDoc = (libId: number) => ({
|
||||
id: faker.number.int({ min: 1, max: 1000 }),
|
||||
libId,
|
||||
name: faker.system.fileName(),
|
||||
identify: faker.string.uuid(),
|
||||
path: faker.system.filePath(),
|
||||
meta: {},
|
||||
enable: faker.datatype.boolean(),
|
||||
status: faker.helpers.arrayElement(["SUCCESS", "INDEXING"]),
|
||||
createTime: faker.date.recent().toISOString(),
|
||||
updateTime: faker.date.recent().toISOString()
|
||||
id: faker.number.int({ min: 1, max: 1000 }),
|
||||
libId,
|
||||
name: faker.system.fileName(),
|
||||
identify: faker.string.uuid(),
|
||||
path: faker.system.filePath(),
|
||||
meta: {},
|
||||
enable: faker.datatype.boolean(),
|
||||
status: faker.helpers.arrayElement(["SUCCESS", "INDEXING"]),
|
||||
createTime: faker.date.recent().toISOString(),
|
||||
updateTime: faker.date.recent().toISOString(),
|
||||
});
|
||||
|
||||
// 生成模拟的文档段落数据
|
||||
const generateSegment = (docId: number) => ({
|
||||
id: faker.number.int({ min: 1, max: 10000 }),
|
||||
docId,
|
||||
embeddingId: faker.string.uuid(),
|
||||
content: faker.lorem.paragraphs(),
|
||||
tokenUsage: faker.number.int({ min: 10, max: 1000 })
|
||||
id: faker.number.int({ min: 1, max: 10000 }),
|
||||
docId,
|
||||
embeddingId: faker.string.uuid(),
|
||||
content: faker.lorem.paragraphs(),
|
||||
tokenUsage: faker.number.int({ min: 10, max: 1000 }),
|
||||
});
|
||||
|
||||
export default [
|
||||
// 获取知识库列表
|
||||
http.get("/knowledge/libraries", () => {
|
||||
const libraries = faker.helpers.multiple(generateLibrary, { count: 5 });
|
||||
return HttpResponse.json(libraries);
|
||||
}),
|
||||
// 获取知识库列表
|
||||
http.get("/knowledge/libraries", () => {
|
||||
const libraries = faker.helpers.multiple(generateLibrary, { count: 5 });
|
||||
return HttpResponse.json(libraries);
|
||||
}),
|
||||
|
||||
// 获取文档列表
|
||||
http.get("/knowledge/docs", ({ request }) => {
|
||||
const url = new URL(request.url);
|
||||
const libraryId = Number(url.searchParams.get("libraryId"));
|
||||
|
||||
if (Number.isNaN(libraryId)) {
|
||||
return new HttpResponse(null, { status: 400 });
|
||||
}
|
||||
|
||||
const docs = faker.helpers.multiple(() => generateDoc(libraryId), { count: 8 });
|
||||
return HttpResponse.json(docs);
|
||||
}),
|
||||
// 获取文档列表
|
||||
http.get("/knowledge/docs", ({ request }) => {
|
||||
const url = new URL(request.url);
|
||||
const libraryId = Number(url.searchParams.get("libraryId"));
|
||||
|
||||
// 获取文档段落
|
||||
http.get("/knowledge/segments", ({ request }) => {
|
||||
const url = new URL(request.url);
|
||||
const libraryDocId = Number(url.searchParams.get("libraryDocId"));
|
||||
|
||||
if (Number.isNaN(libraryDocId)) {
|
||||
return new HttpResponse(null, { status: 400 });
|
||||
}
|
||||
|
||||
const segments = faker.helpers.multiple(() => generateSegment(libraryDocId), { count: 12 });
|
||||
return HttpResponse.json(segments);
|
||||
}),
|
||||
if (Number.isNaN(libraryId)) {
|
||||
return new HttpResponse(null, { status: 400 });
|
||||
}
|
||||
|
||||
// 创建/更新知识库
|
||||
http.post("/knowledge/library", async () => {
|
||||
return HttpResponse.json({ success: true });
|
||||
}),
|
||||
const docs = faker.helpers.multiple(() => generateDoc(libraryId), {
|
||||
count: 8,
|
||||
});
|
||||
return HttpResponse.json(docs);
|
||||
}),
|
||||
|
||||
// 删除知识库
|
||||
http.delete("/knowledge/library", () => {
|
||||
return HttpResponse.json({ success: true });
|
||||
}),
|
||||
// 获取文档段落
|
||||
http.get("/knowledge/segments", ({ request }) => {
|
||||
const url = new URL(request.url);
|
||||
const libraryDocId = Number(url.searchParams.get("libraryDocId"));
|
||||
|
||||
// 更新文档
|
||||
http.put("/knowledge/doc", async () => {
|
||||
return HttpResponse.json({ success: true });
|
||||
}),
|
||||
if (Number.isNaN(libraryDocId)) {
|
||||
return new HttpResponse(null, { status: 400 });
|
||||
}
|
||||
|
||||
// 删除文档
|
||||
http.delete("/knowledge/doc", () => {
|
||||
return HttpResponse.json({ success: true });
|
||||
}),
|
||||
const segments = faker.helpers.multiple(
|
||||
() => generateSegment(libraryDocId),
|
||||
{ count: 12 },
|
||||
);
|
||||
return HttpResponse.json(segments);
|
||||
}),
|
||||
|
||||
// 上传文档
|
||||
http.post("/knowledge/doc/upload", async () => {
|
||||
return HttpResponse.text("upload-success");
|
||||
}),
|
||||
];
|
||||
// 创建/更新知识库
|
||||
http.post("/knowledge/library", async () => {
|
||||
return HttpResponse.json({ success: true });
|
||||
}),
|
||||
|
||||
// 删除知识库
|
||||
http.delete("/knowledge/library", () => {
|
||||
return HttpResponse.json({ success: true });
|
||||
}),
|
||||
|
||||
// 更新文档
|
||||
http.put("/knowledge/doc", async () => {
|
||||
return HttpResponse.json({ success: true });
|
||||
}),
|
||||
|
||||
// 删除文档
|
||||
http.delete("/knowledge/doc", () => {
|
||||
return HttpResponse.json({ success: true });
|
||||
}),
|
||||
|
||||
// 上传文档
|
||||
http.post("/knowledge/doc/upload", async () => {
|
||||
return HttpResponse.text("upload-success");
|
||||
}),
|
||||
];
|
||||
|
||||
5200
frontend/src/api/types/schema.d.ts
vendored
5200
frontend/src/api/types/schema.d.ts
vendored
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user