Tencent/WeKnora · error

答案不能为空

Error message

答案不能为空

What it means

Basic FAQ import validation (validateFAQEntryPayloadBasic): the entry's Answers slice has zero elements. A FAQ entry must carry at least one answer candidate; an import row with an empty answers array is rejected during append/replace-mode validation.

Source

Thrown at internal/application/service/knowledge_faq_import.go:969

		if s != "" && !seen[s] {
			seen[s] = true
			result = append(result, s)
		}
	}
	return result
}

// validateFAQEntryPayloadBasic 验证 FAQ 条目的基本格式
func validateFAQEntryPayloadBasic(entry *types.FAQEntryPayload) error {
	if entry == nil {
		return fmt.Errorf("条目不能为空")
	}
	standardQ := strings.TrimSpace(entry.StandardQuestion)
	if standardQ == "" {
		return fmt.Errorf("标准问不能为空")
	}
	if len(entry.Answers) == 0 {
		return fmt.Errorf("答案不能为空")
	}
	hasValidAnswer := false
	for _, a := range entry.Answers {
		if strings.TrimSpace(a) != "" {
			hasValidAnswer = true
			break
		}
	}
	if !hasValidAnswer {
		return fmt.Errorf("答案不能全为空")
	}
	return nil
}

type faqMergeOperation struct {
	Entry         types.FAQEntryPayload
	ExistingChunk *types.Chunk
	OldMeta       *types.FAQChunkMetadata

View on GitHub (pinned to 988cbb0330)

Solutions

  1. Add at least one answer to the failing entry
  2. Reject entries with empty answer arrays at the API layer
  3. Use dry-run mode to enumerate all affected rows
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at internal/application/service/knowledge_faq_import.go:969 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of Tencent/WeKnora@988cbb0330 (2026-09-02). Data as JSON: /api/errors/64fb513d4a092b6d. Report an issue: GitHub.