Repository navigation
feat(kg): 云盘文档知识点与交互式产物,app-kg 分层重构 - #174
Merged
Merged
Conversation
- app-kg 结构重构:internal/{infra,repo,service,transport} 四层(infra 只做连接
初始化、repo 只放 SQL/Cypher、service 承载业务规则、transport 做协议映射),
全部测试移入 tests/ 独立包,新增分层依赖方向与 Cypher/SQL 契约守护测试。
- 云盘文档知识点:proto 增 LinkCloudDocAppearances / DeleteCloudDocAppearances /
FetchCloudDocEvidence 与 Stats 的 cloud_docs/cloud_evidence(共 24 RPC)。
证据边指向复用云盘 L1 路由图的 (:CloudDoc {uid, upload_uuid}),与视频知识点
共用 Entity/RELATES 空间;uid 多租户隔离在 Cypher 内完成。
- app-ts 云盘构建:app-cloud 新增 M2M 文档列表/正文接口(internal.api_key +
uid 校验),app-ts 增 kg-cloud-sources 仓储、自有 Mongo kg_docs 账本
(upload_uuid + content_hash 幂等)、startCloudBuild/processCloudDoc 编排,
kg_search 同时回捞视频与云盘证据;build 接口新增 source/upload_uuids。
- 交互式产物:新增 render_plot / render_diagram 工具,模型只输出声明式 spec
(服务端校验参数/表达式/拓扑与大小上限);前端用受信 canvas/SVG 组件渲染,
不引入 iframe 沙箱、不执行任意 HTML;artifact 帧随消息历史持久化;
新增 /lab/interactive 原型页。
- 聊天可靠性:整轮硬超时(agent.turnTimeoutMs 默认 30 分钟)+ 客户端断连
abort,保证 assistant 消息在断连/超时/异常下一定 finalize;SSE route 帧
不再在 UI 展示 agent 名称(协议字段保留用于清除排队态)。
- app-auth:B 站绑定状态 60s TTL 缓存 + 2.5s 硬超时兜底,避免 api.bilibili.com
抖动拖住账号页;bind/unbind 即时失效缓存。
- 其他:app-note 宿主调试口 8008→8018(8008 被 app-cloud 端口池占用)、
gRPC 消息键 camelCase 修正(此前 snake_case 请求键被静默丢弃)、
artifact 去重改用服务端稳定 id、文档同步。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概述
本次提交包含三块工作:app-kg 分层重构 + 云盘文档知识点(KG 新来源)、交互式产物(图表/流程图)工具与前端渲染、以及若干可靠性/运维修复。
1. app-kg 分层重构(app-go/app-kg)
internal/{infra,repo,service,transport}:infra 只做数据库初始化/连接配置,repo 只放 SQL/Cypher,service 承载业务规则,transport 做 proto↔service / HTTP 映射;config为 YAML/env 唯一入口。tests/包(不在被测包混放),新增分层依赖方向守护与 Cypher/SQL 契约守护测试,无需真实 DB 即可跑。db//graph//neo4jstore//server/包。2. 云盘文档 → 知识点(新来源,与视频共用同一张知识图)
proto/kg/v1/kg.proto,21→24 RPC):新增LinkCloudDocAppearances/DeleteCloudDocAppearances/FetchCloudDocEvidence;Stats增cloud_docs/cloud_evidence。证据边指向复用云盘 L1 路由图的(:CloudDoc {uid, upload_uuid}),uid 多租户隔离在 Cypher 内完成。GET /internal/cloud/kg/documents(分页枚举已解析文档)与GET /internal/cloud/kg/document(读取正文,200k 字符截断),沿用internal.api_key+ uid 校验;新增黑盒 HTTP 契约测试。kg-cloud-sources仓储(http/memory 双实现)、自有 Mongokg_docs账本(upload_uuid + content_hash 幂等 skip)、startCloudBuild/runCloud/processCloudDoc编排、/knowledge/kg/build增source与upload_uuids、kg_search同时回捞视频与云盘证据;gRPC 消息键改为 camelCase(修正此前 snake_case 请求键被静默丢弃的问题)。3. 交互式产物(plot / diagram)
render_plot/render_diagram,模型只输出声明式 spec(不写 HTML),服务端做表达式标识符、连线端点、spec 大小上限校验,非法输入返回可读错误供 ReAct 重试。InteractiveArtifact用受信 canvas/SVG 组件渲染(无 iframe 沙箱、不执行任意 HTML),artifact 帧随消息历史持久化,新增/lab/interactive原型页。4. 可靠性 / 运维
agent.turnTimeoutMs,默认 30 分钟)+ 客户端断连 abort,保证 assistant 消息在断连/超时/异常下一定 finalize(此前断连会留下 pending 消息并占会话锁)。api.bilibili.com抖动拖住;bind/unbind 即时失效缓存。验证
npx tsc --noEmit+npx vitest run(70 文件 / 717 测试通过,23 个 Mongo 条件跳过)gofmt -l .+go vet ./...+go test ./...+go build(本地验证中,CI 为准)npx tsc --noEmit+npm run build(本地验证中,CI 为准)风险 / 注意
kg.proto与 Go 生成产物同步提交(CI 无 protoc 依赖);app-ts 侧依赖 camelCase 消息键。kg_docs;未配置时按降级路径处理。app-note宿主端口变更仅影响本地调试,容器/网关不变。