This commit is contained in:
yoyuzh
2026-02-27 14:29:05 +08:00
commit d669738967
41 changed files with 10270 additions and 0 deletions

267
todo_list.md Normal file
View File

@@ -0,0 +1,267 @@
下面这份是**工程级**的 TODO ListMarkdown按“能上线”的路径拆好了里程碑 → 任务 → 验收点。你前端已经做了一部分,就从 **FE-Desktop / FE-Apps** 里把已完成的勾上即可。
---
# Web Desktop 项目工程 TODO可上线版
> 维护规则:
>
> * 每个任务尽量做到“可交付 + 可验收”。
> * 任务粒度1~4 小时能完成为宜。
> * 每周至少推进一个 Milestone 到可演示状态。
---
## 0. 里程碑总览
* [ ] **M0工程骨架就绪能跑通 dev / staging**
* [ ] **M1账号体系 + 桌面壳可用(基础可演示)**
* [ ] **M2网盘 MVPOSS 直传闭环)**
* [ ] **M3分享/审计/配额/管理后台(上线门槛)**
* [ ] **M4Campus BFF 接 Rust API课表/成绩缓存降级)**
* [ ] **M5论坛/地图完善 + 监控告警 + 上线演练**
---
## 1. M0 工程骨架就绪
### Repo / 工程结构
* [ ] 初始化 mono-repo 或多 repo 结构(建议:`frontend/` `backend/` `infra/`
* [ ] 统一 lint/formatESLint/Prettier + 后端 formatter
* [ ] 统一 commit 规范可选commitlint
* [ ] 统一环境变量模板:`.env.example`(前后端分开)
* [ ] 基础 README本地启动、部署、配置项说明
### 本地开发环境
* [ ] docker-composedb + redis + backend + (可选) nginx
* [ ] 一键启动脚本:`make dev` / `npm run dev:all`
* [ ] staging 配置:独立域名/反代/证书(哪怕自签)
### 基础 CI至少跑检查
* [ ] PR 触发lint + typecheck + unit test最小集合
* [ ] build 产物frontend build / backend build
**验收点**
* [ ] 新电脑 clone 后 30 分钟内能跑起来(含 db
---
## 2. M1 账号体系 + 桌面壳
### BE-Auth
* [ ] 用户注册/登录JWT + refresh 或 session 二选一)
* [ ] 密码加密argon2/bcrypt
* [ ] `GET /auth/me`
* [ ] 登录失败限流(例如 5 次/5 分钟)
* [ ] 基础用户状态normal / banned
* [ ] request_id 全链路middleware
### FE-Auth
* [ ] 登录/注册/找回页面
* [ ] token/会话续期策略
* [ ] 全局错误处理(统一 toast + request_id
### FE-Desktop你已做一部分这里把你已有的勾上
* [ ] 桌面布局:图标/分组/壁纸/主题
* [ ] 窗口系统:打开/关闭/最小化/最大化/拖拽/层级
* [ ] 最近使用 / 收藏
* [ ] 全局搜索:应用搜索(先做)
* [ ] 通知中心壳(先只做 UI
### BE-Desktop
* [ ] user_settings 表layout/theme/wallpaper
* [ ] `GET /desktop/settings` / `PUT /desktop/settings`
* [ ] `GET /desktop/apps`(服务端下发应用配置,方便后续开关)
**验收点**
* [ ] 新用户登录后能看到桌面;布局修改刷新后不丢
* [ ] 被封禁用户无法登录(提示明确)
---
## 3. M2 网盘 MVPOSS 直传闭环)
### BE-Drive 元数据
* [ ] files 表user_id, parent_id, name, size, mime, oss_key, deleted_at…
* [ ] 目录增删改查create folder / rename / move / list
* [ ] 软删除 + 回收站 list/restore
* [ ] 文件名净化(防 XSS/路径注入)
### BE-OSS 直传
* [ ] `POST /drive/upload/init`:生成 oss_key + STS/Policy带过期时间
* [ ] 分片策略chunk_size / multipart建议直接支持
* [ ] `POST /drive/upload/complete`:写入元数据(校验 size/etag
* [ ] `GET /drive/download/{id}`:签名 URL短期有效
* [ ] 下载审计:记录 download_sign
### FE-Drive
* [ ] 文件列表:分页/排序/面包屑
* [ ] 上传:小文件 + 大文件分片 + 断点续传
* [ ] 上传队列:暂停/继续/失败重试
* [ ] 预览:图片/PDF/文本
* [ ] 删除/恢复/彻底删除(回收站)
* [ ] 文件搜索(文件名)
**验收点**
* [ ] 上传→列表出现→预览/下载→删除→回收站恢复闭环
* [ ] 网络断开后能续传(至少同一次会话内)
---
## 4. M3 分享 / 审计 / 配额 / 管理后台(上线门槛)
### BE-Share
* [ ] 创建分享:有效期、提取码、权限(预览/下载)
* [ ] 分享访问页:`GET /share/{token}`
* [ ] 下载:`POST /share/{token}/download`(校验提取码后返回签名 URL
* [ ] 撤销分享:立即失效
* [ ] 分享访问审计ip/ua/time/count
### BE-Quota & RateLimit
* [ ] 用户配额:总容量、单文件大小、日上传/日下载
* [ ] 配额校验upload/init、complete、download/sign
* [ ] 限流:登录、绑定校园、成绩刷新、签名下载、分享访问
### BE-Audit
* [ ] audit_logs关键操作埋点upload_init/upload_complete/download_sign/share_create…
* [ ] 查询接口:按 user/action/time 过滤(管理员)
### Admin最小管理后台
* [ ] 用户管理:封禁/解封
* [ ] 配额配置:默认值 + 单用户覆盖(可选)
* [ ] OSS 配置bucket/STS 策略(至少可查看)
* [ ] 审计查询页
**验收点**
* [ ] 超配额时前后端提示一致且不可绕过
* [ ] 分享链接可用、可撤销、访问可审计
* [ ] 管理员能查到关键操作日志
---
## 5. M4 Campus BFF接 Rust API课表/成绩)
> 核心:**平台后端不让前端直连 Rust API**,统一做鉴权、缓存、熔断、错误码映射。
### BE-Campus 绑定与凭据
* [ ] `POST /campus/bind`:绑定校园账号(加密存储 credential / 或保存 rust session_token
* [ ] `POST /campus/unbind`:解绑并删除凭据
* [ ] 凭据加密密钥不入库env + KMS 可选)
* [ ] 绑定/查询限流(防封控)
### BE-Campus Rust API 网关层
* [ ] Rust API client超时、重试只读、熔断
* [ ] 健康检查:/healthz 探测 + 指标
* [ ] DTO 适配层Rust 返回字段变化不直接打爆前端
* [ ] 错误码映射Rust error → 平台 error code
### BE-Campus 缓存与降级
* [ ] campus_cache课表/成绩 TTL课表 12h成绩 24h
* [ ] 手动刷新冷却时间(成绩建议更长)
* [ ] Rust 不可用时返回缓存 + 标注更新时间
### FE-Campus
* [ ] 绑定页面(学号/密码或 token
* [ ] 课表周视图/日视图
* [ ] 成绩学期视图 + 列表
* [ ] “刷新”按钮(带冷却提示)
* [ ] “数据更新时间 / 当前为缓存”提示
**验收点**
* [ ] Rust API 挂了:仍能展示缓存且不白屏
* [ ] 频繁刷新会被限流并提示
---
## 6. M5 论坛/地图完善 + 监控告警 + 上线演练
### Forum按 Rust API 能力)
* [ ] 板块列表/帖子列表/详情/评论
* [ ] 发帖/评论(幂等键 Idempotency-Key
* [ ] 内容风控:频率限制 + 基础敏感词(最小)
* [ ] 举报入口(最小)
* [ ] 通知:回复/提及(站内通知)
### Map
* [ ] POI 展示:分类 + 搜索
* [ ] 地图 SDK 接入Leaflet/高德/腾讯择一)
* [ ] POI 缓存 7d + 更新策略
* [ ]可选POI 后台维护
### Observability上线前必须补
* [ ] 指标API 错误率、P95、Rust 成功率、OSS 上传失败率
* [ ] 日志:结构化 + request_id
* [ ] 告警Rust 健康异常、错误率激增、DB/Redis 异常
* [ ] 错误追踪Sentry 或同类(可选但强建议)
### 安全加固(上线前必做清单)
* [ ] CSP/安全头X-Frame-Options 等)
* [ ] 上传文件类型限制 + 文件名净化
* [ ] 权限回归测试:越权访问用例全覆盖
* [ ] Secrets 全部迁移到安全配置(不进仓库)
### 上线演练
* [ ] staging 环境全链路演练(含 OSS、Rust API
* [ ] 灰度发布流程(最小:可回滚)
* [ ] 数据库备份与恢复演练
* [ ] 压测(最少测下载签名/列表/校园查询)
**验收点**
* [ ] staging → prod 一键发布可回滚
* [ ] 关键告警触发能收到(邮件/IM 随便一种)
---
## 7. 你当前“前端已做一部分”的对齐清单(快速标记)
把你已经完成的模块在这里勾上,方便我后续给你拆“下一步最优先做什么”:
* [ ] 桌面图标布局
* [ ] 窗口拖拽/层级
* [ ] 应用打开/关闭/最小化
* [ ] 主题/壁纸
* [ ] 网盘 UI列表/上传面板/预览)
* [ ] 校园 UI课表/成绩/论坛/地图)
* [ ] 游戏应用容器
---
## 8. 最小上线 Checklist不做这些别上线
* [ ] 后端鉴权与资源隔离(不可只靠前端)
* [ ] OSS 长期密钥不下发前端(只给 STS/签名)
* [ ] 下载签名短期有效 + 审计
* [ ] 限流(登录/绑定/校园刷新/签名下载/分享访问)
* [ ] Rust API 超时/熔断/缓存降级
* [ ] 结构化日志 + request_id
* [ ] staging 环境演练 + 回滚方案