focus-product-extractor2
Version:
Extract product information from chat/order data
259 lines (232 loc) • 5.03 kB
TypeScript
declare module "focus-product-extractor2" {
interface CardMessageHeader {
type: number;
icon: string;
title: string;
}
interface CardMessageContent {
type: number;
icon?: string;
title: string;
content: string;
}
interface CardMessageImage {
type: number;
url: string;
}
interface CardMessageWare {
title: string;
desc: string;
price: number;
num: number;
image_url: string;
ware_url: string;
}
interface CardMessageOrderItem {
title: string;
desc: string;
extra_info: string[];
price: number;
num: number;
image_url: string;
ware_url: string;
}
interface CardMessageOrder {
type: number;
title: string;
desc: string;
order_id: string;
total_price: string;
list: CardMessageOrderItem[];
}
interface CardMessageInfo {
title: string;
desc: string;
}
interface CardMessageProgressItem {
title: string;
icon: string;
color: string;
desc: string;
tip: string;
}
interface CardMessageCoupon {
style: number;
type: number;
begin: number;
end: number;
name: string;
status: number;
discount: string;
quota: string;
tag: string;
image_url: string;
}
interface MessageBase {
type: number;
sub_type: number;
sku_id?: string;
spu_id?: string;
order_id?: string;
question?: string;
origin_data?: string;
}
interface TextMessage extends MessageBase {
sub_type: 1;
text: {
content: string;
};
}
interface ImageMessage extends MessageBase {
sub_type: 2;
image: {
url: string;
width: number;
height: number;
};
}
interface VideoMessage extends MessageBase {
sub_type: 3;
video: {
url: string;
width: number;
height: number;
};
}
interface CardMessage extends MessageBase {
sub_type: 4;
card_msg: {
data: Array<{
header?: CardMessageHeader;
content?: CardMessageContent;
img?: CardMessageImage;
wares?: {
type: number;
list: CardMessageWare[];
};
orders?: CardMessageOrder;
infos?: {
type: number;
list: CardMessageInfo[];
};
progress?: {
type: number;
list: CardMessageProgressItem[];
};
coupons?: {
type: number;
list: CardMessageCoupon[];
};
}>;
};
}
interface FileMessage extends MessageBase {
sub_type: 5;
file: {
url: string;
};
}
interface BuyerEnterMessage extends MessageBase {
sub_type: 6;
buyer_enter_msg: {
from: string;
sku_id: string;
spu_id: string;
order_id: string;
};
}
interface TransferOutMessage extends MessageBase {
sub_type: 7;
transfer_out: {
from: string;
from_spin: string;
to_spin: string;
pin: string;
order_id: string;
plat_goods_id: string;
};
}
interface TransferInMessage extends MessageBase {
sub_type: 8;
transfer_in: {
from: string;
from_spin: string;
to_spin: string;
pin: string;
order_id: string;
plat_goods_id: string;
};
}
interface VoiceMessage extends MessageBase {
sub_type: 9;
voice: {
url: string;
duration: number;
};
}
type ChatMessage =
| TextMessage
| ImageMessage
| VideoMessage
| CardMessage
| FileMessage
| BuyerEnterMessage
| TransferOutMessage
| TransferInMessage
| VoiceMessage;
interface OrderItem {
id: string;
name?: string;
price?: number;
status?: string;
create_time?: number;
sku_id?: string;
spu_id?: string;
image_url?: string;
}
interface CustomRule {
pattern: string;
flags?: string;
description?: string;
}
interface ProcessInput {
scene?: "chat" | "order"; // 可选参数,不传递的时候就是全部提取,当传chat就代表只从聊天中提取,传order就代表只从order中提取
platform: string;
shopId: string;
rawData: {
messages?: Array<{
sender: "buyer" | "service" | "system";
timestamp: number;
message: ChatMessage;
}>;
orderItems?: OrderItem[];
};
rules?: {
sources?: ("buyer" | "service" | "system")[];
customRules?: CustomRule[];
};
authConfig?: {
taobaoAuth?: string;
domesticAuth?: string;
overseasAuth?: string;
};
}
interface ProcessResultItem {
goodsId?: string;
spuId?: string;
orderId?: string;
name?: string;
source?: string;
matchedText?: string;
metadata: any;
}
interface ProcessResult {
items: ProcessResultItem[];
}
const FocusProductExtractor: {
process(input: ProcessInput): ProcessResult;
};
// 确保类型声明兼容两种导入方式
export = FocusProductExtractor;
export as namespace FocusProductExtractor;
}