Files
ele-HeiXiu/TODO.md

3.6 KiB
Raw Blame History

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

最后更新2026-06-03


🔴 安全加固(优先级高)

1. 敏感数据加密存储

当前所有敏感数据存储在 localStorage 明文/Base64

数据 现状 目标方案
access_token 明文 Electron safeStorage.encryptString()
refresh_token 明文 Electron safeStorage.encryptString()
passwordBase64 Base64 编码 移除密码存储,仅靠 refresh_token 自动登录

方案 A推荐:使用 Electron safeStorage API

  • macOS → Keychain
  • Windows → DPAPI
  • Linux → libsecret
// preload.ts 暴露安全方法
contextBridge.exposeInMainWorld('safeStorage', {
   encrypt: (plain: string) => ipcRenderer.invoke('safe-storage:encrypt', plain),
   decrypt: (encrypted: Buffer) => ipcRenderer.invoke('safe-storage:decrypt', encrypted),
});

// 替代现有 setToken / setStoredRefreshToken
// 渲染进程不再直接操作 localStorage

方案 B:敏感操作下沉到主进程

  • access_token / refresh_token 由主进程管理
  • 渲染进程通过 IPC 发起请求时由主进程追加 Token
  • 渲染进程永不持有明文 Token

2. 密码存储策略调整

  • "记住密码" → 仅回填用户名,不再存储密码(已完成)
  • 清理 StoredAuth.passwordBase64 字段
  • "自动登录" 完全依赖 refresh_token 静默续期

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

设置页面

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

路由与页面

  • 合规素材库页面(/compliance-assets
  • 项目管理页面(/projects,企业版)
  • 账户/会员/充值/消费记录/订单明细页面
  • 忘记密码流程
  • 各页面暗色主题适配

导航栏

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

公告

  • 公告已读/未读状态
  • 公告红点/角标提醒(有新公告时导航栏图标变化)
  • 公告缓存(减少重复请求)

🟢 工程优化(优先级低)

构建与开发

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

代码质量

  • 移除未使用的 shared/ 类型和常量
  • 统一 IPC 通道注册/注销模式(避免重复监听)
  • React 组件 lazy loadingReact.lazy + Suspense
  • 错误边界组件ErrorBoundary

文档

  • API 接口文档Swagger / 手动维护)
  • 组件文档Storybook
  • 用户操作手册

⚠️ 已知技术债务

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

📋 下次开发计划

  1. safeStorage 加密改造(安全加固 #1
  2. 合规素材库页面(功能待完善 Route 页面)
  3. 各页面 nav 导航补齐