Compare commits

..

No commits in common. "639a3978148194631bb9c8617a7b5968e4add487" and "529324a55e0cac335874289454c638ff1c2b3f5a" have entirely different histories.

2 changed files with 9 additions and 37 deletions

44
ai.go
View File

@ -6,31 +6,17 @@ import (
"gitea.cdlsxd.cn/self-tools/l_ai_excel_header_match/doubao"
"github.com/iancoleman/orderedmap"
"strings"
"unicode"
)
func ExcelMatch(ctx context.Context, selfExcelHeader, matchToExcelHeader []string, key string, model string) (resultByte []byte, err error) {
var (
result map[string]interface{}
specialChars = make(map[string]string)
withOutSpecialMatchToExcelHeader = make([]string, len(matchToExcelHeader))
)
for k, v := range matchToExcelHeader {
var char = v
char, isChange := cleanString(v)
if isChange {
specialChars[v] = char
}
withOutSpecialMatchToExcelHeader[k] = char
}
var result map[string]interface{}
modelObj := doubao.NewDouBao(model, key)
text := []string{
"第一张表表头为key第二张表表头为value如果未匹配到则返回空",
"-第一个表头:[" + strings.Join(withOutSpecialMatchToExcelHeader, ",") + "]",
"-第一个表头:[" + strings.Join(matchToExcelHeader, ",") + "]",
"-第二个表头:[" + strings.Join(selfExcelHeader, ",") + "]",
"-第一张表表头为key,第二张表表头为value,返回一个map映射的json字符串,不需要其他额外的表述以及格式",
"-输出的json长度必须和第一张表的长度一致",
"-第一张表表头为key,第二张表表头为value,返回一个map映射的json字符串",
"-不需要其他额外的表述以及格式",
}
res, err := modelObj.GetData(ctx, doubao.Text, func(input string) (string, error) {
return input, nil
@ -41,33 +27,19 @@ func ExcelMatch(ctx context.Context, selfExcelHeader, matchToExcelHeader []strin
return nil, err
}
return OrderMapWithSlice(result, withOutSpecialMatchToExcelHeader, specialChars)
return OrderMapWithSlice(result, matchToExcelHeader)
}
func cleanString(s string) (out string, isChange bool) {
var result []rune
for _, ch := range s {
if unicode.IsLetter(ch) || unicode.IsDigit(ch) || unicode.IsSpace(ch) || unicode.IsPunct(ch) {
result = append(result, ch)
} else {
isChange = true
}
}
return string(result), isChange
}
func OrderMapWithSlice(data map[string]interface{}, desiredOrder []string, specialChars map[string]string) ([]byte, error) {
func OrderMapWithSlice(data map[string]interface{}, desiredOrder []string) ([]byte, error) {
m := orderedmap.New()
for _, key := range desiredOrder {
if value, exists := data[key]; exists {
if specialReg, ex := specialChars[key]; ex {
key = specialReg
}
m.Set(key, value)
}
}
// 编码为 JSON
return json.Marshal(m)
return json.MarshalIndent(m, "", " ")
}

View File

@ -16,6 +16,6 @@ var (
}
b = []string{
"*商品名称(手工输入)", "*品牌(单选)", "*商品型号(手工输入)", "*商品条码/ISBN/ISSN(手工输入)", "*条形码资质1(手工输入)", "条形码资质2(手工输入)", "条形码资质3(手工输入)", "产地(国家)(单选)", "*产地(省份)(单选)", "产地(市)(单选)", "长度(手工输入,单位:毫米)", "宽度(手工输入,单位:毫米)", "高度(手工输入,单位:毫米)", "体积(手工输入,单位:立方厘米)", "毛重(手工输入,单位:千克)", "厂家包装含量(手工输入)", "商品税率(单选)(单选)", "采购单位", "供应商商品编码(手工输入)", "商品详情(手工输入)", "发货清单1(手工输入)", "发货清单2(手工输入)", "发货清单3(手工输入)", "发货清单4(手工输入)", "发货清单5(手工输入)", "商品标题(手工输入)", "商品卖点(手工输入)", "促销常规卖点(手工输入)", "促销常规卖点生效时间", "促销常规卖点失效时间", "促销高级卖点(手工输入)", "促销高级卖点生效时间", "促销高级卖点失效时间", "活动关联文案(手工输入)", "电脑端链接(手工输入)", "移动端链接(手工输入)", "活动链接生效时间", "活动链接失效时间", "商品图片1(手工输入)", "商品图片2(手工输入)", "*商品图片3(手工输入)", "*商品图片4(手工输入)", "商品图片5(手工输入)", "生产者(制造商)名称(手工输入)", "生产商(制造商)地址(手工输入)", "执行标准(手工输入)", "类别(单选)", "茶具类型(单选)", "国产/进口(单选)", "茶具材质(单选)", "上市时间(月)(手工输入)", "茶盘材质(多选)(可选项为:石质,电木,树脂,陶瓷,竹质,木质,其它)", "工艺(单选)", "风格(单选)", "适用人数(单选)", "功能(单选)", "容量(手工输入,单位:毫升)",
"商品名称(手工输入)", "品牌(单选)", "商品型号(手工输入)", "商品条码/ISBN/ISSN(手工输入)", "条形码资质1(手工输入)", "条形码资质2(手工输入)", "条形码资质3(手工输入)", "产地(国家)(单选)", "产地(省份)(单选)", "产地(市)(单选)", "长度(手工输入,单位:毫米)", "宽度(手工输入,单位:毫米)", "高度(手工输入,单位:毫米)", "体积(手工输入,单位:立方厘米)", "毛重(手工输入,单位:千克)", "厂家包装含量(手工输入)", "商品税率(单选)(单选)", "采购单位", "供应商商品编码(手工输入)", "商品详情(手工输入)", "发货清单1(手工输入)", "发货清单2(手工输入)", "发货清单3(手工输入)", "发货清单4(手工输入)", "发货清单5(手工输入)", "商品标题(手工输入)", "商品卖点(手工输入)", "促销常规卖点(手工输入)", "促销常规卖点生效时间", "促销常规卖点失效时间", "促销高级卖点(手工输入)", "促销高级卖点生效时间", "促销高级卖点失效时间", "活动关联文案(手工输入)", "电脑端链接(手工输入)", "移动端链接(手工输入)", "活动链接生效时间", "活动链接失效时间", "商品图片1(手工输入)", "商品图片2(手工输入)", "商品图片3(手工输入)", "商品图片4(手工输入)", "商品图片5(手工输入)", "生产者(制造商)名称(手工输入)", "生产商(制造商)地址(手工输入)", "执行标准(手工输入)", "类别(单选)", "茶具类型(单选)", "国产/进口(单选)", "茶具材质(单选)", "上市时间(月)(手工输入)", "茶盘材质(多选)(可选项为:石质,电木,树脂,陶瓷,竹质,木质,其它)", "工艺(单选)", "风格(单选)", "适用人数(单选)", "功能(单选)", "容量(手工输入,单位:毫升)",
}
)