向AI学习项目技能(六)

现在的用例平台,生成的用例比较宽泛,现在针对具体的需求点生成对应的用例

所以在下面新增需求点,点击旁边的生成用例按钮,会根据之前上传的需求文档来写测试用例,

点击生成用例 ,把需求点传给消息队列

下游去获取文档

新建2个需求下发的topic,分别是

ai-requirement-generate: ai.requirement.generate

ai-requirement-result: ai.requirement.result

报错

pika.exceptions.ChannelClosedByBroker: (404, "NOT_FOUND - no queue 'ai.requirement.generate' in vhost '/'")

先启动上游

记得在上游要添加实例化

复制代码
@Value("${mq.queue.ai-requirement-generate:ai.requirement.generate}")
    private String aiRequiretQueue;
    @Value("${mq.queue.ai-requirement-result:ai.requirement.result}")
    private String aiRequireResultQueue;
    
    @Bean
    public Queue aiRequiretQueue(){
        return new Queue(aiRequiretQueue,true);
    }

    @Bean
    public Queue aiRequireResultQueue(){
        return new Queue(aiRequireResultQueue,true);
    }

另外现在有了两个方法都调用了TASK_QUEUE.put((job_id, xx))

那get时候怎么取得对应呢

用key 字段来区分任务类型

复制代码
 TASK_QUEUE.put("doc",job_id, file_name, doc_path)
    
    在get时候
    if task[0] == "doc":
        job_id, file_name, doc_path, = task

注意

queue.Queue.put() 只接受一个参数(要放入队列的对象)

所以上面代码要改

复制代码
TASK_QUEUE.put(("doc", job_id, file_name, doc_path))  # ✅ 放入一个元组

  • 因为现在新增模块,所以要将moduleid参数带上

  • 这是前端访问接口的时候,带了moduleId参数,后端只需要把接口改下,

    /** 结合服务端已保存的需求文档与需求点描述生成 UI 用例(异步 job) */
    generateFromRequirement: (payload: {
    moduleId: string
    requirementPointId: string
    description: string
    }) =>
    request<{ jobId: string }>('/ai/generate-from-requirement', {
    method: 'POST',
    body: JSON.stringify(payload),
    }),

    // 后端接口修改
    @PostMapping("generate-from-requirement")
    public ResponseEntity<Map<String,String>> generateFormRequire(
    @RequestBody ResponseDto.GenerateFromRequirementBody body
    ){
    String jobId = docGenerateService.submitRequires(body);
    return ResponseEntity.ok(Map.of("jobId",jobId));

    复制代码
      }
      
      接受body参数
      其中参数GenerateFromRequirementBody定义如下
      public record GenerateFromRequirementBody(
              String moduleId,
              String requirementPointId,
              String description
      ) {}

    注意@RabbitListener(queues = "${mq.queue.ai-requirement-result:ai.requirement.result}")
    springboot这边监听的地方,也要同步加上moduleid,底下requirementPointId也要同步加上

    【本模块 UI 用例】走的是 GET /api/ui-tests接口,并带上当前模块 id:

    复制代码
      #python脚本修改
      #在往消息队列传的时候,把moduleId带着
      #python处理完消息队列回传 时候加上moduleId参数
      ok,err = publish(QUEUE_REQUIRE_RESULT, {
                                  "jobId": job_id,
                                  "status": "done",
                                  "type":"ui",
                                  "name": case.get("name", "Unnamed"),
                                  "description": case.get("description", ""),
                                  "targetUrl": case.get("targetUrl", ""),
                                  "code": case.get("code", ""),
                                  "prompt": case.get("prompt", ""),
                                  "steps":case.get("steps",""),
                                  "moduleId":moduleId #新加
                              })

同步添加requirementPointId参数,moduleId是上面大模块比如封禁ip,requirementPointId表示下面的小需求点,因为新加了需求点的用例,所以新增requirementPointId参数

同理,在上述添加moduleId的地方同样加上requirementPointId

注意sql也要改,不然查的不对

复制代码
    @Query("SELECT u FROM UiTestCase u WHERE u.moduleId = :moduleId AND u.requirementPointId = :requirementPointId")

现在模块对应的具体需求下的用例可以正常展示了

相关推荐
机 _ 长8 分钟前
05 智算运维|8 张卡怎么才算「捆成一张」:NCCL 实测与拓扑
运维·人工智能·算法·智算运维
用户43567829363729 分钟前
五线并行认知架构:从算力内卷到思考秩序的底层革命
人工智能
一 铭35 分钟前
WrenAI 详解:给 AI Agent 的开源 GenBI 引擎
人工智能·开源
say_fall37 分钟前
【AI大模型】MCP 模型上下文协议:客户端-服务器架构、JSON-RPC 消息与能力协商、工具发现与调用链路、与函数调用的分工
服务器·人工智能·架构
蒸蒸yyyyzwd1 小时前
后端相关学习笔记。
笔记·学习
一条大祥脚1 小时前
CuTe 与 CuTe DSL:从 C++ 模板元编程到 Python DSL 的 GPU 编程演进
开发语言·c++·python·cutlass·cute·cute dsl
早起CaiCai1 小时前
【2023-01 OM】利用深度学习算法融合异质观测实现海洋场降尺度
人工智能·深度学习·算法
周杰伦的稻香1 小时前
AI 助手 2.0:多轮对话、卡片化与文章页感知
人工智能
学长毕设1 小时前
基于SpringBoot的野生动物公益保护平台设计与实现-附源码
java·spring boot·后端
Martina_03211 小时前
AI生成3D场景从白模换成精模后镜头全偏了?用6步检查单位、枢轴与层级替换
图像处理·人工智能·3d·ai·自然语言处理·材质·1024程序员节