5.1.0 • Published 2 days ago

ai_ishop_engine v5.1.0

Weekly downloads
-
License
-
Repository
-
Last release
2 days ago

AI开单引擎

AI开单引擎是运行在前端的AI调用、业务处理引擎。需要依赖AI后端服务和前端运行环境提供基础信息(比如商品档案、客户、店仓、业务员、供应商等)。

运行环境

编译后支持兼容 es5 的浏览器、JS引擎。

开发环境 node 版本为 v16.18.0

调试运行

npm run dev

编译输出

npm run build

主要功能

调度AI开单功能。

使用简介

安装 npm 包

npm i ai_ishop_engine

使用示例

实例化AI引擎

import 'ai_ishop_engine'

// 实例化 ('xxx' 请替换为实际的参数值)
const engine = new AIBillEngine({
    cfg: {
        /** 解析模式:0 快速解析(默认),1 完整解析 */
        mode: 0,
        baseInfo_endPoint: 'https://xxx:8035/v775/',
        ai_endPoint: 'http://127.0.0.1:8080/ai/',
        httpHeaders: {
            'Accept': '*/*',

            /** PC端 */
            'client-src': 'pcweb',
            'esn': 'xxx',
            'token': 'xxx',
            /** PC端部署走网关时需要 */
            'Authorization': 'Bearer xxx',

            /** 移动端 */
            'version': 'V1.0',
            'appkey': 'xxx',
            'code': 'xxx',
            'timestamp': 1695370413,
            'esn': 'xxx',
            'clienttype': 'xxx',
            'ver': 'xxx',
            'apid': 'xxx',
            'clientver': 'xxx',
            'token': 'xxxx',
            'secret': 'xxx',
        },
        /** 是否是移动端使用,移动端必须设为 true, 默认 false */
        is_mobile_device: false,
        /** 是否允许退货,默认允许 */
        allow_return: false,
        /** 数量小数位数, 默认不处理 */
        qty_decimal_precision: 2,
        /** 金额小数位数, 默认不处理 */
        total_decimal_precision: 2,
    },
    // 其它参数
})

AI开单(旧方法)

旧方法只支持AI开销售单。保留仅为提供兼容支持。

// AI开单
const result = await engine.sellAdd('小明:你好老板,来一手加绒卫衣,送到成都。从1店发货。')
console.log(result)

// AI开单 - OCR图像识别
const result = await engine.sellAdd_OCR([{fileName: '666.jpg', imageUrl: 'https://xxx/xxx.jpg'}])
console.log(result)

// AI开单 - OCR图像识别 - 多图开一单
const images = [{fileName: '1.jpg', imageUrl: 'http.../x.jpg'},{fileName: '2.jpg', imageUrl: 'http.../x.jpg'}]
const result = await engine.sellAdd_OCR({list: images, flag: 0 })
console.log(result)

// AI开单 - OCR图像识别 - 多图开多单
const result = await engine.sellAdd_OCR({list: images, flag: 1 })
console.log(result)

// AI开单 - 语音开单
const result = await engine.sellAdd_Audio('语音消息', 'http://图像URL地址')
console.log(result)

AI开单(新)

新的AI开单支持更多单据。引擎方法具体调用方式如下。

  • AI开单支持的单据类型 (AIBillType 枚举类型)
/** AI开单类型 */
export enum AIBillType {
    /** 新增销售单(默认) */
    ai_sell_add = 0,
    /** 新增销售订单 */
    ai_sell_order = 1,
    /** 新增销售退货单 */
    ai_sell_order_return = 2,
    /** 新增进货单 */
    ai_purchase_add = 3,
    /** 新增进货订单 */
    ai_purchase_order = 4,
    /** 新增进货退货单 */
    ai_purchase_order_return = 5,
}
  • 参数说明:
    /**
     * 清理缓存,用于环境变化(如切换账号、基础档案变更、商品规格变更后)
     */
    static clearCache(): void;
    /**
     * AI 开单
     * @param type 开单类型 (枚举值 AIBillType )
     * @param msg 对话消息内容
     * @param billType 单据类型
     * @param cancelFlag 取消标识
     * @returns
     */
    bill(type: AIBillType, msg: string, billType?: string, cancelFlag?: string | number): Promise<any>;
    /**
     * AI 开单 - OCR 识别
     * @param type 开单类型 (枚举值 AIBillType )
     * @param imgs 图像列表数组 或 对象 { `list`: 图像列表数组; `flag`: 开单类型 `0` 多个图开一张单; `1` 多个图开多个单; `handWrite` 是否图像手写体识别(默认`false`) }
     * @param billType 单据类型
     * @param cancelFlag 取消标识
     * @returns
     */
    bill_OCR(type: AIBillType, imgs: {
        fileName: string;
        imageUrl: string;
    }[] | {
        list: {
            fileName: string;
            imageUrl: string;
        }[];
        flag?: number;
        handWrite?: boolean;
    }, billType?: string, cancelFlag?: string | number): Promise<any>;
    /**
     * AI 开单 - 语音开单
     * @param type 开单类型 (枚举值 AIBillType )
     * @param msg 语音识别后的文本消息
     * @param audioUrl 语音文件URL地址
     * @param billType 单据类型
     * @param cancelFlag 取消标识
     * @returns
     */
    bill_Audio(type: AIBillType, msg: string, audioUrl: string | undefined, billType?: string, cancelFlag?: string | number): Promise<any>;
    /**
     * 取消 AI 开单
     * @param type 开单类型 (枚举值 AIBillType )
     * @param cancelFlag 取消标记。如果未设置,只取消未设置取消标记的请求
     */
    cancelBill(type: AIBillType, cancelFlag?: string | number): void;
  • 示例:
// AI开单
const result = await engine.bill(AIBillType.ai_sell_add, '小明:你好老板,来一手男士卫衣。从1店发货。')
console.log(result)

// AI开单 - OCR图像识别
const result = await engine.bill_OCR(AIBillType.ai_sell_add, [{fileName: '666.jpg', imageUrl: 'https://xxx/xxx.jpg'}])
console.log(result)

// AI开单 - OCR图像识别 - 多图开一单
const images = [{fileName: '1.jpg', imageUrl: 'http.../x.jpg'},{fileName: '2.jpg', imageUrl: 'http.../x.jpg'}]
const result = await engine.bill_OCR(AIBillType.ai_sell_add, {list: images, flag: 0 })
console.log(result)

// AI开单 - OCR图像识别 - 多图开多单
const result = await engine.bill_OCR(AIBillType.ai_sell_add, {list: images, flag: 1 })
console.log(result)

// AI开单 - 语音开单
const result = await engine.bill_Audio(AIBillType.ai_sell_add, '语音消息', 'http://语音文件URL地址')
console.log(result)

// 取消 AI 开单
engine.cancelBill(AIBillType.ai_sell_add)

const cancelFlag = 'cancelFlag'
engine.cancelBill(AIBillType.ai_sell_add, cancelFlag)

其它

// 获取历史记录
const billType = '5'
const pageIndex = 1
const pageSize = 20
const searchKey = null
const msgList = await engine.getMsgLogList(billType, pageIndex, pageSize, searchKey)
console.log(msgList)

// 保存语料信息
const billData = JSON.stringify({})
await engine.saveCorpusData(billType, billData, result.log)

// 停止AI开单
engine.cancelSellAdd()

// 停止指定cancelFlag的AI开单
const cancelFlag = 'cancelFlag'
engine.sellAdd_OCR({list: images, flag: 1 }, billType, cancelFlag).then(result => console.log(result))
engine.cancelSellAdd(cancelFlag)

// 直接设置商品数据
const goodsData: GoodsItem[] = []
engine.setGoodsData(goodsData)

// 清理所有缓存
AIBillEngine.clearCache()
// 或
engine.clearCache()

// 直接设置基础档案数据
const customerData: CustomerItem[] = []
engine.setCustomerData(customerData)

const employeeData: EmployeeItem[] = []
engine.setEmployeeData(employeeData)

const supplierData: SupplierItem[] = []
engine.setSupplierData(supplierData)

const skuTypeData: SkuTypeItem[] = []
engine.setSkuTypeData(skuTypeData)

const storeData: StoreItem[] = []
engine.setSotreData(storeData)

const goodsData: GoodsItem[] = []
engine.setGoodsData(goodsData)

注意事项

  1. 在 flutter 项目中,使用 flutter_js 插件引擎加载时,由于此插件存在一个bug,会导致如 {"data": "a\"bc"} 丢失 \ ,变成 {"data": "a"bc"} 而不符合 JSON 规格无法正确解析。
5.1.0

2 days ago

5.0.9

2 months ago

5.0.8

2 months ago

5.0.7

2 months ago

5.0.6

2 months ago

5.0.5

5 months ago

5.0.4

5 months ago

5.0.3

6 months ago

5.0.2

6 months ago

5.0.1

6 months ago

5.0.0

6 months ago

4.0.2

6 months ago

4.0.1

6 months ago

3.0.10

7 months ago

3.0.9

7 months ago

3.0.8

7 months ago

3.0.7

7 months ago

3.0.6

7 months ago

3.0.5

7 months ago

3.0.4

7 months ago

3.0.3

8 months ago

3.0.2

8 months ago

3.0.1

8 months ago

2.0.12

8 months ago

2.0.11

8 months ago

2.0.10

8 months ago

2.0.9

8 months ago

2.0.8

9 months ago

2.0.7

9 months ago

2.0.6

9 months ago

2.0.5

9 months ago

2.0.4

9 months ago

2.0.3

9 months ago

2.0.2

9 months ago

2.0.1

9 months ago

2.0.0

9 months ago

1.0.16

9 months ago

1.0.15

10 months ago

1.0.14

10 months ago

1.0.13

10 months ago

1.0.12

10 months ago

1.0.11

10 months ago

1.0.10

10 months ago

1.0.9

10 months ago

1.0.8

10 months ago

1.0.7

10 months ago

1.0.6

10 months ago

1.0.5

10 months ago

1.0.4

10 months ago

1.0.3

10 months ago

1.0.2

10 months ago

1.0.1

10 months ago

1.0.0

10 months ago