fix(architecture): 改善边界构图并检测近轴折线 (#74) - #75
Conversation
Reserve boundary title space, separate coincident frames, and detect near-axis showcase doglegs. Preserve explicit routing compatibility and add regression plus visual evidence for tt-a1i#74.
|
感谢修复 #74,边界标题留白、嵌套边界间距和重合边缘分离这几个方向都挺有价值。不过 near-axis-dogleg 这里现在会有误报,建议合并前再处理一下。 目前 collectNearAxisDoglegs 只根据两端是否错开不足 24px、路径是否存在折点来判断,没有确认直线路径是否真的可用。我本地复现的结构是:API 位于 [500, 340]、Database 位于 [510, 100],中间放一个位于 [520, 180]、尺寸为 [40, 50] 的组件。自动路由为了绕开中间组件生成了合法折线,其他 Clean Flow 校验均通过,但 Showcase 最终仍只报 composition/near-axis-dogleg,并建议改成直线;这样修改反而会穿过障碍物。 建议只有在直线或直接对齐后的路径确认不会穿过任何非端点组件时,才报告 near-axis-dogleg;同时增加一个“近轴但中间存在障碍物,自动绕行不应报错”的回归测试。 另外这个 PR 目前基于较早的 main,已经存在合并冲突,建议先更新到最新主分支后再跑一次完整测试。除现有单测外,也建议实际让 DeepSeek V4 Flash、GPT-5.6 Luna 这类较小模型分别生成几张复杂架构图做回归。这个规则最终是给模型生成结果兜底的,小模型更容易暴露误报、修复提示无法执行,以及边界自动扩张后语义不准确等问题。 |
|
感谢你处理 #74。我们结合最新的 边界构图这部分目前已经被 #96 的新实现覆盖了,包括标题可读性、嵌套标题轨道、遮罩碰撞和桌面投影检查。两套实现都改了 Architecture renderer,继续在当前分支上 rebase,实际上需要重写大部分代码和生成物,直接叠加的风险比较大。
因此不建议继续在这个 PR 上修改。后续如果你还愿意推进 near-axis,可以从最新 感谢你这次提供的实现和测试,它帮助我们把这个问题的边界看清楚了。 |
|
感谢你在 #74 上投入的实现和验证工作。我们基于当前最新的 主要原因有两点:
建议将当前 PR 作为探索记录保留或关闭;如果你愿意继续推进,请从最新 后续 PR 建议满足以下验收条件:
这次实现帮助我们明确了原问题的边界,相关工作是有价值的。后续如果按上述范围提交一个干净的小 PR,我们会继续审核。 |
Problem and value
关联 Issue:#74。
Architecture 图在以下两类构图中会出现“机器校验通过,但最终图仍不够干净”的情况:
这会让 showcase 级架构图需要反复手工增大
pad或微调坐标,而现有 validator 仍可能返回通过。Issue 中提供了脱敏的最小 JSON、命令、环境和验证回执。Scope
wraps子集关系推断最近父 boundary,并为嵌套 boundary 保留间距。showcase下新增结构化诊断composition/near-axis-dogleg,提示作者对齐组件中心或重新分配真实端口。via、channelX、channelY、labelAt或非autoroute。standardprofile 对 near-axis dogleg 的兼容行为。Stability impact
showcase对 near-axis dogleg 新增一个失败诊断;standard不受影响。4ac857b9a3ef30a4db5724cbefa93376ddc71f12;无数据或 schema 回滚成本。Tests run
node --test archify/test/architecture-boundary-layout.test.mjs archify/test/near-axis-dogleg.test.mjs archify/test/layout-rules.test.mjscd archify && npm test2.14.0;golden/schema/template/version checks 全部通过;634 tests,634 pass,0 fail。./scripts/build-zip.sh archify.ziparchify.zip,78 files。git diff --checkVisual evidence
对比使用同一份公开示例 JSON,输入字节未改动;SHA-256:
b39f35841008e538167b3f8a5e8c343486570c90d4f82f1215b517af6881293b。Before(upstream main / 2.14.0):嵌套框顶部边线和标题区域贴合,层级边界不够清楚。
After(本 PR candidate):输入 JSON 不变,父子 boundary 的标题带和边线获得可辨识间距。
visual-checkcontainment:1440×900、1600×1000、1920×1080、2048×1320 均通过,无横向或纵向 overflow。passed。Generated artifacts
examples/web-app-rendered.htmlarchify/examples/web-app-rendered.htmldocs/gallery.htmldocs/gallery/artifacts/production-deployment.architecture.htmldocs/gallery/artifacts/web-app.architecture.htmldocs/gallery/manifest.jsondocs/assets/archify-live-proof.gifdocs/assets/archify-live-proof.jsonarchify.zipdocs/assets/issue-74-boundary-before.pngdocs/assets/issue-74-boundary-after.pngChecklist
npm testinarchify/.Closes #74