# TODO — 船长·HeiXiu 待办与优化清单 > 最后更新:2026-06-29 --- ## ✅ 近期完成 - **VCHSM 五层模块化架构重构**:`pages/` + `services/modules/` 分散模式 → `modules/` 统一(7 个模块,每个独立 views/controllers/hooks/settings/model) - **公告 Badge 角标 + 轮询缓存**:antd Badge + useAnnouncements Hook(15 分钟轮询 + localStorage 已读缓存) - **日志全量审计**:~60+ 处 try/catch 补充 logger.warn,3 个 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) - [ ] 存储路径有效性校验(检查路径是否存在) - [ ] "恢复默认设置"按钮 ### 路由与页面 - [x] 账户信息页面(`/account`) — `AccountInfo.tsx`,AuthAPI.getUserInfo() 驱动 - [x] 充值页面(`/recharge`) — `RechargePage.tsx`,创建订单 → 支付状态跟踪 - [x] 订单明细页面(`/orders`) — `OrdersPage.tsx`,状态筛选 + 分页 + 继续支付 + 轮询 - [ ] 合规素材库页面(`/compliance-assets`) - [x] 项目管理页面(企业版,独立画布窗口 `#/canvas`) - [ ] 会员页面(`/vip`) - [ ] 消费记录页面 - [x] 本地数据管理(加载历史/保存到磁盘/清理缓存) — `DataManageSetting` + sql.js 存储 ### 媒体与文件 - [ ] 媒体文件本地下载+缓存(主进程 HTTP 无 CORS 限制,替代渲染进程 axios) - [ ] CDN 签名过期检测(主进程发 HEAD 请求读 `SignatureExpired` 响应体) - [ ] 列表页"下一页"懒加载集成(TaskHistory / OrdersPage 调用 `fetchAndSync*`) - [ ] 参数回填 UI(选择模型时显示历史参数下拉) - [ ] 右键"在文件夹中查看"功能(媒体预览右键菜单) ### 导航栏 - [ ] 导航配置中的 `action: 'external'` 统一管理(白名单校验) - [ ] 未登录点击需登录项 → 登录成功后自动跳转到目标页 ### 公告 - [x] 公告数据获取与展示(AnnouncementDrawer + fetchAnnouncements API) - [x] 公告已读/未读状态(localStorage 缓存已读 ID Set) - [x] 公告 Badge 角标提醒(antd Badge + NavItem badgeCount prop) - [x] 公告缓存 + 轮询(useAnnouncements Hook,15 分钟 setInterval 对比) ### 任务 - [x] 任务状态轮询(批量轮询 + Context 桥接 + 自适应间隔) - [ ] 任务列表导出 CSV 功能完善 - [ ] 任务重试/重新提交 --- ## 🟢 工程优化(优先级低) ### 构建与开发 - [ ] CI/CD 流水线(GitHub Actions / 自建) - [ ] 代码签名自动化(Windows Authenticode / macOS notarization) - [ ] E2E 测试用例编写(Playwright) - [ ] 单元测试覆盖(Vitest) - [ ] Bundle 体积分析优化(rollup-plugin-visualizer 已有,定期检查) ### 代码质量 - [ ] 移除未使用的 `shared/` 类型和常量 - [ ] 统一 IPC 通道注册/注销模式(避免重复监听) - [ ] React 组件 lazy loading(React.lazy + Suspense) - [ ] 错误边界组件(ErrorBoundary) - [ ] 审计其余 useEffect 缺少清理函数的位置(StrictMode 双重挂载可能导致重复请求,参考 AppProvider 的 aborted 模式) ### 文档 - [x] 文件夹 README 文档(37 个文件夹全部覆盖,不进 Git) - [ ] API 接口文档(Swagger / 手动维护) - [ ] 组件文档(Storybook) - [ ] 用户操作手册 --- ## ⚠️ 已知技术债务 | 问题 | 说明 | 影响 | |-----------------|---------------------------------------|----------------| | localStorage 依赖 | 所有持久化数据依赖 localStorage | 清理浏览器数据会丢失所有配置 | | IPC 监听器 | useUpdater 已改为单例,其他 IPC hook 可能也有类似问题 | 长期运行可能内存泄漏 | | `test.py` | 仓库根目录残留测试文件 | 无实际作用,应清理 | | `null` 文件 | 仓库根目录名为 null 的文件 | 构建产物或误操作残留 | --- ## 📋 下次开发计划 1. **任务列表导出 CSV**(`task.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,纯前端限制对脚本攻击无效)