1
0
forked from erp-dev/erp

feat: settlement lineup

This commit is contained in:
2026-03-09 22:40:02 +08:00
parent 86f5dab32b
commit 663276288e
24 changed files with 1730 additions and 33 deletions

View 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)。