[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"doc-\u002Fzh-Hans\u002Fyizhan\u002Fdesign\u002FDESIGN-001-core-concepts\u002F":3},"\u003Ch1 id=\"design-001-core-concepts\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#design-001-core-concepts\">#\u003C\u002Fa> DESIGN-001 Core Concepts\u003C\u002Fh1>\n\u003Ch2 id=\"%E7%BB%88%E7%AB%AF-(terminal)\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#%E7%BB%88%E7%AB%AF-(terminal)\">#\u003C\u002Fa> 终端 (Terminal)\u003C\u002Fh2>\n\u003Cp>终端是驿站的核心实体，类比聊天软件中的&quot;设备&quot;概念。每个浏览器实例或设备是一个独立终端。\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>属性\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>terminal_id\u003C\u002Ftd>\n\u003Ctd>唯一标识（UUID）\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>account_id\u003C\u002Ftd>\n\u003Ctd>所属账号\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>name\u003C\u002Ftd>\n\u003Ctd>终端名称（用户自定义，如&quot;手机浏览器&quot;、“工作电脑”）\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>device_info\u003C\u002Ftd>\n\u003Ctd>设备信息（UA、OS 等）\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>permission\u003C\u002Ftd>\n\u003Ctd>权限等级：\u003Ccode>admin\u003C\u002Fcode> \u002F \u003Ccode>user\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>is_primary\u003C\u002Ftd>\n\u003Ctd>主终端标志（首个注册，固定 admin）\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>is_temporary\u003C\u002Ftd>\n\u003Ctd>浏览器终端默认 true，关闭\u002F断线后自动注销\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>status\u003C\u002Ftd>\n\u003Ctd>在线状态：\u003Ccode>online\u003C\u002Fcode> \u002F \u003Ccode>offline\u003C\u002Fcode> \u002F \u003Ccode>deregistered\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>created_at\u003C\u002Ftd>\n\u003Ctd>创建时间\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>\u003Cstrong>临时终端\u003C\u002Fstrong>：所有浏览器创建的终端（含主终端）默认为临时终端（\u003Ccode>is_temporary: true\u003C\u002Fcode>），WebSocket 断线后自动标记为 \u003Ccode>deregistered\u003C\u002Fcode>。重开浏览器且 localStorage 有 terminal_token → 恢复旧终端（标记 online）。若 token 丢失且账号无 admin → 自动创建新 admin。终端名称从 User-Agent 自动生成（如 “Chrome\u002FWindows”），可事后改名。\u003C\u002Fp>\n\u003Ch2 id=\"%E6%9D%83%E9%99%90%E6%A8%A1%E5%9E%8B\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#%E6%9D%83%E9%99%90%E6%A8%A1%E5%9E%8B\">#\u003C\u002Fa> 权限模型\u003C\u002Fh2>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>权限\u003C\u002Fth>\n\u003Cth>能力\u003C\u002Fth>\n\u003Cth>约束\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>admin\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>管理账号下所有终端（添加\u002F删除\u002F重命名）、修改其他终端权限\u003C\u002Ftd>\n\u003Ctd>每个账号至少保留一个 admin 终端（主终端）；主终端不可删除\u002F降级\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>user\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>文件传输、查看历史、创建群组、加入\u002F退出群组\u003C\u002Ftd>\n\u003Ctd>不能管理终端或修改权限\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>\u003Cstrong>主终端\u003C\u002Fstrong>：账号注册时自动创建的第一个终端，固定为 admin。主终端不可被删除，不可降级为 user。其他终端默认为 user，可由 admin 提升。所有终端（含 user）均可创建群组。\u003C\u002Fp>\n\u003Ch2 id=\"%E4%BC%A0%E8%BE%93%E6%A8%A1%E5%BC%8F\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#%E4%BC%A0%E8%BE%93%E6%A8%A1%E5%BC%8F\">#\u003C\u002Fa> 传输模式\u003C\u002Fh2>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>模式\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003Cth>适用场景\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>P2P 直传\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>WebRTC DataChannel，文件不经服务器\u003C\u002Ftd>\n\u003Ctd>同局域网或网络条件好时\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>中继传输\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>文件经服务器中转\u003C\u002Ftd>\n\u003Ctd>P2P 不可达时（NAT 穿透失败）\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>离线排队\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>文件暂存服务器，接收方上线后自动传输\u003C\u002Ftd>\n\u003Ctd>接收方离线时\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>传输协商流程：发送方发起 → 接收方在线？→ 是：尝试 P2P → 超时降级中继 \u002F 否：文件暂存服务器（24h TTL），上线后自动拉取。\u003C\u002Fp>\n\u003Cp>并发模型：同一对终端间串行传输，不同终端对可并行。\u003C\u002Fp>\n\u003Ch2 id=\"%E7%BE%A4%E7%BB%84\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#%E7%BE%A4%E7%BB%84\">#\u003C\u002Fa> 群组\u003C\u002Fh2>\n\u003Cp>群组是终端的集合，用于广播传输。任何终端均可创建群组，创建者自动成为群主。广播传输时逐个处理：在线成员立即传输，离线成员排队（24h TTL）。\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>属性\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>group_id\u003C\u002Ftd>\n\u003Ctd>唯一标识\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>account_id\u003C\u002Ftd>\n\u003Ctd>所属账号\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>name\u003C\u002Ftd>\n\u003Ctd>群组名称\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>members\u003C\u002Ftd>\n\u003Ctd>终端列表\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>created_by\u003C\u002Ftd>\n\u003Ctd>创建者终端\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>created_at\u003C\u002Ftd>\n\u003Ctd>创建时间\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n",1786290225985]