feat: 任务列表右键菜单回调 + 主进程下载 + sharp 缩略图 + IPC 精简重构

- 任务右键菜单:实现打开输出目录(inputs/outputs/.cache 结构)、
    复制资源链接、重新编辑、再次生成、拉取结果、重新下载、收藏、删除记录
  - 主进程下载:通过 Electron net 模块绕过 CORS,支持 CDN 媒体文件下载
  - sharp 缩略图:替换 nativeImage,支持 4K/8K+ 大尺寸素材的流式处理
  - IPC 精简:40+ 冗余通道 → 15 个分组通道,移除未使用的 preload 桥接方法
  - 任务存储:新增收藏字段、schema 迁移、task-store 持久化
  - 清理废弃模块:canvas-ipc / updater / request / pricing

refactor: IPC/Preload/Services 模块化拆分 — 单一职责 + 向后兼容

  主要变更:
  - shared/constants/ipc-channels.ts → ipc/ 模块 (base/storage/canvas/updater)
  - electron/preload.ts → preload/ 模块 (base/safe-storage/file-storage/canvas)
  - electron/main/ipc/canvas-ipc.ts → canvas/ 模块 (types/walk/sidecar/mime/thumbnail)
  - electron/main/ipc/storage-ipc.ts → 提取 utils/ (path/download/thumbnail)
  - electron/main/updater.ts → updater/ 模块 (provider/platform-updaters)
  - src/services/request.ts → request/ 模块 (token/interceptors/methods)
  - src/shared/utils/pricing.ts → pricing/ 模块 (types/helpers/format/calculate/fields)
  - src/modules/home/center/views/ModelInputForm.tsx → 提取 utils + DependentFormItem

  架构优化:
  - 所有拆分均保持向后兼容(旧导入路径仍可用)
  - TypeScript 编译通过 ✓
  - 每个模块单一职责,平均 ~130 行
This commit is contained in:
2026-07-03 11:13:36 +08:00
parent 904edecd90
commit 136a17c0bf
69 changed files with 4139 additions and 2713 deletions

View File

@@ -62,21 +62,41 @@
```md
├── electron/ # Electron 主进程 + 预加载
│ ├── main.ts # 入口编排:窗口创建 / IPC 注册 / 生命周期
│ ├── preload.ts # contextBridge向渲染进程暴露安全 API
│ ├── preload.ts # contextBridge向渲染进程暴露安全 API(薄入口)
│ ├── electron-env.d.ts # 类型声明APP_ROOT、Window 扩展)
│ └── main/ # 主进程核心模块
│ │ ├── load-env.ts # .env.{mode} + .env.local 加载器
│ │ ├── logger.ts # 日志核心JSON Lines / 每日轮转 / 批量冲刷
│ │ ├── net-request.ts # Electron net.request 的 axios 风格封装
│ │ ├── updater.ts # 自动更新:自定义 Provider + 平台 Updater
│ │ ├── updater/ # 自动更新模块
│ │ │ ├── provider.ts # 自定义 Provider + 设备指纹 + 构建配置
│ │ │ ├── platform-updaters.ts # 平台特定 UpdaterWindows/macOS/Linux
│ │ │ └── index.ts # 初始化 + IPC 注册
│ │ ├── menu/index.ts # 系统菜单macOS Edit / Win 无菜单)
│ │ ├── ipc/ # IPC handler 集合
│ │ │ ├── log-ipc.ts # 渲染进程日志 → 主进程日志桥接
│ │ │ ├── safe-storage-ipc.ts # safeStorage 加密/解密 IPC handler
│ │ │ ├── storage-ipc.ts # 沙箱文件存储 IPC handlerheixiu-data/
│ │ │ ── canvas-ipc.ts # 画布文件操作 IPC handler
│ │ │ ── utils/ # 存储通用工具
│ │ │ │ ├── path.ts # 路径安全解析resolveSafe / ensureDir
│ │ │ │ ├── download.ts # Electron net 文件下载(绕过 CORS
│ │ │ │ └── thumbnail.ts # sharp 缩略图生成(内存优化)
│ │ │ └── canvas/ # 画布文件操作模块
│ │ │ ├── types.ts # 类型定义StageType / ScanEntry / ThumbnailResult
│ │ │ ├── walk.ts # 递归目录遍历
│ │ │ ├── sidecar.ts # Sidecar JSON 元数据读写
│ │ │ ├── mime.ts # MIME 类型推断
│ │ │ ├── thumbnail.ts # 画布缩略图生成(缓存优先)
│ │ │ ├── scan-roots.ts # 扫描根目录计算 + 阶段过滤
│ │ │ └── index.ts # IPC handler 注册
│ │ └── utils/ # 平台判断 / 图标路径
│ └── preload/ # 预加载脚本contextBridge 桥接层)
│ ├── base.ts # ipcRenderer 基础桥接on/off/send/invoke
│ ├── safe-storage.ts # safeStorage 加密/解密 API
│ ├── file-storage.ts # 文件存储 APIgetDataDir / readFile / writeFile
│ ├── canvas.ts # 画布 APIopenWindow / scanProject / readSidecar
│ ├── app-runtime.ts # 运行时 APIsetWindowEdition
│ ├── index.ts # 汇总导出exposeBaseIpc / exposeSafeStorage / ...
│ ├── device.ts # 硬件指纹采集
│ └── device_service.ts # 设备信息缓存层
@@ -137,8 +157,25 @@
│ └── shared/ # ═══ 跨模块共享 ═══
│ ├── components/ # 通用 UIFloatingPanel / FormField / LegalTextModal / ContextMenu
│ ├── hooks/ # 全局 HooksuseAnnouncements / useApi / useAsync / useUpdater
│ ├── services/ # HTTP 客户端 http.ts + API 类型
│ ├── utils/ # 工具函数bus / env / enum-resolver / display / pricing / safe-storage
│ ├── services/ # HTTP 客户端 + API 模块
├── request/ # Axios 请求封装
│ │ │ ├── token.ts # Token 管理(加密存储 + 内存缓存)
│ │ │ ├── interceptors.ts # 请求/响应拦截器401 刷新 + 错误处理)
│ │ │ ├── methods.ts # 请求方法get/post/put/del/upload/download
│ │ │ └── index.ts # 主入口 + 导出
│ │ └── modules/ # API 模块auth / home / account / announcement
│ ├── utils/ # 工具函数
│ │ ├── bus.ts # 事件总线emit / on / off / EVENTS
│ │ ├── pricing/ # 定价计算模块
│ │ │ ├── types.ts # 类型定义ModelPricingConfig / ModelDefinition
│ │ │ ├── helpers.ts # 内部工具asFloat / matchDimensions
│ │ │ ├── format.ts # 金额格式化formatYuan / formatCent
│ │ │ ├── calculate.ts # 计价逻辑6 种定价模式)
│ │ │ ├── fields.ts # 依赖字段收集
│ │ │ └── index.ts # 主入口 + 导出
│ │ ├── enum-resolver.ts # 枚举值解析
│ │ ├── display.ts # 显示工具
│ │ └── safe-storage.ts # 安全存储工具
│ ├── infrastructure/storage/ # 本地加密数据库sql.js + safeStorage
│ │ ├── core/ # db-core.ts / db-encrypt.ts / schema.ts
│ │ ├── stores/ # task-store / order-store / media-store / settings-store
@@ -146,7 +183,16 @@
│ └── theme/ # 主题系统tokens / antd-theme / CSS 过渡)
├── shared/ # 主进程 & 渲染进程共享(根级 @shared 别名)
│ ├── constants/ # app.ts / ipc-channels.ts / version.ts / keyboard.ts
│ ├── constants/ # 应用常量
│ │ ├── app.ts # 应用名称 / 窗口标题
│ │ ├── version.ts # 版本号
│ │ ├── keyboard.ts # 快捷键映射
│ │ └── ipc/ # IPC 通道常量(模块化)
│ │ ├── base.ts # 基础通道(窗口/日志/主题/配置)
│ │ ├── storage.ts # 存储通道(文件/加密/下载/缩略图)
│ │ ├── canvas.ts # 画布通道(扫描/sidecar/拖拽)
│ │ ├── updater.ts # 更新通道(检查/下载/安装)
│ │ └── index.ts # 汇总导出 + 兼容性 BIDIRECTIONAL
│ ├── types/ # index.tsPlatform/Theme/Edition/ logging.ts
│ └── utils/ # sanitize.ts日志脱敏+ index.ts通用工具