refactor: Home 模块 VCHSM 三栏重构 + Services 迁回 + 右键菜单体系 + 公告修复

## Home 模块三栏 VCHSM 重组
- 按渲染归属重新分配文件:ModelSelector/TaskHistory → left/,ModelInputForm/widgets → center/,OutputPreview → right/
- BannerCarousel 移至 shared/views/(全局组件)
- controls/ → widgets/ 重命名,消除与 controllers/ 的命名歧义
- 新增 barrel 文件(left/center/right/shared 各级 index.ts)

## Services 层迁回 src/services/modules/
- 全部 API 类型定义与请求函数从 modules/*/controllers/ 迁回 services/modules/{domain}/
- 恢复原始文件名(model-api.ts → models.ts,task-api.ts → task.ts 等)
- 新增 domain 子文件夹(home/auth/announcement/account)
- 更新全局 ~70 处导入路径

## TaskHistory 提取 Controller + Hook 层
- 新建 left/controllers/task-table-config.ts(常量 + 纯工具函数,零 React 依赖)
- 新建 left/hooks/useTaskTable.tsx(状态管理 + 数据获取 + 列定义 + 滚动同步)
- TaskHistory.tsx 从 915 行精简为 265 行纯视图

## 右键菜单体系完善
- 共享 <ContextMenu> 组件(antd Dropdown 封装,防 Select 冲突)
- 四组菜单定义:任务列表 / 文本输入 / 媒体参考 / 预览区域
- 统一的 ContextMenuItems → AntD MenuProps 转换

## 公告功能修复
- useAnnouncements 增加 isLoggedIn 登录门控,避免未登录时 401 双重请求
- 抽屉打开时触发 refetch(),确保拿到最新数据

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-06-30 13:39:38 +08:00
parent 337d6c1205
commit 904edecd90
73 changed files with 1478 additions and 1034 deletions

View File

@@ -0,0 +1,30 @@
// ============================================================
// home/shared — 首页跨栏共享(全局视图 + API + 状态)
// ============================================================
// Views
export { HomePage } from './views/HomePage';
export { HomeContent } from './views/HomeContent';
// Controllers (API)
export { TaskAPI, TaskStatusMap, OutputTypeMap, POLLING_STATUSES } from '@/services/modules/home/task';
export type {
TaskInfoItemResponseBody,
TaskListRequestParams,
TaskStatusString,
CreatTaskRequestBody,
} from '@/services/modules/home/task';
export { ModelAPI, MODEL_CATEGORIES, MODEL_CATEGORY_LABELS, CATEGORY_SLUG_MAP } from '@/services/modules/home/models';
export type {
ModelsListResponseBody,
ParamSchemaItem,
ModelCategoryStringEnum,
} from '@/services/modules/home/models';
export { fetchBanners } from '@/services/modules/home/banner';
export type { BannerListResponse } from '@/services/modules/home/banner';
// Stores
export { HomeContext, useHomeContext } from './stores/HomeContext';
export type { HomeContextValue } from './stores/HomeContext';