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