feat: 全栈 Logger 依赖注入 — DB/Route/AI 层传参 + 前端 Logger + 测试更新 + 归档 add-frontend-logger
This commit is contained in:
@@ -11,6 +11,7 @@ import { createNoopLogger } from "../../../src/server/logger";
|
||||
import { createMigratedMemoryTestDatabase } from "../../helpers";
|
||||
|
||||
const MODE: RuntimeMode = "test";
|
||||
const LOG = createNoopLogger();
|
||||
|
||||
void mock.module("ai", () => ({
|
||||
createAgentUIStreamResponse: (opts: {
|
||||
@@ -49,65 +50,73 @@ void mock.module("ai", () => ({
|
||||
|
||||
async function createConversationViaHandler(req: Request, db: Database): Promise<Response> {
|
||||
const { handleCreateConversation: h } = await import("../../../src/server/routes/chat/create");
|
||||
return h(req, db, MODE);
|
||||
return h(req, db, MODE, LOG);
|
||||
}
|
||||
|
||||
async function deleteConversationViaHandler(req: Request, db: Database): Promise<Response> {
|
||||
const { handleDeleteConversation: h } = await import("../../../src/server/routes/chat/delete");
|
||||
return h(req, db, MODE);
|
||||
return h(req, db, MODE, LOG);
|
||||
}
|
||||
|
||||
async function getConversationViaHandler(req: Request, db: Database): Promise<Response> {
|
||||
const { handleGetConversation: h } = await import("../../../src/server/routes/chat/get");
|
||||
return h(req, db, MODE);
|
||||
return h(req, db, MODE, LOG);
|
||||
}
|
||||
|
||||
async function listConversationsViaHandler(req: Request, db: Database): Promise<Response> {
|
||||
const { handleListConversations: h } = await import("../../../src/server/routes/chat/list");
|
||||
return h(req, db, MODE);
|
||||
return h(req, db, MODE, LOG);
|
||||
}
|
||||
|
||||
async function listMessagesViaHandler(req: Request, db: Database): Promise<Response> {
|
||||
const { handleListMessages: h } = await import("../../../src/server/routes/chat/messages");
|
||||
return h(req, db, MODE);
|
||||
return h(req, db, MODE, LOG);
|
||||
}
|
||||
|
||||
async function patchConversationViaHandler(req: Request, db: Database): Promise<Response> {
|
||||
const { handleUpdateConversation: h } = await import("../../../src/server/routes/chat/update");
|
||||
return h(req, db, MODE);
|
||||
return h(req, db, MODE, LOG);
|
||||
}
|
||||
|
||||
function seedModel(db: Database, providerId: string, modelName = "GPT-4o", modelId = "gpt-4o"): string {
|
||||
const result = createModel(db, {
|
||||
capabilities: ["text"],
|
||||
modelId,
|
||||
name: modelName,
|
||||
providerId,
|
||||
});
|
||||
const result = createModel(
|
||||
db,
|
||||
{
|
||||
capabilities: ["text"],
|
||||
modelId,
|
||||
name: modelName,
|
||||
providerId,
|
||||
},
|
||||
LOG,
|
||||
);
|
||||
if ("error" in result) throw new Error(result.error);
|
||||
return result.model.id;
|
||||
}
|
||||
|
||||
function seedProject(db: Database, name = "测试项目"): string {
|
||||
const result = createProject(db, { description: "测试", name });
|
||||
const result = createProject(db, { description: "测试", name }, LOG);
|
||||
if ("error" in result) throw new Error(result.error);
|
||||
return result.project.id;
|
||||
}
|
||||
|
||||
function seedProvider(db: Database, name = "测试供应商"): string {
|
||||
const result = createProvider(db, {
|
||||
apiKey: "sk-test",
|
||||
baseUrl: "https://api.test.com/v1",
|
||||
name,
|
||||
type: "openai",
|
||||
});
|
||||
const result = createProvider(
|
||||
db,
|
||||
{
|
||||
apiKey: "sk-test",
|
||||
baseUrl: "https://api.test.com/v1",
|
||||
name,
|
||||
type: "openai",
|
||||
},
|
||||
LOG,
|
||||
);
|
||||
if ("error" in result) throw new Error(result.error);
|
||||
return result.provider.id;
|
||||
}
|
||||
|
||||
async function sendChatViaHandler(req: Request, db: Database): Promise<Response> {
|
||||
const { handleSendChat: h } = await import("../../../src/server/routes/chat/send");
|
||||
return h(req, db, MODE, createNoopLogger());
|
||||
return h(req, db, MODE, LOG);
|
||||
}
|
||||
|
||||
describe("聊天 API 路由", () => {
|
||||
|
||||
Reference in New Issue
Block a user