charging-cabinet/docs/compound-notes/2026-07-ardot-batch-edit-属性写法.md

32 lines
1.5 KiB
Markdown
Raw Normal View History

chore: 清掉误入库的 agent 工具记忆目录与 Vite 模板 README(内容先按主题归位) ## 起因 用户问"现在确定所有文档都是按分类存放没重复和过期内容了吧" —— **不能凭感觉答"是"**,于是做了一次针对**已跟踪文件**的体检(重复/断链/过期陈述三维度)。 第一轮体检结果:重复 0 组、断链 0 处,但**又扫出 3 处该处理的东西**。 ## 一、`.workbuddy/memory/` —— 另一个 agent 工具的记忆目录被误入库 3 个文件(`MEMORY.md` / `2026-07-02.md` / `2026-07-07.md`),**全仓零引用**, 最后一次"提交"是搭车进 `feat(protocol): TCP v1.1 协议对齐` 这类无关提交 —— 与之前那几张误提交的图片同一模式。 - ⚠️ `2026-07-02.md` 里含一处**生图 API Key 片段**(`sk-ib7i...M2z`); - `.gitignore` 里 `.codebuddy/` 早有,但 `.workbuddy/` **漏了** ⇒ 才被顺手提交进来。 ### 处理:内容先归位,再删目录(不是一删了之) 按 `docs/README.md` 已确立的原则"**过时就删;仍有价值的归到正确的类**", 把 `MEMORY.md` 里仍有价值的三类内容分别落位: | 内容 | 归到哪 | 为什么 | |---|---|---| | UI 颜色系统 / 背景容器 / 36 仓通道卡布局 | **`docs/tech/小程序用户端.md`** 新增「附:UI 设计规范(视觉口径,改动界面前必读)」 | 这是页面视觉口径,属小程序文档 | | Ardot `batch_edit` 的 `fills`/`strokes`/`cornerRadius` 写法坑 + 设计稿 7 屏 ID | **`docs/compound-notes/2026-07-ardot-batch-edit-属性写法.md`** | 工具特有的单点教训,正是 compound-notes 的定义 | | "开发前必须确认需求"、"生产环境须授权"、落地页明亮风格偏好 | **`AGENTS.md` 新增「操作规则」小节** | 项目级规则,须常驻加载 | 然后把 `.workbuddy/` 从版本控制移除并**加入 `.gitignore`**(连同 `.opencode/`、`.codegraph/`), 堵住同一个坑再犯。 ## 二、`software/web/README.md` —— 建站模板残留 23 行里 9 行是 Vite/plugin-react/Oxlint 的模板话术(英文、与项目无关)。 `api-server` / `device-server` / `h5-uniapp` 三个工程**都没有** README —— 构建方式统一在 `AGENTS.md` 与 `docs/tech/部署手册.md` 里。⇒ **删除**。 ## 三、一个我自己的误判(已纠正,记录以免后人重复) 我一度怀疑 `docs/tech/API.md` 接口表"少 12 行"(我数出 68 行,而 `mod.rs` 有 80 个 `.route(`)。 复核发现 **`API.md` 自己写明了计数约定**:"一行 = 一次 `.route(...)` 注册,共 80 行; 展开后 93 对" —— 而我的正则 `^\|\s*(GET|POST)\s*\|` **漏掉了 `| GET / POST |` 这种链式写法**。 用能匹配链式的正则重数 = **正好 80** ⇒ **`API.md` 是准确的,我的怀疑是错的**。 ## 校验(只扫 git 已跟踪文件) - 已跟踪文件 **217**(原 221 → 删 3 个工具记忆 + 1 个模板 README); - 文档内容重复:**0 组**; - 已跟踪 md 的本地链接:**0 断链**; - `.workbuddy` 已跟踪文件数 = 0、工作区已不存在。 ## 仍**刻意保留**的(不是遗漏) - `生产环境.txt`:**唯一凭据清单**且被 `docs/tech/小程序用户端.md` 引用为密钥记录处 —— 上一提交已把"不入代码仓库"这句与事实矛盾的表述改准;是否改走 `.gitignore`+密码管理器由你定。 - `docs/README.md` 的「旧名→现名映射」表 / 处置记录 / 自证方法:**必须**出现旧名,属预期。 - `docs/compound-notes/TEMPLATE.md`(94 B):新建笔记的模板,给该目录提供格式约束。 - `tasks/002-未结待办-*.md`:两项未结(`energy` 等硬件答复、长函数重构), `tasks/` 本身已 gitignore、不入库。
2026-09-20 05:04:53 +08:00
# Ardot 设计稿 API 的坑(batch_edit)
**日期**:2026-07(从误入库的工具记忆里抢救归位)
**场景**:用 Ardot 的 `batch_edit` 批量修改设计稿节点属性(充电柜 H5 应用设计稿,
文件 ID `701384244279693`)。
## 问题描述
批量改完 7 屏后,用户反馈"位置都是乱的",截图验证发现**所有 7 屏几乎全白/空白**:
容器节点没有任何背景色,只有 text 节点有 fills,所以只剩零星文字可见。
## 根因分析
上一轮重建时**所有 frame/容器节点的 `fills` 都写成了空数组 `[]`**。
更关键的是:**给"已存在的节点"更新颜色时,十六进制简写 `fill:"#FFF"` 不生效** ——
它只在 **Insert 新节点**时可用;Update 已有节点必须写完整对象。
## 解决方案
| 属性 | 正确写法 | 错误写法 |
|------|---------|---------|
| `fills` | `[{type:"SOLID", color:{r,g,b}}]`(RGB 对象数组) | `fill:"#FFF"`(Update 时无效) |
| `strokes` | `[{type:"SOLID", color:{r,g,b}, width:N}]` | 写成对象形式 |
| `cornerRadius` | 数字 | 数组 |
## 模式 / 反模式
- **模式**:批量改设计稿后,**用截图/渲染验证**,不要只看接口返回成功 ——
"操作成功但属性没生效"正是本次的表现(与后端"打印 ❌ 却 exit 0"是同一类信号缺失)。
- **反模式**:把"同一属性在不同操作(Insert/Update)下语义不同"当理所当然;
涉及此类差异时**先小范围试一个节点并肉眼确认**,再全量批处理。