Ver Fonte

龙虾工作流模板组件代码调整

Long há 1 semana atrás
pai
commit
a05f98a498
2 ficheiros alterados com 70 adições e 51 exclusões
  1. 35 35
      src/api/workflow/lobster.js
  2. 35 16
      src/views/lobster/template/index.vue

+ 35 - 35
src/api/workflow/lobster.js

@@ -106,143 +106,143 @@ export function regenerateWorkflow(recordId, data) {
 
 // ======== 提示词管理 ========
 export function listPrompts(params) {
-  return request({ url: '/workflow/workflow/lobster/prompt/list', method: 'get', params })
+  return request({ url: '/workflow/lobster/prompt/list', method: 'get', params })
 }
 
 export function getPrompt(id) {
-  return request({ url: `/workflow/workflow/lobster/prompt/${id}`, method: 'get' })
+  return request({ url: `/workflow/lobster/prompt/${id}`, method: 'get' })
 }
 
 export function addPrompt(data) {
-  return request({ url: '/workflow/workflow/lobster/prompt', method: 'post', data })
+  return request({ url: '/workflow/lobster/prompt', method: 'post', data })
 }
 
 export function updatePrompt(id, data) {
-  return request({ url: `/workflow/workflow/lobster/prompt/${id}`, method: 'put', data })
+  return request({ url: `/workflow/lobster/prompt/${id}`, method: 'put', data })
 }
 
 export function deletePrompt(id) {
-  return request({ url: `/workflow/workflow/lobster/prompt/${id}`, method: 'delete' })
+  return request({ url: `/workflow/lobster/prompt/${id}`, method: 'delete' })
 }
 
 export function getPromptCategories() {
-  return request({ url: '/workflow/workflow/lobster/prompt/categories', method: 'get' })
+  return request({ url: '/workflow/lobster/prompt/categories', method: 'get' })
 }
 
 export function refreshPromptCache() {
-  return request({ url: '/workflow/workflow/lobster/prompt/refresh-cache', method: 'post' })
+  return request({ url: '/workflow/lobster/prompt/refresh-cache', method: 'post' })
 }
 
 // ======== 销冠语料 ========
 export function listSalesCorpus(params) {
-  return request({ url: '/workflow/workflow/lobster/sales-corpus/list', method: 'get', params })
+  return request({ url: '/workflow/lobster/sales-corpus/list', method: 'get', params })
 }
 
 export function addCorpusDialog(data) {
-  return request({ url: '/workflow/workflow/lobster/sales-corpus/dialog', method: 'post', data })
+  return request({ url: '/workflow/lobster/sales-corpus/dialog', method: 'post', data })
 }
 
 export function batchImportCorpus(data) {
-  return request({ url: '/workflow/workflow/lobster/sales-corpus/batch-import', method: 'post', data })
+  return request({ url: '/workflow/lobster/sales-corpus/batch-import', method: 'post', data })
 }
 
 export function analyzeCorpus() {
-  return request({ url: '/workflow/workflow/lobster/sales-corpus/analyze', method: 'post' })
+  return request({ url: '/workflow/lobster/sales-corpus/analyze', method: 'post' })
 }
 
 export function getCorpusScenarios() {
-  return request({ url: '/workflow/workflow/lobster/sales-corpus/scenarios', method: 'get' })
+  return request({ url: '/workflow/lobster/sales-corpus/scenarios', method: 'get' })
 }
 
 // ======== API注册中心 ========
 export function listApiRegistry() {
-  return request({ url: '/workflow/workflow/lobster/api-registry/list', method: 'get' })
+  return request({ url: '/workflow/lobster/api-registry/list', method: 'get' })
 }
 
 export function registerApi(data) {
-  return request({ url: '/workflow/workflow/lobster/api-registry', method: 'post', data })
+  return request({ url: '/workflow/lobster/api-registry', method: 'post', data })
 }
 
 export function refreshApiCache() {
-  return request({ url: '/workflow/workflow/lobster/api-registry/refresh', method: 'post' })
+  return request({ url: '/workflow/lobster/api-registry/refresh', method: 'post' })
 }
 
 export function getApiCategories() {
-  return request({ url: '/workflow/workflow/lobster/api-registry/categories', method: 'get' })
+  return request({ url: '/workflow/lobster/api-registry/categories', method: 'get' })
 }
 
 // ======== 死信队列 ========
 export function listDeadLetters() {
-  return request({ url: '/workflow/workflow/lobster/dead-letter/list', method: 'get' })
+  return request({ url: '/workflow/lobster/dead-letter/list', method: 'get' })
 }
 
 export function retryAllDeadLetters() {
-  return request({ url: '/workflow/workflow/lobster/dead-letter/retry-all', method: 'post' })
+  return request({ url: '/workflow/lobster/dead-letter/retry-all', method: 'post' })
 }
 
 export function getDeadLetterStats() {
-  return request({ url: '/workflow/workflow/lobster/dead-letter/stats', method: 'get' })
+  return request({ url: '/workflow/lobster/dead-letter/stats', method: 'get' })
 }
 
 // ======== 节点审核 ========
 export function listEventAudits(params) {
-  return request({ url: '/workflow/workflow/lobster/event-audit/list', method: 'get', params })
+  return request({ url: '/workflow/lobster/event-audit/list', method: 'get', params })
 }
 
 export function approveEvent(id) {
-  return request({ url: `/workflow/workflow/lobster/event-audit/approve/${id}`, method: 'post' })
+  return request({ url: `/workflow/lobster/event-audit/approve/${id}`, method: 'post' })
 }
 
 export function rejectEvent(id, data) {
-  return request({ url: `/workflow/workflow/lobster/event-audit/reject/${id}`, method: 'post', data })
+  return request({ url: `/workflow/lobster/event-audit/reject/${id}`, method: 'post', data })
 }
 
 export function getEventAuditDetail(id) {
-  return request({ url: `/workflow/workflow/lobster/event-audit/${id}`, method: 'get' })
+  return request({ url: `/workflow/lobster/event-audit/${id}`, method: 'get' })
 }
 
 // ======== 优化建议 ========
 export function listPendingAudit(params) {
-  return request({ url: '/workflow/workflow/lobster/optimization/pending-audit', method: 'get', params })
+  return request({ url: '/workflow/lobster/optimization/pending-audit', method: 'get', params })
 }
 
 export function batchAuditOptimization(data) {
-  return request({ url: '/workflow/workflow/lobster/optimization/batch-audit', method: 'post', data })
+  return request({ url: '/workflow/lobster/optimization/batch-audit', method: 'post', data })
 }
 
 export function auditSingleOptimization(optimizationId, approved, remark) {
-  return request({ url: `/workflow/workflow/lobster/optimization/audit/${optimizationId}`, method: 'post', params: { approved, remark } })
+  return request({ url: `/workflow/lobster/optimization/audit/${optimizationId}`, method: 'post', params: { approved, remark } })
 }
 
 export function analyzeOptimization(externalUserId, workflowId) {
-  return request({ url: '/workflow/workflow/lobster/optimization/analyze', method: 'post', params: { externalUserId, workflowId } })
+  return request({ url: '/workflow/lobster/optimization/analyze', method: 'post', params: { externalUserId, workflowId } })
 }
 
 export function getOptimizationStats() {
-  return request({ url: '/workflow/workflow/lobster/optimization/stats', method: 'get' })
+  return request({ url: '/workflow/lobster/optimization/stats', method: 'get' })
 }
 
 export function getOptimizationConfig(params) {
-  return request({ url: '/workflow/workflow/lobster/optimization/config', method: 'get', params })
+  return request({ url: '/workflow/lobster/optimization/config', method: 'get', params })
 }
 
 export function setOptimizationConfig(data) {
-  return request({ url: '/workflow/workflow/lobster/optimization/config', method: 'post', data })
+  return request({ url: '/workflow/lobster/optimization/config', method: 'post', data })
 }
 
 // ======== Token计费 ========
 export function getTokenCoefficient() {
-  return request({ url: '/workflow/workflow/lobster/billing/token-coefficient', method: 'get' })
+  return request({ url: '/workflow/lobster/billing/token-coefficient', method: 'get' })
 }
 
 export function updateTokenCoefficient(data) {
-  return request({ url: '/workflow/workflow/lobster/billing/token-coefficient', method: 'put', data })
+  return request({ url: '/workflow/lobster/billing/token-coefficient', method: 'put', data })
 }
 
 export function listBillingRecords(params) {
-  return request({ url: '/workflow/workflow/lobster/billing/records', method: 'get', params })
+  return request({ url: '/workflow/lobster/billing/records', method: 'get', params })
 }
 
 export function getBillingTypes() {
-  return request({ url: '/workflow/workflow/lobster/billing/types', method: 'get' })
-}
+  return request({ url: '/workflow/lobster/billing/types', method: 'get' })
+}

+ 35 - 16
src/views/lobster/template/index.vue

@@ -27,22 +27,22 @@
 
     <el-table border v-loading="loading" :data="list">
       <el-table-column label="模板ID" align="center" prop="id" width="60" />
-      <el-table-column label="模板名称" align="center" prop="prompt_name" show-overflow-tooltip />
-      <el-table-column label="标识" align="center" prop="prompt_key" width="120" />
-      <el-table-column label="分类" align="center" prop="prompt_category" width="100" />
-      <el-table-column label="模型" align="center" prop="model_name" width="100" />
-      <el-table-column label="行业" align="center" prop="industry_type" width="80" />
+      <el-table-column label="模板名称" align="center" prop="promptName" show-overflow-tooltip />
+      <el-table-column label="标识" align="center" prop="promptKey" width="120" />
+      <el-table-column label="分类" align="center" prop="promptCategory" width="100" />
+      <el-table-column label="模型" align="center" prop="modelName" width="100" />
+      <el-table-column label="行业" align="center" prop="industryType" width="80" />
       <el-table-column label="状态" align="center" width="80">
         <template slot-scope="scope">
           <el-tag v-if="scope.row.enabled===1" type="success" size="small">启用</el-tag>
           <el-tag v-else type="info" size="small">禁用</el-tag>
         </template>
       </el-table-column>
-      <el-table-column label="创建时间" align="center" prop="create_time" width="160" />
+      <el-table-column label="创建时间" align="center" prop="createTime" width="160" />
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="240">
         <template slot-scope="scope">
           <el-button size="mini" type="text" icon="el-icon-view" @click="handleDetail(scope.row)">详情</el-button>
-          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleEditCanvas(scope.row)" v-hasPermi="['workflow:lobster:edit']">编辑</el-button>
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleEdit(scope.row)" v-hasPermi="['workflow:lobster:edit']">编辑</el-button>
           <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['workflow:lobster:edit']">删除</el-button>
         </template>
       </el-table-column>
@@ -52,16 +52,16 @@
 
     <el-dialog title="模板详情" :visible.sync="detailVisible" width="600px" append-to-body>
       <el-descriptions :column="2" border>
-        <el-descriptions-item label="模板名称">{{ detail.prompt_name }}</el-descriptions-item>
-        <el-descriptions-item label="标识">{{ detail.prompt_key }}</el-descriptions-item>
-        <el-descriptions-item label="分类">{{ detail.prompt_category }}</el-descriptions-item>
-        <el-descriptions-item label="模型">{{ detail.model_name }}</el-descriptions-item>
-        <el-descriptions-item label="行业">{{ detail.industry_type }}</el-descriptions-item>
+        <el-descriptions-item label="模板名称">{{ detail.promptName }}</el-descriptions-item>
+        <el-descriptions-item label="标识">{{ detail.promptKey }}</el-descriptions-item>
+        <el-descriptions-item label="分类">{{ detail.promptCategory }}</el-descriptions-item>
+        <el-descriptions-item label="模型">{{ detail.modelName }}</el-descriptions-item>
+        <el-descriptions-item label="行业">{{ detail.industryType }}</el-descriptions-item>
         <el-descriptions-item label="状态">{{ detail.enabled===1?'启用':'禁用' }}</el-descriptions-item>
-        <el-descriptions-item label="创建时间">{{ detail.create_time }}</el-descriptions-item>
+        <el-descriptions-item label="创建时间">{{ detail.createTime }}</el-descriptions-item>
       </el-descriptions>
       <el-divider>模板内容</el-divider>
-      <div style="white-space:pre-wrap;max-height:300px;overflow:auto;background:#f5f7fa;padding:10px;font-size:12px">{{ detail.prompt_content }}</div>
+      <div style="white-space:pre-wrap;max-height:300px;overflow:auto;background:#f5f7fa;padding:10px;font-size:12px">{{ detail.promptContent }}</div>
       <div slot="footer">
         <el-button @click="detailVisible=false">关闭</el-button>
         <el-button type="primary" @click="detailVisible=false; handleEditCanvas(detail)">进入画布编辑</el-button>
@@ -84,6 +84,9 @@
         <el-form-item label="模板内容" prop="promptContent">
           <el-input v-model="form.promptContent" type="textarea" :rows="4" placeholder="请输入模板内容" />
         </el-form-item>
+        <el-form-item label="模型">
+          <el-input v-model="form.modelName" placeholder="请输入模型名称,如 doubao-lite" />
+        </el-form-item>
         <el-form-item label="行业类型">
           <el-input v-model="form.industryType" placeholder="请输入行业类型" />
         </el-form-item>
@@ -143,16 +146,32 @@ export default {
       getPrompt(row.id).then(res => { this.detail = res.data || {}; this.detailVisible = true })
     },
     handleEditCanvas(row) {
-      this.$router.push({ path: '/lobster/workflow-canvas', query: { templateId: row.id || row.prompt_id } })
+      this.$router.push({ path: '/lobster/production-workflow/canvas', query: { templateId: row.id || row.promptKey } })
     },
     goToGenerate() {
       this.$router.push('/lobster/workflow-generate')
     },
     handleAdd() {
-      this.form = { promptName: '', promptKey: '', promptCategory: '', promptContent: '', industryType: '' }
+      this.form = { promptName: '', promptKey: '', promptCategory: '', promptContent: '', modelName: '', industryType: '' }
       this.dialogTitle = '新增模板'
       this.dialogVisible = true
     },
+    handleEdit(row) {
+      getPrompt(row.id).then(res => {
+        const data = res.data || {}
+        this.form = {
+          id: data.id,
+          promptName: data.promptName || '',
+          promptKey: data.promptKey || '',
+          promptCategory: data.promptCategory || '',
+          promptContent: data.promptContent || '',
+          modelName: data.modelName || '',
+          industryType: data.industryType || ''
+        }
+        this.dialogTitle = '编辑模板'
+        this.dialogVisible = true
+      })
+    },
     handleDelete(row) {
       this.$confirm('确定删除该模板吗?', '提示', { type: 'warning' }).then(() => {
         deletePrompt(row.id).then(() => { this.$message.success('删除成功'); this.getList() })