本页用时序图展示数据如何在客户端与各服务之间流动。所有图都遵循同一规则:客户端只碰 UM / ISS / COL;控制器(ISS)向 AG/DS/UM 扇出;COL 调 DS 做反归一化。

登录

列出文章(可见性 + 用户名补全)

打开并阅读文章(正文 + 音频)

上传并处理文章(任务 + SSE)

这是最核心的流程:控制器创建任务并通过 SSE 推送进度,过程中调用 Agent 计算、调用 data_server 持久化。第一次接触事件流,可先阅读 SSE 与流式进度

视频上传(多了转写步骤,之后同上)

重新生成单句讲解

编辑文章(先预览 diff,再最小化重算)

POST /api/articles/{id}/diff 只做预览,不改动数据;真正的写入发生在 PATCH .../content。data_server 也提供了非破坏性的 diff-preview 端点。

把句子加入收藏(快照)

收藏是独立的限界上下文,物理上是 data_server 独占的 PostgreSQL 库 rakull_collection(与 rakull_data 物理隔离、不可跨库 JOIN):客户端直连 collection_server(不经控制器),但它已是无状态薄网关——本地解码 JWT 做鉴权和参数校验后,带着用户 Bearer 与一张短期服务断言(X-Rakull-Service-Assertionactor_user_id 为当前用户)转发到 data_server 内部接口。需要 front/back 快照时,由 data_server同进程内分别查两个库(句子在 rakull_data、条目在 rakull_collection),不再发生第二次跨服务 HTTP。