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

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.dtcms.com/a/294190.html

相关文章:

  • 什么是5G-A三防平板?有什么特点?哪些领域能用到?
  • 幂等性简单介绍
  • 网络与信息安全有哪些岗位:(2)渗透测试工程师
  • 耐达讯自动化EtherCAT转RS232:示波器连接的“开挂秘籍”
  • 在mac 上zsh 如何安装最新的 go 工具
  • CGA老年人能力评估师:提升老年生活质量
  • SOLIDWORKS2025教育版集成了电气与自动化设计功能
  • iOS上使用WebRTC推拉流的案例
  • RabbitMQ有多少种Exchange?
  • 微软2025教育AI报告:教育群体采用AI的比例显著提升
  • 【lucene】实现knn
  • Vue TodoList案例
  • Task 01 学习笔记
  • 若依前后端分离版学习笔记(二)——系统菜单介绍
  • 在写作软件中画地图,Canvas 绘图在地图设计中应用
  • 音视频学习(四十三):H264无损压缩
  • 基于CEEMDAN+SSA-TCN-BiLSTM-Attention的混合预测模型
  • 汽车电子架构
  • UE5 如何显示蓝图运行流程
  • MySQL进阶学习与初阶复习第一天
  • 音视频中一些常见的知识点
  • OpenCV(01)基本图像操作、绘制,读取视频
  • 枚举右,维护左
  • 【音视频学习】四、深入解析视频技术中的YUV数据存储方式:从原理到实践
  • Web3 开发者进阶学习图谱
  • 面向对象分析与设计40讲(7)设计原则之合成复用原则
  • 用 PyTorch 实现全连接网络识别 MNIST 手写数字
  • 【Unity编辑器开发与拓展Handles】
  • PyTorch中nn.Module详解和综合代码示例
  • 不同地区的主要搜索引擎工具