feat(gateway): 面 1 补齐 —— 消息读取面 toolCalls[](工具回看)
前提由 FV2 提供(图自 v0.77 起带每路 turnId、每路各落一行)。本片:
- 迁移 0023:flow_graphs 加「按路查询键」(写入时回填图的 TurnID),老行按缺席处理
- GET /api/v1/sessions/{id}/messages 加**可选** toolCalls[],形状严格照 Docs/api-client.md
v0.76 ① 已登记的:{name, status(ok|error|unknown), durationMs, argsSummary, resultSummary}
- 🔴 图取不到 ⇒ **字段整体缺席**(绝不回空数组冒充「没调过工具」)
- 一条批量 SQL(按页内 turnId 集合),禁 N+1;单条 ≤20 个工具、resultSummary ≤500 字符(常量+依据)
- 只放图里已有的、已脱敏内容,不放宽脱敏通道
This commit is contained in:
1 parent
99a644d545
commit
c907a34510
10 files changed
+1429
-16
No files matched your search
@@ -317,14 +317,17 @@ type FlowGraphSource interface {
|
||||
|
||||
// FlowGraphStore 是**已落盘轮次图**的只读出口(契约 v0.73 的
|
||||
// `GET /api/v1/admin/flow/graph` 的 `?turnId=` 与 `turns[]`;design/19 §4 的 P3
|
||||
// 「多轮历史回放」)。生产实现是 `internal/runtime/flowgraph` 的 `*SQLStore`,
|
||||
// 组合根把**同一个**句柄交给发布器(写入面:EndRound 每轮落一条)与本查询面。
|
||||
// 「多轮历史回放」;**v0.76 ① 登记的工具回看面已由本包的 `GraphsByTurnID` 接上**
|
||||
// (版本号由主会话在 `Docs/api-client.md` 统一登记))。生产实现是
|
||||
// `internal/runtime/flowgraph` 的 `*SQLStore`,组合根把**同一个**句柄交给
|
||||
// 发布器(写入面:EndRound 每路落一条)与本查询面(管理面板 + 消息读取面)。
|
||||
//
|
||||
// 它刻意只声明三个**读**方法:写入(RecordRound)与保留期清扫(Sweep)是发布器与
|
||||
// 组合根的职责,管理查询面拿不到、也不该拿到它们(最小权限)。
|
||||
// 它刻意只声明四个**读**方法:写入(RecordRound)与保留期清扫(Sweep)是发布器与
|
||||
// 组合根的职责,查询面拿不到、也不该拿到它们(最小权限)。
|
||||
//
|
||||
// 为 nil 时端点回退到**只有内存**的行为(v0.71 口径):`turns[]` 为空、`?turnId=`
|
||||
// 只能命中内存里那一轮。内存与落盘**都没接线**时才回 500 `flow_unavailable`。
|
||||
// 为 nil 时管理端点回退到**只有内存**的行为(v0.71 口径):`turns[]` 为空、`?turnId=`
|
||||
// 只能命中内存里那一轮;消息读取面则整体失去工具回看面(`toolCalls` 缺席,正文不受
|
||||
// 影响)。内存与落盘**都没接线**时才回 500 `flow_unavailable`。
|
||||
type FlowGraphStore interface {
|
||||
// Graph 按 (sessionID, turnID) 取回一轮的图;该轮不存在时返回 (nil, nil)。
|
||||
Graph(ctx context.Context, sessionID, turnID string) (*trace.FlowGraph, error)
|
||||
@@ -332,4 +335,16 @@ type FlowGraphStore interface {
|
||||
Latest(ctx context.Context, sessionID string) (*trace.FlowGraph, error)
|
||||
// Turns 返回该会话已落盘轮次的摘要(最新在前),供面板选历史轮。
|
||||
Turns(ctx context.Context, sessionID string, limit int) ([]flowgraph.Turn, error)
|
||||
// GraphsByTurnID 按**路标识**(`chat_messages.turn_id`,迁移 0018)批量取图:
|
||||
// 返回 `路标识 → 该路的图` 的映射,**取不到的标识不出现在映射里**。
|
||||
//
|
||||
// 它是消息读取面「工具回看面」(契约 v0.76 ① 的 `toolCalls[]`;切片 CODE-TC)
|
||||
// 的读侧入口,补的正是 v0.76 登记的那块缺口:`Graph` 按**图 id**取(`turn_id`
|
||||
// 列),而消息面手里只有**路标识**(`lane_turn_id` 列,迁移 0023)—— 两者不同源,
|
||||
// 因此必须有这个按路查的入口。一页消息的标识集合**一次查完**,调用方绝不按消息
|
||||
// 逐条查(禁 N+1)。
|
||||
//
|
||||
// 查询失败如实上抛(调用方据此让回看面缺席并记 WARN);**取不到不是错误**,
|
||||
// 缺席天然落在「映射里没有这个键」上。
|
||||
GraphsByTurnID(ctx context.Context, sessionID string, laneTurnIDs []string) (map[string]*trace.FlowGraph, error)
|
||||
}
|
||||
Reference in new issue
Block a user