原型与数据模型¶
产品对象与模式¶
OneTHU 的原型以校园事务为基础,将同一业务实体呈现在列表、搜索、日程、白板和智能体工具中。课程、作业、通知和文件保留来源标识;展示组件消费规范化数据,页面路由保存足够的实体上下文。
| 模式 | 交互组织 | 数据策略 |
|---|---|---|
| 极简 | 固定首页与五个主要入口、搜索/OH | 保留既有账号与配置,隐藏高阶工作区界面 |
| 实用 | 日常事务、主要功能区与简化设置 | 按该模式暴露服务与交互 |
| 完整 | 白板、标签页、OneGO、组织及扩展 | 提供可组合的工作空间 |
模式保存在应用状态中;切换主要改变展示及能力开放范围。接收、分享和高级工具还应核验模式、隐私授权与账号,避免隐藏入口仍执行不适用的操作。免责声明中的云盘/智能体授权独立持久化,撤销立即影响在途执行。实现见 experienceMode 与 privacyConsent。
页面实例、标签页与工作区¶
ExplorerTab 持有 id、页面、参数、标题、所属工作区和访问时间。首页使用固定标识;其他标签各有独立路由上下文。普通导航可以复用已有实例,复制操作显式创建第二个实例。两个课程标签的内部选课状态由各自上下文维护。
ExplorerWorkspace 保存一组标签页快照及可选的颜色、图标和活跃归属。设置、插件和 OH 管理使用高于标签内容的浮层入口。OneGO 展示收藏的页面与工作区,OneShot 提供主要功能快捷入口;这些 UI 名称分别对应不同的数据对象。
白板内部打开作业或寻迹时,最终仍进入统一的标签内容壳。内容留白、滚动容器和安全区由页面边界承担,组件入口只传实体参数。源码:explorer.ts。
原子与深链¶
原子引用将可收藏、搜索、拖动和分享的对象连接到统一解析器。当前注册表包括页面、组件、实体与标签页等引用。AtomView 将引用解析为标题、图标、来源、打开函数和可选实时组件。
实体引用包含定位所需的业务标识与展示元数据,服务客户端仍负责读取当前数据。网络学堂课程 ID、雨课堂 classroom ID、通知 ID 和附件引用各有语义。部分旧实体 key 使用分隔编码,标签参数经排序和编码保持稳定。
搜索既有静态入口,也使用已见数据缓存;具体业务检索按对应服务发起。原子注册表不会因输入任意搜索词就自动枚举全部校内服务。源码:atoms.tsx、favorites.ts。
白板文档与几何¶
BoardDoc 包含版本、白板集合、活动板和排序信息。每块 Board 区分系统板与用户板,并可按 portrait / landscape 保存布局。BoardItem 包含组件规格、网格 cell、可选像素 rect 和折叠、固定、尺寸等元数据。
WidgetSpec(业务内容)
+ BoardItem(身份、尺寸、状态)
+ Board(页面与朝向)
= 可恢复的白板文档
自由图层消费像素矩形;网格契约仍用于插件/OH 与旧数据迁移。坐标变换在模型层同步,减少两份布局各自演化。基准列数、宽屏换算和参考画布在 boardCore.ts 中声明;视口变化按同一基准解释布局。
手势进行时只更新临时几何,松手提交文档。手机编辑开关决定是否允许改变几何;正常浏览保留滚动和点击。撤销与恢复默认分别面向历史操作和模板文档。尺寸拟合应识别用户手动尺寸与自动内容拟合的差异。
源码:boardCore.ts、boardEdit.ts、boardHistory.ts、FreeBoard.tsx。
暂存、分享与导入¶
暂存箱保存文本、原子引用和文件等内容。拖动需要区分“移动来源对象”和“已被目标接收”:目标提交成功后,该手势应消费一次投放,来源几何不再重复落盘。点击与拖动阈值、浮钮位置、投放提示属于交互状态;内容持久化归属暂存模型。
分享将受支持的内容上传到已授权的在线存储,再用短口令取回。短口令引用、文件权限与原实体是否仍可访问分别校验。导入创建目标内容并保留当前箱;外部文本、附件和技能说明作为资料处理。
NFC 当前保留实验能力与可用性提示,口令为更稳定的传递方式。支持对象和限制见 暂存与组织指南、OH 应用服务。源码:vault.ts、vaultShare.ts、vaultDrag.ts。
数据归属与持久化¶
| 数据 | 存储/权威 | 同步或暴露方式 |
|---|---|---|
| 学校会话、指纹、信任因子 | 设备私有会话存储 | 原生/daemon 私有交接,公开工具只给状态 |
| 页面、工作区、白板偏好 | GUI 文档与本地状态 | 通过应用保存/同步流程恢复 |
| Learn 枚举资源 | 当前账号资源表 | 公开 resourceRef,内部保留认证地址 |
| 日程、邮箱/日历相关配置 | 当前宿主的版本化账号文档 | 已安装 daemon 的桌面共享读取/写入 |
| 常驻任务与执行账本 | 当前任务管理器 | 安装/卸载交接,账号与批准范围核验 |
| 个人名片、组织、好友索引 | 归属确认的本地与远端数据 | 云盘/GitLab 授权与版本冲突处理 |
| 模型与 IM 配置 | 各账号/设备私有配置 | 状态接口投影公开字段 |
Windows 的文件 ACL、Unix 的私有权限与 profile 锁保护运行时数据;它们不等价于所有内容都做了应用层加密。SDK 的部分模型配置保存在私有本地存储中,调用方需要按其敏感程度管理设备和备份。
共享数据与合并¶
桌面已安装后台时,日程和相关账号文档通过 sharedCalendar.ts 与私有 desktop.data* 接口读取同一份权威数据。写入带内容版本,失败保留冲突与所有者信息。未安装后台或移动端使用应用存储;安装和卸载负责迁移及任务交接。
可合并的修改优先保留双方内容;互斥的个人名片或组织配置需要用户明确选择。远端成员权限、云盘资料库归属和当前账号必须同时成立。源文件引用能够定位资料,实际下载仍由远端权限决定。
组织索引与组织成员、项目、公告及文件资源有不同的生命周期。创建本地组织索引与完成远端共享授权分别记录;真实双账号验收仍需对应环境。现行行为见 共享与组织。
失败后的保留范围¶
网络超时可保留已展示的缓存,并明确其来源与更新时间;已失效的会话或被拒绝的权限不能以缓存伪装为新结果。账号切换撤销原账号请求及后续写入,视图刷新后再显示新账号数据。上传、发送与预约结果未知时,先查询远端结果;本地取消只能防止后续提交。