fix: 增加空值检查和优化订单查询逻辑
This commit is contained in:
parent
cda8e1fc6e
commit
89323d3250
|
|
@ -17,6 +17,9 @@ func SetTaskRecExt(requireData *entitys.RequireData, rec *entitys.Recognize) {
|
|||
}
|
||||
|
||||
func GetTaskRecExt(rec *entitys.Recognize) (ext entitys.TaskExt, err error) {
|
||||
if rec == nil {
|
||||
return
|
||||
}
|
||||
err = json.Unmarshal(rec.Ext, &ext)
|
||||
return ext, err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,16 +4,31 @@ import (
|
|||
config2 "ai_scheduler/internal/config"
|
||||
"ai_scheduler/internal/entitys"
|
||||
"context"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func Test_task(t *testing.T) {
|
||||
c := NewZltxOrderDetailTool(config2.ToolConfig{}, nil)
|
||||
c := NewZltxOrderDetailTool(config2.ToolConfig{
|
||||
BaseURL: "https://revcl.1688sup.com/api/admin/direct/ai/%s",
|
||||
AddURL: "https://revcl.1688sup.com/api/admin/direct/log/%s/%s",
|
||||
}, nil)
|
||||
ch := make(chan entitys.Response, 10000)
|
||||
err :=
|
||||
c.Execute(context.Background(), &entitys.Recognize{
|
||||
Match: &entitys.Match{
|
||||
Parameters: `{"order_number": 859393216068067329}`,
|
||||
Parameters: `{"order_number": 864086822064234497}`,
|
||||
},
|
||||
Ext: []byte(`{"auth":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ1c2VyQ2VudGVyIiwiZXhwIjoxNzY3OTM0MTg1LCJuYmYiOjE3Njc5MjMzODUsImp0aSI6IjE3OSIsIlBob25lIjoiMTUwMDA0NTAxNTUiLCJVc2VyTmFtZSI6IjE1MDAwNDUwMTU1IiwiUmVhbE5hbWUiOiLliJjlvanlhpsiLCJBY2NvdW50VHlwZSI6MSwiR3JvdXBDb2RlcyI6IlZDTF9BRE1JTixWQ0xfU1lTVEVNLENSTV9BRE1JTixMU1hERFNfQURNSU4sTFNYRERTX1NZU1RFTSxNQVJLRVRJTkdTQUFTX1NVUEVSQURNSU4sU1RBVElTVElDQUxTWVNURU1fQURNSU4sUEhZU0lDQUxHT09EU19BRE1JTixNQVJLRVRJTkdTWVNURU1fU1VQRVIsUkVQT1JUQ0VOVEVSX0FETUlOLE1PTklUT1JfTUFESU4sWkxUWF9BRE1JTixaTFRYX09QRVJBVEUiLCJEaW5nVXNlcklkIjoiMTcxMTkzNTg3NTAzMjk5MzUifQ.d9z0S1Ia-PFAxhGstT055Amt8PI09bUHxG0_lba4UwvSomiTNCD-5DFdMkbZHwiDTlhVdBjcd1mDYFRRZXWMPoSnanubMBnRnuvTi8csch5nz1L9oWNo-HFyBE3lMw9-UJ5j84gz228_kcBsvRATT1Ixs9bnuaN9CDNz20c524llDt10C3cc8wLGMin4jWEMF4RNrf2oBZOFAahRYSJNeBmutIwRSIP1pMIAaUy_IkMCyOwK8JzgMnHJGLwIH_nxR9XZXlAN0FmrmtWVkRA2YUKvoDX5a5BCYmDVNqUbi_ZNuRPJH87Ia7_-UoyJu8Yq79jX0Qgsm6qJ4rX2nauneg"}`),
|
||||
UserContent: &entitys.RecognizeUserContent{Text: "订单查询:864086822064234497\n"},
|
||||
})
|
||||
t.Log(err)
|
||||
if err != nil {
|
||||
t.Log(err)
|
||||
}
|
||||
var res strings.Builder
|
||||
for v := range ch {
|
||||
res.WriteString(v.Content)
|
||||
}
|
||||
t.Log(res)
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,8 +84,8 @@ type ZltxOrderDetailData struct {
|
|||
|
||||
// Execute 执行直连天下订单详情查询
|
||||
func (w *ZltxOrderDetailTool) Execute(ctx context.Context, rec *entitys.Recognize) error {
|
||||
var req ZltxOrderDetailRequest
|
||||
if err := json.Unmarshal([]byte(rec.Match.Parameters), &req); err != nil {
|
||||
var req = &ZltxOrderDetailRequest{}
|
||||
if err := req.UnmarshalJSON([]byte(rec.Match.Parameters)); err != nil {
|
||||
return fmt.Errorf("invalid zltxOrderDetail request: %w", err)
|
||||
}
|
||||
if req.OrderNumber == "" {
|
||||
|
|
@ -96,6 +96,22 @@ func (w *ZltxOrderDetailTool) Execute(ctx context.Context, rec *entitys.Recogniz
|
|||
return w.getZltxOrderDetail(rec, req.OrderNumber)
|
||||
}
|
||||
|
||||
func (r *ZltxOrderDetailRequest) UnmarshalJSON(data []byte) error {
|
||||
var tmp struct {
|
||||
OrderNumber json.Number `json:"order_number"` // 使用 json.Number 保留原始格式
|
||||
}
|
||||
if err := json.Unmarshal(data, &tmp); err != nil {
|
||||
return err
|
||||
}
|
||||
// 根据需要转换为 int64 或 string
|
||||
if num, err := tmp.OrderNumber.Int64(); err == nil {
|
||||
r.OrderNumber = num
|
||||
} else {
|
||||
r.OrderNumber = tmp.OrderNumber.String()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// getMockZltxOrderDetail 获取模拟直连天下订单详情数据
|
||||
func (w *ZltxOrderDetailTool) getZltxOrderDetail(rec *entitys.Recognize, number interface{}) (err error) {
|
||||
log.Infof("订单编号:%v,类型:%v")
|
||||
|
|
@ -170,8 +186,13 @@ func (w *ZltxOrderDetailTool) getZltxOrderDetail(rec *entitys.Recognize, number
|
|||
|
||||
err = w.llm.ChatStream(context.TODO(), rec.Ch, []api.Message{
|
||||
{
|
||||
Role: "system",
|
||||
Content: "你是一个订单日志助手。用户可能会提供订单日志,你需要分析订单日志,失败订单->分析失败原因,成功订单->找出整个日志的 Base64 编码的 JSON 数据的内容进行转换并反馈给我",
|
||||
Role: "system",
|
||||
Content: "你是一个订单日志助手。用户可能会提供订单日志,你需要按以下规则处理:\n" +
|
||||
"1. **先输出结论**:用<conclusion></conclusion>标签包裹关键结论(如失败原因或Base64解码内容);\n" +
|
||||
"2. **再输出分析过程**:详细解释如何得出结论;\n" +
|
||||
"3. **订单类型处理**:\n" +
|
||||
" - 失败订单:分析失败原因(如支付超时、库存不足等);\n" +
|
||||
" - 成功订单:提取日志中的Base64编码JSON数据,解码后转换为用户可读的格式(如表格或JSON)。",
|
||||
},
|
||||
{
|
||||
Role: "assistant",
|
||||
|
|
|
|||
Loading…
Reference in New Issue