Files
ele-HeiXiu/package.json
YoungestSongMo 1da95eaef3 feat: 实现业务首页(三栏布局 + 轮播图)
## 首页整体架构
  - 新增 src/pages/home/ — 完整首页模块(10 个组件)
    - HomePage / HomeContent:三栏弹性布局,拖动分隔条调整列宽
    - BannerCarousel:顶部轮播图(antd Carousel,2280×90 长条图片适配)
    - LeftPanel:模型选择器(Menu 分组) + 任务记录(Table 分页),纵向拖拽调整比例
    - CenterPanel / ModelInputForm:动态表单,根据模型 param_schema/ui_config 渲染控件
    - RightPanel / OutputPreview:任务输出预览(Image/Video)
  - 新增 Layout 组件:h-screen flex 布局,首页 Banner + NavBar + Outlet

  ## 数据层(数据与视图分离)
  - 新增 src/services/modules/ — API 模块(banner/models/task/auth)
    - TaskAPI 静态方法,TaskInfoItemResponseBody 判别联合类型
    - ModelAPI / BannerAPI,const 断言路由常量
  - 新增 src/hooks/use-async.ts — 通用异步 Hook
    - useAsyncData:竞态处理、条件请求(enabled)、自动错误日志
    - useAsyncMutation:数据变更,onSuccess/onError
    - getErrorMessage():RequestErrorType → 可读错误信息
  - 新增 src/hooks/use-api.ts — 业务 Hook
    - useBannerList / useModelList / useTaskList / useTaskDetail / useSubmitTask

  ## 主题与交互
  - 重写暗色令牌:科技感蓝紫(#080C24 底 / #0F1340 面板 / #2A3278 边框)
  - 三栏分隔线:token.colorBorderSecondary 常驻 + 手柄竖线 hover 高亮
  - 左面板纵向拖拽:模型区/任务区可调比例,ResizeObserver 自适应
  - 暗色/亮色同步:tokens.ts + antd-theme.ts + globals.css 三处一致

  ## 基础设施
  - EventBus 新增 TASK_SUBMITTED 事件(替代 Context 数字递增 hack)
  - HomeContext 状态管理(选中模型、任务分页、折叠状态)
  - 所有组件边框使用 token.colorBorderSecondary(主题自适应)
  - Table 滚动高度 ResizeObserver 动态计算(修复分页器遮挡)
2026-06-05 16:24:17 +08:00

120 lines
4.0 KiB
JSON

{
"name": "ele-heixiu",
"private": true,
"version": "0.0.12",
"description": "船长·HeiXiu — 桌面效率工作台",
"author": "HeiXiu 杨烨",
"type": "module",
"scripts": {
"dev": "chcp 65001 > null && cross-env ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ vite",
"build": "node build.mjs --win --personal --build",
"build:win": "node build.mjs --win --personal --build",
"build:win:enterprise": "node build.mjs --win --enterprise --build",
"build:mac": "node build.mjs --mac --personal --build",
"build:mac:enterprise": "node build.mjs --mac --enterprise --build",
"build:linux": "node build.mjs --linux --personal --build",
"build:linux:enterprise": "node build.mjs --linux --enterprise --build",
"build:clean": "node scripts/clean.mjs",
"upload:oss": "node scripts/upload-oss.mjs",
"publish:release": "node scripts/publish-release.mjs",
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
"preview": "vite preview",
"format": "prettier --write \"src/**/*.{ts,tsx,css}\" \"electron/**/*.ts\" \"shared/**/*.ts\"",
"format:check": "prettier --check \"src/**/*.{ts,tsx,css}\" \"electron/**/*.ts\" \"shared/**/*.ts\"",
"test": "vitest run",
"test:watch": "vitest",
"test:e2e": "playwright test.json"
},
"dependencies": {
"antd": "^6.4.3",
"axios": "^1.16.1",
"electron-updater": "^6.8.3",
"react": "^19.2.7",
"react-dom": "^19.2.7",
"react-router-dom": "^7.16.0",
"@react-buddy/ide-toolbox": "^2.5.0"
},
"build": {
"appId": "com.heixiu.electron",
"productName": "船长·HeiXiu",
"asar": true,
"directories": {
"output": "release/${version}"
},
"files": [
"dist",
"dist-electron"
],
"electronDownload": {
"mirror": "https://npmmirror.com/mirrors/electron/"
},
"publish": {
"provider": "generic",
"url": "https://update.heixiu.com"
},
"win": {
"icon": "src/assets/logo/heixiu.ico",
"target": [
{
"target": "NSIS",
"arch": [
"x64"
]
}
],
"artifactName": "${productName}-Windows-${version}-${env.EDITION}-Setup.${ext}"
},
"mac": {
"icon": "src/assets/logo/heixiu.icns",
"target": [
"dmg"
],
"artifactName": "${productName}-Mac-${version}-${env.EDITION}-Installer.${ext}"
},
"linux": {
"icon": "src/assets/logo/HX.png",
"target": [
"AppImage"
],
"artifactName": "${productName}-Linux-${version}-${env.EDITION}.${ext}"
},
"nsis": {
"oneClick": false,
"perMachine": false,
"allowToChangeInstallationDirectory": true,
"deleteAppDataOnUninstall": false,
"differentialPackage": true,
"installerIcon": "src/assets/logo/heixiu.ico",
"uninstallerIcon": "src/assets/logo/heixiu.ico"
}
},
"devDependencies": {
"@playwright/test": "^1.60.0",
"@tailwindcss/vite": "^4.3.0",
"@types/electron": "^1.4.38",
"@types/node": "^25.9.1",
"@types/react": "^19.2.16",
"@types/react-dom": "^19.2.3",
"@typescript-eslint/eslint-plugin": "^8.60.1",
"@typescript-eslint/parser": "^8.60.1",
"@vitejs/plugin-react": "^6.0.0",
"autoprefixer": "^10.5.0",
"cross-env": "^10.1.0",
"electron": "42.3.0",
"electron-builder": "^26.8.1",
"eslint": "^10.4.1",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-react-hooks": "^7.1.1",
"eslint-plugin-react-refresh": "^0.5.2",
"postcss": "^8.5.15",
"prettier": "^3.8.3",
"rollup-plugin-visualizer": "^7.0.1",
"tailwindcss": "^4.3.0",
"typescript": "^6.0.3",
"vite": "8.0.16",
"vite-plugin-electron": "^1.0.0",
"vite-plugin-electron-renderer": "^1.0.0"
},
"main": "dist-electron/main.js"
}