Files
PrivyDrop/docs/ai-playbook/code-map.zh-CN.md
T

16 KiB
Raw Blame History

PrivyDrop AI Playbook — 代码地图(中文)

本地图以“快速定位”为目标,仅给出目录与关键入口文件的简要说明,不包含“常改动点/影响范围”。

前端(Next.jsTypeScript

  • frontend/app/ — App Router 路由与页面。

    • frontend/app/[lang]/page.tsx — 主页入口,生成元数据和 SEO 结构化数据(JsonLd),支持多语言 canonical 链接。
    • frontend/app/[lang]/*/page.tsx — 静态页面:features(功能特性)、about(关于)、faq(常见问题)、help(帮助)、terms(服务条款)、privacy(隐私政策),均包含多语言 SEO 元数据生成。
    • frontend/app/[lang]/blog/page.tsx — 博客列表页,展示多语言文章列表。
    • frontend/app/[lang]/blog/[slug]/page.tsx — 博客文章详情页,支持 MDX 渲染、目录生成、面包屑导航和 JSON-LD 结构化数据。
    • frontend/app/[lang]/blog/tag/[tag]/page.tsx — 博客标签页,按标签分类展示文章。
    • frontend/app/[lang]/layout.tsx — 全局布局与 Provider 注入,包含 ThemeProvider、Header/Footer,生成组织架构和网站结构化数据。
    • frontend/app/[lang]/HomeClient.tsx — 主客户端组件,组织页面结构(Hero 区域、ClipboardApp、HowItWorks、视频演示、系统架构图、功能特性、FAQ),支持多平台视频链接(YouTube/B 站)。
    • frontend/app/api/health/route.ts — 基础健康检查 API。
    • frontend/app/api/health/detailed/route.ts — 详细健康检查 API。
    • frontend/app/sitemap.ts — 站点地图生成,支持多语言 URL 和博客文章动态收录。
    • frontend/middleware.ts — i18n 与路由中间件。
    • frontend/app/config/environment.ts — 运行时/环境配置(ICE、端点等)。
    • frontend/app/config/api.ts — 后端 API 交互封装。
  • frontend/components/ — UI,包括协调器与子组件。

    • frontend/components/ClipboardApp.tsx — 顶层 UI 协调器,集成 5 个业务 hooksuseWebRTCConnection/useFileTransferHandler/useRoomManager/usePageSetup/useClipboardAppMessages),处理全局拖拽事件和双标签页(发送/接收)管理。
      • 体验增强:切到接收端(retrieve)且满足“未在房间、URL 无 roomId、输入为空、存在缓存ID”时自动填充并加入房间(读取 frontend/lib/roomIdCache.ts)。
      • 连接反馈:集成 useConnectionFeedbackfrontend/hooks/useConnectionFeedback.ts),桥接 WebRTC 连接态到 UI 文案,含协商中提示、8s 慢连接提示、断开/重连/恢复提示(前台可见时提示)。慢提示统一复用 frontend/utils/useOneShotSlowHint.ts
  • frontend/hooks/ — 业务中枢 Hooks。

    • useRoomManager.ts
      • 入房流程:join_inProgress(立即)、join_slow3s,复用 useOneShotSlowHint)、join_timeout(15s);join 成功/失败均清理定时器。
      • 等效成功信号:在 joinResponse 之前若收到 ready/recipient-ready/offer,提前判定入房成功并清理 3s/15s 定时器。
      • 其他:房间状态文案、分享链接生成、离开房间、输入校验(750ms 防抖)。
    • useConnectionFeedback.ts
      • 状态归一化:new/connectingnegotiatingfailed/closeddisconnected(复用 utils/rtcPhase.ts)。
      • 协商慢提示:8s 定时器(rtc_slow),单次协商仅提示一次;若在后台到时则挂起,回到前台且仍协商时补发一次(复用 useOneShotSlowHint)。
      • 一次性提示:首次 connectedrtc_connected)仅提示一次;断开前台重连(rtc_reconnecting)与恢复(rtc_restored)。
  • i18n 文案与类型

    • 文案定义:frontend/constants/messages/*.{ts}(已补齐 zh/en/ja/es/de/fr/ko)。
    • 类型定义:frontend/types/messages.tsClipboardApp 下包含 join_*rtc_* 文案键)。
    • frontend/components/ClipboardApp/SendTabPanel.tsx — 发送面板,集成富文本编辑器、文件上传、房间 ID 生成(支持 4 位数字/UUID 两种模式)、分享链接生成。
      • 体验增强:点击“使用缓存ID”将立即触发加入房间(sender 侧),减少一次手动点击。
    • frontend/components/ClipboardApp/RetrieveTabPanel.tsx — 接收面板,处理房间加入、文件接收、目录选择(File System Access API)、富文本内容显示。
    • frontend/components/ClipboardApp/FileListDisplay.tsx — 文件列表显示组件,支持文件/文件夹分组显示、进度跟踪、多浏览器下载策略(Chrome 自动下载/其他浏览器手动保存)、下载计数统计。
    • frontend/components/ClipboardApp/FullScreenDropZone.tsx — 全屏拖拽提示组件,文件拖拽时的视觉反馈。
    • frontend/components/ClipboardApp/* — 其他子组件:FileUploadHandler(文件上传处理)、ShareCard(二维码分享)、TransferProgress(进度条)、CachedIdActionButton(缓存 ID 操作)、FileTransferButton(文件传输按钮)。
    • frontend/components/Editor/ — 富文本编辑器模块,包含 RichTextEditor 主编辑器、工具栏组件(BasicFormatTools/FontTools/AlignmentTools/InsertTools)、SelectMenu 下拉选择、类型定义和编辑器 hooks。
    • frontend/components/blog/ — 博客相关组件,包含 TableOfContents(支持中文目录生成和滚动跟踪)、Mermaid 图表渲染、MDXComponents、ArticleListItem 文章列表。
    • frontend/components/common/ — 通用组件,包含 clipboard_btn(读写剪贴板按钮)、AutoPopupDialog(自动弹出对话框)、LazyLoadWrapper(懒加载包装器)、YouTubePlayerYouTube 播放器)。
    • frontend/components/web/ — 网站页面组件,包含 Header(响应式导航和多语言支持)、Footer(版权和语言链接)、FAQSection(可配置 FAQ 展示)、HowItWorks(步骤说明和视频演示)、SystemDiagram(系统架构图)、KeyFeatures(功能特性展示)、theme-provider 主题提供者。
      • frontend/components/web/ThemeToggle.tsx — 主题切换按钮(单按钮 Light/Dark 切换),集成于 Header(桌面与移动)。
    • frontend/components/seo/JsonLd.tsx — SEO 结构化数据组件,支持多类型 JSON-LD 数据生成。
    • frontend/components/LanguageSwitcher.tsx — 语言切换器。
    • frontend/components/ui/* — 基础 UI 原子组件(基于 Radix UI 和 shadcn/ui),包含 Button(多变体按钮)、Accordion(手风琴)、Dialog(模态对话框)、Card(卡片)、Tooltip(工具提示)、Select、Input、Textarea、Checkbox、DropdownMenu、Toast 通知系统和 AnimatedButton 动画按钮。
  • frontend/hooks/ — 业务逻辑中枢(React Hooks)。

    • frontend/hooks/useWebRTCConnection.ts — WebRTC 生命周期与编排 API。
    • frontend/hooks/useRoomManager.ts — 房间创建/加入/校验与 UI 状态,支持缓存 ID 重连(≥8 字符自动发送 initiator-online)。
    • frontend/hooks/useFileTransferHandler.ts — 文件/文本负载编排与回调,使用 getState() 修复闭包问题,支持 JSZip 文件夹下载。
    • frontend/hooks/useClipboardActions.ts — 剪贴板操作与状态管理,支持现代 API 和 document.execCommand 降级,处理 HTML/富文本粘贴。
    • frontend/hooks/useClipboardAppMessages.ts — 应用消息处理(shareMessage/retrieveMessage),4 秒自动消失机制。
    • frontend/hooks/useLocale.ts — 国际化语言切换,基于 pathname 解析。
    • frontend/hooks/usePageSetup.ts — 页面配置与 SEO 设置,处理 URL 参数 roomId 自动加入和引荐来源追踪。
    • frontend/hooks/useRichTextToPlainText.ts — 富文本转纯文本工具,处理块级元素换行和文本节点包装。
  • frontend/lib/ — 核心库与工具。

    • WebRTC 基础与角色
      • frontend/lib/webrtc_base.ts — WebRTC 基础类,提供 Socket.IO 信令、RTCPeerConnection 管理、ICE 候选者队列、双重断开检测重连机制、唤醒锁管理、数据通道发送重试(5 次递增间隔)、优雅断开跟踪(gracefullyDisconnectedPeers Set)和多格式数据类型兼容性支持(ArrayBuffer/Blob/Uint8Array/TypedArray)。加入房间(joinRoom)采用 15 秒超时,并在 join 未返回时启用“等效成功信号”提前判定成功:Initiator 收到 ready/recipient-readyRecipient 收到 offer;触发后立即设置 inRoom 并清理监听/定时器,降低弱网下误报。
      • frontend/lib/webrtc_Initiator.ts — 发起方实现,处理ready/recipient-ready事件,创建 RTCPeerConnection 和主动式 DataChannel,发送 offer,处理 answer 响应,支持 256KB 缓冲阈值配置。
      • frontend/lib/webrtc_Recipient.ts — 接收方实现,处理offer事件,创建 RTCPeerConnection 和响应式 DataChannelondatachannel),生成并发送 answer,处理initiator-online重连信号和现有连接清理。
      • frontend/lib/webrtcService.ts — WebRTC 服务单例封装(跨路由常驻),管理 sender/receiver 实例,提供统一业务接口,处理连接状态变更、数据广播、文件请求和连接断开清理。
    • 发送(sender
      • frontend/lib/fileSender.ts — 发送端向后兼容包装层,内部使用 FileTransferOrchestrator 提供统一服务。
      • frontend/lib/transfer/FileTransferOrchestrator.ts — 发送端主编排器,集成所有组件管理文件传输生命周期。
      • frontend/lib/transfer/StreamingFileReader.ts — 高性能流式文件读取器,采用 32MB 批次+64KB 网络块的双层缓冲架构。
      • frontend/lib/transfer/NetworkTransmitter.ts — 网络传输器,使用 WebRTC 原生背压控制,支持嵌入元数据分片发送。
      • frontend/lib/transfer/StateManager.ts — 状态管理中心,跟踪 peer 状态、待发送文件、文件夹元数据。
      • frontend/lib/transfer/ProgressTracker.ts — 进度跟踪器,处理文件/文件夹进度计算、速度统计和回调触发。
      • frontend/lib/transfer/MessageHandler.ts — 消息处理器,负责 WebRTC 消息路由(fileRequest/fileReceiveComplete/folderReceiveComplete)。
      • frontend/lib/transfer/TransferConfig.ts — 传输配置管理,定义文件读取 4MB 分片、32MB 批次、64KB 网络发送块。
    • 接收(receiver
      • frontend/lib/fileReceiver.ts — 接收端向后兼容包装层,内部使用 FileReceiveOrchestrator 提供统一服务。
      • frontend/lib/receive/FileReceiveOrchestrator.ts — 接收端主编排器,集成所有组件管理文件接收生命周期,支持断点续传和磁盘流式写入。
      • frontend/lib/receive/ReceptionStateManager.ts — 状态管理中心,管理文件元数据、活跃接收状态、文件夹进度、保存类型配置。
      • frontend/lib/receive/ChunkProcessor.ts — 分片处理器,处理多种数据格式转换、嵌入元数据解析、分片验证和索引映射。
      • frontend/lib/receive/StreamingFileWriter.ts — 流式文件写入器,包含 SequencedDiskWriter 严格顺序写入机制,支持大文件磁盘流式写入。
      • frontend/lib/receive/FileAssembler.ts — 内存文件组装器,处理小块文件的内存重组、完整性校验和文件对象创建。
      • frontend/lib/receive/MessageProcessor.ts — 消息处理器,负责 WebRTC 消息路由(fileMeta/stringMetadata/fileRequest/folderReceiveComplete)。
      • frontend/lib/receive/ProgressReporter.ts — 进度报告器,处理文件/文件夹进度计算、速度统计和节流回调。
      • frontend/lib/receive/ReceptionConfig.ts — 接收配置管理,定义大文件阈值 1GB、64KB 分片、缓冲区大小和调试开关。
    • 工具与辅助
      • frontend/lib/fileReceiver.tsfrontend/lib/fileUtils.tsfrontend/lib/speedCalculator.tsfrontend/lib/utils.ts — 基础工具。
      • frontend/lib/roomIdCache.ts — 房间 ID 缓存管理。
      • frontend/lib/wakeLockManager.tsx — 屏幕唤醒锁管理(移动端优化)。
      • frontend/lib/utils/ChunkRangeCalculator.ts — 文件分片范围计算。
      • frontend/lib/browserUtils.ts — 浏览器兼容性工具。
      • frontend/lib/tracking.ts — 用户行为追踪。
      • frontend/lib/dictionary.tsfrontend/lib/mdx-config.tsfrontend/lib/blog.ts — i18n/内容与 SEO 辅助。
  • frontend/stores/ — 共享应用状态(Zustand)。

    • frontend/stores/fileTransferStore.ts — 传输进度/状态的唯一事实来源(Zustand 单例,跨路由保持)。
  • frontend/types/frontend/constants/ — 类型定义与常量。

    • frontend/types/global.d.ts — 全局类型定义(lodash 模块、FileSystemDirectoryHandle 接口)。
    • frontend/types/messages.ts — 多语言消息与 UI 内容类型定义(Meta、Text、Messages 等国际化结构)。
    • frontend/types/webrtc.ts — WebRTC 传输协议类型(文件元数据、分片结构、状态机接口)。
    • frontend/constants/messages/ — 多语言消息文件(7 种语言:en、zh、de、es、fr、ja、ko)。
    • frontend/constants/i18n-config.ts — 国际化配置(默认语言、支持语言列表、显示名称映射)。
  • frontend/content/ — 内容资源。

    • frontend/content/blog/ — 博客文章(MDX 格式,多语言),包含开源发布、WebRTC 文件传输、断点续传等主题文章。
    • frontend/lib/blog.ts — 博客工具函数,支持多语言文章读取、frontmatter 解析、标签提取和内容验证。
  • 配置与构建

    • frontend/package.jsonfrontend/tsconfig.jsonfrontend/tailwind.config.ts — 项目配置。
    • frontend/next.config.mjsfrontend/postcss.config.mjsfrontend/components.json — Next.js 与组件配置。
    • frontend/.eslintrc.json — 代码检查配置。
    • frontend/Dockerfilefrontend/health-check.js — Docker 部署与健康检查。

后端(ExpressSocket.IORedis

  • backend/src/server.ts — 启动入口:Express + Socket.IO 初始化与监听。

  • backend/src/config/env.tsbackend/src/config/server.ts — 环境与服务配置。

    • backend/src/config/env.ts — 环境变量配置与验证,包含端口、CORS、Redis 连接设置,支持开发/生产环境自动加载对应.env 文件。
    • backend/src/config/server.ts — CORS 配置,区分开发/生产环境,支持多域名配置和 LAN 地址正则匹配。
  • backend/src/routes/api.ts — REST:房间创建/校验、追踪、调试日志。

  • backend/src/routes/health.ts — 健康检查。

  • backend/src/socket/handlers.ts — 信令事件:joininitiator-onlinerecipient-readyofferanswerice-candidate

  • backend/src/services/redis.ts — Redis 客户端。

  • backend/src/services/room.ts — 房间/成员存储与辅助。

  • backend/src/services/rateLimit.ts — 基于 Redis 有序集的 IP 限流。

  • backend/src/types/room.tsbackend/src/types/socket.ts — 类型定义与接口。

    • backend/src/types/socket.ts — Socket.IO 相关类型,包含 JoinData 房间加入数据、SignalingData WebRTC 信令数据(offer/answer/candidate)、InitiatorData 发起方数据、RecipientData 接收方数据。
    • backend/src/types/room.ts — 房间相关类型,包含 RoomInfo 房间信息(创建时间)、ReferrerTrack 来源追踪数据、LogMessage 日志消息结构。
  • 后端配置与脚本

    • backend/package.jsonbackend/tsconfig.json — 项目配置。
    • backend/Dockerfilebackend/.dockerignore — Docker 配置。
    • backend/health-check.js — 健康检查脚本。
    • backend/scripts/export-tracking-data.js — 数据导出脚本。

部署与运维

  • 根目录配置

    • deploy.sh — Docker 一键部署入口(环境检测、配置生成、证书自动化、启动/清理)。
    • docker-compose.yml — Docker Compose 编排(frontend/backend/redis/nginx/turn)。
    • .env — Docker 部署环境变量(由脚本生成/维护)。
  • Docker 基础设施

    • docker/nginx/ — Nginx 反向代理配置。
    • docker/scripts/ — 部署相关脚本(环境检测、配置生成、部署测试)。
    • docker/ssl/ — SSL 证书目录。
    • docker/coturn/ — TURN 服务器配置。
    • docker/letsencrypt-www/ — Let's Encrypt 配置。
  • 构建与文档

    • build/ — 请忽略这个临时目录。
    • test-health-apis.sh — 健康 API 测试脚本。
    • README.mdREADME.zh-CN.mdROADMAP.mdROADMAP.zh-CN.md — 项目文档。