
const { createEvaluationGraph } = require('./server/src/assessment/graph/builder');
const { HumanMessage } = require('@langchain/core/messages');

async function testGraph() {
    const graph = createEvaluationGraph();
    const config = {
        configurable: {
            thread_id: "test-session",
            model: {
                invoke: async (msgs) => {
                    console.log("Mock Model Invoked with:", msgs[0].content);
                    if (msgs[0].content.includes("考官")) {
                        return { content: JSON.stringify({ score: 9, feedback: "Good job", should_follow_up: false }) };
                    }
                    if (msgs[0].content.includes("教育顾问")) {
                        return { content: "LEVEL: Proficient\nThis is a test report." };
                    }
                    return { content: JSON.stringify([{ question_text: "Test Question?", key_points: ["A"], difficulty: "Medium", basis: "[1]..." }]) };
                }
            },
            knowledgeBaseContent: "This is test content.",
            language: "zh"
        }
    };

    console.log("--- Starting Session ---");
    let state = await graph.invoke({ messages: [new HumanMessage("Start")] }, config);
    console.log("Interviewer said:", state.messages[state.messages.length - 1].content);
    console.log("Questions length:", state.questions.length);
    console.log("Current Index:", state.currentQuestionIndex);

    console.log("\n--- Submitting Answer ---");
    state = await graph.invoke({ messages: [new HumanMessage("My answer")] }, config);
    console.log("Interviewer said:", state.messages[state.messages.length - 1].content);
    console.log("Current Index:", state.currentQuestionIndex);
    console.log("Report:", state.report);
}

// Note: This script needs the environment set up correctly to run.
// Since I can't easily run it with all dependencies, I'll rely on manual analysis first.
