本页用时序图展示数据如何在客户端与各服务之间流动。所有图都遵循同一规则:客户端只碰 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-Assertion,actor_user_id 为当前用户)转发到 data_server 内部接口。需要 front/back 快照时,由 data_server 在同进程内分别查两个库(句子在 rakull_data、条目在 rakull_collection),不再发生第二次跨服务 HTTP。