1
0
forked from erp-dev/erp
Files
erpnew/.skills/flower-db-access/README.md
2026-03-09 22:40:02 +08:00

162 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Flower Database Access Skill
这个skill允许可信的AI agent以只读方式访问Flower ERP数据库。
## ⚠️ 重要:远程访问
**数据库托管在远程服务器上必须先通过SSH连接才能访问数据库。**
### SSH连接信息
- 远程服务器: `8.148.215.233`
- SSH用户: `root`
- SSH密码: `Zu0We!1216*`
## 安装
这个skill已经位于项目的 `.skills/flower-db-access/` 目录中。
## 使用方法
### 对于开发者
1. **查看skill说明**
```bash
cat .skills/flower-db-access/SKILL.md
```
2. **测试SSH连接**
```bash
# SSH key认证
ssh -p 18762 root@8.148.215.233 "echo '连接成功'"
# 或交互式SSH
ssh -p 18762 root@8.148.215.233
#
```
3. **测试数据库连接**
```bash
ssh -p 18762 root@8.148.215.233 \
"PGPASSWORD=postgres psql -h 127.0.0.1 -p 5432 -U postgres -d flower -c '\dt'"
```
### 对于AI Agent
当AI agent被授予权限使用这个skill时它可以
1. **通过SSH连接到远程服务器**
2. **读取所有业务表**(除了认证相关表)
3. **执行SELECT查询**进行数据分析
4. **生成报告和统计信息**
5. **调试数据问题**
**禁止操作**
- 所有写操作INSERT, UPDATE, DELETE等
- 访问认证相关表auth_user, auth_permission等
## 快速查询工具
### 使用 query.sh
```bash
# 快速查询工具
./.skills/flower-db-access/query.sh 'SELECT * FROM business_salesorder LIMIT 10'
# 或通过管道
echo 'SELECT COUNT(*) FROM printing_plateorder' | ./.skills/flower-db-access/query.sh
```
### 运行示例脚本
```bash
# 远程示例通过SSH
./.skills/flower-db-access/examples-remote.sh
```
## 数据库架构
### 核心模块
- **basic_info**: 客户、供应商、产品、仓库等基础信息
- **business**: 采购、销售、退货、收付款等业务单据
- **stock**: 库存变动、冻结、汇总
- **printing**: 开版、印染订单和任务
- **stateflow**: 工作流引擎
### 多租户架构
⚠️ **重要**: 所有业务表都有 `merchant_id` 字段用于多租户隔离。查询时应该包含这个条件。
## 示例查询
### 查询最近的销售订单
```sql
SELECT id, customer_id, sales_date, status, created_at
FROM business_salesorder
WHERE merchant_id = 1
ORDER BY created_at DESC
LIMIT 10;
```
### 查询库存状态
```bash
ssh -p 18762 root@8.148.215.233 \
"PGPASSWORD=postgres psql -h 127.0.0.1 -p 5432 -U postgres -d flower -c \"
SELECT
p.name as product_name,
w.name as warehouse,
si.quantity,
p.unit
FROM stock_inventory si
JOIN basic_info_product p ON si.product_id = p.id
JOIN basic_info_warehouse w ON si.warehouse_id = w.id
WHERE si.merchant_id = 1
AND si.quantity > 0
ORDER BY si.quantity DESC;
\""
```
### 查询印染订单进度
```bash
ssh -p 18762 root@8.148.215.233 \
"PGPASSWORD=postgres psql -h 127.0.0.1 -p 5432 -U postgres -d flower -c \"
SELECT
po.human_id,
po.fabric,
COUNT(pj.id) as job_count
FROM printing_printingorder po
LEFT JOIN printing_printingjob pj ON pj.printing_order_id = po.id
WHERE po.merchant_id = 1
AND po.is_invalid = false
GROUP BY po.id, po.human_id, po.fabric
ORDER BY po.created_at DESC
LIMIT 20;
\""
```
## 安全注意事项
1. **只读访问**: 此skill严格限制为只读任何写操作都会被拒绝
2. **认证表保护**: auth_* 表完全禁止访问
3. **多租户隔离**: 查询时必须考虑 merchant_id
4. **性能考虑**: 大表查询时使用 LIMIT 和适当的 WHERE 条件
## 故障排查
### 连接失败
```bash
# 检查PostgreSQL服务状态
sudo systemctl status postgresql
# 检查数据库进程
ps aux | grep postgres
```
### 权限错误
```bash
# 检查数据库用户权限
PGPASSWORD=postgres psql -h 127.0.0.1 -p 5432 -U postgres -d flower -c "\du"
```
## 更多信息
详细的查询示例和最佳实践请参考 [SKILL.md](./SKILL.md)。