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:
58
PROJECT.md
58
PROJECT.md
@@ -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 # 平台特定 Updater(Windows/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 handler(heixiu-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 # 文件存储 API(getDataDir / readFile / writeFile)
|
||||
│ ├── canvas.ts # 画布 API(openWindow / scanProject / readSidecar)
|
||||
│ ├── app-runtime.ts # 运行时 API(setWindowEdition)
|
||||
│ ├── index.ts # 汇总导出(exposeBaseIpc / exposeSafeStorage / ...)
|
||||
│ ├── device.ts # 硬件指纹采集
|
||||
│ └── device_service.ts # 设备信息缓存层
|
||||
│
|
||||
@@ -137,8 +157,25 @@
|
||||
│ └── shared/ # ═══ 跨模块共享 ═══
|
||||
│ ├── components/ # 通用 UI(FloatingPanel / FormField / LegalTextModal / ContextMenu)
|
||||
│ ├── hooks/ # 全局 Hooks(useAnnouncements / 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.ts(Platform/Theme/Edition)/ logging.ts
|
||||
│ └── utils/ # sanitize.ts(日志脱敏)+ index.ts(通用工具)
|
||||
│
|
||||
|
||||
Reference in New Issue
Block a user