## 起因
用户问"现在确定所有文档都是按分类存放没重复和过期内容了吧" ——
**不能凭感觉答"是"**,于是做了一次针对**已跟踪文件**的体检(重复/断链/过期陈述三维度)。
第一轮体检结果:重复 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、不入库。
32 lines
1.5 KiB
Markdown
32 lines
1.5 KiB
Markdown
# 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)下语义不同"当理所当然;
|
||
涉及此类差异时**先小范围试一个节点并肉眼确认**,再全量批处理。
|