跳转至

原型与数据模型

中文 · English · 系统总览

产品对象与模式

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* 接口读取同一份权威数据。写入带内容版本,失败保留冲突与所有者信息。未安装后台或移动端使用应用存储;安装和卸载负责迁移及任务交接。

可合并的修改优先保留双方内容;互斥的个人名片或组织配置需要用户明确选择。远端成员权限、云盘资料库归属和当前账号必须同时成立。源文件引用能够定位资料,实际下载仍由远端权限决定。

组织索引与组织成员、项目、公告及文件资源有不同的生命周期。创建本地组织索引与完成远端共享授权分别记录;真实双账号验收仍需对应环境。现行行为见 共享与组织。

失败后的保留范围

网络超时可保留已展示的缓存,并明确其来源与更新时间;已失效的会话或被拒绝的权限不能以缓存伪装为新结果。账号切换撤销原账号请求及后续写入,视图刷新后再显示新账号数据。上传、发送与预约结果未知时,先查询远端结果;本地取消只能防止后续提交。