2.2 KiB
2.2 KiB
name, description
| name | description |
|---|---|
| fitness-db-access | 读写 fitness 库健康数据时用:中文写入须前缀 SET NAMES utf8mb4(否则报错 1265 截断),斤转 kg,写后回读校验 |
Fitness 库读写
连接方式
一律用 ~/.openclaw/scripts/db-conn.sh fitness --sql "<SQL>"(固定账号 agent_fitness)。
禁止 root、禁止 docker exec 直连、禁止访问其他 agent 的库。建表结构与字段以 AGENTS.md 为准,勿在此重复。
含中文的 SQL 必须以 SET NAMES utf8mb4; 开头
脚本内的 mysql 客户端连接字符集默认是 latin1(实测 character_set_client / character_set_results 均为 latin1)。因此:
- 写中文到 enum/文本列会直接失败:
ERROR 1265 (01000) ... Data truncated for column 'severity' at row 1 - 读中文会返回乱码(如 enum 显示成
'?')
每条含中文的 SQL 都加前缀:
~/.openclaw/scripts/db-conn.sh fitness --sql "SET NAMES utf8mb4; INSERT INTO health_status_logs (...) VALUES (...)"
写入后回读(DML 与 DDL 都适用)
--sql 以 -N -B 执行(制表符分隔、无表头),INSERT 无输出即成功。
随后同条件 SELECT 回读,确认中文无乱码、字段无截断,再报完成。
建表/改表同样静默成功,用 DESC <表>(或 SHOW CREATE TABLE <表>\G 看 COMMENT 与索引)回读确认,再报完成。
体重单位换算
用户口述单位是「斤」,而 body_records.weight 存 kg(decimal(5,1)):kg = 斤 ÷ 2。
例:132.4 斤 → 66.2。
身体尺寸 / 尺码卡查询
尺寸单一真相来源是 body_measurements(字段清单见 AGENTS.md,勿在此重复)。取最新一条即"尺码卡":
~/.openclaw/scripts/db-conn.sh fitness --sql "SET NAMES utf8mb4; SELECT measure_date, height, shoulder_width, chest, waist, hip, arm_length, inseam, note FROM body_measurements WHERE user_id='yangxuan' ORDER BY measure_date DESC LIMIT 1;"
输出身高/肩宽/胸围/腰围/臀围/裤长,必须标注腰围测法:waist 是肚脐水平实测,与裤装标注腰围尺码可能差 2-4cm,买裤时以版型说明为准。
尺寸是无单位的 cm 数(与体重不同,不做斤/公斤换算),不要套用上面的体重换算。