登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
代码拉取完成,页面将自动刷新
开源项目
>
前沿技术
>
低代码
&&
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
9
Star
124
Fork
37
UBML
/
code-agent
代码
Issues
12
Pull Requests
26
Wiki
统计
流水线
服务
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
开发画像分析
我知道了,不再自动展开
更新失败,请稍后重试!
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
[EDIT-05] 可视化模型校验标记与安全快速修复
待办的
#IK1KBL
yaozichen2025
创建于
2026-07-16 20:46
## 背景与现状 `packages/extension/src/lib/ubml-model-edit.ts` 已把四类模型的校验结果归一为 `UbmlModelEditIssue`,包含 `path/message/hint/hints`。但实体编辑器当前主要通过状态栏或 `JSON.stringify` 展示错误,`entity-canvas-editor.tsx` 只有通用 `actionError`;VO 可视化编辑也只聚合首条消息。校验协议已有“错误在哪”,UI 尚未把它映射到对象卡片、字段和属性控件。 Eclipse GLSP 会把 validation marker 绑定到图元素 ID,并在模型更新后实时刷新;Eclipse Sirius 提供校验装饰和 quick fix。这与 UBML 已有 path/hints 很契合。 ## 建议目标 把结构化校验问题映射到可视化模型元素,提供卡片/字段级标记、问题列表和受控快速修复;快速修复必须是确定性的白名单操作,经用户确认后仍走 `runUbmlModelEdit + verify`,禁止执行任意提示词或代码。 ## 建议范围 1. 新增 issue-to-anchor 归一层:把校验 `path` 映射为 `model kind / object code / field code / property`;无法精确定位时回退到模型级问题。 2. 实体画布在对象卡片、字段行、属性输入控件显示 severity marker;hover/focus 可查看 message、hint/hints。 3. 提供紧凑 Problems 列表,展示全部问题;点击问题会选中并滚动到对应对象/字段,同时在文件视图定位相关 YAML(可复用现有 YAML location 能力)。 4. 建立显式 quick-fix registry。首批只支持确定、可逆、可通过现有编辑 op 表达的修复,例如补默认值/删除无效可选属性/规范化已知枚举。 5. 每个 quick fix 展示将执行的修改并要求用户确认;执行失败保持 YAML 不变并刷新问题列表。 6. 首期覆盖 entity;!120 合入后复用同一协议覆盖 VO。Pageflow 可视化完成后再接入,不阻塞本 Issue。 7. 问题在 YAML/画布编辑后实时失效并重新计算,禁止显示旧路径标记。 8. 补 path 映射、无法定位回退、点击选中、修复成功/失败原子性及恶意 hint 不可执行等测试,并补 OpenSpec。 ## 主要落点 - `packages/extension/src/lib/ubml-model-edit.ts`(复用现有 issue 结构,不扩散新协议) - extension 新增 issue anchor / problems / quick-fix registry - `packages/extension/src/components/entity-canvas-editor.tsx` - `packages/extension/src/pages/workbench/ubml-entity-editor.tsx` - VO visual editor(!120 合入后) ## 验收标准 - 至少覆盖对象级、字段级、属性级和无法定位四类校验问题。 - 点击问题能稳定选中目标;同一字段多个问题不会互相覆盖。 - 编辑后标记与 Problems 列表同步更新,不显示已过期问题。 - 快速修复只来自静态白名单,hint/hints 仅作文本展示,不能被解释执行。 - 修复仍经过 compile/verify,失败不污染 YAML。 - extension typecheck 和测试通过,vendor 无改动。 ## 非目标 不引入通用脚本执行器、自动执行 LLM 建议、任意 YAML patch,也不在首期覆盖全部模型类型。 ## 同类参考 - [Eclipse GLSP Model Validation](https://eclipse.dev/glsp/documentation/modelvalidation/) - [Eclipse Sirius validation and quick fixes](https://eclipse.dev/sirius/doc/user/general/Modeling%20Project.html) ### 该需求带来的价值、应用场景? ## 价值 - 把“编辑失败”从顶部的一条泛化消息变成可操作的模型定位,显著缩短排错回环。 - 直接复用现有 path/message/hint/hints,新增成本集中在 extension 的映射与呈现,不破坏 runtime/codegen 契约。 - 白名单快速修复延续安全编辑链路,可为人工和 Agent 提供同轨、可验证的修复入口。 ## 场景 实体字段的类型、长度或引用不合法时,对应字段行立即显示标记;用户点击 Problems 项即可定位并查看建议。若存在确定性修复,确认预览后执行,失败则保留原 YAML。
## 背景与现状 `packages/extension/src/lib/ubml-model-edit.ts` 已把四类模型的校验结果归一为 `UbmlModelEditIssue`,包含 `path/message/hint/hints`。但实体编辑器当前主要通过状态栏或 `JSON.stringify` 展示错误,`entity-canvas-editor.tsx` 只有通用 `actionError`;VO 可视化编辑也只聚合首条消息。校验协议已有“错误在哪”,UI 尚未把它映射到对象卡片、字段和属性控件。 Eclipse GLSP 会把 validation marker 绑定到图元素 ID,并在模型更新后实时刷新;Eclipse Sirius 提供校验装饰和 quick fix。这与 UBML 已有 path/hints 很契合。 ## 建议目标 把结构化校验问题映射到可视化模型元素,提供卡片/字段级标记、问题列表和受控快速修复;快速修复必须是确定性的白名单操作,经用户确认后仍走 `runUbmlModelEdit + verify`,禁止执行任意提示词或代码。 ## 建议范围 1. 新增 issue-to-anchor 归一层:把校验 `path` 映射为 `model kind / object code / field code / property`;无法精确定位时回退到模型级问题。 2. 实体画布在对象卡片、字段行、属性输入控件显示 severity marker;hover/focus 可查看 message、hint/hints。 3. 提供紧凑 Problems 列表,展示全部问题;点击问题会选中并滚动到对应对象/字段,同时在文件视图定位相关 YAML(可复用现有 YAML location 能力)。 4. 建立显式 quick-fix registry。首批只支持确定、可逆、可通过现有编辑 op 表达的修复,例如补默认值/删除无效可选属性/规范化已知枚举。 5. 每个 quick fix 展示将执行的修改并要求用户确认;执行失败保持 YAML 不变并刷新问题列表。 6. 首期覆盖 entity;!120 合入后复用同一协议覆盖 VO。Pageflow 可视化完成后再接入,不阻塞本 Issue。 7. 问题在 YAML/画布编辑后实时失效并重新计算,禁止显示旧路径标记。 8. 补 path 映射、无法定位回退、点击选中、修复成功/失败原子性及恶意 hint 不可执行等测试,并补 OpenSpec。 ## 主要落点 - `packages/extension/src/lib/ubml-model-edit.ts`(复用现有 issue 结构,不扩散新协议) - extension 新增 issue anchor / problems / quick-fix registry - `packages/extension/src/components/entity-canvas-editor.tsx` - `packages/extension/src/pages/workbench/ubml-entity-editor.tsx` - VO visual editor(!120 合入后) ## 验收标准 - 至少覆盖对象级、字段级、属性级和无法定位四类校验问题。 - 点击问题能稳定选中目标;同一字段多个问题不会互相覆盖。 - 编辑后标记与 Problems 列表同步更新,不显示已过期问题。 - 快速修复只来自静态白名单,hint/hints 仅作文本展示,不能被解释执行。 - 修复仍经过 compile/verify,失败不污染 YAML。 - extension typecheck 和测试通过,vendor 无改动。 ## 非目标 不引入通用脚本执行器、自动执行 LLM 建议、任意 YAML patch,也不在首期覆盖全部模型类型。 ## 同类参考 - [Eclipse GLSP Model Validation](https://eclipse.dev/glsp/documentation/modelvalidation/) - [Eclipse Sirius validation and quick fixes](https://eclipse.dev/sirius/doc/user/general/Modeling%20Project.html) ### 该需求带来的价值、应用场景? ## 价值 - 把“编辑失败”从顶部的一条泛化消息变成可操作的模型定位,显著缩短排错回环。 - 直接复用现有 path/message/hint/hints,新增成本集中在 extension 的映射与呈现,不破坏 runtime/codegen 契约。 - 白名单快速修复延续安全编辑链路,可为人工和 Agent 提供同轨、可验证的修复入口。 ## 场景 实体字段的类型、长度或引用不合法时,对应字段行立即显示标记;用户点击 Problems 项即可定位并查看建议。若存在确定性修复,确认预览后执行,失败则保留原 YAML。
评论 (
2
)
登录
后才可以发表评论
状态
待办的
待办的
进行中
已完成
已关闭
负责人
未设置
标签
enhancement
未设置
标签管理
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
分支 (
-
)
标签 (
-
)
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
参与者(2)
TypeScript
1
https://gitee.com/ubml/code-agent.git
git@gitee.com:ubml/code-agent.git
ubml
code-agent
code-agent
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册