当前位置: 首页 > 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.lryc.cn/news/597032.html

相关文章:

  • [AI8051U入门第八步]硬件IIC驱动AHT10温湿度传感器
  • Web 服务器和Web 中间件
  • 主流软件开发方法综述:从敏捷到开源
  • 利用中间件实现任务去重与分发精细化:股吧舆情数据采集与分析实战
  • 如何高效合并音视频文件
  • 设计模式九:构建器模式 (Builder Pattern)
  • echarts【实战】饼状图点击高亮,其他区域变暗
  • flutter使用CupertinoPicker绘制一个传入数据源的省市区选择器
  • [Bug | Cursor] import error: No module named ‘data‘
  • C++刷题 - 7.23
  • 【C++】类和对象(中)构造函数、析构函数
  • nrm指南
  • 二级建造师学习笔记-2025
  • 2025 成都航空装备展供需发布:精准匹配,高效成交
  • 货车手机远程启动功能的详细使用步骤及注意事项
  • C#值类型属性的典型问题
  • 基于.Net Core开源的库存订单管理系统
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 主页-微博点赞量Top6实现
  • 粗大误差智能滤除:基于格拉布斯准则与机器学习的数据清洗体系​
  • 深入理解 TCP 协议:Linux 网络传输的可靠基石
  • 【Node.js】使用ts-node运行ts文件时报错: TypeError: Unknown file extension “.ts“ for ts 文件
  • Node.js 倒计时图片服务部署与 Nginx 反向代理实战总结
  • The History of Computers
  • 用 Phi-3 Mini 4K Instruct 实现轻量级模型量化与加载
  • WWDC 25 给自定义 SwiftUI 视图穿上“玻璃外衣”:最新 Liquid Glass 皮肤详解
  • 漫画机器学习播客对话图文版
  • OpenHarmony BUILD.gn中执行脚本
  • 趣玩-Ollama-Llm-Chatrbot
  • 第四章 Freertos物联网实战DHT11温湿度模块
  • 利用aruco标定板标定相机