Tencent/WeKnora · error

答案不能全为空

Error message

答案不能全为空

What it means

Basic FAQ import validation (validateFAQEntryPayloadBasic): the Answers slice is non-empty but every answer is blank after trimming, so there is no usable answer text. This fires after the hasValidAnswer loop fails, catching payloads that try to satisfy 'answers required' with whitespace-only entries.

Source

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

	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
	MergedMeta    *types.FAQChunkMetadata
	Detail        types.FAQMergeDetail
}

// calculateAppendOperations 计算 Append 模式下的操作(支持智能合并)。
// 如果 entry 的标准问在 KB 中已存在,则视为合并操作(相似问 / 反例并集,
// 答案 / 策略以新条目为准);否则视为新建。无变化(hash 一致且操作位
// 也未变)的合并目标会被 skip 掉,避免无效写库 / 重建索引。
//
// 内部 master 行为,对应开源版仅 "重复 = 失败" 的简化逻辑。FAQ 导入的

View on GitHub (pinned to 988cbb0330)

Solutions

  1. Ensure at least one answer contains non-whitespace content
  2. Strip empty-string answers when building the payload client-side
  3. Check dry-run CSV output for rows flagged with this reason
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at internal/application/service/knowledge_faq_import.go:979 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/3082f3a53719e681. Report an issue: GitHub.