{"record":{"id":"ec8c99da7fdaa1ee","repo":"flipped-aurora/gin-vue-admin","slug":"generatedfiles","errorCode":null,"errorMessage":"参数错误：generatedFiles 必须提供","messagePattern":"参数错误：generatedFiles 必须提供","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/mcp/gva_review.go","lineNumber":76,"sourceCode":"}\n\n// Handle 处理审查请求\nfunc (g *GVAReviewer) Handle(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {\n\t// 获取用户需求\n\tuserRequirementData, ok := request.GetArguments()[\"userRequirement\"]\n\tif !ok {\n\t\treturn nil, errors.New(\"参数错误：userRequirement 必须提供\")\n\t}\n\n\tuserRequirement, ok := userRequirementData.(string)\n\tif !ok {\n\t\treturn nil, errors.New(\"参数错误：userRequirement 必须是字符串类型\")\n\t}\n\n\t// 获取生成的文件列表\n\tgeneratedFilesData, ok := request.GetArguments()[\"generatedFiles\"]\n\tif !ok {\n\t\treturn nil, errors.New(\"参数错误：generatedFiles 必须提供\")\n\t}\n\n\tgeneratedFilesStr, ok := generatedFilesData.(string)\n\tif !ok {\n\t\treturn nil, errors.New(\"参数错误：generatedFiles 必须是JSON字符串\")\n\t}\n\n\t// 解析JSON字符串为字符串数组\n\tvar generatedFiles []string\n\terr := json.Unmarshal([]byte(generatedFilesStr), &generatedFiles)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"解析generatedFiles失败: %v\", err)\n\t}\n\n\tif len(generatedFiles) == 0 {\n\t\treturn nil, errors.New(\"参数错误：generatedFiles 不能为空\")\n\t}\n","sourceCodeStart":58,"sourceCodeEnd":94,"githubUrl":"https://github.com/flipped-aurora/gin-vue-admin/blob/3136500ef380842b0eb6c4daa87c3f8a47fcf9e0/server/mcp/gva_review.go#L58-L94","documentation":"The gva_review tool requires a 'generatedFiles' argument containing a JSON-encoded array of file paths to review. If the key is absent from the tool arguments, Handle returns this error. Without the file list the reviewer cannot construct the adjustment prompt.","triggerScenarios":"Invoking gva_review with 'userRequirement' provided but 'generatedFiles' omitted from the arguments map.","commonSituations":"Caller assumes the tool reviews everything by default; partial argument construction after a previous error fix; schema drift between client and server where generatedFiles was made optional on the client side.","solutions":["Include 'generatedFiles' as a JSON string array of the files to review, e.g. \"[\\\"server/api/a.go\\\"]\".","Ensure both 'userRequirement' and 'generatedFiles' are present in the same call.","Check the tool definition to confirm all required inputs before calling.","If no files exist yet, pass an explicit list of the files you intend to create and review them after generation."],"exampleFix":"// before\n{\"userRequirement\": \"添加登录页\"}\n// after\n{\"userRequirement\": \"添加登录页\", \"generatedFiles\": \"[\\\"web/src/views/login.vue\\\"]\"}","handlingStrategy":"validation","validationCode":"if _, ok := args[\"generatedFiles\"]; !ok {\n    return errors.New(\"generatedFiles is required: pass a JSON-encoded string array of file paths\")\n}","typeGuard":"func hasArg(args map[string]any, key string) bool {\n    _, ok := args[key]\n    return ok\n}","tryCatchPattern":null,"preventionTips":["Construct the full arguments object (userRequirement + generatedFiles) in one place.","Keep a shared client helper that assembles gva_review calls so no argument is forgotten.","Check the server's tool schema listing required inputs before invoking."],"tags":["mcp","validation","go","missing-argument"],"backgroundTag":"missing-required-parameter","analyzedSha":"3136500ef380842b0eb6c4daa87c3f8a47fcf9e0","analyzedAt":"2026-08-31T13:50:02.721Z","schemaVersion":2},"datasetVersion":"2026-08-31T19:17:28.585Z"}