Bläddra i källkod

Merge remote-tracking branch 'origin/master'

yh 6 dagar sedan
förälder
incheckning
a9d38fd03a

+ 170 - 0
fs-company/src/main/java/com/fs/company/controller/crm/CrmCustomerPropertyController.java

@@ -0,0 +1,170 @@
+package com.fs.company.controller.crm;
+
+import com.fs.common.annotation.Log;
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.core.domain.R;
+import com.fs.common.enums.BusinessType;
+import com.fs.common.utils.ServletUtils;
+import com.fs.common.utils.poi.ExcelUtil;
+import com.fs.crm.domain.CrmCustomerProperty;
+import com.fs.crm.service.ICrmCustomerPropertyService;
+import com.fs.framework.security.LoginUser;
+import com.fs.framework.service.TokenService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+@Api(tags = "客户属性标签管理")
+@RestController
+@RequestMapping("/crm/customerProperty")
+public class CrmCustomerPropertyController extends BaseController {
+
+    @Autowired
+    private ICrmCustomerPropertyService crmCustomerPropertyService;
+
+    @Autowired
+    private TokenService tokenService;
+
+    @ApiOperation("根据客户 ID 查询属性标签列表")
+    @PreAuthorize("@ss.hasPermi('crm:customer:query')")
+    @GetMapping("/list/{customerId}")
+    public R listByCustomerId(@PathVariable("customerId") Long customerId) {
+        List<CrmCustomerProperty> list = crmCustomerPropertyService.selectCrmCustomerPropertyByCustomerId(customerId);
+        return R.ok().put("data", list);
+    }
+
+    @ApiOperation("查询单个属性标签详情")
+    @PreAuthorize("@ss.hasPermi('crm:customer:query')")
+    @GetMapping("/{id}")
+    public R getInfo(@PathVariable("id") Long id) {
+        CrmCustomerProperty property = crmCustomerPropertyService.selectCrmCustomerPropertyById(id);
+        return R.ok().put("data", property);
+    }
+
+    @ApiOperation("为客户添加属性标签")
+    @PreAuthorize("@ss.hasPermi('crm:customer:edit')")
+    @Log(title = "客户属性标签", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody CrmCustomerProperty property) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        property.setCreateBy(loginUser.getUsername());
+        return toAjax(crmCustomerPropertyService.insertCrmCustomerProperty(property));
+    }
+
+    @ApiOperation("为客户添加或更新属性标签")
+    @PreAuthorize("@ss.hasPermi('crm:customer:edit')")
+    @Log(title = "客户属性标签", businessType = BusinessType.UPDATE)
+    @PostMapping("/addOrUpdate")
+    public AjaxResult addOrUpdate(@RequestBody CrmCustomerProperty property) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        return toAjax(crmCustomerPropertyService.addOrUpdateCustomerPropertyWithExtra(
+                property.getCustomerId(),
+                property.getPropertyId(),
+                property.getPropertyName(),
+                property.getPropertyValue(),
+                property.getPropertyValueType(),
+                property.getTradeType(),
+                property.getIntention(),
+                property.getLikeRatio(),
+                loginUser.getUsername()
+        ));
+    }
+
+    @ApiOperation("批量为客户添加属性标签")
+    @PreAuthorize("@ss.hasPermi('crm:customer:edit')")
+    @Log(title = "客户属性标签", businessType = BusinessType.INSERT)
+    @PostMapping("/batchAdd/{customerId}")
+    public AjaxResult batchAdd(
+            @PathVariable("customerId") Long customerId,
+            @RequestBody List<CrmCustomerProperty> properties) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        for (CrmCustomerProperty property : properties) {
+            property.setCreateBy(loginUser.getUsername());
+        }
+        return toAjax(crmCustomerPropertyService.batchAddCustomerProperties(customerId, properties));
+    }
+
+    @ApiOperation("通过属性模板 ID 为客户添加标签")
+    @PreAuthorize("@ss.hasPermi('crm:customer:edit')")
+    @Log(title = "客户属性标签", businessType = BusinessType.INSERT)
+    @PostMapping("/addByTemplateId")
+    public AjaxResult addByTemplateId(
+            @ApiParam(required = true, name = "customerId", value = "客户 ID") @RequestParam Long customerId,
+            @ApiParam(required = true, name = "templateId", value = "属性模板 ID") @RequestParam Long templateId,
+            @ApiParam(required = true, name = "propertyValue", value = "属性值") @RequestParam String propertyValue) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        return toAjax(crmCustomerPropertyService.addPropertyByTemplateId(customerId, templateId, propertyValue, loginUser.getUsername()));
+    }
+
+    @ApiOperation("通过属性模板 ID 为客户添加或更新标签")
+    @PreAuthorize("@ss.hasPermi('crm:customer:edit')")
+    @Log(title = "客户属性标签", businessType = BusinessType.UPDATE)
+    @PostMapping("/addOrUpdateByTemplateId")
+    public AjaxResult addOrUpdateByTemplateId(
+            @ApiParam(required = true, name = "customerId", value = "客户 ID") @RequestParam Long customerId,
+            @ApiParam(required = true, name = "templateId", value = "属性模板 ID") @RequestParam Long templateId,
+            @ApiParam(required = true, name = "propertyValue", value = "属性值") @RequestParam String propertyValue) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        return toAjax(crmCustomerPropertyService.addOrUpdatePropertyByTemplateId(customerId, templateId, propertyValue, loginUser.getUsername()));
+    }
+
+    @ApiOperation("批量通过属性模板 ID 为客户添加标签")
+    @PreAuthorize("@ss.hasPermi('crm:customer:edit')")
+    @Log(title = "客户属性标签", businessType = BusinessType.INSERT)
+    @PostMapping("/batchAddByTemplateIds/{customerId}")
+    public AjaxResult batchAddByTemplateIds(
+            @PathVariable("customerId") Long customerId,
+            @RequestBody Map<Long, String> propertyMap) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        return toAjax(crmCustomerPropertyService.batchAddPropertiesByTemplateIds(customerId, propertyMap, loginUser.getUsername()));
+    }
+
+    @ApiOperation("修改客户属性标签")
+    @PreAuthorize("@ss.hasPermi('crm:customer:edit')")
+    @Log(title = "客户属性标签", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody CrmCustomerProperty property) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        property.setUpdateBy(loginUser.getUsername());
+        return toAjax(crmCustomerPropertyService.updateCrmCustomerProperty(property));
+    }
+
+    @ApiOperation("删除客户属性标签")
+    @PreAuthorize("@ss.hasPermi('crm:customer:edit')")
+    @Log(title = "客户属性标签", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(crmCustomerPropertyService.deleteCrmCustomerPropertyByIds(ids));
+    }
+
+    @ApiOperation("删除客户单个属性标签")
+    @PreAuthorize("@ss.hasPermi('crm:customer:edit')")
+    @Log(title = "客户属性标签", businessType = BusinessType.DELETE)
+    @DeleteMapping("/deleteByPropertyId")
+    public AjaxResult deleteByPropertyId(
+            @ApiParam(required = true, name = "customerId", value = "客户 ID") @RequestParam Long customerId,
+            @ApiParam(required = true, name = "propertyId", value = "属性模板 ID") @RequestParam Long propertyId) {
+        return toAjax(crmCustomerPropertyService.lambdaUpdate()
+                .eq(CrmCustomerProperty::getCustomerId, customerId)
+                .eq(CrmCustomerProperty::getPropertyId, propertyId)
+                .remove());
+    }
+
+    @ApiOperation("导出客户属性标签")
+    @PreAuthorize("@ss.hasPermi('crm:customer:export')")
+    @Log(title = "客户属性标签", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(CrmCustomerProperty crmCustomerProperty) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        List<CrmCustomerProperty> list = crmCustomerPropertyService.selectCrmCustomerPropertyList(crmCustomerProperty);
+        ExcelUtil<CrmCustomerProperty> util = new ExcelUtil<CrmCustomerProperty>(CrmCustomerProperty.class);
+        return util.exportExcel(list, "客户属性标签数据");
+    }
+}

+ 78 - 0
fs-company/src/main/java/com/fs/company/controller/crm/CrmCustomerPropertyTemplateController.java

@@ -0,0 +1,78 @@
+package com.fs.company.controller.crm;
+
+import com.fs.common.annotation.Log;
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.core.domain.R;
+import com.fs.common.core.page.TableDataInfo;
+import com.fs.common.enums.BusinessType;
+import com.fs.common.utils.poi.ExcelUtil;
+import com.fs.crm.domain.CrmCustomerPropertyTemplate;
+import com.fs.crm.service.ICrmCustomerPropertyTemplateService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Api(tags = "客户属性标签模板管理")
+@RestController
+@RequestMapping("/crm/customerPropertyTemplate")
+public class CrmCustomerPropertyTemplateController extends BaseController {
+
+    @Autowired
+    private ICrmCustomerPropertyTemplateService crmCustomerPropertyTemplateService;
+
+    @ApiOperation("查询客户属性标签模板列表")
+    @PreAuthorize("@ss.hasPermi('crm:customer:query')")
+    @GetMapping("/list")
+    public TableDataInfo list(CrmCustomerPropertyTemplate crmCustomerPropertyTemplate) {
+        startPage();
+        List<CrmCustomerPropertyTemplate> list = crmCustomerPropertyTemplateService.selectCrmCustomerPropertyTemplateList(crmCustomerPropertyTemplate);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("查询客户属性标签模板详情")
+    @PreAuthorize("@ss.hasPermi('crm:customer:query')")
+    @GetMapping("/{id}")
+    public R getInfo(@PathVariable("id") Long id) {
+        CrmCustomerPropertyTemplate template = crmCustomerPropertyTemplateService.selectCrmCustomerPropertyTemplateById(id);
+        return R.ok().put("data", template);
+    }
+
+    @ApiOperation("添加客户属性标签模板")
+    @PreAuthorize("@ss.hasPermi('crm:customer:edit')")
+    @Log(title = "客户属性标签模板", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody CrmCustomerPropertyTemplate crmCustomerPropertyTemplate) {
+        return toAjax(crmCustomerPropertyTemplateService.insertCrmCustomerPropertyTemplate(crmCustomerPropertyTemplate));
+    }
+
+    @ApiOperation("修改客户属性标签模板")
+    @PreAuthorize("@ss.hasPermi('crm:customer:edit')")
+    @Log(title = "客户属性标签模板", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody CrmCustomerPropertyTemplate crmCustomerPropertyTemplate) {
+        return toAjax(crmCustomerPropertyTemplateService.updateCrmCustomerPropertyTemplate(crmCustomerPropertyTemplate));
+    }
+
+    @ApiOperation("删除客户属性标签模板")
+    @PreAuthorize("@ss.hasPermi('crm:customer:edit')")
+    @Log(title = "客户属性标签模板", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(crmCustomerPropertyTemplateService.deleteCrmCustomerPropertyTemplateByIds(ids));
+    }
+
+    @ApiOperation("导出客户属性标签模板")
+    @PreAuthorize("@ss.hasPermi('crm:customer:export')")
+    @Log(title = "客户属性标签模板", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(CrmCustomerPropertyTemplate crmCustomerPropertyTemplate) {
+        List<CrmCustomerPropertyTemplate> list = crmCustomerPropertyTemplateService.selectCrmCustomerPropertyTemplateList(crmCustomerPropertyTemplate);
+        ExcelUtil<CrmCustomerPropertyTemplate> util = new ExcelUtil<CrmCustomerPropertyTemplate>(CrmCustomerPropertyTemplate.class);
+        return util.exportExcel(list, "客户属性标签模板数据");
+    }
+}

+ 1 - 1
fs-service/src/main/java/com/fs/company/service/impl/call/node/AiQwAddWxTaskNode.java

@@ -34,7 +34,7 @@ public class AiQwAddWxTaskNode extends AbstractWorkflowNode {
     private static final CompanyWxClientMapper companyWxClientMapper = SpringUtils.getBean(CompanyWxClientMapper.class);
     private static final CompanyWxClientMapper companyWxClientMapper = SpringUtils.getBean(CompanyWxClientMapper.class);
     @SuppressWarnings("unchecked")
     @SuppressWarnings("unchecked")
     private static final RedisCacheT<String> redisCache = SpringUtils.getBean(RedisCacheT.class);
     private static final RedisCacheT<String> redisCache = SpringUtils.getBean(RedisCacheT.class);
-    public static final String DELAY_QW_ADD_WX_KEY = "qwAddWxTask:delay:%s:%s:";
+    public static final String DELAY_QW_ADD_WX_KEY = "qwAddWxTask:delay:%s:%s:%s";
     /**
     /**
      * 默认加微超时时间(分钟)
      * 默认加微超时时间(分钟)
      */
      */

+ 48 - 0
fs-service/src/main/resources/application-dev.yml

@@ -77,3 +77,51 @@ spring:
                     wall:
                     wall:
                         config:
                         config:
                             multi-statement-allow: true
                             multi-statement-allow: true
+        easycall:
+            type: com.alibaba.druid.pool.DruidDataSource
+            driverClassName: com.mysql.cj.jdbc.Driver
+            druid:
+                # 主库数据源
+                master:
+                    url: jdbc:mysql://129.28.164.235:3306/easycallcenter365?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                    username: root
+                    password: easycallcenter365
+                # 初始连接数
+                initialSize: 5
+                # 最小连接池数量
+                minIdle: 10
+                # 最大连接池数量
+                maxActive: 20
+                # 配置获取连接等待超时的时间
+                maxWait: 60000
+                # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+                timeBetweenEvictionRunsMillis: 60000
+                # 配置一个连接在池中最小生存的时间,单位是毫秒
+                minEvictableIdleTimeMillis: 300000
+                # 配置一个连接在池中最大生存的时间,单位是毫秒
+                maxEvictableIdleTimeMillis: 900000
+                # 配置检测连接是否有效
+                validationQuery: SELECT 1 FROM DUAL
+                testWhileIdle: true
+                testOnBorrow: false
+                testOnReturn: false
+                webStatFilter:
+                    enabled: true
+                statViewServlet:
+                    enabled: true
+                    # 设置白名单,不填则允许所有访问
+                    allow:
+                    url-pattern: /druid/*
+                    # 控制台管理用户名和密码
+                    login-username: fs
+                    login-password: 123456
+                filter:
+                    stat:
+                        enabled: true
+                        # 慢SQL记录
+                        log-slow-sql: true
+                        slow-sql-millis: 1000
+                        merge-sql: true
+                    wall:
+                        config:
+                            multi-statement-allow: true

+ 568 - 218
fs-service/src/main/resources/db/tenant-initTable.sql

@@ -2227,50 +2227,52 @@ CREATE TABLE `company_user`
 (
 (
     `user_id`                  bigint                                                 NOT NULL AUTO_INCREMENT COMMENT '用户ID',
     `user_id`                  bigint                                                 NOT NULL AUTO_INCREMENT COMMENT '用户ID',
     `dept_id`                  bigint NULL DEFAULT NULL COMMENT '部门ID',
     `dept_id`                  bigint NULL DEFAULT NULL COMMENT '部门ID',
-    `user_name`                varchar(30)   NOT NULL COMMENT '用户账号',
-    `nick_name`                varchar(30)   NOT NULL COMMENT '用户昵称',
-    `user_type`                varchar(2)   NULL DEFAULT '00' COMMENT '用户类型(00系统用户)',
-    `email`                    varchar(50)   NULL DEFAULT '' COMMENT '用户邮箱',
-    `phonenumber`              varchar(11)   NULL DEFAULT '' COMMENT '手机号码',
-    `sex`                      char(1)   NULL DEFAULT '0' COMMENT '用户性别(0男 1女 2未知)',
-    `avatar`                   varchar(100)   NULL DEFAULT '' COMMENT '头像地址',
-    `password`                 varchar(100)   NULL DEFAULT '' COMMENT '密码',
-    `status`                   char(1)   NULL DEFAULT '0' COMMENT '帐号状态(0正常 1停用)',
-    `del_flag`                 char(1)   NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
-    `login_ip`                 varchar(500)   NULL DEFAULT '' COMMENT '最后登录IP',
+    `user_name`                varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户账号',
+    `nick_name`                varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户昵称',
+    `user_type`                varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '00' COMMENT '用户类型(00系统用户)',
+    `email`                    varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '用户邮箱',
+    `phonenumber`              varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '手机号码',
+    `sex`                      char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '用户性别(0男 1女 2未知)',
+    `avatar`                   varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '头像地址',
+    `password`                 varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '密码',
+    `status`                   char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '帐号状态(0正常 1停用)',
+    `del_flag`                 char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
+    `login_ip`                 varchar(5000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '最后登录IP',
     `login_date`               datetime NULL DEFAULT NULL COMMENT '最后登录时间',
     `login_date`               datetime NULL DEFAULT NULL COMMENT '最后登录时间',
-    `create_by`                varchar(64)   NULL DEFAULT '' COMMENT '创建者',
+    `create_by`                varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者',
     `create_time`              datetime NULL DEFAULT NULL COMMENT '创建时间',
     `create_time`              datetime NULL DEFAULT NULL COMMENT '创建时间',
-    `update_by`                varchar(64)   NULL DEFAULT '' COMMENT '更新者',
+    `update_by`                varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者',
     `update_time`              datetime NULL DEFAULT NULL COMMENT '更新时间',
     `update_time`              datetime NULL DEFAULT NULL COMMENT '更新时间',
-    `remark`                   varchar(500)   NULL DEFAULT NULL COMMENT '备注',
-    `open_id`                  varchar(100)   NULL DEFAULT NULL,
-    `id_card`                  varchar(50)   NULL DEFAULT NULL COMMENT '身份证号',
+    `remark`                   varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',
+    `open_id`                  varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+    `id_card`                  varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '身份证号',
     `company_id`               int NULL DEFAULT NULL COMMENT '公司ID',
     `company_id`               int NULL DEFAULT NULL COMMENT '公司ID',
-    `qr_code_weixin`           varchar(200)   NULL DEFAULT NULL,
-    `qr_code_wecom`            varchar(200)   NULL DEFAULT NULL,
-    `jpush_id`                 varchar(20)   NULL DEFAULT NULL COMMENT '推送ID',
-    `qw_user_id`               varchar(255)   NULL DEFAULT NULL,
+    `qr_code_weixin`           varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+    `qr_code_wecom`            varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+    `jpush_id`                 varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '推送ID',
+    `qw_user_id`               varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
     `qw_status`                int NULL DEFAULT 0,
     `qw_status`                int NULL DEFAULT 0,
-    `voice_print_url`          varchar(255)   NULL DEFAULT NULL COMMENT '声纹url',
-    `address_id`               varchar(255)   NULL DEFAULT NULL,
-    `domain`                   varchar(255)   NULL DEFAULT NULL,
+    `voice_print_url`          varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '声纹url',
+    `address_id`               varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+    `domain`                   varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
     `parent_id`                int NULL DEFAULT NULL,
     `parent_id`                int NULL DEFAULT NULL,
     `is_audit`                 tinyint(1) NULL DEFAULT 0 COMMENT '是否审核',
     `is_audit`                 tinyint(1) NULL DEFAULT 0 COMMENT '是否审核',
-    `ma_open_id`               varchar(50)   NULL DEFAULT NULL COMMENT '微信小程序OPENID(如果有小程序授权)',
+    `ma_open_id`               varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '微信小程序OPENID(如果有小程序授权)',
     `is_need_register_member`  tinyint(1) NULL DEFAULT 0 COMMENT '是否需要单独注册会员,1-是,0-否(用于个微销售分享看课)',
     `is_need_register_member`  tinyint(1) NULL DEFAULT 0 COMMENT '是否需要单独注册会员,1-是,0-否(用于个微销售分享看课)',
-    `bind_code`                varchar(255)   NULL DEFAULT NULL,
+    `bind_code`                varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
     `is_allowed_all_register`  tinyint(1) NULL DEFAULT 1 COMMENT '是否允许所有方式注册会员,1-是,0-否,默认1(用于个微注册会员)',
     `is_allowed_all_register`  tinyint(1) NULL DEFAULT 1 COMMENT '是否允许所有方式注册会员,1-是,0-否,默认1(用于个微注册会员)',
     `doctor_id`                bigint NULL DEFAULT NULL COMMENT '医生id',
     `doctor_id`                bigint NULL DEFAULT NULL COMMENT '医生id',
     `is_allowed_everyone_view` tinyint NULL DEFAULT 1 COMMENT '是否允许客户能在其他销售那里能看,1-是,2-否,默认1(用于企业微信客户和销售之间的关系)',
     `is_allowed_everyone_view` tinyint NULL DEFAULT 1 COMMENT '是否允许客户能在其他销售那里能看,1-是,2-否,默认1(用于企业微信客户和销售之间的关系)',
-    `mp_open_id`               varchar(50)   NULL DEFAULT NULL COMMENT '微信服务号OPENID',
-    `union_id`                 varchar(255)   NULL DEFAULT NULL COMMENT '微信unionid',
-    `im_nick_name`             varchar(255)   NULL DEFAULT NULL COMMENT '健康管家昵称,用于App IM显示',
-    `invitation_code`          varchar(255)   NULL DEFAULT NULL COMMENT '邀请码',
+    `mp_open_id`               varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '微信服务号OPENID',
+    `union_id`                 varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '微信unionid',
+    `im_nick_name`             varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '健康管家昵称,用于App IM显示',
+    `invitation_code`          varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邀请码',
+    `cid_server_id`            bigint NULL DEFAULT NULL COMMENT 'cid服务id',
+    `ai_sip_call_user_id`      bigint NULL DEFAULT NULL COMMENT 'sip外呼绑定用户id',
     PRIMARY KEY (`user_id`) USING BTREE,
     PRIMARY KEY (`user_id`) USING BTREE,
-    UNIQUE INDEX `username`(`user_name` ASC) USING BTREE,
-    INDEX                      `idcard`(`id_card` ASC) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 9792 COMMENT = '企业员工信息表' ROW_FORMAT = DYNAMIC;
+    UNIQUE INDEX `username`(`user_name`) USING BTREE,
+    INDEX                      `idcard`(`id_card`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 9797 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '企业员工信息表' ROW_FORMAT = DYNAMIC;
 
 
 -- ----------------------------
 -- ----------------------------
 -- Table structure for company_user_card
 -- Table structure for company_user_card
@@ -2604,35 +2606,46 @@ CREATE TABLE `company_voice_package_order`
 DROP TABLE IF EXISTS `company_voice_robotic`;
 DROP TABLE IF EXISTS `company_voice_robotic`;
 CREATE TABLE `company_voice_robotic`
 CREATE TABLE `company_voice_robotic`
 (
 (
-    `id`              bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
-    `name`            varchar(255)   NULL DEFAULT NULL COMMENT '任务名称',
-    `task_name`       varchar(255)   NULL DEFAULT NULL COMMENT '三方任务名称',
-    `task_id`         bigint NULL DEFAULT NULL COMMENT '三方任务ID',
-    `robot`           bigint NULL DEFAULT NULL COMMENT '机器人ID',
-    `dialog_id`       bigint NULL DEFAULT NULL COMMENT '话术ID',
-    `mode`            int NULL DEFAULT NULL COMMENT '模式',
-    `multiplier`      int NULL DEFAULT NULL COMMENT '呼叫倍率;1-5',
-    `auto_recall`     int NULL DEFAULT NULL COMMENT '是否开启自动重呼;0否 1是',
-    `recall_times`    int NULL DEFAULT NULL COMMENT '重呼次数;最大5 0表示不自动重呼',
-    `cid_group_id`    bigint NULL DEFAULT NULL COMMENT '主叫分组ID',
-    `week_day1`       varchar(255)   NULL DEFAULT NULL COMMENT '时间段星期;0表示周天 1-6表示周一到周六',
-    `start_time1`     varchar(255)   NULL DEFAULT NULL COMMENT '开始时间',
-    `end_time1`       varchar(255)   NULL DEFAULT NULL COMMENT '结束时间',
-    `week_day2`       varchar(255)   NULL DEFAULT NULL COMMENT '时间段星期;0表示周天 1-6表示周一到周六',
-    `start_time2`     varchar(255)   NULL DEFAULT NULL COMMENT '开始时间',
-    `end_time2`       varchar(255)   NULL DEFAULT NULL COMMENT '结束时间',
-    `add_type`        int NULL DEFAULT NULL COMMENT '加微方式0平均1意向',
-    `create_time`     datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-    `create_user`     bigint NULL DEFAULT NULL COMMENT '创建人',
-    `company_user_id` bigint NULL DEFAULT NULL,
-    `company_id`      bigint NULL DEFAULT NULL,
-    `task_flow`       varchar(255)   NULL DEFAULT NULL COMMENT '任务流程',
-    `run_task_flow`   varchar(255)   NULL DEFAULT NULL COMMENT '已经执行流程',
-    `task_status`     int NULL DEFAULT 0 COMMENT '任务状态0待执行1执行中2执行中断3执行完成',
-    `add_wx_time`     int NULL DEFAULT NULL COMMENT '加微等待时间',
-    `sms_temp_id`     int NULL DEFAULT NULL COMMENT '短信模板id',
-    PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 117 COMMENT = '机器人外呼任务' ROW_FORMAT = DYNAMIC;
+    `id`                     bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+    `name`                   varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '任务名称',
+    `task_name`              varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '三方任务名称',
+    `task_id`                bigint NULL DEFAULT NULL COMMENT '三方任务ID',
+    `robot`                  bigint NULL DEFAULT NULL COMMENT '机器人ID',
+    `dialog_id`              bigint NULL DEFAULT NULL COMMENT '话术ID',
+    `mode`                   int NULL DEFAULT NULL COMMENT '模式',
+    `multiplier`             int NULL DEFAULT NULL COMMENT '呼叫倍率;1-5',
+    `auto_recall`            int NULL DEFAULT NULL COMMENT '是否开启自动重呼;0否 1是',
+    `recall_times`           int NULL DEFAULT NULL COMMENT '重呼次数;最大5 0表示不自动重呼',
+    `cid_group_id`           bigint NULL DEFAULT NULL COMMENT '主叫分组ID',
+    `week_day1`              varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '时间段星期;0表示周天 1-6表示周一到周六',
+    `start_time1`            varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '开始时间',
+    `end_time1`              varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '结束时间',
+    `week_day2`              varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '时间段星期;0表示周天 1-6表示周一到周六',
+    `start_time2`            varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '开始时间',
+    `end_time2`              varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '结束时间',
+    `add_type`               int NULL DEFAULT NULL COMMENT '加微方式0平均1意向',
+    `create_time`            datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    `create_user`            bigint NULL DEFAULT NULL COMMENT '创建人',
+    `company_user_id`        bigint NULL DEFAULT NULL,
+    `company_id`             bigint NULL DEFAULT NULL,
+    `task_flow`              varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '任务流程',
+    `run_task_flow`          varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '已经执行流程',
+    `task_status`            int NULL DEFAULT 0 COMMENT '任务状态0待执行1执行中2执行中断3执行完成',
+    `add_wx_time`            int NULL DEFAULT NULL COMMENT '加微等待时间',
+    `sms_temp_id`            int NULL DEFAULT NULL COMMENT '短信模板id',
+    `company_ai_workflow_id` int NULL DEFAULT NULL COMMENT '所选工作流程id',
+    `runtime_range_start`    time NULL DEFAULT NULL COMMENT '运行时间可执行开始时间',
+    `runtime_range_end`      time NULL DEFAULT NULL COMMENT '运行时间可执行结束时间',
+    `cid_group_no`           int NULL DEFAULT NULL COMMENT '任务执行cid分组数',
+    `is_we_com`              bigint NULL DEFAULT 1 COMMENT '加微类型1个微2企微(防止add_type被占用)',
+    `task_type`              tinyint NULL DEFAULT 1 COMMENT '任务类型:1、普通任务,2、场景任务',
+    `scene_type`             tinyint NULL DEFAULT NULL COMMENT '场景类型,字典task_scene_type',
+    `available_start_time`   time NULL DEFAULT NULL COMMENT '应用场景指定时间范围开始',
+    `available_end_time`     time NULL DEFAULT NULL COMMENT '应用场景指定时间范围结束',
+    `del_flag`               tinyint NULL DEFAULT 0 COMMENT '删除标志 0正常 1删除',
+    PRIMARY KEY (`id`) USING BTREE,
+    INDEX                    `company_scene_idx`(`company_id`, `scene_type`, `del_flag`) USING BTREE COMMENT '公司,场景索引'
+) ENGINE = InnoDB AUTO_INCREMENT = 168 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '机器人外呼任务' ROW_FORMAT = DYNAMIC;
 
 
 -- ----------------------------
 -- ----------------------------
 -- Table structure for company_voice_robotic_call_log
 -- Table structure for company_voice_robotic_call_log
@@ -2660,24 +2673,26 @@ CREATE TABLE `company_voice_robotic_call_log`
 DROP TABLE IF EXISTS `company_voice_robotic_call_log_addwx`;
 DROP TABLE IF EXISTS `company_voice_robotic_call_log_addwx`;
 CREATE TABLE `company_voice_robotic_call_log_addwx`
 CREATE TABLE `company_voice_robotic_call_log_addwx`
 (
 (
-    `log_id`        bigint NOT NULL AUTO_INCREMENT,
-    `robotic_id`    bigint NOT NULL COMMENT '任务id',
-    `wx_client_id`  bigint NULL DEFAULT NULL COMMENT 'wx_client_id',
-    `run_time`      datetime NULL DEFAULT NULL COMMENT '记录调用时间',
-    `run_param`     text   NULL COMMENT '调用参数',
-    `result`        text   NULL COMMENT '执行结果',
-    `status`        tinyint NULL DEFAULT NULL COMMENT '执行状态:1、执行中,2、执行成功,3、执行失败',
-    `create_time`   datetime NULL DEFAULT NULL COMMENT '创建时间',
-    `company_id`    int NULL DEFAULT NULL COMMENT '公司id',
-    `wx_account_id` bigint NULL DEFAULT NULL COMMENT '个微账号id',
-    `create_by`     varchar(255)   NULL DEFAULT NULL,
-    `update_by`     varchar(255)   NULL DEFAULT NULL,
-    `update_time`   datetime NULL DEFAULT NULL,
+    `log_id`           bigint NOT NULL AUTO_INCREMENT,
+    `robotic_id`       bigint NOT NULL COMMENT '任务id',
+    `wx_client_id`     bigint NULL DEFAULT NULL COMMENT 'wx_client_id',
+    `run_time`         datetime NULL DEFAULT NULL COMMENT '记录调用时间',
+    `run_param`        text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '调用参数',
+    `result`           text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '执行结果',
+    `status`           tinyint NULL DEFAULT NULL COMMENT '执行状态:1、执行中,2、执行成功,3、执行失败',
+    `create_time`      datetime NULL DEFAULT NULL COMMENT '创建时间',
+    `company_id`       int NULL DEFAULT NULL COMMENT '公司id',
+    `wx_account_id`    bigint NULL DEFAULT NULL COMMENT '个微账号id',
+    `create_by`        varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+    `update_by`        varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+    `update_time`      datetime NULL DEFAULT NULL,
+    `is_we_com`        bigint NULL DEFAULT 1 COMMENT '加微类型1个微2企微(防止add_type被占用)',
+    `qw_wx_add_way_id` int NULL DEFAULT NULL COMMENT '加微方式 2 的时候 用,字典 sys_qw_qw_wx_add_way',
     PRIMARY KEY (`log_id`) USING BTREE,
     PRIMARY KEY (`log_id`) USING BTREE,
-    INDEX           `robotic_id_and_client_id_idx`(`robotic_id` ASC, `wx_client_id` ASC) USING BTREE,
-    INDEX           `company_account_idx`(`company_id` ASC, `wx_account_id` ASC) USING BTREE,
-    INDEX           `create_time_idx`(`create_time` ASC) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 22 COMMENT = '调用日志表_加微信' ROW_FORMAT = DYNAMIC;
+    INDEX              `robotic_id_and_client_id_idx`(`robotic_id`, `wx_client_id`) USING BTREE,
+    INDEX              `company_account_idx`(`company_id`, `wx_account_id`) USING BTREE,
+    INDEX              `create_time_idx`(`create_time`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 45 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
 
 
 -- ----------------------------
 -- ----------------------------
 -- Table structure for company_voice_robotic_call_log_callphone
 -- Table structure for company_voice_robotic_call_log_callphone
@@ -2686,33 +2701,36 @@ DROP TABLE IF EXISTS `company_voice_robotic_call_log_callphone`;
 CREATE TABLE `company_voice_robotic_call_log_callphone`
 CREATE TABLE `company_voice_robotic_call_log_callphone`
 (
 (
     `log_id`           bigint NOT NULL AUTO_INCREMENT,
     `log_id`           bigint NOT NULL AUTO_INCREMENT,
+    `callback_uuid`    varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'uuid回调标识',
     `robotic_id`       bigint NOT NULL COMMENT '任务id',
     `robotic_id`       bigint NOT NULL COMMENT '任务id',
     `caller_id`        bigint NULL DEFAULT NULL COMMENT 'caller_id',
     `caller_id`        bigint NULL DEFAULT NULL COMMENT 'caller_id',
     `run_time`         datetime NULL DEFAULT NULL COMMENT '记录调用时间',
     `run_time`         datetime NULL DEFAULT NULL COMMENT '记录调用时间',
-    `run_param`        text   NULL COMMENT '调用参数',
-    `result`           text   NULL COMMENT '回调返回结果',
+    `run_param`        text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '调用参数',
+    `result`           text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '回调返回结果',
     `status`           tinyint NULL DEFAULT NULL COMMENT '执行状态:1、执行中,2、执行成功,3、执行失败',
     `status`           tinyint NULL DEFAULT NULL COMMENT '执行状态:1、执行中,2、执行成功,3、执行失败',
     `create_time`      datetime NULL DEFAULT NULL COMMENT '创建时间',
     `create_time`      datetime NULL DEFAULT NULL COMMENT '创建时间',
-    `record_path`      varchar(1000)   NULL DEFAULT NULL COMMENT '录音地址',
-    `content_list`     text   NULL COMMENT '通话详细列表',
-    `caller_num`       varchar(50)   NULL DEFAULT NULL COMMENT '客户号码',
-    `callee_num`       varchar(50)   NULL DEFAULT NULL COMMENT '话术号码',
-    `uuid`             varchar(100)   NULL DEFAULT NULL COMMENT '通话的唯一标识',
-    `call_create_time` int NULL DEFAULT NULL COMMENT '呼入时间',
-    `call_answer_time` int NULL DEFAULT NULL COMMENT '应答时间',
-    `intention`        varchar(255)   NULL DEFAULT NULL COMMENT '客户类型',
+    `record_path`      varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '录音地址',
+    `content_list`     text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '通话详细列表',
+    `caller_num`       varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '客户号码',
+    `callee_num`       varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '话术号码',
+    `uuid`             varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '通话的唯一标识',
+    `call_create_time` bigint NULL DEFAULT NULL COMMENT '呼入时间',
+    `call_answer_time` bigint NULL DEFAULT NULL COMMENT '应答时间',
+    `intention`        varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '客户类型',
     `company_id`       int NULL DEFAULT NULL COMMENT '公司id',
     `company_id`       int NULL DEFAULT NULL COMMENT '公司id',
     `company_user_id`  bigint NULL DEFAULT NULL COMMENT '销售id',
     `company_user_id`  bigint NULL DEFAULT NULL COMMENT '销售id',
     `call_time`        int NULL DEFAULT NULL COMMENT '通话时长,单位秒',
     `call_time`        int NULL DEFAULT NULL COMMENT '通话时长,单位秒',
     `cost`             decimal(10, 2) NULL DEFAULT NULL COMMENT '花费金额',
     `cost`             decimal(10, 2) NULL DEFAULT NULL COMMENT '花费金额',
-    `create_by`        varchar(255)   NULL DEFAULT NULL,
-    `update_by`        varchar(255)   NULL DEFAULT NULL,
+    `create_by`        varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+    `update_by`        varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
     `update_time`      datetime NULL DEFAULT NULL,
     `update_time`      datetime NULL DEFAULT NULL,
+    `call_type`        int NULL DEFAULT NULL COMMENT '外呼类型',
     PRIMARY KEY (`log_id`) USING BTREE,
     PRIMARY KEY (`log_id`) USING BTREE,
-    INDEX              `robotic_id_and_caller_id_idx`(`robotic_id` ASC, `caller_id` ASC) USING BTREE,
-    INDEX              `company_and_company_user_idx`(`company_id` ASC, `company_user_id` ASC) USING BTREE,
-    INDEX              `create_time_idx`(`create_time` ASC) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 27 COMMENT = '调用日志表_ai打电话' ROW_FORMAT = DYNAMIC;
+    INDEX              `robotic_id_and_caller_id_idx`(`robotic_id`, `caller_id`) USING BTREE,
+    INDEX              `company_and_company_user_idx`(`company_id`, `company_user_id`) USING BTREE,
+    INDEX              `idx_caller_id_create_time`(`caller_id`, `create_time`) USING BTREE,
+    INDEX              `idx_company_time_caller`(`company_id`, `create_time`, `caller_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 125 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
 
 
 -- ----------------------------
 -- ----------------------------
 -- Table structure for company_voice_robotic_call_log_sendmsg
 -- Table structure for company_voice_robotic_call_log_sendmsg
@@ -2724,8 +2742,8 @@ CREATE TABLE `company_voice_robotic_call_log_sendmsg`
     `robotic_id`      bigint NOT NULL COMMENT '任务id',
     `robotic_id`      bigint NOT NULL COMMENT '任务id',
     `caller_id`       bigint NULL DEFAULT NULL COMMENT 'caller_id',
     `caller_id`       bigint NULL DEFAULT NULL COMMENT 'caller_id',
     `run_time`        datetime NULL DEFAULT NULL COMMENT '记录调用时间',
     `run_time`        datetime NULL DEFAULT NULL COMMENT '记录调用时间',
-    `run_param`       text   NULL COMMENT '调用参数',
-    `result`          text   NULL COMMENT '执行结果',
+    `run_param`       text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '调用参数',
+    `result`          text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '执行结果',
     `status`          tinyint NULL DEFAULT NULL COMMENT '执行状态:1、执行中,2、执行成功,3、执行失败',
     `status`          tinyint NULL DEFAULT NULL COMMENT '执行状态:1、执行中,2、执行成功,3、执行失败',
     `create_time`     datetime NULL DEFAULT NULL COMMENT '创建时间',
     `create_time`     datetime NULL DEFAULT NULL COMMENT '创建时间',
     `company_id`      int NULL DEFAULT NULL COMMENT '公司id',
     `company_id`      int NULL DEFAULT NULL COMMENT '公司id',
@@ -2733,14 +2751,14 @@ CREATE TABLE `company_voice_robotic_call_log_sendmsg`
     `temp_id`         bigint NULL DEFAULT NULL COMMENT '发送短信模板id',
     `temp_id`         bigint NULL DEFAULT NULL COMMENT '发送短信模板id',
     `cost`            decimal(10, 2) NULL DEFAULT NULL COMMENT '花费金额',
     `cost`            decimal(10, 2) NULL DEFAULT NULL COMMENT '花费金额',
     `content_len`     int NULL DEFAULT NULL COMMENT '内容长度',
     `content_len`     int NULL DEFAULT NULL COMMENT '内容长度',
-    `create_by`       varchar(255)   NULL DEFAULT NULL,
-    `update_by`       varchar(255)   NULL DEFAULT NULL,
+    `create_by`       varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+    `update_by`       varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
     `update_time`     datetime NULL DEFAULT NULL,
     `update_time`     datetime NULL DEFAULT NULL,
     PRIMARY KEY (`log_id`) USING BTREE,
     PRIMARY KEY (`log_id`) USING BTREE,
-    INDEX             `robotic_id_and_caller_id_idx`(`robotic_id` ASC, `caller_id` ASC) USING BTREE,
-    INDEX             `create_time_idx`(`create_time` ASC) USING BTREE,
-    INDEX             `company_and_user_idx`(`company_id` ASC, `company_user_id` ASC) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 21 COMMENT = '调用日志表_发送短信' ROW_FORMAT = DYNAMIC;
+    INDEX             `robotic_id_and_caller_id_idx`(`robotic_id`, `caller_id`) USING BTREE,
+    INDEX             `create_time_idx`(`create_time`) USING BTREE,
+    INDEX             `company_and_user_idx`(`company_id`, `company_user_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 46 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
 
 
 -- ----------------------------
 -- ----------------------------
 -- Table structure for company_voice_robotic_callees
 -- Table structure for company_voice_robotic_callees
@@ -2751,25 +2769,32 @@ CREATE TABLE `company_voice_robotic_callees`
     `id`             bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
     `id`             bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
     `type`           int NULL DEFAULT 0 COMMENT '类型;0天天1百度',
     `type`           int NULL DEFAULT 0 COMMENT '类型;0天天1百度',
     `user_id`        bigint NULL DEFAULT NULL COMMENT '用户ID',
     `user_id`        bigint NULL DEFAULT NULL COMMENT '用户ID',
-    `user_name`      varchar(255)   NULL DEFAULT NULL COMMENT '用户名称',
-    `phone`          varchar(255)   NULL DEFAULT NULL COMMENT '电话号码',
+    `user_name`      varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户名称',
+    `phone`          varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '电话号码',
     `robotic_id`     bigint NULL DEFAULT NULL COMMENT '任务ID',
     `robotic_id`     bigint NULL DEFAULT NULL COMMENT '任务ID',
-    `params`         varchar(1024)   NULL DEFAULT NULL COMMENT '变量列表;TTS变量字段,变量使用#拼接',
-    `uuid`           varchar(255)   NULL DEFAULT NULL COMMENT '对话图uuid',
-    `intention`      varchar(255)   NULL DEFAULT NULL,
+    `params`         varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '变量列表;TTS变量字段,变量使用#拼接',
+    `uuid`           varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '对话图uuid',
+    `intention`      varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
     `result`         int NULL DEFAULT 0 COMMENT '是否回调0否1是',
     `result`         int NULL DEFAULT 0 COMMENT '是否回调0否1是',
-    `json`           text   NULL,
+    `json`           text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL,
     `distribute`     int NULL DEFAULT 0 COMMENT '是否分配0否1是',
     `distribute`     int NULL DEFAULT 0 COMMENT '是否分配0否1是',
     `task_member_id` bigint NULL DEFAULT NULL,
     `task_member_id` bigint NULL DEFAULT NULL,
     `import_status`  int NULL DEFAULT NULL COMMENT '导入状态',
     `import_status`  int NULL DEFAULT NULL COMMENT '导入状态',
-    `reason`         varchar(255)   NULL DEFAULT NULL COMMENT '失败原因',
-    `task_flow`      varchar(255)   NULL DEFAULT NULL COMMENT '任务流程',
-    `run_task_flow`  varchar(255)   NULL DEFAULT NULL COMMENT '已经执行流程',
-    `task_name`      varchar(255)   NULL DEFAULT NULL COMMENT '三方任务名称',
+    `reason`         varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '失败原因',
+    `task_flow`      varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '任务流程',
+    `run_task_flow`  varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '已经执行流程',
+    `task_name`      varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '三方任务名称',
     `task_id`        bigint NULL DEFAULT NULL COMMENT '三方任务ID',
     `task_id`        bigint NULL DEFAULT NULL COMMENT '三方任务ID',
     `is_send_msg`    tinyint NULL DEFAULT 0 COMMENT '是否已发送短信:-1:不需要发送, 0:未发送,1:已发送',
     `is_send_msg`    tinyint NULL DEFAULT 0 COMMENT '是否已发送短信:-1:不需要发送, 0:未发送,1:已发送',
-    PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 2008812743494000711 COMMENT = '任务外呼电话' ROW_FORMAT = DYNAMIC;
+    `is_we_com`      bigint NULL DEFAULT 1 COMMENT '加微类型1个微2企微(防止add_type被占用)',
+    `is_generate`    tinyint(1) NULL DEFAULT 0 COMMENT '是否生成数据(0否,1是)',
+    PRIMARY KEY (`id`) USING BTREE,
+    INDEX            `idx_is_generate`(`is_generate`) USING BTREE,
+    INDEX            `idx_phone_is_generate`(`phone`, `is_generate`) USING BTREE,
+    INDEX            `idx_user_name`(`user_name`) USING BTREE,
+    INDEX            `idx_phone`(`phone`) USING BTREE,
+    INDEX            `idx_robotic_id`(`robotic_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 20 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '任务外呼电话' ROW_FORMAT = DYNAMIC;
 
 
 -- ----------------------------
 -- ----------------------------
 -- Table structure for company_voice_robotic_wx
 -- Table structure for company_voice_robotic_wx
@@ -2781,19 +2806,20 @@ CREATE TABLE `company_voice_robotic_wx`
     `type`         int NULL DEFAULT 0 COMMENT '类型;0天天1百度',
     `type`         int NULL DEFAULT 0 COMMENT '类型;0天天1百度',
     `add_type`     int NULL DEFAULT 1 COMMENT '加微类型1个微2企微',
     `add_type`     int NULL DEFAULT 1 COMMENT '加微类型1个微2企微',
     `robotic_id`   bigint NULL DEFAULT NULL COMMENT '任务ID',
     `robotic_id`   bigint NULL DEFAULT NULL COMMENT '任务ID',
-    `intention`    varchar(255)   NULL DEFAULT NULL COMMENT '意向',
+    `intention`    varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '意向',
     `account_id`   bigint NULL DEFAULT NULL COMMENT '分配员工',
     `account_id`   bigint NULL DEFAULT NULL COMMENT '分配员工',
     `wx_dialog_id` bigint NULL DEFAULT NULL COMMENT '加微话术',
     `wx_dialog_id` bigint NULL DEFAULT NULL COMMENT '加微话术',
     `num`          int NULL DEFAULT 0 COMMENT '分配数量',
     `num`          int NULL DEFAULT 0 COMMENT '分配数量',
     `add_num`      int NULL DEFAULT 0 COMMENT '添加数量',
     `add_num`      int NULL DEFAULT 0 COMMENT '添加数量',
     `create_time`  datetime NULL DEFAULT NULL COMMENT '创建时间',
     `create_time`  datetime NULL DEFAULT NULL COMMENT '创建时间',
     `create_by`    bigint NULL DEFAULT NULL COMMENT '创建人',
     `create_by`    bigint NULL DEFAULT NULL COMMENT '创建人',
-    `update_by`    varchar(255)   NULL DEFAULT NULL,
+    `update_by`    varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
     `update_time`  datetime NULL DEFAULT NULL,
     `update_time`  datetime NULL DEFAULT NULL,
-    `remark`       varchar(255)   NULL DEFAULT NULL,
+    `remark`       varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
     `sms_temp_id`  int NULL DEFAULT NULL COMMENT '短信模板id',
     `sms_temp_id`  int NULL DEFAULT NULL COMMENT '短信模板id',
+    `is_we_com`    bigint NULL DEFAULT 1 COMMENT '加微类型1个微2企微(防止add_type被占用)',
     PRIMARY KEY (`id`) USING BTREE
     PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 221 COMMENT = 'AI外呼任务加微方式' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB AUTO_INCREMENT = 271 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'AI外呼任务加微方式' ROW_FORMAT = DYNAMIC;
 
 
 -- ----------------------------
 -- ----------------------------
 -- Table structure for company_wx_account
 -- Table structure for company_wx_account
@@ -2802,10 +2828,10 @@ DROP TABLE IF EXISTS `company_wx_account`;
 CREATE TABLE `company_wx_account`
 CREATE TABLE `company_wx_account`
 (
 (
     `id`                  bigint NOT NULL AUTO_INCREMENT,
     `id`                  bigint NOT NULL AUTO_INCREMENT,
-    `wx_nick_name`        varchar(255)   NULL DEFAULT NULL COMMENT '微信昵称',
-    `wx_no`               varchar(255)   NULL DEFAULT NULL COMMENT '微信号',
-    `head_img_url`        varchar(255)   NULL DEFAULT NULL COMMENT '头像',
-    `phone`               varchar(255)   NULL DEFAULT NULL COMMENT '电话号码',
+    `wx_nick_name`        varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '微信昵称',
+    `wx_no`               varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '微信号',
+    `head_img_url`        varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '头像',
+    `phone`               varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '电话号码',
     `company_user_id`     bigint NULL DEFAULT NULL COMMENT '销售员工账号',
     `company_user_id`     bigint NULL DEFAULT NULL COMMENT '销售员工账号',
     `add_time`            datetime NULL DEFAULT NULL COMMENT '添加时间',
     `add_time`            datetime NULL DEFAULT NULL COMMENT '添加时间',
     `next_time`           datetime NULL DEFAULT NULL COMMENT '下次添加时间',
     `next_time`           datetime NULL DEFAULT NULL COMMENT '下次添加时间',
@@ -2813,31 +2839,32 @@ CREATE TABLE `company_wx_account`
     `create_time`         datetime NULL DEFAULT CURRENT_TIMESTAMP,
     `create_time`         datetime NULL DEFAULT CURRENT_TIMESTAMP,
     `create_user`         bigint NULL DEFAULT NULL,
     `create_user`         bigint NULL DEFAULT NULL,
     `update_time`         datetime NULL DEFAULT CURRENT_TIMESTAMP,
     `update_time`         datetime NULL DEFAULT CURRENT_TIMESTAMP,
-    `update_by`           varchar(255)   NULL DEFAULT NULL,
-    `remark`              varchar(255)   NULL DEFAULT NULL,
-    `address_id`          varchar(50)   NULL DEFAULT NULL COMMENT 'iPad地区ID',
+    `update_by`           varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+    `remark`              varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+    `address_id`          varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'iPad地区ID',
     `server_id`           bigint NULL DEFAULT NULL COMMENT '服务器ID',
     `server_id`           bigint NULL DEFAULT NULL COMMENT '服务器ID',
     `server_status`       int NULL DEFAULT 0 COMMENT '服务器绑定状态 0-未绑定 1-已绑定',
     `server_status`       int NULL DEFAULT 0 COMMENT '服务器绑定状态 0-未绑定 1-已绑定',
     `company_id`          bigint NULL DEFAULT NULL COMMENT '销售公司ID',
     `company_id`          bigint NULL DEFAULT NULL COMMENT '销售公司ID',
-    `auth_key`            varchar(255)   NULL DEFAULT NULL COMMENT '授权码',
+    `auth_key`            varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '授权码',
     `auth_time`           datetime NULL DEFAULT NULL COMMENT '过期时间',
     `auth_time`           datetime NULL DEFAULT NULL COMMENT '过期时间',
     `login_status`        int NULL DEFAULT 0 COMMENT '登录状态,0未登录1已登录',
     `login_status`        int NULL DEFAULT 0 COMMENT '登录状态,0未登录1已登录',
-    `create_by`           varchar(255)   NULL DEFAULT NULL COMMENT '创建人',
-    `wxnewpass`           varchar(1024)   NULL DEFAULT NULL,
+    `create_by`           varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '创建人',
+    `wxnewpass`           varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
     `login_time`          datetime NULL DEFAULT NULL COMMENT '登录时间',
     `login_time`          datetime NULL DEFAULT NULL COMMENT '登录时间',
     `out_time`            datetime NULL DEFAULT NULL COMMENT '离线时间',
     `out_time`            datetime NULL DEFAULT NULL COMMENT '离线时间',
-    `out_remark`          varchar(255)   NULL DEFAULT NULL COMMENT '离线说明',
+    `out_remark`          varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '离线说明',
     `sync_friend_time`    datetime NULL DEFAULT NULL COMMENT '上次点击同步通讯录时间',
     `sync_friend_time`    datetime NULL DEFAULT NULL COMMENT '上次点击同步通讯录时间',
     `account_create_time` date NULL DEFAULT NULL COMMENT '账号创建时间',
     `account_create_time` date NULL DEFAULT NULL COMMENT '账号创建时间',
     `add_num`             int NULL DEFAULT NULL COMMENT '每天添加账号数量',
     `add_num`             int NULL DEFAULT NULL COMMENT '每天添加账号数量',
-    `send_msg_json`       varchar(1024)   NULL DEFAULT NULL COMMENT '发送消息条数限制',
+    `send_msg_json`       varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '发送消息条数限制',
     `is_new`              int NULL DEFAULT 0 COMMENT '是否新账号0是1否',
     `is_new`              int NULL DEFAULT 0 COMMENT '是否新账号0是1否',
     `last_add_wx_time`    datetime NULL DEFAULT NULL COMMENT '上一次添加微信时间',
     `last_add_wx_time`    datetime NULL DEFAULT NULL COMMENT '上一次添加微信时间',
     `is_add_num`          int NULL DEFAULT 0 COMMENT '已经添加数量',
     `is_add_num`          int NULL DEFAULT 0 COMMENT '已经添加数量',
     `allocate_num`        int NULL DEFAULT 0,
     `allocate_num`        int NULL DEFAULT 0,
     PRIMARY KEY (`id`) USING BTREE,
     PRIMARY KEY (`id`) USING BTREE,
-    UNIQUE INDEX `auth_key`(`auth_key` ASC) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 7 COMMENT = 'company对应个微账号' ROW_FORMAT = DYNAMIC;
+    UNIQUE INDEX `auth_key`(`auth_key`) USING BTREE,
+    UNIQUE INDEX `wx_no`(`wx_no`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'company对应个微账号' ROW_FORMAT = DYNAMIC;
 
 
 -- ----------------------------
 -- ----------------------------
 -- Table structure for company_wx_chat
 -- Table structure for company_wx_chat
@@ -2868,38 +2895,39 @@ DROP TABLE IF EXISTS `company_wx_client`;
 CREATE TABLE `company_wx_client`
 CREATE TABLE `company_wx_client`
 (
 (
     `id`               bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
     `id`               bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
-    `add_type`         int NULL DEFAULT 1 COMMENT '类型1个微2企微',
+    `add_type`         int NULL DEFAULT 1 COMMENT '加微方式0平均1意向',
     `robotic_id`       bigint NOT NULL COMMENT '任务ID',
     `robotic_id`       bigint NOT NULL COMMENT '任务ID',
     `robotic_wx_id`    bigint NULL DEFAULT NULL COMMENT '分配企微账号ID',
     `robotic_wx_id`    bigint NULL DEFAULT NULL COMMENT '分配企微账号ID',
     `customer_id`      bigint NOT NULL COMMENT '客户ID',
     `customer_id`      bigint NOT NULL COMMENT '客户ID',
     `dialog_id`        bigint NULL DEFAULT NULL COMMENT '话术ID',
     `dialog_id`        bigint NULL DEFAULT NULL COMMENT '话术ID',
     `account_id`       bigint NULL DEFAULT NULL COMMENT '账号ID',
     `account_id`       bigint NULL DEFAULT NULL COMMENT '账号ID',
-    `nick_name`        varchar(255)   NULL DEFAULT NULL COMMENT '昵称',
-    `avatar`           varchar(255)   NULL DEFAULT NULL COMMENT '头像',
-    `phone`            varchar(255)   NULL DEFAULT NULL COMMENT '手机号',
-    `wx_no`            varchar(255)   NULL DEFAULT NULL COMMENT '微信号',
-    `wx_name`          varchar(255)   NULL DEFAULT NULL COMMENT '微信昵称',
+    `nick_name`        varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '昵称',
+    `avatar`           varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '头像',
+    `phone`            varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手机号',
+    `wx_no`            varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '微信号',
+    `wx_name`          varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '微信昵称',
     `is_add`           int NULL DEFAULT 0 COMMENT '是否添加;0否1是2加微中',
     `is_add`           int NULL DEFAULT 0 COMMENT '是否添加;0否1是2加微中',
     `add_time`         datetime NULL DEFAULT NULL COMMENT '添加时间',
     `add_time`         datetime NULL DEFAULT NULL COMMENT '添加时间',
     `success_add_time` datetime NULL DEFAULT NULL COMMENT '添加成功时间',
     `success_add_time` datetime NULL DEFAULT NULL COMMENT '添加成功时间',
-    `remark`           varchar(255)   NULL DEFAULT NULL COMMENT '备注',
-    `intention`        varchar(255)   NULL DEFAULT NULL COMMENT '客户意向',
+    `remark`           varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
+    `intention`        varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '客户意向',
     `create_time`      datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
     `create_time`      datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
     `create_by`        bigint NULL DEFAULT NULL COMMENT '创建人',
     `create_by`        bigint NULL DEFAULT NULL COMMENT '创建人',
-    `update_by`        varchar(255)   NULL DEFAULT NULL,
+    `update_by`        varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
     `update_time`      datetime NULL DEFAULT NULL,
     `update_time`      datetime NULL DEFAULT NULL,
     `check_count`      int NULL DEFAULT 0 COMMENT '监测次数',
     `check_count`      int NULL DEFAULT 0 COMMENT '监测次数',
     `next_check_time`  datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '下次检查时间',
     `next_check_time`  datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '下次检查时间',
-    `work_url`         varchar(255)   NULL DEFAULT NULL COMMENT '获客链接',
-    `work_short_no`    varchar(255)   NULL DEFAULT NULL,
+    `work_url`         varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '获客链接',
+    `work_short_no`    varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
     `company_user_id`  bigint NULL DEFAULT NULL,
     `company_user_id`  bigint NULL DEFAULT NULL,
     `company_id`       bigint NULL DEFAULT NULL,
     `company_id`       bigint NULL DEFAULT NULL,
-    `wx_v3`            varchar(218)   NULL DEFAULT NULL COMMENT '微信V3,用于校验用户一致性',
-    `wx_v4`            varchar(300)   NULL DEFAULT NULL COMMENT '微信V4,用于校验用户一致性',
+    `wx_v3`            varchar(218) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '微信V3,用于校验用户一致性',
+    `wx_v4`            varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '微信V4,用于校验用户一致性',
+    `is_we_com`        bigint NULL DEFAULT 1 COMMENT '加微类型1个微2企微(防止add_type被占用)',
+    `trace_id`         varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '投流来源id',
     PRIMARY KEY (`id`) USING BTREE,
     PRIMARY KEY (`id`) USING BTREE,
-    UNIQUE INDEX `wx_unique`(`account_id` ASC, `wx_v3` ASC) USING BTREE COMMENT '微信好友关联凭证',
-    INDEX              `add`(`is_add` ASC) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 6140 COMMENT = '添加个微信账号' ROW_FORMAT = DYNAMIC;
+    INDEX              `add`(`is_add`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 6522 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '添加个微信账号' ROW_FORMAT = DYNAMIC;
 
 
 -- ----------------------------
 -- ----------------------------
 -- Table structure for company_wx_dialog
 -- Table structure for company_wx_dialog
@@ -2908,18 +2936,18 @@ DROP TABLE IF EXISTS `company_wx_dialog`;
 CREATE TABLE `company_wx_dialog`
 CREATE TABLE `company_wx_dialog`
 (
 (
     `id`               bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
     `id`               bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
-    `name`             varchar(255)   NULL DEFAULT NULL COMMENT '名称',
-    `template_details` varchar(900)   NULL DEFAULT NULL COMMENT '模板',
+    `name`             varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '名称',
+    `template_details` varchar(900) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '模板',
     `create_time`      datetime NULL DEFAULT NULL COMMENT '创建时间',
     `create_time`      datetime NULL DEFAULT NULL COMMENT '创建时间',
     `create_by`        bigint NULL DEFAULT NULL COMMENT '创建人',
     `create_by`        bigint NULL DEFAULT NULL COMMENT '创建人',
-    `update_by`        varchar(255)   NULL DEFAULT NULL,
+    `update_by`        varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
     `update_time`      datetime NULL DEFAULT NULL,
     `update_time`      datetime NULL DEFAULT NULL,
-    `remark`           varchar(255)   NULL DEFAULT NULL,
+    `remark`           varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
     `create_user`      bigint NULL DEFAULT NULL,
     `create_user`      bigint NULL DEFAULT NULL,
     `company_user_id`  bigint NULL DEFAULT NULL,
     `company_user_id`  bigint NULL DEFAULT NULL,
     `company_id`       bigint NULL DEFAULT NULL,
     `company_id`       bigint NULL DEFAULT NULL,
     PRIMARY KEY (`id`) USING BTREE
     PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 5 COMMENT = '添加微信话术' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '添加微信话术' ROW_FORMAT = DYNAMIC;
 
 
 -- ----------------------------
 -- ----------------------------
 -- Table structure for company_wx_user
 -- Table structure for company_wx_user
@@ -2964,72 +2992,82 @@ CREATE TABLE `company_wx_user_group`
 DROP TABLE IF EXISTS `crm_customer`;
 DROP TABLE IF EXISTS `crm_customer`;
 CREATE TABLE `crm_customer`
 CREATE TABLE `crm_customer`
 (
 (
-    `customer_id`          bigint   NOT NULL AUTO_INCREMENT,
-    `customer_code`        varchar(32)   NULL DEFAULT NULL COMMENT '组织机构代码',
-    `customer_name`        varchar(255)   NULL DEFAULT NULL COMMENT '客户名称',
-    `avatar`               varchar(200)   NULL DEFAULT NULL COMMENT '头像',
-    `mobile`               varchar(255)   NULL DEFAULT '' COMMENT '手机',
-    `sex`                  tinyint(1) NULL DEFAULT 0 COMMENT '性别',
-    `weixin`               varchar(255)   NULL DEFAULT NULL,
-    `remark`               varchar(3000)   NULL DEFAULT '' COMMENT '备注',
-    `user_id`              bigint NULL DEFAULT NULL COMMENT '关联用户ID',
-    `create_user_id`       bigint NULL DEFAULT NULL COMMENT '创建人ID',
-    `receive_user_id`      bigint NULL DEFAULT NULL COMMENT '当前认领用户',
-    `customer_user_id`     bigint NULL DEFAULT NULL COMMENT '认领ID',
-    `address`              varchar(255)   NULL DEFAULT '' COMMENT '省市区',
-    `city_ids`             varchar(200)   NULL DEFAULT NULL COMMENT '城市ids',
-    `location`             varchar(255)   NULL DEFAULT '' COMMENT '定位信息',
-    `detail_address`       varchar(255)   NULL DEFAULT '' COMMENT '详细地址',
-    `lng`                  varchar(255)   NULL DEFAULT '' COMMENT '地理位置经度',
-    `lat`                  varchar(255)   NULL DEFAULT '' COMMENT '地理位置维度',
-    `create_time`          datetime NOT NULL COMMENT '创建时间',
-    `update_time`          datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
-    `status`               int NULL DEFAULT 1 COMMENT '客户状态  0禁用 1 正常',
-    `is_receive`           int NULL DEFAULT 0 COMMENT '1 已认领 0未认领',
-    `dept_id`              bigint NULL DEFAULT NULL COMMENT '所属部门ID',
-    `is_del`               tinyint(1) NULL DEFAULT 0 COMMENT '是否删除',
-    `customer_type`        tinyint(1) NULL DEFAULT NULL COMMENT '客户类型',
-    `receive_time`         datetime NULL DEFAULT NULL COMMENT '最后一次跟进时间',
-    `pool_time`            datetime NULL DEFAULT NULL COMMENT '入公海时间',
-    `company_id`           bigint NULL DEFAULT NULL,
-    `is_line`              tinyint(1) NULL DEFAULT 0 COMMENT '是否为线索客户',
-    `source`               varchar(255)   NULL DEFAULT NULL COMMENT '客户来源',
-    `tags`                 varchar(2000)   NULL DEFAULT NULL COMMENT '标签',
-    `ext_json`             longtext   NULL,
-    `visit_status`         tinyint(1) NULL DEFAULT NULL COMMENT '跟进阶段',
-    `register_date`        varchar(50)   NULL DEFAULT NULL COMMENT '进线日期',
-    `register_link_url`    varchar(200)   NULL DEFAULT NULL COMMENT '进线客户连接',
-    `register_desc`        varchar(2000)   NULL DEFAULT NULL COMMENT '进线客户详情',
-    `register_submit_time` varchar(20)   NULL DEFAULT NULL COMMENT '进线客户填写时间',
-    `is_pool`              tinyint(1) NULL DEFAULT 0 COMMENT '是否在公海',
-    `register_type`        varchar(200)   NULL DEFAULT NULL COMMENT '进线方式',
-    `pay_money`            decimal(11, 2) NULL DEFAULT 0.00 COMMENT '消费金额',
-    `buy_count`            int NULL DEFAULT 0 COMMENT '购买次数',
-    `source_code`          varchar(200)   NULL DEFAULT NULL COMMENT '来源渠道编码',
-    `push_time`            varchar(50)   NULL DEFAULT NULL COMMENT '推线时间',
-    `push_code`            varchar(200)   NULL DEFAULT NULL COMMENT '推线编码',
-    `visit_time`           datetime NULL DEFAULT NULL,
-    `traffic_source`       varchar(200)   NULL DEFAULT NULL COMMENT '流量来源',
-    `import_type`          tinyint NULL DEFAULT NULL COMMENT '导入类型  0手动导入  1 自动导入',
-    `third_account`        varchar(200)   NULL DEFAULT NULL COMMENT '流量平台归属账号',
-    `clue_id`              varchar(255)   NULL DEFAULT NULL COMMENT '流量平台线索ID',
-    `qw_name`              varchar(255)   NULL DEFAULT NULL,
-    `intention`            varchar(255)   NULL DEFAULT NULL COMMENT '意向度',
-    `goods_name`           varchar(255)   NULL DEFAULT NULL COMMENT '购买商品',
-    `goods_specification`  varchar(255)   NULL DEFAULT NULL COMMENT '购买规格',
-    `shop_name`            varchar(255)   NULL DEFAULT NULL COMMENT '店铺名称',
-    `platform_name`        varchar(255)   NULL DEFAULT NULL COMMENT '平台名称',
-    `create_by`            bigint NULL DEFAULT NULL COMMENT '创建人',
-    `update_by`            varchar(255)   NULL DEFAULT NULL,
+    `customer_id`           bigint   NOT NULL AUTO_INCREMENT,
+    `customer_code`         varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '组织机构代码',
+    `customer_name`         varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '客户名称',
+    `avatar`                varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '头像',
+    `mobile`                varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '手机',
+    `sex`                   tinyint(1) NULL DEFAULT 0 COMMENT '性别',
+    `weixin`                varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+    `remark`                varchar(3000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '备注',
+    `user_id`               bigint NULL DEFAULT NULL COMMENT '关联用户ID',
+    `create_user_id`        bigint NULL DEFAULT NULL COMMENT '创建人ID',
+    `receive_user_id`       bigint NULL DEFAULT NULL COMMENT '当前认领用户',
+    `customer_user_id`      bigint NULL DEFAULT NULL COMMENT '认领ID',
+    `address`               varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '省市区',
+    `city_ids`              varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '城市ids',
+    `location`              varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '定位信息',
+    `detail_address`        varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '详细地址',
+    `lng`                   varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '地理位置经度',
+    `lat`                   varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '地理位置维度',
+    `create_time`           datetime NOT NULL COMMENT '创建时间',
+    `update_time`           datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
+    `status`                int NULL DEFAULT 1 COMMENT '客户状态  0禁用 1 正常',
+    `is_receive`            int NULL DEFAULT 0 COMMENT '1 已认领 0未认领',
+    `dept_id`               bigint NULL DEFAULT NULL COMMENT '所属部门ID',
+    `is_del`                tinyint(1) NULL DEFAULT 0 COMMENT '是否删除',
+    `customer_type`         tinyint(1) NULL DEFAULT NULL COMMENT '客户类型',
+    `receive_time`          datetime NULL DEFAULT NULL COMMENT '最后一次跟进时间',
+    `pool_time`             datetime NULL DEFAULT NULL COMMENT '入公海时间',
+    `company_id`            bigint NULL DEFAULT NULL,
+    `is_line`               tinyint(1) NULL DEFAULT 0 COMMENT '是否为线索客户',
+    `source`                varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '客户来源',
+    `tags`                  varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '标签',
+    `ext_json`              longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL,
+    `visit_status`          tinyint(1) NULL DEFAULT NULL COMMENT '跟进阶段',
+    `register_date`         varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '进线日期',
+    `register_link_url`     varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '进线客户连接',
+    `register_desc`         varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '进线客户详情',
+    `register_submit_time`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '进线客户填写时间',
+    `is_pool`               tinyint(1) NULL DEFAULT 0 COMMENT '是否在公海',
+    `register_type`         varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '进线方式',
+    `pay_money`             decimal(11, 2) NULL DEFAULT 0.00 COMMENT '消费金额',
+    `buy_count`             int NULL DEFAULT 0 COMMENT '购买次数',
+    `source_code`           varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '来源渠道编码',
+    `push_time`             varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '推线时间',
+    `push_code`             varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '推线编码',
+    `visit_time`            datetime NULL DEFAULT NULL,
+    `traffic_source`        varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '流量来源',
+    `import_type`           tinyint NULL DEFAULT NULL COMMENT '导入类型  0手动导入  1 自动导入',
+    `third_account`         varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '流量平台归属账号',
+    `clue_id`               varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '流量平台线索ID',
+    `qw_name`               varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+    `intention`             varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '意向度',
+    `goods_name`            varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '购买商品',
+    `goods_specification`   varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '购买规格',
+    `shop_name`             varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '店铺名称',
+    `platform_name`         varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '平台名称',
+    `create_by`             bigint NULL DEFAULT NULL COMMENT '创建人',
+    `update_by`             varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+    `trace_id`              varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '投流来源id',
+    `customer_company_name` varchar(80) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '客户公司名称',
+    `is_wx`                 varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '是否添加微信',
+    `business_scenario`     varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '业务场景\r\n网站,电商,游戏,小程序,APP,OA,ERP,CRM,物联网,AI人工智能,国产化,数字人,内部办公系统,等保,其他',
+    `product`               varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '涉及产品',
+    `money_remark`          varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '商机金额',
+    `content`               varchar(1024) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最新跟进内容',
+    `next_time`             datetime NULL DEFAULT NULL COMMENT '下次跟进时间',
+    `is_pool_rule`          tinyint NULL DEFAULT 1 COMMENT '是否采用入公海规则 0:否 1:是',
+    `sys_visit_time`        datetime NULL DEFAULT NULL COMMENT '系统自建跟进时间',
     PRIMARY KEY (`customer_id`) USING BTREE,
     PRIMARY KEY (`customer_id`) USING BTREE,
-    UNIQUE INDEX `customer_code`(`customer_code` ASC) USING BTREE,
-    INDEX                  `create_user_id`(`create_user_id` ASC) USING BTREE,
-    INDEX                  `receive_user_id`(`receive_user_id` ASC) USING BTREE,
-    INDEX                  `customer_user_id`(`customer_user_id` ASC) USING BTREE,
-    INDEX                  `company_id`(`company_id` ASC) USING BTREE,
-    INDEX                  `is_line`(`is_line` ASC) USING BTREE,
-    INDEX                  `mobile`(`mobile` ASC) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 53152 COMMENT = '客户表' ROW_FORMAT = DYNAMIC;
+    UNIQUE INDEX `customer_code`(`customer_code`) USING BTREE,
+    INDEX                   `create_user_id`(`create_user_id`) USING BTREE,
+    INDEX                   `receive_user_id`(`receive_user_id`) USING BTREE,
+    INDEX                   `customer_user_id`(`customer_user_id`) USING BTREE,
+    INDEX                   `company_id`(`company_id`) USING BTREE,
+    INDEX                   `is_line`(`is_line`) USING BTREE,
+    INDEX                   `mobile`(`mobile`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 53184 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '客户表' ROW_FORMAT = DYNAMIC;
 
 
 -- ----------------------------
 -- ----------------------------
 -- Table structure for crm_customer_assign
 -- Table structure for crm_customer_assign
@@ -17644,6 +17682,318 @@ CREATE TABLE `sop_user_logs_wx`
     INDEX             `index_2`(`sop_id` ASC, `sop_temp_id` ASC, `user_wx_name` ASC, `start_time` ASC) USING BTREE
     INDEX             `index_2`(`sop_id` ASC, `sop_temp_id` ASC, `user_wx_name` ASC, `start_time` ASC) USING BTREE
 ) ENGINE = InnoDB AUTO_INCREMENT = 3 COMMENT = '个微sop营期表' ROW_FORMAT = Dynamic;
 ) ENGINE = InnoDB AUTO_INCREMENT = 3 COMMENT = '个微sop营期表' ROW_FORMAT = Dynamic;
 
 
+-- ----------------------------
+-- Table structure for company_ai_workflow_server
+-- ----------------------------
+DROP TABLE IF EXISTS `company_ai_workflow_server`;
+CREATE TABLE `company_ai_workflow_server`
+(
+    `id`          bigint NOT NULL AUTO_INCREMENT COMMENT '服务id',
+    `title`       varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '标题',
+    `total_count` int UNSIGNED NULL DEFAULT NULL COMMENT '总数',
+    `count`       int UNSIGNED NULL DEFAULT NULL COMMENT '使用数据',
+    `group_no`    int NULL DEFAULT NULL COMMENT '分组',
+    `create_time` datetime NULL DEFAULT NULL,
+    PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for company_ai_workflow_node_version
+-- ----------------------------
+DROP TABLE IF EXISTS `company_ai_workflow_node_version`;
+CREATE TABLE `company_ai_workflow_node_version`
+(
+    `id`          bigint                                                        NOT NULL AUTO_INCREMENT COMMENT '主键',
+    `version_id`  bigint                                                        NOT NULL COMMENT '版本ID',
+    `workflow_id` bigint                                                        NOT NULL COMMENT '工作流ID',
+    `node_id`     bigint NULL DEFAULT NULL COMMENT '原节点ID',
+    `node_key`    varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci  NOT NULL COMMENT '节点唯一标识',
+    `node_name`   varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '节点名称',
+    `node_type`   varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '节点类型',
+    `node_icon`   varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '节点图标',
+    `node_color`  varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '节点颜色',
+    `pos_x`       int NULL DEFAULT 0 COMMENT 'X坐标',
+    `pos_y`       int NULL DEFAULT 0 COMMENT 'Y坐标',
+    `width`       int NULL DEFAULT 200 COMMENT '节点宽度',
+    `height`      int NULL DEFAULT 80 COMMENT '节点高度',
+    `node_config` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '节点配置JSON',
+    `sort_order`  int NULL DEFAULT 0 COMMENT '排序',
+    `voice_url`   varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '声音地址',
+    `create_time` datetime NULL DEFAULT NULL COMMENT '原创建时间',
+    `update_time` datetime NULL DEFAULT NULL COMMENT '原更新时间',
+    PRIMARY KEY (`id`) USING BTREE,
+    INDEX         `idx_version_id`(`version_id`) USING BTREE,
+    INDEX         `idx_workflow_id`(`workflow_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 199 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for company_ai_workflow_node_type
+-- ----------------------------
+DROP TABLE IF EXISTS `company_ai_workflow_node_type`;
+CREATE TABLE `company_ai_workflow_node_type`
+(
+    `type_id`        bigint                                                       NOT NULL AUTO_INCREMENT COMMENT '类型ID',
+    `type_code`      varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '类型编码',
+    `type_name`      varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '类型名称',
+    `type_icon`      varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '类型图标',
+    `type_color`     varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '#1890ff' COMMENT '类型颜色',
+    `type_category`  varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT 'basic' COMMENT '类型分类 basic/logic/ai/integration',
+    `default_config` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '默认配置JSON',
+    `sort_order`     int NULL DEFAULT 0 COMMENT '排序',
+    `status`         tinyint NULL DEFAULT 1 COMMENT '状态 0禁用 1启用',
+    `create_time`    datetime                                                     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
+    PRIMARY KEY (`type_id`) USING BTREE,
+    UNIQUE INDEX `uk_type_code`(`type_code`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for company_ai_workflow_node
+-- ----------------------------
+DROP TABLE IF EXISTS `company_ai_workflow_node`;
+CREATE TABLE `company_ai_workflow_node`
+(
+    `node_id`     bigint                                                        NOT NULL AUTO_INCREMENT COMMENT '节点ID',
+    `workflow_id` bigint                                                        NOT NULL COMMENT '工作流ID',
+    `node_key`    varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci  NOT NULL COMMENT '节点唯一标识',
+    `node_name`   varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '节点名称',
+    `node_type`   varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '节点类型val',
+    `node_icon`   varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '节点图标',
+    `node_color`  varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '节点颜色',
+    `pos_x`       int NULL DEFAULT 0 COMMENT 'X坐标',
+    `pos_y`       int NULL DEFAULT 0 COMMENT 'Y坐标',
+    `width`       int NULL DEFAULT 200 COMMENT '节点宽度',
+    `height`      int NULL DEFAULT 80 COMMENT '节点高度',
+    `node_config` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '节点配置JSON',
+    `sort_order`  int NULL DEFAULT 0 COMMENT '排序',
+    `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+    `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
+    `voice_url`   varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '声音的地址,目前只有start,end,ai需要',
+    PRIMARY KEY (`node_id`) USING BTREE,
+    INDEX         `idx_workflow_id`(`workflow_id`) USING BTREE,
+    INDEX         `idx_node_key`(`node_key`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 20 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for company_ai_workflow_exec_log
+-- ----------------------------
+DROP TABLE IF EXISTS `company_ai_workflow_exec_log`;
+CREATE TABLE `company_ai_workflow_exec_log`
+(
+    `id`                   bigint NOT NULL AUTO_INCREMENT COMMENT '记录主键id',
+    `workflow_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '工作流执行实例id',
+    `node_id`              bigint NULL DEFAULT NULL COMMENT '节点id',
+    `node_key`             varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '节点Key',
+    `node_name`            varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '节点名称',
+    `node_type`            int NULL DEFAULT NULL COMMENT '节点类型',
+    `input_data`           text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '输入数据',
+    `output_data`          text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '输出数据',
+    `status`               tinyint NULL DEFAULT NULL COMMENT '状态 ExecutionStatus',
+    `start_time`           datetime NULL DEFAULT NULL COMMENT '开始时间',
+    `end_time`             datetime NULL DEFAULT NULL COMMENT '结束时间',
+    `duration`             bigint NULL DEFAULT NULL COMMENT '执行时长(毫秒)',
+    `error_message`        text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '错误信息',
+    `retry_count`          int NULL DEFAULT NULL COMMENT '重试次数',
+    `created_time`         datetime NULL DEFAULT NULL COMMENT '创建时间',
+    `is_generate`          tinyint(1) NULL DEFAULT 0 COMMENT '是否生成数据(0否,1是)',
+    PRIMARY KEY (`id`) USING BTREE,
+    INDEX                  `instance_id_idx`(`workflow_instance_id`) USING BTREE,
+    INDEX                  `index_is_generate`(`is_generate`) USING BTREE,
+    INDEX                  `idx_node_type_is_generate_instance`(`node_type`, `is_generate`, `workflow_instance_id`) USING BTREE,
+    INDEX                  `idx_workflow_instance_id`(`workflow_instance_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 20 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for company_ai_workflow_exec
+-- ----------------------------
+DROP TABLE IF EXISTS `company_ai_workflow_exec`;
+CREATE TABLE `company_ai_workflow_exec`
+(
+    `id`                   bigint                                                       NOT NULL AUTO_INCREMENT,
+    `workflow_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '工作流执行实例id',
+    `workflow_id`          bigint NULL DEFAULT NULL COMMENT '工作流id',
+    `workflow_version`     int NULL DEFAULT NULL COMMENT '工作流版本',
+    `current_node_id`      bigint NULL DEFAULT NULL COMMENT '当前节点id',
+    `current_node_key`     varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '当前节点key',
+    `current_node_name`    varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '当前节点名称',
+    `current_node_type`    tinyint NULL DEFAULT NULL COMMENT '当前节点类型',
+    `status`               tinyint NULL DEFAULT NULL COMMENT '状态 ExecutionStatus',
+    `variables`            text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '参数',
+    `start_time`           datetime NULL DEFAULT NULL COMMENT '开始时间',
+    `last_update_time`     datetime NULL DEFAULT NULL COMMENT '最后更新时间',
+    `business_key`         bigint NULL DEFAULT NULL COMMENT '业务键值',
+    `start_node_key`       varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '实例工作流开始节点',
+    `end_node_key`         varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '实例工作流结束节点',
+    `runtime_range_start`  time NULL DEFAULT NULL COMMENT '运行时间可执行开始时间',
+    `runtime_range_end`    time NULL DEFAULT NULL COMMENT '运行时间可执行结束时间',
+    `cid_group_no`         int                                                          NOT NULL COMMENT '任务执行cid分组数',
+    `is_generate`          tinyint(1) NULL DEFAULT 0 COMMENT '是否生成数据(0否,1是)',
+    PRIMARY KEY (`id`, `workflow_instance_id`) USING BTREE,
+    UNIQUE INDEX `instance_id_idx`(`workflow_instance_id`) USING BTREE,
+    INDEX                  `workflow_version_idx`(`workflow_id`, `workflow_version`) USING BTREE,
+    INDEX                  `status_idx`(`status`) USING BTREE,
+    INDEX                  `cid_group_no_idx`(`cid_group_no`) USING BTREE,
+    INDEX                  `index_is_generate`(`is_generate`) USING BTREE,
+    INDEX                  `index_business_key_current_node_type_is_generate`(`business_key`, `current_node_type`, `is_generate`) USING BTREE,
+    INDEX                  `idx_business_key_start_time`(`business_key`, `start_time`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 337 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for company_ai_workflow_edge_version
+-- ----------------------------
+DROP TABLE IF EXISTS `company_ai_workflow_edge_version`;
+CREATE TABLE `company_ai_workflow_edge_version`
+(
+    `id`              bigint                                                       NOT NULL AUTO_INCREMENT COMMENT '主键',
+    `version_id`      bigint                                                       NOT NULL COMMENT '版本ID',
+    `workflow_id`     bigint                                                       NOT NULL COMMENT '工作流ID',
+    `edge_id`         bigint NULL DEFAULT NULL COMMENT '原连线ID',
+    `edge_key`        varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '连线唯一标识',
+    `edge_label`      varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '连线标签',
+    `source_node_key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '源节点Key',
+    `target_node_key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '目标节点Key',
+    `source_anchor`   varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT 'bottom' COMMENT '源锚点',
+    `target_anchor`   varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT 'top' COMMENT '目标锚点',
+    `edge_type`       varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT 'smoothstep' COMMENT '连线类型',
+    `edge_color`      varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '#999999' COMMENT '连线颜色',
+    `condition_expr`  varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '条件表达式',
+    `sort_order`      int NULL DEFAULT 0 COMMENT '排序',
+    `create_time`     datetime NULL DEFAULT NULL COMMENT '原创建时间',
+    `update_time`     datetime NULL DEFAULT NULL COMMENT '原更新时间',
+    PRIMARY KEY (`id`) USING BTREE,
+    INDEX             `idx_version_id`(`version_id`) USING BTREE,
+    INDEX             `idx_workflow_id`(`workflow_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 198 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for company_ai_workflow_edge
+-- ----------------------------
+DROP TABLE IF EXISTS `company_ai_workflow_edge`;
+CREATE TABLE `company_ai_workflow_edge`
+(
+    `edge_id`         bigint                                                       NOT NULL AUTO_INCREMENT COMMENT '连线ID',
+    `workflow_id`     bigint                                                       NOT NULL COMMENT '工作流ID',
+    `edge_key`        varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '连线唯一标识',
+    `edge_label`      varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '连线标签',
+    `source_node_key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '源节点Key',
+    `target_node_key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '目标节点Key',
+    `source_anchor`   varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT 'bottom' COMMENT '源锚点 top/bottom/left/right',
+    `target_anchor`   varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT 'top' COMMENT '目标锚点',
+    `edge_type`       varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT 'smoothstep' COMMENT '连线类型 straight/smoothstep/bezier',
+    `edge_color`      varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '#999999' COMMENT '连线颜色',
+    `condition_expr`  varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '条件表达式',
+    `sort_order`      int NULL DEFAULT 0 COMMENT '排序',
+    `create_time`     datetime NULL DEFAULT NULL COMMENT '创建时间',
+    `update_time`     datetime NULL DEFAULT NULL COMMENT '更新时间',
+    PRIMARY KEY (`edge_id`) USING BTREE,
+    INDEX             `idx_workflow_id`(`workflow_id`) USING BTREE,
+    INDEX             `idx_source_node`(`source_node_key`) USING BTREE,
+    INDEX             `idx_target_node`(`target_node_key`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 194 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for company_ai_workflow
+-- ----------------------------
+DROP TABLE IF EXISTS `company_ai_workflow`;
+CREATE TABLE `company_ai_workflow`
+(
+    `workflow_id`     bigint                                                        NOT NULL AUTO_INCREMENT COMMENT '工作流ID',
+    `workflow_name`   varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '工作流名称',
+    `workflow_desc`   varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '工作流描述',
+    `workflow_type`   tinyint NULL DEFAULT 1 COMMENT '工作流类型 1对话流程 2任务流程 3审批流程',
+    `status`          tinyint NULL DEFAULT 1 COMMENT '状态 0禁用 1启用',
+    `version`         int NULL DEFAULT 1 COMMENT '版本号',
+    `canvas_data`     longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '画布数据JSON(缩放、位置等)',
+    `create_by`       varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者',
+    `create_time`     datetime NULL DEFAULT NULL COMMENT '创建时间',
+    `update_by`       varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者',
+    `update_time`     datetime NULL DEFAULT NULL COMMENT '更新时间',
+    `remark`          varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
+    `del_flag`        tinyint NULL DEFAULT 0 COMMENT '删除标志 0正常 1删除',
+    `company_user_id` bigint NULL DEFAULT NULL COMMENT '绑定的销售id',
+    `company_id`      int NULL DEFAULT NULL,
+    `start_node_key`  varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '流程开始节点',
+    `end_node_key`    varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '流程结束节点',
+    PRIMARY KEY (`workflow_id`) USING BTREE,
+    INDEX             `idx_workflow_name`(`workflow_name`) USING BTREE,
+    INDEX             `idx_status`(`status`) USING BTREE,
+    INDEX             `index_del`(`del_flag`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
+-- ----------------------------
+-- Table structure for company_bind_gateway
+-- ----------------------------
+DROP TABLE IF EXISTS `company_bind_gateway`;
+CREATE TABLE `company_bind_gateway`
+(
+    `id`          bigint NOT NULL AUTO_INCREMENT COMMENT '主键id',
+    `gateway_id`  bigint NULL DEFAULT NULL COMMENT '网关线路id',
+    `company_id`  bigint NULL DEFAULT NULL COMMENT '公司id',
+    `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+    PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
+-- ----------------------------
+-- Table structure for company_voice_robotic_business
+-- ----------------------------
+DROP TABLE IF EXISTS `company_voice_robotic_business`;
+CREATE TABLE `company_voice_robotic_business`
+(
+    `id`              bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
+    `robotic_id`      bigint NULL DEFAULT NULL COMMENT '任务id',
+    `callee_id`       bigint NULL DEFAULT NULL COMMENT '外呼id',
+    `wx_client_id`    bigint NULL DEFAULT NULL COMMENT '个微信账号id',
+    `add_wx_done`     int NULL DEFAULT NULL COMMENT '加微动作完成,每次加1 初始0',
+    `call_phone_done` int NULL DEFAULT NULL COMMENT 'AI打电话动作完成,每次加1 初始0',
+    `send_msg_done`   int NULL DEFAULT NULL COMMENT '发送短信动作完成,每次加1 初始0',
+    `create_time`     datetime NULL DEFAULT NULL COMMENT '创建时间',
+    `update_time`     datetime NULL DEFAULT NULL COMMENT '更新时间',
+    `create_by`       varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+    `update_by`       varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+    `is_generate`     tinyint(1) NULL DEFAULT 0 COMMENT '是否生成数据(0否,1是)',
+    PRIMARY KEY (`id`) USING BTREE,
+    INDEX             `idx_robotic_id_is_generate`(`robotic_id`, `is_generate`) USING BTREE,
+    INDEX             `idx_robotic_id_callee_id`(`robotic_id`, `callee_id`, `id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 275 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
+-- ----------------------------
+-- Table structure for company_bind_ai_model
+-- ----------------------------
+DROP TABLE IF EXISTS `company_bind_ai_model`;
+CREATE TABLE `company_bind_ai_model`
+(
+    `id`          bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
+    `company_id`  bigint NOT NULL COMMENT '销售公司ID',
+    `model_id`    bigint NOT NULL COMMENT '模型ID',
+    `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+    PRIMARY KEY (`id`) USING BTREE,
+    UNIQUE INDEX `uk_company_model`(`company_id`, `model_id`) USING BTREE,
+    INDEX         `idx_company_id`(`company_id`) USING BTREE,
+    INDEX         `idx_model_id`(`model_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for company_ai_workflow_version
+-- ----------------------------
+DROP TABLE IF EXISTS `company_ai_workflow_version`;
+CREATE TABLE `company_ai_workflow_version`
+(
+    `version_id`      bigint                                                        NOT NULL AUTO_INCREMENT COMMENT '版本ID',
+    `workflow_id`     bigint                                                        NOT NULL COMMENT '工作流ID,关联主表company_ai_workflow.workflow_id',
+    `version_no`      int                                                           NOT NULL COMMENT '版本号,从1开始递增',
+    `workflow_name`   varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '工作流名称',
+    `workflow_desc`   varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '工作流描述',
+    `workflow_type`   tinyint NULL DEFAULT 1 COMMENT '工作流类型 1对话流程 2任务流程 3审批流程',
+    `status`          tinyint NULL DEFAULT 1 COMMENT '状态 0禁用 1启用',
+    `canvas_data`     longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '画布数据JSON',
+    `start_node_key`  varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '流程开始节点',
+    `end_node_key`    varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '流程结束节点',
+    `company_user_id` bigint NULL DEFAULT NULL COMMENT '绑定销售id',
+    `company_id`      int NULL DEFAULT NULL COMMENT '公司id',
+    `snapshot_time`   datetime NULL DEFAULT NULL COMMENT '快照生成时间',
+    `snapshot_by`     varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '快照生成者',
+    `remark`          varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
+    PRIMARY KEY (`version_id`) USING BTREE,
+    INDEX             `idx_workflow_id`(`workflow_id`) USING BTREE,
+    INDEX             `idx_workflow_version_no`(`workflow_id`, `version_no`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 35 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
 
 
 SET
 SET
 FOREIGN_KEY_CHECKS = 1;
 FOREIGN_KEY_CHECKS = 1;

+ 11 - 3
fs-wx-task/src/main/java/com/fs/app/service/WxTaskService.java

@@ -1580,17 +1580,25 @@ public class WxTaskService {
                 return;
                 return;
             }
             }
             // 处理每个客户的加微结果
             // 处理每个客户的加微结果
-            List<CompanyWxClient> upClientList = new ArrayList<>();
+            List<CompanyWxClient> upClientList = new CopyOnWriteArrayList<>();
+            List<CompletableFuture<Void>> futures = new ArrayList<>();
+
             clients.forEach(client -> {
             clients.forEach(client -> {
-                cidWorkFlowExecutor.execute(() -> {
+                CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
                     try {
                     try {
                         processSingleClientResult(client, upClientList);
                         processSingleClientResult(client, upClientList);
                     } catch (Exception e) {
                     } catch (Exception e) {
                         log.error("企微申请加微结果查询任务处理客户{}加微结果异常", client.getId(), e);
                         log.error("企微申请加微结果查询任务处理客户{}加微结果异常", client.getId(), e);
                     }
                     }
-                });
+                }, cidWorkFlowExecutor);
+                futures.add(future);
             });
             });
 
 
+            // 等待所有异步任务完成
+            if (!futures.isEmpty()) {
+                CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
+            }
+
             // 批量更新和后续处理
             // 批量更新和后续处理
             if (!upClientList.isEmpty()) {
             if (!upClientList.isEmpty()) {
                 batchUpdateClients(upClientList);
                 batchUpdateClients(upClientList);