# PrivyDrop 项目路线图

## 简介

- 目标：把文件/文本传输这件事做得轻盈、顺滑、可靠，且易于自托管。
- 现状快照：断点续传、分块与背压、跨浏览器（含 Safari/Firefox）、Docker 一键部署。

---

## 范围说明

- 范围：仅文件/文本传输（点对多），以房间为单位进行会话。

---

## 路线图

- P0 代码优化与瘦身

  - 架构收敛与边界清晰：传输（发送/接收）、WebRTC 封装、状态管理与 UI 分离；拆分过大文件，公共类型/常量下沉共享。
  - 冗余清理与精简：移除死代码与未用导出；合并重复工具与重复逻辑（封包/解包保留权威实现）。
  - 配置与命名统一：分块大小/批大小/背压阈值来自单一配置源，仅统一来源，不改既有行为。
  - 状态管理收敛：以 Zustand 为唯一状态源；自定义 hooks 负责订阅与意图触发，不承载业务逻辑。
  - 异步与错误路径简化：统一 Promise/事件用法与返回值；集中错误类型与边界。
  - 日志与调试（本批重点）：统一 logger（error/warn/info/debug + 开关），生产默认低噪；替换散落的 console/postLog，并在房间/会话/文件维度埋点一致。
  - 类型与构建健康度：收紧 TypeScript（小步），减少 any/隐式 any；保持 Lint/格式化一致。

- P0 最小测试集

  - 单元测试：分块读取/切片、嵌包解析、顺序落盘器的乱序/重复/尾块处理等核心边界。
  - 轻量集成：伪造数据通道验证“发送 → 接收 → 落盘”的最小闭环，覆盖背压等待与断点恢复路径。
  - 后端最小单测：房间与速率限制的关键契约。

- P1 错误体验与只读网络体检

  - 错误提示：用语清晰、可重试建议；显示发送/接收状态与失败简述。
  - 只读体检：展示连接状态、数据通道状态、发送缓冲、当前/平均速率、最近错误；仅展示，不做复杂探测。

- P1 文档与部署一致性
  - 快速上手与 Docker 自托管流程对齐；常见问题与排错路径补充；截图与术语口径统一。
  - 前端架构文档与实现同步（Zustand + 自定义 Hooks）。

---

## 完成定义（达成即止）

- P0 代码优化与瘦身

  - 模块边界清晰、目录与命名统一；重复实现合并，死代码清理完毕。
  - 分块/批/背压等配置项有单一来源，保持现有行为不变。
  - Zustand 统一为状态源；组件无业务副作用；自定义 hooks 角色明确。
  - 日志体系可按等级与开关控制，生产默认低噪；无散落调试输出。
  - 构建与 Lint 通过；类型告警明显减少。

- P0 最小测试集
  - 关键模块单测覆盖核心边界；存在一个最小集成用例完成“发送 → 接收 → 落盘”。

---

## 术语口径

- 发送/接收（Sender/Receiver）
- 房间（Room）
- 分块（Chunk）与背压（Backpressure）
- 断点续传（Resume）
- 数据通道（DataChannel）
- 落盘（OPFS/磁盘写入）

感谢关注与贡献！
