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

8.4 KiB
Raw Blame History

下面这份是工程级的 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 环境演练 + 回滚方案