f33afa77bb
- db_query.py 重写:本地库由 agents.entries 动态推导并调用 db-conn.sh(账号 agent_<id>,不用 root、脚本不接触口令);远程改读 db-remote.json 的 password_env,SSH 隧道逻辑未改动 - db-config.json 更名为 db-config.json.deprecated-20260916(保留备查);新建 ~/.config/clawdbot/db-remote.json(3 个 VPS 主库,仅存口令键名,无明文) - 同步调用方文档:workspace/MEMORY.md、wellness 与 tab 技能文档、workspace-finances/SOUL.md(删除含明文口令的旧连接块) - 注:workspace/skills/** 受 .gitignore 覆盖,db-query 技能本体的改动仅存于磁盘未入库 - 已知遗留:workspace-finances/db_config.json(含明文)被 23 个历史脚本引用,未动
100 lines
4.3 KiB
Markdown
100 lines
4.3 KiB
Markdown
---
|
||
name: "wellness"
|
||
description: "管理按摩放松记录:查询/新增技师联系人(cc_contract)和放松记录(cc_contract_record),本地 MySQL wellness 库。"
|
||
---
|
||
|
||
# Wellness — 按摩放松记录管理
|
||
|
||
管理本地 MySQL `wellness` 数据库,专注**按摩/放松**方向的技师联系人(联系方式)与每次放松记录的**查询与新增**。统计功能后续扩展。
|
||
|
||
## 数据库连接
|
||
|
||
本库 `wellness` 是 agent `wellness` 的本地私有库:库名 = agent id,账号 `agent_wellness`,唯一入口 `db-conn.sh`。
|
||
|
||
```bash
|
||
# 推荐(新机制唯一入口)
|
||
~/.openclaw/scripts/db-conn.sh wellness --sql "<SQL>"
|
||
|
||
# 也可以走 db-query skill(内部同样走 db-conn.sh)
|
||
python3 /home/yangxuan/.openclaw/workspace/skills/db-query/scripts/db_query.py --database wellness --query "<SQL>"
|
||
```
|
||
|
||
- 连接方式:本机 Docker MySQL 容器,账号 `agent_wellness`(**禁止 root、禁止 docker exec 直连、禁止跨库**)
|
||
- 口令存 `~/.openclaw/.env` 的 `DB_PASSWORD_放松保健`,由 `db-conn.sh` 内部读取(不进命令行、不打印)
|
||
- 执行路径:`/home/yangxuan/.openclaw/workspace/skills/db-query/scripts/db_query.py`
|
||
|
||
## 表结构
|
||
|
||
### cc_contract — 技师/联系人
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | varchar(32) PK | 联系人 id |
|
||
| name | varchar(100) UNIQUE | 名称(唯一) |
|
||
| face_url | varchar(200) | 头像地址 |
|
||
| wechat / qq / phone | varchar(100) | 微信 / QQ / 电话 |
|
||
| address | varchar(500) | 地址 |
|
||
| is_read | tinyint | 是否已阅 |
|
||
| price | int | 价格 |
|
||
| description / comment | text | 描述 / 评论 |
|
||
| group_type | int | 组别:0自营 1客服 2spa |
|
||
| score | int | 评分 |
|
||
| gmt_create / gmt_update | datetime | 创建 / 更新时间 |
|
||
| status | tinyint | 0有效 1无效 |
|
||
| deleted | bit(1) | 是否删除 |
|
||
|
||
### cc_contract_record — 每次放松记录
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | varchar(50) PK | 记录 id |
|
||
| contract_id | varchar(32) | 对应联系人 id(必填) |
|
||
| contract_name | varchar(100) | 名称(冗余) |
|
||
| record_date | date | 日期(必填) |
|
||
| record_locale | varchar(200) | 地点(必填) |
|
||
| price | int | 价格 |
|
||
| score | int | 评分 |
|
||
| comment | text | 评论 |
|
||
| gmt_create / gmt_update | datetime | 创建 / 更新时间 |
|
||
|
||
## 操作规范
|
||
|
||
### 1. 查询
|
||
- 查联系人:`SELECT id,name,phone,wechat,qq,address,price,score,group_type,comment FROM cc_contract WHERE deleted=0 AND status=0`(可加 name LIKE / group_type / price 过滤)
|
||
- 查一次记录:`SELECT contract_name,record_date,record_locale,price,score,comment FROM cc_contract_record WHERE deleted=0 AND status=0 ORDER BY record_date DESC`(可加 contract_id / 日期范围过滤)
|
||
- 按技师查历史:`... WHERE contract_id='<id>' ...`
|
||
- 展示给用户时用中文清晰呈现,联系方式公开非敏感
|
||
|
||
### 2. 记录(新增)
|
||
**新增技师联系人**:
|
||
```sql
|
||
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>,
|
||
0, 0, 0, NOW(), NOW(), <score>)
|
||
```
|
||
> `<id>` 用 `UUID()` 生成(32位无横线)。若 name 已存在会因 UNIQUE 冲突报错,先查询确认。
|
||
|
||
**新增一次放松记录**:
|
||
```sql
|
||
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>',
|
||
0, 0, 0, NOW(), NOW())
|
||
```
|
||
> contract_id 需先从 cc_contract 查到对应联系人 id;record_date 用 `YYYY-MM-DD`;record_locale 必填。
|
||
|
||
### 3. 更新 / 软删
|
||
- 更新联系人/记录:`UPDATE ... WHERE id='<id>'`(保留软删字段不变)
|
||
- 软删:`UPDATE cc_contract SET status=1,deleted=1 WHERE id='<id>'`(不物理删除)
|
||
|
||
⚠️ **写入前先 SELECT 确认目标存在**,避免误操作。所有写入均通过 db-query 脚本执行。
|
||
|
||
## 通用原则
|
||
- 全程中文交互
|
||
- 联系方式非敏感信息,正常展示,但**不向第三方外泄**
|
||
- 任何删除/批量修改操作前,先向杨轩展示精确清单并确认
|
||
- 统计/报表功能后续扩展,暂不做
|