Files
ele-HeiXiu/TODO.md
YoungestSongMo 337d6c1205 feat: 构建系统重构 + VCHSM 架构迁移 + 右键菜单修复 + 尺寸参数统一
## 构建、打包与分发系统重构 (build/)

- 构建系统收敛至 build/ 目录:build.mjs + electron-builder.js + 6 个脚本

- electron-builder 配置从 package.json 提取为 build/electron-builder.js

- 新增 --edition (personal/enterprise) 和 --channel (stable/beta/alpha) 参数

- OSS 路径按渠道隔离

- 新增 pre-build-check.mjs:Git/CHANGELOG/版本/环境变量校验

- 新增 bump-version.mjs:版本号管理 + CHANGELOG 自动生成

- updater.ts 发送 channel/edition/deviceFingerprint

- 新增 src/shared/utils/rollout.ts 灰度测试工具

- 新增 10 条 NPM 脚本

## VCHSM 五层架构迁移

- 7 个业务模块 + ~500 处导入路径同步

## 修复

- MediaCardContextMenu 改用共享 ContextMenu 组件

- ComboBox 尺寸参数显示统一 (size-format.ts)

## 文档

- UpdateA.md / build/README.md / README.md / .env.example 更新

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-29 18:41:07 +08:00

6.1 KiB
Raw Permalink Blame History

TODO — 船长·HeiXiu 待办与优化清单

最后更新2026-06-29


近期完成

  • VCHSM 五层模块化架构重构pages/ + services/modules/ 分散模式 → modules/ 统一7 个模块,每个独立 views/controllers/hooks/settings/model
  • 公告 Badge 角标 + 轮询缓存antd Badge + useAnnouncements Hook15 分钟轮询 + localStorage 已读缓存)
  • 日志全量审计~60+ 处 try/catch 补充 logger.warn3 个 IPC handler try/catch 包裹
  • 存储路径可配置setLogDirResolver() / setDataDirResolver() 函数注入
  • 构建时 EDITION 变量已移除:版控全部收敛到后端 account_type 运行时判断,不再区分个人版/企业版构建产物
  • 窗口标题动态版控:登录后通过 IPC 追加 ·个人版/·企业版 后缀
  • 退出登录不再自动清空本地缓存user_id 隔离 + 手动清理按钮
  • 无限画布(企业版项目管理):独立 BrowserWindow 画布窗口,项目/集数/镜头导航、阶段切换、网格/单行布局、滚轮缩放、拖拽平移、全屏灯箱预览、原生文件拖拽
  • 无限画布 UI 重构AntD Layout 双栏布局Sider+Content、CanvasSidebar 导航、CategoryTabs 双模式分类、Ctrl/Cmd+拖拽平移
  • 预览键盘控制Space 暂停/播放、← → 快退快进 ±0.5s、↑ ↓ 音量透传原生 controls
  • local-media:// Range 请求支持:协议头转发修复音视频 seek 失败问题

🟡 功能待完善(优先级中)

设置页面

  • 设置数据通过 IPC 同步到主进程(当前仅渲染进程 localStorage
  • 存储路径有效性校验(检查路径是否存在)
  • "恢复默认设置"按钮

路由与页面

  • 账户信息页面(/accountAccountInfo.tsxAuthAPI.getUserInfo() 驱动
  • 充值页面(/rechargeRechargePage.tsx,创建订单 → 支付状态跟踪
  • 订单明细页面(/ordersOrdersPage.tsx,状态筛选 + 分页 + 继续支付 + 轮询
  • 合规素材库页面(/compliance-assets
  • 项目管理页面(企业版,独立画布窗口 #/canvas
  • 会员页面(/vip
  • 消费记录页面
  • 本地数据管理(加载历史/保存到磁盘/清理缓存) — DataManageSetting + sql.js 存储

媒体与文件

  • 媒体文件本地下载+缓存(主进程 HTTP 无 CORS 限制,替代渲染进程 axios
  • CDN 签名过期检测(主进程发 HEAD 请求读 SignatureExpired 响应体)
  • 列表页"下一页"懒加载集成TaskHistory / OrdersPage 调用 fetchAndSync*
  • 参数回填 UI选择模型时显示历史参数下拉
  • 右键"在文件夹中查看"功能(媒体预览右键菜单)

导航栏

  • 导航配置中的 action: 'external' 统一管理(白名单校验)
  • 未登录点击需登录项 → 登录成功后自动跳转到目标页

公告

  • 公告数据获取与展示AnnouncementDrawer + fetchAnnouncements API
  • 公告已读/未读状态localStorage 缓存已读 ID Set
  • 公告 Badge 角标提醒antd Badge + NavItem badgeCount prop
  • 公告缓存 + 轮询useAnnouncements Hook15 分钟 setInterval 对比)

任务

  • 任务状态轮询(批量轮询 + Context 桥接 + 自适应间隔)
  • 任务列表导出 CSV 功能完善
  • 任务重试/重新提交

🟢 工程优化(优先级低)

构建与开发

  • CI/CD 流水线GitHub Actions / 自建)
  • 代码签名自动化Windows Authenticode / macOS notarization
  • E2E 测试用例编写Playwright
  • 单元测试覆盖Vitest
  • Bundle 体积分析优化rollup-plugin-visualizer 已有,定期检查)

代码质量

  • 移除未使用的 shared/ 类型和常量
  • 统一 IPC 通道注册/注销模式(避免重复监听)
  • React 组件 lazy loadingReact.lazy + Suspense
  • 错误边界组件ErrorBoundary
  • 审计其余 useEffect 缺少清理函数的位置StrictMode 双重挂载可能导致重复请求,参考 AppProvider 的 aborted 模式)

文档

  • 文件夹 README 文档37 个文件夹全部覆盖,不进 Git
  • API 接口文档Swagger / 手动维护)
  • 组件文档Storybook
  • 用户操作手册

⚠️ 已知技术债务

问题 说明 影响
localStorage 依赖 所有持久化数据依赖 localStorage 清理浏览器数据会丢失所有配置
IPC 监听器 useUpdater 已改为单例,其他 IPC hook 可能也有类似问题 长期运行可能内存泄漏
test.py 仓库根目录残留测试文件 无实际作用,应清理
null 文件 仓库根目录名为 null 的文件 构建产物或误操作残留

📋 下次开发计划

  1. 任务列表导出 CSVtask.ts 已定义 exportTaskCSV API前端未对接下载按钮
  2. 文件上传端点确认/api/v1/upload 待后端确认,当前 useFileUpload 已完成前端集成)
  3. 各页面 nav 导航补齐(后续页面优先使用叠加模式,遵循 QT 多窗口模型 → 见 WORKLOG 2026-06-07
  4. leftWidth / rightWidth / taskPage 加 localStorage 持久化UX 优化:刷新页面后保持用户偏好;已通过路由去路由化解决组件卸载问题,但 localStorage 持久层仍未实现)
  5. 轮播图关闭按钮 localStorage 持久化关闭按钮已实现待做localStorage 记录关闭时间戳,超过 N 天再显示)
  6. 短信发送接入人机验证(后期优化,需后端配合:sendSms 接口增加 captcha_token 参数 + 前端滑块/图形验证组件。当前仅靠 60s 冷却按钮 + 后端限流,桌面端 ASAR 可解包 + DevTools 网络面板 + 代理抓包均能直接暴露 API纯前端限制对脚本攻击无效