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

3.8 KiB
Raw Blame History

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说明

    cat .skills/flower-db-access/SKILL.md
    
  2. 测试SSH连接

    # SSH key认证
    ssh -p 18762 root@8.148.215.233 "echo '连接成功'"
    
    # 或交互式SSH
    ssh -p 18762 root@8.148.215.233
    # 
    
  3. 测试数据库连接

    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

# 快速查询工具
./.skills/flower-db-access/query.sh 'SELECT * FROM business_salesorder LIMIT 10'

# 或通过管道
echo 'SELECT COUNT(*) FROM printing_plateorder' | ./.skills/flower-db-access/query.sh

运行示例脚本

# 远程示例通过SSH
./.skills/flower-db-access/examples-remote.sh

数据库架构

核心模块

  • basic_info: 客户、供应商、产品、仓库等基础信息
  • business: 采购、销售、退货、收付款等业务单据
  • stock: 库存变动、冻结、汇总
  • printing: 开版、印染订单和任务
  • stateflow: 工作流引擎

多租户架构

⚠️ 重要: 所有业务表都有 merchant_id 字段用于多租户隔离。查询时应该包含这个条件。

示例查询

查询最近的销售订单

SELECT id, customer_id, sales_date, status, created_at 
FROM business_salesorder 
WHERE merchant_id = 1
ORDER BY created_at DESC 
LIMIT 10;

查询库存状态

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;
\""

查询印染订单进度

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 条件

故障排查

连接失败

# 检查PostgreSQL服务状态
sudo systemctl status postgresql

# 检查数据库进程
ps aux | grep postgres

权限错误

# 检查数据库用户权限
PGPASSWORD=postgres psql -h 127.0.0.1 -p 5432 -U postgres -d flower -c "\du"

更多信息

详细的查询示例和最佳实践请参考 SKILL.md