package knowledgeqa

import (
	"encoding/json"
	"strings"
	"testing"
	"time"

	"github.com/stretchr/testify/require"

	"github.com/tidbcloud/AgentTeam/internal/knowledgeqa/protocol"
)

func TestFeedbackContextIncludesBoundedDiagnosticsAndExcludesSensitiveBodies(t *testing.T) {
	context := feedbackContext(FeedbackSnapshot{
		Turn: Turn{
			ID: "kqt_1", UserMessageID: "msg_q", AssistantMessageID: "msg_a",
			RequestedKnowledgeBaseIDs: []string{"kb_1"},
			RequestedSourceIDs:        []string{"src_1"},
			AuthorizedRoots: []AuthorizedRoot{{
				KnowledgeBaseID: "kb_1", SourceID: "src_1", Revision: "sha-1",
			}},
			RequestedModel: "model-a", RequestedReasonLevel: "high",
			EffectiveModel: "model-a", EffectiveReasonLevel: "high",
			CurrentAttemptID: "kqa_1", Status: "completed",
			DebugModelOutput: "must-not-leave-tenant",
		},
		Answer: "The answer is stored in its own bounded column.",
		Activities: []protocol.RuntimeActivity{{
			ID: "kqt_1:1", Sequence: 1, Kind: "tool", Status: "completed",
			ToolName: "read", Summary: "README.md", CreatedAt: time.Now(),
		}},
		Citations: []Citation{{
			ID: "kqc_1", KnowledgeBaseID: "kb_1", SourceID: "src_1",
			Revision: "sha-1", Path: "README.md", LineStart: 1, LineEnd: 2,
		}},
	})

	encoded, err := json.Marshal(context)
	require.NoError(t, err)
	text := string(encoded)
	require.Contains(t, text, `"activities"`)
	require.Contains(t, text, `"citations"`)
	require.Contains(t, text, `"revision":"sha-1"`)
	require.False(t, strings.Contains(text, "must-not-leave-tenant"))
	require.False(t, strings.Contains(text, "The answer is stored"))
}
