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、不入库。
This commit is contained in:
parent
a03c163c1d
commit
401f84bda6
5
.gitignore
vendored
5
.gitignore
vendored
@ -62,3 +62,8 @@ deploy_output.txt
|
|||||||
deploy_remote.sh
|
deploy_remote.sh
|
||||||
/tmp/
|
/tmp/
|
||||||
tools/dev-tunnel-run.ps1
|
tools/dev-tunnel-run.ps1
|
||||||
|
|
||||||
|
# 其它 agent 工具的本地产物(不入库 —— 曾经 .workbuddy/ 被顺手提交进来过)
|
||||||
|
.workbuddy/
|
||||||
|
.opencode/
|
||||||
|
.codegraph/
|
||||||
|
|||||||
@ -1,6 +0,0 @@
|
|||||||
# 2026-07-02 工作日志
|
|
||||||
|
|
||||||
- **产品介绍页重做**:将 `deploy/landing/index.html` 从暗色科技风改为明亮风格单屏页面(左右分栏→全屏背景图融合)
|
|
||||||
- **生图技能创建**:创建了 `agnes-image` 用户级技能,使用 Agnes Image 2.1 Flash 模型(apihub.agnes-ai.com),无水印,支持文生图/图生图
|
|
||||||
- **API Key 已内置在技能脚本中**:`sk-ib7i...M2z`
|
|
||||||
- **测试通过**:生成充电柜产品图成功,25秒出图
|
|
||||||
@ -1,32 +0,0 @@
|
|||||||
# 2026-07-07 Session Notes
|
|
||||||
|
|
||||||
## 完成工作:安知充H5应用设计稿 — 修复全部7屏填充色问题
|
|
||||||
|
|
||||||
### 问题诊断
|
|
||||||
- 用户反馈"位置都是乱的",截图验证发现所有7屏几乎全白/空白
|
|
||||||
- 根因:上一轮重建时所有frame节点的 `fills: []` 为空(容器无背景色),只有text节点有fills所以能看到零星文字
|
|
||||||
- batch_read 确认:用户卡片、菜单卡片、设备卡片、订单卡片、通道卡片等所有容器的 fills 均为空数组
|
|
||||||
|
|
||||||
### 修复操作(共6个batch_edit批次,约120+个U()操作)
|
|
||||||
1. **Batch 1 (23 ops)**: 7屏背景色(登录渐变+其余#f5f5f5) + 登录表单元素(输入框白底边框+渐变按钮) + 首页卡片(组织切换/筛选标签/统计行/设备卡×2) + TabBar×2
|
|
||||||
2. **Batch 2 (10 ops)**: 设备列表卡×3 + 仓体详情卡片×3(状态/参数/记录) + 操作按钮×2(停止橙色/开门线框) + 订单卡×3
|
|
||||||
3. **Batch 3 (8 ops)**: 设备详情-信息卡白色 + 开门按钮蓝色 + 板头×6(灰蓝色调)
|
|
||||||
4. **Batch 4 (22 ops)**: 通道卡1-12(板1-2): 白底圆角6px + 彩色状态条(绿/蓝/红/紫)
|
|
||||||
5. **Batch 5 (22 ops)**: 通道卡13-24(板3离线灰色 + 板4混合状态)
|
|
||||||
6. **Batch 6 (22 ops)**: 通道卡25-36(板5-6混合状态)
|
|
||||||
7. **我的页补完**: 用户卡片白底 + 头像蓝底#dbeafe + 菜单卡片白底 + 退出登录按钮(红字红边框) + 底部TabBar(SVG图标)
|
|
||||||
|
|
||||||
### 关键技术发现
|
|
||||||
- ardot batch_edit 中 Update 已有节点:`fills` 必须用 `[{type:"SOLID", color:{r,g,b}}]` 数组格式
|
|
||||||
- `strokes` 必须用数组格式 `[{type:"SOLID", color:{r,g,b}, width:N}]`
|
|
||||||
- Insert 新节点时 `fill:"#FFF"` 简写可用,但 Update 时不可靠
|
|
||||||
|
|
||||||
### 颜色修正(用户反馈"颜色不对"后修复)
|
|
||||||
- 对照全部7个源文件的CSS,逐一修正了所有颜色
|
|
||||||
- **登录页**: 输入框背景 #f8fafc(更正白色), 边框 #e2e8f0(更正#e5e7eb)
|
|
||||||
- **首页**: 组织切换器背景 #f3f4f6(更正白色), 筛选标签激活态 #2563eb蓝(更正#dbeafe浅蓝)
|
|
||||||
- **设备列表**: 状态徽章添加背景圆角#f0fdf4/#f9fafb
|
|
||||||
- **设备详情**: 在线状态徽章/DC/AC标签添加圆角背景#f0fdf4, 导航栏添加底部边框
|
|
||||||
- **仓体详情**: 状态徽章添加圆角背景#eff6ff, 记录项添加底部边框
|
|
||||||
- **订单**: 状态徽章添加圆角背景(正常#f0fdf4/异常#fef2f2/停止#fffbeb), 订单体添加顶部边框
|
|
||||||
- 均用 `strokes: [{type:"SOLID", color:{r,g,b}, width:N}]` 数组格式设置边框
|
|
||||||
@ -1,17 +0,0 @@
|
|||||||
# 项目长期记忆
|
|
||||||
|
|
||||||
## 用户偏好
|
|
||||||
- **产品介绍页风格**:偏好明亮/浅色风格,不要暗色科技风;单屏不滚动布局
|
|
||||||
- **生图能力**:项目有 ImageGen 文生图工具可用,可用于生成产品渲染图等
|
|
||||||
- **操作规则**:开发/修改程序前必须确认需求,不可自说自话操作;生产环境服务器文件和数据必须用户授权后才可动
|
|
||||||
|
|
||||||
## Ardot 设计稿经验(充电柜H5应用)
|
|
||||||
- **设计稿文件ID**: `701384244279693`("安知充H5应用设计稿")
|
|
||||||
- **7屏完整列表**: 登录(2:1004) 首页(2:1022) 设备详情(2:1094,高1260) 设备列表(2:1334) 仓体详情(2:1359) 订单(2:1411) 我的(2:1468)
|
|
||||||
- **关键教训 — frame fills 必须用数组格式**: `fills` 属性必须用 `[{type:"SOLID", color:{r,g,b}}]` RGB对象数组。`fill:"#FFF"` 十六进制简写在 batch_edit 的 Update 操作中对已有frame节点可能不生效(Insert 新节点时可用简写,Update 已有节点必须用数组格式)
|
|
||||||
- **strokes 必须用数组格式**: `strokes: [{type:"SOLID", color:{r,g,b}, width:N}]`,不是对象形式
|
|
||||||
- **cornerRadius 必须是数字**: 不能传数组
|
|
||||||
- **屏幕背景色**: tab页面 #f5f5f5,子页面(设备详情/列表/仓体详情) 也是 #f5f5f5;登录页用渐变 linear-gradient(135deg,#f0f4ff,#e0e7ff,#f0f9ff)
|
|
||||||
- **卡片统一白色**: 所有卡片/容器 #FFFFFF + 圆角
|
|
||||||
- **颜色系统**: 主蓝#2563eb, 在线绿#16a34a(bg:#f0fdf4), 离线灰#9ca3af(bg:#f9fafb), 故障红#dc2626(bg:#fef2f2), 停止橙#f59e0b(bg:#fffbeb), 充电中蓝#2563eb(bg:#eff6ff), 满电紫#7c3aed
|
|
||||||
- **设备详情36仓**: 6板×6通道=36, 通道卡片白底+顶部3px彩色状态条(色条用RECTANGLE子节点fill表示状态色)
|
|
||||||
@ -257,6 +257,13 @@ python test/schema_alignment_e2e.py --env prod --jwt-secret <JWT_SECRET> --yes-p
|
|||||||
|
|
||||||
## 开发约束
|
## 开发约束
|
||||||
|
|
||||||
|
### 操作规则(用户明确要求,优先级高于便利性)
|
||||||
|
|
||||||
|
- **开发/修改程序前必须先确认需求**,不可自说自话地动手;
|
||||||
|
- **生产环境服务器上的文件与数据,必须经用户授权后才可改动**;
|
||||||
|
- 产品介绍页(`deploy/landing/`)**偏好明亮/浅色风格、单屏不滚动布局**,
|
||||||
|
⛔ 不要做成暗色科技风。
|
||||||
|
|
||||||
### 禁止操作
|
### 禁止操作
|
||||||
|
|
||||||
- **禁止修改设备与TCP服务的通信协议** — 设备端固件不可改,TCP 报文 JSON 格式、字段名、act 类型、签名机制(SHA256取8位)全部冻结;所有修复必须是服务端内部逻辑变更,设备侧零感知
|
- **禁止修改设备与TCP服务的通信协议** — 设备端固件不可改,TCP 报文 JSON 格式、字段名、act 类型、签名机制(SHA256取8位)全部冻结;所有修复必须是服务端内部逻辑变更,设备侧零感知
|
||||||
|
|||||||
@ -87,7 +87,9 @@
|
|||||||
|
|
||||||
### compound-notes/ —— 经验沉淀
|
### compound-notes/ —— 经验沉淀
|
||||||
|
|
||||||
单点问题的笔记(如某次 SQL 注入的成因与修法)。**参考性**内容,
|
单点问题的笔记:`2026-08-15-sql-injection-format-param-binding.md`(SQL 注入成因与修法)、
|
||||||
|
`2026-07-ardot-batch-edit-属性写法.md`(设计稿批量编辑的属性坑)、
|
||||||
|
`TEMPLATE.md`(新建笔记的模板)。**参考性**内容,
|
||||||
遇到同类问题时查;结论若上升为通用规范,应回写进 `AGENTS.md` 的「踩过的坑」。
|
遇到同类问题时查;结论若上升为通用规范,应回写进 `AGENTS.md` 的「踩过的坑」。
|
||||||
|
|
||||||
### ~~archive/~~ —— 已取消(2026-09-20)
|
### ~~archive/~~ —— 已取消(2026-09-20)
|
||||||
|
|||||||
31
docs/compound-notes/2026-07-ardot-batch-edit-属性写法.md
Normal file
31
docs/compound-notes/2026-07-ardot-batch-edit-属性写法.md
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# 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)下语义不同"当理所当然;
|
||||||
|
涉及此类差异时**先小范围试一个节点并肉眼确认**,再全量批处理。
|
||||||
@ -166,3 +166,33 @@ const BASE_URL = '/api/pms'
|
|||||||
2. **SVG 图标居中**:`.stat-chip svg { display: block; flex-shrink: 0 }` 用 CSS 统一控制尺寸,比内联属性更可靠
|
2. **SVG 图标居中**:`.stat-chip svg { display: block; flex-shrink: 0 }` 用 CSS 统一控制尺寸,比内联属性更可靠
|
||||||
3. **内联 SVG + v-if**:Vue 3 支持在 `<path>` 上用 `v-if` 条件渲染,适用于动态图标
|
3. **内联 SVG + v-if**:Vue 3 支持在 `<path>` 上用 `v-if` 条件渲染,适用于动态图标
|
||||||
4. **CSS 覆盖 SVG 尺寸**:用 `.xxx svg { width: Xpx; height: Xpx }` 统一控制图标大小,不在每个 `<svg>` 上写死
|
4. **CSS 覆盖 SVG 尺寸**:用 `.xxx svg { width: Xpx; height: Xpx }` 统一控制图标大小,不在每个 `<svg>` 上写死
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 附:UI 设计规范(视觉口径,改动界面前必读)
|
||||||
|
|
||||||
|
> 来源:H5 设计稿(Ardot 文件 ID `701384244279693`「安知充H5应用设计稿」,7 屏:
|
||||||
|
> 登录 / 首页 / 设备详情 / 设备列表 / 仓体详情 / 订单 / 我的)落地时沉淀的口径。
|
||||||
|
> **改动任何页面配色或布局前先对照本节**,避免同一系统内出现两套视觉。
|
||||||
|
|
||||||
|
### 颜色系统(状态色 + 背景色成对使用)
|
||||||
|
|
||||||
|
| 语义 | 主色 | 浅底 |
|
||||||
|
|------|------|------|
|
||||||
|
| 主色(品牌蓝) | `#2563eb` | `#eff6ff` |
|
||||||
|
| 在线 | `#16a34a` | `#f0fdf4` |
|
||||||
|
| 离线 | `#9ca3af` | `#f9fafb` |
|
||||||
|
| 故障 | `#dc2626` | `#fef2f2` |
|
||||||
|
| 停止 | `#f59e0b` | `#fffbeb` |
|
||||||
|
| 充电中 | `#2563eb` | `#eff6ff` |
|
||||||
|
| 满电 | `#7c3aed` | — |
|
||||||
|
|
||||||
|
### 背景与容器
|
||||||
|
|
||||||
|
- 页面底色统一 `#f5f5f5`(**含 tab 页与子页面**:设备详情 / 设备列表 / 仓体详情);
|
||||||
|
- 登录页用渐变 `linear-gradient(135deg, #f0f4ff, #e0e7ff, #f0f9ff)`;
|
||||||
|
- **所有卡片/容器为白底 `#FFFFFF` + 圆角**。
|
||||||
|
|
||||||
|
### 设备详情(36 仓)
|
||||||
|
|
||||||
|
- 布局为 **6 板 × 6 通道 = 36**;通道卡片白底 + **顶部 3px 彩色状态条**(色条取上表状态色)。
|
||||||
|
|||||||
@ -1,32 +0,0 @@
|
|||||||
# React + TypeScript + Vite
|
|
||||||
|
|
||||||
This template provides a minimal setup to get React working in Vite with HMR and some Oxlint rules.
|
|
||||||
|
|
||||||
Currently, two official plugins are available:
|
|
||||||
|
|
||||||
- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Oxc](https://oxc.rs)
|
|
||||||
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/)
|
|
||||||
|
|
||||||
## React Compiler
|
|
||||||
|
|
||||||
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).
|
|
||||||
|
|
||||||
## Expanding the Oxlint configuration
|
|
||||||
|
|
||||||
If you are developing a production application, we recommend enabling type-aware lint rules by installing `oxlint-tsgolint` and editing `.oxlintrc.json`:
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"$schema": "./node_modules/oxlint/configuration_schema.json",
|
|
||||||
"plugins": ["react", "typescript", "oxc"],
|
|
||||||
"options": {
|
|
||||||
"typeAware": true
|
|
||||||
},
|
|
||||||
"rules": {
|
|
||||||
"react/rules-of-hooks": "error",
|
|
||||||
"react/only-export-components": ["warn", { "allowConstantExport": true }]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
See the [Oxlint rules documentation](https://oxc.rs/docs/guide/usage/linter/rules) for the full list of rules and categories.
|
|
||||||
Loading…
x
Reference in New Issue
Block a user