实现AI生成测试项接口

This commit is contained in:
2026-05-29 16:21:14 +08:00
parent af2b7d1909
commit dfc81af93c
5 changed files with 544 additions and 480 deletions

897
cdTMP/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -13,13 +13,13 @@
"dependencies": { "dependencies": {
"@arco-design/color": "^0.4.0", "@arco-design/color": "^0.4.0",
"@arco-design/web-vue": "^2.58.0", "@arco-design/web-vue": "^2.58.0",
"@tanstack/vue-query": "^5.100.1", "@tanstack/vue-query": "^5.100.14",
"@tinymce/tinymce-vue": "^6.3.0", "@tinymce/tinymce-vue": "^6.3.0",
"@vueuse/core": "^14.2.1", "@vueuse/core": "^14.3.0",
"axios": "^1.15.2", "axios": "^1.16.1",
"class-variance-authority": "^0.7.1", "class-variance-authority": "^0.7.1",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"dayjs": "^1.11.20", "dayjs": "^1.11.21",
"file2md5": "^1.3.0", "file2md5": "^1.3.0",
"lodash-es": "^4.18.1", "lodash-es": "^4.18.1",
"mammoth": "^1.12.0", "mammoth": "^1.12.0",
@@ -28,38 +28,38 @@
"pinia": "^3.0.4", "pinia": "^3.0.4",
"pinyin-match": "^1.2.10", "pinyin-match": "^1.2.10",
"postcss-import": "^16.1.1", "postcss-import": "^16.1.1",
"qs": "^6.15.1", "qs": "^6.15.2",
"tailwind-merge": "^3.5.0", "tailwind-merge": "^3.6.0",
"tinymce": "^7.9.1", "tinymce": "^7.9.1",
"tw-animate-css": "^1.4.0", "tw-animate-css": "^1.4.0",
"vue": "^3.5.33", "vue": "^3.5.35",
"vue-clipboard3": "^2.0.0", "vue-clipboard3": "^2.0.0",
"vue-color-kit": "^1.0.6", "vue-color-kit": "^1.0.6",
"vue-data-ui": "^3.17.13", "vue-data-ui": "^3.20.11",
"vue-router": "^5.0.6", "vue-router": "^5.1.0",
"vuedraggable": "^2.24.3" "vuedraggable": "^2.24.3"
}, },
"devDependencies": { "devDependencies": {
"@tailwindcss/postcss": "^4.2.4", "@tailwindcss/postcss": "^4.3.0",
"@tailwindcss/vite": "^4.2.4", "@tailwindcss/vite": "^4.3.0",
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"@types/node": "^25.6.0", "@types/node": "^25.9.1",
"@types/nprogress": "^0.2.3", "@types/nprogress": "^0.2.3",
"@types/qs": "^6.15.0", "@types/qs": "^6.15.1",
"@vitejs/plugin-vue": "^6.0.6", "@vitejs/plugin-vue": "^6.0.7",
"@vitejs/plugin-vue-jsx": "^5.1.5", "@vitejs/plugin-vue-jsx": "^5.1.5",
"@vue/babel-plugin-jsx": "^2.0.1", "@vue/babel-plugin-jsx": "^2.0.1",
"browserslist": "^4.28.2", "browserslist": "^4.28.2",
"eslint": "^10.2.1", "eslint": "^10.4.0",
"eslint-plugin-vue": "^10.9.0", "eslint-plugin-vue": "^10.9.1",
"less": "^4.6.4", "less": "^4.6.4",
"less-loader": "^12.3.2", "less-loader": "^13.0.0",
"postcss": "^8.5.10", "postcss": "^8.5.15",
"prettier": "^3.8.3", "prettier": "^3.8.3",
"rollup-plugin-visualizer": "^7.0.1", "rollup-plugin-visualizer": "^7.0.1",
"tailwindcss": "^4.2.4", "tailwindcss": "^4.3.0",
"typescript": "^6.0.3", "typescript": "^6.0.3",
"vite": "^8.0.10", "vite": "^8.0.14",
"vue-eslint-parser": "^10.4.0" "vue-eslint-parser": "^10.4.0"
} }
} }

View File

@@ -1,23 +1,30 @@
import { request } from "@/api/request" import { request } from "@/api/request"
const AI_API_BASE = import.meta.env.VUE_APP_AI_API_BASE || "http://192.168.0.63:8777" const AI_API_BASE = import.meta.env.VUE_APP_AI_API_BASE || "http://192.168.0.63:8777"
interface DataRowType { interface DataRowType {
question: string question: string
stream: boolean streaming: boolean
} model_name: string
user_focus_points: string
export default { project_type: "cpu" | "fpga" | "other"
/** }
* 请求AI生成测试项
* @returns 可流式或一次性 interface DataType {
*/ question: string
getAiTestItem(data: DataRowType) { project_type: "cpu" | "fpga" | "other"
return request({ }
url: import.meta.env.DEV ? `/local_doc_qa/testing_item` : `${AI_API_BASE}/api/local_doc_qa/testing_item`,
timeout: 120000, export default {
method: "post", /**
data * 改为请求测试平台后端然后请求大模型方式
}) */
} getAiTestItemBackend(data: DataType) {
} return request({
url: "/local_doc_qa/testing_item",
method: "post",
timeout: 120000,
data
})
}
}

View File

@@ -160,18 +160,20 @@ const fetchTestType = async () => {
} }
fetchTestType() fetchTestType()
const designObj: any = ref()
// 初始化设计需求 // 初始化设计需求
const currentKey: string = route.query.key as string const currentKey: string = route.query.key as string
const getDesign = async () => { const getDesign = async () => {
try { try {
const res = await designApi.getDesignDemandOne({ project_id: route.query.id, key: route.query.key }) const resResult = await designApi.getDesignDemandOne({ project_id: route.query.id, key: route.query.key })
designObj.value = res.data designObj.value = resResult.data
} catch (e) { } catch (e) {
console.log("调试错误信息:", e)
Message.error("初始化设计需求信息错误,请检查网络后重试!") Message.error("初始化设计需求信息错误,请检查网络后重试!")
} }
} }
getDesign() getDesign()
const designObj: any = ref()
// 进度条和列表加载loading // 进度条和列表加载loading
const percent = ref(0.0) const percent = ref(0.0)
@@ -188,16 +190,8 @@ const generateClick = async () => {
// 变量给AI的问题 // 变量给AI的问题
const question = tool.htmlToTextWithDOM(designObj.value?.description || "") const question = tool.htmlToTextWithDOM(designObj.value?.description || "")
// 请求后处理结果 // 请求后处理结果
const res = await aiApi.getAiTestItem({ question: question, stream: false }) const res = await aiApi.getAiTestItemBackend({ question: question, project_type: isFPGA ? "fpga" : "cpu" })
// 判断真实接口和开发环境接口 const solveRes = JSON.parse(res.data.history[0].at(-1))
let tempSolve: any = null
if (res.data) {
// 说明是开发环境
tempSolve = res.data
} else {
tempSolve = res
}
const solveRes = JSON.parse(tempSolve.history[0].at(-1))
console.log("AI生成测试项结果", solveRes) console.log("AI生成测试项结果", solveRes)
// 给Vue渲染测试项 // 给Vue渲染测试项
dataList.value = solveRes dataList.value = solveRes

View File

@@ -33,7 +33,19 @@ export default ({ mode }) => {
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: false __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: false
}, },
build: { build: {
chunkSizeWarningLimit: 3000 chunkSizeWarningLimit: 3000,
rolldownOptions: {
output: {
codeSplitting: {
groups: [
{
name: "arco-design",
test: /[\\/]node_modules[\\/]@arco-design[\\/]web-vue[\\/]/
}
]
}
}
}
// assetsPublicPath: "./" // assetsPublicPath: "./"
// v8版本又报tinymce is not defined只有遗憾业务js大的问题 // v8版本又报tinymce is not defined只有遗憾业务js大的问题
/** /**