feat: 去除构建时版控变量 + 窗口标题动态版控 + 退出登录保留缓存 (0.0.24)

版控体系重构(13 文件):
- 移除 build.mjs --personal/--enterprise 参数和 EDITION 环境变量
- 统一安装包文件名:船长-HeiXiu-{os}-{版本号}-Setup.{ext}
- 简化 package.json 构建脚本,移除 :enterprise 变体
- scripts/*.mjs 不再接受 edition 参数
- 移除 shared/constants/app.ts 的 parseEdition()

窗口标题动态版控:
- 新格式:船长-HeiXiu-{os}-{版本号}(登录前)/ ·{版控} 后缀(登录后)
- 链路:AppProvider(account_type) → useEffect → appRuntime IPC → main process
- 移除 updater.ts 更新检查 API 的 edition 查询参数

本地存储生命周期修正:
- 退出登录不再自动清空缓存(user_id 隔离,重新登录命中缓存)
- clearUserStorage 添加 isOpen() 竞态守卫
- 移除 closeDatabase() 避免退出→重新登录后数据库不可用
- 手动「清理缓存」按钮保留

文档:
- CHANGELOG.md 新增 0.0.24 条目
- TODO.md 新增已完成项
This commit is contained in:
2026-06-22 13:36:42 +08:00
parent e4d66a2ac0
commit 8b697e775d
95 changed files with 1158 additions and 1295 deletions

View File

@@ -66,12 +66,13 @@
│ └── main/ # 主进程核心模块
│ │ ├── load-env.ts # .env.{mode} + .env.local 加载器
│ │ ├── logger.ts # 日志核心JSON Lines / 每日轮转 / 批量冲刷
│ │ ├── log-ipc.ts # 渲染进程日志 → 主进程日志桥接
│ │ ├── net-request.ts # Electron net.request 的 axios 风格封装
│ │ ├── safe-storage-ipc.ts # safeStorage 加密/解密 IPC handler
│ │ ├── storage-ipc.ts # 沙箱文件存储 IPC handlerheixiu-data/
│ │ ├── updater.ts # 自动更新:自定义 Provider + 平台 Updater
│ │ ├── 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/
│ │ └── utils/ # 平台判断 / 图标路径
│ └── preload/ # 预加载脚本contextBridge 桥接层)
│ ├── device.ts # 硬件指纹采集wmic/powershell | ioreg/sysctl
@@ -85,32 +86,39 @@
│ │ │ ├── AppProvider.tsx # 认证状态login/logout/Token 刷新)
│ │ │ ├── ThemeProvider.tsx # 亮/暗主题切换 + antd ConfigProvider
│ │ │ └── SettingsProvider.tsx # 本地持久化设置(存储路径等)
│ │ ├── shell/ # 应用外壳
│ │ ├── frame/ # 应用框架(外层结构 + 页面调度)
│ │ │ ├── Layout.tsx # 全高 flex 列布局壳
│ │ │ ├── PageDispatcher.tsx # 通用页面调度器Modal/Drawer/FloatingPanel
│ │ │ └── navbar/ # 导航栏nav-config → NavBar → NavItem
│ │ └── ui/ # 通用 UI 原子组件
│ │ ├── FloatingPanel.tsx # 可拖拽非模态浮动面板
│ │ ── LegalTextModal.tsx # 法律/协议文本 Modal
│ │ ── LegalTextModal.tsx # 法律/协议文本 Modal
│ │ ├── FormField.tsx # 通用表单字段渲染器(数据驱动,从 auth/components 提升)
│ │ └── types.ts # FieldConfig / FieldRule / InputType 通用类型
│ ├── hooks/ # 自定义 Hooks
│ │ ├── use-async.ts # 通用异步基础设施(竞态/取消/门控)
│ │ ├── use-api.ts # 业务 API HooksBanner/模型/任务/账户/财务)
│ │ └── use-updater.ts # 更新状态机(单例 IPC 监听)
│ ├── infrastructure/ # 基础设施层
│ │ └── storage/ # 本地加密数据库(sql.js + safeStorage + IPC
│ │ ├── db-core.ts # sql.js WASM 初始化 + 通用 CRUD
│ │ ├── db-encrypt.ts # 序列化 → safeStorage 加密 → IPC 写磁盘
│ │ ├── schema.ts # 6 张业务表 DDL含索引
│ │ ├── task-store.ts # 任务记录本地 CRUD
│ │ ├── order-store.ts # 订单记录本地 CRUD充值 + VIP
│ │ ├── param-store.ts # 参数历史快照(每模型最多 20 条)
│ │ ├── media-store.ts # 媒体缓存元数据管理
│ │ ├── media-loader.ts # 媒体下载与三级缓存策略
│ │ ├── settings-store.ts # 应用设置 key-value 存储
│ │ ├── sync-manager.ts # 分页同步游标管理
│ │ ├── user-scope.ts # 用户作用域隔离JWT user_id
│ │ └── storage/ # 本地加密数据库(core/ + stores/ + services/
│ │ ├── index.ts # 统一入口init/clear/stats + 全部 re-export
│ │ ├── ipc-file.ts # 渲染进程端文件操作桥接
│ │ ── index.ts # 统一入口init/clear/stats
│ │ ── core/ # 数据库核心4 文件)
│ │ │ ├── db-core.ts # sql.js WASM 初始化 + 通用 CRUD
│ │ │ ├── db-encrypt.ts # 序列化 → safeStorage 加密 → IPC 写磁盘
│ │ │ ├── schema.ts # 6 张业务表 DDL含索引
│ │ │ └── types.ts # 实体类型定义
│ │ ├── stores/ # 实体 CRUD Store5 文件)
│ │ │ ├── task-store.ts # 任务记录
│ │ │ ├── order-store.ts # 订单记录(充值 + VIP
│ │ │ ├── param-store.ts # 参数历史快照
│ │ │ ├── media-store.ts # 媒体缓存元数据
│ │ │ └── settings-store.ts # 应用设置 key-value
│ │ └── services/ # 高级服务4 文件)
│ │ ├── media-loader.ts # 媒体下载与三级缓存
│ │ ├── sync-manager.ts # 分页同步游标
│ │ ├── data-sync.ts # 数据同步辅助(从 settings/sections 归位)
│ │ └── user-scope.ts # 用户作用域隔离JWT user_id
│ ├── pages/ # 业务页面(按功能模块组织)
│ │ ├── auth/ # 认证模块
│ │ │ ├── index.tsx # LoginPage Modal登录/注册 Tabs
@@ -123,7 +131,13 @@
│ │ │ ├── HomeContext.tsx # 共享状态(选中模型/任务/分页)
│ │ │ ├── panels/ # 三列面板容器Left/Center/Right
│ │ │ ├── features/ # 功能模块Banner/ModelSelector/ModelInputForm/TaskHistory/OutputPreview
│ │ │ ├── controls/ # Widget 控件体系(12 种 Qt→React 映射 + WIDGET_MAP
│ │ │ ├── controls/ # Widget 控件体系(6 种 Qt→React 映射 + WIDGET_MAP
│ │ │ │ ├── types.ts # WidgetProps 统一接口
│ │ │ │ ├── index.ts # WIDGET_MAP 注册表
│ │ │ │ ├── simple-widgets.tsx # 6 个简单控件Checkbox/LineInput/TextInput/ComboBox/SpinBox/DoubleSpinBox
│ │ │ │ ├── upload-widgets.tsx # 单文件上传ImageInput/VideoInput共享 enable_switch
│ │ │ │ ├── list-upload-widgets.tsx # 多文件拖拽上传ImageListInput/AudioListInput
│ │ │ │ └── SeedanceContent.tsx # 复合内容编排
│ │ │ └── hooks/ # useModelUIparam_schema → UIFieldConfig
│ │ ├── panels/ # NavBar 触发的功能面板页
│ │ │ ├── AccountInfo.tsx # 账户信息(用户/积分/套餐/统计)
@@ -158,18 +172,14 @@
│ │ ├── transitions.css # 主题切换过渡View Transitions API + CSS fallback
│ │ ├── base.css # 全局重置(盒模型/滚动条/聚焦环/拖拽区域)
│ │ └── globals.css # 入口文件(按序导入以上 CSS
│ └── utils/ # 渲染进程工具函数
│ ├── event-bus.ts # 事件总线on/off/emit + 日志审计钩子
│ ├── ipc.ts # IPC 安全守卫hasIpc → safeIpcOn/send/invoke
│ ├── logger.ts # 渲染进程日志IPC 转发 | DEV 控制台
│ ├── platform.ts # 平台判定isMacOS/isWindows/isLinux
│ ├── device.ts # 设备 ID 生成与持久化UUID v4
│ ├── safe-storage.ts # 加密 localStorage 封装safeStorage 桥接)
│ ├── logo.ts # Logo 资产 URL 解析
│ ├── pricing.ts # 成本计算Python 六种定价模式移植)
│ └── utils/ # 渲染进程工具函数7 文件,已按功能合并)
│ ├── env.ts # 运行时环境:平台检测 + 设备 ID← platform + device
│ ├── bus.ts # 通信层:事件总线 + IPC 守卫 + 日志(← event-bus + ipc + logger
│ ├── display.ts # 展示/格式化金额、日期、Logo、Nullable<T>(← display + logo + type
│ ├── enum-resolver.ts # 枚举外观模式7 模块标签/颜色统一解析)
│ ├── display.ts # 金额/日期格式化
── type.ts # Nullable<T> 类型别名
│ ├── pricing.ts # 成本计算Python 六种定价模式移植)
── safe-storage.ts # 加密 localStorage 封装safeStorage 桥接)
│ └── media-upload.ts # 媒体上传共享工具(← controls/media-upload-utils
├── shared/ # 主进程 & 渲染进程共享
│ ├── constants/
│ │ ├── app.ts # 应用名称/版本类型/窗口标题