fix: synchronize graph review selection and attention radii
Share review history selection between overview and graph while preserving explicit navigation and stale-response guards. Return attention for the selected review scope and interval, and align spiral events and time with that review. Normalize radii from message rates, including partial turns, without lifting quiet turns toward peaks. Preserve one continuous helix, uniform time height, round turn sections, and smooth transitions; equal densities retain equal radii. Document current-message and hourly-bucket limitations. Validation: 51 focused unit tests, 2 production IPC tests, Electron DOM and geometry checks, Node/Agent/Web typecheck, targeted ESLint, and diff checks passed. Release note: Story graphs now offer synchronized review history selection, and spiral radii reflect recorded message density within the selected review.
This commit is contained in:
@@ -4,6 +4,14 @@
|
||||
|
||||
当前记录以已验证生产行为为准。监督者尚未覆盖全部 user stories。
|
||||
|
||||
## 2026-10-04 图谱历史选择与螺旋密度
|
||||
|
||||
图谱左上角增加与工作回顾共用的历史选择,默认最新结果,保留显式结果、故事、经验导航及请求代际检查。空图谱与失败状态也保留选择入口。交互规则见 [UI 设计](./ui-design.md#故事线图谱)。
|
||||
|
||||
半径不变的直接原因是生产 UI 按 `resultId` 请求图谱,而该数据库分支没有返回 `attention`,只有聚合图谱分支返回。结果级分支现按保存的范围和时间区间统计当前消息;螺旋不再用范围内全部故事的跨度代替回顾区间。模型按每小时消息数归一化,修正边界小时桶、末尾半圈和短区间比例,移除把安静圈半径向峰值抬高的传播步骤。连续曲线、圆形圈段和余弦过渡保留;相同密度不制造半径差异。口径与限制见 [3D 密度规则](../story-graph/3d-concept.md)。
|
||||
|
||||
验证:模型、工作区、真实 SQLite 时间线与历史回归共 51 项通过;`ipc.test.ts -t 'collects supervision within the exact UI timeRange'` 的 2 项通过,覆盖 global/projects 结果图谱的精确区间。设置 `GOODBUDDY_SUPERVISOR_SPIRAL=1` 运行 `tests/supervisor-layout.electron.test.ts` 通过:检查实际 Three.js 曲线的 1,401 个采样点、均匀高度、非均匀消息密度的半径差、结果事件过滤,以及 1440px 浅色、390px 深色布局和历史选择同步,未生成截图。Electron 使用模拟 API 数据,SQLite 与 IPC 另用隔离数据库验证,没有读取生产用户库或调用付费模型。Node/Agent/Web 类型检查、定向 ESLint 和 `git diff --check` 通过;未运行全量测试,未提交或推送。本次修改不涉及 Agent 或远程 Runtime 执行路径。
|
||||
|
||||
## 2026-10-04 回顾初始化阻塞修复
|
||||
|
||||
对应 FR-S4、FR-S6、FR-S10、US-S12、US-S26、US-S27。原全局七天回顾在 Main 的一个 `BEGIN IMMEDIATE` 内扫描 25 页来源,首次 Electron 复现初始化 16.208 秒,IPC 等待 16.221 秒,阻塞发生在模型调用前。初始化现由现有 Worker 入口的独立连接执行,单次扫描后按 200 条写入;取消、未完成清单重建及发布事务的合同见[调度与存储](./review-scheduling-design.md#已接入的调度与存储)。继续前的全清单版本检查同样移出 Main;单批片段读取约 2 ms,保留原路径。候选、摘要和背景复用既有只读查询 Worker。
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
## 5. 展示与使用
|
||||
|
||||
- 故事线图谱新增 3D 视图,与现有平铺视图并列,几何、时间尺度、聚合规则沿用 [3D 概念](../story-graph/3d-concept.md);Three.js 仅在打开 3D 视图时加载,WebGL 不可用时使用平铺视图。
|
||||
- 结果级图谱与聚合图谱都返回 `attention`。结果级查询按该结果保存的范围及时间区间统计当前消息,螺旋使用同一时间窗口;故事成员与结果事件 ID 求交后绘制,不截断结果事件数组。故事归属是当前记录,重新提取后已失去当前归属的历史事件仍可在平铺视图和事件列表查看,不补造历史故事成员。
|
||||
- MCP 增加按故事、按经验查询;经验返回时附“自动归纳 / 用户编辑”标记和依据。
|
||||
- 心跳建议增加“故事长期无进展”和“已有经验可能适用于当前故事”。两者都由规则选出:前者按设置的天数判断,只提示不改状态;后者要求共享不过于通用的实体。每次心跳各最多 3 条,排在未决事项之前。
|
||||
- 工作回顾按故事组织:推进了哪些故事、新出现哪些故事、形成或应用了哪些经验。
|
||||
|
||||
@@ -27,6 +27,8 @@ schema 42 为实体、实体变化和关系增加 `source_reference_ids_json`,
|
||||
|
||||
schema 43 在结果上增加 `graph_snapshot_json`,保存当次实体名称、说明、确认状态、关系理由及本次来源引用。后续 run 只更新 `automatic` 的当前实体与关系,已确认、修订或移除状态受保护。历史结果读取自身内容;人工操作带 `resultId` 时先校验成员归属,在事务内更新当前对象及所选结果,其他结果不变。移除关系记录 `revoked`,防止后续相同端点和类型的自动关系恢复它。
|
||||
|
||||
结果级图谱另由 `supervisionAttention` 按所属 run 保存的范围和时间区间查询当前消息,返回小时桶 `attention`;该字段不写入历史快照。既有 `supervisionGraph` IPC 和 Preload 原样传递,Renderer 按选定区间生成螺旋。归一化、小时内估算和历史数据限制见 [3D 密度规则](../story-graph/3d-concept.md),故事与结果事件的对应规则见[故事线模型设计](./storyline-model-design.md#5-展示与使用)。
|
||||
|
||||
升级从现有事件实体关联、实体变化和来源引用恢复结果成员,不猜测名称匹配;旧数据缺失的归属或已经覆盖的内容无法还原,原对象仍保留。新结果即使实体没有事件或来源,也会保存完整成员。结果内容与运行、事件、来源在同一事务提交。
|
||||
|
||||
`overview({ target? })` 返回稳定的 `id`、`storyLineId` 及来源 ID。指定 Conversation/Task 时,Main 读取目标实际项目,查询同时要求目标来源匹配、结果 scope 为 global 或包含该项目;LIMIT 在过滤之后。卡片展示结果真实范围,global 结果不会伪装成单会话摘要。`graph({ resultId, storyLineId? })` 校验二者归属,只返回该结果的事件、对象和来源;显式 ID 无效时不回退到最新结果。继续讨论按结果主键读取,并验证来源属于该结果。
|
||||
|
||||
@@ -111,6 +111,10 @@ Modal 按[共享表单 Modal 规则](../../../UI-DESIGN.md#615-表单-modal)复
|
||||
|
||||
## 故事线图谱
|
||||
|
||||
左上角提供与“工作回顾”共用的“历史结果”选择框,显示生成时间和范围。首次进入默认最新结果;两页之间切换保留所选结果,从侧栏或建议显式打开的结果、故事、经验优先于默认值。切换结果时清除旧来源详情,迟到请求不得覆盖新选择。空图谱及读取失败时仍可切换历史结果。
|
||||
|
||||
时间螺旋使用所选回顾的时间区间与事件集合,半径含义见 [3D 密度规则](../story-graph/3d-concept.md)。故事与经验列表仍提供该范围的当前完整记录,供查看和调整;画布只绘制属于本次结果的故事事件,避免出现点击后无法在本次事件列表中定位的点。
|
||||
|
||||
关联来源详情属于会话时,显示“打开会话”按钮,使用来源保存的会话 ID 跳转并切换到所属项目;不发送消息或启动回顾。另提供“继续讨论”,使用上述可编辑正文预览,点击发送后提交到来源会话并打开它。详情继续展示整理时保存的原文快照。会话已删除或读取失败时,沿用应用会话导航的提示;其他来源类型不显示此按钮。
|
||||
|
||||
左侧使用共享 PageTabs 切换“事件 / 实体 / 关系”,显示各类数量,一次只展示一类列表,无记录时显示本次回顾的分类空态。页签固定在顶部,列表占满剩余高度并独立滚动。切换页签不清除当前图谱选择;从画布、事件浏览或详情选择对象时同步切到对应页签。支持方向键、Home/End 和面板键盘聚焦。
|
||||
|
||||
Reference in New Issue
Block a user