refactor(web): 前端目录重构 — consoles/pages → layouts/features + shared

- consoles/admin/ → layouts/admin-layout/
- consoles/workbench/ → layouts/workbench-layout/ + features/chat/
- pages/ → features/ (dashboard, models, projects, not-found)
- components/ → shared/components/
- hooks/ → shared/hooks/
- utils/ → shared/utils/
- 更新所有 import 路径 (src/web/ + tests/web/)
- 更新开发文档 (README.md, frontend.md, architecture.md)
This commit is contained in:
2026-06-02 23:17:28 +08:00
parent 1f05f259d0
commit b1dec691e9
76 changed files with 249 additions and 111 deletions

View File

@@ -8,20 +8,20 @@ import {
useDeleteModel,
useTestModelConnection,
useUpdateModel,
} from "../../../src/web/hooks/use-models";
} from "../../../src/web/shared/hooks/use-models";
import {
useArchiveProject,
useCreateProject,
useDeleteProject,
useRestoreProject,
useUpdateProject,
} from "../../../src/web/hooks/use-projects";
} from "../../../src/web/shared/hooks/use-projects";
import {
useCreateProvider,
useDeleteProvider,
useTestProviderConfig,
useUpdateProvider,
} from "../../../src/web/hooks/use-providers";
} from "../../../src/web/shared/hooks/use-providers";
import { installFetchMock, jsonResponse } from "../test-utils";
const MODEL = {

View File

@@ -3,7 +3,7 @@ import type { UIMessage } from "ai";
import { act, renderHook } from "@testing-library/react";
import { describe, expect, mock, test } from "bun:test";
import { useChatScroll } from "../../../src/web/consoles/workbench/components/chat/use-chat-scroll";
import { useChatScroll } from "../../../src/web/features/chat/use-chat-scroll";
interface HookProps {
loadingHistory: boolean;

View File

@@ -1,9 +1,9 @@
import { describe, expect, mock, test } from "bun:test";
import { act, createElement, useState } from "react";
import type { Logger } from "../../../src/web/utils/logger";
import type { Logger } from "../../../src/web/shared/utils/logger";
import { useLogger } from "../../../src/web/hooks/use-logger";
import { useLogger } from "../../../src/web/shared/hooks/use-logger";
import { renderWithProviders } from "../test-utils";
function BindingsHookTester({

View File

@@ -7,7 +7,7 @@ import {
fetchModelList,
testModelConnection,
updateModel,
} from "../../../src/web/hooks/use-models";
} from "../../../src/web/shared/hooks/use-models";
import { installFetchMock, jsonResponse } from "../test-utils";
const MODEL = {

View File

@@ -8,7 +8,7 @@ import {
fetchProjectList,
restoreProject,
updateProject,
} from "../../../src/web/hooks/use-projects";
} from "../../../src/web/shared/hooks/use-projects";
import { installFetchMock, jsonResponse } from "../test-utils";
const PROJECT = {

View File

@@ -8,7 +8,7 @@ import {
fetchProviderOptions,
testProviderConfig,
updateProvider,
} from "../../../src/web/hooks/use-providers";
} from "../../../src/web/shared/hooks/use-providers";
import { installFetchMock, jsonResponse } from "../test-utils";
const PROVIDER = {

View File

@@ -5,7 +5,7 @@ import {
readSidebarCollapsed,
SIDEBAR_COLLAPSED_STORAGE_KEY,
writeSidebarCollapsed,
} from "../../../src/web/hooks/use-sidebar-collapsed";
} from "../../../src/web/shared/hooks/use-sidebar-collapsed";
function createStorage(initial?: string): Storage {
const values = new Map<string, string>();

View File

@@ -8,7 +8,7 @@ import {
THEME_MEDIA_QUERY,
THEME_PREFERENCE_STORAGE_KEY,
writeThemePreference,
} from "../../../src/web/hooks/use-theme-preference";
} from "../../../src/web/shared/hooks/use-theme-preference";
function createStorage(initial?: string): Storage {
const values = new Map<string, string>();