forked from erp-dev/erp
feat: settlement lineup
This commit is contained in:
161
.skills/flower-db-access/README.md
Normal file
161
.skills/flower-db-access/README.md
Normal file
@@ -0,0 +1,161 @@
|
||||
# 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)。
|
||||
Reference in New Issue
Block a user