{"record":{"id":"aabd1ee529fc4298","repo":"Tencent/WeKnora","slug":"weknoracloud-appid-is-required","errorCode":null,"errorMessage":"WeKnoraCloud appID is required","messagePattern":"WeKnoraCloud appID is required","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/infrastructure/docparser/weknoracloud_http_reader.go","lineNumber":38,"sourceCode":")\n\nconst (\n\tweKnoraCloudReaderBaseURL = \"https://weknora.weixin.qq.com/api/v1/doc\"\n)\n\n// WeKnoraCloudSignedDocumentReader implements the docreader HTTP protocol with WeKnoraCloud signing.\ntype WeKnoraCloudSignedDocumentReader struct {\n\tappID               string\n\tapiKey              string\n\tclient              *http.Client\n\tinitialPollInterval time.Duration\n\tmaxPollInterval     time.Duration\n\tpollTimeout         time.Duration\n}\n\nfunc NewWeKnoraCloudSignedDocumentReader(appID, apiKey string) (*WeKnoraCloudSignedDocumentReader, error) {\n\tif appID == \"\" {\n\t\treturn nil, fmt.Errorf(\"WeKnoraCloud appID is required\")\n\t}\n\tif apiKey == \"\" {\n\t\treturn nil, fmt.Errorf(\"WeKnoraCloud apiKey is required\")\n\t}\n\tclientCfg := secutils.DefaultSSRFSafeHTTPClientConfig()\n\tclientCfg.Timeout = 500 * time.Minute\n\treturn &WeKnoraCloudSignedDocumentReader{\n\t\tappID:               appID,\n\t\tapiKey:              apiKey,\n\t\tinitialPollInterval: 500 * time.Millisecond,\n\t\tmaxPollInterval:     10 * time.Second,\n\t\tpollTimeout:         20 * time.Minute,\n\t\tclient:              secutils.NewSSRFSafeHTTPClient(clientCfg),\n\t}, nil\n}\n\nfunc (p *WeKnoraCloudSignedDocumentReader) Reconnect(addr string) error {\n\treturn nil","sourceCodeStart":20,"sourceCodeEnd":56,"githubUrl":"https://github.com/Tencent/WeKnora/blob/988cbb03305e055d8ebb7d46d9ac6cc0803cd074/internal/infrastructure/docparser/weknoracloud_http_reader.go#L20-L56","documentation":"Constructor guard NewWeKnoraCloudSignedDocumentReader rejects an empty appID — the WeKnoraCloud document reader cannot sign requests without it, so construction fails immediately rather than at first use.","triggerScenarios":"Thrown at internal/infrastructure/docparser/weknoracloud_http_reader.go:38 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Provide the WeKnoraCloud appID from configuration","Check env/secret injection for an empty value","Fail datasource setup early with a clear config error"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"988cbb03305e055d8ebb7d46d9ac6cc0803cd074","analyzedAt":"2026-09-02T14:41:08.344Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}