# 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，纯前端限制对脚本攻击无效）
