auto: sync OpenClaw config 2026-09-16 22:13
This commit is contained in:
@@ -1,23 +1,37 @@
|
||||
---
|
||||
name: "wellness"
|
||||
description: "管理按摩放松记录:查询/新增技师联系人(cc_contract)和放松记录(cc_contract_record),本地 MySQL wellness 库。"
|
||||
description: "管理按摩放松记录:查询/新增技师联系人(cc_contract)与放松记录(cc_contract_record),本地 MySQL wellness 库。"
|
||||
---
|
||||
|
||||
# Wellness — 按摩放松记录管理
|
||||
|
||||
管理本地 MySQL `wellness` 数据库,专注**按摩/放松**方向的技师联系人(联系方式)与每次放松记录的**查询与新增**。统计功能后续扩展。
|
||||
|
||||
**边界**:本库只记**到店/付费服务**的消费记录(技师联系人 + 每次服务记录)。健康/皮肤病症(湿疹、闭口粉刺、用药等)不属于本库,归 fitness(健康)agent 的健康档案。
|
||||
|
||||
## 数据库连接
|
||||
|
||||
复用 db-query skill 配置,数据库名「按摩放松」:
|
||||
本库 `wellness` 是 agent `wellness` 的私有库:库名 = agent id,账号 `agent_wellness`,唯一入口 `db-conn.sh`。
|
||||
|
||||
```bash
|
||||
python3 skills/db-query/scripts/db_query.py --database "按摩放松" --query "<SQL>"
|
||||
~/.openclaw/scripts/db-conn.sh wellness --sql "<SQL>"
|
||||
```
|
||||
|
||||
- 连接方式:localhost Docker MySQL(127.0.0.1:3306),user=root,password 已配置
|
||||
- 所有查询/写入都走 db-query 脚本,凭据不直连
|
||||
- 执行路径:`/home/yangxuan/.openclaw/workspace/skills/db-query/scripts/db_query.py`
|
||||
- 口令存 `~/.openclaw/.env` 的 `DB_PASSWORD_放松保健`,由脚本内部读取(不进命令行、不打印)
|
||||
- **禁止 root、禁止 docker exec 直连、禁止跨库**;旧写法(root 账号、`db-query --database "按摩放松"`)已废弃
|
||||
|
||||
### 中文乱码 / 写入失败(实测坑)
|
||||
|
||||
`db-conn.sh` 的 mysql 客户端连接字符集默认是 **latin1**(读写都受影响;这是 `db-conn.sh` 层面的行为,**其他 agent 的库同样适用**):
|
||||
|
||||
- 读:不带 `SET NAMES utf8mb4;` 时中文列全部返回 `???`
|
||||
- 写:中文 INSERT/UPDATE 报 `ERROR 1265 Data truncated for column '<列名>'`
|
||||
|
||||
把该语句放在同一条 `--sql` 的最前面即可正常读写:
|
||||
|
||||
```bash
|
||||
~/.openclaw/scripts/db-conn.sh wellness --sql "SET NAMES utf8mb4; SELECT contract_name,record_locale,comment FROM cc_contract_record ORDER BY record_date DESC LIMIT 5"
|
||||
```
|
||||
|
||||
## 表结构
|
||||
|
||||
@@ -66,10 +80,10 @@ INSERT INTO cc_contract
|
||||
(id, name, wechat, qq, phone, address, price, description, comment, group_type,
|
||||
is_delete, status, deleted, gmt_create, gmt_update, score)
|
||||
VALUES
|
||||
(UUID(), '<name>', '<wechat>', '<qq>', '<phone>', '<address>', <price>, '<desc>', '<comment>', <group_type>,
|
||||
(REPLACE(UUID(),'-',''), '<name>', '<wechat>', '<qq>', '<phone>', '<address>', <price>, '<desc>', '<comment>', <group_type>,
|
||||
0, 0, 0, NOW(), NOW(), <score>)
|
||||
```
|
||||
> `<id>` 用 `UUID()` 生成(32位无横线)。若 name 已存在会因 UNIQUE 冲突报错,先查询确认。
|
||||
> `cc_contract.id` 是 `varchar(32)`:**必须去横线**。直接 `UUID()` 是 36 位,strict mode 下报 `ERROR 1406 Data too long`(实测);用 `REPLACE(UUID(),'-','')` 得 32 位。`cc_contract_record.id` 是 `varchar(50)`,36 位也能存,但同样用去横线写法保持一致。若 name 已存在会因 UNIQUE 冲突报错,先查询确认。
|
||||
|
||||
**新增一次放松记录**:
|
||||
```sql
|
||||
@@ -77,16 +91,16 @@ INSERT INTO cc_contract_record
|
||||
(id, contract_id, contract_name, record_date, record_locale, price, score, comment,
|
||||
is_delete, status, deleted, gmt_create, gmt_update)
|
||||
VALUES
|
||||
(UUID(), '<contract_id>', '<name>', '<record_date>', '<record_locale>', <price>, <score>, '<comment>',
|
||||
(REPLACE(UUID(),'-',''), '<contract_id>', '<name>', '<record_date>', '<record_locale>', <price>, <score>, '<comment>',
|
||||
0, 0, 0, NOW(), NOW())
|
||||
```
|
||||
> contract_id 需先从 cc_contract 查到对应联系人 id;record_date 用 `YYYY-MM-DD`;record_locale 必填。
|
||||
> contract_id 需先从 cc_contract 查到对应联系人 id;record_date 用 `YYYY-MM-DD`;record_locale 必填——**用户没说地点时用机构名占位**(如 `奢思雅`),不要留空。价格/评分未提供时:price 留 `NULL`、score 走列默认 `0`(=未评分),事后拿到再 `UPDATE` 补,不要为了凑字段而追问。
|
||||
|
||||
### 3. 更新 / 软删
|
||||
- 更新联系人/记录:`UPDATE ... WHERE id='<id>'`(保留软删字段不变)
|
||||
- 软删:`UPDATE cc_contract SET status=1,deleted=1 WHERE id='<id>'`(不物理删除)
|
||||
|
||||
⚠️ **写入前先 SELECT 确认目标存在**,避免误操作。所有写入均通过 db-query 脚本执行。
|
||||
⚠️ **写入前先 SELECT 确认目标存在**,避免误操作。所有写入均通过 `db-conn.sh wellness` 执行。
|
||||
|
||||
## 通用原则
|
||||
- 全程中文交互
|
||||
|
||||
Reference in New Issue
Block a user