Files
my_site/todo_list.md
yoyuzh d669738967 init
2026-02-27 14:29:05 +08:00

268 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
下面这份是**工程级**的 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 环境演练 + 回滚方案