当前位置: 首页 > ai >正文

Dify实战,获取禅道需求,编写测试用例到禅道

前言:本文包含禅道本地部署,dify工作流创建等内容

一、本地部署禅道

1、本地创建一个文件,把docker-compose.yaml放进去,需要docker-compose.yaml文件的同学,可以找我要

2、docker_compose.yaml里面的镜像改成国内的镜像了,数据库ports:3306:3306,端口映射,需要先看下电脑本地的3306端口有没有被占用,如果占用,需要改一下

3、默认端口改成81,因为dify用的是80端口

4、修改好之后,就可以进入文件夹的字段,输入docker compose up -d,启动禅道服务,本地通过http://localhost:81/进行访问通过127.0.0.1:81也可以

5、在禅道里面创建用户,项目,需求

二、禅道介绍

1、需要在禅道里面创建用户,项目,需求

2、连接禅道数据库

3、禅道所有的表都是放在zentao里面的,

zt_story是需求表,

zt_storyspac需求详情表,需求里面包含很多html的内容

4、拿到目标表的表结构,ddl里面拿

三、禅道生成测试用例

思路:

1、用户输入自然语言

2、大模型解析自然语言,转成sql(执行sql、调用接口),因为y禅道页面不是通过调用接口的形式获取数据,所以需要执行sql

3、工作流调用接口执行sql,查询到需求

接口:

参数:sql

功能:连接数据库,执行查询类的sql,返回查询后的结果,json格式大模型比较任意理解

入参

{

    "sql":"select * from xxx where xx=xx"

}

[

{

    "id":"需求id",

    "title":"需求标题",

    "spec":"需求描述"

},

{

    "id":"需求id",

    "title":"需求标题",

    "spec":"需求描述"

}

]

4、大模型对需求进行理解,编写测试用例

5、工作流带调用另外一个接口去执行insert语句,把测试用例写到禅道数据库中

自然语言转sql:NL2SQL,MCP协议

四、Dify创建ChatFlow

大模型的系统提示词,可以先试一下能不能写出满意的sql

# 角色:
你是一个mysql专家## 目标:
用户会输入一个根据需求范围编写测试用例,你只需要分析需求的范围,参考表结构,生成能查询出对应需求范围的sql语句。
示例:用户输入”请把分配给xiaomi的需求编写成用例“。只需要生成查询需求的sql语句,把分配给xaiomi的需求明细查询出来即可,不需要写用例## 技能
-善于理解用户需求
-善于编写sql语句,熟悉mysql数据库
-熟悉mysql单表查询,以及分组,排序,聚合函数等
-熟悉mysql多表查询,内连接,左连接##表结构
### zt_story表(需求表)
- id, mediumint, 用户故事ID
- vision, varchar, 所属版本
- product, mediumint, 所属产品ID
- module, mediumint, 所属模块ID
- title, varchar, 需求标题
- status, enum, 当前状态('changing','active','draft','reviewing','closed')
- subStatus, varchar, 子状态
- stage, enum, 当前阶段
- openedBy, varchar, 创建人
- openedDate, datetime, 创建时间(格式:2025-02-08 10:51:26)
- assignedTo, varchar, 指派给
- assignedDate, datetime, 分配日期
- duplicateStory, mediumint, 重复需求ID
- version, smallint, 版本号### zt_storyspec表(需求明细表)
- story, mediumint, 关联的用户故事ID
- version, smallint, 版本号
- title, varchar, 需求标题
- spec, mediumtext, 需求描述/详细说明## 工作流:
1、分析用户的查询目标,筛选出条件和需要查询的字段,确定用户数据存在于哪写表中
2、根据用户需求确定是需要单表查询还是需要多表查询
3、如果是多表查询,分析是内连接还是左连接
4、将自然语言条件转换成sql语法,如select语句,包含正确的字段,表关联和条件
5、按照下方指定的<验证和纠错机制>对生成的sql语句进行验证## 验证于纠错机制
-语法检查:使用sql解释器(如sqlparse)验证语法
-字段匹配:对比生成的字段是否存在于表结构中
-语义校验:确定条件逻辑于用户意图一致## 限制
-只使用提供的表结构字段
-禁止在sql中添加注释
-仅生成标准sql语句,无需解释
-禁止在select语句前添加NBSP,即Non-breaking space## 错误处理
-如果字段名和表结构不匹配,返回’NULL‘
-如果存在歧义条件(如:”公司牛马“),返回”NULL“
-如果出现涉及未提供的表,返回”NULL“
-如果信息不完整或矛盾,返回”NULL“## 示例
用户输入:查询出分配给zhangsan的需求明细
输出SQL:select st.id, sts.title, sts.spec  from zt_story st inner join zt_storyspec sts on st.id = sts.story where st.assignedTo = 'zhangsan'用户输入:查询当前状态为active的需求明细
输出SQL:select  st.id, sts.title, sts.spec from zt_story st inner join zt_storyspec sts on st.id = sts.story where st.status = 'active'

五、编写接口,执行sql

可以用通义灵码编写接口,编写接口的提示词

# 背景
用python编写一个http接口,可以执行用户上传那个的sql语句 
# 需求
连接mysql,执行用户上传那个的sql语句,把查询出来的结果返回给客户端#函数入参
##入参
{"sql":"用户上传的sql"
}#函数返回
返回一个对象数组 
示例:
[
{"id":"需求id","title":"需求标题","spec":"需求描述"
},
{"id":"需求id","title":"需求标题","spec":"需求描述"
}
]

写完可以用postma进行测试

未完待续

http://www.xdnf.cn/news/16004.html

相关文章:

  • 【图像翻转+图像的仿射变换】——图像预处理(OpenCV)
  • 05-ES6
  • 【Spring Cloud Gateway 实战系列】基础篇:路由、断言、过滤器、负载均衡深度解析
  • vscode怎么安装MINGW
  • 利用 Playwright MCP 构建浏览器自动化流程:技术路径与操作解析
  • Spring @Value注解终极指南
  • 传统RNN模型笔记:输入数据长度变化的结构解析
  • 二分查找----2.搜索二维矩阵
  • docker部署postgresql
  • 美区跨境卖家尾程物流怎么操作?美国跨境物流自发货走什么?
  • 力扣146:LRU缓存
  • DIOR-ViT:用于病理图像癌症分类的差分序数学习视觉Transformer|文献速递-医学影像算法文献分享
  • 基于Python flask的常用AI工具功能数据分析与可视化系统设计与实现,技术包括LSTM、SVM、朴素贝叶斯三种算法,echart可视化
  • LIMO:仅需817样本激活大模型数学推理能力,挑战“数据规模至上”传统范式
  • 传统RNN模型
  • 嵌入式开发学习(第三阶段 Linux系统开发)
  • 2025年6月GESP(C++五级):最大公因数
  • 【多任务YOLO】A-YOLOM
  • 面试题:sql题一
  • Spring Boot环境搭建与核心原理深度解析
  • 嵌入式开发学习———Linux环境下数据结构学习(一)
  • GitHub 上的开源项目 ticktick(滴答清单)
  • Kotlin伴生对象
  • Kotlin 作用域函数 let 的实现原理
  • 什么是检索增强生成(RAG)?
  • 深入浅出控制反转与依赖注入:从理论到实践
  • 社交电商推客系统全栈开发指南:SpringCloud+分润算法+Flutter跨端
  • 深度学习篇---车道线循迹
  • CMake实践:CMake3.30版本之前和之后链接boost的方式差异
  • Pulsar存储计算分离架构设计之Broker无状态