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) {
|
func GetTaskRecExt(rec *entitys.Recognize) (ext entitys.TaskExt, err error) {
|
||||||
|
if rec == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
err = json.Unmarshal(rec.Ext, &ext)
|
err = json.Unmarshal(rec.Ext, &ext)
|
||||||
return ext, err
|
return ext, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,16 +4,31 @@ import (
|
||||||
config2 "ai_scheduler/internal/config"
|
config2 "ai_scheduler/internal/config"
|
||||||
"ai_scheduler/internal/entitys"
|
"ai_scheduler/internal/entitys"
|
||||||
"context"
|
"context"
|
||||||
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Test_task(t *testing.T) {
|
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 :=
|
err :=
|
||||||
c.Execute(context.Background(), &entitys.Recognize{
|
c.Execute(context.Background(), &entitys.Recognize{
|
||||||
Match: &entitys.Match{
|
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 执行直连天下订单详情查询
|
// Execute 执行直连天下订单详情查询
|
||||||
func (w *ZltxOrderDetailTool) Execute(ctx context.Context, rec *entitys.Recognize) error {
|
func (w *ZltxOrderDetailTool) Execute(ctx context.Context, rec *entitys.Recognize) error {
|
||||||
var req ZltxOrderDetailRequest
|
var req = &ZltxOrderDetailRequest{}
|
||||||
if err := json.Unmarshal([]byte(rec.Match.Parameters), &req); err != nil {
|
if err := req.UnmarshalJSON([]byte(rec.Match.Parameters)); err != nil {
|
||||||
return fmt.Errorf("invalid zltxOrderDetail request: %w", err)
|
return fmt.Errorf("invalid zltxOrderDetail request: %w", err)
|
||||||
}
|
}
|
||||||
if req.OrderNumber == "" {
|
if req.OrderNumber == "" {
|
||||||
|
|
@ -96,6 +96,22 @@ func (w *ZltxOrderDetailTool) Execute(ctx context.Context, rec *entitys.Recogniz
|
||||||
return w.getZltxOrderDetail(rec, req.OrderNumber)
|
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 获取模拟直连天下订单详情数据
|
// getMockZltxOrderDetail 获取模拟直连天下订单详情数据
|
||||||
func (w *ZltxOrderDetailTool) getZltxOrderDetail(rec *entitys.Recognize, number interface{}) (err error) {
|
func (w *ZltxOrderDetailTool) getZltxOrderDetail(rec *entitys.Recognize, number interface{}) (err error) {
|
||||||
log.Infof("订单编号:%v,类型:%v")
|
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{
|
err = w.llm.ChatStream(context.TODO(), rec.Ch, []api.Message{
|
||||||
{
|
{
|
||||||
Role: "system",
|
Role: "system",
|
||||||
Content: "你是一个订单日志助手。用户可能会提供订单日志,你需要分析订单日志,失败订单->分析失败原因,成功订单->找出整个日志的 Base64 编码的 JSON 数据的内容进行转换并反馈给我",
|
Content: "你是一个订单日志助手。用户可能会提供订单日志,你需要按以下规则处理:\n" +
|
||||||
|
"1. **先输出结论**:用<conclusion></conclusion>标签包裹关键结论(如失败原因或Base64解码内容);\n" +
|
||||||
|
"2. **再输出分析过程**:详细解释如何得出结论;\n" +
|
||||||
|
"3. **订单类型处理**:\n" +
|
||||||
|
" - 失败订单:分析失败原因(如支付超时、库存不足等);\n" +
|
||||||
|
" - 成功订单:提取日志中的Base64编码JSON数据,解码后转换为用户可读的格式(如表格或JSON)。",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Role: "assistant",
|
Role: "assistant",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue