图例配置持久化

图视图的图例配置(每种节点类型的颜色、标题模板、配色规则,以及每种关系的线型与箭头)保存在项目内的 backlog/databases/graph-legends.yaml,随 git 版本化。此前它只存在浏览器的本地存储里,换浏览器、换设备或清缓存就会丢失,团队各人看到的同一张图也不一样;文档里的 Cypher 查询块(view: graph)的配色甚至取决于阅读者的浏览器而不是项目本身。

配置文件长什么样

单个 YAML 文件,按数据库名分组:

default:
  captionsVisible: true
  types:
    Person:
      caption: "{{name}}"
      color: "#204af3"
      rules: []
  relations:
    WORKS_AT:
      dash: solid
      arrow: end
      color: "#0ef19a"
  hidden: []

块状 YAML、LF 行尾,便于 review、diff 与手工编辑。字段缺失或规则写坏不会让界面崩溃——读取时按容错规则降级。

四个入口,同一份文件

入口 用法
图例设置面板 齿轮按钮打开,修改即时预览,保存即写入文件
CLI backlog graph legend get <database>(默认人类可读摘要,--json 输出原始 JSON)/set <database> <file>(--stdin 从标准输入读)/remove <database>(幂等)
MCP graph_legend_get / graph_legend_set / graph_legend_remove 三个工具,代理无需手改文件
手工编辑 直接用编辑器改 YAML

四条路径读写的是同一份文件,任一处的改动在其他处都可见。

启动恢复与本地缓存

浏览器打开时先用本地缓存渲染首帧(零延迟、离线可用),随后向服务端取项目文件:

  • 项目里有配置且与本地不同 → 采用项目版本,并回写本地缓存。
  • 项目里没有而本地有 → 把本地配置上传一次完成迁移,老配置不会丢。
  • 两边都没有 → 维持默认配色。

保存时先写本地(即时生效)再写入文件;写入失败不会中断操作,本地副本保留,下次打开时自动重试迁移。服务端不可达时行为与纯本地缓存时代一致。

跨标签页与带外修改的热更新

图例保存后会广播更新,同一项目其他已打开的标签页会立即应用。用 CLI、MCP 或编辑器在外部改动该文件时,服务端的文件监听会把变化转成同样的广播——不需要刷新页面。

一次真正的变化只刷新一次:内容完全相同的重写(包括只调整字段顺序)不会触发任何刷新;删除本就不存在的条目也是静默无操作。

自动配色会被记进文件

保存时会为没有显式指定颜色的类型写入它当前实际被绘制的颜色,因此文件记录的是读者看到的完整画面,而不是留待每次打开时按类型名重新推导。在面板里把某个类型的颜色点回「×」即可恢复自动配色。

冲突策略

同一配置的并发写入采用后写者胜,不做合并——图例是低频的单人配置。文件写入是原子的(临时文件 + 重命名),不会留下半截文件。

results matching ""

    No results matching ""