From 0c747a4ea208a82b87a5b399560eb31762cda27d Mon Sep 17 00:00:00 2001 From: AlexBybye <244417287@qq.com> Date: Fri, 28 Aug 2026 18:06:54 +0800 Subject: [PATCH 01/25] ab-test: enforce workflow boundary for agent actions --- .../api/src/scut_senior_api/agent_loop.py | 34 ++++++++++++++++--- .../api/src/scut_senior_api/service.py | 14 ++++++-- .../tests/python/test_agent_loop.py | 7 ++++ 3 files changed, 48 insertions(+), 7 deletions(-) diff --git a/apps/scut-senior/api/src/scut_senior_api/agent_loop.py b/apps/scut-senior/api/src/scut_senior_api/agent_loop.py index 1a2afcff..76c9fef2 100644 --- a/apps/scut-senior/api/src/scut_senior_api/agent_loop.py +++ b/apps/scut-senior/api/src/scut_senior_api/agent_loop.py @@ -19,6 +19,16 @@ "generate_answer", "finish", ] + +# Workflow is the hard boundary. Agent may choose a next step only from the +# actions the selected workflow exposes; it never chooses a new workflow. +WORKFLOW_ACTIONS: dict[str, frozenset[ActionKind]] = { + "knowledge_qa": frozenset({"retrieve", "retrieve_with_query_rewrite", "generate_answer", "finish"}), + "exam_review": frozenset({"retrieve", "retrieve_with_query_rewrite", "generate_answer", "finish"}), + "problem_tutor": frozenset({"retrieve", "retrieve_with_query_rewrite", "generate_answer", "finish"}), + "mistake_review": frozenset({"retrieve", "retrieve_with_query_rewrite", "generate_answer", "finish"}), + "temporary_material_reading": frozenset({"retrieve", "generate_answer", "finish"}), +} EventKind = Literal[ "decision_produced", "action_rejected", @@ -50,7 +60,14 @@ ) -def choose_next_action(state: "AgentState", *, phase: str) -> ActionKind: +def action_allowed_for_workflow(workflow_type: str, action: ActionKind) -> bool: + """Return whether an Agent action stays inside the selected Workflow.""" + return action in WORKFLOW_ACTIONS.get(workflow_type, frozenset()) + + +def choose_next_action( + state: "AgentState", *, phase: str, workflow_type: str = "knowledge_qa" +) -> ActionKind: """Select one bounded action for the compatibility runtime path. This is deliberately a small policy, not a second planner: retrieval is @@ -58,11 +75,20 @@ def choose_next_action(state: "AgentState", *, phase: str) -> ActionKind: decision adapter can feed the same allowlist and reducer events. """ if phase == "retrieve" and state.retrieval_rounds == 0: - return "retrieve" + action = "retrieve" + if not action_allowed_for_workflow(workflow_type, action): + raise ValueError("workflow does not allow retrieval") + return action if phase == "retrieve_with_query_rewrite": - return "retrieve_with_query_rewrite" + action = "retrieve_with_query_rewrite" + if not action_allowed_for_workflow(workflow_type, action): + raise ValueError("workflow does not allow query rewrite retrieval") + return action if phase == "generate": - return "generate_answer" + action = "generate_answer" + if not action_allowed_for_workflow(workflow_type, action): + raise ValueError("workflow does not allow answer generation") + return action raise ValueError("unknown agent compatibility phase") diff --git a/apps/scut-senior/api/src/scut_senior_api/service.py b/apps/scut-senior/api/src/scut_senior_api/service.py index dfa0c5b5..deefcbfb 100644 --- a/apps/scut-senior/api/src/scut_senior_api/service.py +++ b/apps/scut-senior/api/src/scut_senior_api/service.py @@ -1060,7 +1060,9 @@ def persist_failed_or_interrupted( else workflow_focus.authoritative_query ) reduce_agent( - "decision_produced", action=choose_next_action(agent_state, phase="retrieve") + "decision_produced", action=choose_next_action( + agent_state, phase="retrieve", workflow_type=request.workflow_type.value + ) ) interrupted = interrupt_if_step_not_claimed() if interrupted is not None: @@ -1094,7 +1096,9 @@ def persist_failed_or_interrupted( reduce_agent( "decision_produced", action=choose_next_action( - agent_state, phase="retrieve_with_query_rewrite" + agent_state, + phase="retrieve_with_query_rewrite", + workflow_type=request.workflow_type.value, ), ) record_agent_action("retrieve_with_query_rewrite") @@ -1234,7 +1238,11 @@ def persist_failed_or_interrupted( # for the synchronous provider call and wins at the next node. reduce_agent( "decision_produced", - action=choose_next_action(agent_state, phase="generate"), + action=choose_next_action( + agent_state, + phase="generate", + workflow_type=request.workflow_type.value, + ), ) interrupted = interrupt_if_step_not_claimed() if interrupted is not None: diff --git a/apps/scut-senior/tests/python/test_agent_loop.py b/apps/scut-senior/tests/python/test_agent_loop.py index 4737f468..eb3757fd 100644 --- a/apps/scut-senior/tests/python/test_agent_loop.py +++ b/apps/scut-senior/tests/python/test_agent_loop.py @@ -8,11 +8,18 @@ choose_next_action, record_action_result, record_guard_retry, + action_allowed_for_workflow, replay_agent_events, reduce_agent_event, ) +def test_workflow_is_hard_boundary_for_agent_actions() -> None: + assert action_allowed_for_workflow("knowledge_qa", "retrieve") + assert not action_allowed_for_workflow("temporary_material_reading", "retrieve_with_query_rewrite") + assert not action_allowed_for_workflow("unknown", "retrieve") + + def event(kind: str, **payload: object) -> dict[str, object]: return {"kind": kind, **payload} From 1216c81d2d1f7ae96b66efeaae10479a8d821ec9 Mon Sep 17 00:00:00 2001 From: AlexBybye <244417287@qq.com> Date: Fri, 28 Aug 2026 18:11:37 +0800 Subject: [PATCH 02/25] ab-test: add bounded model action decision adapter --- .../api/src/scut_senior_api/agent_loop.py | 80 ++++++++++++++++++- .../api/src/scut_senior_api/service.py | 24 ++++-- .../tests/python/test_agent_loop.py | 7 ++ 3 files changed, 102 insertions(+), 9 deletions(-) diff --git a/apps/scut-senior/api/src/scut_senior_api/agent_loop.py b/apps/scut-senior/api/src/scut_senior_api/agent_loop.py index 76c9fef2..fe5e0de4 100644 --- a/apps/scut-senior/api/src/scut_senior_api/agent_loop.py +++ b/apps/scut-senior/api/src/scut_senior_api/agent_loop.py @@ -9,7 +9,10 @@ from __future__ import annotations from dataclasses import dataclass, replace -from typing import Literal +from typing import Literal, Protocol + +from .ports import ConversationTurn, GeneratedAnswer, ModelGateway, RetrievedSource +from .contracts import WorkflowRunRequest ActionKind = Literal[ @@ -65,6 +68,81 @@ def action_allowed_for_workflow(workflow_type: str, action: ActionKind) -> bool: return action in WORKFLOW_ACTIONS.get(workflow_type, frozenset()) +class AgentDecisionGateway(Protocol): + def decide( + self, + request: WorkflowRunRequest, + state: "AgentState", + phase: str, + *, + sources: list[RetrievedSource] | tuple[RetrievedSource, ...] = (), + history: tuple[ConversationTurn, ...] = (), + ) -> ActionKind: ... + + +class RuleBasedAgentDecision: + """Deterministic fallback used when the model decision experiment is off.""" + + def decide(self, request, state, phase, *, sources=(), history=()) -> ActionKind: + return choose_next_action(state, phase=phase, workflow_type=request.workflow_type.value) + + +def parse_model_action(raw: str, *, workflow_type: str) -> ActionKind | None: + """Parse a model's single-action response and apply the Workflow allowlist.""" + normalized = raw.strip().lower().replace("`", "") + aliases: dict[str, ActionKind] = { + "retrieve": "retrieve", + "retrieve_with_query_rewrite": "retrieve_with_query_rewrite", + "query_rewrite": "retrieve_with_query_rewrite", + "ask_clarification": "ask_clarification", + "generate_answer": "generate_answer", + "finish": "finish", + } + for token in normalized.replace("\n", " ").split(): + action = aliases.get(token.strip(" .,;::")) + if action is not None: + return action if action_allowed_for_workflow(workflow_type, action) else None + return None + + +class ModelAgentDecision: + """Model-backed Action adapter with fail-closed Workflow validation. + + The adapter is intentionally separate from answer generation. Providers + that cannot return a clean action fall back to the deterministic policy; + an unallowlisted action is never executed. + """ + + def __init__(self, model: ModelGateway, fallback: AgentDecisionGateway | None = None): + self.model = model + self.fallback = fallback or RuleBasedAgentDecision() + + def decide(self, request, state, phase, *, sources=(), history=()) -> ActionKind: + decision_request = request.model_copy( + update={ + "user_input": ( + "只输出一个允许的 Action 名称,不要解释。" + "允许值:retrieve, retrieve_with_query_rewrite, " + "ask_clarification, generate_answer, finish。" + f"当前 Workflow={request.workflow_type.value},阶段={phase}," + f"已检索轮次={state.retrieval_rounds},已有证据数={len(sources)}。" + ) + } + ) + try: + generated: GeneratedAnswer = self.model.generate( + decision_request, list(sources), history + ) + parsed = parse_model_action( + generated.repository_answer, workflow_type=request.workflow_type.value + ) + if parsed is not None: + return parsed + except Exception: + pass + return self.fallback.decide(request, state, phase, sources=sources, history=history) + + def choose_next_action( state: "AgentState", *, phase: str, workflow_type: str = "knowledge_qa" ) -> ActionKind: diff --git a/apps/scut-senior/api/src/scut_senior_api/service.py b/apps/scut-senior/api/src/scut_senior_api/service.py index deefcbfb..54477fba 100644 --- a/apps/scut-senior/api/src/scut_senior_api/service.py +++ b/apps/scut-senior/api/src/scut_senior_api/service.py @@ -7,8 +7,10 @@ from .auth import AuthRequired, AuthenticatedPrincipal, utc_now from .agent_loop import ( + AgentDecisionGateway, AgentBudget, AgentState, + RuleBasedAgentDecision, choose_next_action, reduce_agent_event, ) @@ -150,6 +152,7 @@ def __init__( humanizer: HumanizerGateway | None = None, zhipu_model: ModelGateway | None = None, exam_facts: object | None = None, + agent_decision: AgentDecisionGateway | None = None, ): self.settings = settings self.registry = registry @@ -165,6 +168,7 @@ def __init__( # Optional iteration-5 exam-review facts provider (fixture or local # corpus). ``None`` keeps the pre-iteration-5 behaviour exactly. self.exam_facts = exam_facts + self.agent_decision = agent_decision or RuleBasedAgentDecision() def create_conversation( self, user: RequestIdentity, course_id_or_alias: str @@ -1060,8 +1064,8 @@ def persist_failed_or_interrupted( else workflow_focus.authoritative_query ) reduce_agent( - "decision_produced", action=choose_next_action( - agent_state, phase="retrieve", workflow_type=request.workflow_type.value + "decision_produced", action=self.agent_decision.decide( + request, agent_state, "retrieve", history=history ) ) interrupted = interrupt_if_step_not_claimed() @@ -1095,10 +1099,12 @@ def persist_failed_or_interrupted( ): reduce_agent( "decision_produced", - action=choose_next_action( + action=self.agent_decision.decide( + request, agent_state, - phase="retrieve_with_query_rewrite", - workflow_type=request.workflow_type.value, + "retrieve_with_query_rewrite", + sources=retrieval_batch.sources, + history=history, ), ) record_agent_action("retrieve_with_query_rewrite") @@ -1238,10 +1244,12 @@ def persist_failed_or_interrupted( # for the synchronous provider call and wins at the next node. reduce_agent( "decision_produced", - action=choose_next_action( + action=self.agent_decision.decide( + request, agent_state, - phase="generate", - workflow_type=request.workflow_type.value, + "generate", + sources=retrieval_batch.sources, + history=history, ), ) interrupted = interrupt_if_step_not_claimed() diff --git a/apps/scut-senior/tests/python/test_agent_loop.py b/apps/scut-senior/tests/python/test_agent_loop.py index eb3757fd..a81d70f7 100644 --- a/apps/scut-senior/tests/python/test_agent_loop.py +++ b/apps/scut-senior/tests/python/test_agent_loop.py @@ -9,6 +9,7 @@ record_action_result, record_guard_retry, action_allowed_for_workflow, + parse_model_action, replay_agent_events, reduce_agent_event, ) @@ -20,6 +21,12 @@ def test_workflow_is_hard_boundary_for_agent_actions() -> None: assert not action_allowed_for_workflow("unknown", "retrieve") +def test_model_action_parser_is_fail_closed_at_workflow_boundary() -> None: + assert parse_model_action("retrieve", workflow_type="knowledge_qa") == "retrieve" + assert parse_model_action("retrieve_with_query_rewrite", workflow_type="temporary_material_reading") is None + assert parse_model_action("switch_workflow", workflow_type="knowledge_qa") is None + + def event(kind: str, **payload: object) -> dict[str, object]: return {"kind": kind, **payload} From 5f52c3d973c6300ff1e8b617fbb666fefa33b94b Mon Sep 17 00:00:00 2001 From: AlexBybye <244417287@qq.com> Date: Fri, 28 Aug 2026 18:17:48 +0800 Subject: [PATCH 03/25] ab-test: enable model-driven bounded agent decisions --- apps/scut-senior/api/src/scut_senior_api/config.py | 8 ++++++++ apps/scut-senior/api/src/scut_senior_api/main.py | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/apps/scut-senior/api/src/scut_senior_api/config.py b/apps/scut-senior/api/src/scut_senior_api/config.py index 7554f662..f7cd221d 100644 --- a/apps/scut-senior/api/src/scut_senior_api/config.py +++ b/apps/scut-senior/api/src/scut_senior_api/config.py @@ -46,6 +46,9 @@ class Settings: exam_review_plan_enabled: bool = True # Phase-two agent progress events are opt-in for old NDJSON clients. agent_event_stream_enabled: bool = False + # AB test only: model asks for the next bounded Action; invalid/unclear + # output falls back to the deterministic policy. + agent_decision_mode: Literal["rule", "model"] = "rule" # Iteration 7.5 (SOP §12A Group B): in-process periodic cleanup scheduler. # Decision gate confirmed form = in-process daemon thread for single-host # deployment; disabling restores startup/access-triggered cleanup only. @@ -110,6 +113,7 @@ def from_env(cls) -> "Settings": agent_event_stream_enabled=_env_bool( "SCUT_SENIOR_AGENT_EVENT_STREAM_ENABLED", False ), + agent_decision_mode=os.getenv("SCUT_SENIOR_AGENT_DECISION_MODE", "rule"), maintenance_scheduler_enabled=_env_bool( "SCUT_SENIOR_MAINTENANCE_SCHEDULER_ENABLED", True ), @@ -195,6 +199,10 @@ def assert_safe(self) -> None: raise UnsafeRuntimeConfiguration( "SCUT_SENIOR_AGENT_EVENT_STREAM_ENABLED must be boolean" ) + if self.agent_decision_mode not in {"rule", "model"}: + raise UnsafeRuntimeConfiguration( + "SCUT_SENIOR_AGENT_DECISION_MODE must be rule or model" + ) if self.dense_retrieval_enabled and self.retrieval_mode == "local_corpus": if self.onnx_embedding_model_path is None: raise UnsafeRuntimeConfiguration( diff --git a/apps/scut-senior/api/src/scut_senior_api/main.py b/apps/scut-senior/api/src/scut_senior_api/main.py index 52299143..0ccda781 100644 --- a/apps/scut-senior/api/src/scut_senior_api/main.py +++ b/apps/scut-senior/api/src/scut_senior_api/main.py @@ -28,6 +28,7 @@ FixtureExamFactsProvider, LocalCorpusExamFactsProvider, ) +from .agent_loop import ModelAgentDecision, RuleBasedAgentDecision from .adapters.local_corpus import LocalCorpusRetrievalGateway from .adapters.onnx import OnnxEmbeddingProvider from .adapters.mock import ( @@ -366,6 +367,11 @@ def create_app( else None ), ) + agent_decision = ( + ModelAgentDecision(model) + if active_settings.agent_decision_mode == "model" + else RuleBasedAgentDecision() + ) service = IterationZeroService( settings=active_settings, registry=registry, @@ -383,6 +389,7 @@ def create_app( if active_settings.retrieval_mode == "local_corpus" else FixtureExamFactsProvider() ), + agent_decision=agent_decision, ) maintenance_scheduler: MaintenanceScheduler | None = None From 686df3a76343ae2cef3cc19ff7e54671b3fcbb67 Mon Sep 17 00:00:00 2001 From: AlexBybye <244417287@qq.com> Date: Fri, 28 Aug 2026 18:19:01 +0800 Subject: [PATCH 04/25] ab-test: fail closed on verbose model actions --- .../api/src/scut_senior_api/agent_loop.py | 12 +++++++----- apps/scut-senior/tests/python/test_agent_loop.py | 1 + 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/apps/scut-senior/api/src/scut_senior_api/agent_loop.py b/apps/scut-senior/api/src/scut_senior_api/agent_loop.py index fe5e0de4..125b15a4 100644 --- a/apps/scut-senior/api/src/scut_senior_api/agent_loop.py +++ b/apps/scut-senior/api/src/scut_senior_api/agent_loop.py @@ -98,11 +98,13 @@ def parse_model_action(raw: str, *, workflow_type: str) -> ActionKind | None: "generate_answer": "generate_answer", "finish": "finish", } - for token in normalized.replace("\n", " ").split(): - action = aliases.get(token.strip(" .,;::")) - if action is not None: - return action if action_allowed_for_workflow(workflow_type, action) else None - return None + # Fail closed: accept a single token only. Explanatory model prose must + # never accidentally turn a mention of an Action into an executable one. + token = normalized.strip(" .,;::") + action = aliases.get(token) + if action is None: + return None + return action if action_allowed_for_workflow(workflow_type, action) else None class ModelAgentDecision: diff --git a/apps/scut-senior/tests/python/test_agent_loop.py b/apps/scut-senior/tests/python/test_agent_loop.py index a81d70f7..b56beb69 100644 --- a/apps/scut-senior/tests/python/test_agent_loop.py +++ b/apps/scut-senior/tests/python/test_agent_loop.py @@ -23,6 +23,7 @@ def test_workflow_is_hard_boundary_for_agent_actions() -> None: def test_model_action_parser_is_fail_closed_at_workflow_boundary() -> None: assert parse_model_action("retrieve", workflow_type="knowledge_qa") == "retrieve" + assert parse_model_action("I choose retrieve", workflow_type="knowledge_qa") is None assert parse_model_action("retrieve_with_query_rewrite", workflow_type="temporary_material_reading") is None assert parse_model_action("switch_workflow", workflow_type="knowledge_qa") is None From d00ef1fb292fbc79a11f971a040aa52eaf038706 Mon Sep 17 00:00:00 2001 From: AlexBybye <244417287@qq.com> Date: Thu, 3 Sep 2026 12:42:27 +0800 Subject: [PATCH 05/25] feat: add new metrics to conversation and workflow schemas - Introduced new metrics: action_rejection_count, answer_call_count, decision_call_count, decision_fallback_count, guard_retry_count, and provider_retry_count to conversation-detail.schema.json, workflow-result.schema.json, and workflow-stream-event.schema.json. - Enhanced test coverage for runtime metrics in various test files, including test_ab_runtime.py, test_agent_loop.py, test_eval_runner.py, test_exam_review_plan.py, test_iteration_3_runtime.py, and test_openrouter_models.py. - Implemented logic to ensure metrics are accurately tracked during workflow runs and decision-making processes. --- .../api/src/scut_senior_api/agent_loop.py | 27 +- .../api/src/scut_senior_api/contracts.py | 8 + .../api/src/scut_senior_api/eval_runner.py | 88 +++- .../api/src/scut_senior_api/exam_review.py | 30 +- .../api/src/scut_senior_api/main.py | 9 + .../api/src/scut_senior_api/model_catalog.py | 12 +- .../api/src/scut_senior_api/service.py | 210 ++++++-- .../api/src/scut_senior_api/workflow_focus.py | 2 + apps/scut-senior/docs/senior-ab/plan-ab.md | 498 ++++++++++++++++++ .../schemas/conversation-detail.schema.json | 78 +++ .../v1/schemas/workflow-result.schema.json | 78 +++ .../schemas/workflow-stream-event.schema.json | 78 +++ .../tests/python/test_ab_runtime.py | 154 ++++++ .../tests/python/test_agent_loop.py | 11 + .../tests/python/test_eval_runner.py | 24 + .../tests/python/test_exam_review_plan.py | 41 ++ .../tests/python/test_iteration_3_runtime.py | 74 ++- .../tests/python/test_openrouter_models.py | 41 ++ 18 files changed, 1387 insertions(+), 76 deletions(-) create mode 100644 apps/scut-senior/docs/senior-ab/plan-ab.md create mode 100644 apps/scut-senior/tests/python/test_ab_runtime.py diff --git a/apps/scut-senior/api/src/scut_senior_api/agent_loop.py b/apps/scut-senior/api/src/scut_senior_api/agent_loop.py index 125b15a4..0da26575 100644 --- a/apps/scut-senior/api/src/scut_senior_api/agent_loop.py +++ b/apps/scut-senior/api/src/scut_senior_api/agent_loop.py @@ -26,11 +26,15 @@ # Workflow is the hard boundary. Agent may choose a next step only from the # actions the selected workflow exposes; it never chooses a new workflow. WORKFLOW_ACTIONS: dict[str, frozenset[ActionKind]] = { - "knowledge_qa": frozenset({"retrieve", "retrieve_with_query_rewrite", "generate_answer", "finish"}), - "exam_review": frozenset({"retrieve", "retrieve_with_query_rewrite", "generate_answer", "finish"}), - "problem_tutor": frozenset({"retrieve", "retrieve_with_query_rewrite", "generate_answer", "finish"}), - "mistake_review": frozenset({"retrieve", "retrieve_with_query_rewrite", "generate_answer", "finish"}), - "temporary_material_reading": frozenset({"retrieve", "generate_answer", "finish"}), + # The compatibility runtime has real execution semantics only for these + # three actions. ``finish`` and ``ask_clarification`` remain part of the + # historical event vocabulary, but are intentionally not exposed to the + # model until a corresponding executor and persistence contract exist. + "knowledge_qa": frozenset({"retrieve", "retrieve_with_query_rewrite", "generate_answer"}), + "exam_review": frozenset({"retrieve", "retrieve_with_query_rewrite", "generate_answer"}), + "problem_tutor": frozenset({"retrieve", "retrieve_with_query_rewrite", "generate_answer"}), + "mistake_review": frozenset({"retrieve", "retrieve_with_query_rewrite", "generate_answer"}), + "temporary_material_reading": frozenset({"retrieve", "generate_answer"}), } EventKind = Literal[ "decision_produced", @@ -118,14 +122,16 @@ class ModelAgentDecision: def __init__(self, model: ModelGateway, fallback: AgentDecisionGateway | None = None): self.model = model self.fallback = fallback or RuleBasedAgentDecision() + self.last_used_fallback = False def decide(self, request, state, phase, *, sources=(), history=()) -> ActionKind: + self.last_used_fallback = False decision_request = request.model_copy( update={ "user_input": ( "只输出一个允许的 Action 名称,不要解释。" "允许值:retrieve, retrieve_with_query_rewrite, " - "ask_clarification, generate_answer, finish。" + "generate_answer。" f"当前 Workflow={request.workflow_type.value},阶段={phase}," f"已检索轮次={state.retrieval_rounds},已有证据数={len(sources)}。" ) @@ -141,7 +147,9 @@ def decide(self, request, state, phase, *, sources=(), history=()) -> ActionKind if parsed is not None: return parsed except Exception: - pass + self.last_used_fallback = True + else: + self.last_used_fallback = True return self.fallback.decide(request, state, phase, sources=sources, history=history) @@ -400,4 +408,7 @@ def _record_guard_retry(state: AgentState, limits: AgentBudget) -> AgentState: retries = state.guard_retries + 1 if retries > limits.max_guard_retries: return replace(state, status="budget_exhausted", budget_reason="max_guard_retries") - return replace(state, guard_retries=retries) + next_steps = state.step_count + 1 + if next_steps > limits.max_steps: + return replace(state, status="budget_exhausted", budget_reason="max_steps") + return replace(state, guard_retries=retries, step_count=next_steps) diff --git a/apps/scut-senior/api/src/scut_senior_api/contracts.py b/apps/scut-senior/api/src/scut_senior_api/contracts.py index 5573002e..01eef8a4 100644 --- a/apps/scut-senior/api/src/scut_senior_api/contracts.py +++ b/apps/scut-senior/api/src/scut_senior_api/contracts.py @@ -417,6 +417,14 @@ class TraceSafeResult(ContractModel): real_model_called: bool | None = None cache_hit: bool | None = None retry_count: Annotated[int | None, Field(ge=0)] = None + # AB runtime diagnostics. These are aggregate counters only; raw model + # prompts and private payloads never enter the student-visible Trace. + decision_call_count: Annotated[int | None, Field(ge=0)] = None + answer_call_count: Annotated[int | None, Field(ge=0)] = None + provider_retry_count: Annotated[int | None, Field(ge=0)] = None + guard_retry_count: Annotated[int | None, Field(ge=0)] = None + decision_fallback_count: Annotated[int | None, Field(ge=0)] = None + action_rejection_count: Annotated[int | None, Field(ge=0)] = None failure_code: TraceCode | None = None degradation_code: TraceCode | None = None catalog_version: str | None = None diff --git a/apps/scut-senior/api/src/scut_senior_api/eval_runner.py b/apps/scut-senior/api/src/scut_senior_api/eval_runner.py index 511f70b1..354b83a5 100644 --- a/apps/scut-senior/api/src/scut_senior_api/eval_runner.py +++ b/apps/scut-senior/api/src/scut_senior_api/eval_runner.py @@ -164,9 +164,9 @@ def _run_case( *, provider_id: str = "mock", model_id: str = "deterministic-fixture-v1", -) -> tuple[str, list[str]]: +) -> tuple[str, list[str], dict[str, object]]: if case["course_scope"] == "cross": - return "skipped", ["cross_course_disabled_by_feature_flag"] + return "skipped", ["cross_course_disabled_by_feature_flag"], {} conversation = app.state.service.create_conversation( _MOCK_USER, str(case["course_id"]) ) @@ -186,13 +186,67 @@ def _run_case( ) last_run = app.state.service.run(_MOCK_USER, request) if last_run is None: - return "failed", ["用例没有 user 轮次"] + return "failed", ["用例没有 user 轮次"], {} reasons = _check_expected(last_run, case["expected"]) - return ("passed" if not reasons else "failed"), reasons + metrics = _extract_runtime_metrics(last_run) + return ("passed" if not reasons else "failed"), reasons, metrics -def _report_line(case: dict[str, object], outcome: str, reasons: list[str]) -> dict[str, object]: - return { +def _extract_runtime_metrics(result: Any) -> dict[str, object]: + """Expose bounded, comparable runtime counters in evaluation reports. + + The model/provider trace is already a safe aggregate contract. Copy only + those counters and citation counts here so an evaluation can compare the + four decision groups without persisting prompts or source text. + """ + + model_event = next( + ( + event + for event in reversed(result.trace) + if event.node in {"mock_model", "openrouter_model", "zhipu_model", "byok_model"} + ), + None, + ) + if model_event is None: + return {} + payload = model_event.result.model_dump(exclude_none=True) + keys = ( + "duration_ms", + "decision_call_count", + "answer_call_count", + "provider_retry_count", + "guard_retry_count", + "decision_fallback_count", + "action_rejection_count", + "retry_count", + ) + metrics = {key: payload[key] for key in keys if key in payload} + metrics["duration_ms"] = model_event.duration_ms + retrieval_event = next( + (event for event in result.trace if event.node in {"fixture_retrieval", "local_corpus_retrieval"}), + None, + ) + if retrieval_event is not None: + retrieval_payload = retrieval_event.result.model_dump(exclude_none=True) + if "hit_count" in retrieval_payload: + metrics["candidate_count"] = retrieval_payload["hit_count"] + metrics.update( + { + "accepted_citation_count": len(result.citations), + "answer_char_count": len(result.repository_answer), + } + ) + return metrics + + +def _report_line( + case: dict[str, object], + outcome: str, + reasons: list[str], + metrics: dict[str, object] | None = None, +) -> dict[str, object]: + line = { "case_id": case["case_id"], "category": case["category"], "course_id": case.get("course_id"), @@ -200,6 +254,9 @@ def _report_line(case: dict[str, object], outcome: str, reasons: list[str]) -> d "outcome": outcome, "reasons": reasons, } + if metrics: + line["runtime_metrics"] = metrics + return line def run_evaluation( @@ -212,7 +269,10 @@ def run_evaluation( local_corpus: bool = False, pace_seconds: float = 0.0, case_retries: int = 0, + agent_decision_mode: str = "rule", ) -> dict[str, object]: + if agent_decision_mode not in {"rule", "model"}: + raise ValueError("agent_decision_mode must be 'rule' or 'model'") cases = json.loads(cases_path.read_text(encoding="utf-8")) runner = ( json.loads(runner_path.read_text(encoding="utf-8")) @@ -240,6 +300,7 @@ def run_evaluation( retrieval_mode=( "local_corpus" if (local_corpus or real_model) else "fixture" ), + agent_decision_mode=agent_decision_mode, openrouter_api_key=os.getenv("SCUT_SENIOR_OPENROUTER_API_KEY"), zhipu_api_key=os.getenv("SCUT_SENIOR_ZHIPU_API_KEY"), ) @@ -263,8 +324,9 @@ def run_evaluation( # free-tier platform channels throttle per-account bursts; # pacing keeps a real-model sweep under the RPM ceiling time.sleep(pace_seconds) + metrics: dict[str, object] = {} try: - outcome, reasons = _run_case( + outcome, reasons, metrics = _run_case( app, case, provider_id=provider_id, model_id=model_id ) attempt = 0 @@ -278,12 +340,12 @@ def run_evaluation( ): attempt += 1 time.sleep(max(pace_seconds, 20.0)) - outcome, reasons = _run_case( + outcome, reasons, metrics = _run_case( app, case, provider_id=provider_id, model_id=model_id ) except Exception as exc: # noqa: BLE001 - report any pipeline failure outcome, reasons = "failed", [f"{type(exc).__name__}: {exc}"] - lines.append(_report_line(case, outcome, reasons)) + lines.append(_report_line(case, outcome, reasons, metrics)) by_course: dict[str, Counter[str]] = {} for line in lines: @@ -299,6 +361,7 @@ def run_evaluation( "provider_id": provider_id if not fixture_only else "mock", "model_id": model_id if not fixture_only else "deterministic-fixture-v1", "retrieval_mode": "local_corpus" if (local_corpus or real_model) else "fixture", + "agent_decision_mode": agent_decision_mode, "executed_at": datetime.now(UTC).isoformat(), "summary": { "total": len(lines), @@ -398,6 +461,12 @@ def _parser() -> argparse.ArgumentParser: help="sleep between cases (real-model sweeps on free-tier channels " "should use 10-20s to stay under per-account RPM limits)", ) + parser.add_argument( + "--agent-decision-mode", + choices=("rule", "model"), + default="rule", + help="bounded Action decision mode for AB comparisons; default rule", + ) return parser @@ -461,6 +530,7 @@ def main(argv: Iterable[str] | None = None) -> int: local_corpus=not args.fixture_corpus if args.provider != "mock" else False, pace_seconds=args.pace_seconds, case_retries=2 if args.provider != "mock" else 0, + agent_decision_mode=args.agent_decision_mode, ) summary = report["summary"] print( diff --git a/apps/scut-senior/api/src/scut_senior_api/exam_review.py b/apps/scut-senior/api/src/scut_senior_api/exam_review.py index 008dc161..5922c5da 100644 --- a/apps/scut-senior/api/src/scut_senior_api/exam_review.py +++ b/apps/scut-senior/api/src/scut_senior_api/exam_review.py @@ -386,9 +386,10 @@ def render_exam_review_appendix(plan: ExamReviewPlan) -> str: lines.append("") lines.append("### 历年题题组") lines.append("") - for group in groups: + for group in groups[:4]: ids = "、".join( - str(q["question_id"]) for q in group.get("questions") or [] + str(q["question_id"]) + for q in (group.get("questions") or [])[:3] ) year = group.get("year") or "年份未标注" count = group.get("question_count") or len(group.get("questions") or []) @@ -396,19 +397,38 @@ def render_exam_review_appendix(plan: ExamReviewPlan) -> str: if ids: line += f";代表题号:{ids}" lines.append(line) + if len(groups) > 4: + lines.append( + f"- 其余 {len(groups) - 4} 组保留在结构化复习计划中,可按需展开回查。" + ) lines.append("") lines.append("### 复习建议") lines.append("") - for suggestion in plan.review_suggestions: + for suggestion in plan.review_suggestions[:4]: lines.append(f"- {suggestion}") lines.append("") if plan.uncovered_items: lines.append("### 未覆盖内容") lines.append("") - for item in plan.uncovered_items: - lines.append(f"- {item}") + # Keep the student-visible appendix actionable without echoing the + # full syllabus. The complete derived tuple remains available in the + # structured workflow_output for audit/export. + preview_items = [] + for item in plan.uncovered_items[:3]: + shortened = _clean_text(item, 28) + if len(_clean_text(item, 10_000)) > len(shortened): + shortened += "…" + if shortened: + preview_items.append(shortened) + preview = "、".join(preview_items) + if len(plan.uncovered_items) > 3: + preview += "等" + lines.append( + f"- 共 {len(plan.uncovered_items)} 项" + + (f":{preview}" if preview else ";完整明细见复习计划。") + ) lines.append("") return "\n".join(lines).strip() diff --git a/apps/scut-senior/api/src/scut_senior_api/main.py b/apps/scut-senior/api/src/scut_senior_api/main.py index 46037f91..c5451761 100644 --- a/apps/scut-senior/api/src/scut_senior_api/main.py +++ b/apps/scut-senior/api/src/scut_senior_api/main.py @@ -117,6 +117,7 @@ ModelHealthChecker, ModelHealthResult, ModelNotRegistered, + ModelTemporarilyUnavailable, ) from .model_credentials import ModelCredentialError, ModelCredentialManager from .paths import APP_ROOT @@ -554,6 +555,12 @@ async def resource_not_found_handler(_, exc: ResourceNotFound): async def model_not_registered_handler(_, exc: ModelNotRegistered): return _error_response(422, "model_not_registered", str(exc)) + @app.exception_handler(ModelTemporarilyUnavailable) + async def model_temporarily_unavailable_handler( + _, exc: ModelTemporarilyUnavailable + ): + return _error_response(503, "platform_model_unavailable", str(exc)) + @app.exception_handler(OpenRouterGatewayError) async def openrouter_gateway_error_handler(_, exc: OpenRouterGatewayError): return _error_response(exc.status_code, exc.code, exc.detail) @@ -1522,6 +1529,8 @@ def _safe_stream_error(exc: Exception) -> tuple[str, str]: return "capability_unavailable", exc.detail if isinstance(exc, ModelNotRegistered): return "model_not_registered", "所选模型未登记。" + if isinstance(exc, ModelTemporarilyUnavailable): + return "platform_model_unavailable", str(exc) if isinstance(exc, ResourceNotFound): return "not_found", "请求的资源不存在。" if isinstance(exc, ContractConflict | UnknownCourseError): diff --git a/apps/scut-senior/api/src/scut_senior_api/model_catalog.py b/apps/scut-senior/api/src/scut_senior_api/model_catalog.py index 3750dc19..5039fef0 100644 --- a/apps/scut-senior/api/src/scut_senior_api/model_catalog.py +++ b/apps/scut-senior/api/src/scut_senior_api/model_catalog.py @@ -99,6 +99,14 @@ class ModelNotRegistered(ValueError): pass +class ModelTemporarilyUnavailable(RuntimeError): + """A known catalog entry that failed its current availability gate.""" + + def __init__(self, availability_status: ModelAvailabilityStatus): + super().__init__("所选模型当前暂时不可用,请稍后重试。") + self.availability_status = availability_status + + class PublicModelCatalogEntry(BaseModel): model_config = ConfigDict(extra="forbid") @@ -441,8 +449,10 @@ def resolve( ) -> ModelCatalogEntry: self.refresh_health() entry = self._by_key.get((provider_id, model_id, model_source)) - if entry is None or not entry.user_selectable: + if entry is None: raise ModelNotRegistered("所选模型未在当前可用的平台目录中登记。") + if not entry.user_selectable: + raise ModelTemporarilyUnavailable(entry.availability_status) return entry def public_payload(self) -> dict[str, object]: diff --git a/apps/scut-senior/api/src/scut_senior_api/service.py b/apps/scut-senior/api/src/scut_senior_api/service.py index 88963bc4..91dc7087 100644 --- a/apps/scut-senior/api/src/scut_senior_api/service.py +++ b/apps/scut-senior/api/src/scut_senior_api/service.py @@ -10,6 +10,7 @@ AgentDecisionGateway, AgentBudget, AgentState, + ModelAgentDecision, RuleBasedAgentDecision, choose_next_action, reduce_agent_event, @@ -954,6 +955,14 @@ def _run( agent_budget = AgentBudget() agent_state = AgentState() agent_started = perf_counter() + agent_metrics = { + "decision_call_count": 0, + "answer_call_count": 0, + "provider_retry_count": 0, + "guard_retry_count": 0, + "decision_fallback_count": 0, + "action_rejection_count": 0, + } def reduce_agent(kind: str, **payload: object) -> None: nonlocal agent_state @@ -986,6 +995,48 @@ def reduce_agent(kind: str, **payload: object) -> None: def record_agent_action(action: str) -> None: reduce_agent("action_executed", action=action) + def decide_for_phase( + phase: str, + expected_action: str, + *, + sources: list[RetrievedSource] | tuple[RetrievedSource, ...] = (), + allow_model: bool = False, + ) -> str: + """Record one bounded decision and ensure it matches execution. + + Fixed phases use the deterministic policy. The model decision + experiment is retained only for genuinely optional query rewrite; + any invalid, unavailable, or phase-incompatible result falls back + to the expected server-owned action and leaves an audit event. + """ + action = expected_action + if allow_model and self.settings.agent_decision_mode == "model": + agent_metrics["decision_call_count"] += 1 + action = self.agent_decision.decide( + request, + agent_state, + phase, + sources=sources, + history=history, + ) + if isinstance(self.agent_decision, ModelAgentDecision) and self.agent_decision.last_used_fallback: + agent_metrics["decision_fallback_count"] += 1 + if action != expected_action: + agent_metrics["action_rejection_count"] += 1 + reduce_agent( + "action_rejected", + requested_action=action, + expected_action=expected_action, + ) + action = expected_action + reduce_agent( + "decision_produced", + action=action, + phase=phase, + expected_action=expected_action, + ) + return action + run_id = ( stream_session.workflow_run_id if stream_session is not None @@ -1145,11 +1196,7 @@ def persist_failed_or_interrupted( if exam_plan is not None else workflow_focus.authoritative_query ) - reduce_agent( - "decision_produced", action=self.agent_decision.decide( - request, agent_state, "retrieve", history=history - ) - ) + decide_for_phase("retrieve", "retrieve") interrupted = interrupt_if_step_not_claimed() if interrupted is not None: return interrupted @@ -1172,35 +1219,44 @@ def persist_failed_or_interrupted( retrieval_query, history ) if context_query: - retry_started = perf_counter() - context_batch = self.retrieval.search( - course_ids, context_query + # Decide before invoking the second retrieval. A model + # mismatch is recorded and replaced with the server-owned + # expected action before any retrieval side effect. + rewrite_action = decide_for_phase( + "retrieve_with_query_rewrite", + "retrieve_with_query_rewrite", + sources=retrieval_batch.sources, + allow_model=True, ) - if isinstance(context_batch, RetrievalBatch) and ( - context_batch.sources - ): - reduce_agent( - "decision_produced", - action=self.agent_decision.decide( - request, - agent_state, - "retrieve_with_query_rewrite", - sources=retrieval_batch.sources, - history=history, - ), + if rewrite_action == "retrieve_with_query_rewrite": + retry_started = perf_counter() + context_batch = self.retrieval.search( + course_ids, context_query ) record_agent_action("retrieve_with_query_rewrite") - retrieval_batch = context_batch - _append_trace( - trace, - node="retrieval_context_carry", - result={ - "hit_count": 0, - "candidate_count": len(retrieval_batch.sources), - "rewritten_query": context_query[:200], - }, - duration_ms=_elapsed_ms(retry_started), - ) + if isinstance(context_batch, RetrievalBatch) and context_batch.sources: + retrieval_batch = context_batch + _append_trace( + trace, + node="retrieval_context_carry", + result={ + "hit_count": 0, + "candidate_count": len(retrieval_batch.sources), + "rewritten_query": context_query[:200], + }, + duration_ms=_elapsed_ms(retry_started), + ) + else: + _append_trace( + trace, + node="retrieval_context_carry", + result={ + "hit_count": 0, + "candidate_count": 0, + "rewritten_query": context_query[:200], + }, + duration_ms=_elapsed_ms(retry_started), + ) if not isinstance(retrieval_batch, RetrievalBatch): # Keep injected iteration-1 test doubles compatible, but never # accept an unversioned result in explicit local-corpus mode. @@ -1307,7 +1363,9 @@ def persist_failed_or_interrupted( started = perf_counter() api_key: str | None = None - retry_count = 0 + provider_retry_count = 0 + guard_retry_count = 0 + guard_retry_context: str | None = None model_node = ( "byok_model" if use_user_key @@ -1329,20 +1387,23 @@ def persist_failed_or_interrupted( # Admission and cancellation share a short lifecycle lock. A # claim that wins is considered in flight; cancel never waits # for the synchronous provider call and wins at the next node. - reduce_agent( - "decision_produced", - action=self.agent_decision.decide( - request, - agent_state, - "generate", - sources=retrieval_batch.sources, - history=history, - ), - ) + decide_for_phase("generate", "generate_answer") interrupted = interrupt_if_step_not_claimed() if interrupted is not None: return interrupted try: + agent_metrics["answer_call_count"] += 1 + generation_request = request + if guard_retry_context: + generation_request = request.model_copy( + update={ + "user_input": ( + f"{request.user_input}\n\n" + "[内部引用校验修复提示] 上一次回答未通过引用校验," + f"请只修复以下问题:{guard_retry_context}" + ) + } + ) if use_user_key: assert api_key is not None # 迭代 7.5:断开/取消时尽力中止上游等待(cancel_check @@ -1354,7 +1415,7 @@ def persist_failed_or_interrupted( ) generated = self.byok_model.generate( api_key=api_key, - request=request, + request=generation_request, sources=sources, history=history, cancel_check=cancel_check, @@ -1367,7 +1428,7 @@ def persist_failed_or_interrupted( else self.model ) generated = platform_model.generate( - request, + generation_request, sources, history=history, cancel_check=( @@ -1381,16 +1442,17 @@ def persist_failed_or_interrupted( if interrupted is not None: return interrupted if ( - retry_count >= 1 + provider_retry_count >= 1 or not _is_retryable_model_output_error(model_error) ): raise - retry_count += 1 + provider_retry_count += 1 + agent_metrics["provider_retry_count"] = provider_retry_count _append_trace( trace, node="model_output_retry", result={ - "retry_count": retry_count, + "retry_count": provider_retry_count, "failure_code": "model_output_retryable_failure", }, ) @@ -1401,6 +1463,10 @@ def persist_failed_or_interrupted( interrupted = finish_interrupted() if interrupted is not None: return interrupted + # The provider call completed, so the generation action has + # genuinely executed even if its output is rejected by the + # downstream Guard and needs one bounded repair attempt. + record_agent_action("generate_answer") try: guarded = build_guarded_answer( request=request, @@ -1408,7 +1474,8 @@ def persist_failed_or_interrupted( sources=sources, course_ids=set(course_ids), ) - except RuntimeGuardError: + except RuntimeGuardError as guard_error: + reduce_agent("observation_recorded") interrupted = finish_interrupted() if interrupted is not None: return interrupted @@ -1420,7 +1487,7 @@ def persist_failed_or_interrupted( # failing the run after a long model call. guarded = _empty_candidate_insufficient_evidence() break - if retry_count >= 1: + if guard_retry_count >= 1: interrupted = persist_failed_or_interrupted( failure_node="citation_guard", duration_ms=_elapsed_ms(started), @@ -1429,12 +1496,14 @@ def persist_failed_or_interrupted( return interrupted raise reduce_agent("guard_retry_recorded") - retry_count += 1 + guard_retry_count += 1 + agent_metrics["guard_retry_count"] = guard_retry_count + guard_retry_context = str(guard_error).strip()[:500] or "引用或回答结构未通过校验" _append_trace( trace, node="model_output_retry", result={ - "retry_count": retry_count, + "retry_count": guard_retry_count, "failure_code": "model_output_guard_rejected", }, ) @@ -1442,6 +1511,42 @@ def persist_failed_or_interrupted( if interrupted is not None: return interrupted continue + reduce_agent("observation_recorded") + if ( + request.workflow_type == WorkflowType.EXAM_REVIEW + and sources + and not guarded.citation_ids + and guard_retry_count < 1 + ): + # An exam-review request with retrieved past-paper + # candidates has not met its evidence contract when the + # model emits no [S#] markers. Give it one explicit repair + # attempt; if it still refuses, retain the existing honest + # partial/insufficient result instead of looping or + # fabricating citations server-side. + reduce_agent("guard_retry_recorded") + guard_retry_count += 1 + agent_metrics["guard_retry_count"] = guard_retry_count + allowed_ids = ", ".join( + f"[S{index}]" for index in range(1, len(sources) + 1) + ) + guard_retry_context = ( + "当前复习回答检索到了历年卷课程资料,但没有任何可回查引用。" + f"请仅使用确实支持对应说法的候选编号 {allowed_ids}," + "在相关句子后至少加入一条 [S#];不要编造编号。" + ) + _append_trace( + trace, + node="model_output_retry", + result={ + "retry_count": guard_retry_count, + "failure_code": "exam_review_citation_missing", + }, + ) + interrupted = finish_interrupted() + if interrupted is not None: + return interrupted + continue break except AuthRequired: self.repository.discard_nonterminal_run(str(user.user_id), run_id) @@ -1469,7 +1574,8 @@ def persist_failed_or_interrupted( "billing_label": billing_label, "availability_status": availability_status, "real_model_called": not mock_only, - "retry_count": retry_count, + "retry_count": provider_retry_count + guard_retry_count, + **agent_metrics, }, ) diff --git a/apps/scut-senior/api/src/scut_senior_api/workflow_focus.py b/apps/scut-senior/api/src/scut_senior_api/workflow_focus.py index 1fbe9fab..23c23fc2 100644 --- a/apps/scut-senior/api/src/scut_senior_api/workflow_focus.py +++ b/apps/scut-senior/api/src/scut_senior_api/workflow_focus.py @@ -323,6 +323,8 @@ def build_workflow_focus(request: WorkflowRunRequest) -> WorkflowFocus: "exam_date、available_hours 与 goals 不作为检索词来源;" "系统生成的“备考复习统计(系统生成)”附录是年份、题号与出现次数的唯一事实," "不得自行编造或改写统计数字。" + "不要在回答中重新粘贴完整用户大纲,也不要重复系统附录中的完整统计;" + "请把篇幅用于解释复习顺序、具体易错点和可执行的练习方式。" "你自己补充的练习样题必须放入以「AI 生成样题」开头的标题小节," "并在小节首行标注“以下样题为 AI 生成,非历年真题”;不得把样题伪装成真题。" ) diff --git a/apps/scut-senior/docs/senior-ab/plan-ab.md b/apps/scut-senior/docs/senior-ab/plan-ab.md new file mode 100644 index 00000000..778d4438 --- /dev/null +++ b/apps/scut-senior/docs/senior-ab/plan-ab.md @@ -0,0 +1,498 @@ +# SCUT 老学长 AB 分支优化计划 + +版本:0.1(基于最新 AB 实跑后的收敛方案) +状态:**P0/P1 最小修复已完成;真实模型合并门槛尚未满足**。 + +本文只针对 `ab-test/agent-action-shadow`。它不是 PLAN-2 的替代文档,也不是 +把系统扩展成通用 Agent 平台的方案。目标是解释当前 AB 分支到底做了什么,保留 +已经证明有价值的证据增强,同时消除额外模型调用带来的延迟、重试和输出冗余。 + +## 1. 结论与边界 + +### 1.1 当前结论 + +当前 AB 分支是“模型决策适配器 + 原有单链路运行时”的影子实验: + +```text +请求校验 → 确定性计划/检索 → 模型决策询问 → 固定检索或固定生成 + → 引用 Guard → 结果附录/外部搜索 → 持久化 +``` + +它借鉴了 EventStream 的事件账本、Reducer 和 Observe → Decide → Act 形式, +但还不是一个由 Action 驱动执行的完整 EventStream Loop: + +- `decision_produced` 会记录模型选择的动作; +- 服务端仍按既定代码路径执行检索和生成; +- 固定检索和回答阶段由服务端预期动作直接执行; +- 可选查询改写先通过 Action Guard,再执行第二次检索; +- `finish`、`ask_clarification` 暂未暴露给模型,避免出现无执行语义的动作; +- 不合规模型动作会记录 `action_rejected` 并显式回退到服务端动作。 + +因此,当前实跑可以证明 AB 的额外模型调用成本,但不能把引用数量提升直接归因 +给 Agent 决策机制。引用收益还可能来自已有的混合检索、exam_review 确定性计划、 +模型输出差异或回答重试。 + +### 1.2 版本目标 + +本计划只做四件事: + +1. 让决策记录与实际执行一致,或者明确关闭模型决策; +2. 降低不必要的决策调用、回答重试和附录冗余; +3. 保留 AB 已观察到的证据覆盖和知识点组织能力; +4. 建立可归因、可复现、不过度依赖供应商统计口径的下一轮实验。 + +### 1.3 明确不做 + +- 不引入 LangChain、ReAct 框架、独立 Planner、消息队列或新的常驻服务; +- 不把工具开放给模型直接调用; +- 不改变五类 Workflow、课程权限、引用 Guard 和本地单机部署边界; +- 不在本计划中重新设计前端 Trace 或学生侧复杂 Agent 调试面板。 + +## 2. 当前实现地图 + +### 2.1 Harness 与 Workflow 边界 + +入口为 `main.py#create_app`,由 `HARNESS_REGISTRY.resolve_preset()` 将请求的 +`workflow_type` 绑定到一个不可变 `AgentPreset`。Preset 提供: + +- Workflow 与 focus strategy 的一一映射; +- 允许工具的元数据; +- 输入模态与模型兼容性检查; +- 课程与权限边界的运行前置条件。 + +工具目录中的 `model_callable=False` 仍然有效:课程检索、证据定位、Bilibili +搜索和临时材料读取均由服务端编排,模型不能直接发起工具调用。 + +### 2.2 Agent 内核 + +`agent_loop.py` 包含: + +- `WORKFLOW_ACTIONS`:按 Workflow 的动作白名单(当前仅暴露有执行语义的三类动作); +- `ModelAgentDecision`:用同一个 `ModelGateway` 询问下一个 Action; +- `RuleBasedAgentDecision`:模型决策关闭或解析失败时的确定性 fallback; +- `AgentState` 与 `reduce_agent_event()`:不可变状态折叠; +- `AgentBudget`:步骤、检索轮次、查询改写、同动作重试、Guard 重试和运行时限; +- `parse_model_action()`:只接受单个动作 token,解析失败时 fail-closed。 + +当前 `agent_decision_mode` 由环境变量 +`SCUT_SENIOR_AGENT_DECISION_MODE` 控制,默认值仍为 `rule`。AB 实跑必须显式打开 +`model`,否则运行的是 master 侧的确定性策略。 + +### 2.3 事件流与账本 + +`workflow_stream.py` 负责请求级 NDJSON 顺序、取消和终态竞争;`agent` 事件只是 +可选的额外流事件,默认不发送。SQLite 中的 `agent_events` 和 +`agent_state_snapshots` 负责单个 run 的追加事件与状态快照,并在写入时进行重放 +一致性校验。 + +这部分是运行审计基础,不等于存在一个异步事件总线。当前运行主逻辑仍在 +`service.py#IterationZeroService._run` 中同步推进。 + +### 2.4 实际运行路径 + +`service.py#_run` 的关键顺序如下: + +1. 校验用户、课程、模型、Workflow 和历史上下文; +2. 初始化 `RunStateMachine`、`AgentState`,保存 running run; +3. `exam_review` 时先生成确定性复习计划; +4. 服务端确定性执行一次检索,不调用完整模型询问 `retrieve`; +5. 执行课程检索、私有知识合并、课程授权校验和来源去重; +6. 只有在本地检索空结果且满足条件时,才在第二次检索前询问一次可选决策; +7. 直接进入回答模型;固定阶段不重复调用完整模型询问 `generate_answer`; +8. 调用 OpenRouter、智谱、BYOK 或 Mock 模型生成回答; +9. 解析 Markdown/JSON、全角引用和 `scut-meta`; +10. 执行引用、课程范围、URL 和 AnswerBlock Guard; +11. Guard 或供应商输出错误时最多重试一次; +12. 可选执行 Humanizer 和主回答语气控制; +13. `exam_review` 追加确定性统计附录; +14. 根据受控关键词执行一次 Bilibili 匿名搜索; +15. 保存回答、引用、Trace、外部资源和 Agent 状态。 + +### 2.5 输出组成 + +最终学生可见内容由三部分组成: + +```text +模型正文 + + 可选 Humanizer 后的正文 + + exam_review 系统附录 +``` + +其中附录由 `exam_review.py#render_exam_review_appendix()` 确定性生成,包含范围 +说明、证据边界、历年题统计、知识点分层、代表性真题、复习建议和未覆盖内容。 +这解释了 AB 与 master 都出现的“未覆盖内容重复用户大纲”和统计篇幅偏大的问题。 + +## 3. 实跑证据的正确解读 + +### 3.1 可以保留的观察 + +- AB 在这两次样本中的引用数量和接受数高于 master; +- AB 的章节组织和“复习顺序 + 易错点”表达更规整; +- master 的运行路径更短,没有模型输出重试; +- 两边课程越权均为 0,证据状态均为 `sufficient`; +- 两边都存在附录冗余,说明这是共同输出链路问题,不是单纯 AB 问题。 + +### 3.2 不能直接归因的观察 + +AB 的引用提升不能直接证明是模型 Action 决策带来的,因为当前 Action 并未真正 +改变检索和生成分支。下一轮必须增加“决定动作”和“实际执行动作”的对应证据, +再讨论 Agent 是否有收益。 + +### 3.3 数据口径提醒 + +表格中的耗时显示: + +```text +AB 84.77 秒 +AB-2 90.83 秒 +master 80.17 秒 +master-2 82.59 秒 +``` + +按表格计算,AB 比 master 慢约 5.7%~11.8%,不能同时表述为“接近 master 的 +三倍”。后续以原始运行记录和统一计算方法为准。 + +`input token`、`未命中缓存` 和 `output token` 在四次运行中的统计形态不一致, +例如出现 input token 为 0 的记录。因此它们只能作为供应商观测字段,不能在没有 +统一账单口径时直接做精确成本归因。 + +## 4. P0:必须先沉淀的最小修复 + +P0 的目标不是增加 Agent 能力,而是让实验结果可信、运行成本可控。 + +### P0-1 决策与执行一致性 + +在 `service.py#_run` 中增加显式的动作执行边界: + +```text +decision_produced + → Action Guard + → action_executed + → observation_recorded +``` + +最小方案有两种,优先采用第一种: + +1. 只保留当前已实现的 `retrieve`、`retrieve_with_query_rewrite`、 + `generate_answer`,让它们真正决定对应执行函数; +2. 如果暂时不实现 `finish`、`ask_clarification`,就从当前实验白名单中移除, + 不让模型返回一个服务端不会执行的动作。 + +如果模型动作不适合当前阶段,必须: + +- 写入 `action_rejected`; +- 进入确定性的阶段 fallback; +- 记录 `requested_action` 和 `executed_action`; +- 不把不一致状态当成正常成功运行。 + +验收要求:正常路径中 `decision_produced.action` 与 +`action_executed.action` 一致;发生 fallback 时有明确 Trace 原因。 + +### P0-2 移除完整模型的重复决策调用 + +当前 `ModelAgentDecision` 复用回答模型和完整请求构造,仍可能携带历史和课程 +候选,且使用回答级 `max_tokens=16384`。这使一次 Action 判断接近一次完整回答的 +成本。 + +首选做法: + +- 第一次检索固定由服务端执行,不调用模型决定 `retrieve`; +- 证据是否需要补检索,先由确定性条件判断; +- 证据满足要求后直接进入一次回答生成; +- 只有确实存在“是否补检索”这类不确定节点时,才调用一个轻量决策器。 + +若要保留模型决策实验,则至少做到: + +- 决策模型与回答模型配置分离; +- 决策请求只传结构化观察量,不传完整 source 正文; +- `max_tokens` 使用很小的控制预算; +- temperature 设为 0; +- 决策调用失败或输出不合规时使用显式确定性 fallback。 + +P0 不要求引入新的模型供应商,也不要求建立新的服务。 + +### P0-3 分离重试类型和模型调用计数 + +当前 `retry_count` 不能清楚区分回答重试、Guard 重试、供应商重试和再次决策。 +应增加运行级内部指标或 Trace 字段: + +```text +decision_call_count +answer_call_count +provider_retry_count +guard_retry_count +decision_fallback_count +action_rejection_count +``` + +这些字段只用于 Trace、评测和服务端诊断,不需要变成学生侧复杂 UI。 + +同时修正预算口径:如果文档继续声明“Guard 重试计入 max_steps”,就让 +`guard_retry_recorded` 同步增加 `step_count`;否则修改文档,明确它是独立计数。 + +### P0-4 Guard 重试必须携带修复原因 + +Guard 失败后的第二次回答不能继续使用完全相同的上下文。增加请求级、服务端内部 +的修复提示,例如: + +```text +上一次回答未通过引用校验:未知引用 [S7];请只修复引用问题,保持主题和结构不变。 +``` + +修复提示: + +- 只进入模型调用上下文; +- 不进入学生可见正文; +- 不改变 Workflow 和课程范围; +- 仍受一次 Guard 重试上限约束。 + +### P0-5 压缩 exam_review 学生可见附录 + +系统计划与模型正文应明确分工: + +```text +系统:复习顺序、统计、未覆盖项、证据边界 +模型:解释顺序原因、易错点、记忆方法和练习方式 +``` + +学生可见附录只保留: + +- 短的复习顺序; +- 少量代表性统计; +- 2~4 条代表性引用; +- 未覆盖项的数量和短名称。 + +详细题组、年份分布和完整统计继续放入 `workflow_output.exam_review` 与 Trace。 + +“未覆盖内容”不得重新复制整段用户大纲。优先输出: + +```text +未覆盖 3 项:矩阵分块、Jordan 标准形、正定判定 +``` + +并在模型 prompt 中明确禁止重新粘贴完整大纲和系统统计。 + +### P0-6 让实验具备因果可比性 + +下一轮至少保留四个对照组: + +| 组别 | 决策器 | 目的 | +| ---- | ------------------- | ------------------- | +| A | 无,固定链路 | master 基线 | +| B | 有,但不驱动执行 | 测量纯额外调用成本 | +| C | 有,真正驱动 Action | 测量 Agent 行为收益 | +| D | 确定性/轻量决策 | 测量收益成本比 | + +每组使用相同的请求、课程包、模型、温度和检索配置。至少记录: + +```text +P50/P95 总耗时 +决策调用次数 +回答调用次数 +Guard/供应商重试次数 +候选数、接受引用数、引用接受率 +回答字符数 +供应商 token 字段与本地调用计数 +成本字段 +决定动作、执行动作及 fallback 原因 +``` + +四次已有运行作为历史观察保留,不作为长期稳定性结论。 + +## 5. P1:在 P0 稳定后再考虑的改造 + +P0 已通过后端全量回归(662 passed,1 warning)及 AB 专项回归。当前 P1 只沿着 +已有同步执行表收敛,不扩展为通用 Agent 平台。 + +### P1-1 最小 Action Executor(已以兼容执行边界落地) + +服务端已形成等价的最小执行边界: + +```text +retrieve → execute_retrieval +retrieve_with_query_rewrite → execute_query_rewrite +generate_answer → execute_generation +finish → finish_run +``` + +查询改写动作在调用检索前完成决策校验,固定检索/生成不再进行冗余决策调用。 +不增加通用插件发现、不增加动态工具注册、不增加跨运行任务队列。 + +### P1-2 证据驱动的有限循环(当前实现已满足上限,保留后续观测) + +对于 `exam_review`,运行时只支持以下有限路径: + +```text +retrieve + → 证据足够 → generate_answer + → 证据不足且未超限 → retrieve_with_query_rewrite + → 仍不足 → bounded insufficient_evidence +``` + +不引入自由 ReAct,也不允许模型无限决定下一步。 + +### P1-3 统一输出责任 + +对 `exam_review` 的模型 prompt、附录渲染和结果契约做一次责任收敛: + +- 模型不复制用户大纲; +- 模型不重复完整统计; +- 系统计划只生成一次; +- 详细统计从正文移到结果元数据或折叠区域; +- 引用仍由现有 Guard 最终裁决。 + +### P1-4 继续保留的证据增强 + +以下能力不因关闭模型决策而回滚: + +- exam_review 确定性计划; +- 历年题标题和知识点检索锚点; +- 混合检索与规则重排; +- `【S1】` / `[S1]` 兼容解析; +- Bilibili 关键词中的课程名 + 聚焦知识点; +- 课程越权、引用重复和未知编号的 fail-closed Guard。 + +这些能力应与“是否启用模型 Action 决策”分开配置和评测。 + +## 6. P2:仅在证据支持时做的增强 + +以下事项不作为当前 AB 优化的前置条件: + +- 更复杂的上下文压缩或自动摘要; +- 独立的决策模型服务; +- 多 Agent 协作; +- 在线学习或自动调参; +- 复杂的学生侧 Agent 可视化; +- 以供应商 token 统计为唯一成本真相; +- 自动根据模型回答生成新的课程事实。 + +如果 P0/P1 已证明轻量决策能在不增加明显 P95 的情况下提高引用接受率,再单独 +提出小范围 P2 变更。 + +## 7. 验收与止损 + +### 7.1 P0 验收 + +- 决策动作与执行动作一致,或明确记录 fallback/rejection; +- 正常 exam_review 路径不再为固定阶段重复调用完整回答模型; +- 决策、回答、供应商和 Guard 重试可以分别统计; +- Guard 重试携带有限的修复原因; +- “未覆盖内容”不再整段复制用户大纲; +- 学生可见统计明显缩短,但详细结果仍可从 `workflow_output` 追溯; +- 既有课程范围、引用 Guard、Bilibili 分离和旧 NDJSON 兼容测试保持通过。 + +### 7.2 P1 验收 + +- `action_executed` 确实由决策结果驱动; +- 证据不足最多补一次检索; +- 证据仍不足时返回有边界的 insufficient evidence,而不是继续空转; +- `finish` 和 `ask_clarification` 若重新加入白名单,均有真实执行和持久化语义; +- 事件重放状态与终态快照一致。 + +### 7.3 止损点 + +出现以下任一情况时,关闭 `agent_decision_mode=model`,保留确定性链路和证据增强: + +- P95 延迟持续高于 master 且无引用收益; +- 决策动作与执行动作不一致; +- Guard 或供应商重试率上升; +- 事件快照与重放不一致; +- 输出长度没有下降或附录仍重复大纲; +- 引用提升无法在成对实验中复现。 + +## 8. 推荐实施顺序 + +```text +P0-1 先统一 Action 与实际执行 + → P0-2 去掉固定阶段的完整模型决策 + → P0-3/P0-4 补齐重试与 Guard 观测 + → P0-5 压缩 exam_review 输出 + → P0-6 做四组可归因实验 + → 只有有收益时进入 P1 最小 Action Executor +``` + +最终是否合并回 master,不以“AB 引用数曾经更高”为单一条件,而以以下组合为准: + +```text +引用接受率不下降 +并且 P95 延迟、回答长度、重试次数和成本接近 master +``` + +在达到该条件前,master 继续作为线上效率基线;AB 只保留经过单独验证的证据增强 +与输出收敛改动。 + +## 9. 本轮实施记录 + +截至当前工作树,本计划的 P0 已落地并完成回归: + +- 固定检索/生成阶段不再调用完整模型询问 Action; +- 查询改写在第二次检索前决策,错误 Action 会记录拒绝并回退; +- `decision_call_count`、`answer_call_count`、供应商/Guard 重试及 fallback/rejection + 已进入安全 Trace; +- Guard 重试携带服务端内部修复原因,并计入统一步骤预算; +- `exam_review` 的未覆盖内容已压缩为数量与短名称,完整结构化明细仍可追溯; +- 评测 runner 支持 `--agent-decision-mode rule|model`,每条用例输出受限运行指标, + 可复用同一请求集做成对比较; +- AB 专项测试与后端全量测试均通过(当前为 662 passed,1 warning;警告来自现有 + Starlette/httpx 依赖兼容提示)。 + +同一 fixture 用例集的本地 rule/model 对照也已执行:两组均为 5 passed、6 failed、 +1 skipped;11 个实际运行用例的 `decision_call_count` 均为 0。这是预期结果——用例 +没有触发“空检索且有多轮上下文”的可选改写节点,不能据此宣称模型决策有收益,后续 +需要用真实多轮稀疏检索样本单独测量该节点。 + +P1 的最小范围已完成:有限执行边界、一次查询改写上限和输出责任收敛均复用现有 +同步运行时;不继续扩展为通用 Action 平台。当前实现已足够支撑下一轮对照实验。 +只有当成对实验显示轻量决策在 P95、重试和回答长度接近 master 的前提下提高引用 +接受率,才再提出更细的 P1 行为改动。 + +## 10. 真实 NVIDIA 修复后对照(2026-09-03) + +使用同一个本地 corpus、同一份线性代数考试大纲和 +`nvidia/nemotron-3-super-120b-a12b:free`,按 master/AB 交替顺序各运行三次。 +结果只作为当前小样本,不扩展为长期成功率: + +| 分支 | 完成运行 | 有引用回答 | 成功样本耗时 | 成功样本引用 | +| ---- | -------- | ---------- | ------------ | ------------ | +| master | 3/3 | 1/3 | 64.434s、65.664s、47.926s | 4、0、0 | +| AB | 2/3 | 2/2 | 120.906s、27.716s | 5、2 | + +AB 未完成的一次发生在模型目录健康检查阶段,现已从误导性的 `ModelNotRegistered` +改为 `ModelTemporarilyUnavailable` / HTTP 503。两次 AB 成功样本均为: + +```text +decision_call_count = 0 +provider_retry_count = 0 +guard_retry_count = 0 +``` + +因此本轮可以证明: + +- 固定生成阶段不再产生额外决策调用; +- `generate_answer` 现在有对应的 `action_executed` 与 `observation_recorded`; +- AB 两次成功输出均通过引用 Guard,但不能把这一结果归因给模型 Action 决策; +- NVIDIA 免费通道仍有明显可用性和延迟波动,当前不满足稳定合并条件。 + +另外增加了一条有边界的证据修复:`exam_review` 已检索到候选但首次回答零引用时, +只补一次带允许编号的内部修复请求;第二次仍无引用则保留诚实的 +`partial/insufficient`,不继续循环,也不由服务端伪造引用。该路径已由确定性集成测试 +覆盖,本次真实 AB 成功样本首次生成已有引用,所以没有额外消耗第二次模型调用。 + +真实运行也暴露出系统附录仍占据过多篇幅:原渲染会展示最多 10 份试卷、每份最多 +8 个题号,并把较多建议和未覆盖项放进学生正文。最终收敛为: + +- 学生可见题组最多 4 组,每组最多 3 个代表题号; +- 复习建议最多 4 条; +- 未覆盖内容最多展示 3 个短摘要; +- 完整题组、155 道题结构和未覆盖明细仍保留在 `workflow_output.exam_review`,不丢失 + 审计与导出能力。 + +将两次真实 AB 成功结果重放到新渲染器后,附录收敛带来的预计正文变化为: + +```text +AB-1:4722 → 2810 字符,减少 1912 +AB-3:4482 → 2570 字符,减少 1912 +``` + +这是对已保存结果的确定性重渲染,不是重新调用模型,因此只证明输出冗余已被压缩, +不作为线上耗时、模型稳定性或回答质量的新样本。 diff --git a/apps/scut-senior/packages/contracts/v1/schemas/conversation-detail.schema.json b/apps/scut-senior/packages/contracts/v1/schemas/conversation-detail.schema.json index 6c3703ab..4695f770 100644 --- a/apps/scut-senior/packages/contracts/v1/schemas/conversation-detail.schema.json +++ b/apps/scut-senior/packages/contracts/v1/schemas/conversation-detail.schema.json @@ -617,6 +617,19 @@ "default": null, "title": "Accepted Count" }, + "action_rejection_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Action Rejection Count" + }, "adapter": { "anyOf": [ { @@ -659,6 +672,19 @@ "default": null, "title": "Agent Preset Version" }, + "answer_call_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Answer Call Count" + }, "auth_mode": { "anyOf": [ { @@ -779,6 +805,32 @@ ], "default": null }, + "decision_call_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Decision Call Count" + }, + "decision_fallback_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Decision Fallback Count" + }, "degradation_code": { "anyOf": [ { @@ -840,6 +892,19 @@ "default": null, "title": "Fixture Only" }, + "guard_retry_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Guard Retry Count" + }, "hit_count": { "anyOf": [ { @@ -930,6 +995,19 @@ "default": null, "title": "Provider Id" }, + "provider_retry_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Provider Retry Count" + }, "real_model_called": { "anyOf": [ { diff --git a/apps/scut-senior/packages/contracts/v1/schemas/workflow-result.schema.json b/apps/scut-senior/packages/contracts/v1/schemas/workflow-result.schema.json index cff11ee9..f7654888 100644 --- a/apps/scut-senior/packages/contracts/v1/schemas/workflow-result.schema.json +++ b/apps/scut-senior/packages/contracts/v1/schemas/workflow-result.schema.json @@ -507,6 +507,19 @@ "default": null, "title": "Accepted Count" }, + "action_rejection_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Action Rejection Count" + }, "adapter": { "anyOf": [ { @@ -549,6 +562,19 @@ "default": null, "title": "Agent Preset Version" }, + "answer_call_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Answer Call Count" + }, "auth_mode": { "anyOf": [ { @@ -669,6 +695,32 @@ ], "default": null }, + "decision_call_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Decision Call Count" + }, + "decision_fallback_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Decision Fallback Count" + }, "degradation_code": { "anyOf": [ { @@ -730,6 +782,19 @@ "default": null, "title": "Fixture Only" }, + "guard_retry_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Guard Retry Count" + }, "hit_count": { "anyOf": [ { @@ -820,6 +885,19 @@ "default": null, "title": "Provider Id" }, + "provider_retry_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Provider Retry Count" + }, "real_model_called": { "anyOf": [ { diff --git a/apps/scut-senior/packages/contracts/v1/schemas/workflow-stream-event.schema.json b/apps/scut-senior/packages/contracts/v1/schemas/workflow-stream-event.schema.json index 6fd799f7..d846891a 100644 --- a/apps/scut-senior/packages/contracts/v1/schemas/workflow-stream-event.schema.json +++ b/apps/scut-senior/packages/contracts/v1/schemas/workflow-stream-event.schema.json @@ -472,6 +472,19 @@ "default": null, "title": "Accepted Count" }, + "action_rejection_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Action Rejection Count" + }, "adapter": { "anyOf": [ { @@ -514,6 +527,19 @@ "default": null, "title": "Agent Preset Version" }, + "answer_call_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Answer Call Count" + }, "auth_mode": { "anyOf": [ { @@ -634,6 +660,32 @@ ], "default": null }, + "decision_call_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Decision Call Count" + }, + "decision_fallback_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Decision Fallback Count" + }, "degradation_code": { "anyOf": [ { @@ -695,6 +747,19 @@ "default": null, "title": "Fixture Only" }, + "guard_retry_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Guard Retry Count" + }, "hit_count": { "anyOf": [ { @@ -785,6 +850,19 @@ "default": null, "title": "Provider Id" }, + "provider_retry_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Provider Retry Count" + }, "real_model_called": { "anyOf": [ { diff --git a/apps/scut-senior/tests/python/test_ab_runtime.py b/apps/scut-senior/tests/python/test_ab_runtime.py new file mode 100644 index 00000000..3b9bfd54 --- /dev/null +++ b/apps/scut-senior/tests/python/test_ab_runtime.py @@ -0,0 +1,154 @@ +from __future__ import annotations + +from pathlib import Path + +from fastapi.testclient import TestClient + +from scut_senior_api.config import Settings +from scut_senior_api.main import create_app +from scut_senior_api.ports import RetrievalBatch, RetrievedSource + + +def _request(conversation_id: str) -> dict[str, object]: + return { + "workflow_type": "knowledge_qa", + "course_scope": "single", + "course_id": "linear_algebra", + "allowed_course_ids": [], + "conversation_id": conversation_id, + "model_source": "platform_default", + "provider_id": "mock", + "model_id": "deterministic-fixture-v1", + "user_input": "请解释矩阵的秩", + "answer_mode": "detailed", + "tone": "teaching_assistant", + "knowledge_scope": "course_first", + "include_bilibili_resources": False, + "context_refs": [], + "attachments": [], + "workflow_payload": {"question": "请解释矩阵的秩"}, + } + + +def test_model_decision_mode_does_not_call_decision_model_on_fixed_path( + tmp_path: Path, +) -> None: + app = create_app( + Settings( + app_env="test", + database_path=tmp_path / "ab.db", + agent_decision_mode="model", + ) + ) + client = TestClient(app) + conversation = client.post( + "/api/v1/conversations", json={"course_id": "linear_algebra"} + ).json() + + response = client.post( + "/api/v1/workflow-runs", + json=_request(conversation["conversation_id"]), + ) + assert response.status_code == 201, response.text + result = response.json() + model_event = next( + event + for event in result["trace"] + if event["node"] == "mock_model" + ) + metrics = model_event["result"] + assert metrics["decision_call_count"] == 0 + assert metrics["answer_call_count"] == 1 + assert metrics["provider_retry_count"] == 0 + assert metrics["guard_retry_count"] == 0 + agent_events = app.state.repository.list_agent_events(result["workflow_run_id"]) + assert [event["kind"] for event in agent_events] == [ + "decision_produced", + "action_executed", + "observation_recorded", + "decision_produced", + "action_executed", + "observation_recorded", + "run_finished", + ] + assert [ + event.get("action") + for event in agent_events + if event["kind"] == "action_executed" + ] == ["retrieve", "generate_answer"] + + +class _SequenceRetrieval: + def __init__(self) -> None: + self.calls: list[str] = [] + self.source = RetrievedSource( + chunk_id="linear_algebra:ab:p1", + course_id="linear_algebra", + source_id="ab-source", + source_title="AB 测试资料", + text="矩阵的秩可以由初等行变换求得。", + locator_type="page", + locator_start=1, + locator_end=1, + question_id=None, + heading_path=(), + ) + + def is_course_available(self, course_id: str) -> bool: + return course_id == "linear_algebra" + + def search(self, course_ids: list[str], query: str) -> RetrievalBatch: + self.calls.append(query) + # First run seeds conversation history. The second run has an empty + # primary query; an invalid model action falls back to the server's + # expected rewrite action. + if len(self.calls) == 1: + return RetrievalBatch((self.source,), "ab-corpus", "ab-pack") + return RetrievalBatch((), "ab-corpus", "ab-pack") + + +class _RejectRewriteDecision: + def __init__(self) -> None: + self.phases: list[str] = [] + + def decide(self, request, state, phase, *, sources=(), history=()): + self.phases.append(phase) + return "generate_answer" + + +def test_rejected_query_rewrite_falls_back_to_server_owned_action(tmp_path: Path) -> None: + app = create_app( + Settings( + app_env="test", + database_path=tmp_path / "ab-reject.db", + agent_decision_mode="model", + retrieval_mode="local_corpus", + ) + ) + retrieval = _SequenceRetrieval() + app.state.service.retrieval = retrieval + decision = _RejectRewriteDecision() + app.state.service.agent_decision = decision + client = TestClient(app) + conversation = client.post( + "/api/v1/conversations", json={"course_id": "linear_algebra"} + ).json() + conversation_id = conversation["conversation_id"] + + first = client.post( + "/api/v1/workflow-runs", json=_request(conversation_id) + ) + assert first.status_code == 201, first.text + second_payload = _request(conversation_id) + second_payload["user_input"] = "再讲一遍" + second_payload["workflow_payload"] = {"question": "再讲一遍"} + second = client.post("/api/v1/workflow-runs", json=second_payload) + assert second.status_code == 201, second.text + + assert len(retrieval.calls) == 3 + assert decision.phases == ["retrieve_with_query_rewrite"] + model_event = next( + event for event in second.json()["trace"] if event["node"] == "mock_model" + ) + assert model_event["result"]["decision_call_count"] == 1 + assert model_event["result"]["action_rejection_count"] == 1 diff --git a/apps/scut-senior/tests/python/test_agent_loop.py b/apps/scut-senior/tests/python/test_agent_loop.py index b56beb69..d2daead3 100644 --- a/apps/scut-senior/tests/python/test_agent_loop.py +++ b/apps/scut-senior/tests/python/test_agent_loop.py @@ -99,11 +99,22 @@ def test_guard_retry_budget_is_explicit() -> None: budget = AgentBudget(max_guard_retries=1) state = record_guard_retry(AgentState(), budget=budget) assert state.guard_retries == 1 + assert state.step_count == 1 state = record_guard_retry(state, budget=budget) assert state.status == "budget_exhausted" assert state.budget_reason == "max_guard_retries" +def test_guard_retry_also_consumes_step_budget() -> None: + budget = AgentBudget(max_steps=1, max_guard_retries=2) + state = record_guard_retry(AgentState(), budget=budget) + assert state.guard_retries == 1 + assert state.step_count == 1 + state = record_guard_retry(state, budget=budget) + assert state.status == "budget_exhausted" + assert state.budget_reason == "max_steps" + + def test_replay_reconstructs_action_and_terminal_state() -> None: events = [ event("decision_produced", action="retrieve"), diff --git a/apps/scut-senior/tests/python/test_eval_runner.py b/apps/scut-senior/tests/python/test_eval_runner.py index b00fcfb9..4fe8340d 100644 --- a/apps/scut-senior/tests/python/test_eval_runner.py +++ b/apps/scut-senior/tests/python/test_eval_runner.py @@ -15,6 +15,7 @@ def test_eval_runner_executes_all_cases_and_reports_per_course(tmp_path: Path) - assert report["runner_id"] == "scut-senior-eval-v1" assert report["contract_version"] == "v1" + assert report["agent_decision_mode"] == "rule" summary = report["summary"] assert summary["total"] == 12 assert summary["passed"] + summary["failed"] + summary["skipped"] == 12 @@ -33,6 +34,16 @@ def test_eval_runner_executes_all_cases_and_reports_per_course(tmp_path: Path) - assert report["by_course"]["linear_algebra"]["total"] == 11 assert report_path.read_text(encoding="utf-8").strip() + # Runtime counters are emitted as bounded aggregates for AB attribution; + # they must not contain prompts or raw source payloads. + measured = [line for line in report["cases"] if "runtime_metrics" in line] + assert measured + metrics = measured[0]["runtime_metrics"] + assert metrics["answer_call_count"] == 1 + assert metrics["decision_call_count"] == 0 + assert metrics["answer_char_count"] > 0 + assert "user_input" not in metrics + persisted = json.loads(report_path.read_text(encoding="utf-8")) assert persisted["cases"] == report["cases"] @@ -64,6 +75,19 @@ def test_eval_fixture_covers_all_five_workflows_and_passes_the_fixture_contract( assert line["outcome"] == "passed", line +def test_eval_runner_can_select_model_decision_group(tmp_path: Path) -> None: + report = run_evaluation( + CASES, + RUNNER, + tmp_path / "model-mode.json", + agent_decision_mode="model", + ) + assert report["agent_decision_mode"] == "model" + measured = [line for line in report["cases"] if "runtime_metrics" in line] + assert measured + assert measured[0]["runtime_metrics"]["decision_call_count"] == 0 + + def test_eval_runner_cli_writes_report_and_exit_code_reflects_failures( tmp_path: Path, ) -> None: diff --git a/apps/scut-senior/tests/python/test_exam_review_plan.py b/apps/scut-senior/tests/python/test_exam_review_plan.py index 9452927d..f06686a9 100644 --- a/apps/scut-senior/tests/python/test_exam_review_plan.py +++ b/apps/scut-senior/tests/python/test_exam_review_plan.py @@ -12,6 +12,7 @@ import hashlib import json import subprocess +from dataclasses import replace from pathlib import Path from fastapi.testclient import TestClient @@ -224,6 +225,46 @@ def test_appendix_renders_objective_counts_and_never_predicts() -> None: assert "酉空间" in appendix # AI 样题边界必须明确。 assert "AI 生成" in appendix and "非历年真题" in appendix + # 学生可见附录只给出未覆盖项摘要,不逐行回显整段大纲。 + assert "共 1 项:酉空间" in appendix + + +def test_appendix_limits_verbose_groups_suggestions_and_uncovered_preview() -> None: + plan = _plan("酉空间") + stats = dict(plan.past_exam_stats) + stats["question_groups"] = [ + { + "source_title": f"试卷{index}", + "year": 2020 + index, + "question_count": 9, + "questions": [ + {"question_id": f"Q{index}-{question}"} + for question in range(1, 6) + ], + } + for index in range(1, 6) + ] + verbose = replace( + plan, + knowledge_points=(), + past_exam_stats=stats, + review_suggestions=tuple(f"建议{index}" for index in range(1, 7)), + uncovered_items=( + "这是一个明显超过学生可见摘要长度的未覆盖大纲片段,后面不应完整复制", + "Jordan 标准形", + "矩阵分块", + "正定判定", + ), + ) + + appendix = render_exam_review_appendix(verbose) + + assert "《试卷4》" in appendix and "《试卷5》" not in appendix + assert "其余 1 组保留在结构化复习计划中" in appendix + assert "Q1-3" in appendix and "Q1-4" not in appendix + assert "建议4" in appendix and "建议5" not in appendix + assert "后面不应完整复制" not in appendix + assert "共 4 项:" in appendix def test_empty_past_exam_corpus_is_reported_honestly() -> None: diff --git a/apps/scut-senior/tests/python/test_iteration_3_runtime.py b/apps/scut-senior/tests/python/test_iteration_3_runtime.py index 85229e72..0479c08b 100644 --- a/apps/scut-senior/tests/python/test_iteration_3_runtime.py +++ b/apps/scut-senior/tests/python/test_iteration_3_runtime.py @@ -186,11 +186,13 @@ def test_runtime_retries_the_same_model_once_after_citation_guard_rejection( class ScriptedModel: def __init__(self) -> None: self.calls = 0 + self.inputs: list[str] = [] def generate(self, request, sources, history=(), *, cancel_check=None): del cancel_check - del request, sources, history + del sources, history self.calls += 1 + self.inputs.append(request.user_input) citation_id = "S999" if self.calls == 1 else "S1" return GeneratedAnswer( repository_answer=f"矩阵秩的回答 [{citation_id}]。", @@ -207,6 +209,8 @@ def generate(self, request, sources, history=(), *, cancel_check=None): assert response.status_code == 201, response.text assert model.calls == 2 + assert "内部引用校验修复提示" not in response.json()["repository_answer"] + assert "内部引用校验修复提示" in model.inputs[1] result = response.json() assert [item["citation_id"] for item in result["citations"]] == ["S1"] retry = next(item for item in result["trace"] if item["node"] == "model_output_retry") @@ -216,6 +220,74 @@ def generate(self, request, sources, history=(), *, cancel_check=None): } +def test_exam_review_retries_once_when_retrieved_sources_are_left_uncited( + tmp_path: Path, +) -> None: + app = create_app(Settings(app_env="test", database_path=tmp_path / "exam-citation.db")) + client = TestClient(app) + conversation = client.post( + "/api/v1/conversations", json={"course_id": "linear_algebra"} + ).json() + + class ScriptedExamModel: + def __init__(self) -> None: + self.calls = 0 + self.inputs: list[str] = [] + + def generate(self, request, sources, history=(), *, cancel_check=None): + del sources, history, cancel_check + self.calls += 1 + self.inputs.append(request.user_input) + if self.calls == 1: + return GeneratedAnswer(repository_answer="按秩与方程组主线复习。") + return GeneratedAnswer( + repository_answer="按秩与方程组主线复习 [S1]。", + citation_ids=("S1",), + ) + + model = ScriptedExamModel() + app.state.service.model = model + payload = _request(conversation["conversation_id"]) + payload.update( + { + "workflow_type": "exam_review", + "user_input": "结合历年卷给我复习大纲", + "workflow_payload": { + "syllabus": "矩阵的秩与线性方程组", + "exam_date": None, + "available_hours": 6, + "goals": ["通过考试"], + "weak_topics": ["矩阵的秩"], + }, + } + ) + response = client.post("/api/v1/workflow-runs", json=payload) + + assert response.status_code == 201, response.text + result = response.json() + assert model.calls == 2 + assert "exam_review_citation_missing" not in result["repository_answer"] + assert "至少加入一条 [S#]" in model.inputs[1] + assert [citation["citation_id"] for citation in result["citations"]] == ["S1"] + model_event = next(event for event in result["trace"] if event["node"] == "mock_model") + assert model_event["result"]["answer_call_count"] == 2 + assert model_event["result"]["guard_retry_count"] == 1 + retry = next( + event + for event in result["trace"] + if event["node"] == "model_output_retry" + and event["result"]["failure_code"] == "exam_review_citation_missing" + ) + assert retry["result"]["retry_count"] == 1 + agent_events = app.state.repository.list_agent_events(result["workflow_run_id"]) + assert [ + event.get("action") + for event in agent_events + if event["kind"] == "action_executed" + ] == ["retrieve", "generate_answer", "generate_answer"] + assert sum(event["kind"] == "observation_recorded" for event in agent_events) == 3 + + def test_zero_candidates_degrades_to_insufficient_evidence_without_retry( tmp_path: Path, ) -> None: diff --git a/apps/scut-senior/tests/python/test_openrouter_models.py b/apps/scut-senior/tests/python/test_openrouter_models.py index d3812586..3696a506 100644 --- a/apps/scut-senior/tests/python/test_openrouter_models.py +++ b/apps/scut-senior/tests/python/test_openrouter_models.py @@ -168,6 +168,16 @@ def check(self, model_ids): } +class UnavailableCatalogChecker: + checked_at = datetime(2026, 8, 16, 0, 0, tzinfo=UTC) + + def check(self, model_ids): + return { + model_id: ModelHealthResult("health_check_failed", self.checked_at) + for model_id in model_ids + } + + def _settings(tmp_path: Path, *, api_key: str = "server-only-secret") -> Settings: return Settings( app_env="test", @@ -441,6 +451,37 @@ def test_unregistered_model_is_rejected_before_any_upstream_call(tmp_path: Path) assert http_client.calls == [] +def test_registered_model_with_failed_health_is_temporarily_unavailable( + tmp_path: Path, +) -> None: + http_client = RecordingHttpClient(_success_response()) + client = TestClient( + create_app( + _settings(tmp_path), + model_http_client=http_client, + model_health_checker=UnavailableCatalogChecker(), + ) + ) + conversation = client.post( + "/api/v1/conversations", json={"course_id": "linear_algebra"} + ).json() + + response = client.post( + "/api/v1/workflow-runs", + json=_workflow_request( + conversation["conversation_id"], + "nvidia/nemotron-3-super-120b-a12b:free", + ), + ) + + assert response.status_code == 503 + assert response.json()["error"] == { + "code": "platform_model_unavailable", + "detail": "所选模型当前暂时不可用,请稍后重试。", + } + assert http_client.calls == [] + + def test_openrouter_uses_one_exact_model_without_a_structured_output_contract( tmp_path: Path, ) -> None: From ff81e523369cd6f7a0d59798f644d9c7035bdba0 Mon Sep 17 00:00:00 2001 From: AlexBybye <244417287@qq.com> Date: Thu, 3 Sep 2026 13:28:19 +0800 Subject: [PATCH 06/25] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E5=8F=AF?= =?UTF-8?q?=E9=80=89=E6=A8=A1=E5=9E=8B=E8=B0=83=E7=94=A8=E7=9A=84=E8=BD=AF?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E6=97=B6=E9=99=90=E5=88=B6=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=20BYOK=20=E6=A8=A1=E5=9E=8B=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E5=92=8C=E4=BB=A3=E7=90=86=E9=A2=84=E7=AE=97=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/src/scut_senior_api/adapters/byok.py | 26 +++- .../api/src/scut_senior_api/agent_loop.py | 22 ++++ .../api/src/scut_senior_api/byok_catalog.py | 8 +- .../src/scut_senior_api/cancellable_http.py | 12 +- .../api/src/scut_senior_api/main.py | 7 ++ .../api/src/scut_senior_api/service.py | 116 ++++++++++++------ apps/scut-senior/docs/senior-ab/plan-ab.md | 62 +++++++++- .../tests/python/test_agent_loop.py | 16 +++ .../tests/python/test_byok_runtime.py | 35 ++++++ .../tests/python/test_cancellable_http.py | 24 ++++ .../tests/python/test_iteration_3_runtime.py | 54 ++++++++ .../tests/python/test_workflow_focus.py | 1 + 12 files changed, 329 insertions(+), 54 deletions(-) diff --git a/apps/scut-senior/api/src/scut_senior_api/adapters/byok.py b/apps/scut-senior/api/src/scut_senior_api/adapters/byok.py index f0ced015..63772d4c 100644 --- a/apps/scut-senior/api/src/scut_senior_api/adapters/byok.py +++ b/apps/scut-senior/api/src/scut_senior_api/adapters/byok.py @@ -1,5 +1,6 @@ from __future__ import annotations +import inspect import json from collections.abc import Callable from dataclasses import dataclass @@ -72,7 +73,7 @@ def __init__( self, *, http_client: JsonHttpClient | None = None, - timeout_seconds: float = 60.0, + timeout_seconds: float = 120.0, catalog: ByokProviderCatalog | None = None, ): self._http_client = http_client or UrllibJsonHttpClient() @@ -80,6 +81,10 @@ def __init__( # Call defaults (max_tokens / temperature) come from the fixed catalog # so the request builder never hard-codes provider defaults. self._catalog = catalog or ByokProviderCatalog() + self._transport_accepts_cancel_check = ( + "cancel_check" + in inspect.signature(self._http_client.post_json).parameters + ) def generate( self, @@ -114,17 +119,23 @@ def generate( history, max_tokens=model_entry.default_max_tokens, temperature=model_entry.default_temperature, + reasoning_effort=model_entry.reasoning_effort, ) try: - response = self._http_client.post_json( - route.endpoint, - headers={ + request_options = { + "headers": { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json", "Accept": "application/json", }, - payload=payload, - timeout_seconds=self._timeout_seconds, + "payload": payload, + "timeout_seconds": self._timeout_seconds, + } + if self._transport_accepts_cancel_check: + request_options["cancel_check"] = cancel_check + response = self._http_client.post_json( + route.endpoint, + **request_options, ) except Exception as exc: if is_timeout_transport_error(exc): @@ -150,6 +161,7 @@ def _build_byok_request( *, max_tokens: int, temperature: float, + reasoning_effort: str | None = None, ) -> dict[str, object]: workflow_focus = build_workflow_focus(request) response_controls = build_response_control_directive(request) @@ -193,6 +205,8 @@ def _build_byok_request( "max_tokens": max_tokens, "temperature": temperature, } + if reasoning_effort is not None: + payload["reasoning_effort"] = reasoning_effort return payload diff --git a/apps/scut-senior/api/src/scut_senior_api/agent_loop.py b/apps/scut-senior/api/src/scut_senior_api/agent_loop.py index 0da26575..6513626a 100644 --- a/apps/scut-senior/api/src/scut_senior_api/agent_loop.py +++ b/apps/scut-senior/api/src/scut_senior_api/agent_loop.py @@ -187,7 +187,9 @@ class AgentBudget: max_query_rewrite: int = 1 max_same_action_retries: int = 1 max_guard_retries: int = 1 + max_answer_calls: int = 2 max_runtime_seconds: int = 120 + soft_runtime_ratio: float = 0.75 def __post_init__(self) -> None: if any( @@ -198,14 +200,34 @@ def __post_init__(self) -> None: self.max_query_rewrite, self.max_same_action_retries, self.max_guard_retries, + self.max_answer_calls, self.max_runtime_seconds, ) ): raise ValueError("agent budget values must be non-negative integers") if self.max_steps < 1: raise ValueError("agent max_steps must be positive") + if self.max_answer_calls < 1: + raise ValueError("agent max_answer_calls must be positive") if self.max_runtime_seconds < 1: raise ValueError("agent max_runtime_seconds must be positive") + if not 0 < self.soft_runtime_ratio < 1: + raise ValueError("agent soft_runtime_ratio must be between zero and one") + + @property + def soft_runtime_seconds(self) -> float: + return self.max_runtime_seconds * self.soft_runtime_ratio + + def allows_optional_call(self, elapsed_seconds: float) -> bool: + """Admit optional model work only when it can finish before soft cutoff. + + Provider responses are not streamed through the Agent reducer, so the + loop cannot observe an in-flight 75% token/time crossing. Once control + returns after the 75% mark, optional follow-up work is no longer + admitted; the 120-second hard limit remains unchanged. + """ + + return 0 <= elapsed_seconds < self.soft_runtime_seconds @dataclass(frozen=True, slots=True) diff --git a/apps/scut-senior/api/src/scut_senior_api/byok_catalog.py b/apps/scut-senior/api/src/scut_senior_api/byok_catalog.py index cca3a769..48816851 100644 --- a/apps/scut-senior/api/src/scut_senior_api/byok_catalog.py +++ b/apps/scut-senior/api/src/scut_senior_api/byok_catalog.py @@ -2,6 +2,7 @@ from dataclasses import dataclass, replace from enum import StrEnum +from typing import Literal BYOK_CATALOG_VERSION = "byok-models-v4" @@ -48,6 +49,7 @@ class ByokModelEntry: supports_structured_outputs: bool = True default_max_tokens: int = 2048 default_temperature: float = 0.2 + reasoning_effort: Literal["low", "high", "max"] | None = None def as_public_dict(self) -> dict[str, str]: return { @@ -97,7 +99,8 @@ def as_public_dict(self) -> dict[str, object]: # DeepSeek is a reasoning model: its thinking consumes part of # the token budget, so a small max_tokens can return an empty # final ``content``. Keep headroom for reasoning + answer. - default_max_tokens=16384, + default_max_tokens=12288, + reasoning_effort="low", ), ), ), @@ -112,7 +115,8 @@ def as_public_dict(self) -> dict[str, object]: company="DeepSeek", display_name="DeepSeek V4 Flash", # Same reasoning-model note as the OpenRouter DeepSeek route. - default_max_tokens=16384, + default_max_tokens=12288, + reasoning_effort="low", ), ), ), diff --git a/apps/scut-senior/api/src/scut_senior_api/cancellable_http.py b/apps/scut-senior/api/src/scut_senior_api/cancellable_http.py index 08af6880..828e25ed 100644 --- a/apps/scut-senior/api/src/scut_senior_api/cancellable_http.py +++ b/apps/scut-senior/api/src/scut_senior_api/cancellable_http.py @@ -56,11 +56,11 @@ def post_json( timeout_seconds: float, cancel_check: CancelCheck | None = None, ) -> HttpResponse: - if cancel_check is None or cancel_check(): - # 无取消语义时直连;已取消的调用直接拒绝,不再发起。 - if cancel_check is not None: - raise UpstreamRequestCancelled - return self._post_inner(url, headers, payload, timeout_seconds) + if cancel_check is not None and cancel_check(): + # 已取消的调用直接拒绝,不再发起。即使没有取消标记也进入下方 + # 受监督线程,从而让 timeout_seconds 成为总墙钟上限,而不是 + # urllib 套接字单次读等待上限。 + raise UpstreamRequestCancelled result: list[HttpResponse] = [] error: list[BaseException] = [] @@ -84,7 +84,7 @@ def run() -> None: worker.start() deadline = monotonic() + max(timeout_seconds, 0.0) while not done.wait(self._poll_interval_seconds): - if cancel_check(): + if cancel_check is not None and cancel_check(): # 尽力取消:放弃等待。worker 是 daemon,套接字按自身超时回收, # 其结果永远不会被本调用采用或落库。 raise UpstreamRequestCancelled diff --git a/apps/scut-senior/api/src/scut_senior_api/main.py b/apps/scut-senior/api/src/scut_senior_api/main.py index c5451761..e0c543bf 100644 --- a/apps/scut-senior/api/src/scut_senior_api/main.py +++ b/apps/scut-senior/api/src/scut_senior_api/main.py @@ -41,6 +41,7 @@ JsonHttpClient, OpenRouterGatewayError, OpenRouterModelGateway, + UrllibJsonHttpClient, ) from .adapters.openrouter_health import OpenRouterCatalogHealthChecker from .adapters.zhipu import ZhipuPlatformGatewayError, ZhipuPlatformModelGateway @@ -64,6 +65,7 @@ utc_now, ) from .config import Settings +from .cancellable_http import CancellableJsonHttpClient LOGGER = logging.getLogger("scut_senior.api") from .course_availability import ( @@ -272,6 +274,11 @@ def create_app( ) -> FastAPI: active_settings = settings or Settings.from_env() active_settings.assert_safe() + if active_settings.app_env != "test" and byok_http_client is None: + # BYOK reasoning models may keep a socket active beyond urllib's + # per-read timeout. Supervise the full request so the existing + # 120-second runtime limit is also the provider-call wall clock limit. + byok_http_client = CancellableJsonHttpClient(UrllibJsonHttpClient()) registry = CourseRegistry.load() mock_identity = MockIdentityProvider().current_user() embedding = None diff --git a/apps/scut-senior/api/src/scut_senior_api/service.py b/apps/scut-senior/api/src/scut_senior_api/service.py index 91dc7087..f576d41b 100644 --- a/apps/scut-senior/api/src/scut_senior_api/service.py +++ b/apps/scut-senior/api/src/scut_senior_api/service.py @@ -964,6 +964,15 @@ def _run( "action_rejection_count": 0, } + def optional_model_work_allowed() -> bool: + return ( + agent_metrics["answer_call_count"] + < agent_budget.max_answer_calls + and agent_budget.allows_optional_call( + perf_counter() - agent_started + ) + ) + def reduce_agent(kind: str, **payload: object) -> None: nonlocal agent_state agent_state = reduce_agent_event( @@ -1219,44 +1228,62 @@ def persist_failed_or_interrupted( retrieval_query, history ) if context_query: - # Decide before invoking the second retrieval. A model - # mismatch is recorded and replaced with the server-owned - # expected action before any retrieval side effect. - rewrite_action = decide_for_phase( - "retrieve_with_query_rewrite", - "retrieve_with_query_rewrite", - sources=retrieval_batch.sources, - allow_model=True, - ) - if rewrite_action == "retrieve_with_query_rewrite": - retry_started = perf_counter() - context_batch = self.retrieval.search( - course_ids, context_query + if not optional_model_work_allowed(): + _append_trace( + trace, + node="retrieval_context_carry", + status=TraceEventStatus.SKIPPED, + result={ + "hit_count": 0, + "candidate_count": 0, + "reason_code": "runtime_soft_limit", + }, ) - record_agent_action("retrieve_with_query_rewrite") - if isinstance(context_batch, RetrievalBatch) and context_batch.sources: - retrieval_batch = context_batch - _append_trace( - trace, - node="retrieval_context_carry", - result={ - "hit_count": 0, - "candidate_count": len(retrieval_batch.sources), - "rewritten_query": context_query[:200], - }, - duration_ms=_elapsed_ms(retry_started), - ) - else: - _append_trace( - trace, - node="retrieval_context_carry", - result={ - "hit_count": 0, - "candidate_count": 0, - "rewritten_query": context_query[:200], - }, - duration_ms=_elapsed_ms(retry_started), + else: + # Decide before invoking the second retrieval. A model + # mismatch is recorded and replaced with the + # server-owned expected action before any retrieval + # side effect. + rewrite_action = decide_for_phase( + "retrieve_with_query_rewrite", + "retrieve_with_query_rewrite", + sources=retrieval_batch.sources, + allow_model=True, + ) + if rewrite_action == "retrieve_with_query_rewrite": + retry_started = perf_counter() + context_batch = self.retrieval.search( + course_ids, context_query ) + record_agent_action("retrieve_with_query_rewrite") + if ( + isinstance(context_batch, RetrievalBatch) + and context_batch.sources + ): + retrieval_batch = context_batch + _append_trace( + trace, + node="retrieval_context_carry", + result={ + "hit_count": 0, + "candidate_count": len( + retrieval_batch.sources + ), + "rewritten_query": context_query[:200], + }, + duration_ms=_elapsed_ms(retry_started), + ) + else: + _append_trace( + trace, + node="retrieval_context_carry", + result={ + "hit_count": 0, + "candidate_count": 0, + "rewritten_query": context_query[:200], + }, + duration_ms=_elapsed_ms(retry_started), + ) if not isinstance(retrieval_batch, RetrievalBatch): # Keep injected iteration-1 test doubles compatible, but never # accept an unversioned result in explicit local-corpus mode. @@ -1443,6 +1470,7 @@ def persist_failed_or_interrupted( return interrupted if ( provider_retry_count >= 1 + or not optional_model_work_allowed() or not _is_retryable_model_output_error(model_error) ): raise @@ -1487,7 +1515,10 @@ def persist_failed_or_interrupted( # failing the run after a long model call. guarded = _empty_candidate_insufficient_evidence() break - if guard_retry_count >= 1: + if ( + guard_retry_count >= 1 + or not optional_model_work_allowed() + ): interrupted = persist_failed_or_interrupted( failure_node="citation_guard", duration_ms=_elapsed_ms(started), @@ -1517,6 +1548,7 @@ def persist_failed_or_interrupted( and sources and not guarded.citation_ids and guard_retry_count < 1 + and optional_model_work_allowed() ): # An exam-review request with retrieved past-paper # candidates has not met its evidence contract when the @@ -1637,7 +1669,7 @@ def persist_failed_or_interrupted( max_items=32, ) original_blocks = [block.model_copy(deep=True) for block in guarded.blocks] - if self.humanizer is None: + if self.humanizer is None or not optional_model_work_allowed(): interrupted = finish_interrupted() if interrupted is not None: return interrupted @@ -1645,7 +1677,13 @@ def persist_failed_or_interrupted( _append_trace( trace, node="response_style_control", - result={"reason_code": "single_pass_model_prompt"}, + result={ + "reason_code": ( + "single_pass_model_prompt" + if self.humanizer is None + else "runtime_soft_limit" + ) + }, ) else: interrupted = interrupt_if_step_not_claimed() diff --git a/apps/scut-senior/docs/senior-ab/plan-ab.md b/apps/scut-senior/docs/senior-ab/plan-ab.md index 778d4438..c5fdce53 100644 --- a/apps/scut-senior/docs/senior-ab/plan-ab.md +++ b/apps/scut-senior/docs/senior-ab/plan-ab.md @@ -1,7 +1,7 @@ # SCUT 老学长 AB 分支优化计划 版本:0.1(基于最新 AB 实跑后的收敛方案) -状态:**P0/P1 最小修复已完成;真实模型合并门槛尚未满足**。 +状态:**P0/P1 最小实现已完成;真实模型合并门槛及两项运行修复尚未完成**。 本文只针对 `ab-test/agent-action-shadow`。它不是 PLAN-2 的替代文档,也不是 把系统扩展成通用 Agent 平台的方案。目标是解释当前 AB 分支到底做了什么,保留 @@ -496,3 +496,63 @@ AB-3:4482 → 2570 字符,减少 1912 这是对已保存结果的确定性重渲染,不是重新调用模型,因此只证明输出冗余已被压缩, 不作为线上耗时、模型稳定性或回答质量的新样本。 + +## 11. DeepSeek V4 Flash 限额对照(2026-09-03) + +成本约束为 master、AB 各两个 Workflow 运行,不做失败补跑。两边都使用 DeepSeek +供应商的 `deepseek-v4-flash`、同一份线性代数请求和本地 corpus;凭据与在线数据库 +只通过临时数据库副本读取,未写入线上历史。 + +| 分支 | 轮次 | 结果 | 耗时 | 说明 | +| ---- | ---- | ---- | ---- | ---- | +| master | 1/2 | 中止 | 37.067s | 凭据口径确认时人工中止,可能已到达供应商,不补跑 | +| master | 2/2 | 504 | 121.497s | `byok_provider_timeout`,没有可用回答 | +| AB | 1/2 | 409 | 145.721s | 推理内容耗尽输出预算,最终正文为空;随后越过 120s Agent 预算 | +| AB | 2/2 | 成功 | 17.095s | `answered/sufficient`,5 条引用,3692 字符 | + +AB 成功样本只有一次回答调用,`decision_call_count`、供应商重试和 Guard 重试均为 +0;事件顺序完整结束。因此它再次证明固定 `exam_review` 路径没有额外 Action 模型 +成本,但仍不能证明模型决策提高了引用覆盖。 + +成功回答本身仍有两个质量问题:附录占 1172/3692 字符,“未覆盖内容”虽然限为 +3 个摘要,却仍是截断后的大纲原文片段,P0-5 的“短名称”只完成限长、尚未完成语义 +提取;正文还错误地声称 `λI-A` 与 `A-λI` 会让特征向量符号相反,实际上两者互为 +相反矩阵且零空间相同。现有引用 Guard 只能确认引用编号属于候选,不能把 +`sufficient` 解释为数学事实或相邻说法已经通过语义核验。 + +本组无法比较两边回答质量或稳定延迟:master 没有成功回答,样本也只有两轮。它新 +暴露了三个运行边界:120 秒 Agent 预算目前不能中止正在进行的供应商请求;推理模型 +可能用尽 16384 token 预算而不给最终正文;“两个 Workflow 运行”也不一定等于两个 +上游 HTTP 尝试,因为服务端可能在单次运行内执行受限供应商重试。后续若继续做成本 +受限实验,应同时限制 Workflow 次数和上游调用次数,并先验证 DeepSeek 的推理/最终 +正文预算配置,同时把正在进行的供应商请求纳入真正的墙钟超时;在此之前不以本组 +结果改变合并结论。 + +## 12. 预算收敛与 Action 实验口径 + +DeepSeek 对照后不修改既有错误分类,预算按以下最小规则收敛: + +- Agent 最大运行时长保持 120 秒,90 秒为 3/4 软水位; +- 控制权回到运行时且已超过软水位后,不再启动可选查询改写、供应商重试、引用修复 + 或 Humanizer,直接使用已有结果继续收尾; +- 单个 Workflow 最多两次回答调用,避免供应商重试后再叠加 Guard 修复成为第三次调用; +- DeepSeek V4 Flash 使用官方支持的 `reasoning_effort=low`,单次 `max_tokens` 从 + 16384 收敛到 12288;当前非流式接口不能在调用中实时观察“已使用 3/4 token”, + 因此用调用前硬上限和推理强度控制替代伪实时判断; +- DeepSeek BYOK 请求的总墙钟上限为 120 秒,不收紧为 60 秒。 + +`decision_call_count=0` 不是计数错误。当前固定检索和固定生成阶段有意使用服务端 +决策,只有以下条件同时满足时才允许模型选择 Action:本地语料首轮检索为空、同一 +会话已有历史、没有 `exam_review` 确定性计划,并且尚未进入软水位。线性代数复习 +大纲会生成 `exam_plan`,所以该节点结构上不可达;回答中的 5 条引用由回答模型选择、 +引用 Guard 校验,与 Action 决策不是同一指标。 + +后续对照应拆成两类,不为了让计数非零而给正常 `exam_review` 强塞一次 Planner: + +1. `exam_review` 样本继续比较回答、引用和附录质量; +2. 使用“先问具体知识点,再用缺少词面锚点的追问触发首检为空”的多轮样本,比较 + rule/model 是否选择并实际执行 `retrieve_with_query_rewrite`。 + +只有第二类样本中出现 `decision_call_count > 0`,且 +`decision_produced → action_executed → observation_recorded` 一致,才能讨论模型 +Action 对检索结果和引用覆盖的因果收益。 diff --git a/apps/scut-senior/tests/python/test_agent_loop.py b/apps/scut-senior/tests/python/test_agent_loop.py index d2daead3..c4e678b8 100644 --- a/apps/scut-senior/tests/python/test_agent_loop.py +++ b/apps/scut-senior/tests/python/test_agent_loop.py @@ -115,6 +115,22 @@ def test_guard_retry_also_consumes_step_budget() -> None: assert state.budget_reason == "max_steps" +def test_optional_model_call_must_fit_before_soft_runtime_cutoff() -> None: + budget = AgentBudget( + max_runtime_seconds=120, + soft_runtime_ratio=0.75, + ) + + assert budget.soft_runtime_seconds == 90 + assert budget.allows_optional_call(89.999) + assert not budget.allows_optional_call(90) + + with pytest.raises(ValueError, match="soft_runtime_ratio"): + AgentBudget(soft_runtime_ratio=1) + with pytest.raises(ValueError, match="max_answer_calls"): + AgentBudget(max_answer_calls=0) + + def test_replay_reconstructs_action_and_terminal_state() -> None: events = [ event("decision_produced", action="retrieve"), diff --git a/apps/scut-senior/tests/python/test_byok_runtime.py b/apps/scut-senior/tests/python/test_byok_runtime.py index 454be3c9..1376af2a 100644 --- a/apps/scut-senior/tests/python/test_byok_runtime.py +++ b/apps/scut-senior/tests/python/test_byok_runtime.py @@ -19,6 +19,7 @@ ZHIPU_BYOK_ENDPOINT, ) from scut_senior_api.adapters.openrouter import HttpResponse +from scut_senior_api.agent_loop import AgentBudget from scut_senior_api.auth import GitHubUserProfile, SESSION_COOKIE_NAME from scut_senior_api.byok_catalog import ByokProviderCatalog from scut_senior_api.config import Settings @@ -166,12 +167,18 @@ def test_four_byok_routes_use_one_fixed_endpoint_model_without_response_schema( assert call["url"] == endpoint assert call["headers"]["Authorization"] == f"Bearer {api_key}" assert call["payload"]["model"] == model_id + assert call["timeout_seconds"] == 120.0 # Call defaults are declared on the fixed catalog entry, not hard-coded # in the request builder; assert against the catalog so a provider-specific # default (e.g. a larger budget for reasoning models) stays correct. catalog_entry = ByokProviderCatalog().resolve_model(provider_id, model_id) assert call["payload"]["max_tokens"] == catalog_entry.default_max_tokens assert call["payload"]["temperature"] == catalog_entry.default_temperature + if provider_id in {"openrouter", "deepseek"}: + assert call["payload"]["max_tokens"] == 12288 + assert call["payload"]["reasoning_effort"] == "low" + else: + assert "reasoning_effort" not in call["payload"] assert "models" not in call["payload"] assert "fallbacks" not in call["payload"] assert "base_url" not in call["payload"] @@ -538,6 +545,34 @@ def invalid_then_succeed() -> HttpResponse: assert key not in response.text +def test_byok_invalid_response_does_not_retry_past_soft_runtime_budget( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + http = RecordingHttpClient(HttpResponse(200, b"{invalid-json")) + _, client, _, conversation_id = authenticated_app(tmp_path, http) + key = "sk-private-soft-runtime" + assert client.put( + "/api/v1/model-credentials/deepseek", json={"api_key": key} + ).status_code == 200 + monkeypatch.setattr( + AgentBudget, + "allows_optional_call", + lambda self, elapsed_seconds: False, + ) + + response = client.post( + "/api/v1/workflow-runs", + json=workflow_request( + conversation_id, "deepseek", "deepseek-v4-flash" + ), + ) + + assert response.status_code == 502 + assert response.json()["error"]["code"] == "byok_provider_invalid_response" + assert len(http.calls) == 1 + assert key not in response.text + + @pytest.mark.parametrize("upstream_succeeds", [True, False]) def test_logout_during_provider_call_prevents_late_success_or_failed_history( tmp_path: Path, upstream_succeeds: bool diff --git a/apps/scut-senior/tests/python/test_cancellable_http.py b/apps/scut-senior/tests/python/test_cancellable_http.py index 78e2c26a..10a5ea8d 100644 --- a/apps/scut-senior/tests/python/test_cancellable_http.py +++ b/apps/scut-senior/tests/python/test_cancellable_http.py @@ -45,6 +45,30 @@ def post_json(self, url, *, headers, payload, timeout_seconds): assert inner.calls == 1 +def test_wall_clock_timeout_is_enforced_without_cancel_check() -> None: + release_inner = Event() + + class BlockedInner: + def post_json(self, url, *, headers, payload, timeout_seconds): + del url, headers, payload, timeout_seconds + release_inner.wait(timeout=1) + return HttpResponse(status_code=200, body=b"{}") + + client = CancellableJsonHttpClient( + BlockedInner(), poll_interval_seconds=0.01 + ) + started = monotonic() + with pytest.raises(TimeoutError, match="supervised"): + client.post_json( + "https://example.test", + headers={}, + payload={}, + timeout_seconds=0.05, + ) + assert monotonic() - started < 0.5 + release_inner.set() + + def test_cancelled_before_start_never_reaches_upstream() -> None: class Inner: def __init__(self): diff --git a/apps/scut-senior/tests/python/test_iteration_3_runtime.py b/apps/scut-senior/tests/python/test_iteration_3_runtime.py index 0479c08b..2976fbf6 100644 --- a/apps/scut-senior/tests/python/test_iteration_3_runtime.py +++ b/apps/scut-senior/tests/python/test_iteration_3_runtime.py @@ -7,6 +7,7 @@ import pytest from fastapi.testclient import TestClient +from scut_senior_api.agent_loop import AgentBudget from scut_senior_api.config import Settings from scut_senior_api.contracts import ( AnswerBlock, @@ -288,6 +289,59 @@ def generate(self, request, sources, history=(), *, cancel_check=None): assert sum(event["kind"] == "observation_recorded" for event in agent_events) == 3 +def test_exam_review_keeps_partial_answer_when_soft_budget_blocks_citation_repair( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + app = create_app( + Settings(app_env="test", database_path=tmp_path / "exam-soft-budget.db") + ) + client = TestClient(app) + conversation = client.post( + "/api/v1/conversations", json={"course_id": "linear_algebra"} + ).json() + + class UncitedExamModel: + def __init__(self) -> None: + self.calls = 0 + + def generate(self, request, sources, history=(), *, cancel_check=None): + del request, sources, history, cancel_check + self.calls += 1 + return GeneratedAnswer(repository_answer="按秩与方程组主线复习。") + + model = UncitedExamModel() + app.state.service.model = model + monkeypatch.setattr( + AgentBudget, + "allows_optional_call", + lambda self, elapsed_seconds: False, + ) + payload = _request(conversation["conversation_id"]) + payload.update( + { + "workflow_type": "exam_review", + "user_input": "结合历年卷给我复习大纲", + "workflow_payload": { + "syllabus": "矩阵的秩与线性方程组", + "exam_date": None, + "available_hours": 6, + "goals": ["通过考试"], + "weak_topics": ["矩阵的秩"], + }, + } + ) + + response = client.post("/api/v1/workflow-runs", json=payload) + + assert response.status_code == 201, response.text + result = response.json() + assert model.calls == 1 + assert result["answer_status"] == "partial" + assert result["evidence_status"] == "insufficient" + assert result["citations"] == [] + assert all(event["node"] != "model_output_retry" for event in result["trace"]) + + def test_zero_candidates_degrades_to_insufficient_evidence_without_retry( tmp_path: Path, ) -> None: diff --git a/apps/scut-senior/tests/python/test_workflow_focus.py b/apps/scut-senior/tests/python/test_workflow_focus.py index 042af294..99507d4b 100644 --- a/apps/scut-senior/tests/python/test_workflow_focus.py +++ b/apps/scut-senior/tests/python/test_workflow_focus.py @@ -153,6 +153,7 @@ def test_openrouter_and_byok_share_the_same_workflow_focus_directive( [], max_tokens=byok_entry.default_max_tokens, temperature=byok_entry.default_temperature, + reasoning_effort=byok_entry.reasoning_effort, ), ): messages = provider_payload["messages"] From b990162eee0e55f58f6d035a73ca108f3a47aa1b Mon Sep 17 00:00:00 2001 From: AlexBybye <244417287@qq.com> Date: Thu, 3 Sep 2026 14:48:54 +0800 Subject: [PATCH 07/25] Refactor BYOK connection handling and update related tests - Removed frozen BYOK providers and replaced with a dynamic connection model. - Updated the API to handle BYOK connection inputs, including display name, base URL, model ID, and API key. - Refactored tests to accommodate changes in BYOK connection structure and validation. - Enhanced the UI for managing BYOK connections, including input validation and connection creation. - Updated model selection logic to reflect the new BYOK connection model. - Adjusted the app configuration to remove deprecated BYOK provider references. --- apps/scut-senior/README.md | 10 +- .../0018_custom_byok_connections.sql | 63 ++++ .../api/src/scut_senior_api/adapters/byok.py | 168 ++++++--- .../scut_senior_api/adapters/openrouter.py | 102 ++++++ .../src/scut_senior_api/adapters/sqlite.py | 38 +- .../api/src/scut_senior_api/agent_loop.py | 34 +- .../api/src/scut_senior_api/byok_catalog.py | 190 +--------- .../api/src/scut_senior_api/contracts.py | 44 +-- .../api/src/scut_senior_api/eval_runner.py | 1 + .../api/src/scut_senior_api/main.py | 7 +- .../api/src/scut_senior_api/model_catalog.py | 2 +- .../src/scut_senior_api/model_credentials.py | 244 +++++++++---- .../api/src/scut_senior_api/ports.py | 22 ++ .../api/src/scut_senior_api/service.py | 321 ++++++++++++----- apps/scut-senior/docs/senior-ab/plan-ab.md | 130 ++++--- apps/scut-senior/infra/README.md | 2 +- .../schemas/conversation-detail.schema.json | 13 + .../v1/schemas/model-catalog.schema.json | 2 +- .../schemas/model-credential-list.schema.json | 50 +-- .../model-credential-upsert.schema.json | 29 +- .../v1/schemas/workflow-result.schema.json | 13 + .../schemas/workflow-stream-event.schema.json | 13 + .../tests/python/test_ab_runtime.py | 329 ++++++++++++----- .../tests/python/test_account_lifecycle.py | 4 + .../tests/python/test_api_schema_exports.py | 11 +- .../tests/python/test_byok_providers.py | 188 +++------- .../tests/python/test_byok_runtime.py | 330 +++++++++++++++--- .../tests/python/test_eval_runner.py | 6 +- .../tests/python/test_model_credentials.py | 197 +++++++++-- .../tests/python/test_openrouter_models.py | 69 +++- .../tests/python/test_sqlite_auth.py | 10 +- .../tests/python/test_workflow_focus.py | 16 +- .../scut-senior/web/src/__tests__/api.test.ts | 16 +- .../web/src/__tests__/byokCatalog.test.ts | 75 +--- .../web/src/__tests__/modelSelection.test.ts | 76 ++-- apps/scut-senior/web/src/api.ts | 5 +- apps/scut-senior/web/src/appConfig.ts | 10 +- apps/scut-senior/web/src/byokCatalog.ts | 131 +------ .../src/components/ByokCredentialsPanel.vue | 259 ++++++-------- .../web/src/composables/useAppStore.ts | 87 ++--- apps/scut-senior/web/src/contracts.ts | 17 +- apps/scut-senior/web/src/modelSelection.ts | 28 +- 42 files changed, 2023 insertions(+), 1339 deletions(-) create mode 100644 apps/scut-senior/api/migrations/0018_custom_byok_connections.sql diff --git a/apps/scut-senior/README.md b/apps/scut-senior/README.md index 92a390f4..e3610dcc 100644 --- a/apps/scut-senior/README.md +++ b/apps/scut-senior/README.md @@ -25,7 +25,7 @@ PLAN-1 建立了课程学习助手的基础能力和边界: - 面向首批 10 门课程组织经过校验的课程资料与历年题,回答可以关联具体资料、页码、幻灯片或题号; - 提供 `knowledge_qa`、`exam_review`、`problem_tutor`、`mistake_review` 和 `temporary_material_reading` 五类固定 Workflow,覆盖知识答疑、备考、题目讲解、错题复盘和临时材料精读; - 所有问答绑定 GitHub 登录身份,并保存可追溯的会话、运行记录、真实执行 Trace、反馈和错题历史; -- 平台每日免费额度模型与用户自带 Key(BYOK)分为独立通道,模型、供应商和调用路由均由服务端受控; +- 平台每日免费额度模型与用户自带 Key(BYOK)分为独立通道;平台目录由服务端维护,BYOK 可保存用户自己的 OpenAI-compatible 供应商连接; - 模型输出必须经过课程范围、来源、引用和安全回答块校验,资料不足时明确标记证据边界,不将通用知识伪装为课程资料结论。 ### PLAN-2:统一输入、混合检索与受限 Agent Runtime @@ -212,9 +212,9 @@ make dev-api ## 真实身份与模型通道 -真实 GitHub OAuth 使用 HTTPS 回调地址、服务端 SQLite 和安全 Cookie。平台模型和 BYOK 凭据由服务端固定目录管理;用户 Key 使用服务端 AES-256-GCM 主密钥加密,前端只接收脱敏状态。凭据、OAuth Secret、数据库、附件和日志不进入 Git、前端构建产物或 Docker 镜像。 +真实 GitHub OAuth 使用 HTTPS 回调地址、服务端 SQLite 和安全 Cookie。平台模型由服务端目录管理;BYOK 由登录用户填写连接 ID、显示名称、HTTPS Base URL、模型 ID 和 API Key,目前支持 OpenAI Chat Completions 协议。用户 Key 使用服务端 AES-256-GCM 主密钥加密,前端只接收脱敏连接状态。凭据、OAuth Secret、数据库、附件和日志不进入 Git、前端构建产物或 Docker 镜像。 -本地测试仍推荐使用 Mock 配置。真实平台模型调用必须启用 GitHub OAuth 和正式 SQLite 身份存储,并通过环境变量提供服务端 Secret。模型供应商适配遵循 `ModelGateway` 与 `UserKeyModelGateway` 接口,新增 Terra 等供应商时只需接入固定目录和对应适配器,不改变课程、引用、权限和流式协议边界。 +本地测试仍推荐使用 Mock 配置。真实平台模型调用必须启用 GitHub OAuth 和正式 SQLite 身份存储,并通过环境变量提供服务端 Secret。BYOK Base URL 只接受 HTTPS,拒绝账号密码、查询参数、localhost 和明显私网地址,且调用不跟随重定向;当前尚未实现模型自动发现,也不能把这些基础校验描述为完整的 DNS rebinding/SSRF 防护。 ## 在线部署:本地运行 + HTTPS 隧道(当前启用路径) @@ -283,7 +283,7 @@ BYOK 真实调用另需稳定的 32 字节 AES 主密钥(见上文“本地验 - [ ] `https://<隧道域名>/` 能打开 SPA; - [ ] GitHub 登录回调完成(`/api/v1/auth/github/callback` 302 到首页); -- [ ] 登录后 `/api/v1/models` 显示平台三模型或已保存 Key 的 BYOK; +- [ ] 登录后 `/api/v1/models` 显示平台模型,`/api/v1/model-credentials` 显示当前账号已保存的脱敏 BYOK 连接; - [ ] 一次真实模型 Workflow run 返回 `run_status=completed`; - [ ] `/api/v1/feedback` 提交与列表可用。 @@ -298,4 +298,4 @@ git sparse-checkout init --cone git sparse-checkout set apps/scut-senior .github README.md .gitignore .gitattributes git checkout master ``` -维护清理由进程内调度器执行,启动时补扫并按固定间隔清理到期会话、历史、反馈、私人材料、贡献记录和额度事件。清理步骤彼此隔离,单个存储步骤异常不会阻断同一轮其他步骤。 \ No newline at end of file +维护清理由进程内调度器执行,启动时补扫并按固定间隔清理到期会话、历史、反馈、私人材料、贡献记录和额度事件。清理步骤彼此隔离,单个存储步骤异常不会阻断同一轮其他步骤。 diff --git a/apps/scut-senior/api/migrations/0018_custom_byok_connections.sql b/apps/scut-senior/api/migrations/0018_custom_byok_connections.sql new file mode 100644 index 00000000..ac0d47da --- /dev/null +++ b/apps/scut-senior/api/migrations/0018_custom_byok_connections.sql @@ -0,0 +1,63 @@ +-- Replace the fixed four-provider key ring with user-defined OpenAI-compatible +-- connections. Existing keys receive the profile formerly supplied by the +-- fixed catalog, so this migration does not discard encrypted credentials. + +ALTER TABLE model_credentials RENAME TO model_credentials_fixed; + +CREATE TABLE model_credentials ( + user_id TEXT NOT NULL, + provider_id TEXT NOT NULL CHECK ( + length(provider_id) BETWEEN 1 AND 64 + AND provider_id NOT GLOB '*[^a-z0-9-]*' + AND substr(provider_id, 1, 1) BETWEEN 'a' AND 'z' + AND provider_id NOT GLOB '*--*' + AND substr(provider_id, -1, 1) <> '-' + ), + display_name TEXT NOT NULL CHECK (length(display_name) BETWEEN 1 AND 100), + base_url TEXT NOT NULL CHECK (length(base_url) BETWEEN 1 AND 2048), + model_id TEXT NOT NULL CHECK (length(model_id) BETWEEN 1 AND 100), + protocol TEXT NOT NULL CHECK (protocol = 'openai_chat_completions'), + ciphertext BLOB NOT NULL CHECK (length(ciphertext) > 16), + nonce BLOB NOT NULL CHECK (length(nonce) = 12), + algorithm TEXT NOT NULL CHECK (algorithm = 'AES-256-GCM'), + key_version INTEGER NOT NULL CHECK (key_version > 0), + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + expires_at TEXT NOT NULL, + PRIMARY KEY (user_id, provider_id), + FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE +); + +INSERT INTO model_credentials ( + user_id, provider_id, display_name, base_url, model_id, protocol, + ciphertext, nonce, algorithm, key_version, created_at, updated_at, expires_at +) +SELECT + user_id, + provider_id, + CASE provider_id + WHEN 'openrouter' THEN 'OpenRouter' + WHEN 'deepseek' THEN 'DeepSeek' + WHEN 'siliconflow' THEN '硅基流动' + WHEN 'zhipu' THEN '智谱 AI' + END, + CASE provider_id + WHEN 'openrouter' THEN 'https://openrouter.ai/api/v1' + WHEN 'deepseek' THEN 'https://api.deepseek.com' + WHEN 'siliconflow' THEN 'https://api.siliconflow.cn/v1' + WHEN 'zhipu' THEN 'https://open.bigmodel.cn/api/paas/v4' + END, + CASE provider_id + WHEN 'openrouter' THEN 'deepseek/deepseek-v4-flash-0731' + WHEN 'deepseek' THEN 'deepseek-v4-flash' + WHEN 'siliconflow' THEN 'Pro/zai-org/GLM-4.7' + WHEN 'zhipu' THEN 'glm-5.2' + END, + 'openai_chat_completions', + ciphertext, nonce, algorithm, key_version, created_at, updated_at, expires_at +FROM model_credentials_fixed; + +DROP TABLE model_credentials_fixed; + +CREATE INDEX IF NOT EXISTS idx_model_credentials_expiry + ON model_credentials (expires_at); diff --git a/apps/scut-senior/api/src/scut_senior_api/adapters/byok.py b/apps/scut-senior/api/src/scut_senior_api/adapters/byok.py index 63772d4c..4a599be4 100644 --- a/apps/scut-senior/api/src/scut_senior_api/adapters/byok.py +++ b/apps/scut-senior/api/src/scut_senior_api/adapters/byok.py @@ -3,52 +3,32 @@ import inspect import json from collections.abc import Callable -from dataclasses import dataclass -from typing import Mapping - -from ..byok_catalog import ByokProviderCatalog from ..contracts import WorkflowRunRequest from ..credentials import validate_user_api_key -from ..ports import ConversationTurn, GeneratedAnswer, RetrievedSource +from ..model_credentials import ModelCredentialError, normalize_base_url +from ..ports import ( + ConversationTurn, + GeneratedAnswer, + RetrievedSource, + StoredModelCredential, +) from ..workflow_focus import ( build_response_control_directive, build_workflow_focus, ) from .answer_parsing import ModelAnswerParseError, parse_chat_completion_answer from .http_security import is_timeout_transport_error -from .openrouter import HttpResponse, JsonHttpClient, UrllibJsonHttpClient - - -OPENROUTER_BYOK_ENDPOINT = "https://openrouter.ai/api/v1/chat/completions" -DEEPSEEK_BYOK_ENDPOINT = "https://api.deepseek.com/chat/completions" -SILICONFLOW_BYOK_ENDPOINT = "https://api.siliconflow.cn/v1/chat/completions" -ZHIPU_BYOK_ENDPOINT = "https://open.bigmodel.cn/api/paas/v4/chat/completions" - - -@dataclass(frozen=True, slots=True) -class FixedByokRoute: - endpoint: str - model_id: str +from .openrouter import ( + HttpResponse, + JsonHttpClient, + UrllibJsonHttpClient, + _build_action_request, + _parse_action_text, +) -FIXED_BYOK_ROUTES: Mapping[str, FixedByokRoute] = { - "openrouter": FixedByokRoute( - OPENROUTER_BYOK_ENDPOINT, - "deepseek/deepseek-v4-flash-0731", - ), - "deepseek": FixedByokRoute( - DEEPSEEK_BYOK_ENDPOINT, - "deepseek-v4-flash", - ), - "siliconflow": FixedByokRoute( - SILICONFLOW_BYOK_ENDPOINT, - "Pro/zai-org/GLM-4.7", - ), - "zhipu": FixedByokRoute( - ZHIPU_BYOK_ENDPOINT, - "glm-5.2", - ), -} +DEFAULT_BYOK_MAX_TOKENS = 12_288 +DEFAULT_BYOK_TEMPERATURE = 0.2 class FailClosedJsonHttpClient: @@ -66,21 +46,17 @@ def __init__(self, *, status_code: int, code: str, detail: str): self.detail = detail -class FixedByokModelGateway: - """One fixed model and endpoint per enabled provider, with no fallback.""" +class OpenAICompatibleByokGateway: + """Call one user-defined OpenAI Chat Completions connection.""" def __init__( self, *, http_client: JsonHttpClient | None = None, timeout_seconds: float = 120.0, - catalog: ByokProviderCatalog | None = None, ): self._http_client = http_client or UrllibJsonHttpClient() self._timeout_seconds = timeout_seconds - # Call defaults (max_tokens / temperature) come from the fixed catalog - # so the request builder never hard-codes provider defaults. - self._catalog = catalog or ByokProviderCatalog() self._transport_accepts_cancel_check = ( "cancel_check" in inspect.signature(self._http_client.post_json).parameters @@ -90,17 +66,21 @@ def generate( self, *, api_key: str, + connection: StoredModelCredential, request: WorkflowRunRequest, sources: list[RetrievedSource], history: tuple[ConversationTurn, ...] = (), cancel_check: Callable[[], bool] | None = None, ) -> GeneratedAnswer: - route = FIXED_BYOK_ROUTES.get(request.provider_id) - if route is None or request.model_id != route.model_id: + if ( + request.provider_id != connection.provider_id + or request.model_id != connection.model_id + or connection.protocol != "openai_chat_completions" + ): raise ByokGatewayError( status_code=422, code="byok_route_not_registered", - detail="所选 BYOK 供应商或模型未登记。", + detail="所选模型与已保存连接不一致。", ) try: validate_user_api_key(api_key) @@ -110,17 +90,22 @@ def generate( code="invalid_model_credential", detail="已保存的 API Key 无效,请重新保存。", ) from None - model_entry = self._catalog.resolve_model( - request.provider_id, request.model_id - ) payload = _build_byok_request( request, sources, history, - max_tokens=model_entry.default_max_tokens, - temperature=model_entry.default_temperature, - reasoning_effort=model_entry.reasoning_effort, + max_tokens=DEFAULT_BYOK_MAX_TOKENS, + temperature=DEFAULT_BYOK_TEMPERATURE, ) + try: + base_url = normalize_base_url(connection.base_url) + except ModelCredentialError: + raise ByokGatewayError( + status_code=422, + code="invalid_byok_base_url", + detail="已保存的 API 地址无效,请重新保存该连接。", + ) from None + endpoint = f"{base_url}/chat/completions" try: request_options = { "headers": { @@ -134,7 +119,7 @@ def generate( if self._transport_accepts_cancel_check: request_options["cancel_check"] = cancel_check response = self._http_client.post_json( - route.endpoint, + endpoint, **request_options, ) except Exception as exc: @@ -153,6 +138,85 @@ def generate( raise _safe_byok_upstream_error(response.status_code) return _parse_byok_answer(response) + def decide_action( + self, + *, + api_key: str, + connection: StoredModelCredential, + request: WorkflowRunRequest, + state: object, + phase: str, + sources: tuple[RetrievedSource, ...] = (), + history: tuple[ConversationTurn, ...] = (), + cancel_check: Callable[[], bool] | None = None, + ) -> str: + """Ask the selected BYOK connection for one bounded Workflow action.""" + + del state, history + if ( + request.provider_id != connection.provider_id + or request.model_id != connection.model_id + or connection.protocol != "openai_chat_completions" + ): + raise ByokGatewayError( + status_code=422, + code="byok_route_not_registered", + detail="所选模型与已保存连接不一致。", + ) + try: + validate_user_api_key(api_key) + base_url = normalize_base_url(connection.base_url) + except ValueError: + raise ByokGatewayError( + status_code=422, + code="invalid_model_credential", + detail="已保存的 API Key 无效,请重新保存。", + ) from None + except ModelCredentialError: + raise ByokGatewayError( + status_code=422, + code="invalid_byok_base_url", + detail="已保存的 API 地址无效,请重新保存该连接。", + ) from None + + endpoint = f"{base_url}/chat/completions" + payload = _build_action_request(request, phase, sources) + try: + request_options = { + "headers": { + "Authorization": f"Bearer {api_key}", + "Content-Type": "application/json", + "Accept": "application/json", + }, + "payload": payload, + "timeout_seconds": self._timeout_seconds, + } + if self._transport_accepts_cancel_check: + request_options["cancel_check"] = cancel_check + response = self._http_client.post_json(endpoint, **request_options) + except Exception as exc: + if is_timeout_transport_error(exc): + raise ByokGatewayError( + status_code=504, + code="byok_provider_timeout", + detail="模型供应商响应超时,请稍后重试。", + ) from None + raise ByokGatewayError( + status_code=503, + code="byok_provider_unavailable", + detail="模型供应商暂时不可用,请稍后重试。", + ) from None + if response.status_code < 200 or response.status_code >= 300: + raise _safe_byok_upstream_error(response.status_code) + try: + return _parse_action_text(response.body) + except ModelAnswerParseError: + raise ByokGatewayError( + status_code=502, + code="byok_provider_invalid_response", + detail="模型供应商返回了无法处理的结果,请稍后重试。", + ) from None + def _build_byok_request( request: WorkflowRunRequest, diff --git a/apps/scut-senior/api/src/scut_senior_api/adapters/openrouter.py b/apps/scut-senior/api/src/scut_senior_api/adapters/openrouter.py index 820546af..34b3b38b 100644 --- a/apps/scut-senior/api/src/scut_senior_api/adapters/openrouter.py +++ b/apps/scut-senior/api/src/scut_senior_api/adapters/openrouter.py @@ -189,6 +189,52 @@ def generate( return _parse_generated_answer(response.body) + def decide_action( + self, + request: WorkflowRunRequest, + state: object, + phase: str, + *, + sources: tuple[RetrievedSource, ...] = (), + history: tuple[ConversationTurn, ...] = (), + ) -> str: + """Run the AB Action decision with a compact, bounded completion. + + This is deliberately not the answer-generation prompt: the provider + receives only routing facts and source titles, and can emit at most a + single short action token. + """ + + del state, history + if ( + request.provider_id != self.provider_id + or request.model_id not in self._allowed_model_ids + ): + raise OpenRouterGatewayError( + status_code=422, + code="model_not_registered", + detail="所选模型未在当前可用的平台目录中登记。", + ) + self._reserve_platform_request() + payload = _build_action_request(request, phase, sources) + try: + response = self._post_upstream(payload, None) + except OSError as exc: + if is_timeout_transport_error(exc): + raise OpenRouterGatewayError( + status_code=503, + code="platform_model_timeout", + detail="平台模型响应超时,请稍后重试。", + ) from None + raise OpenRouterGatewayError( + status_code=503, + code="platform_model_unavailable", + detail="平台模型服务暂时不可用,请稍后重试。", + ) from None + if response.status_code < 200 or response.status_code >= 300: + raise _safe_upstream_error(response.status_code) + return _parse_action_text(response.body) + def _post_upstream( self, payload: Mapping[str, object], @@ -245,6 +291,44 @@ def _latch_daily_exhaustion(self, response: HttpResponse) -> None: self._quota_store.latch_daily_exhaustion(exhausted_until=until) +def _build_action_request( + request: WorkflowRunRequest, + phase: str, + sources: tuple[RetrievedSource, ...], +) -> dict[str, object]: + return { + "model": request.model_id, + "messages": [ + { + "role": "system", + "content": ( + "你是受限检索路由器。只输出 generate_answer 或 " + "retrieve_with_query_rewrite,不要解释。已有证据足以回答时" + "选择 generate_answer;证据明显不足或主题覆盖过窄时选择" + " retrieve_with_query_rewrite。" + ), + }, + { + "role": "user", + "content": json.dumps( + { + "workflow": request.workflow_type.value, + "phase": phase, + "question": request.user_input[:500], + "evidence_count": len(sources), + "evidence_titles": [ + source.source_title[:120] for source in sources[:8] + ], + }, + ensure_ascii=False, + ), + }, + ], + "max_tokens": 16, + "temperature": 0, + } + + def _build_structured_request( request: WorkflowRunRequest, sources: list[RetrievedSource], @@ -301,6 +385,24 @@ def _build_structured_request( } +def _parse_action_text(body: bytes) -> str: + try: + payload = json.loads(body.decode("utf-8")) + content = payload["choices"][0]["message"]["content"] + except ( + AttributeError, + UnicodeDecodeError, + json.JSONDecodeError, + KeyError, + IndexError, + TypeError, + ): + raise ModelAnswerParseError("action completion has no assistant content") from None + if not isinstance(content, str) or not content.strip(): + raise ModelAnswerParseError("action completion assistant content is empty") + return content + + def _rate_limit_error(response: HttpResponse) -> OpenRouterGatewayError: metadata = _safe_error_metadata(response.body) if metadata.get("provider_code") is not None: diff --git a/apps/scut-senior/api/src/scut_senior_api/adapters/sqlite.py b/apps/scut-senior/api/src/scut_senior_api/adapters/sqlite.py index 92f3da1f..18a0f985 100644 --- a/apps/scut-senior/api/src/scut_senior_api/adapters/sqlite.py +++ b/apps/scut-senior/api/src/scut_senior_api/adapters/sqlite.py @@ -1297,6 +1297,10 @@ def _stored_model_credential(row: sqlite3.Row) -> StoredModelCredential: return StoredModelCredential( user_id=UUID(row["user_id"]), provider_id=row["provider_id"], + display_name=row["display_name"], + base_url=row["base_url"], + model_id=row["model_id"], + protocol=row["protocol"], ciphertext=bytes(row["ciphertext"]), nonce=bytes(row["nonce"]), algorithm=row["algorithm"], @@ -1311,8 +1315,9 @@ def list_model_credentials(self, user_id: UUID) -> list[StoredModelCredential]: with self._connect() as connection: rows = connection.execute( """ - SELECT user_id, provider_id, ciphertext, nonce, algorithm, - key_version, expires_at, updated_at + SELECT user_id, provider_id, display_name, base_url, model_id, + protocol, ciphertext, nonce, algorithm, key_version, + expires_at, updated_at FROM model_credentials WHERE user_id = ? AND expires_at > ? ORDER BY provider_id @@ -1329,8 +1334,9 @@ def get_model_credential( with self._connect() as connection: row = connection.execute( """ - SELECT user_id, provider_id, ciphertext, nonce, algorithm, - key_version, expires_at, updated_at + SELECT user_id, provider_id, display_name, base_url, model_id, + protocol, ciphertext, nonce, algorithm, key_version, + expires_at, updated_at FROM model_credentials WHERE user_id = ? AND provider_id = ? AND expires_at > ? """, @@ -1343,6 +1349,10 @@ def upsert_model_credential( *, user_id: UUID, provider_id: str, + display_name: str, + base_url: str, + model_id: str, + protocol: str, ciphertext: bytes, nonce: bytes, algorithm: str, @@ -1365,10 +1375,15 @@ def upsert_model_credential( connection.execute( """ INSERT INTO model_credentials ( - user_id, provider_id, ciphertext, nonce, algorithm, - key_version, created_at, updated_at, expires_at - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) + user_id, provider_id, display_name, base_url, model_id, + protocol, ciphertext, nonce, algorithm, key_version, + created_at, updated_at, expires_at + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(user_id, provider_id) DO UPDATE SET + display_name = excluded.display_name, + base_url = excluded.base_url, + model_id = excluded.model_id, + protocol = excluded.protocol, ciphertext = excluded.ciphertext, nonce = excluded.nonce, algorithm = excluded.algorithm, @@ -1379,6 +1394,10 @@ def upsert_model_credential( ( str(user_id), provider_id, + display_name, + base_url, + model_id, + protocol, sqlite3.Binary(ciphertext), sqlite3.Binary(nonce), algorithm, @@ -1390,8 +1409,9 @@ def upsert_model_credential( ) row = connection.execute( """ - SELECT user_id, provider_id, ciphertext, nonce, algorithm, - key_version, expires_at, updated_at + SELECT user_id, provider_id, display_name, base_url, model_id, + protocol, ciphertext, nonce, algorithm, key_version, + expires_at, updated_at FROM model_credentials WHERE user_id = ? AND provider_id = ? """, diff --git a/apps/scut-senior/api/src/scut_senior_api/agent_loop.py b/apps/scut-senior/api/src/scut_senior_api/agent_loop.py index 6513626a..12f91a09 100644 --- a/apps/scut-senior/api/src/scut_senior_api/agent_loop.py +++ b/apps/scut-senior/api/src/scut_senior_api/agent_loop.py @@ -126,23 +126,38 @@ def __init__(self, model: ModelGateway, fallback: AgentDecisionGateway | None = def decide(self, request, state, phase, *, sources=(), history=()) -> ActionKind: self.last_used_fallback = False + allowed = ( + "retrieve_with_query_rewrite, generate_answer" + if phase == "post_retrieval" + else "retrieve, retrieve_with_query_rewrite, generate_answer" + ) decision_request = request.model_copy( update={ "user_input": ( "只输出一个允许的 Action 名称,不要解释。" - "允许值:retrieve, retrieve_with_query_rewrite, " - "generate_answer。" + f"允许值:{allowed}。" f"当前 Workflow={request.workflow_type.value},阶段={phase}," f"已检索轮次={state.retrieval_rounds},已有证据数={len(sources)}。" ) } ) try: - generated: GeneratedAnswer = self.model.generate( - decision_request, list(sources), history - ) + compact_decision = getattr(self.model, "decide_action", None) + if callable(compact_decision): + raw = compact_decision( + request, + state, + phase, + sources=tuple(sources), + history=history, + ) + else: + generated: GeneratedAnswer = self.model.generate( + decision_request, list(sources), history + ) + raw = generated.repository_answer parsed = parse_model_action( - generated.repository_answer, workflow_type=request.workflow_type.value + raw, workflow_type=request.workflow_type.value ) if parsed is not None: return parsed @@ -177,12 +192,17 @@ def choose_next_action( if not action_allowed_for_workflow(workflow_type, action): raise ValueError("workflow does not allow answer generation") return action + if phase == "post_retrieval": + action = "generate_answer" + if not action_allowed_for_workflow(workflow_type, action): + raise ValueError("workflow does not allow answer generation") + return action raise ValueError("unknown agent compatibility phase") @dataclass(frozen=True, slots=True) class AgentBudget: - max_steps: int = 4 + max_steps: int = 5 max_retrieval_rounds: int = 2 max_query_rewrite: int = 1 max_same_action_retries: int = 1 diff --git a/apps/scut-senior/api/src/scut_senior_api/byok_catalog.py b/apps/scut-senior/api/src/scut_senior_api/byok_catalog.py index 48816851..983b1cae 100644 --- a/apps/scut-senior/api/src/scut_senior_api/byok_catalog.py +++ b/apps/scut-senior/api/src/scut_senior_api/byok_catalog.py @@ -1,194 +1,24 @@ from __future__ import annotations -from dataclasses import dataclass, replace -from enum import StrEnum -from typing import Literal +BYOK_CATALOG_VERSION = "byok-connections-v1" -BYOK_CATALOG_VERSION = "byok-models-v4" +class ByokProviderCatalog: + """Advertise the custom-connection BYOK capability. -class ByokProviderId(StrEnum): - OPENROUTER = "openrouter" - DEEPSEEK = "deepseek" - SILICONFLOW = "siliconflow" - ZHIPU = "zhipu" - - -class EndpointPolicy(StrEnum): - FIXED_PROVIDER_ENDPOINT = "fixed_provider_endpoint" - - -class ByokProviderNotRegistered(ValueError): - pass - - -class ByokModelNotRegistered(ValueError): - pass - - -class ByokProviderDisabled(RuntimeError): - pass - - -@dataclass(frozen=True, slots=True) -class ByokModelEntry: - """One fixed model per BYOK provider. - - ``default_max_tokens`` and ``default_temperature`` are server-side call - defaults declared next to the model (adopted from DSH's adapter-owned - capability metadata). They stay out of the public payload on purpose: the - web client keeps a fail-closed frozen copy with exact-key matching, so - server-side fields must not drift that contract. + Provider profiles are user-owned records and therefore do not belong in + the process-wide model catalog. Authenticated users obtain their own + redacted connections from ``/api/v1/model-credentials``. """ - model_id: str - company: str - display_name: str - input_modalities: tuple[str, ...] = ("text",) - supports_structured_outputs: bool = True - default_max_tokens: int = 2048 - default_temperature: float = 0.2 - reasoning_effort: Literal["low", "high", "max"] | None = None - - def as_public_dict(self) -> dict[str, str]: - return { - "model_id": self.model_id, - "company": self.company, - "display_name": self.display_name, - } - - -@dataclass(frozen=True, slots=True) -class ByokProviderEntry: - """Fixed provider/model metadata plus a runtime-derived availability gate.""" - - provider_id: ByokProviderId - company: str - display_name: str - endpoint_policy: EndpointPolicy - models: tuple[ByokModelEntry, ...] - enabled: bool = False - models_confirmed: bool = True - custom_base_url_allowed: bool = False - - def as_public_dict(self) -> dict[str, object]: - return { - "provider_id": self.provider_id.value, - "company": self.company, - "display_name": self.display_name, - "enabled": self.enabled, - "models_confirmed": self.models_confirmed, - "models": [model.as_public_dict() for model in self.models], - "custom_base_url_allowed": self.custom_base_url_allowed, - "endpoint_policy": self.endpoint_policy.value, - } - - -_BYOK_PROVIDER_ENTRIES = ( - ByokProviderEntry( - provider_id=ByokProviderId.OPENROUTER, - company="OpenRouter", - display_name="OpenRouter", - endpoint_policy=EndpointPolicy.FIXED_PROVIDER_ENDPOINT, - models=( - ByokModelEntry( - model_id="deepseek/deepseek-v4-flash-0731", - company="DeepSeek", - display_name="DeepSeek V4 Flash 0731", - # DeepSeek is a reasoning model: its thinking consumes part of - # the token budget, so a small max_tokens can return an empty - # final ``content``. Keep headroom for reasoning + answer. - default_max_tokens=12288, - reasoning_effort="low", - ), - ), - ), - ByokProviderEntry( - provider_id=ByokProviderId.DEEPSEEK, - company="DeepSeek", - display_name="DeepSeek", - endpoint_policy=EndpointPolicy.FIXED_PROVIDER_ENDPOINT, - models=( - ByokModelEntry( - model_id="deepseek-v4-flash", - company="DeepSeek", - display_name="DeepSeek V4 Flash", - # Same reasoning-model note as the OpenRouter DeepSeek route. - default_max_tokens=12288, - reasoning_effort="low", - ), - ), - ), - ByokProviderEntry( - provider_id=ByokProviderId.SILICONFLOW, - company="SiliconFlow", - display_name="硅基流动", - endpoint_policy=EndpointPolicy.FIXED_PROVIDER_ENDPOINT, - models=( - ByokModelEntry( - model_id="Pro/zai-org/GLM-4.7", - company="Z.ai", - display_name="GLM-4.7 Pro", - ), - ), - ), - ByokProviderEntry( - provider_id=ByokProviderId.ZHIPU, - company="Zhipu AI", - display_name="智谱 AI", - endpoint_policy=EndpointPolicy.FIXED_PROVIDER_ENDPOINT, - models=( - ByokModelEntry( - model_id="glm-5.2", - company="Zhipu AI", - display_name="GLM-5.2", - ), - ), - ), -) - - -class ByokProviderCatalog: - """Strict four-provider whitelist with one fixed model per provider.""" - def __init__(self, *, runtime_enabled: bool = False) -> None: - self.entries = tuple( - replace( - entry, - enabled=runtime_enabled, - ) - for entry in _BYOK_PROVIDER_ENTRIES - ) - self._by_provider_id = { - entry.provider_id.value: entry for entry in self.entries - } - - def resolve_provider(self, provider_id: str) -> ByokProviderEntry: - entry = self._by_provider_id.get(provider_id) - if entry is None: - raise ByokProviderNotRegistered("BYOK provider is not registered") - return entry - - def require_enabled(self, provider_id: str) -> ByokProviderEntry: - entry = self.resolve_provider(provider_id) - if not entry.enabled: - raise ByokProviderDisabled("BYOK provider is disabled") - return entry - - def resolve_model(self, provider_id: str, model_id: str) -> ByokModelEntry: - entry = self.resolve_provider(provider_id) - model = next( - (model for model in entry.models if model.model_id == model_id), - None, - ) - if model is None: - raise ByokModelNotRegistered("BYOK model is not registered") - return model + self.runtime_enabled = runtime_enabled + self.entries: tuple[()] = () def public_payload(self) -> dict[str, object]: return { "catalog_version": BYOK_CATALOG_VERSION, - "enabled": any(entry.enabled for entry in self.entries), - "providers": [entry.as_public_dict() for entry in self.entries], + "enabled": self.runtime_enabled, + "providers": [], } diff --git a/apps/scut-senior/api/src/scut_senior_api/contracts.py b/apps/scut-senior/api/src/scut_senior_api/contracts.py index 01eef8a4..608d2053 100644 --- a/apps/scut-senior/api/src/scut_senior_api/contracts.py +++ b/apps/scut-senior/api/src/scut_senior_api/contracts.py @@ -221,18 +221,22 @@ def strip_title(cls, value: str) -> str: class ModelCredentialUpsert(ContractModel): api_key: Annotated[SecretStr, Field(min_length=1, max_length=8192)] + display_name: Annotated[str, Field(min_length=1, max_length=100)] + base_url: Annotated[str, Field(min_length=1, max_length=2048)] + model_id: Annotated[str, Field(min_length=1, max_length=100)] + protocol: Literal["openai_chat_completions"] = "openai_chat_completions" class ModelCredentialStatus(ContractModel): - provider_id: Literal["openrouter", "deepseek", "siliconflow", "zhipu"] - model_id: Literal[ - "deepseek/deepseek-v4-flash-0731", - "deepseek-v4-flash", - "Pro/zai-org/GLM-4.7", - "glm-5.2", - ] - configured: bool - masked_key: Literal["••••••••"] | None + # Kept as provider_id on the wire for Workflow compatibility. It is now a + # user-chosen connection id rather than a server-owned vendor enum. + provider_id: Annotated[str, Field(min_length=1, max_length=64)] + display_name: Annotated[str, Field(min_length=1, max_length=100)] + base_url: Annotated[str, Field(min_length=1, max_length=2048)] + model_id: Annotated[str, Field(min_length=1, max_length=100)] + protocol: Literal["openai_chat_completions"] + configured: Literal[True] + masked_key: Literal["••••••••"] expires_at: datetime | None # DSH credential-seam describe semantics: safe status fields that never # expose the secret value. ``writable`` is whether a replacement could be @@ -243,29 +247,10 @@ class ModelCredentialStatus(ContractModel): @model_validator(mode="after") def enforce_configuration_metadata(self) -> "ModelCredentialStatus": - expected_model = { - "openrouter": "deepseek/deepseek-v4-flash-0731", - "deepseek": "deepseek-v4-flash", - "siliconflow": "Pro/zai-org/GLM-4.7", - "zhipu": "glm-5.2", - }[self.provider_id] - if self.model_id != expected_model: - raise ValueError("credential provider and model must match the fixed catalog") - if self.configured and ( - self.masked_key is None or self.expires_at is None or self.updated_at is None - ): + if self.expires_at is None or self.updated_at is None: raise ValueError( "configured credentials require masked_key, expires_at and updated_at" ) - if not self.configured and ( - self.masked_key is not None - or self.expires_at is not None - or self.updated_at is not None - or self.writable - ): - raise ValueError( - "unconfigured credentials cannot expose key metadata" - ) return self @@ -420,6 +405,7 @@ class TraceSafeResult(ContractModel): # AB runtime diagnostics. These are aggregate counters only; raw model # prompts and private payloads never enter the student-visible Trace. decision_call_count: Annotated[int | None, Field(ge=0)] = None + model_action_accepted_count: Annotated[int | None, Field(ge=0)] = None answer_call_count: Annotated[int | None, Field(ge=0)] = None provider_retry_count: Annotated[int | None, Field(ge=0)] = None guard_retry_count: Annotated[int | None, Field(ge=0)] = None diff --git a/apps/scut-senior/api/src/scut_senior_api/eval_runner.py b/apps/scut-senior/api/src/scut_senior_api/eval_runner.py index 354b83a5..ef1a7e1f 100644 --- a/apps/scut-senior/api/src/scut_senior_api/eval_runner.py +++ b/apps/scut-senior/api/src/scut_senior_api/eval_runner.py @@ -214,6 +214,7 @@ def _extract_runtime_metrics(result: Any) -> dict[str, object]: keys = ( "duration_ms", "decision_call_count", + "model_action_accepted_count", "answer_call_count", "provider_retry_count", "guard_retry_count", diff --git a/apps/scut-senior/api/src/scut_senior_api/main.py b/apps/scut-senior/api/src/scut_senior_api/main.py index e0c543bf..3f58366e 100644 --- a/apps/scut-senior/api/src/scut_senior_api/main.py +++ b/apps/scut-senior/api/src/scut_senior_api/main.py @@ -18,7 +18,7 @@ from .adapters.byok import ( ByokGatewayError, FailClosedJsonHttpClient, - FixedByokModelGateway, + OpenAICompatibleByokGateway, ) from .adapters.github import ( FailClosedHttpTransport, @@ -396,10 +396,7 @@ def create_app( ) if active_settings.app_env == "test" and byok_http_client is None: byok_http_client = FailClosedJsonHttpClient() - byok_model = FixedByokModelGateway( - http_client=byok_http_client, - catalog=model_catalog.byok_catalog, - ) + byok_model = OpenAICompatibleByokGateway(http_client=byok_http_client) oauth_adapter = github_oauth_adapter if active_settings.identity_mode == "github_oauth" and oauth_adapter is None: oauth_adapter = GitHubOAuthAdapter( diff --git a/apps/scut-senior/api/src/scut_senior_api/model_catalog.py b/apps/scut-senior/api/src/scut_senior_api/model_catalog.py index 5039fef0..0ed61dd6 100644 --- a/apps/scut-senior/api/src/scut_senior_api/model_catalog.py +++ b/apps/scut-senior/api/src/scut_senior_api/model_catalog.py @@ -159,7 +159,7 @@ class ModelCatalogResponse(BaseModel): real_platform_default_available: bool health_checked_at: datetime | None byok_available: bool - byok_catalog_version: Literal["byok-models-v4"] + byok_catalog_version: Literal["byok-connections-v1"] byok_providers: list[PublicByokProviderEntry] quota_notice: str quota_exhausted_message: str diff --git a/apps/scut-senior/api/src/scut_senior_api/model_credentials.py b/apps/scut-senior/api/src/scut_senior_api/model_credentials.py index 63aa699d..9f543326 100644 --- a/apps/scut-senior/api/src/scut_senior_api/model_credentials.py +++ b/apps/scut-senior/api/src/scut_senior_api/model_credentials.py @@ -1,11 +1,13 @@ from __future__ import annotations +import ipaddress +import re +from urllib.parse import urlsplit, urlunsplit + +import idna + from .auth import AuthRequired, AuthenticatedPrincipal -from .byok_catalog import ( - ByokProviderCatalog, - ByokProviderDisabled, - ByokProviderNotRegistered, -) +from .byok_catalog import ByokProviderCatalog from .contracts import ModelCredentialStatus, ModelCredentialUpsert from .credentials import ( CredentialCipher, @@ -17,6 +19,7 @@ MASKED_MODEL_KEY = "••••••••" +CONNECTION_ID_PATTERN = re.compile(r"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$") class ModelCredentialError(RuntimeError): @@ -27,8 +30,100 @@ def __init__(self, *, status_code: int, code: str, detail: str): self.detail = detail +def normalize_connection_id(value: str) -> str: + connection_id = value.strip() + if len(connection_id) > 64 or CONNECTION_ID_PATTERN.fullmatch(connection_id) is None: + raise ModelCredentialError( + status_code=422, + code="invalid_byok_connection_id", + detail="连接 ID 只能使用小写字母、数字和连字符,并且必须以字母开头。", + ) + return connection_id + + +def normalize_base_url(value: str) -> str: + """Validate the server-side destination before any credential is stored. + + The hosted backend accepts HTTPS provider endpoints only. Redirects remain + disabled by the shared HTTP transport, and obvious local/private targets + are rejected so a saved API key cannot be sent to a loopback or metadata + service by mistake. + """ + + raw = value.strip().rstrip("/") + try: + parsed = urlsplit(raw) + port = parsed.port + except ValueError: + parsed = None + port = None + if ( + parsed is None + or parsed.scheme != "https" + or not parsed.hostname + or parsed.username is not None + or parsed.password is not None + or parsed.query + or parsed.fragment + ): + raise ModelCredentialError( + status_code=422, + code="invalid_byok_base_url", + detail="API 地址必须是无账号、查询参数和片段的 HTTPS Base URL。", + ) + hostname = parsed.hostname.casefold().rstrip(".") + if hostname == "localhost" or hostname.endswith((".localhost", ".local", ".internal")): + raise ModelCredentialError( + status_code=422, + code="invalid_byok_base_url", + detail="API 地址不能指向本机或内网主机。", + ) + try: + address = ipaddress.ip_address(hostname) + except ValueError: + address = None + if address is None: + try: + hostname = idna.encode( + hostname, uts46=True, std3_rules=True + ).decode("ascii").casefold().rstrip(".") + except (idna.IDNAError, UnicodeError): + raise ModelCredentialError( + status_code=422, + code="invalid_byok_base_url", + detail="API 地址包含无效的主机名。", + ) from None + if "." not in hostname: + raise ModelCredentialError( + status_code=422, + code="invalid_byok_base_url", + detail="API 地址必须使用完整的公网主机名。", + ) + if hostname == "localhost" or hostname.endswith( + (".localhost", ".local", ".internal") + ): + raise ModelCredentialError( + status_code=422, + code="invalid_byok_base_url", + detail="API 地址不能指向本机或内网主机。", + ) + if address is not None and not address.is_global: + raise ModelCredentialError( + status_code=422, + code="invalid_byok_base_url", + detail="API 地址不能指向本机或内网地址。", + ) + host_for_netloc = ( + f"[{hostname}]" + if address is not None and address.version == 6 + else hostname + ) + netloc = host_for_netloc if port is None else f"{host_for_netloc}:{port}" + return urlunsplit(("https", netloc, parsed.path.rstrip("/"), "", "")) + + class ModelCredentialManager: - """Owns session-bound credential validation, AEAD, and safe public metadata.""" + """Own encrypted user-defined OpenAI-compatible model connections.""" def __init__( self, @@ -45,20 +140,13 @@ def list_statuses( self, principal: AuthenticatedPrincipal ) -> list[ModelCredentialStatus]: self._require_active_session(principal) + self._require_runtime() session_active = self._repository.session_is_active( principal.user_id, principal.auth_session_id ) - configured = { - record.provider_id: record - for record in self._repository.list_model_credentials(principal.user_id) - } return [ - self._status( - entry.provider_id.value, - configured.get(entry.provider_id.value), - session_active, - ) - for entry in self._catalog.entries + self._status(record, session_active) + for record in self._repository.list_model_credentials(principal.user_id) ] def replace( @@ -67,7 +155,7 @@ def replace( provider_id: str, payload: ModelCredentialUpsert, ) -> ModelCredentialStatus: - entry = self._require_enabled_provider(provider_id) + self._require_runtime() cipher = self._cipher if cipher is None: raise ModelCredentialError( @@ -76,6 +164,16 @@ def replace( detail="用户 API Key 加密服务未配置,当前无法保存凭据。", ) self._require_active_session(principal) + connection_id = normalize_connection_id(provider_id) + display_name = payload.display_name.strip() + model_id = payload.model_id.strip() + if not display_name or not model_id or any(ord(char) < 32 for char in display_name + model_id): + raise ModelCredentialError( + status_code=422, + code="invalid_byok_connection", + detail="连接名称和模型 ID 不能为空或包含控制字符。", + ) + base_url = normalize_base_url(payload.base_url) api_key = payload.api_key.get_secret_value() try: validate_user_api_key(api_key) @@ -88,38 +186,66 @@ def replace( encrypted = cipher.encrypt( api_key, user_id=principal.user_id, - provider_id=provider_id, + provider_id=connection_id, ) record = self._repository.upsert_model_credential( user_id=principal.user_id, - provider_id=provider_id, + provider_id=connection_id, + display_name=display_name, + base_url=base_url, + model_id=model_id, + protocol=payload.protocol, ciphertext=encrypted.ciphertext, nonce=encrypted.nonce, algorithm=encrypted.algorithm, key_version=encrypted.key_version, ) - # The credential is scoped to the user, not the session, so it persists - # across re-login on another device. The active-session check above is - # what authorizes this write. - return self._status(entry.provider_id.value, record, True) + return self._status(record, True) def delete( self, principal: AuthenticatedPrincipal, provider_id: str ) -> None: - self._resolve_provider(provider_id) + self._require_runtime() + connection_id = normalize_connection_id(provider_id) self._require_active_session(principal) deleted = self._repository.delete_model_credential( - principal.user_id, provider_id + principal.user_id, connection_id ) if not deleted and not self._repository.session_is_active( principal.user_id, principal.auth_session_id ): raise AuthRequired() + def get_connection( + self, + principal: AuthenticatedPrincipal, + provider_id: str, + model_id: str, + ) -> StoredModelCredential: + self._require_runtime() + connection_id = normalize_connection_id(provider_id) + self._require_active_session(principal) + record = self._repository.get_model_credential( + principal.user_id, connection_id + ) + if record is None: + raise ModelCredentialError( + status_code=409, + code="model_credential_not_configured", + detail="当前账号尚未保存该模型连接。", + ) + if record.model_id != model_id: + raise ModelCredentialError( + status_code=422, + code="byok_model_not_registered", + detail="所选模型与已保存连接不一致。", + ) + return record + def load_api_key( self, principal: AuthenticatedPrincipal, provider_id: str ) -> str: - self._require_enabled_provider(provider_id) + self._require_runtime() cipher = self._cipher if cipher is None: raise ModelCredentialError( @@ -127,8 +253,9 @@ def load_api_key( code="byok_encryption_unavailable", detail="用户 API Key 加密服务未配置。", ) + connection_id = normalize_connection_id(provider_id) record = self._repository.get_model_credential( - principal.user_id, provider_id + principal.user_id, connection_id ) if record is None: if not self._repository.session_is_active( @@ -138,7 +265,7 @@ def load_api_key( raise ModelCredentialError( status_code=409, code="model_credential_not_configured", - detail="当前账号尚未保存该供应商的 API Key。", + detail="当前账号尚未保存该模型连接。", ) try: api_key = cipher.decrypt( @@ -149,7 +276,7 @@ def load_api_key( algorithm=record.algorithm, ), user_id=principal.user_id, - provider_id=provider_id, + provider_id=connection_id, ) except CredentialDecryptionError: raise ModelCredentialError( @@ -157,65 +284,34 @@ def load_api_key( code="model_credential_unavailable", detail="已保存的 API Key 无法解密,请删除后重新保存。", ) from None - # Revalidate immediately before the caller is allowed to submit the - # provider request. Logout/revoke/expiry therefore invalidates late work. self._require_active_session(principal) return api_key + def _require_runtime(self) -> None: + if not self._catalog.runtime_enabled: + raise ModelCredentialError( + status_code=503, + code="byok_provider_disabled", + detail="自定义模型连接当前未启用。", + ) + def _require_active_session(self, principal: AuthenticatedPrincipal) -> None: if principal.is_mock or not self._repository.session_is_active( principal.user_id, principal.auth_session_id ): raise AuthRequired() - def _resolve_provider(self, provider_id: str): - try: - return self._catalog.resolve_provider(provider_id) - except ByokProviderNotRegistered: - raise ModelCredentialError( - status_code=422, - code="byok_provider_not_registered", - detail="该 BYOK 供应商未登记。", - ) from None - - def _require_enabled_provider(self, provider_id: str): - try: - return self._catalog.require_enabled(provider_id) - except ByokProviderNotRegistered: - raise ModelCredentialError( - status_code=422, - code="byok_provider_not_registered", - detail="该 BYOK 供应商未登记。", - ) from None - except ByokProviderDisabled: - raise ModelCredentialError( - status_code=503, - code="byok_provider_disabled", - detail="该 BYOK 供应商当前未启用。", - ) from None - def _status( self, - provider_id: str, - record: StoredModelCredential | None, + record: StoredModelCredential, session_active: bool, ) -> ModelCredentialStatus: - entry = self._catalog.resolve_provider(provider_id) - model_id = entry.models[0].model_id - if record is None: - return ModelCredentialStatus( - provider_id=provider_id, - model_id=model_id, - configured=False, - masked_key=None, - expires_at=None, - writable=False, - source="user_key", - updated_at=None, - ) return ModelCredentialStatus( - provider_id=provider_id, - model_id=model_id, + provider_id=record.provider_id, + display_name=record.display_name, + base_url=record.base_url, + model_id=record.model_id, + protocol="openai_chat_completions", configured=True, masked_key=MASKED_MODEL_KEY, expires_at=record.expires_at, diff --git a/apps/scut-senior/api/src/scut_senior_api/ports.py b/apps/scut-senior/api/src/scut_senior_api/ports.py index ba74eb13..c956cd4b 100644 --- a/apps/scut-senior/api/src/scut_senior_api/ports.py +++ b/apps/scut-senior/api/src/scut_senior_api/ports.py @@ -94,6 +94,10 @@ def humanize( class StoredModelCredential: user_id: UUID provider_id: str + display_name: str + base_url: str + model_id: str + protocol: str ciphertext: bytes = field(repr=False) nonce: bytes = field(repr=False) algorithm: str @@ -126,10 +130,24 @@ def generate( class UserKeyModelGateway(Protocol): + def decide_action( + self, + *, + api_key: str, + connection: StoredModelCredential, + request: WorkflowRunRequest, + state: object, + phase: str, + sources: tuple[RetrievedSource, ...] = (), + history: tuple[ConversationTurn, ...] = (), + cancel_check: Callable[[], bool] | None = None, + ) -> str: ... + def generate( self, *, api_key: str, + connection: StoredModelCredential, request: WorkflowRunRequest, sources: list[RetrievedSource], history: tuple[ConversationTurn, ...] = (), @@ -228,6 +246,10 @@ def upsert_model_credential( *, user_id: UUID, provider_id: str, + display_name: str, + base_url: str, + model_id: str, + protocol: str, ciphertext: bytes, nonce: bytes, algorithm: str, diff --git a/apps/scut-senior/api/src/scut_senior_api/service.py b/apps/scut-senior/api/src/scut_senior_api/service.py index f576d41b..7eb24a70 100644 --- a/apps/scut-senior/api/src/scut_senior_api/service.py +++ b/apps/scut-senior/api/src/scut_senior_api/service.py @@ -12,16 +12,11 @@ AgentState, ModelAgentDecision, RuleBasedAgentDecision, - choose_next_action, + action_allowed_for_workflow, reduce_agent_event, ) from .adapters.bilibili import derive_question_keywords, normalize_keywords from .adapters.exam_facts import ExamFactsUnavailable -from .byok_catalog import ( - ByokModelNotRegistered, - ByokProviderDisabled, - ByokProviderNotRegistered, -) from .config import Settings from .contracts import ( AccountDeletionSummary, @@ -99,6 +94,7 @@ RetrievalBatch, RetrievalGateway, RetrievedSource, + StoredModelCredential, UserKeyModelGateway, UserIdentity, WorkflowRepository, @@ -142,6 +138,49 @@ class ExamReviewPlanContext: retrieval_query: str +class _BoundUserKeyDecisionModel: + """Request-local adapter that keeps BYOK secrets out of Agent state/events.""" + + __slots__ = ("_gateway", "_api_key", "_connection", "_cancel_check") + + def __init__( + self, + gateway: UserKeyModelGateway, + api_key: str, + connection: StoredModelCredential, + cancel_check, + ) -> None: + self._gateway = gateway + self._api_key: str | None = api_key + self._connection = connection + self._cancel_check = cancel_check + + def decide_action( + self, + request: WorkflowRunRequest, + state: object, + phase: str, + *, + sources: tuple[RetrievedSource, ...] = (), + history: tuple[ConversationTurn, ...] = (), + ) -> str: + if self._api_key is None: + raise RuntimeError("BYOK decision credential was already cleared") + return self._gateway.decide_action( + api_key=self._api_key, + connection=self._connection, + request=request, + state=state, + phase=phase, + sources=sources, + history=history, + cancel_check=self._cancel_check, + ) + + def clear(self) -> None: + self._api_key = None + + class IterationZeroService: def __init__( self, @@ -825,6 +864,7 @@ def _run( # exactly, so this cannot fail for a contract-valid request. preset = HARNESS_REGISTRY.resolve_preset(request.workflow_type) model_entry: ModelCatalogEntry | None = None + byok_connection = None use_user_key = request.model_source == ModelSource.USER_KEY if not use_user_key: if self.settings.model_mode == "mock": @@ -865,33 +905,11 @@ def _run( else: if not isinstance(user, AuthenticatedPrincipal) or user.is_mock: raise AuthRequired() - try: - provider = self.model_catalog.byok_catalog.require_enabled( - request.provider_id - ) - selected_model = self.model_catalog.byok_catalog.resolve_model( - request.provider_id, request.model_id - ) - except ByokProviderNotRegistered: - raise ModelCredentialError( - status_code=422, - code="byok_provider_not_registered", - detail="该 BYOK 供应商未登记。", - ) from None - except ByokProviderDisabled: - raise ModelCredentialError( - status_code=503, - code="byok_provider_disabled", - detail="该 BYOK 供应商当前未启用。", - ) from None - except ByokModelNotRegistered: - raise ModelCredentialError( - status_code=422, - code="byok_model_not_registered", - detail="该 BYOK 模型未登记。", - ) from None - model_provider_id = provider.provider_id.value - model_id = selected_model.model_id + byok_connection = self.credential_manager.get_connection( + user, request.provider_id, request.model_id + ) + model_provider_id = byok_connection.provider_id + model_id = byok_connection.model_id billing_label = "user_provider_billing" availability_status = "user_key_enabled" mock_only = False @@ -899,8 +917,8 @@ def _run( # structured-output metadata remains descriptive for the current # text-capable presets. compatibility_reason = preset.check_model_compatibility( - input_modalities=selected_model.input_modalities, - supports_structured_outputs=selected_model.supports_structured_outputs, + input_modalities=("text",), + supports_structured_outputs=True, ) if compatibility_reason is not None: raise CapabilityUnavailable("model", compatibility_reason) @@ -957,6 +975,7 @@ def _run( agent_started = perf_counter() agent_metrics = { "decision_call_count": 0, + "model_action_accepted_count": 0, "answer_call_count": 0, "provider_retry_count": 0, "guard_retry_count": 0, @@ -1010,6 +1029,8 @@ def decide_for_phase( *, sources: list[RetrievedSource] | tuple[RetrievedSource, ...] = (), allow_model: bool = False, + accepted_actions: frozenset[str] | None = None, + decision_gateway: AgentDecisionGateway | None = None, ) -> str: """Record one bounded decision and ensure it matches execution. @@ -1019,18 +1040,26 @@ def decide_for_phase( to the expected server-owned action and leaves an audit event. """ action = expected_action + used_fallback = False + model_action_accepted = False + active_decision = decision_gateway or self.agent_decision if allow_model and self.settings.agent_decision_mode == "model": agent_metrics["decision_call_count"] += 1 - action = self.agent_decision.decide( + action = active_decision.decide( request, agent_state, phase, sources=sources, history=history, ) - if isinstance(self.agent_decision, ModelAgentDecision) and self.agent_decision.last_used_fallback: + used_fallback = ( + isinstance(active_decision, ModelAgentDecision) + and active_decision.last_used_fallback + ) + if used_fallback: agent_metrics["decision_fallback_count"] += 1 - if action != expected_action: + allowed = accepted_actions or frozenset({expected_action}) + if action not in allowed: agent_metrics["action_rejection_count"] += 1 reduce_agent( "action_rejected", @@ -1038,11 +1067,19 @@ def decide_for_phase( expected_action=expected_action, ) action = expected_action + elif not used_fallback: + agent_metrics["model_action_accepted_count"] += 1 + model_action_accepted = True reduce_agent( "decision_produced", action=action, phase=phase, expected_action=expected_action, + decision_source=( + "model" + if model_action_accepted + else "rule" + ), ) return action @@ -1205,25 +1242,31 @@ def persist_failed_or_interrupted( if exam_plan is not None else workflow_focus.authoritative_query ) + # In BYOK model-decision mode the same request-local decrypted key is + # reused for the compact Action call and answer generation. It is never + # copied into Agent state, Trace data, persistence, or exceptions. + api_key: str | None = None decide_for_phase("retrieve", "retrieve") interrupted = interrupt_if_step_not_claimed() if interrupted is not None: return interrupted started = perf_counter() + generation_decision_ready = False try: retrieval_batch = self.retrieval.search( course_ids, retrieval_query ) if ( - isinstance(retrieval_batch, RetrievalBatch) + self.settings.agent_decision_mode != "model" + and isinstance(retrieval_batch, RetrievalBatch) and not retrieval_batch.sources and history and exam_plan is None and self.settings.retrieval_mode == "local_corpus" ): - # 迭代 7.5 检索地板的配套修复:追问轮常丢失词面锚点 - #(“把这道题再讲一遍”单独检索得分为噪声级),当前查询空结果时 - # 以最近用户轮次补锚重试一次;不改变课程/范围/工作流语义。 + # Keep the proven deterministic follow-up recovery in rule + # mode. Model mode owns the same optional choice at the + # post_retrieval decision node below. context_query = _compose_context_carry_query( retrieval_query, history ) @@ -1240,50 +1283,31 @@ def persist_failed_or_interrupted( }, ) else: - # Decide before invoking the second retrieval. A model - # mismatch is recorded and replaced with the - # server-owned expected action before any retrieval - # side effect. - rewrite_action = decide_for_phase( - "retrieve_with_query_rewrite", - "retrieve_with_query_rewrite", - sources=retrieval_batch.sources, - allow_model=True, + retry_started = perf_counter() + context_batch = self.retrieval.search( + course_ids, context_query + ) + record_agent_action("retrieve_with_query_rewrite") + if ( + isinstance(context_batch, RetrievalBatch) + and context_batch.sources + ): + retrieval_batch = context_batch + candidate_count = ( + len(context_batch.sources) + if isinstance(context_batch, RetrievalBatch) + else len(context_batch) + ) + _append_trace( + trace, + node="retrieval_context_carry", + result={ + "hit_count": 0, + "candidate_count": candidate_count, + "rewritten_query": context_query[:200], + }, + duration_ms=_elapsed_ms(retry_started), ) - if rewrite_action == "retrieve_with_query_rewrite": - retry_started = perf_counter() - context_batch = self.retrieval.search( - course_ids, context_query - ) - record_agent_action("retrieve_with_query_rewrite") - if ( - isinstance(context_batch, RetrievalBatch) - and context_batch.sources - ): - retrieval_batch = context_batch - _append_trace( - trace, - node="retrieval_context_carry", - result={ - "hit_count": 0, - "candidate_count": len( - retrieval_batch.sources - ), - "rewritten_query": context_query[:200], - }, - duration_ms=_elapsed_ms(retry_started), - ) - else: - _append_trace( - trace, - node="retrieval_context_carry", - result={ - "hit_count": 0, - "candidate_count": 0, - "rewritten_query": context_query[:200], - }, - duration_ms=_elapsed_ms(retry_started), - ) if not isinstance(retrieval_batch, RetrievalBatch): # Keep injected iteration-1 test doubles compatible, but never # accept an unversioned result in explicit local-corpus mode. @@ -1333,6 +1357,109 @@ def persist_failed_or_interrupted( ) sources = _dedupe_sources(sources) record_agent_action("retrieve") + reduce_agent("observation_recorded") + if ( + self.settings.agent_decision_mode == "model" + and action_allowed_for_workflow( + request.workflow_type.value, + "retrieve_with_query_rewrite", + ) + ): + if optional_model_work_allowed(): + decision_gateway: AgentDecisionGateway | None = None + bound_byok_decision: _BoundUserKeyDecisionModel | None = None + if use_user_key: + assert isinstance(user, AuthenticatedPrincipal) + interrupted = interrupt_if_step_not_claimed() + if interrupted is not None: + return interrupted + api_key = self.credential_manager.load_api_key( + user, request.provider_id + ) + bound_byok_decision = _BoundUserKeyDecisionModel( + self.byok_model, + api_key, + byok_connection, + ( + stream_session.cancelled + if stream_session is not None + else None + ), + ) + decision_gateway = ModelAgentDecision(bound_byok_decision) + try: + next_action = decide_for_phase( + "post_retrieval", + "generate_answer", + sources=sources, + allow_model=True, + accepted_actions=frozenset( + {"generate_answer", "retrieve_with_query_rewrite"} + ), + decision_gateway=decision_gateway, + ) + finally: + if bound_byok_decision is not None: + bound_byok_decision.clear() + generation_decision_ready = next_action == "generate_answer" + if next_action == "retrieve_with_query_rewrite": + rewritten_query = _compose_agent_rewrite_query( + retrieval_query, + history, + course.display_name, + ) + rewrite_started = perf_counter() + rewritten_batch = self.retrieval.search( + course_ids, rewritten_query + ) + if isinstance(rewritten_batch, RetrievalBatch): + if ( + rewritten_batch.corpus_version != corpus_version + or rewritten_batch.course_pack_version + != course_pack_version + ): + raise ContractConflict( + "query rewrite retrieval changed corpus version" + ) + rewritten_sources = list(rewritten_batch.sources) + elif self.settings.retrieval_mode == "local_corpus": + raise ContractConflict( + "local corpus query rewrite returned an unversioned candidate set" + ) + else: + rewritten_sources = list(rewritten_batch) + if any( + source.course_id not in course_ids + for source in rewritten_sources + ): + raise ContractConflict( + "query rewrite returned a source outside the selected courses" + ) + sources = _dedupe_sources( + [*sources, *rewritten_sources] + )[:8] + record_agent_action("retrieve_with_query_rewrite") + reduce_agent("observation_recorded") + _append_trace( + trace, + node="agent_query_rewrite", + duration_ms=_elapsed_ms(rewrite_started), + result={ + "hit_count": len(rewritten_sources), + "candidate_count": len(sources), + "rewritten_query": rewritten_query[:200], + }, + ) + else: + _append_trace( + trace, + node="agent_query_rewrite", + status=TraceEventStatus.SKIPPED, + result={ + "candidate_count": len(sources), + "reason_code": "runtime_soft_limit", + }, + ) except Exception: interrupted = persist_failed_or_interrupted( failure_node=retrieval_node, @@ -1365,7 +1492,6 @@ def persist_failed_or_interrupted( ], }, ) - reduce_agent("observation_recorded") _append_trace( trace, node="source_authorization_guard", @@ -1389,7 +1515,6 @@ def persist_failed_or_interrupted( return interrupted started = perf_counter() - api_key: str | None = None provider_retry_count = 0 guard_retry_count = 0 guard_retry_context: str | None = None @@ -1402,7 +1527,7 @@ def persist_failed_or_interrupted( ) try: - if use_user_key: + if use_user_key and api_key is None: assert isinstance(user, AuthenticatedPrincipal) interrupted = interrupt_if_step_not_claimed() if interrupted is not None: @@ -1414,7 +1539,10 @@ def persist_failed_or_interrupted( # Admission and cancellation share a short lifecycle lock. A # claim that wins is considered in flight; cancel never waits # for the synchronous provider call and wins at the next node. - decide_for_phase("generate", "generate_answer") + if generation_decision_ready: + generation_decision_ready = False + else: + decide_for_phase("generate", "generate_answer") interrupted = interrupt_if_step_not_claimed() if interrupted is not None: return interrupted @@ -1442,6 +1570,7 @@ def persist_failed_or_interrupted( ) generated = self.byok_model.generate( api_key=api_key, + connection=byok_connection, request=generation_request, sources=sources, history=history, @@ -2530,6 +2659,20 @@ def _compose_context_carry_query( return "" combined = " ".join([*reversed(prior), current_query]) return combined[:_CONTEXT_CARRY_QUERY_CHARS].strip() + + +def _compose_agent_rewrite_query( + current_query: str, + history: tuple[ConversationTurn, ...], + course_title: str, +) -> str: + """Build the bounded query executed when the model selects rewrite.""" + + carried = _compose_context_carry_query(current_query, history) + base = carried or current_query + return ( + f"{course_title} {base} 核心概念 典型题 易错点" + )[:_CONTEXT_CARRY_QUERY_CHARS].strip() FEEDBACK_TTL = timedelta(days=30) diff --git a/apps/scut-senior/docs/senior-ab/plan-ab.md b/apps/scut-senior/docs/senior-ab/plan-ab.md index c5fdce53..fda670d9 100644 --- a/apps/scut-senior/docs/senior-ab/plan-ab.md +++ b/apps/scut-senior/docs/senior-ab/plan-ab.md @@ -1,7 +1,7 @@ # SCUT 老学长 AB 分支优化计划 版本:0.1(基于最新 AB 实跑后的收敛方案) -状态:**P0/P1 最小实现已完成;真实模型合并门槛及两项运行修复尚未完成**。 +状态:**P0/P1 最小实现及本轮两项修复已完成本地回归;真实模型合并门槛尚未验证**。 本文只针对 `ab-test/agent-action-shadow`。它不是 PLAN-2 的替代文档,也不是 把系统扩展成通用 Agent 平台的方案。目标是解释当前 AB 分支到底做了什么,保留 @@ -11,11 +11,11 @@ ### 1.1 当前结论 -当前 AB 分支是“模型决策适配器 + 原有单链路运行时”的影子实验: +当前 AB 分支是“受限模型决策适配器 + 原有同步运行时”的 post-retrieval 实验: ```text -请求校验 → 确定性计划/检索 → 模型决策询问 → 固定检索或固定生成 - → 引用 Guard → 结果附录/外部搜索 → 持久化 +请求校验 → 确定性计划/首轮检索 → post_retrieval 模型决策 + → 直接生成,或一次查询改写检索 → 引用 Guard → 收尾与持久化 ``` 它借鉴了 EventStream 的事件账本、Reducer 和 Observe → Decide → Act 形式, @@ -23,14 +23,15 @@ - `decision_produced` 会记录模型选择的动作; - 服务端仍按既定代码路径执行检索和生成; -- 固定检索和回答阶段由服务端预期动作直接执行; -- 可选查询改写先通过 Action Guard,再执行第二次检索; +- 固定首轮检索和最终回答阶段由服务端预期动作执行,不额外询问模型; +- 首轮检索后,模型只在 `generate_answer` 与 + `retrieve_with_query_rewrite` 之间选择;后者通过 Action Guard 后才执行第二次检索; - `finish`、`ask_clarification` 暂未暴露给模型,避免出现无执行语义的动作; - 不合规模型动作会记录 `action_rejected` 并显式回退到服务端动作。 -因此,当前实跑可以证明 AB 的额外模型调用成本,但不能把引用数量提升直接归因 -给 Agent 决策机制。引用收益还可能来自已有的混合检索、exam_review 确定性计划、 -模型输出差异或回答重试。 +因此,旧实跑仍不能把引用数量提升归因给 Agent 决策;当时成功样本的 +`decision_call_count=0`。本轮改造后的归因必须同时看到决策调用、被接受的模型动作 +以及对应执行事件,不能再由最终引用数倒推。 ### 1.2 版本目标 @@ -97,8 +98,9 @@ 3. `exam_review` 时先生成确定性复习计划; 4. 服务端确定性执行一次检索,不调用完整模型询问 `retrieve`; 5. 执行课程检索、私有知识合并、课程授权校验和来源去重; -6. 只有在本地检索空结果且满足条件时,才在第二次检索前询问一次可选决策; -7. 直接进入回答模型;固定阶段不重复调用完整模型询问 `generate_answer`; +6. `model` 模式在首轮检索后询问一次轻量决策;选择改写时执行一次有界二次检索, + 选择生成时直接继续;`rule` 模式保留原有空结果追问补锚; +7. 进入回答模型;固定阶段不重复调用完整模型询问 `generate_answer`; 8. 调用 OpenRouter、智谱、BYOK 或 Mock 模型生成回答; 9. 解析 Markdown/JSON、全角引用和 `scut-meta`; 10. 执行引用、课程范围、URL 和 AnswerBlock Guard; @@ -190,20 +192,21 @@ decision_produced ### P0-2 移除完整模型的重复决策调用 -当前 `ModelAgentDecision` 复用回答模型和完整请求构造,仍可能携带历史和课程 -候选,且使用回答级 `max_tokens=16384`。这使一次 Action 判断接近一次完整回答的 -成本。 +旧实现复用回答模型和完整请求构造,曾让一次 Action 判断接近一次完整回答的成本。 +本轮已把 OpenRouter 决策调用拆为独立紧凑请求:只传问题摘要、证据数量和来源标题, +使用 `max_tokens=16`、`temperature=0`,不发送来源正文和完整历史。它仍复用平台 +模型身份和额度,不是新的常驻决策服务。 -首选做法: +已采用的做法: - 第一次检索固定由服务端执行,不调用模型决定 `retrieve`; -- 证据是否需要补检索,先由确定性条件判断; -- 证据满足要求后直接进入一次回答生成; -- 只有确实存在“是否补检索”这类不确定节点时,才调用一个轻量决策器。 +- 首轮证据返回后,只调用一次轻量决策器判断直接生成还是补检索; +- 选择生成后直接进入回答,选择改写时最多补一次检索。 -若要保留模型决策实验,则至少做到: +模型决策实验保持以下边界: -- 决策模型与回答模型配置分离; +- 决策请求路径、token 预算和调用计数与回答请求分离; +- 当前仍复用所选平台模型身份,是否另选小模型留给实测后决定; - 决策请求只传结构化观察量,不传完整 source 正文; - `max_tokens` 使用很小的控制预算; - temperature 设为 0; @@ -218,6 +221,7 @@ P0 不要求引入新的模型供应商,也不要求建立新的服务。 ```text decision_call_count +model_action_accepted_count answer_call_count provider_retry_count guard_retry_count @@ -225,7 +229,9 @@ decision_fallback_count action_rejection_count ``` -这些字段只用于 Trace、评测和服务端诊断,不需要变成学生侧复杂 UI。 +其中 `decision_call_count` 只表示尝试过模型决策;只有 +`model_action_accepted_count` 才表示一个合法、阶段适配的模型 Action 被执行。这些 +字段只用于 Trace、评测和服务端诊断,不需要变成学生侧复杂 UI。 同时修正预算口径:如果文档继续声明“Guard 重试计入 max_steps”,就让 `guard_retry_recorded` 同步增加 `step_count`;否则修改文档,明确它是独立计数。 @@ -427,19 +433,20 @@ P0-1 先统一 Action 与实际执行 - 固定检索/生成阶段不再调用完整模型询问 Action; - 查询改写在第二次检索前决策,错误 Action 会记录拒绝并回退; -- `decision_call_count`、`answer_call_count`、供应商/Guard 重试及 fallback/rejection - 已进入安全 Trace; +- `decision_call_count`、`model_action_accepted_count`、`answer_call_count`、 + 供应商/Guard 重试及 fallback/rejection 已进入安全 Trace; - Guard 重试携带服务端内部修复原因,并计入统一步骤预算; - `exam_review` 的未覆盖内容已压缩为数量与短名称,完整结构化明细仍可追溯; - 评测 runner 支持 `--agent-decision-mode rule|model`,每条用例输出受限运行指标, 可复用同一请求集做成对比较; -- AB 专项测试与后端全量测试均通过(当前为 662 passed,1 warning;警告来自现有 +- AB 专项测试与后端全量测试均通过(当前为 673 passed,1 warning;警告来自现有 Starlette/httpx 依赖兼容提示)。 -同一 fixture 用例集的本地 rule/model 对照也已执行:两组均为 5 passed、6 failed、 -1 skipped;11 个实际运行用例的 `decision_call_count` 均为 0。这是预期结果——用例 -没有触发“空检索且有多轮上下文”的可选改写节点,不能据此宣称模型决策有收益,后续 -需要用真实多轮稀疏检索样本单独测量该节点。 +新增注入式回归已经覆盖正常 `generate_answer`、正常查询改写、阶段不兼容 Action、 +解析失败 fallback 和 3/4 软水位跳过。正常可达样本可稳定得到 +`decision_call_count=1` 与 `model_action_accepted_count=1`;选择直接生成时只有一次 +检索,选择改写时恰好两次检索。这里证明的是代码路径和归因口径,不是供应商真实 +延迟或引用收益。 P1 的最小范围已完成:有限执行边界、一次查询改写上限和输出责任收敛均复用现有 同步运行时;不继续扩展为通用 Action 平台。当前实现已足够支撑下一轮对照实验。 @@ -536,23 +543,50 @@ DeepSeek 对照后不修改既有错误分类,预算按以下最小规则收 - 控制权回到运行时且已超过软水位后,不再启动可选查询改写、供应商重试、引用修复 或 Humanizer,直接使用已有结果继续收尾; - 单个 Workflow 最多两次回答调用,避免供应商重试后再叠加 Guard 修复成为第三次调用; -- DeepSeek V4 Flash 使用官方支持的 `reasoning_effort=low`,单次 `max_tokens` 从 - 16384 收敛到 12288;当前非流式接口不能在调用中实时观察“已使用 3/4 token”, - 因此用调用前硬上限和推理强度控制替代伪实时判断; -- DeepSeek BYOK 请求的总墙钟上限为 120 秒,不收紧为 60 秒。 - -`decision_call_count=0` 不是计数错误。当前固定检索和固定生成阶段有意使用服务端 -决策,只有以下条件同时满足时才允许模型选择 Action:本地语料首轮检索为空、同一 -会话已有历史、没有 `exam_review` 确定性计划,并且尚未进入软水位。线性代数复习 -大纲会生成 `exam_plan`,所以该节点结构上不可达;回答中的 5 条引用由回答模型选择、 -引用 Guard 校验,与 Action 决策不是同一指标。 - -后续对照应拆成两类,不为了让计数非零而给正常 `exam_review` 强塞一次 Planner: - -1. `exam_review` 样本继续比较回答、引用和附录质量; -2. 使用“先问具体知识点,再用缺少词面锚点的追问触发首检为空”的多轮样本,比较 - rule/model 是否选择并实际执行 `retrieve_with_query_rewrite`。 - -只有第二类样本中出现 `decision_call_count > 0`,且 -`decision_produced → action_executed → observation_recorded` 一致,才能讨论模型 -Action 对检索结果和引用覆盖的因果收益。 +- BYOK 单次 `max_tokens` 从 16384 收敛到 12288;通用 OpenAI-compatible 请求不再 + 发送并非所有供应商都支持的 `reasoning_effort`。当前非流式接口不能在调用中实时 + 观察“已使用 3/4 token”,因此使用调用前硬上限替代伪实时判断; +- BYOK 请求的总墙钟上限保持 120 秒,不收紧为 60 秒。 + +旧成功样本的 `decision_call_count=0` 不是统计错误,而是旧节点只允许在“首检为空、 +有历史、无 exam_plan”时触发,正常 `exam_review` 结构上不可达。本轮把真正存在选择 +意义的节点放在首轮检索之后:模型只决定“直接生成”还是“补一次改写检索”。这使 +正常复习样本可达,但不会让模型接管首轮检索、课程范围、工具参数或最终终态。 + +后续对照仍需拆开看: + +1. `decision_call_count=1`:确实发起过模型决策; +2. `model_action_accepted_count=1`:返回值合法且适合当前阶段; +3. `decision_source=model` 与后续 `action_executed` 一致:模型 Action 确实驱动执行; +4. 只有第 3 项成立后,引用候选或引用接受率变化才有资格进入因果比较。 + +解析失败、上游失败或非法 Action 都回退 `generate_answer`,并分别记录 fallback 或 +rejection;这种成功回答不能记作模型 Action 成功。进入 90 秒软水位后不再发起该 +可选决策,120 秒硬上限保持不变。 + +## 13. 自定义 BYOK 连接 + +BYOK 已从四组固定供应商/模型改为用户私有的 OpenAI-compatible 连接。用户保存: + +```text +连接 ID + 显示名称 + HTTPS Base URL + 模型 ID + API Key +``` + +服务端继续加密保存 Key;前端和查询接口只拿到脱敏状态。Workflow 仍以 +`provider_id + model_id` 选择连接,其中 `provider_id` 为兼容现有协议保留的字段名, +语义已经变为用户自定义连接 ID。旧四家凭据通过 `0018` 迁移补齐原 endpoint 和模型 +信息,密文、nonce、版本和到期时间保持不变。 + +P0 只支持 `openai_chat_completions`,调用路径为 +`/chat/completions`。服务端要求 HTTPS,拒绝 URL 账号密码、query、fragment、 +localhost、明显的私网/链路本地字面地址,并继续禁止重定向。`/api/v1/models` 不发布 +用户私有连接;登录后通过 `/api/v1/model-credentials` 获取自己的脱敏连接列表。 + +当前边界需要如实保留:尚未实现 `/models` 自动发现,也没有在传输层完成可抵御 DNS +rebinding 的 IP 固定,因此不能宣称任意 Base URL 已具备完整 SSRF 防护;面向不可信 +公网用户开放前仍需补齐。Agent Action 决策当前使用平台决策模型,用户 BYOK 只负责 +回答生成,二者的调用次数和成本不能混为一谈。 + +本轮没有追加真实供应商调用:先前获准的 DeepSeek 实网轮次已经用完。自定义连接、 +迁移保密性、动态模型选择和 Agent Action 可达性均由注入 HTTP 与本地回归验证,不能 +冒充新的线上稳定性或回答质量证据。 diff --git a/apps/scut-senior/infra/README.md b/apps/scut-senior/infra/README.md index bc93d594..dc1a19aa 100644 --- a/apps/scut-senior/infra/README.md +++ b/apps/scut-senior/infra/README.md @@ -2,7 +2,7 @@ 当前部署状态是**显式关闭**。应用镜像未来进入华为云 SWR,再由 ECS 部署;真实认证、灰度与回滚方式尚未确认,本目录不会用占位命令冒充可用部署。部署工作流提供默认的 `validation_only=true` 人工模式,只验证受限检出和镜像构建,成功后停止,不接触 SWR 或 ECS。 -预算获批前不创建或修改任何华为云资源,`DEPLOYMENT_ENABLED` 必须保持未设置或 `false`。未来首发基线已经缩减为华南-广州优先的 1 vCPU/2GB、40GB 系统盘、1~2Mbps;ECS 只承载 Web、API、生产 SQLite 和轻量检索,不部署大模型,也不承担 OCR、embedding、全量索引或课程包构建。包年购买前应先用按需实例验证 OpenRouter、DeepSeek、硅基流动和智谱四家固定 endpoint 的出站连通性。 +预算获批前不创建或修改任何华为云资源,`DEPLOYMENT_ENABLED` 必须保持未设置或 `false`。未来首发基线已经缩减为华南-广州优先的 1 vCPU/2GB、40GB 系统盘、1~2Mbps;ECS 只承载 Web、API、生产 SQLite 和轻量检索,不部署大模型,也不承担 OCR、embedding、全量索引或课程包构建。包年购买前应先用按需实例验证平台模型和计划使用的 OpenAI-compatible BYOK 供应商出站连通性;向不可信公网用户开放自定义 Base URL 前,还需补齐传输层 DNS rebinding/SSRF 防护。 当前镜像只用于本地和 CI 的开发验证,仍包含 Mock 身份、Fixture 检索与 SQLite Mock 存储,不能作为线上服务运行。即使配置了 OpenRouter 平台模型,当前 API 也会在 `SCUT_SENIOR_APP_ENV=production` 下拒绝启动。未来 ECS 的 OpenRouter 项目 Key、BYOK 加密主密钥和 OAuth Secret 只能进入受保护的运行 Secret,不能写入镜像、仓库、构建日志或前端。 diff --git a/apps/scut-senior/packages/contracts/v1/schemas/conversation-detail.schema.json b/apps/scut-senior/packages/contracts/v1/schemas/conversation-detail.schema.json index 4695f770..1ae6100a 100644 --- a/apps/scut-senior/packages/contracts/v1/schemas/conversation-detail.schema.json +++ b/apps/scut-senior/packages/contracts/v1/schemas/conversation-detail.schema.json @@ -945,6 +945,19 @@ "default": null, "title": "Mode" }, + "model_action_accepted_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Model Action Accepted Count" + }, "model_id": { "anyOf": [ { diff --git a/apps/scut-senior/packages/contracts/v1/schemas/model-catalog.schema.json b/apps/scut-senior/packages/contracts/v1/schemas/model-catalog.schema.json index b3160c31..ad67beff 100644 --- a/apps/scut-senior/packages/contracts/v1/schemas/model-catalog.schema.json +++ b/apps/scut-senior/packages/contracts/v1/schemas/model-catalog.schema.json @@ -220,7 +220,7 @@ "type": "boolean" }, "byok_catalog_version": { - "const": "byok-models-v4", + "const": "byok-connections-v1", "title": "Byok Catalog Version", "type": "string" }, diff --git a/apps/scut-senior/packages/contracts/v1/schemas/model-credential-list.schema.json b/apps/scut-senior/packages/contracts/v1/schemas/model-credential-list.schema.json index 5f15abb4..4cd29a71 100644 --- a/apps/scut-senior/packages/contracts/v1/schemas/model-credential-list.schema.json +++ b/apps/scut-senior/packages/contracts/v1/schemas/model-credential-list.schema.json @@ -3,10 +3,23 @@ "ModelCredentialStatus": { "additionalProperties": false, "properties": { + "base_url": { + "maxLength": 2048, + "minLength": 1, + "title": "Base Url", + "type": "string" + }, "configured": { + "const": true, "title": "Configured", "type": "boolean" }, + "display_name": { + "maxLength": 100, + "minLength": 1, + "title": "Display Name", + "type": "string" + }, "expires_at": { "anyOf": [ { @@ -20,34 +33,24 @@ "title": "Expires At" }, "masked_key": { - "anyOf": [ - { - "const": "••••••••", - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Masked Key" + "const": "••••••••", + "title": "Masked Key", + "type": "string" }, "model_id": { - "enum": [ - "deepseek/deepseek-v4-flash-0731", - "deepseek-v4-flash", - "Pro/zai-org/GLM-4.7", - "glm-5.2" - ], + "maxLength": 100, + "minLength": 1, "title": "Model Id", "type": "string" }, + "protocol": { + "const": "openai_chat_completions", + "title": "Protocol", + "type": "string" + }, "provider_id": { - "enum": [ - "openrouter", - "deepseek", - "siliconflow", - "zhipu" - ], + "maxLength": 64, + "minLength": 1, "title": "Provider Id", "type": "string" }, @@ -75,7 +78,10 @@ }, "required": [ "provider_id", + "display_name", + "base_url", "model_id", + "protocol", "configured", "masked_key", "expires_at", diff --git a/apps/scut-senior/packages/contracts/v1/schemas/model-credential-upsert.schema.json b/apps/scut-senior/packages/contracts/v1/schemas/model-credential-upsert.schema.json index 400e55b7..4e6aa48b 100644 --- a/apps/scut-senior/packages/contracts/v1/schemas/model-credential-upsert.schema.json +++ b/apps/scut-senior/packages/contracts/v1/schemas/model-credential-upsert.schema.json @@ -10,10 +10,37 @@ "title": "Api Key", "type": "string", "writeOnly": true + }, + "base_url": { + "maxLength": 2048, + "minLength": 1, + "title": "Base Url", + "type": "string" + }, + "display_name": { + "maxLength": 100, + "minLength": 1, + "title": "Display Name", + "type": "string" + }, + "model_id": { + "maxLength": 100, + "minLength": 1, + "title": "Model Id", + "type": "string" + }, + "protocol": { + "const": "openai_chat_completions", + "default": "openai_chat_completions", + "title": "Protocol", + "type": "string" } }, "required": [ - "api_key" + "api_key", + "display_name", + "base_url", + "model_id" ], "title": "ModelCredentialUpsert", "type": "object" diff --git a/apps/scut-senior/packages/contracts/v1/schemas/workflow-result.schema.json b/apps/scut-senior/packages/contracts/v1/schemas/workflow-result.schema.json index f7654888..f46e9be9 100644 --- a/apps/scut-senior/packages/contracts/v1/schemas/workflow-result.schema.json +++ b/apps/scut-senior/packages/contracts/v1/schemas/workflow-result.schema.json @@ -835,6 +835,19 @@ "default": null, "title": "Mode" }, + "model_action_accepted_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Model Action Accepted Count" + }, "model_id": { "anyOf": [ { diff --git a/apps/scut-senior/packages/contracts/v1/schemas/workflow-stream-event.schema.json b/apps/scut-senior/packages/contracts/v1/schemas/workflow-stream-event.schema.json index d846891a..7f31db5b 100644 --- a/apps/scut-senior/packages/contracts/v1/schemas/workflow-stream-event.schema.json +++ b/apps/scut-senior/packages/contracts/v1/schemas/workflow-stream-event.schema.json @@ -800,6 +800,19 @@ "default": null, "title": "Mode" }, + "model_action_accepted_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Model Action Accepted Count" + }, "model_id": { "anyOf": [ { diff --git a/apps/scut-senior/tests/python/test_ab_runtime.py b/apps/scut-senior/tests/python/test_ab_runtime.py index 3b9bfd54..92d8dedf 100644 --- a/apps/scut-senior/tests/python/test_ab_runtime.py +++ b/apps/scut-senior/tests/python/test_ab_runtime.py @@ -2,8 +2,11 @@ from pathlib import Path +import pytest from fastapi.testclient import TestClient +import scut_senior_api.service as service_module +from scut_senior_api.agent_loop import AgentBudget, ModelAgentDecision from scut_senior_api.config import Settings from scut_senior_api.main import create_app from scut_senior_api.ports import RetrievalBatch, RetrievedSource @@ -30,125 +33,275 @@ def _request(conversation_id: str) -> dict[str, object]: } -def test_model_decision_mode_does_not_call_decision_model_on_fixed_path( - tmp_path: Path, -) -> None: +def _exam_request(conversation_id: str) -> dict[str, object]: + request = _request(conversation_id) + request.update( + { + "workflow_type": "exam_review", + "user_input": "结合历年卷,帮我总结一份线性代数复习大纲", + "workflow_payload": { + "syllabus": "行列式、矩阵、秩、方程组、特征值与二次型", + "exam_date": "2026-09-29", + "available_hours": 12, + "goals": ["90+", "公式记忆"], + "weak_topics": ["特征值", "二次型"], + }, + } + ) + return request + + +class _SequenceRetrieval: + def __init__(self) -> None: + self.calls: list[str] = [] + + def is_course_available(self, course_id: str) -> bool: + return course_id == "linear_algebra" + + def search(self, course_ids: list[str], query: str) -> RetrievalBatch: + self.calls.append(query) + ordinal = len(self.calls) + source = RetrievedSource( + chunk_id=f"linear_algebra:ab:p{ordinal}", + course_id="linear_algebra", + source_id=f"ab-source-{ordinal}", + source_title=f"AB 测试资料 {ordinal}", + text="矩阵的秩可以由初等行变换求得。", + locator_type="page", + locator_start=ordinal, + locator_end=ordinal, + question_id=None, + heading_path=(), + ) + return RetrievalBatch((source,), "ab-corpus", "ab-pack") + + +class _ActionModel: + def __init__(self, action: str) -> None: + self.action = action + self.calls: list[dict[str, object]] = [] + + def decide_action(self, request, state, phase, *, sources=(), history=()): + self.calls.append( + { + "question": request.user_input, + "phase": phase, + "source_count": len(sources), + "history_count": len(history), + } + ) + return self.action + + +def _model_mode_app(tmp_path: Path, name: str): app = create_app( Settings( app_env="test", - database_path=tmp_path / "ab.db", + database_path=tmp_path / name, agent_decision_mode="model", ) ) + retrieval = _SequenceRetrieval() + app.state.service.retrieval = retrieval client = TestClient(app) conversation = client.post( "/api/v1/conversations", json={"course_id": "linear_algebra"} ).json() + return app, client, conversation["conversation_id"], retrieval - response = client.post( - "/api/v1/workflow-runs", - json=_request(conversation["conversation_id"]), + +def _metrics(result: dict[str, object]) -> dict[str, object]: + return next( + event["result"] + for event in result["trace"] + if event["node"] == "mock_model" + ) + + +def test_normal_success_accepts_model_generate_action_without_second_retrieval( + tmp_path: Path, +) -> None: + app, client, conversation_id, retrieval = _model_mode_app( + tmp_path, "ab-generate.db" ) + action_model = _ActionModel("generate_answer") + app.state.service.agent_decision = ModelAgentDecision(action_model) + + response = client.post("/api/v1/workflow-runs", json=_request(conversation_id)) + assert response.status_code == 201, response.text result = response.json() - model_event = next( - event - for event in result["trace"] - if event["node"] == "mock_model" + assert len(retrieval.calls) == 1 + assert action_model.calls == [ + { + "question": "请解释矩阵的秩", + "phase": "post_retrieval", + "source_count": 1, + "history_count": 0, + } + ] + metrics = _metrics(result) + assert metrics["decision_call_count"] == 1 + assert metrics["model_action_accepted_count"] == 1 + assert metrics["decision_fallback_count"] == 0 + assert metrics["action_rejection_count"] == 0 + assert all(event["node"] != "agent_query_rewrite" for event in result["trace"]) + events = app.state.repository.list_agent_events(result["workflow_run_id"]) + model_decision = next( + event for event in events if event.get("phase") == "post_retrieval" ) - metrics = model_event["result"] - assert metrics["decision_call_count"] == 0 - assert metrics["answer_call_count"] == 1 - assert metrics["provider_retry_count"] == 0 - assert metrics["guard_retry_count"] == 0 - agent_events = app.state.repository.list_agent_events(result["workflow_run_id"]) - assert [event["kind"] for event in agent_events] == [ + assert model_decision["decision_source"] == "model" + assert model_decision["action"] == "generate_answer" + model_index = events.index(model_decision) + assert [event["kind"] for event in events[model_index : model_index + 3]] == [ "decision_produced", "action_executed", "observation_recorded", - "decision_produced", - "action_executed", - "observation_recorded", - "run_finished", ] - assert [ - event.get("action") - for event in agent_events - if event["kind"] == "action_executed" - ] == ["retrieve", "generate_answer"] + assert events[model_index + 1]["action"] == "generate_answer" -class _SequenceRetrieval: - def __init__(self) -> None: - self.calls: list[str] = [] - self.source = RetrievedSource( - chunk_id="linear_algebra:ab:p1", - course_id="linear_algebra", - source_id="ab-source", - source_title="AB 测试资料", - text="矩阵的秩可以由初等行变换求得。", - locator_type="page", - locator_start=1, - locator_end=1, - question_id=None, - heading_path=(), +def test_exam_review_success_reaches_and_accepts_model_action(tmp_path: Path) -> None: + app, client, conversation_id, retrieval = _model_mode_app( + tmp_path, "ab-exam-review.db" + ) + action_model = _ActionModel("generate_answer") + app.state.service.agent_decision = ModelAgentDecision(action_model) + + response = client.post( + "/api/v1/workflow-runs", json=_exam_request(conversation_id) + ) + + assert response.status_code == 201, response.text + result = response.json() + assert result["workflow_type"] == "exam_review" + assert len(retrieval.calls) == 1 + assert action_model.calls[0]["phase"] == "post_retrieval" + metrics = _metrics(result) + assert metrics["decision_call_count"] == 1 + assert metrics["model_action_accepted_count"] == 1 + assert metrics["decision_fallback_count"] == 0 + + +def test_normal_success_executes_model_selected_query_rewrite(tmp_path: Path) -> None: + app, client, conversation_id, retrieval = _model_mode_app( + tmp_path, "ab-rewrite.db" + ) + action_model = _ActionModel("retrieve_with_query_rewrite") + app.state.service.agent_decision = ModelAgentDecision(action_model) + + response = client.post("/api/v1/workflow-runs", json=_request(conversation_id)) + + assert response.status_code == 201, response.text + result = response.json() + assert len(retrieval.calls) == 2 + assert retrieval.calls[1] != retrieval.calls[0] + assert "线性代数" in retrieval.calls[1] + rewrite = next( + event for event in result["trace"] if event["node"] == "agent_query_rewrite" + ) + assert rewrite["status"] == "completed" + assert rewrite["result"]["hit_count"] == 1 + assert rewrite["result"]["candidate_count"] == 2 + metrics = _metrics(result) + assert metrics["decision_call_count"] == 1 + assert metrics["model_action_accepted_count"] == 1 + assert metrics["decision_fallback_count"] == 0 + executed = [ + event.get("action") + for event in app.state.repository.list_agent_events( + result["workflow_run_id"] ) + if event["kind"] == "action_executed" + ] + assert executed == [ + "retrieve", + "retrieve_with_query_rewrite", + "generate_answer", + ] - def is_course_available(self, course_id: str) -> bool: - return course_id == "linear_algebra" - def search(self, course_ids: list[str], query: str) -> RetrievalBatch: - self.calls.append(query) - # First run seeds conversation history. The second run has an empty - # primary query; an invalid model action falls back to the server's - # expected rewrite action. - if len(self.calls) == 1: - return RetrievalBatch((self.source,), "ab-corpus", "ab-pack") - return RetrievalBatch((), "ab-corpus", "ab-pack") +def test_phase_incompatible_model_action_is_rejected_and_not_attributed( + tmp_path: Path, +) -> None: + app, client, conversation_id, retrieval = _model_mode_app( + tmp_path, "ab-reject.db" + ) + action_model = _ActionModel("retrieve") + app.state.service.agent_decision = ModelAgentDecision(action_model) + response = client.post("/api/v1/workflow-runs", json=_request(conversation_id)) -class _RejectRewriteDecision: - def __init__(self) -> None: - self.phases: list[str] = [] + assert response.status_code == 201, response.text + result = response.json() + assert len(retrieval.calls) == 1 + metrics = _metrics(result) + assert metrics["decision_call_count"] == 1 + assert metrics["model_action_accepted_count"] == 0 + assert metrics["action_rejection_count"] == 1 + assert metrics["decision_fallback_count"] == 0 + events = app.state.repository.list_agent_events(result["workflow_run_id"]) + assert any(event["kind"] == "action_rejected" for event in events) + decision = next(event for event in events if event.get("phase") == "post_retrieval") + assert decision["action"] == "generate_answer" + assert decision["decision_source"] == "rule" - def decide(self, request, state, phase, *, sources=(), history=()): - self.phases.append(phase) - return "generate_answer" +def test_unparseable_model_action_falls_back_and_workflow_completes( + tmp_path: Path, +) -> None: + app, client, conversation_id, retrieval = _model_mode_app( + tmp_path, "ab-fallback.db" + ) + action_model = _ActionModel("建议 generate_answer,因为证据足够") + app.state.service.agent_decision = ModelAgentDecision(action_model) -def test_rejected_query_rewrite_falls_back_to_server_owned_action(tmp_path: Path) -> None: - app = create_app( - Settings( - app_env="test", - database_path=tmp_path / "ab-reject.db", - agent_decision_mode="model", - retrieval_mode="local_corpus", + response = client.post("/api/v1/workflow-runs", json=_request(conversation_id)) + + assert response.status_code == 201, response.text + result = response.json() + assert result["run_status"] == "completed" + assert len(retrieval.calls) == 1 + metrics = _metrics(result) + assert metrics["decision_call_count"] == 1 + assert metrics["model_action_accepted_count"] == 0 + assert metrics["decision_fallback_count"] == 1 + decision = next( + event + for event in app.state.repository.list_agent_events( + result["workflow_run_id"] ) + if event.get("phase") == "post_retrieval" ) - retrieval = _SequenceRetrieval() - app.state.service.retrieval = retrieval - decision = _RejectRewriteDecision() - app.state.service.agent_decision = decision - client = TestClient(app) - conversation = client.post( - "/api/v1/conversations", json={"course_id": "linear_algebra"} - ).json() - conversation_id = conversation["conversation_id"] + assert decision["decision_source"] == "rule" + - first = client.post( - "/api/v1/workflow-runs", json=_request(conversation_id) +def test_soft_runtime_watermark_skips_optional_model_decision( + monkeypatch: pytest.MonkeyPatch, + tmp_path: Path, +) -> None: + real_budget = AgentBudget + monkeypatch.setattr( + service_module, + "AgentBudget", + lambda: real_budget(max_runtime_seconds=1, soft_runtime_ratio=1e-12), + ) + app, client, conversation_id, retrieval = _model_mode_app( + tmp_path, "ab-soft-limit.db" ) - assert first.status_code == 201, first.text - second_payload = _request(conversation_id) - second_payload["user_input"] = "再讲一遍" - second_payload["workflow_payload"] = {"question": "再讲一遍"} - second = client.post("/api/v1/workflow-runs", json=second_payload) - assert second.status_code == 201, second.text - - assert len(retrieval.calls) == 3 - assert decision.phases == ["retrieve_with_query_rewrite"] - model_event = next( - event for event in second.json()["trace"] if event["node"] == "mock_model" + action_model = _ActionModel("retrieve_with_query_rewrite") + app.state.service.agent_decision = ModelAgentDecision(action_model) + + response = client.post("/api/v1/workflow-runs", json=_request(conversation_id)) + + assert response.status_code == 201, response.text + result = response.json() + assert len(retrieval.calls) == 1 + assert action_model.calls == [] + metrics = _metrics(result) + assert metrics["decision_call_count"] == 0 + skipped = next( + event for event in result["trace"] if event["node"] == "agent_query_rewrite" ) - assert model_event["result"]["decision_call_count"] == 1 - assert model_event["result"]["action_rejection_count"] == 1 + assert skipped["status"] == "skipped" + assert skipped["result"]["reason_code"] == "runtime_soft_limit" diff --git a/apps/scut-senior/tests/python/test_account_lifecycle.py b/apps/scut-senior/tests/python/test_account_lifecycle.py index 97718953..8bf878e6 100644 --- a/apps/scut-senior/tests/python/test_account_lifecycle.py +++ b/apps/scut-senior/tests/python/test_account_lifecycle.py @@ -161,6 +161,10 @@ def seed_account_data(app, client: TestClient, *, with_credential: bool) -> None repository.upsert_model_credential( user_id=UUID(alice_user_id), provider_id="openrouter", + display_name="OpenRouter", + base_url="https://openrouter.ai/api/v1", + model_id="deepseek/deepseek-v4-flash-0731", + protocol="openai_chat_completions", ciphertext=b"0123456789abcdef0123456789abcdef", # 模拟密文 nonce=b"0123456789ab", algorithm="AES-256-GCM", diff --git a/apps/scut-senior/tests/python/test_api_schema_exports.py b/apps/scut-senior/tests/python/test_api_schema_exports.py index a31f4ab0..084a769b 100644 --- a/apps/scut-senior/tests/python/test_api_schema_exports.py +++ b/apps/scut-senior/tests/python/test_api_schema_exports.py @@ -42,7 +42,10 @@ def test_model_credential_schemas_never_expose_ciphertext_or_plaintext_status() status_entry = status["$defs"]["ModelCredentialStatus"] assert set(status_entry["required"]) == { "provider_id", + "display_name", + "base_url", "model_id", + "protocol", "configured", "masked_key", "expires_at", @@ -55,7 +58,13 @@ def test_model_credential_schemas_never_expose_ciphertext_or_plaintext_status() assert "nonce" not in serialized assert upsert["properties"]["api_key"]["format"] == "password" assert upsert["properties"]["api_key"]["writeOnly"] is True - assert set(upsert["properties"]) == {"api_key"} + assert set(upsert["properties"]) == { + "api_key", + "display_name", + "base_url", + "model_id", + "protocol", + } def test_conversation_schema_exposes_linked_attempts_instead_of_bare_results() -> None: diff --git a/apps/scut-senior/tests/python/test_byok_providers.py b/apps/scut-senior/tests/python/test_byok_providers.py index 4903599a..a547f9aa 100644 --- a/apps/scut-senior/tests/python/test_byok_providers.py +++ b/apps/scut-senior/tests/python/test_byok_providers.py @@ -1,161 +1,69 @@ -import json - import pytest -from scut_senior_api.byok_catalog import ( - BYOK_CATALOG_VERSION, - ByokModelNotRegistered, - ByokProviderCatalog, - ByokProviderNotRegistered, - EndpointPolicy, +from scut_senior_api.byok_catalog import BYOK_CATALOG_VERSION, ByokProviderCatalog +from scut_senior_api.model_credentials import ( + ModelCredentialError, + normalize_base_url, + normalize_connection_id, ) -EXPECTED_PROVIDER_IDS = ("openrouter", "deepseek", "siliconflow", "zhipu") -EXPECTED_PROVIDER_COMPANIES = { - "openrouter": "OpenRouter", - "deepseek": "DeepSeek", - "siliconflow": "SiliconFlow", - "zhipu": "Zhipu AI", -} -EXPECTED_MODELS = { - "openrouter": { - "model_id": "deepseek/deepseek-v4-flash-0731", - "company": "DeepSeek", - "display_name": "DeepSeek V4 Flash 0731", - }, - "deepseek": { - "model_id": "deepseek-v4-flash", - "company": "DeepSeek", - "display_name": "DeepSeek V4 Flash", - }, - "siliconflow": { - "model_id": "Pro/zai-org/GLM-4.7", - "company": "Z.ai", - "display_name": "GLM-4.7 Pro", - }, - "zhipu": { - "model_id": "glm-5.2", - "company": "Zhipu AI", - "display_name": "GLM-5.2", - }, -} - - -def test_byok_catalog_freezes_exact_provider_whitelist_disabled_by_default() -> None: - catalog = ByokProviderCatalog() - payload = catalog.public_payload() - - assert payload["catalog_version"] == BYOK_CATALOG_VERSION - assert payload["enabled"] is False - assert tuple( - entry.provider_id.value for entry in catalog.entries - ) == EXPECTED_PROVIDER_IDS - assert [provider["provider_id"] for provider in payload["providers"]] == list( - EXPECTED_PROVIDER_IDS - ) - assert { - provider["provider_id"]: provider["company"] - for provider in payload["providers"] - } == EXPECTED_PROVIDER_COMPANIES - assert all(provider["enabled"] is False for provider in payload["providers"]) - assert all( - provider["models_confirmed"] is True for provider in payload["providers"] - ) - assert { - provider["provider_id"]: provider["models"][0] - for provider in payload["providers"] - } == EXPECTED_MODELS - assert all(len(provider["models"]) == 1 for provider in payload["providers"]) +def test_byok_catalog_advertises_dynamic_connections_without_global_entries() -> None: + disabled = ByokProviderCatalog().public_payload() + enabled = ByokProviderCatalog(runtime_enabled=True).public_payload() + assert disabled == { + "catalog_version": BYOK_CATALOG_VERSION, + "enabled": False, + "providers": [], + } + assert enabled == { + "catalog_version": "byok-connections-v1", + "enabled": True, + "providers": [], + } -def test_runtime_gate_enables_all_four_fixed_providers_together() -> None: - payload = ByokProviderCatalog(runtime_enabled=True).public_payload() - assert payload["enabled"] is True - assert all(provider["enabled"] is True for provider in payload["providers"]) +@pytest.mark.parametrize("value", ["my-provider", "deepseek", "p2"]) +def test_connection_id_accepts_stable_user_defined_routes(value: str) -> None: + assert normalize_connection_id(value) == value @pytest.mark.parametrize( - "provider_id", - [ - "openrouter ", - "OPENROUTER", - "https://openrouter.example.invalid", - ], + "value", + ["", "OpenRouter", "two words", "https://provider.test", "-bad", "bad_underscore"], ) -def test_byok_catalog_rejects_unregistered_or_url_like_provider_ids( - provider_id: str, -) -> None: - with pytest.raises(ByokProviderNotRegistered): - ByokProviderCatalog().resolve_provider(provider_id) - +def test_connection_id_rejects_ambiguous_or_url_like_values(value: str) -> None: + with pytest.raises(ModelCredentialError) as caught: + normalize_connection_id(value) + assert caught.value.code == "invalid_byok_connection_id" -def test_public_metadata_publishes_only_controlled_models_and_no_base_urls() -> None: - payload = ByokProviderCatalog().public_payload() - serialized = json.dumps(payload, ensure_ascii=False) - assert "https://" not in serialized - assert all( - "base_url" not in provider - and provider["custom_base_url_allowed"] is False - for provider in payload["providers"] +def test_base_url_normalizes_a_public_https_provider() -> None: + assert normalize_base_url(" https://API.example.com:8443/v1/ ") == ( + "https://api.example.com:8443/v1" + ) + assert normalize_base_url("https://[2606:4700:4700::1111]:8443/v1/") == ( + "https://[2606:4700:4700::1111]:8443/v1" ) @pytest.mark.parametrize( - ("provider_id", "model_id"), - [ - ("openrouter", "deepseek/deepseek-v4-flash-0731"), - ("deepseek", "deepseek-v4-flash"), - ("siliconflow", "Pro/zai-org/GLM-4.7"), - ("zhipu", "glm-5.2"), - ], -) -def test_byok_catalog_resolves_only_confirmed_models( - provider_id: str, model_id: str -) -> None: - model = ByokProviderCatalog().resolve_model(provider_id, model_id) - - assert model.model_id == model_id - - -@pytest.mark.parametrize( - ("provider_id", "model_id"), + "value", [ - ("openrouter", "openai/gpt-4o"), - ("openrouter", "deepseek/deepseek-v4-flash-0731 "), - ("deepseek", "DEEPSEEK-V4-FLASH"), - ("siliconflow", "https://attacker.example.invalid/v1"), - ("siliconflow", "Pro/zai-org/GLM-4.7-latest"), - ("zhipu", "glm-5.3"), + "http://api.example.com/v1", + "https://user:pass@example.com/v1", + "https://example.com/v1?key=secret", + "https://invalid host.example/v1", + "https://intranet/v1", + "https://localhost/v1", + "https://service。localhost/v1", + "https://127.0.0.1/v1", + "https://169.254.169.254/latest", + "https://10.0.0.2/v1", ], ) -def test_byok_catalog_rejects_arbitrary_model_ids( - provider_id: str, model_id: str -) -> None: - with pytest.raises(ByokModelNotRegistered): - ByokProviderCatalog().resolve_model(provider_id, model_id) - - -@pytest.mark.parametrize("provider_id", EXPECTED_PROVIDER_IDS) -def test_all_providers_publish_only_the_fixed_endpoint_policy(provider_id: str) -> None: - catalog = ByokProviderCatalog() - entry = catalog.resolve_provider(provider_id) - public_entry = next( - item for item in catalog.public_payload()["providers"] - if item["provider_id"] == provider_id - ) - - assert entry.endpoint_policy is EndpointPolicy.FIXED_PROVIDER_ENDPOINT - assert public_entry["endpoint_policy"] == "fixed_provider_endpoint" - assert set(public_entry) == { - "provider_id", - "company", - "display_name", - "enabled", - "models_confirmed", - "models", - "custom_base_url_allowed", - "endpoint_policy", - } +def test_base_url_rejects_unsafe_server_side_destinations(value: str) -> None: + with pytest.raises(ModelCredentialError) as caught: + normalize_base_url(value) + assert caught.value.code == "invalid_byok_base_url" diff --git a/apps/scut-senior/tests/python/test_byok_runtime.py b/apps/scut-senior/tests/python/test_byok_runtime.py index 1376af2a..fa9b1f23 100644 --- a/apps/scut-senior/tests/python/test_byok_runtime.py +++ b/apps/scut-senior/tests/python/test_byok_runtime.py @@ -12,20 +12,13 @@ import pytest from fastapi.testclient import TestClient -from scut_senior_api.adapters.byok import ( - DEEPSEEK_BYOK_ENDPOINT, - OPENROUTER_BYOK_ENDPOINT, - SILICONFLOW_BYOK_ENDPOINT, - ZHIPU_BYOK_ENDPOINT, -) from scut_senior_api.adapters.openrouter import HttpResponse from scut_senior_api.agent_loop import AgentBudget from scut_senior_api.auth import GitHubUserProfile, SESSION_COOKIE_NAME -from scut_senior_api.byok_catalog import ByokProviderCatalog from scut_senior_api.config import Settings from scut_senior_api.contracts import RunStatus, WorkflowRunRequest from scut_senior_api.main import create_app -from scut_senior_api.ports import GeneratedAnswer +from scut_senior_api.ports import GeneratedAnswer, RetrievalBatch, RetrievedSource from scut_senior_api.workflow_stream import WorkflowStreamSession @@ -34,16 +27,51 @@ ( "openrouter", "deepseek/deepseek-v4-flash-0731", - OPENROUTER_BYOK_ENDPOINT, + "https://openrouter.ai/api/v1", + "https://openrouter.ai/api/v1/chat/completions", + ), + ( + "deepseek", + "deepseek-v4-flash", + "https://api.deepseek.com", + "https://api.deepseek.com/chat/completions", ), - ("deepseek", "deepseek-v4-flash", DEEPSEEK_BYOK_ENDPOINT), ( "siliconflow", "Pro/zai-org/GLM-4.7", - SILICONFLOW_BYOK_ENDPOINT, + "https://api.siliconflow.cn/v1", + "https://api.siliconflow.cn/v1/chat/completions", + ), + ( + "zhipu", + "glm-5.2", + "https://open.bigmodel.cn/api/paas/v4", + "https://open.bigmodel.cn/api/paas/v4/chat/completions", ), - ("zhipu", "glm-5.2", ZHIPU_BYOK_ENDPOINT), ) +ROUTE_CONFIG = { + provider_id: (model_id, base_url) + for provider_id, model_id, base_url, _ in ROUTES +} + + +def credential_payload( + provider_id: str, + api_key: str, + *, + model_id: str | None = None, + base_url: str | None = None, +) -> dict[str, str]: + default_model, default_base_url = ROUTE_CONFIG.get( + provider_id, ("custom-model", "https://models.example.com/v1") + ) + return { + "display_name": provider_id.replace("-", " ").title(), + "base_url": base_url or default_base_url, + "model_id": model_id or default_model, + "protocol": "openai_chat_completions", + "api_key": api_key, + } class RecordingHttpClient: @@ -83,7 +111,9 @@ def success_response() -> HttpResponse: ) -def settings(database_path: Path) -> Settings: +def settings( + database_path: Path, *, agent_decision_mode: str = "rule" +) -> Settings: return Settings( app_env="test", identity_mode="github_oauth", @@ -95,14 +125,21 @@ def settings(database_path: Path) -> Settings: post_login_redirect_url="https://testserver/", byok_master_key=MASTER_KEY, byok_key_version=3, + agent_decision_mode=agent_decision_mode, ) def authenticated_app( - tmp_path: Path, http_client: RecordingHttpClient | None + tmp_path: Path, + http_client: RecordingHttpClient | None, + *, + agent_decision_mode: str = "rule", ) -> tuple[object, TestClient, str, str]: app = create_app( - settings(tmp_path / "byok-runtime.db"), + settings( + tmp_path / "byok-runtime.db", + agent_decision_mode=agent_decision_mode, + ), byok_http_client=http_client, ) repository = app.state.repository @@ -141,19 +178,23 @@ def workflow_request( @pytest.mark.parametrize( - ("provider_id", "model_id", "endpoint"), ROUTES + ("provider_id", "model_id", "base_url", "endpoint"), ROUTES ) -def test_four_byok_routes_use_one_fixed_endpoint_model_without_response_schema( +def test_custom_byok_connections_use_the_saved_endpoint_and_model( tmp_path: Path, provider_id: str, model_id: str, + base_url: str, endpoint: str, ) -> None: http = RecordingHttpClient() app, client, _, conversation_id = authenticated_app(tmp_path, http) api_key = f"sk-{provider_id}-private" assert client.put( - f"/api/v1/model-credentials/{provider_id}", json={"api_key": api_key} + f"/api/v1/model-credentials/{provider_id}", + json=credential_payload( + provider_id, api_key, model_id=model_id, base_url=base_url + ), ).status_code == 200 response = client.post( @@ -168,17 +209,9 @@ def test_four_byok_routes_use_one_fixed_endpoint_model_without_response_schema( assert call["headers"]["Authorization"] == f"Bearer {api_key}" assert call["payload"]["model"] == model_id assert call["timeout_seconds"] == 120.0 - # Call defaults are declared on the fixed catalog entry, not hard-coded - # in the request builder; assert against the catalog so a provider-specific - # default (e.g. a larger budget for reasoning models) stays correct. - catalog_entry = ByokProviderCatalog().resolve_model(provider_id, model_id) - assert call["payload"]["max_tokens"] == catalog_entry.default_max_tokens - assert call["payload"]["temperature"] == catalog_entry.default_temperature - if provider_id in {"openrouter", "deepseek"}: - assert call["payload"]["max_tokens"] == 12288 - assert call["payload"]["reasoning_effort"] == "low" - else: - assert "reasoning_effort" not in call["payload"] + assert call["payload"]["max_tokens"] == 12288 + assert call["payload"]["temperature"] == 0.2 + assert "reasoning_effort" not in call["payload"] assert "models" not in call["payload"] assert "fallbacks" not in call["payload"] assert "base_url" not in call["payload"] @@ -207,6 +240,162 @@ def test_four_byok_routes_use_one_fixed_endpoint_model_without_response_schema( assert api_key not in persisted +def test_byok_model_mode_uses_one_compact_action_call_then_one_answer_call( + tmp_path: Path, +) -> None: + responses = [ + HttpResponse( + 200, + json.dumps( + {"choices": [{"message": {"content": "generate_answer"}}]} + ).encode(), + ), + success_response(), + ] + http = RecordingHttpClient(callback=lambda: responses.pop(0)) + app, client, _, conversation_id = authenticated_app( + tmp_path, + http, + agent_decision_mode="model", + ) + key = "sk-deepseek-action-private" + assert client.put( + "/api/v1/model-credentials/deepseek", + json=credential_payload("deepseek", key), + ).status_code == 200 + + payload = workflow_request( + conversation_id, "deepseek", "deepseek-v4-flash" + ) + payload.update( + { + "workflow_type": "exam_review", + "user_input": "结合历年卷,帮我总结一份复习大纲", + "workflow_payload": { + "syllabus": "行列式、矩阵、秩、方程组、特征值和二次型", + "exam_date": "2026-08-29", + "available_hours": 12, + "goals": ["90+"], + "weak_topics": ["公式记不住"], + }, + } + ) + response = client.post("/api/v1/workflow-runs", json=payload) + + assert response.status_code == 201, response.text + assert len(http.calls) == 2 + action_call, answer_call = http.calls + assert action_call["url"] == "https://api.deepseek.com/chat/completions" + assert action_call["payload"]["max_tokens"] == 16 + assert action_call["payload"]["temperature"] == 0 + assert action_call["payload"]["model"] == "deepseek-v4-flash" + action_body = json.dumps(action_call["payload"], ensure_ascii=False) + assert "课程资料候选" not in action_body + assert key not in action_body + assert answer_call["payload"]["max_tokens"] == 12288 + assert answer_call["payload"]["temperature"] == 0.2 + + result = response.json() + metrics = next( + event["result"] + for event in result["trace"] + if event["node"] == "byok_model" + ) + assert metrics["decision_call_count"] == 1 + assert metrics["model_action_accepted_count"] == 1 + assert metrics["decision_fallback_count"] == 0 + assert metrics["action_rejection_count"] == 0 + assert metrics["answer_call_count"] == 1 + assert key not in response.text + + +@pytest.mark.parametrize( + ("raw_action", "expected_retrieval_calls", "accepted", "fallbacks"), + [ + ("retrieve_with_query_rewrite", 2, 1, 0), + ("先检索更多资料再回答", 1, 0, 1), + ], +) +def test_byok_action_rewrite_and_parse_fallback_remain_bounded( + tmp_path: Path, + raw_action: str, + expected_retrieval_calls: int, + accepted: int, + fallbacks: int, +) -> None: + class CountingRetrieval: + def __init__(self) -> None: + self.calls: list[str] = [] + + def is_course_available(self, course_id: str) -> bool: + return course_id == "linear_algebra" + + def search(self, course_ids: list[str], query: str) -> RetrievalBatch: + assert course_ids == ["linear_algebra"] + self.calls.append(query) + ordinal = len(self.calls) + source = RetrievedSource( + chunk_id=f"linear_algebra:byok-action:p{ordinal}", + course_id="linear_algebra", + source_id=f"byok-action-{ordinal}", + source_title=f"历年卷资料 {ordinal}", + text="此处是只允许进入回答调用、不能进入 Action 请求的证据正文。", + locator_type="page", + locator_start=ordinal, + locator_end=ordinal, + question_id=None, + heading_path=(), + ) + return RetrievalBatch((source,), "byok-action-corpus", "byok-action-pack") + + responses = [ + HttpResponse( + 200, + json.dumps( + {"choices": [{"message": {"content": raw_action}}]}, + ensure_ascii=False, + ).encode(), + ), + success_response(), + ] + http = RecordingHttpClient(callback=lambda: responses.pop(0)) + app, client, _, conversation_id = authenticated_app( + tmp_path, + http, + agent_decision_mode="model", + ) + retrieval = CountingRetrieval() + app.state.service.retrieval = retrieval + key = "sk-bounded-action-private" + assert client.put( + "/api/v1/model-credentials/deepseek", + json=credential_payload("deepseek", key), + ).status_code == 200 + + response = client.post( + "/api/v1/workflow-runs", + json=workflow_request( + conversation_id, "deepseek", "deepseek-v4-flash" + ), + ) + + assert response.status_code == 201, response.text + assert len(http.calls) == 2 + assert len(retrieval.calls) == expected_retrieval_calls + action_body = json.dumps(http.calls[0]["payload"], ensure_ascii=False) + assert "不能进入 Action 请求" not in action_body + metrics = next( + event["result"] + for event in response.json()["trace"] + if event["node"] == "byok_model" + ) + assert metrics["decision_call_count"] == 1 + assert metrics["model_action_accepted_count"] == accepted + assert metrics["decision_fallback_count"] == fallbacks + assert metrics["answer_call_count"] == 1 + assert key not in response.text + + def test_byok_accepts_a_plain_text_complex_answer_without_retry(tmp_path: Path) -> None: plain_text = ( "先通过初等行变换把矩阵化为阶梯形,再数每一行的首个非零元。" @@ -224,7 +413,8 @@ def test_byok_accepts_a_plain_text_complex_answer_without_retry(tmp_path: Path) _, client, _, conversation_id = authenticated_app(tmp_path, http) key = "sk-deepseek-plain-text" assert client.put( - "/api/v1/model-credentials/deepseek", json={"api_key": key} + "/api/v1/model-credentials/deepseek", + json=credential_payload("deepseek", key), ).status_code == 200 response = client.post( @@ -256,6 +446,9 @@ def test_cancel_during_key_load_prevents_the_first_byok_provider_call( release_key_load = Event() class BlockingCredentialManager: + def __init__(self, delegate): + self.get_connection = delegate.get_connection + def load_api_key(self, principal, provider_id): del principal, provider_id key_load_entered.set() @@ -267,16 +460,22 @@ class RecordingByokModel: def __init__(self) -> None: self.calls = 0 - def generate(self, *, api_key, request, sources, history=()): - del api_key, request, sources, history + def generate(self, *, api_key, connection, request, sources, history=(), cancel_check=None): + del api_key, connection, request, sources, history, cancel_check self.calls += 1 return GeneratedAnswer(repository_answer="不得调用供应商。") app, client, token, conversation_id = authenticated_app(tmp_path, None) + assert client.put( + "/api/v1/model-credentials/openrouter", + json=credential_payload("openrouter", "sk-blocking"), + ).status_code == 200 principal = app.state.repository.authenticate_session(token) assert principal is not None model = RecordingByokModel() - app.state.service.credential_manager = BlockingCredentialManager() + app.state.service.credential_manager = BlockingCredentialManager( + app.state.service.credential_manager + ) app.state.service.byok_model = model request = WorkflowRunRequest.model_validate( workflow_request( @@ -314,7 +513,8 @@ def test_arbitrary_byok_model_is_rejected_before_decryption_or_http( http = RecordingHttpClient() app, client, _, conversation_id = authenticated_app(tmp_path, http) assert client.put( - "/api/v1/model-credentials/zhipu", json={"api_key": "sk-zhipu"} + "/api/v1/model-credentials/zhipu", + json=credential_payload("zhipu", "sk-zhipu"), ).status_code == 200 payload = workflow_request(conversation_id, "zhipu", "glm-5.3") response = client.post("/api/v1/workflow-runs", json=payload) @@ -344,7 +544,8 @@ def test_control_characters_are_rejected_before_storage_or_provider_http( app, client, _, conversation_id = authenticated_app(tmp_path, http) saved = client.put( - "/api/v1/model-credentials/openrouter", json={"api_key": api_key} + "/api/v1/model-credentials/openrouter", + json=credential_payload("openrouter", api_key), ) assert saved.status_code == 422 @@ -384,7 +585,8 @@ def test_missing_key_and_upstream_failure_persist_sanitized_failed_attempts( api_key = "sk-upstream-secret" assert client.put( - "/api/v1/model-credentials/openrouter", json={"api_key": api_key} + "/api/v1/model-credentials/openrouter", + json=credential_payload("openrouter", api_key), ).status_code == 200 failed = client.post("/api/v1/workflow-runs", json=request) assert failed.status_code == 502 @@ -394,7 +596,9 @@ def test_missing_key_and_upstream_failure_persist_sanitized_failed_attempts( assert api_key not in failed.text history = client.get(f"/api/v1/conversations/{conversation_id}").json() - assert len(history["runs"]) == 2 + # A missing connection is rejected before a workflow run is created. Only + # the actual upstream attempt is persisted as a failed run. + assert len(history["runs"]) == 1 for attempt in history["runs"]: result = attempt["result"] assert result["run_status"] == "failed" @@ -442,7 +646,8 @@ def test_user_key_permission_credit_and_rate_errors_are_safe( http = RecordingHttpClient(HttpResponse(upstream_status, private_body.encode())) _, client, _, conversation_id = authenticated_app(tmp_path, http) assert client.put( - "/api/v1/model-credentials/zhipu", json={"api_key": key} + "/api/v1/model-credentials/zhipu", + json=credential_payload("zhipu", key), ).status_code == 200 response = client.post( @@ -482,7 +687,8 @@ def timeout_then_succeed() -> HttpResponse: _, client, _, conversation_id = authenticated_app(tmp_path, http) key = "sk-private-retry" assert client.put( - "/api/v1/model-credentials/deepseek", json={"api_key": key} + "/api/v1/model-credentials/deepseek", + json=credential_payload("deepseek", key), ).status_code == 200 response = client.post( @@ -492,7 +698,9 @@ def timeout_then_succeed() -> HttpResponse: assert response.status_code == 201, response.text assert len(http.calls) == 2 - assert {call["url"] for call in http.calls} == {DEEPSEEK_BYOK_ENDPOINT} + assert {call["url"] for call in http.calls} == { + "https://api.deepseek.com/chat/completions" + } assert {call["payload"]["model"] for call in http.calls} == { "deepseek-v4-flash" } @@ -527,7 +735,8 @@ def invalid_then_succeed() -> HttpResponse: _, client, _, conversation_id = authenticated_app(tmp_path, http) key = "sk-private-invalid-retry" assert client.put( - "/api/v1/model-credentials/zhipu", json={"api_key": key} + "/api/v1/model-credentials/zhipu", + json=credential_payload("zhipu", key), ).status_code == 200 response = client.post( @@ -537,7 +746,9 @@ def invalid_then_succeed() -> HttpResponse: assert response.status_code == 201, response.text assert len(http.calls) == 2 - assert {call["url"] for call in http.calls} == {ZHIPU_BYOK_ENDPOINT} + assert {call["url"] for call in http.calls} == { + "https://open.bigmodel.cn/api/paas/v4/chat/completions" + } assert {call["payload"]["model"] for call in http.calls} == {"glm-5.2"} assert {call["headers"]["Authorization"] for call in http.calls} == { f"Bearer {key}" @@ -552,7 +763,8 @@ def test_byok_invalid_response_does_not_retry_past_soft_runtime_budget( _, client, _, conversation_id = authenticated_app(tmp_path, http) key = "sk-private-soft-runtime" assert client.put( - "/api/v1/model-credentials/deepseek", json={"api_key": key} + "/api/v1/model-credentials/deepseek", + json=credential_payload("deepseek", key), ).status_code == 200 monkeypatch.setattr( AgentBudget, @@ -580,7 +792,8 @@ def test_logout_during_provider_call_prevents_late_success_or_failed_history( http = RecordingHttpClient() app, client, token, conversation_id = authenticated_app(tmp_path, http) assert client.put( - "/api/v1/model-credentials/deepseek", json={"api_key": "sk-race"} + "/api/v1/model-credentials/deepseek", + json=credential_payload("deepseek", "sk-race"), ).status_code == 200 def revoke_during_call() -> HttpResponse: @@ -612,7 +825,8 @@ def test_test_profile_without_injected_byok_transport_fails_closed( app, client, _, conversation_id = authenticated_app(tmp_path, None) key = "sk-no-network" assert client.put( - "/api/v1/model-credentials/openrouter", json={"api_key": key} + "/api/v1/model-credentials/openrouter", + json=credential_payload("openrouter", key), ).status_code == 200 response = client.post( @@ -630,7 +844,7 @@ def test_test_profile_without_injected_byok_transport_fails_closed( def test_padded_key_is_rejected_consistently_on_save_and_generate(tmp_path: Path) -> None: """The shared validator must reject a padded paste on both paths.""" - from scut_senior_api.adapters.byok import ByokGatewayError, FixedByokModelGateway + from scut_senior_api.adapters.byok import ByokGatewayError, OpenAICompatibleByokGateway from scut_senior_api.credentials import validate_user_api_key for padded in (" sk-padded", "sk-padded ", "sk pa dded", "\tsk-tab"): @@ -641,18 +855,38 @@ def test_padded_key_is_rejected_consistently_on_save_and_generate(tmp_path: Path app, client, _, conversation_id = authenticated_app(tmp_path, http) saved = client.put( - "/api/v1/model-credentials/openrouter", json={"api_key": " sk-padded"} + "/api/v1/model-credentials/openrouter", + json=credential_payload("openrouter", " sk-padded"), ) assert saved.status_code == 422 assert saved.json()["error"]["code"] == "invalid_model_credential" - gateway = FixedByokModelGateway(http_client=http) + gateway = OpenAICompatibleByokGateway(http_client=http) request = WorkflowRunRequest.model_validate( workflow_request(conversation_id, "openrouter", "deepseek/deepseek-v4-flash-0731") ) with pytest.raises(ByokGatewayError) as exc_info: + from scut_senior_api.ports import StoredModelCredential + from datetime import UTC, datetime + from uuid import uuid4 + + connection = StoredModelCredential( + user_id=uuid4(), + provider_id="openrouter", + display_name="OpenRouter", + base_url="https://openrouter.ai/api/v1", + model_id="deepseek/deepseek-v4-flash-0731", + protocol="openai_chat_completions", + ciphertext=b"x" * 17, + nonce=b"x" * 12, + algorithm="AES-256-GCM", + key_version=1, + expires_at=datetime.now(UTC), + updated_at=datetime.now(UTC), + ) gateway.generate( api_key="sk-padded ", + connection=connection, request=request, sources=[], ) diff --git a/apps/scut-senior/tests/python/test_eval_runner.py b/apps/scut-senior/tests/python/test_eval_runner.py index 4fe8340d..96686112 100644 --- a/apps/scut-senior/tests/python/test_eval_runner.py +++ b/apps/scut-senior/tests/python/test_eval_runner.py @@ -85,7 +85,11 @@ def test_eval_runner_can_select_model_decision_group(tmp_path: Path) -> None: assert report["agent_decision_mode"] == "model" measured = [line for line in report["cases"] if "runtime_metrics" in line] assert measured - assert measured[0]["runtime_metrics"]["decision_call_count"] == 0 + assert measured[0]["runtime_metrics"]["decision_call_count"] == 1 + # The fixture model returns an answer-shaped payload, not an Action token, + # so the decision is correctly attributed to the deterministic fallback. + assert measured[0]["runtime_metrics"]["model_action_accepted_count"] == 0 + assert measured[0]["runtime_metrics"]["decision_fallback_count"] == 1 def test_eval_runner_cli_writes_report_and_exit_code_reflects_failures( diff --git a/apps/scut-senior/tests/python/test_model_credentials.py b/apps/scut-senior/tests/python/test_model_credentials.py index 7aa7c83f..e041225a 100644 --- a/apps/scut-senior/tests/python/test_model_credentials.py +++ b/apps/scut-senior/tests/python/test_model_credentials.py @@ -1,6 +1,7 @@ from __future__ import annotations import base64 +import shutil import sqlite3 from datetime import UTC, datetime, timedelta from pathlib import Path @@ -15,13 +16,35 @@ CREDENTIAL_ALGORITHM, CredentialCipher, CredentialDecryptionError, + EncryptedCredential, ) +from scut_senior_api.adapters.sqlite import SQLiteWorkflowRepository from scut_senior_api.main import create_app +from scut_senior_api.paths import MIGRATION_ROOT MASTER_KEY_BYTES = bytes(range(32)) MASTER_KEY_B64 = base64.b64encode(MASTER_KEY_BYTES).decode("ascii") -PROVIDERS = ("openrouter", "deepseek", "siliconflow", "zhipu") + + +def connection_payload( + api_key: str, + *, + display_name: str = "DeepSeek", + base_url: str = "https://api.deepseek.com", + model_id: str = "deepseek-v4-flash", +) -> dict[str, str]: + return { + "api_key": api_key, + "display_name": display_name, + "base_url": base_url, + "model_id": model_id, + "protocol": "openai_chat_completions", + } + + +def credential_upsert(api_key: str) -> ModelCredentialUpsert: + return ModelCredentialUpsert.model_validate(connection_payload(api_key)) class MutableClock: @@ -152,7 +175,11 @@ def test_mock_identity_cannot_manage_credentials_even_with_a_test_master_key( assert all(item["enabled"] is False for item in models["byok_providers"]) for method, url, payload in ( ("get", "/api/v1/model-credentials", None), - ("put", "/api/v1/model-credentials/openrouter", {"api_key": "secret"}), + ( + "put", + "/api/v1/model-credentials/openrouter", + connection_payload("secret"), + ), ("delete", "/api/v1/model-credentials/openrouter", None), ): response = getattr(client, method)(url, json=payload) if payload else getattr(client, method)(url) @@ -170,27 +197,32 @@ def test_crud_returns_only_masked_metadata_and_database_contains_only_aead( catalog = client.get("/api/v1/models").json() assert catalog["byok_available"] is True - assert [item["provider_id"] for item in catalog["byok_providers"]] == list(PROVIDERS) - assert all(item["enabled"] is True for item in catalog["byok_providers"]) + # User-defined connections are private account data and are not published + # through the global model catalog. + assert catalog["byok_providers"] == [] initial = client.get("/api/v1/model-credentials") assert initial.status_code == 200 assert initial.headers["cache-control"] == "private, no-store" - assert [item["provider_id"] for item in initial.json()] == list(PROVIDERS) - assert all(item["configured"] is False for item in initial.json()) - assert all(item["writable"] is False for item in initial.json()) - assert all(item["source"] == "user_key" for item in initial.json()) - assert all(item["updated_at"] is None for item in initial.json()) + assert initial.json() == [] saved = client.put( "/api/v1/model-credentials/openrouter", - json={"api_key": secret}, + json=connection_payload( + secret, + display_name="OpenRouter DeepSeek", + base_url="https://openrouter.ai/api/v1/", + model_id="deepseek/deepseek-v4-flash-0731", + ), ) assert saved.status_code == 200, saved.text assert saved.headers["cache-control"] == "private, no-store" assert saved.json() == { "provider_id": "openrouter", + "display_name": "OpenRouter DeepSeek", + "base_url": "https://openrouter.ai/api/v1", "model_id": "deepseek/deepseek-v4-flash-0731", + "protocol": "openai_chat_completions", "configured": True, "masked_key": "••••••••", "expires_at": saved.json()["expires_at"], @@ -231,7 +263,8 @@ def test_replace_restart_same_session_and_new_session_isolation(tmp_path: Path) for secret in ("sk-old", "sk-new"): response = client.put( - "/api/v1/model-credentials/deepseek", json={"api_key": secret} + "/api/v1/model-credentials/deepseek", + json=connection_payload(secret), ) assert response.status_code == 200 with sqlite3.connect(database_path) as connection: @@ -264,6 +297,98 @@ def test_replace_restart_same_session_and_new_session_isolation(tmp_path: Path) )["configured"] is True +def test_0018_preserves_existing_ciphertext_and_adds_connection_profile( + tmp_path: Path, +) -> None: + migration_root = tmp_path / "migrations-through-0017" + migration_root.mkdir() + for migration in sorted(MIGRATION_ROOT.glob("*.sql")): + if migration.name >= "0018_custom_byok_connections.sql": + break + shutil.copy2(migration, migration_root / migration.name) + + database_path = tmp_path / "upgrade.db" + legacy = SQLiteWorkflowRepository( + database_path, migration_root=migration_root + ) + user_id = legacy.upsert_github_user( + GitHubUserProfile(404, "upgrade-user") + ) + session = legacy.issue_session(user_id) + cipher = CredentialCipher(MASTER_KEY_BYTES, 7) + encrypted = cipher.encrypt( + "sk-preserved", + user_id=user_id, + provider_id="deepseek", + ) + now = datetime.now(UTC) + with legacy.connect() as connection: + connection.execute( + """ + INSERT INTO model_credentials ( + user_id, provider_id, ciphertext, nonce, algorithm, + key_version, created_at, updated_at, expires_at + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) + """, + ( + str(user_id), + "deepseek", + sqlite3.Binary(encrypted.ciphertext), + sqlite3.Binary(encrypted.nonce), + encrypted.algorithm, + encrypted.key_version, + now.isoformat(), + now.isoformat(), + session.expires_at.isoformat(), + ), + ) + + upgraded = SQLiteWorkflowRepository(database_path) + record = upgraded.get_model_credential(user_id, "deepseek") + assert record is not None + assert record.display_name == "DeepSeek" + assert record.base_url == "https://api.deepseek.com" + assert record.model_id == "deepseek-v4-flash" + assert record.protocol == "openai_chat_completions" + assert record.ciphertext == encrypted.ciphertext + assert record.nonce == encrypted.nonce + assert cipher.decrypt( + EncryptedCredential( + ciphertext=record.ciphertext, + nonce=record.nonce, + key_version=record.key_version, + algorithm=record.algorithm, + ), + user_id=user_id, + provider_id="deepseek", + ) == "sk-preserved" + + with upgraded.connect() as connection: + with pytest.raises(sqlite3.IntegrityError): + connection.execute( + """ + INSERT INTO model_credentials ( + user_id, provider_id, display_name, base_url, model_id, + protocol, ciphertext, nonce, algorithm, key_version, + created_at, updated_at, expires_at + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + """, + ( + str(user_id), + "bad--id", + "Bad", + "https://models.example.com/v1", + "model", + "openai_chat_completions", + sqlite3.Binary(b"x" * 17), + sqlite3.Binary(b"n" * 12), + "AES-256-GCM", + 1, + now.isoformat(), + now.isoformat(), + session.expires_at.isoformat(), + ), + ) def test_logout_delete_expiry_and_restore_physically_remove_credentials( tmp_path: Path, ) -> None: @@ -274,13 +399,25 @@ def test_logout_delete_expiry_and_restore_physically_remove_credentials( client, _ = authenticated_client(app) assert client.put( - "/api/v1/model-credentials/siliconflow", json={"api_key": "sk-life"} + "/api/v1/model-credentials/siliconflow", + json=connection_payload( + "sk-life", + display_name="SiliconFlow", + base_url="https://api.siliconflow.cn/v1", + model_id="Pro/zai-org/GLM-4.7", + ), ).status_code == 200 deleted = client.delete("/api/v1/model-credentials/siliconflow") assert deleted.status_code == 204 assert deleted.headers["cache-control"] == "private, no-store" assert client.put( - "/api/v1/model-credentials/zhipu", json={"api_key": "sk-life-2"} + "/api/v1/model-credentials/zhipu", + json=connection_payload( + "sk-life-2", + display_name="Zhipu", + base_url="https://open.bigmodel.cn/api/paas/v4", + model_id="glm-5.2", + ), ).status_code == 200 assert client.post("/api/v1/auth/logout").status_code == 200 with sqlite3.connect(database_path) as connection: @@ -291,7 +428,13 @@ def test_logout_delete_expiry_and_restore_physically_remove_credentials( expiring, _ = authenticated_client(app, github_id=202, login="expiring") assert expiring.put( - "/api/v1/model-credentials/openrouter", json={"api_key": "sk-expire"} + "/api/v1/model-credentials/openrouter", + json=connection_payload( + "sk-expire", + display_name="OpenRouter", + base_url="https://openrouter.ai/api/v1", + model_id="deepseek/deepseek-v4-flash-0731", + ), ).status_code == 200 clock.advance(timedelta(days=7)) assert expiring.get("/api/v1/model-credentials").status_code == 401 @@ -303,7 +446,8 @@ def test_logout_delete_expiry_and_restore_physically_remove_credentials( fresh, _ = authenticated_client(app, github_id=303, login="backup") assert fresh.put( - "/api/v1/model-credentials/deepseek", json={"api_key": "sk-backup"} + "/api/v1/model-credentials/deepseek", + json=connection_payload("sk-backup"), ).status_code == 200 backup_path = tmp_path / "backup.db" app.state.repository.backup_to(backup_path) @@ -321,24 +465,25 @@ def test_logout_delete_expiry_and_restore_physically_remove_credentials( ).fetchone()[0] == 3 -def test_provider_and_base_url_contract_rejects_secret_without_reflection( +def test_connection_id_and_base_url_contract_rejects_secret_without_reflection( tmp_path: Path, ) -> None: app = create_app(byok_settings(tmp_path / "whitelist.db")) client, _ = authenticated_client(app) secret = "sk-never-reflect" - unknown = client.put( - "/api/v1/model-credentials/not-a-provider", json={"api_key": secret} + invalid_id = client.put( + "/api/v1/model-credentials/Not_Allowed", + json=connection_payload(secret), ) - assert unknown.status_code == 422 - assert secret not in unknown.text - extra = client.put( + assert invalid_id.status_code == 422 + assert secret not in invalid_id.text + invalid_url = client.put( "/api/v1/model-credentials/openrouter", - json={"api_key": secret, "base_url": "https://evil.invalid/v1"}, + json=connection_payload(secret, base_url="http://127.0.0.1/v1"), ) - assert extra.status_code == 422 - assert secret not in extra.text + assert invalid_url.status_code == 422 + assert secret not in invalid_url.text with sqlite3.connect(app.state.settings.database_path) as connection: assert connection.execute( "SELECT COUNT(*) FROM model_credentials" @@ -356,7 +501,7 @@ def test_stale_principal_is_revalidated_before_credential_write(tmp_path: Path) app.state.credential_manager.replace( principal, "openrouter", - ModelCredentialUpsert(api_key="sk-too-late"), + credential_upsert("sk-too-late"), ) with sqlite3.connect(app.state.settings.database_path) as connection: assert connection.execute( @@ -376,7 +521,7 @@ def test_revoke_after_replace_persists_per_user_credential(tmp_path: Path) -> No status = app.state.credential_manager.replace( principal, "openrouter", - ModelCredentialUpsert(api_key="sk-race"), + credential_upsert("sk-race"), ) assert status.configured is True # Cross-device: revoking the session that wrote the key must not clear the diff --git a/apps/scut-senior/tests/python/test_openrouter_models.py b/apps/scut-senior/tests/python/test_openrouter_models.py index 3696a506..6ccc0fab 100644 --- a/apps/scut-senior/tests/python/test_openrouter_models.py +++ b/apps/scut-senior/tests/python/test_openrouter_models.py @@ -12,9 +12,11 @@ from scut_senior_api.adapters.openrouter import ( OPENROUTER_CHAT_COMPLETIONS_URL, HttpResponse, + OpenRouterModelGateway, _quota_reset_at, ) from scut_senior_api.config import Settings, UnsafeRuntimeConfiguration +from scut_senior_api.contracts import WorkflowRunRequest from scut_senior_api.byok_catalog import BYOK_CATALOG_VERSION from scut_senior_api.main import create_app from scut_senior_api.model_catalog import ( @@ -22,6 +24,7 @@ ModelHealthResult, PLATFORM_DAILY_QUOTA_EXHAUSTED_MESSAGE, ) +from scut_senior_api.ports import RetrievedSource MODEL_FIXTURES = [ @@ -242,7 +245,7 @@ def _client_with_conversation( return client, conversation.json()["conversation_id"] -def test_model_catalog_returns_fixed_openrouter_and_zhipu_entries( +def test_model_catalog_returns_platform_models_without_private_byok_connections( tmp_path: Path, ) -> None: client = TestClient( @@ -271,23 +274,7 @@ def test_model_catalog_returns_fixed_openrouter_and_zhipu_entries( assert body["health_checked_at"] is None assert body["byok_available"] is False assert body["byok_catalog_version"] == BYOK_CATALOG_VERSION - assert [item["provider_id"] for item in body["byok_providers"]] == [ - "openrouter", - "deepseek", - "siliconflow", - "zhipu", - ] - assert all(item["enabled"] is False for item in body["byok_providers"]) - assert all( - item["models_confirmed"] is True for item in body["byok_providers"] - ) - assert [item["models"][0]["model_id"] for item in body["byok_providers"]] == [ - "deepseek/deepseek-v4-flash-0731", - "deepseek-v4-flash", - "Pro/zai-org/GLM-4.7", - "glm-5.2", - ] - assert all(len(item["models"]) == 1 for item in body["byok_providers"]) + assert body["byok_providers"] == [] assert body["quota_notice"] assert body["quota_exhausted_message"] == PLATFORM_DAILY_QUOTA_EXHAUSTED_MESSAGE assert len(body["models"]) == 6 @@ -523,6 +510,52 @@ def test_openrouter_uses_one_exact_model_without_a_structured_output_contract( assert model_event["result"]["real_model_called"] is True +def test_openrouter_action_decision_uses_compact_bounded_prompt() -> None: + selected_model = "google/gemma-4-26b-a4b-it:free" + http_client = RecordingHttpClient( + _chat_completion_response("retrieve_with_query_rewrite") + ) + gateway = OpenRouterModelGateway( + api_key="server-only-secret", + allowed_model_ids={selected_model}, + http_client=http_client, + ) + request = WorkflowRunRequest.model_validate( + _workflow_request( + "11111111-1111-1111-1111-111111111111", selected_model + ) + ) + source = RetrievedSource( + chunk_id="linear_algebra:compact:p1", + course_id="linear_algebra", + source_id="compact-source", + source_title="线性代数历年卷", + text="不应进入决策请求的完整私有证据正文", + locator_type="page", + locator_start=1, + locator_end=1, + question_id=None, + heading_path=(), + ) + + action = gateway.decide_action( + request, + object(), + "post_retrieval", + sources=(source,), + ) + + assert action == "retrieve_with_query_rewrite" + assert len(http_client.calls) == 1 + payload = http_client.calls[0]["payload"] + assert payload["max_tokens"] == 16 + assert payload["temperature"] == 0 + serialized = json.dumps(payload, ensure_ascii=False) + assert "请解释矩阵的秩" in serialized + assert "线性代数历年卷" in serialized + assert "不应进入决策请求的完整私有证据正文" not in serialized + + def test_openrouter_accepts_a_plain_text_complex_answer_without_retry( tmp_path: Path, ) -> None: diff --git a/apps/scut-senior/tests/python/test_sqlite_auth.py b/apps/scut-senior/tests/python/test_sqlite_auth.py index 21d2abac..5649d4e2 100644 --- a/apps/scut-senior/tests/python/test_sqlite_auth.py +++ b/apps/scut-senior/tests/python/test_sqlite_auth.py @@ -75,6 +75,7 @@ def test_auth_migrations_are_ledgered_and_sqlite_runtime_pragmas_are_enabled( "0015_user_preferences.sql", "0016_private_knowledge.sql", "0017_contribution_metadata_attachments.sql", + "0018_custom_byok_connections.sql", ] assert connection.execute("PRAGMA foreign_keys").fetchone()[0] == 1 assert connection.execute("PRAGMA journal_mode").fetchone()[0] == "wal" @@ -257,13 +258,18 @@ def test_legacy_0004_schema_is_rebuilt_without_removed_providers_or_extra_column connection.execute( """ INSERT INTO model_credentials ( - user_id, provider_id, ciphertext, nonce, algorithm, + user_id, provider_id, display_name, base_url, model_id, protocol, + ciphertext, nonce, algorithm, key_version, created_at, updated_at, expires_at - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) """, ( str(user_id), "deepseek", + "DeepSeek", + "https://api.deepseek.com", + "deepseek-v4-flash", + "openai_chat_completions", sqlite3.Binary(bytes([1]) * 17), sqlite3.Binary(bytes([1]) * 12), "AES-256-GCM", diff --git a/apps/scut-senior/tests/python/test_workflow_focus.py b/apps/scut-senior/tests/python/test_workflow_focus.py index 99507d4b..6c96bac4 100644 --- a/apps/scut-senior/tests/python/test_workflow_focus.py +++ b/apps/scut-senior/tests/python/test_workflow_focus.py @@ -9,7 +9,6 @@ from scut_senior_api.adapters.byok import _build_byok_request from scut_senior_api.adapters.mock import MockModelGateway from scut_senior_api.adapters.openrouter import _build_structured_request -from scut_senior_api.byok_catalog import ByokProviderCatalog from scut_senior_api.config import Settings from scut_senior_api.contracts import WorkflowRunRequest from scut_senior_api.main import create_app @@ -143,17 +142,13 @@ def test_openrouter_and_byok_share_the_same_workflow_focus_directive( request = _request(workflow_type, payload, user_input=user_input) focus = build_workflow_focus(request) - byok_entry = ByokProviderCatalog().resolve_model( - "openrouter", "deepseek/deepseek-v4-flash-0731" - ) for provider_payload in ( _build_structured_request(request, []), _build_byok_request( request, [], - max_tokens=byok_entry.default_max_tokens, - temperature=byok_entry.default_temperature, - reasoning_effort=byok_entry.reasoning_effort, + max_tokens=12288, + temperature=0.2, ), ): messages = provider_payload["messages"] @@ -182,12 +177,9 @@ def test_answer_mode_and_tone_change_both_provider_prompts_and_mock_output() -> tone="senior_student", ) - byok_entry = ByokProviderCatalog().resolve_model( - "openrouter", "deepseek/deepseek-v4-flash-0731" - ) byok_args = { - "max_tokens": byok_entry.default_max_tokens, - "temperature": byok_entry.default_temperature, + "max_tokens": 12288, + "temperature": 0.2, } for builder in (_build_structured_request, _build_byok_request): concise_payload = ( diff --git a/apps/scut-senior/web/src/__tests__/api.test.ts b/apps/scut-senior/web/src/__tests__/api.test.ts index 50fb929a..12cfad78 100644 --- a/apps/scut-senior/web/src/__tests__/api.test.ts +++ b/apps/scut-senior/web/src/__tests__/api.test.ts @@ -535,7 +535,10 @@ describe("BYOK credential API", () => { it("查询、保存和删除只走固定凭据路由并携带会话 Cookie", async () => { const configured = { provider_id: "openrouter", + display_name: "OpenRouter DeepSeek", + base_url: "https://openrouter.ai/api/v1", model_id: "deepseek/deepseek-v4-flash-0731", + protocol: "openai_chat_completions" as const, configured: true, masked_key: "sk-or-****1234", expires_at: "2026-08-20T08:00:00Z", @@ -544,6 +547,13 @@ describe("BYOK credential API", () => { updated_at: "2026-08-17T08:00:00Z", }; const dummyKey = "test-only-openrouter-key"; + const connectionInput = { + api_key: dummyKey, + display_name: configured.display_name, + base_url: configured.base_url, + model_id: configured.model_id, + protocol: configured.protocol, + }; const fetchMock = vi .fn() .mockResolvedValueOnce( @@ -562,7 +572,9 @@ describe("BYOK credential API", () => { vi.stubGlobal("fetch", fetchMock); await expect(getByokCredentials()).resolves.toEqual([configured]); - await expect(saveByokCredential("openrouter", dummyKey)).resolves.toEqual(configured); + await expect( + saveByokCredential("openrouter", connectionInput), + ).resolves.toEqual(configured); await expect(deleteByokCredential("openrouter")).resolves.toBeUndefined(); expect(fetchMock).toHaveBeenNthCalledWith( @@ -576,7 +588,7 @@ describe("BYOK credential API", () => { expect.objectContaining({ method: "PUT", credentials: "include", - body: JSON.stringify({ api_key: dummyKey }), + body: JSON.stringify(connectionInput), }), ); expect(fetchMock).toHaveBeenNthCalledWith( diff --git a/apps/scut-senior/web/src/__tests__/byokCatalog.test.ts b/apps/scut-senior/web/src/__tests__/byokCatalog.test.ts index 19e1a384..54921e12 100644 --- a/apps/scut-senior/web/src/__tests__/byokCatalog.test.ts +++ b/apps/scut-senior/web/src/__tests__/byokCatalog.test.ts @@ -1,79 +1,14 @@ import { describe, expect, it } from "vitest"; -import type { ByokProviderCatalogItem } from "../contracts"; import { BYOK_CATALOG_VERSION, - FROZEN_BYOK_PROVIDERS, isCurrentByokCatalogVersion, - mergeByokProvidersForDisplay, } from "../byokCatalog"; -describe("frozen BYOK display catalog", () => { - it("fail-closed fallback 始终只展示四家固定供应商与唯一模型", () => { - expect( - FROZEN_BYOK_PROVIDERS.map((provider) => ({ - provider_id: provider.provider_id, - enabled: provider.enabled, - model_id: provider.models[0]?.model_id, - custom_base_url_allowed: provider.custom_base_url_allowed, - })), - ).toEqual([ - { - provider_id: "openrouter", - enabled: false, - model_id: "deepseek/deepseek-v4-flash-0731", - custom_base_url_allowed: false, - }, - { - provider_id: "deepseek", - enabled: false, - model_id: "deepseek-v4-flash", - custom_base_url_allowed: false, - }, - { - provider_id: "siliconflow", - enabled: false, - model_id: "Pro/zai-org/GLM-4.7", - custom_base_url_allowed: false, - }, - { - provider_id: "zhipu", - enabled: false, - model_id: "glm-5.2", - custom_base_url_allowed: false, - }, - ]); - }); - - it("仅用服务端同 ID 条目覆盖启用状态,缺失条目继续禁用展示", () => { - const serverOpenRouter = { ...FROZEN_BYOK_PROVIDERS[0]!, enabled: true }; - const displayed = mergeByokProvidersForDisplay([serverOpenRouter]); - - expect(displayed).toHaveLength(4); - expect(displayed[0]?.enabled).toBe(true); - expect(displayed.slice(1).every((provider) => !provider.enabled)).toBe(true); - }); - - it("拒绝同 ID 下篡改模型、URL 策略或额外字段的旧目录", () => { - const frozen = FROZEN_BYOK_PROVIDERS[0]!; - const candidates = [ - { - ...frozen, - enabled: true, - models: [{ ...frozen.models[0]!, model_id: "user-controlled-model" }], - }, - { ...frozen, enabled: true, custom_base_url_allowed: true }, - { ...frozen, enabled: true, base_url: "https://evil.invalid/v1" }, - ] as unknown as ByokProviderCatalogItem[]; - - for (const candidate of candidates) { - expect(mergeByokProvidersForDisplay([candidate])[0]).toEqual(frozen); - expect(mergeByokProvidersForDisplay([candidate])[0]?.enabled).toBe(false); - } - }); - - it("只信任当前 v4 目录版本", () => { +describe("BYOK connection capability version", () => { + it("只信任当前自定义连接协议版本", () => { + expect(BYOK_CATALOG_VERSION).toBe("byok-connections-v1"); expect(isCurrentByokCatalogVersion(BYOK_CATALOG_VERSION)).toBe(true); - expect(isCurrentByokCatalogVersion("byok-models-v3")).toBe(false); - expect(isCurrentByokCatalogVersion("byok-models-v4-fail-closed")).toBe(false); + expect(isCurrentByokCatalogVersion("byok-models-v4")).toBe(false); + expect(isCurrentByokCatalogVersion("byok-connections-v2")).toBe(false); }); }); diff --git a/apps/scut-senior/web/src/__tests__/modelSelection.test.ts b/apps/scut-senior/web/src/__tests__/modelSelection.test.ts index ad7859f1..d5cf7c5f 100644 --- a/apps/scut-senior/web/src/__tests__/modelSelection.test.ts +++ b/apps/scut-senior/web/src/__tests__/modelSelection.test.ts @@ -1,7 +1,6 @@ import { describe, expect, it } from "vitest"; import type { ByokCredentialStatus, - ByokProviderCatalogItem, ModelCatalogItem, } from "../contracts"; import { @@ -101,45 +100,13 @@ describe("modelsForRuntime", () => { }); }); -const byokProviders: ByokProviderCatalogItem[] = [ - { - provider_id: "openrouter", - company: "OpenRouter", - display_name: "OpenRouter", - enabled: true, - models_confirmed: true, - models: [ - { - model_id: "deepseek/deepseek-v4-flash-0731", - company: "DeepSeek", - display_name: "DeepSeek V4 Flash", - }, - ], - custom_base_url_allowed: false, - endpoint_policy: "fixed_provider_endpoint", - }, - { - provider_id: "siliconflow", - company: "SiliconFlow", - display_name: "硅基流动", - enabled: false, - models_confirmed: true, - models: [ - { - model_id: "Pro/zai-org/GLM-4.7", - company: "Z.ai", - display_name: "GLM-4.7 Pro", - }, - ], - custom_base_url_allowed: false, - endpoint_policy: "fixed_provider_endpoint", - }, -]; - const byokStatuses: ByokCredentialStatus[] = [ { provider_id: "openrouter", + display_name: "OpenRouter DeepSeek", + base_url: "https://openrouter.ai/api/v1", model_id: "deepseek/deepseek-v4-flash-0731", + protocol: "openai_chat_completions", configured: true, masked_key: "sk-or-****1234", expires_at: "2026-08-20T08:00:00Z", @@ -149,7 +116,10 @@ const byokStatuses: ByokCredentialStatus[] = [ }, { provider_id: "siliconflow", + display_name: "硅基流动", + base_url: "https://api.siliconflow.cn/v1", model_id: "Pro/zai-org/GLM-4.7", + protocol: "openai_chat_completions", configured: true, masked_key: "sk-****5678", expires_at: "2026-08-20T08:00:00Z", @@ -160,33 +130,33 @@ const byokStatuses: ByokCredentialStatus[] = [ ]; describe("configuredByokModelOptions", () => { - it("仅为 enabled 且本会话已配置的供应商生成固定 user_key 模型", () => { - expect(configuredByokModelOptions(byokProviders, byokStatuses)).toEqual([ + it("把账号已保存的自定义连接映射成 user_key 模型", () => { + expect(configuredByokModelOptions(byokStatuses)).toEqual([ expect.objectContaining({ provider_id: "openrouter", model_id: "deepseek/deepseek-v4-flash-0731", model_source: "user_key", - company: "OpenRouter", - display_name: "DeepSeek · DeepSeek V4 Flash", + company: "OpenRouter DeepSeek", + display_name: "deepseek/deepseek-v4-flash-0731", user_selectable: true, }), + expect.objectContaining({ + provider_id: "siliconflow", + model_id: "Pro/zai-org/GLM-4.7", + company: "硅基流动", + }), ]); }); - it("供应商关闭时即使状态声称已配置也不生成模型选项", () => { - expect( - configuredByokModelOptions( - byokProviders.filter((provider) => provider.provider_id === "siliconflow"), - byokStatuses, - ), - ).toEqual([]); + it("没有保存连接时不生成 BYOK 模型", () => { + expect(configuredByokModelOptions([])).toEqual([]); }); - it("凭据状态的模型 ID 与固定目录不一致时保持关闭", () => { - expect( - configuredByokModelOptions(byokProviders, [ - { ...byokStatuses[0]!, model_id: "user-supplied-model" }, - ]), - ).toEqual([]); + it("接受连接自身保存的自定义模型 ID", () => { + const [model] = configuredByokModelOptions([ + { ...byokStatuses[0]!, model_id: "vendor/custom-model" }, + ]); + expect(model?.model_id).toBe("vendor/custom-model"); + expect(model?.provider_id).toBe("openrouter"); }); }); diff --git a/apps/scut-senior/web/src/api.ts b/apps/scut-senior/web/src/api.ts index 950949e4..25faa235 100644 --- a/apps/scut-senior/web/src/api.ts +++ b/apps/scut-senior/web/src/api.ts @@ -1,5 +1,6 @@ import type { AuthUser, + ByokConnectionInput, ByokCredentialStatus, ByokProviderId, ContributionConfirmations, @@ -151,13 +152,13 @@ export async function getByokCredentials(): Promise { export async function saveByokCredential( providerId: ByokProviderId, - apiKey: string, + input: ByokConnectionInput, ): Promise { return apiRequest( `/api/v1/model-credentials/${encodeURIComponent(providerId)}`, { method: "PUT", - body: JSON.stringify({ api_key: apiKey }), + body: JSON.stringify(input), }, ); } diff --git a/apps/scut-senior/web/src/appConfig.ts b/apps/scut-senior/web/src/appConfig.ts index 9fd16900..c5e0ad92 100644 --- a/apps/scut-senior/web/src/appConfig.ts +++ b/apps/scut-senior/web/src/appConfig.ts @@ -1,8 +1,6 @@ import { ApiError } from "./api"; -import { FROZEN_BYOK_PROVIDERS } from "./byokCatalog"; import type { AnswerMode, - ByokProviderId, HelpLevel, ModelCatalog, ModelCatalogItem, @@ -32,16 +30,16 @@ export const FAIL_CLOSED_MODEL_CATALOG: ModelCatalog = { real_platform_default_available: false, health_checked_at: null, byok_available: false, - byok_catalog_version: "byok-models-v4-fail-closed", - byok_providers: FROZEN_BYOK_PROVIDERS, + byok_catalog_version: "byok-connections-unavailable", + byok_providers: [], quota_notice: "模型目录尚未加载;平台与 BYOK 模型请求均保持关闭。", quota_exhausted_message: "今日平台免费额度已用完,第二天再来重试吧!着急请使用你自己的 API Key。", models: [], }; -export function emptyByokKeyDrafts(): Record { - return { openrouter: "", deepseek: "", siliconflow: "", zhipu: "" }; +export function emptyByokKeyDrafts(): Record { + return {}; } export const workflowCopy: Record< diff --git a/apps/scut-senior/web/src/byokCatalog.ts b/apps/scut-senior/web/src/byokCatalog.ts index 690fb4b2..3384510e 100644 --- a/apps/scut-senior/web/src/byokCatalog.ts +++ b/apps/scut-senior/web/src/byokCatalog.ts @@ -1,134 +1,5 @@ -import type { ByokProviderCatalogItem } from "./contracts"; - -export const BYOK_CATALOG_VERSION = "byok-models-v4"; - -export const FROZEN_BYOK_PROVIDERS: ByokProviderCatalogItem[] = [ - { - provider_id: "openrouter", - company: "OpenRouter", - display_name: "OpenRouter", - enabled: false, - models_confirmed: true, - models: [ - { - model_id: "deepseek/deepseek-v4-flash-0731", - company: "DeepSeek", - display_name: "DeepSeek V4 Flash 0731", - }, - ], - custom_base_url_allowed: false, - endpoint_policy: "fixed_provider_endpoint", - }, - { - provider_id: "deepseek", - company: "DeepSeek", - display_name: "DeepSeek", - enabled: false, - models_confirmed: true, - models: [ - { - model_id: "deepseek-v4-flash", - company: "DeepSeek", - display_name: "DeepSeek V4 Flash", - }, - ], - custom_base_url_allowed: false, - endpoint_policy: "fixed_provider_endpoint", - }, - { - provider_id: "siliconflow", - company: "SiliconFlow", - display_name: "硅基流动", - enabled: false, - models_confirmed: true, - models: [ - { - model_id: "Pro/zai-org/GLM-4.7", - company: "Z.ai", - display_name: "GLM-4.7 Pro", - }, - ], - custom_base_url_allowed: false, - endpoint_policy: "fixed_provider_endpoint", - }, - { - provider_id: "zhipu", - company: "Zhipu AI", - display_name: "智谱 AI", - enabled: false, - models_confirmed: true, - models: [ - { - model_id: "glm-5.2", - company: "Zhipu AI", - display_name: "GLM-5.2", - }, - ], - custom_base_url_allowed: false, - endpoint_policy: "fixed_provider_endpoint", - }, -]; - -export function mergeByokProvidersForDisplay( - serverProviders: readonly ByokProviderCatalogItem[], -): ByokProviderCatalogItem[] { - return FROZEN_BYOK_PROVIDERS.map((fallback) => { - const candidate = serverProviders.find( - (provider) => - provider !== null && - typeof provider === "object" && - provider.provider_id === fallback.provider_id, - ); - return candidate && providerMatchesFrozenContract(candidate, fallback) - ? candidate - : fallback; - }); -} +export const BYOK_CATALOG_VERSION = "byok-connections-v1"; export function isCurrentByokCatalogVersion(value: string): boolean { return value === BYOK_CATALOG_VERSION; } - -function hasExactKeys(value: object, expected: readonly string[]): boolean { - const keys = Object.keys(value).sort(); - return keys.length === expected.length && keys.every((key, index) => key === expected[index]); -} - -function providerMatchesFrozenContract( - candidate: ByokProviderCatalogItem, - frozen: ByokProviderCatalogItem, -): boolean { - const providerKeys = [ - "company", - "custom_base_url_allowed", - "display_name", - "enabled", - "endpoint_policy", - "models", - "models_confirmed", - "provider_id", - ].sort(); - const modelKeys = ["company", "display_name", "model_id"].sort(); - const candidateModel = Array.isArray(candidate.models) ? candidate.models[0] : undefined; - const frozenModel = frozen.models[0]; - - return Boolean( - hasExactKeys(candidate, providerKeys) && - typeof candidate.enabled === "boolean" && - candidate.provider_id === frozen.provider_id && - candidate.company === frozen.company && - candidate.display_name === frozen.display_name && - candidate.models_confirmed === true && - candidate.custom_base_url_allowed === false && - candidate.endpoint_policy === "fixed_provider_endpoint" && - Array.isArray(candidate.models) && - candidate.models.length === 1 && - candidateModel && - typeof candidateModel === "object" && - frozenModel && - hasExactKeys(candidateModel, modelKeys) && - candidateModel.model_id === frozenModel.model_id && - candidateModel.company === frozenModel.company && - candidateModel.display_name === frozenModel.display_name, - ); -} diff --git a/apps/scut-senior/web/src/components/ByokCredentialsPanel.vue b/apps/scut-senior/web/src/components/ByokCredentialsPanel.vue index 228a8415..8cec21bb 100644 --- a/apps/scut-senior/web/src/components/ByokCredentialsPanel.vue +++ b/apps/scut-senior/web/src/components/ByokCredentialsPanel.vue @@ -1,23 +1,58 @@ - - diff --git a/apps/scut-senior/web/src/composables/useAppStore.ts b/apps/scut-senior/web/src/composables/useAppStore.ts index 4445622f..fa25c568 100644 --- a/apps/scut-senior/web/src/composables/useAppStore.ts +++ b/apps/scut-senior/web/src/composables/useAppStore.ts @@ -26,7 +26,6 @@ import { } from "../api"; import { isCurrentByokCatalogVersion, - mergeByokProvidersForDisplay, } from "../byokCatalog"; import { canManageByokCredentials } from "../byokSession"; import { @@ -40,9 +39,8 @@ import { import type { AnswerMode, AuthUser, + ByokConnectionInput, ByokCredentialStatus, - ByokProviderCatalogItem, - ByokProviderId, ConversationDetail, ConversationSummary, Course, @@ -179,10 +177,10 @@ function createAppStore() { const historyMessage = ref(""); const historyMessageIsError = ref(false); const byokCredentialStatuses = ref([]); - const byokKeyDrafts = ref>(emptyByokKeyDrafts()); + const byokKeyDrafts = ref>(emptyByokKeyDrafts()); const isLoadingByokCredentials = ref(false); - const savingByokProviderId = ref(""); - const deletingByokProviderId = ref(""); + const savingByokProviderId = ref(""); + const deletingByokProviderId = ref(""); const byokMessage = ref(""); const byokMessageIsError = ref(false); const privateRequestEpoch = createRequestEpoch(); @@ -204,11 +202,6 @@ function createAppStore() { isCurrentByokCatalogVersion(modelCatalog.value.byok_catalog_version) && Array.isArray(modelCatalog.value.byok_providers), ); - const byokProvidersForDisplay = computed(() => - mergeByokProvidersForDisplay( - byokCatalogIsCurrent.value ? modelCatalog.value.byok_providers : [], - ), - ); const byokRuntimeAvailable = computed( () => byokCatalogIsCurrent.value && modelCatalog.value.byok_available, ); @@ -220,8 +213,7 @@ function createAppStore() { modelCatalogLoadSucceeded.value, ), ...configuredByokModelOptions( - byokRuntimeAvailable.value ? byokProvidersForDisplay.value : [], - byokCredentialStatuses.value, + byokRuntimeAvailable.value ? byokCredentialStatuses.value : [], ), ]); const selectedModel = computed(() => @@ -488,13 +480,13 @@ function createAppStore() { return courses.value.find((course) => course.course_id === courseId)?.display_name ?? courseId; } - function byokCredentialStatus(providerId: ByokProviderId): ByokCredentialStatus | null { + function byokCredentialStatus(providerId: string): ByokCredentialStatus | null { return ( byokCredentialStatuses.value.find((status) => status.provider_id === providerId) ?? null ); } - function byokProviderDisabledReason(provider: ByokProviderCatalogItem): string { + function byokProviderDisabledReason(): string { if (!modelCatalogLoadSucceeded.value) { return "模型目录未加载成功,凭据保存保持关闭。"; } @@ -504,29 +496,24 @@ function createAppStore() { if (currentUser.value?.is_mock) { return "BYOK 需要真实 GitHub 登录;Mock 身份只保留入口展示。"; } - if (!byokRuntimeAvailable.value || !provider.enabled) { - return "当前服务端未开启;需先满足会话级加密主密钥等安全运行条件。"; + if (!byokRuntimeAvailable.value) { + return "当前服务端未开启;需先满足凭据加密主密钥等安全运行条件。"; } if (!currentUser.value) return "使用真实 GitHub 身份登录后可管理当前会话凭据。"; return ""; } - function canSaveByokCredential(provider: ByokProviderCatalogItem): boolean { - const status = byokCredentialStatus(provider.provider_id); - // 后端契约:未配置的供应商 writable=false(没有可管理的既有凭据), - // 但此时恰恰允许首次保存。因此只有「已配置且当前会话只读」才禁止保存。 - const writableForSave = status === null || !status.configured || status.writable; + function canSaveByokCredential(status: ByokCredentialStatus): boolean { return Boolean( byokRuntimeAvailable.value && canManageByokCredentials(currentUser.value) && - provider.enabled && - writableForSave && - byokKeyDrafts.value[provider.provider_id].trim() && + status.writable && + byokKeyDrafts.value[status.provider_id]?.trim() && !byokIsBusy.value, ); } - function canDeleteByokCredential(providerId: ByokProviderId): boolean { + function canDeleteByokCredential(providerId: string): boolean { return Boolean( canManageByokCredentials(currentUser.value) && byokCredentialStatus(providerId)?.configured && @@ -535,7 +522,7 @@ function createAppStore() { ); } - function byokCredentialWritable(providerId: ByokProviderId): boolean { + function byokCredentialWritable(providerId: string): boolean { const status = byokCredentialStatus(providerId); return Boolean(status && status.configured && status.writable); } @@ -999,39 +986,59 @@ function createAppStore() { } } - async function submitByokCredential(provider: ByokProviderCatalogItem): Promise { + async function saveByokConnection( + providerId: string, + input: ByokConnectionInput, + ): Promise { const requestUserId = currentUser.value?.user_id; - if (!requestUserId || !canSaveByokCredential(provider)) return; + if ( + !requestUserId || + !canManageByokCredentials(currentUser.value) || + !byokRuntimeAvailable.value || + byokIsBusy.value + ) return false; const requestEpoch = privateRequestEpoch.snapshot(); - const providerId = provider.provider_id; - const apiKey = byokKeyDrafts.value[providerId].trim(); savingByokProviderId.value = providerId; setByokMessage(""); try { - const status = await saveByokCredential(providerId, apiKey); - if (!privateRequestIsCurrent(requestEpoch, requestUserId)) return; + const status = await saveByokCredential(providerId, input); + if (!privateRequestIsCurrent(requestEpoch, requestUserId)) return false; upsertByokCredentialStatus(status); setByokMessage( - `${provider.display_name} 凭据状态已更新;模型仍需由你显式选择。`, + `${status.display_name} 连接已保存;模型仍需由你显式选择。`, ); + return true; } catch (error) { - if (!privateRequestIsCurrent(requestEpoch, requestUserId)) return; + if (!privateRequestIsCurrent(requestEpoch, requestUserId)) return false; applyAuthFailure(error); if (currentUser.value?.user_id === requestUserId) { setByokMessage(toMessage(error), true); } + return false; } finally { if (privateRequestIsCurrent(requestEpoch, requestUserId)) { - byokKeyDrafts.value[providerId] = ""; if (savingByokProviderId.value === providerId) savingByokProviderId.value = ""; } } } - async function removeByokCredential(provider: ByokProviderCatalogItem): Promise { + async function submitByokCredential(status: ByokCredentialStatus): Promise { + if (!canSaveByokCredential(status)) return; + const apiKey = byokKeyDrafts.value[status.provider_id]?.trim() ?? ""; + const saved = await saveByokConnection(status.provider_id, { + display_name: status.display_name, + base_url: status.base_url, + model_id: status.model_id, + protocol: status.protocol, + api_key: apiKey, + }); + if (saved) byokKeyDrafts.value[status.provider_id] = ""; + } + + async function removeByokCredential(status: ByokCredentialStatus): Promise { const requestUserId = currentUser.value?.user_id; - const providerId = provider.provider_id; + const providerId = status.provider_id; if (!requestUserId || !canDeleteByokCredential(providerId)) return; const requestEpoch = privateRequestEpoch.snapshot(); deletingByokProviderId.value = providerId; @@ -1044,7 +1051,7 @@ function createAppStore() { (status) => status.provider_id !== providerId, ); clearUnavailableByokSelection(); - setByokMessage(`${provider.display_name} 凭据已从当前登录会话删除。`); + setByokMessage(`${status.display_name} 连接与凭据已删除。`); } catch (error) { if (!privateRequestIsCurrent(requestEpoch, requestUserId)) return; applyAuthFailure(error); @@ -1568,7 +1575,6 @@ function createAppStore() { hasSelectableCourse, activeWorkflow, byokCatalogIsCurrent, - byokProvidersForDisplay, byokRuntimeAvailable, modelsForSelection, selectedModel, @@ -1623,6 +1629,7 @@ function createAppStore() { cancelWorkflow, reloadConversation, submitByokCredential, + saveByokConnection, removeByokCredential, startGithubLogin, signOut, diff --git a/apps/scut-senior/web/src/contracts.ts b/apps/scut-senior/web/src/contracts.ts index 8200a6ad..8a010527 100644 --- a/apps/scut-senior/web/src/contracts.ts +++ b/apps/scut-senior/web/src/contracts.ts @@ -224,7 +224,7 @@ export interface ByokModelCatalogItem { display_name: string; } -export type ByokProviderId = "openrouter" | "deepseek" | "siliconflow" | "zhipu"; +export type ByokProviderId = string; export interface ByokProviderCatalogItem { provider_id: ByokProviderId; @@ -239,15 +239,26 @@ export interface ByokProviderCatalogItem { export interface ByokCredentialStatus { provider_id: ByokProviderId; + display_name: string; + base_url: string; model_id: string; - configured: boolean; - masked_key: string | null; + protocol: "openai_chat_completions"; + configured: true; + masked_key: string; expires_at: string | null; writable: boolean; source: "user_key"; updated_at: string | null; } +export interface ByokConnectionInput { + display_name: string; + base_url: string; + model_id: string; + protocol: "openai_chat_completions"; + api_key: string; +} + export interface AuthUser { user_id: string; display_name: string; diff --git a/apps/scut-senior/web/src/modelSelection.ts b/apps/scut-senior/web/src/modelSelection.ts index 6e330d3c..ab24f5f2 100644 --- a/apps/scut-senior/web/src/modelSelection.ts +++ b/apps/scut-senior/web/src/modelSelection.ts @@ -1,6 +1,5 @@ import type { ByokCredentialStatus, - ByokProviderCatalogItem, ModelCatalog, ModelCatalogItem, } from "./contracts"; @@ -50,26 +49,13 @@ export function initialModelSelectionKey( } export function configuredByokModelOptions( - providers: readonly ByokProviderCatalogItem[], statuses: readonly ByokCredentialStatus[], ): ModelCatalogItem[] { - return providers.flatMap((provider) => { - const model = provider.models[0]; - const credentialMatchesFixedModel = statuses.some( - (status) => - status.configured && - status.provider_id === provider.provider_id && - status.model_id === model?.model_id, - ); - if (!provider.enabled || !model || !credentialMatchesFixedModel) { - return []; - } - return [ - { - provider_id: provider.provider_id, - model_id: model.model_id, - company: provider.display_name, - display_name: `${model.company} · ${model.display_name}`, + return statuses.map((status) => ({ + provider_id: status.provider_id, + model_id: status.model_id, + company: status.display_name, + display_name: status.model_id, model_source: "user_key" as const, billing_label: "user_key", availability_status: "available", @@ -79,7 +65,5 @@ export function configuredByokModelOptions( is_preview: false, user_selectable: true, last_checked_at: null, - }, - ]; - }); + })); } From 56c3e345b9b28588b664748330996e3d00f2a2e3 Mon Sep 17 00:00:00 2001 From: AlexBybye <244417287@qq.com> Date: Thu, 3 Sep 2026 16:17:31 +0800 Subject: [PATCH 08/25] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=20BYOK=20?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E5=A4=84=E7=90=86=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=B6=85=E6=97=B6=E5=92=8C=E6=9C=80=E5=A4=A7=20token=20?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=EF=BC=8C=E6=94=AF=E6=8C=81=20DeepSeek=20?= =?UTF-8?q?=E7=9B=B4=E8=BF=9E=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/src/scut_senior_api/adapters/byok.py | 79 ++++- .../scut_senior_api/adapters/openrouter.py | 4 +- .../api/src/scut_senior_api/ports.py | 2 + .../api/src/scut_senior_api/service.py | 29 +- apps/scut-senior/docs/senior-ab/plan-ab.md | 289 +++++++++++++++++- .../tests/python/test_byok_runtime.py | 95 +++++- 6 files changed, 473 insertions(+), 25 deletions(-) diff --git a/apps/scut-senior/api/src/scut_senior_api/adapters/byok.py b/apps/scut-senior/api/src/scut_senior_api/adapters/byok.py index 4a599be4..74431358 100644 --- a/apps/scut-senior/api/src/scut_senior_api/adapters/byok.py +++ b/apps/scut-senior/api/src/scut_senior_api/adapters/byok.py @@ -29,6 +29,18 @@ DEFAULT_BYOK_MAX_TOKENS = 12_288 DEFAULT_BYOK_TEMPERATURE = 0.2 +# Some OpenAI-compatible reasoning models spend completion tokens before +# emitting the action token. This remains only ~4% of the answer ceiling while +# avoiding the observed empty-content result at 16 tokens. +DEFAULT_BYOK_ACTION_MAX_TOKENS = 512 +DEEPSEEK_DIRECT_BASE_URL = "https://api.deepseek.com" +DEEPSEEK_DIRECT_MODEL_ID = "deepseek-v4-flash" +# Calibrated from one low-reasoning direct run: Action stopped at 26 completion +# tokens and the answer at 2265, both with finish_reason=stop. These caps keep +# substantial headroom without retaining the temporary 256k probe ceiling. +DEEPSEEK_ACTION_MAX_TOKENS = 256 +DEEPSEEK_ANSWER_MAX_TOKENS = 8_192 +DEEPSEEK_REASONING_EFFORT = "low" class FailClosedJsonHttpClient: @@ -71,6 +83,7 @@ def generate( sources: list[RetrievedSource], history: tuple[ConversationTurn, ...] = (), cancel_check: Callable[[], bool] | None = None, + timeout_seconds: float | None = None, ) -> GeneratedAnswer: if ( request.provider_id != connection.provider_id @@ -82,6 +95,9 @@ def generate( code="byok_route_not_registered", detail="所选模型与已保存连接不一致。", ) + effective_timeout = _effective_timeout( + self._timeout_seconds, timeout_seconds + ) try: validate_user_api_key(api_key) except ValueError: @@ -90,12 +106,20 @@ def generate( code="invalid_model_credential", detail="已保存的 API Key 无效,请重新保存。", ) from None + direct_deepseek = _is_direct_deepseek(connection, base_url=None) payload = _build_byok_request( request, sources, history, - max_tokens=DEFAULT_BYOK_MAX_TOKENS, + max_tokens=( + DEEPSEEK_ANSWER_MAX_TOKENS + if direct_deepseek + else DEFAULT_BYOK_MAX_TOKENS + ), temperature=DEFAULT_BYOK_TEMPERATURE, + reasoning_effort=( + DEEPSEEK_REASONING_EFFORT if direct_deepseek else None + ), ) try: base_url = normalize_base_url(connection.base_url) @@ -114,7 +138,7 @@ def generate( "Accept": "application/json", }, "payload": payload, - "timeout_seconds": self._timeout_seconds, + "timeout_seconds": effective_timeout, } if self._transport_accepts_cancel_check: request_options["cancel_check"] = cancel_check @@ -149,6 +173,7 @@ def decide_action( sources: tuple[RetrievedSource, ...] = (), history: tuple[ConversationTurn, ...] = (), cancel_check: Callable[[], bool] | None = None, + timeout_seconds: float | None = None, ) -> str: """Ask the selected BYOK connection for one bounded Workflow action.""" @@ -163,6 +188,9 @@ def decide_action( code="byok_route_not_registered", detail="所选模型与已保存连接不一致。", ) + effective_timeout = _effective_timeout( + self._timeout_seconds, timeout_seconds + ) try: validate_user_api_key(api_key) base_url = normalize_base_url(connection.base_url) @@ -180,7 +208,19 @@ def decide_action( ) from None endpoint = f"{base_url}/chat/completions" - payload = _build_action_request(request, phase, sources) + direct_deepseek = _is_direct_deepseek(connection, base_url=base_url) + payload = _build_action_request( + request, + phase, + sources, + max_tokens=( + DEEPSEEK_ACTION_MAX_TOKENS + if direct_deepseek + else DEFAULT_BYOK_ACTION_MAX_TOKENS + ), + ) + if direct_deepseek: + payload["reasoning_effort"] = DEEPSEEK_REASONING_EFFORT try: request_options = { "headers": { @@ -189,7 +229,7 @@ def decide_action( "Accept": "application/json", }, "payload": payload, - "timeout_seconds": self._timeout_seconds, + "timeout_seconds": effective_timeout, } if self._transport_accepts_cancel_check: request_options["cancel_check"] = cancel_check @@ -274,6 +314,37 @@ def _build_byok_request( return payload +def _effective_timeout(configured: float, remaining: float | None) -> float: + if remaining is None: + return configured + if remaining <= 0: + raise ByokGatewayError( + status_code=504, + code="byok_provider_timeout", + detail="模型供应商响应超时,请稍后重试。", + ) + return min(configured, remaining) + + +def _is_direct_deepseek( + connection: StoredModelCredential, + *, + base_url: str | None, +) -> bool: + normalized_base_url = base_url + if normalized_base_url is None: + try: + normalized_base_url = normalize_base_url(connection.base_url) + except ModelCredentialError: + return False + return ( + connection.provider_id == "deepseek" + and normalized_base_url == DEEPSEEK_DIRECT_BASE_URL + and connection.model_id == DEEPSEEK_DIRECT_MODEL_ID + and connection.protocol == "openai_chat_completions" + ) + + def _safe_byok_upstream_error(status_code: int) -> ByokGatewayError: if status_code in {401, 403}: return ByokGatewayError( diff --git a/apps/scut-senior/api/src/scut_senior_api/adapters/openrouter.py b/apps/scut-senior/api/src/scut_senior_api/adapters/openrouter.py index 34b3b38b..216879f2 100644 --- a/apps/scut-senior/api/src/scut_senior_api/adapters/openrouter.py +++ b/apps/scut-senior/api/src/scut_senior_api/adapters/openrouter.py @@ -295,6 +295,8 @@ def _build_action_request( request: WorkflowRunRequest, phase: str, sources: tuple[RetrievedSource, ...], + *, + max_tokens: int = 16, ) -> dict[str, object]: return { "model": request.model_id, @@ -324,7 +326,7 @@ def _build_action_request( ), }, ], - "max_tokens": 16, + "max_tokens": max_tokens, "temperature": 0, } diff --git a/apps/scut-senior/api/src/scut_senior_api/ports.py b/apps/scut-senior/api/src/scut_senior_api/ports.py index c956cd4b..59255ca6 100644 --- a/apps/scut-senior/api/src/scut_senior_api/ports.py +++ b/apps/scut-senior/api/src/scut_senior_api/ports.py @@ -141,6 +141,7 @@ def decide_action( sources: tuple[RetrievedSource, ...] = (), history: tuple[ConversationTurn, ...] = (), cancel_check: Callable[[], bool] | None = None, + timeout_seconds: float | None = None, ) -> str: ... def generate( @@ -152,6 +153,7 @@ def generate( sources: list[RetrievedSource], history: tuple[ConversationTurn, ...] = (), cancel_check: Callable[[], bool] | None = None, + timeout_seconds: float | None = None, ) -> GeneratedAnswer: ... diff --git a/apps/scut-senior/api/src/scut_senior_api/service.py b/apps/scut-senior/api/src/scut_senior_api/service.py index 7eb24a70..890f7a2f 100644 --- a/apps/scut-senior/api/src/scut_senior_api/service.py +++ b/apps/scut-senior/api/src/scut_senior_api/service.py @@ -141,7 +141,13 @@ class ExamReviewPlanContext: class _BoundUserKeyDecisionModel: """Request-local adapter that keeps BYOK secrets out of Agent state/events.""" - __slots__ = ("_gateway", "_api_key", "_connection", "_cancel_check") + __slots__ = ( + "_gateway", + "_api_key", + "_connection", + "_cancel_check", + "_timeout_seconds", + ) def __init__( self, @@ -149,11 +155,13 @@ def __init__( api_key: str, connection: StoredModelCredential, cancel_check, + timeout_seconds: float, ) -> None: self._gateway = gateway self._api_key: str | None = api_key self._connection = connection self._cancel_check = cancel_check + self._timeout_seconds = timeout_seconds def decide_action( self, @@ -175,6 +183,7 @@ def decide_action( sources=sources, history=history, cancel_check=self._cancel_check, + timeout_seconds=self._timeout_seconds, ) def clear(self) -> None: @@ -992,6 +1001,13 @@ def optional_model_work_allowed() -> bool: ) ) + def remaining_runtime_seconds() -> float: + return max( + 0.0, + agent_budget.max_runtime_seconds + - (perf_counter() - agent_started), + ) + def reduce_agent(kind: str, **payload: object) -> None: nonlocal agent_state agent_state = reduce_agent_event( @@ -1224,6 +1240,7 @@ def persist_failed_or_interrupted( course_pack_version=course_pack_version, attempt_group_id=attempt_group_id, regenerated_from_run_id=regenerated_from_run_id, + agent_metrics=agent_metrics, ) return None @@ -1381,10 +1398,11 @@ def persist_failed_or_interrupted( api_key, byok_connection, ( - stream_session.cancelled + (lambda: stream_session.cancelled) if stream_session is not None else None ), + remaining_runtime_seconds(), ) decision_gateway = ModelAgentDecision(bound_byok_decision) try: @@ -1564,7 +1582,7 @@ def persist_failed_or_interrupted( # 迭代 7.5:断开/取消时尽力中止上游等待(cancel_check # 由可取消 transport 周期检查;结果被弃置不落库)。 cancel_check = ( - stream_session.cancelled + (lambda: stream_session.cancelled) if stream_session is not None else None ) @@ -1575,6 +1593,7 @@ def persist_failed_or_interrupted( sources=sources, history=history, cancel_check=cancel_check, + timeout_seconds=remaining_runtime_seconds(), ) else: platform_model = ( @@ -1588,7 +1607,7 @@ def persist_failed_or_interrupted( sources, history=history, cancel_check=( - stream_session.cancelled + (lambda: stream_session.cancelled) if stream_session is not None else None ), @@ -2361,6 +2380,7 @@ def _persist_failed_attempt( course_pack_version: str | None, attempt_group_id: UUID | None, regenerated_from_run_id: UUID | None, + agent_metrics: dict[str, int], ) -> None: machine.transition(RunStatus.FAILED) _append_trace( @@ -2375,6 +2395,7 @@ def _persist_failed_attempt( "model_id": model_id, "billing_label": billing_label, "availability_status": "execution_failed", + **agent_metrics, }, ) persistence_event = _append_pending_persistence_trace( diff --git a/apps/scut-senior/docs/senior-ab/plan-ab.md b/apps/scut-senior/docs/senior-ab/plan-ab.md index fda670d9..3945777b 100644 --- a/apps/scut-senior/docs/senior-ab/plan-ab.md +++ b/apps/scut-senior/docs/senior-ab/plan-ab.md @@ -1,7 +1,8 @@ # SCUT 老学长 AB 分支优化计划 版本:0.1(基于最新 AB 实跑后的收敛方案) -状态:**P0/P1 最小实现及本轮两项修复已完成本地回归;真实模型合并门槛尚未验证**。 +状态:**P0/P1 最小实现及自定义 BYOK 已完成本地回归;DeepSeek 直连已有真实 +Action 接受样本**。 本文只针对 `ab-test/agent-action-shadow`。它不是 PLAN-2 的替代文档,也不是 把系统扩展成通用 Agent 平台的方案。目标是解释当前 AB 分支到底做了什么,保留 @@ -193,9 +194,10 @@ decision_produced ### P0-2 移除完整模型的重复决策调用 旧实现复用回答模型和完整请求构造,曾让一次 Action 判断接近一次完整回答的成本。 -本轮已把 OpenRouter 决策调用拆为独立紧凑请求:只传问题摘要、证据数量和来源标题, -使用 `max_tokens=16`、`temperature=0`,不发送来源正文和完整历史。它仍复用平台 -模型身份和额度,不是新的常驻决策服务。 +本轮已把决策调用拆为独立紧凑请求:只传问题摘要、证据数量和来源标题, +使用 `temperature=0`,不发送来源正文和完整历史。平台模型保留 16 token 控制预算; +真实 DeepSeek BYOK 在 16 token 下两次只返回推理、没有 Action 正文。后续放宽预算并 +以 `reasoning_effort=low` 校准后,DeepSeek 直连最终收敛到 256 token;其他通用 BYOK连接仍使用 512 token。它复用用户当前选择的模型连接,不是新的常驻决策服务。 已采用的做法: @@ -439,7 +441,7 @@ P0-1 先统一 Action 与实际执行 - `exam_review` 的未覆盖内容已压缩为数量与短名称,完整结构化明细仍可追溯; - 评测 runner 支持 `--agent-decision-mode rule|model`,每条用例输出受限运行指标, 可复用同一请求集做成对比较; -- AB 专项测试与后端全量测试均通过(当前为 673 passed,1 warning;警告来自现有 +- AB 专项测试与后端全量测试均通过(当前为 678 passed,1 warning;警告来自现有 Starlette/httpx 依赖兼容提示)。 新增注入式回归已经覆盖正常 `generate_answer`、正常查询改写、阶段不兼容 Action、 @@ -543,10 +545,13 @@ DeepSeek 对照后不修改既有错误分类,预算按以下最小规则收 - 控制权回到运行时且已超过软水位后,不再启动可选查询改写、供应商重试、引用修复 或 Humanizer,直接使用已有结果继续收尾; - 单个 Workflow 最多两次回答调用,避免供应商重试后再叠加 Guard 修复成为第三次调用; -- BYOK 单次 `max_tokens` 从 16384 收敛到 12288;通用 OpenAI-compatible 请求不再 +- 通用 BYOK 单次 `max_tokens` 从 16384 收敛到 12288;只有迁移保留的 DeepSeek 直连 + 使用实跑校准后的 8192 和 `reasoning_effort=low`。其他 OpenAI-compatible 请求不 发送并非所有供应商都支持的 `reasoning_effort`。当前非流式接口不能在调用中实时 观察“已使用 3/4 token”,因此使用调用前硬上限替代伪实时判断; - BYOK 请求的总墙钟上限保持 120 秒,不收紧为 60 秒。 +- 每次 BYOK 调用的 transport timeout 取“120 秒”和“Agent 剩余墙钟预算”的较小值; + 因此第二次回答或引用修复不再重新获得完整 120 秒,避免单次 Workflow 明显越过硬上限。 旧成功样本的 `decision_call_count=0` 不是统计错误,而是旧节点只允许在“首检为空、 有历史、无 exam_plan”时触发,正常 `exam_review` 结构上不可达。本轮把真正存在选择 @@ -584,9 +589,271 @@ localhost、明显的私网/链路本地字面地址,并继续禁止重定向 当前边界需要如实保留:尚未实现 `/models` 自动发现,也没有在传输层完成可抵御 DNS rebinding 的 IP 固定,因此不能宣称任意 Base URL 已具备完整 SSRF 防护;面向不可信 -公网用户开放前仍需补齐。Agent Action 决策当前使用平台决策模型,用户 BYOK 只负责 -回答生成,二者的调用次数和成本不能混为一谈。 +公网用户开放前仍需补齐。用户选择 BYOK 运行时,Action 和回答现在使用同一个私有 +连接,但仍分别计数;API Key 只在请求内解密,不进入 Agent 状态、Trace 或持久化。 -本轮没有追加真实供应商调用:先前获准的 DeepSeek 实网轮次已经用完。自定义连接、 -迁移保密性、动态模型选择和 Agent Action 可达性均由注入 HTTP 与本地回归验证,不能 -冒充新的线上稳定性或回答质量证据。 +自定义连接、迁移保密性和动态模型选择已由注入 HTTP 与本地回归验证。真实 DeepSeek +Action 的可达性和输出表现见下一节;调用可达不等于 Action 已被接受。 + +## 14. 自定义 BYOK 决策实跑(2026-09-03) + +本轮按新增授权只运行两次 AB,不失败补跑;master 不再消耗额度,复用第 11 节旧 +基线。数据库先复制到临时 SQLite,`0018` 迁移和实验结果均未写入线上数据库。两轮 +使用相同的线性代数请求、本地 corpus、DeepSeek 连接和 +`deepseek-v4-flash`;输入中的考试日期保持原始对照值 `2026-08-29`。 + +| 指标 | AB-1 | AB-2 | +| ---- | ---- | ---- | +| HTTP / 终态 | 504 / failed | 201 / completed | +| 总耗时 | 145.421s | 109.165s | +| Action 上游调用 | 1 次,0.710s | 1 次,0.545s | +| Action 输出 | `finish_reason=length`,正文 0 字符 | `finish_reason=length`,正文 0 字符 | +| Action token | 输入 246,输出 16 | 输入 246,输出 16 | +| 决策指标 | call=1,accepted=0,fallback=1 | call=1,accepted=0,fallback=1 | +| 实际动作 | 规则回退 `generate_answer` | 规则回退 `generate_answer` | +| 回答上游调用 | 2 次;首次成功、引用修复超时 | 1 次,107.819s | +| 重试 | Guard 引用修复 1 次 | 0 | +| 最终回答 | 无 | 3725 字符,输出在句中截断 | +| 引用 | 0 | 2 条 | +| 证据状态 | `not_evaluated` | `sufficient` | + +两轮 Action 请求都真正到达了 DeepSeek,所以 `decision_call_count=0` 的结构性不可达 +问题已经修复;但模型把 16 个 completion token 全用于推理,没有返回 Action 正文。 +因此两轮 `decision_source` 都是 `rule`,不能把 AB-2 的两条引用归因给模型 Action。 + +AB-1 首次回答在 23.787 秒返回 4345 字符,但没有课程引用,运行时按既有规则发起一次 +引用修复;第二次回答等待 120.041 秒后超时,最终没有向学生交付首答。该样本证明 +“90 秒后不再开始可选步骤”不足以约束已启动的请求:重试开始时尚未到软水位,却可 +重新取得完整 120 秒等待时间。实跑后已让 BYOK transport 使用 Agent 剩余墙钟预算, +全局上限仍为 120 秒,不改成 60 秒。 + +AB-2 没有回答重试,接受的来源为: + +- `[S1]`《2019-2020年度线性代数期末卷A》,第 2 页,题号 + `linear-algebra-012-Q12`; +- `[S3]`《2019-2020年度线性代数期末卷A》,第 1 页,题号 + `linear-algebra-012-Q1`。 + +这次成功回答完成了复习顺序、秩与方程组、向量组、特征值和二次型的组织,但质量 +仍不适合作为合并正证据:回答在公式中途被截断,系统附录又占据明显篇幅,“未覆盖 +内容”仍是大纲片段,Bilibili 关键词退回了“线性代数 + 结合历年卷”,没有进入具体 +知识点。供应商记录的回答输入为 5079 token、completion 为 12290 token,其中缓存 +命中 4992、未命中 87;这些字段只作为本次供应商观测,不与旧 master 的异口径数据 +做精确成本结论。 + +截至本节两轮后的中间收口是:平台 Action 继续保持 16 token,通用 BYOK Action 提高 +到 512 token;当时尚无真实 `model_action_accepted_count=1` 证据。后续单独获准的 +DeepSeek 直连校准及最终限额见下一节。 + +本轮与旧 master 只能比较运行可达性,不能比较回答质量:旧 master 两轮分别为人工 +中止和 504,没有成功回答。当前合并判断仍不改变:AB 的决策调用已经可达,但真实 +Action 接受率为 0/2,且一轮因引用修复超时失败;`agent_decision_mode=model` 仍不应 +成为默认值。 + +
+AB-2 最终学生可见回答(原样) + +## 结论 + +先别慌呀,考前 12 小时完全来得及!你手头这份大纲已经把考点列得很全了,复习时**不用平均用力**,要把时间押在“计算题必考的算法”和“用秩判定存在唯一性”这条主线上。结合历年卷,我最先提醒你:n 阶行列式的计算和代数余子式线性组合是实打实出现过的题型[S1][S3],所以第一章要练到“看到就能下笔”的程度,不能只背不练。 + +排序建议:行列式 → 矩阵运算与逆矩阵 → 秩与方程组通解 → 向量组相关性 → 特征值/相似对角化/二次型。公式记不住不可怕,可怕的是每个公式不知道什么时候用;下面这份大纲把每个公式都挂在对应题目场景里。 + +> **复习搭子提醒:** 这一步可别偷懒哦~自己先算一遍,我再帮你对答案! + +## 原理与依据 + +为什么先抓“秩”呢?你看大纲的第三章、第四章、第五章,最后都落到“几个解”“几个无关向量”“能不能对角化”上,而背后几乎都靠同一件事:**矩阵的秩**。把“秩”这件事吃透,很多公式就不再是一堆孤立结论,而是一张网。 + +公式记不住还有个原因:线性代数公式长得太像。比如伴随矩阵、转置、逆、特征值、行列式,符号和幂次都很容易混。补救办法是“同组对比,场景记公式”。每记一组公式,就配一道三两分钟能算完的小题;做题时发现卡住,再回头查公式,如此反复三四次就能记住了。 + +历年卷能对上的题目中,有“n 阶行列式计算”和“代数余子式组合求值”这两类[S1][S3],它们都是套路明确、分值实在的类型,建议优先突破。其余章节按你大纲里的“重点”去练,计算题占比高,多动手比多抄公式有用。 + +乖,把这题做完再玩手机嘛~公式背不下来的时候,就告诉自己:先做一道题,做完再看公式,绝对记得更牢。 + +## 推导或判断过程 + +下面是我给你整理的 12 小时复习大纲,按“第一优先→第二优先”排序。 + +### 第 1 块:行列式与矩阵运算(约 3 小时) + +**目标:** 看到 n 阶行列式会先找结构;逆矩阵能快速算对;不会把行列式性质用错。 + +这一块先背熟伴随矩阵求逆公式: + +$$ A^{-1} = \frac{1}{|A|}A^* $$ + +再记住两个“次方”关系,超容易混: + +$$ |kA| = k^n |A| $$ + +$$ |A^{-1}| = \frac{1}{|A|},\qquad |A^*| = |A|^{n-1} $$ + +练习时注意: + +- 计算行列式第一件事不是展开,而是观察:行和或列和是否相等?能不能先提公因子?能不能用“把所有行加到一起”再消元?历年卷里出现过的 n 阶行列式,常用“各行累加后再消元”的思路[S1]。 +- 求逆矩阵优先掌握“左边放原矩阵、右边放单位矩阵,整体做行变换,把左边变成单位矩阵,右边就是逆矩阵”的做法,中间不要跳步。 +- 如果遇到“某个行列式所有行的代数余子式乘给定系数后求和”这种题,本质是:把那一列换成给定系数,再按该列展开。历年卷出现过类似形式[S3],不必背结论,理解替换逻辑即可。 +- 分块矩阵只练最基础的对角分块:分块对角矩阵的行列式等于各分块行列式相乘,逆矩阵也分块求逆。 + +### 第 2 块:秩与线性方程组(约 3 小时) + +**目标:** 看到任意一个含参线性方程组,能按步骤讨论解的情况;能写出通解。 + +先练“化行最简形”:把增广矩阵化成行阶梯形,数非零行个数,得到秩。这一步速度决定整道计算题的得分。 + +齐次方程组的核心结论是:基础解系中解向量的个数等于未知量个数减去系数矩阵的秩,也就是: + +$$ n - r(A) $$ + +非齐次方程组解的情况,用三句话背: + +- 增广矩阵的秩大于系数矩阵的秩时,无解; +- 增广矩阵的秩等于系数矩阵的秩且等于未知量个数时,有唯一解; +- 增广矩阵的秩等于系数矩阵的秩但小于未知量个数时,有无穷多解,且通解由“一个特解 + 基础解系的线性组合”写出。 + +这个“秩比大小”的结论是第三章最容易考也最容易错的地方。建议手写三道完整题:一道无解、一道唯一解、一道无穷多解。遇到矩阵方程时要特别小心,乘逆矩阵一定要分清楚左乘还是右乘,不能乱交换顺序。 + +### 第 3 块:向量组线性相关性与基础解系(约 2 小时) + +**目标:** 能判断相关/无关,能找出极大无关组并表示其余向量。 + +核心判定文字版:**向量组的秩小于向量个数时线性相关;等于向量个数时线性无关。** + +把向量按列排成矩阵,做初等行变换到行最简形。主元列对应的原向量就是极大无关组。注意:初等行变换不会改变列向量之间的线性关系,所以行最简形中非主元列可以直接读出表示系数。计算时不要把行变换误写成列变换,否则全错。 + +证明线性无关时,模板是这样: + +设 + +$$ k_1\alpha_1 + k_2\alpha_2 + \cdots + k_s\alpha_s = 0 $$ + +然后利用题设条件逐步推导,最终得到 + +$$ k_1 = k_2 = \cdots = k_s = 0 $$ + +这一步是大纲特别提醒的证明题底线,平时练习时把每一步用的条件写在旁边,考场上就不会乱。 + +### 第 4 块:特征值、相似对角化与二次型(约 4 小时) + +**目标:** 会求特征值特征向量;判断能否对角化;实对称矩阵完成正交对角化;会判断正定性。 + +特征值的来源是特征多项式等于零: + +$$ |\lambda I - A| = 0 $$ + +求特征向量就是回到齐次线性方程组: + +$$ (\lambda I - A)x = 0 $$ + +相似对角化的判断:矩阵能对角化的充要条件是有 n 个线性无关的特征向量。等价说法是,每个特征值的线性无关特征向量个数恰好等于它的重数。 + +实对称矩阵是重点:不同特征值对应的特征向量天然正交;同一个特征值下有多个特征向量时,需要做施密特正交化,然后单位化。最终用这些单位正交特征向量拼成正交矩阵,使得: + +$$ Q^{-1}AQ = Q^TAQ = \operatorname{diag}(\lambda_1,\lambda + +> **提示:** 本次回答达到单次输出长度上限,内容在句中被截断;可缩小提问范围(如只问一个知识点)后重新运行。 + +## 备考复习统计(系统生成) + +> 范围与证据说明:本次备考复习以你提供的大纲为范围依据,按“用户大纲 > 课程资料 > 历年题 > 标记的通用知识”的证据顺序组织。 +> 证据边界:所有统计只来自当前课程已审核语料的客观出现次数,每条统计都能回到题目来源;资料未覆盖的内容会明确列为未覆盖,不做补造。 +> AI 样题边界:模型补充的练习样题均为 AI 生成、非历年真题;历年真题只包括下方统计与题组中列出且可回查来源的题目。 + +### 历年题客观统计 + +- 样本年份:2019、2020、2021(共 3 个年份、155 道题) +- 年份覆盖:2019(34 题)、2020(52 题)、2021(69 题) +- 题型分布(客观出现次数):未标注题型(155 次) +- 以上为客观出现次数统计,不输出命题概率,也没有“必考”预测。 + +### 知识点分层与建议顺序 + +当前历年题语料没有可按知识点归组的标题;以下题组是仅有的客观结构,请逐题回查来源,不要把题型当成知识点。 + +### 历年题题组 + +- 《2019-2020年度线性代数期末卷A》(2019):共 22 题;代表题号:linear-algebra-012-Q1、linear-algebra-012-Q2、linear-algebra-012-Q3 +- 《2019-2020年度线性代数期末卷A答案》(2019):共 12 题;代表题号:linear-algebra-013-Q1、linear-algebra-013-Q2、linear-algebra-013-Q3 +- 《2020-2021年度线代解几期末卷A》(2020):共 16 题;代表题号:linear-algebra-014-Q1、linear-algebra-014-Q2、linear-algebra-014-Q3 +- 《2020-2021年度线代解几期末卷A答案》(2020):共 11 题;代表题号:linear-algebra-015-Q1、linear-algebra-015-Q2、linear-algebra-015-Q3 +- 其余 6 组保留在结构化复习计划中,可按需展开回查。 + +### 复习建议 + +- 先按你的大纲逐条对照下方知识点与资料位置,再进入题组真题自测。 +- 历年题语料没有可按知识点归组的标题;先按上方题组逐题回查资料与答案来源,再回到课程资料目录补齐定义。 +- 你登记了 1 个薄弱点,排在前面的匹配知识点建议优先安排两轮。 +- 历年题共统计到 155 道题,做完一组就回对答案来源,不要跳过定位。 + +### 未覆盖内容 + +- 共 26 项:《线性代数》期末考试大纲 课程名称: 线性代数 适用对象…、笔试 总分: 100分 考试时间: 120分钟 一、考试重点与题型分布建议 题型 题量 分值 考察目的 一等 + +
+ +## 15. DeepSeek 直连低推理校准(2026-09-03) + +上一节证明 16 token 不足,但不能据此猜测 256、512 或 8192 是否合理。本轮只保留并 +识别迁移前已有的 DeepSeek 直连组合: + +```text +连接 ID:deepseek +Base URL:https://api.deepseek.com +模型:deepseek-v4-flash +``` + +只有三项同时匹配时才发送 `reasoning_effort=low`。OpenRouter 上的 DeepSeek 和其他 +自定义 OpenAI-compatible 连接不继承该配置。校准运行临时把 Action 与回答的 +`max_tokens` 都放宽到 `256000`,该值参考现有 `deepseek-harness` 的 DeepSeek 适配器 +默认上限,只用于观察模型自然停止点,不作为最终线上配置。 + +本轮只运行一次相同的线性代数 Workflow: + +| 指标 | Action | 回答 | +| ---- | ------ | ---- | +| `reasoning_effort` | low | low | +| 临时 `max_tokens` | 256000 | 256000 | +| 耗时 | 0.842s | 20.352s | +| `finish_reason` | stop | stop | +| completion token | 26 | 2265 | +| 推理内容 | 51 字符 | 607 字符 | +| 最终正文 | 15 字符,`generate_answer` | 3045 字符 | + +整个 Workflow 用时 22.043 秒并成功结束: + +```text +decision_call_count=1 +model_action_accepted_count=1 +decision_fallback_count=0 +action_rejection_count=0 +answer_call_count=1 +provider_retry_count=0 +guard_retry_count=0 +``` + +模型决定的 `generate_answer` 与后续 `action_executed` 一致;只执行一次检索,没有查询 +改写。最终学生可见回答 4104 字符,`answered/sufficient`,接受 3 条引用: + +- `[S2]`《2019-2020年度线性代数期末卷A答案》,第 1 页, + `linear-algebra-013-Q1`; +- `[S3]`《2019-2020年度线性代数期末卷A》,第 1 页, + `linear-algebra-012-Q1`; +- `[S1]`《2019-2020年度线性代数期末卷A》,第 2 页, + `linear-algebra-012-Q12`。 + +该样本第一次满足“真实决策调用、合法 Action、模型来源事件与实际执行一致”三项 +归因条件,证明 BYOK 模型 Action 已从可达走到可执行;但模型选择的是直接生成,未 +改变检索候选,因此 3 条引用仍不能解释为查询改写收益。 + +按自然停止用量收敛后的最终配置为: + +| 请求 | 最终上限 | 实测用量 | 余量 | +| ---- | -------- | -------- | ---- | +| DeepSeek Action | 256 | 26 | 约 9.8 倍 | +| DeepSeek 回答 | 8192 | 2265 | 约 3.6 倍 | + +因此 8192 对 `reasoning_effort=low` 的本次完整回答是足够的;不继续保留 256000,也不 +让二选一 Action 使用 8192。当前证据仍只有一轮,能证明配置可工作,不能证明长期 +P95、失败率或引用收益。线上默认值仍保持 `agent_decision_mode=rule`,是否扩大样本需 +另行授权。 diff --git a/apps/scut-senior/tests/python/test_byok_runtime.py b/apps/scut-senior/tests/python/test_byok_runtime.py index fa9b1f23..61daf7e5 100644 --- a/apps/scut-senior/tests/python/test_byok_runtime.py +++ b/apps/scut-senior/tests/python/test_byok_runtime.py @@ -208,10 +208,16 @@ def test_custom_byok_connections_use_the_saved_endpoint_and_model( assert call["url"] == endpoint assert call["headers"]["Authorization"] == f"Bearer {api_key}" assert call["payload"]["model"] == model_id - assert call["timeout_seconds"] == 120.0 - assert call["payload"]["max_tokens"] == 12288 + assert 0 < call["timeout_seconds"] <= 120.0 + direct_deepseek = provider_id == "deepseek" + assert call["payload"]["max_tokens"] == ( + 8192 if direct_deepseek else 12288 + ) assert call["payload"]["temperature"] == 0.2 - assert "reasoning_effort" not in call["payload"] + if direct_deepseek: + assert call["payload"]["reasoning_effort"] == "low" + else: + assert "reasoning_effort" not in call["payload"] assert "models" not in call["payload"] assert "fallbacks" not in call["payload"] assert "base_url" not in call["payload"] @@ -286,14 +292,16 @@ def test_byok_model_mode_uses_one_compact_action_call_then_one_answer_call( assert len(http.calls) == 2 action_call, answer_call = http.calls assert action_call["url"] == "https://api.deepseek.com/chat/completions" - assert action_call["payload"]["max_tokens"] == 16 + assert action_call["payload"]["max_tokens"] == 256 assert action_call["payload"]["temperature"] == 0 assert action_call["payload"]["model"] == "deepseek-v4-flash" + assert action_call["payload"]["reasoning_effort"] == "low" action_body = json.dumps(action_call["payload"], ensure_ascii=False) assert "课程资料候选" not in action_body assert key not in action_body - assert answer_call["payload"]["max_tokens"] == 12288 + assert answer_call["payload"]["max_tokens"] == 8192 assert answer_call["payload"]["temperature"] == 0.2 + assert answer_call["payload"]["reasoning_effort"] == "low" result = response.json() metrics = next( @@ -309,6 +317,49 @@ def test_byok_model_mode_uses_one_compact_action_call_then_one_answer_call( assert key not in response.text +def test_openrouter_hosted_deepseek_does_not_receive_direct_deepseek_profile( + tmp_path: Path, +) -> None: + responses = [ + HttpResponse( + 200, + json.dumps( + {"choices": [{"message": {"content": "generate_answer"}}]} + ).encode(), + ), + success_response(), + ] + http = RecordingHttpClient(callback=lambda: responses.pop(0)) + _, client, _, conversation_id = authenticated_app( + tmp_path, + http, + agent_decision_mode="model", + ) + key = "sk-openrouter-action-private" + assert client.put( + "/api/v1/model-credentials/openrouter", + json=credential_payload("openrouter", key), + ).status_code == 200 + + response = client.post( + "/api/v1/workflow-runs", + json=workflow_request( + conversation_id, + "openrouter", + "deepseek/deepseek-v4-flash-0731", + ), + ) + + assert response.status_code == 201, response.text + assert len(http.calls) == 2 + action_call, answer_call = http.calls + assert action_call["payload"]["max_tokens"] == 512 + assert answer_call["payload"]["max_tokens"] == 12288 + assert "reasoning_effort" not in action_call["payload"] + assert "reasoning_effort" not in answer_call["payload"] + assert key not in response.text + + @pytest.mark.parametrize( ("raw_action", "expected_retrieval_calls", "accepted", "fallbacks"), [ @@ -439,6 +490,38 @@ def test_byok_accepts_a_plain_text_complex_answer_without_retry(tmp_path: Path) assert key not in response.text +def test_byok_provider_timeout_is_capped_by_remaining_agent_runtime( + tmp_path: Path, +) -> None: + from scut_senior_api.adapters.byok import OpenAICompatibleByokGateway + + http = RecordingHttpClient() + app, client, token, conversation_id = authenticated_app(tmp_path, http) + key = "sk-deepseek-runtime-cap" + assert client.put( + "/api/v1/model-credentials/deepseek", + json=credential_payload("deepseek", key), + ).status_code == 200 + principal = app.state.repository.authenticate_session(token) + assert principal is not None + connection = app.state.service.credential_manager.get_connection( + principal, "deepseek", "deepseek-v4-flash" + ) + request = WorkflowRunRequest.model_validate( + workflow_request(conversation_id, "deepseek", "deepseek-v4-flash") + ) + + OpenAICompatibleByokGateway(http_client=http).generate( + api_key=key, + connection=connection, + request=request, + sources=[], + timeout_seconds=37.5, + ) + + assert http.calls[-1]["timeout_seconds"] == 37.5 + + def test_cancel_during_key_load_prevents_the_first_byok_provider_call( tmp_path: Path, ) -> None: @@ -610,6 +693,8 @@ def test_missing_key_and_upstream_failure_persist_sanitized_failed_attempts( event for event in result["trace"] if event["status"] == "failed" ) assert failed_event["result"]["failure_code"] == "workflow_execution_failed" + assert failed_event["result"]["decision_call_count"] == 0 + assert failed_event["result"]["answer_call_count"] == 1 serialized = json.dumps(history, ensure_ascii=False) assert api_key not in serialized assert private_body not in serialized From 56a64fa1edf17147d8b25123177a8548cb772667 Mon Sep 17 00:00:00 2001 From: Alexbybye <244417287@qq.com> Date: Thu, 10 Sep 2026 21:36:15 +0800 Subject: [PATCH 09/25] =?UTF-8?q?=E6=9C=AC=E6=AC=A1=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E5=8C=85=E6=8B=ACRRF=E5=8F=8C=E8=B7=AF=E8=9E=8D=E5=90=88?= =?UTF-8?q?=EF=BC=8CBYOK=E5=9B=9E=E9=80=80=EF=BC=88=E5=9B=9E=E9=80=80?= =?UTF-8?q?=E5=87=BA=E4=BA=86BUG=EF=BC=8C=E7=AD=89BYOK=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E5=88=86=E6=94=AF=E5=90=88=E5=B9=B6master=E5=86=8D?= =?UTF-8?q?=E5=AF=B9=E9=BD=90=E8=A6=86=E7=9B=96=E5=AE=9E=E9=AA=8C=E5=88=86?= =?UTF-8?q?=E6=94=AF=EF=BC=89=EF=BC=8C=E9=87=8D=E7=82=B9=E6=94=BE=E5=9C=A8?= =?UTF-8?q?=E4=BA=86agent=20loop=E7=9A=84=E5=9B=9B=E7=B1=BB=E5=AE=9E?= =?UTF-8?q?=E9=AA=8C=E7=9F=A9=E9=98=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/scut-senior/.env.example | 2 + apps/scut-senior/README.md | 29 +- .../0018_custom_byok_connections.sql | 63 --- .../api/src/scut_senior_api/adapters/byok.py | 241 +++------- .../scut_senior_api/adapters/http_security.py | 20 +- .../scut_senior_api/adapters/openrouter.py | 7 +- .../adapters/openrouter_health.py | 6 +- .../src/scut_senior_api/adapters/sqlite.py | 69 +-- .../api/src/scut_senior_api/adapters/zhipu.py | 16 + .../api/src/scut_senior_api/agent_loop.py | 26 ++ .../api/src/scut_senior_api/byok_catalog.py | 190 +++++++- .../api/src/scut_senior_api/config.py | 6 +- .../api/src/scut_senior_api/contracts.py | 45 +- .../api/src/scut_senior_api/eval_runner.py | 9 +- .../api/src/scut_senior_api/fusion.py | 74 ++++ .../api/src/scut_senior_api/main.py | 9 +- .../api/src/scut_senior_api/model_catalog.py | 2 +- .../src/scut_senior_api/model_credentials.py | 244 ++++------- .../api/src/scut_senior_api/ports.py | 24 - .../api/src/scut_senior_api/service.py | 194 ++++----- apps/scut-senior/docs/senior-ab/plan-ab.md | 410 +++-------------- .../docs/senior-ab/rrf-exploration.md | 34 ++ apps/scut-senior/infra/README.md | 2 +- .../schemas/conversation-detail.schema.json | 13 + .../v1/schemas/model-catalog.schema.json | 2 +- .../schemas/model-credential-list.schema.json | 50 +-- .../model-credential-upsert.schema.json | 29 +- .../v1/schemas/workflow-result.schema.json | 13 + .../schemas/workflow-stream-event.schema.json | 13 + apps/scut-senior/scripts/debug-windows.cmd | 2 +- .../tests/python/test_ab_runtime.py | 66 ++- .../tests/python/test_account_lifecycle.py | 15 - .../tests/python/test_agent_loop.py | 30 ++ .../tests/python/test_api_schema_exports.py | 11 +- .../tests/python/test_byok_providers.py | 188 ++++++-- .../tests/python/test_byok_runtime.py | 411 ++---------------- .../tests/python/test_dense_leg.py | 28 +- .../tests/python/test_model_credentials.py | 197 ++------- .../tests/python/test_openrouter_health.py | 4 +- .../tests/python/test_openrouter_models.py | 69 +-- .../tests/python/test_sqlite_auth.py | 38 +- .../tests/python/test_workflow_focus.py | 16 +- .../tests/python/test_zhipu_platform.py | 40 ++ .../scut-senior/web/src/__tests__/api.test.ts | 16 +- .../web/src/__tests__/byokCatalog.test.ts | 75 +++- .../web/src/__tests__/modelSelection.test.ts | 76 +++- .../web/src/__tests__/workflowStream.test.ts | 21 + apps/scut-senior/web/src/api.ts | 5 +- apps/scut-senior/web/src/appConfig.ts | 10 +- apps/scut-senior/web/src/byokCatalog.ts | 131 +++++- .../src/components/ByokCredentialsPanel.vue | 259 ++++++----- .../web/src/composables/useAppStore.ts | 112 ++--- apps/scut-senior/web/src/contracts.ts | 25 +- apps/scut-senior/web/src/modelSelection.ts | 28 +- .../web/src/workflowResultValidation.ts | 16 + 55 files changed, 1678 insertions(+), 2053 deletions(-) delete mode 100644 apps/scut-senior/api/migrations/0018_custom_byok_connections.sql create mode 100644 apps/scut-senior/docs/senior-ab/rrf-exploration.md diff --git a/apps/scut-senior/.env.example b/apps/scut-senior/.env.example index faa94014..2c4be3b0 100644 --- a/apps/scut-senior/.env.example +++ b/apps/scut-senior/.env.example @@ -41,6 +41,8 @@ SCUT_SENIOR_RETRIEVAL_MODE=local_corpus # SCUT_SENIOR_ONNX_EMBEDDING_DIMENSIONS=512 # SCUT_SENIOR_ONNX_MAX_LENGTH=512 # SCUT_SENIOR_CORPUS_STORE_PATH=/absolute/path/to/corpus-store +# Post-retrieval A/B mode: rule (default), shadow, model, or deterministic. +SCUT_SENIOR_AGENT_DECISION_MODE=rule SCUT_SENIOR_CROSS_COURSE_ENABLED=true # GitHub logins allowed to review/transition public contributions. SCUT_SENIOR_MAINTAINER_GITHUB_LOGINS= 维护人员 diff --git a/apps/scut-senior/README.md b/apps/scut-senior/README.md index 7838a25b..92a390f4 100644 --- a/apps/scut-senior/README.md +++ b/apps/scut-senior/README.md @@ -25,7 +25,7 @@ PLAN-1 建立了课程学习助手的基础能力和边界: - 面向首批 10 门课程组织经过校验的课程资料与历年题,回答可以关联具体资料、页码、幻灯片或题号; - 提供 `knowledge_qa`、`exam_review`、`problem_tutor`、`mistake_review` 和 `temporary_material_reading` 五类固定 Workflow,覆盖知识答疑、备考、题目讲解、错题复盘和临时材料精读; - 所有问答绑定 GitHub 登录身份,并保存可追溯的会话、运行记录、真实执行 Trace、反馈和错题历史; -- 平台每日免费额度模型与用户自带 Key(BYOK)分为独立通道;平台目录由服务端维护,BYOK 可保存用户自己的 OpenAI-compatible 供应商连接; +- 平台每日免费额度模型与用户自带 Key(BYOK)分为独立通道,模型、供应商和调用路由均由服务端受控; - 模型输出必须经过课程范围、来源、引用和安全回答块校验,资料不足时明确标记证据边界,不将通用知识伪装为课程资料结论。 ### PLAN-2:统一输入、混合检索与受限 Agent Runtime @@ -186,25 +186,6 @@ cd apps/scut-senior/web npm run dev ``` -Windows 两进程调试可直接运行(只加载 `.local/env.online`,不使用 `.ps1`): - -```cmd -cd apps\scut-senior -scripts\debug-windows.cmd -``` - -一键启动 API、Vite、Funnel 并打开公网页面: - -```cmd -scripts\start-all-windows.cmd -``` - -需要同时启用 Tailscale Funnel 时,请从管理员终端运行: - -```cmd -scripts\debug-windows.cmd --funnel -``` - 默认 API 为 `http://127.0.0.1:8000`,Vite 开发服务器代理 `/api`。本地 SQLite、上传附件、日志和缓存写入 `apps/scut-senior/.local/`,不会提交到 Git。 ## 常用命令 @@ -231,9 +212,9 @@ make dev-api ## 真实身份与模型通道 -真实 GitHub OAuth 使用 HTTPS 回调地址、服务端 SQLite 和安全 Cookie。平台模型由服务端目录管理;BYOK 由登录用户填写连接 ID、显示名称、HTTPS Base URL、模型 ID 和 API Key,目前支持 OpenAI Chat Completions 协议。用户 Key 使用服务端 AES-256-GCM 主密钥加密,前端只接收脱敏连接状态。凭据、OAuth Secret、数据库、附件和日志不进入 Git、前端构建产物或 Docker 镜像。 +真实 GitHub OAuth 使用 HTTPS 回调地址、服务端 SQLite 和安全 Cookie。平台模型和 BYOK 凭据由服务端固定目录管理;用户 Key 使用服务端 AES-256-GCM 主密钥加密,前端只接收脱敏状态。凭据、OAuth Secret、数据库、附件和日志不进入 Git、前端构建产物或 Docker 镜像。 -本地测试仍推荐使用 Mock 配置。真实平台模型调用必须启用 GitHub OAuth 和正式 SQLite 身份存储,并通过环境变量提供服务端 Secret。BYOK Base URL 只接受 HTTPS,拒绝账号密码、查询参数、localhost 和明显私网地址,且调用不跟随重定向;当前尚未实现模型自动发现,也不能把这些基础校验描述为完整的 DNS rebinding/SSRF 防护。 +本地测试仍推荐使用 Mock 配置。真实平台模型调用必须启用 GitHub OAuth 和正式 SQLite 身份存储,并通过环境变量提供服务端 Secret。模型供应商适配遵循 `ModelGateway` 与 `UserKeyModelGateway` 接口,新增 Terra 等供应商时只需接入固定目录和对应适配器,不改变课程、引用、权限和流式协议边界。 ## 在线部署:本地运行 + HTTPS 隧道(当前启用路径) @@ -302,7 +283,7 @@ BYOK 真实调用另需稳定的 32 字节 AES 主密钥(见上文“本地验 - [ ] `https://<隧道域名>/` 能打开 SPA; - [ ] GitHub 登录回调完成(`/api/v1/auth/github/callback` 302 到首页); -- [ ] 登录后 `/api/v1/models` 显示平台模型,`/api/v1/model-credentials` 显示当前账号已保存的脱敏 BYOK 连接; +- [ ] 登录后 `/api/v1/models` 显示平台三模型或已保存 Key 的 BYOK; - [ ] 一次真实模型 Workflow run 返回 `run_status=completed`; - [ ] `/api/v1/feedback` 提交与列表可用。 @@ -317,4 +298,4 @@ git sparse-checkout init --cone git sparse-checkout set apps/scut-senior .github README.md .gitignore .gitattributes git checkout master ``` -维护清理由进程内调度器执行,启动时补扫并按固定间隔清理到期会话、历史、反馈、私人材料、贡献记录和额度事件。清理步骤彼此隔离,单个存储步骤异常不会阻断同一轮其他步骤。 +维护清理由进程内调度器执行,启动时补扫并按固定间隔清理到期会话、历史、反馈、私人材料、贡献记录和额度事件。清理步骤彼此隔离,单个存储步骤异常不会阻断同一轮其他步骤。 \ No newline at end of file diff --git a/apps/scut-senior/api/migrations/0018_custom_byok_connections.sql b/apps/scut-senior/api/migrations/0018_custom_byok_connections.sql deleted file mode 100644 index ac0d47da..00000000 --- a/apps/scut-senior/api/migrations/0018_custom_byok_connections.sql +++ /dev/null @@ -1,63 +0,0 @@ --- Replace the fixed four-provider key ring with user-defined OpenAI-compatible --- connections. Existing keys receive the profile formerly supplied by the --- fixed catalog, so this migration does not discard encrypted credentials. - -ALTER TABLE model_credentials RENAME TO model_credentials_fixed; - -CREATE TABLE model_credentials ( - user_id TEXT NOT NULL, - provider_id TEXT NOT NULL CHECK ( - length(provider_id) BETWEEN 1 AND 64 - AND provider_id NOT GLOB '*[^a-z0-9-]*' - AND substr(provider_id, 1, 1) BETWEEN 'a' AND 'z' - AND provider_id NOT GLOB '*--*' - AND substr(provider_id, -1, 1) <> '-' - ), - display_name TEXT NOT NULL CHECK (length(display_name) BETWEEN 1 AND 100), - base_url TEXT NOT NULL CHECK (length(base_url) BETWEEN 1 AND 2048), - model_id TEXT NOT NULL CHECK (length(model_id) BETWEEN 1 AND 100), - protocol TEXT NOT NULL CHECK (protocol = 'openai_chat_completions'), - ciphertext BLOB NOT NULL CHECK (length(ciphertext) > 16), - nonce BLOB NOT NULL CHECK (length(nonce) = 12), - algorithm TEXT NOT NULL CHECK (algorithm = 'AES-256-GCM'), - key_version INTEGER NOT NULL CHECK (key_version > 0), - created_at TEXT NOT NULL, - updated_at TEXT NOT NULL, - expires_at TEXT NOT NULL, - PRIMARY KEY (user_id, provider_id), - FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE -); - -INSERT INTO model_credentials ( - user_id, provider_id, display_name, base_url, model_id, protocol, - ciphertext, nonce, algorithm, key_version, created_at, updated_at, expires_at -) -SELECT - user_id, - provider_id, - CASE provider_id - WHEN 'openrouter' THEN 'OpenRouter' - WHEN 'deepseek' THEN 'DeepSeek' - WHEN 'siliconflow' THEN '硅基流动' - WHEN 'zhipu' THEN '智谱 AI' - END, - CASE provider_id - WHEN 'openrouter' THEN 'https://openrouter.ai/api/v1' - WHEN 'deepseek' THEN 'https://api.deepseek.com' - WHEN 'siliconflow' THEN 'https://api.siliconflow.cn/v1' - WHEN 'zhipu' THEN 'https://open.bigmodel.cn/api/paas/v4' - END, - CASE provider_id - WHEN 'openrouter' THEN 'deepseek/deepseek-v4-flash-0731' - WHEN 'deepseek' THEN 'deepseek-v4-flash' - WHEN 'siliconflow' THEN 'Pro/zai-org/GLM-4.7' - WHEN 'zhipu' THEN 'glm-5.2' - END, - 'openai_chat_completions', - ciphertext, nonce, algorithm, key_version, created_at, updated_at, expires_at -FROM model_credentials_fixed; - -DROP TABLE model_credentials_fixed; - -CREATE INDEX IF NOT EXISTS idx_model_credentials_expiry - ON model_credentials (expires_at); diff --git a/apps/scut-senior/api/src/scut_senior_api/adapters/byok.py b/apps/scut-senior/api/src/scut_senior_api/adapters/byok.py index 74431358..63772d4c 100644 --- a/apps/scut-senior/api/src/scut_senior_api/adapters/byok.py +++ b/apps/scut-senior/api/src/scut_senior_api/adapters/byok.py @@ -3,44 +3,52 @@ import inspect import json from collections.abc import Callable +from dataclasses import dataclass +from typing import Mapping + +from ..byok_catalog import ByokProviderCatalog from ..contracts import WorkflowRunRequest from ..credentials import validate_user_api_key -from ..model_credentials import ModelCredentialError, normalize_base_url -from ..ports import ( - ConversationTurn, - GeneratedAnswer, - RetrievedSource, - StoredModelCredential, -) +from ..ports import ConversationTurn, GeneratedAnswer, RetrievedSource from ..workflow_focus import ( build_response_control_directive, build_workflow_focus, ) from .answer_parsing import ModelAnswerParseError, parse_chat_completion_answer from .http_security import is_timeout_transport_error -from .openrouter import ( - HttpResponse, - JsonHttpClient, - UrllibJsonHttpClient, - _build_action_request, - _parse_action_text, -) +from .openrouter import HttpResponse, JsonHttpClient, UrllibJsonHttpClient + + +OPENROUTER_BYOK_ENDPOINT = "https://openrouter.ai/api/v1/chat/completions" +DEEPSEEK_BYOK_ENDPOINT = "https://api.deepseek.com/chat/completions" +SILICONFLOW_BYOK_ENDPOINT = "https://api.siliconflow.cn/v1/chat/completions" +ZHIPU_BYOK_ENDPOINT = "https://open.bigmodel.cn/api/paas/v4/chat/completions" + +@dataclass(frozen=True, slots=True) +class FixedByokRoute: + endpoint: str + model_id: str -DEFAULT_BYOK_MAX_TOKENS = 12_288 -DEFAULT_BYOK_TEMPERATURE = 0.2 -# Some OpenAI-compatible reasoning models spend completion tokens before -# emitting the action token. This remains only ~4% of the answer ceiling while -# avoiding the observed empty-content result at 16 tokens. -DEFAULT_BYOK_ACTION_MAX_TOKENS = 512 -DEEPSEEK_DIRECT_BASE_URL = "https://api.deepseek.com" -DEEPSEEK_DIRECT_MODEL_ID = "deepseek-v4-flash" -# Calibrated from one low-reasoning direct run: Action stopped at 26 completion -# tokens and the answer at 2265, both with finish_reason=stop. These caps keep -# substantial headroom without retaining the temporary 256k probe ceiling. -DEEPSEEK_ACTION_MAX_TOKENS = 256 -DEEPSEEK_ANSWER_MAX_TOKENS = 8_192 -DEEPSEEK_REASONING_EFFORT = "low" + +FIXED_BYOK_ROUTES: Mapping[str, FixedByokRoute] = { + "openrouter": FixedByokRoute( + OPENROUTER_BYOK_ENDPOINT, + "deepseek/deepseek-v4-flash-0731", + ), + "deepseek": FixedByokRoute( + DEEPSEEK_BYOK_ENDPOINT, + "deepseek-v4-flash", + ), + "siliconflow": FixedByokRoute( + SILICONFLOW_BYOK_ENDPOINT, + "Pro/zai-org/GLM-4.7", + ), + "zhipu": FixedByokRoute( + ZHIPU_BYOK_ENDPOINT, + "glm-5.2", + ), +} class FailClosedJsonHttpClient: @@ -58,17 +66,21 @@ def __init__(self, *, status_code: int, code: str, detail: str): self.detail = detail -class OpenAICompatibleByokGateway: - """Call one user-defined OpenAI Chat Completions connection.""" +class FixedByokModelGateway: + """One fixed model and endpoint per enabled provider, with no fallback.""" def __init__( self, *, http_client: JsonHttpClient | None = None, timeout_seconds: float = 120.0, + catalog: ByokProviderCatalog | None = None, ): self._http_client = http_client or UrllibJsonHttpClient() self._timeout_seconds = timeout_seconds + # Call defaults (max_tokens / temperature) come from the fixed catalog + # so the request builder never hard-codes provider defaults. + self._catalog = catalog or ByokProviderCatalog() self._transport_accepts_cancel_check = ( "cancel_check" in inspect.signature(self._http_client.post_json).parameters @@ -78,26 +90,18 @@ def generate( self, *, api_key: str, - connection: StoredModelCredential, request: WorkflowRunRequest, sources: list[RetrievedSource], history: tuple[ConversationTurn, ...] = (), cancel_check: Callable[[], bool] | None = None, - timeout_seconds: float | None = None, ) -> GeneratedAnswer: - if ( - request.provider_id != connection.provider_id - or request.model_id != connection.model_id - or connection.protocol != "openai_chat_completions" - ): + route = FIXED_BYOK_ROUTES.get(request.provider_id) + if route is None or request.model_id != route.model_id: raise ByokGatewayError( status_code=422, code="byok_route_not_registered", - detail="所选模型与已保存连接不一致。", + detail="所选 BYOK 供应商或模型未登记。", ) - effective_timeout = _effective_timeout( - self._timeout_seconds, timeout_seconds - ) try: validate_user_api_key(api_key) except ValueError: @@ -106,30 +110,17 @@ def generate( code="invalid_model_credential", detail="已保存的 API Key 无效,请重新保存。", ) from None - direct_deepseek = _is_direct_deepseek(connection, base_url=None) + model_entry = self._catalog.resolve_model( + request.provider_id, request.model_id + ) payload = _build_byok_request( request, sources, history, - max_tokens=( - DEEPSEEK_ANSWER_MAX_TOKENS - if direct_deepseek - else DEFAULT_BYOK_MAX_TOKENS - ), - temperature=DEFAULT_BYOK_TEMPERATURE, - reasoning_effort=( - DEEPSEEK_REASONING_EFFORT if direct_deepseek else None - ), + max_tokens=model_entry.default_max_tokens, + temperature=model_entry.default_temperature, + reasoning_effort=model_entry.reasoning_effort, ) - try: - base_url = normalize_base_url(connection.base_url) - except ModelCredentialError: - raise ByokGatewayError( - status_code=422, - code="invalid_byok_base_url", - detail="已保存的 API 地址无效,请重新保存该连接。", - ) from None - endpoint = f"{base_url}/chat/completions" try: request_options = { "headers": { @@ -138,12 +129,12 @@ def generate( "Accept": "application/json", }, "payload": payload, - "timeout_seconds": effective_timeout, + "timeout_seconds": self._timeout_seconds, } if self._transport_accepts_cancel_check: request_options["cancel_check"] = cancel_check response = self._http_client.post_json( - endpoint, + route.endpoint, **request_options, ) except Exception as exc: @@ -162,101 +153,6 @@ def generate( raise _safe_byok_upstream_error(response.status_code) return _parse_byok_answer(response) - def decide_action( - self, - *, - api_key: str, - connection: StoredModelCredential, - request: WorkflowRunRequest, - state: object, - phase: str, - sources: tuple[RetrievedSource, ...] = (), - history: tuple[ConversationTurn, ...] = (), - cancel_check: Callable[[], bool] | None = None, - timeout_seconds: float | None = None, - ) -> str: - """Ask the selected BYOK connection for one bounded Workflow action.""" - - del state, history - if ( - request.provider_id != connection.provider_id - or request.model_id != connection.model_id - or connection.protocol != "openai_chat_completions" - ): - raise ByokGatewayError( - status_code=422, - code="byok_route_not_registered", - detail="所选模型与已保存连接不一致。", - ) - effective_timeout = _effective_timeout( - self._timeout_seconds, timeout_seconds - ) - try: - validate_user_api_key(api_key) - base_url = normalize_base_url(connection.base_url) - except ValueError: - raise ByokGatewayError( - status_code=422, - code="invalid_model_credential", - detail="已保存的 API Key 无效,请重新保存。", - ) from None - except ModelCredentialError: - raise ByokGatewayError( - status_code=422, - code="invalid_byok_base_url", - detail="已保存的 API 地址无效,请重新保存该连接。", - ) from None - - endpoint = f"{base_url}/chat/completions" - direct_deepseek = _is_direct_deepseek(connection, base_url=base_url) - payload = _build_action_request( - request, - phase, - sources, - max_tokens=( - DEEPSEEK_ACTION_MAX_TOKENS - if direct_deepseek - else DEFAULT_BYOK_ACTION_MAX_TOKENS - ), - ) - if direct_deepseek: - payload["reasoning_effort"] = DEEPSEEK_REASONING_EFFORT - try: - request_options = { - "headers": { - "Authorization": f"Bearer {api_key}", - "Content-Type": "application/json", - "Accept": "application/json", - }, - "payload": payload, - "timeout_seconds": effective_timeout, - } - if self._transport_accepts_cancel_check: - request_options["cancel_check"] = cancel_check - response = self._http_client.post_json(endpoint, **request_options) - except Exception as exc: - if is_timeout_transport_error(exc): - raise ByokGatewayError( - status_code=504, - code="byok_provider_timeout", - detail="模型供应商响应超时,请稍后重试。", - ) from None - raise ByokGatewayError( - status_code=503, - code="byok_provider_unavailable", - detail="模型供应商暂时不可用,请稍后重试。", - ) from None - if response.status_code < 200 or response.status_code >= 300: - raise _safe_byok_upstream_error(response.status_code) - try: - return _parse_action_text(response.body) - except ModelAnswerParseError: - raise ByokGatewayError( - status_code=502, - code="byok_provider_invalid_response", - detail="模型供应商返回了无法处理的结果,请稍后重试。", - ) from None - def _build_byok_request( request: WorkflowRunRequest, @@ -314,37 +210,6 @@ def _build_byok_request( return payload -def _effective_timeout(configured: float, remaining: float | None) -> float: - if remaining is None: - return configured - if remaining <= 0: - raise ByokGatewayError( - status_code=504, - code="byok_provider_timeout", - detail="模型供应商响应超时,请稍后重试。", - ) - return min(configured, remaining) - - -def _is_direct_deepseek( - connection: StoredModelCredential, - *, - base_url: str | None, -) -> bool: - normalized_base_url = base_url - if normalized_base_url is None: - try: - normalized_base_url = normalize_base_url(connection.base_url) - except ModelCredentialError: - return False - return ( - connection.provider_id == "deepseek" - and normalized_base_url == DEEPSEEK_DIRECT_BASE_URL - and connection.model_id == DEEPSEEK_DIRECT_MODEL_ID - and connection.protocol == "openai_chat_completions" - ) - - def _safe_byok_upstream_error(status_code: int) -> ByokGatewayError: if status_code in {401, 403}: return ByokGatewayError( diff --git a/apps/scut-senior/api/src/scut_senior_api/adapters/http_security.py b/apps/scut-senior/api/src/scut_senior_api/adapters/http_security.py index fbf403a4..f1f5da63 100644 --- a/apps/scut-senior/api/src/scut_senior_api/adapters/http_security.py +++ b/apps/scut-senior/api/src/scut_senior_api/adapters/http_security.py @@ -1,6 +1,11 @@ from __future__ import annotations -from urllib.request import HTTPRedirectHandler, OpenerDirector, build_opener +from urllib.request import ( + HTTPRedirectHandler, + OpenerDirector, + ProxyHandler, + build_opener, +) class RejectRedirectHandler(HTTPRedirectHandler): @@ -14,6 +19,19 @@ def build_no_redirect_opener() -> OpenerDirector: return build_opener(RejectRedirectHandler()) +def build_direct_no_redirect_opener() -> OpenerDirector: + """Build a provider transport that ignores inherited proxy settings. + + Model keys are sent only to fixed first-party/API-gateway origins. An + accidentally inherited local proxy can make a TCP health check succeed + while every HTTPS request stalls or fails. Provider traffic therefore uses + an explicit empty proxy handler; GitHub OAuth keeps the normal system + transport because its deployment may intentionally require a proxy. + """ + + return build_opener(ProxyHandler({}), RejectRedirectHandler()) + + def is_timeout_transport_error(error: BaseException) -> bool: """Recognize direct and urllib-wrapped timeouts without parsing responses.""" diff --git a/apps/scut-senior/api/src/scut_senior_api/adapters/openrouter.py b/apps/scut-senior/api/src/scut_senior_api/adapters/openrouter.py index 216879f2..eecd7937 100644 --- a/apps/scut-senior/api/src/scut_senior_api/adapters/openrouter.py +++ b/apps/scut-senior/api/src/scut_senior_api/adapters/openrouter.py @@ -25,7 +25,10 @@ build_workflow_focus, ) from .answer_parsing import ModelAnswerParseError, parse_chat_completion_answer -from .http_security import build_no_redirect_opener, is_timeout_transport_error +from .http_security import ( + build_direct_no_redirect_opener, + is_timeout_transport_error, +) OPENROUTER_CHAT_COMPLETIONS_URL = "https://openrouter.ai/api/v1/chat/completions" @@ -66,7 +69,7 @@ def post_json( class UrllibJsonHttpClient: def __init__(self) -> None: - self._opener = build_no_redirect_opener() + self._opener = build_direct_no_redirect_opener() def post_json( self, diff --git a/apps/scut-senior/api/src/scut_senior_api/adapters/openrouter_health.py b/apps/scut-senior/api/src/scut_senior_api/adapters/openrouter_health.py index d69a5115..dbdaa077 100644 --- a/apps/scut-senior/api/src/scut_senior_api/adapters/openrouter_health.py +++ b/apps/scut-senior/api/src/scut_senior_api/adapters/openrouter_health.py @@ -9,7 +9,7 @@ from urllib.request import Request from ..model_catalog import ModelAvailabilityStatus, ModelHealthResult -from .http_security import build_no_redirect_opener +from .http_security import build_direct_no_redirect_opener from .openrouter import HttpResponse @@ -30,7 +30,7 @@ def get_json( class UrllibJsonHttpReadClient: def __init__(self) -> None: - self._opener = build_no_redirect_opener() + self._opener = build_direct_no_redirect_opener() def get_json( self, @@ -78,7 +78,7 @@ def __init__( api_key: str, http_client: JsonHttpReadClient | None = None, clock: Clock = utc_now, - timeout_seconds: float = 10.0, + timeout_seconds: float = 20.0, ) -> None: if not api_key.strip(): raise ValueError("OpenRouter API key is required for credential health") diff --git a/apps/scut-senior/api/src/scut_senior_api/adapters/sqlite.py b/apps/scut-senior/api/src/scut_senior_api/adapters/sqlite.py index 5ac4a0a7..92f3da1f 100644 --- a/apps/scut-senior/api/src/scut_senior_api/adapters/sqlite.py +++ b/apps/scut-senior/api/src/scut_senior_api/adapters/sqlite.py @@ -425,20 +425,6 @@ def cleanup_auth_records(self) -> AuthCleanupCounts: "DELETE FROM auth_sessions WHERE revoked_at IS NOT NULL OR expires_at <= ?", (now,), ).rowcount - tables = { - row["name"] - for row in connection.execute( - "SELECT name FROM sqlite_master WHERE type = 'table'" - ) - } - if "model_credentials" in tables: - # BYOK credentials are account-bound, so session cleanup cannot - # cascade to them. Remove expired ciphertext on the same - # scheduled path instead of merely hiding it at read time. - connection.execute( - "DELETE FROM model_credentials WHERE expires_at <= ?", - (now,), - ) return AuthCleanupCounts(states, sessions) def cleanup_history_records(self) -> HistoryCleanupCounts: @@ -519,13 +505,6 @@ def cleanup_material_records(self) -> MaterialCleanupCounts: """, (now, now), ).rowcount - if "contribution_attachments" in tables: - # Attachment payloads have their own TTL and are not covered - # by clearing a contribution's text snapshot. - connection.execute( - "DELETE FROM contribution_attachments WHERE expires_at <= ?", - (now,), - ) return MaterialCleanupCounts(materials, cleared) # ------------------------------------------------------------------ @@ -670,10 +649,6 @@ def delete_account(self, user_id: str) -> dict[str, int]: "DELETE FROM temporary_materials WHERE user_id = ?", (normalized_user_id,), ).rowcount, - "private_knowledge_items": connection.execute( - "DELETE FROM private_knowledge_items WHERE user_id = ?", - (normalized_user_id,), - ).rowcount, "contributions": connection.execute( "DELETE FROM contributions WHERE user_id = ?", (normalized_user_id,), @@ -1322,10 +1297,6 @@ def _stored_model_credential(row: sqlite3.Row) -> StoredModelCredential: return StoredModelCredential( user_id=UUID(row["user_id"]), provider_id=row["provider_id"], - display_name=row["display_name"], - base_url=row["base_url"], - model_id=row["model_id"], - protocol=row["protocol"], ciphertext=bytes(row["ciphertext"]), nonce=bytes(row["nonce"]), algorithm=row["algorithm"], @@ -1340,9 +1311,8 @@ def list_model_credentials(self, user_id: UUID) -> list[StoredModelCredential]: with self._connect() as connection: rows = connection.execute( """ - SELECT user_id, provider_id, display_name, base_url, model_id, - protocol, ciphertext, nonce, algorithm, key_version, - expires_at, updated_at + SELECT user_id, provider_id, ciphertext, nonce, algorithm, + key_version, expires_at, updated_at FROM model_credentials WHERE user_id = ? AND expires_at > ? ORDER BY provider_id @@ -1359,9 +1329,8 @@ def get_model_credential( with self._connect() as connection: row = connection.execute( """ - SELECT user_id, provider_id, display_name, base_url, model_id, - protocol, ciphertext, nonce, algorithm, key_version, - expires_at, updated_at + SELECT user_id, provider_id, ciphertext, nonce, algorithm, + key_version, expires_at, updated_at FROM model_credentials WHERE user_id = ? AND provider_id = ? AND expires_at > ? """, @@ -1374,10 +1343,6 @@ def upsert_model_credential( *, user_id: UUID, provider_id: str, - display_name: str, - base_url: str, - model_id: str, - protocol: str, ciphertext: bytes, nonce: bytes, algorithm: str, @@ -1400,15 +1365,10 @@ def upsert_model_credential( connection.execute( """ INSERT INTO model_credentials ( - user_id, provider_id, display_name, base_url, model_id, - protocol, ciphertext, nonce, algorithm, key_version, - created_at, updated_at, expires_at - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + user_id, provider_id, ciphertext, nonce, algorithm, + key_version, created_at, updated_at, expires_at + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(user_id, provider_id) DO UPDATE SET - display_name = excluded.display_name, - base_url = excluded.base_url, - model_id = excluded.model_id, - protocol = excluded.protocol, ciphertext = excluded.ciphertext, nonce = excluded.nonce, algorithm = excluded.algorithm, @@ -1419,10 +1379,6 @@ def upsert_model_credential( ( str(user_id), provider_id, - display_name, - base_url, - model_id, - protocol, sqlite3.Binary(ciphertext), sqlite3.Binary(nonce), algorithm, @@ -1434,9 +1390,8 @@ def upsert_model_credential( ) row = connection.execute( """ - SELECT user_id, provider_id, display_name, base_url, model_id, - protocol, ciphertext, nonce, algorithm, key_version, - expires_at, updated_at + SELECT user_id, provider_id, ciphertext, nonce, algorithm, + key_version, expires_at, updated_at FROM model_credentials WHERE user_id = ? AND provider_id = ? """, @@ -2014,12 +1969,6 @@ def record_exam_plan_decision( if decision not in {"confirmed", "edited", "rejected"}: raise ValueError("invalid exam plan decision") with self._connect() as connection: - owner = connection.execute( - "SELECT 1 FROM conversations WHERE conversation_id = ? AND user_id = ?", - (str(conversation_id), user_id), - ).fetchone() - if owner is None: - raise LookupError("conversation not found") connection.execute( "INSERT INTO exam_plan_decisions " "(decision_id, conversation_id, user_id, decision, plan_json, created_at) " diff --git a/apps/scut-senior/api/src/scut_senior_api/adapters/zhipu.py b/apps/scut-senior/api/src/scut_senior_api/adapters/zhipu.py index 4d2bb32c..453ac994 100644 --- a/apps/scut-senior/api/src/scut_senior_api/adapters/zhipu.py +++ b/apps/scut-senior/api/src/scut_senior_api/adapters/zhipu.py @@ -26,6 +26,10 @@ # https://docs.bigmodel.cn/cn/api-reference/错误码 and remain stable. ZHIPU_ERROR_CODE_THROTTLED = "1305" ZHIPU_ERROR_MESSAGE_THROTTLED = "该模型当前访问量过大,请稍后再试。" +ZHIPU_ERROR_CODE_USER_RATE_LIMITED = "1302" +ZHIPU_ERROR_MESSAGE_USER_RATE_LIMITED = "智谱账号请求过于频繁,请稍后再试。" +ZHIPU_ERROR_CODE_DAILY_LIMIT_REACHED = "1304" +ZHIPU_ERROR_MESSAGE_DAILY_LIMIT_REACHED = "智谱账号今日调用次数已达上限,请明日再试。" class ZhipuPlatformGatewayError(RuntimeError): @@ -148,6 +152,18 @@ def _rate_limit_error(response: HttpResponse) -> ZhipuPlatformGatewayError: """ code = _safe_error_code(response.body) + if code == ZHIPU_ERROR_CODE_USER_RATE_LIMITED: + return ZhipuPlatformGatewayError( + status_code=429, + code="platform_rate_limited", + detail=ZHIPU_ERROR_MESSAGE_USER_RATE_LIMITED, + ) + if code == ZHIPU_ERROR_CODE_DAILY_LIMIT_REACHED: + return ZhipuPlatformGatewayError( + status_code=429, + code="platform_daily_quota_exhausted", + detail=ZHIPU_ERROR_MESSAGE_DAILY_LIMIT_REACHED, + ) if code == ZHIPU_ERROR_CODE_THROTTLED: return ZhipuPlatformGatewayError( status_code=429, diff --git a/apps/scut-senior/api/src/scut_senior_api/agent_loop.py b/apps/scut-senior/api/src/scut_senior_api/agent_loop.py index 12f91a09..feec336e 100644 --- a/apps/scut-senior/api/src/scut_senior_api/agent_loop.py +++ b/apps/scut-senior/api/src/scut_senior_api/agent_loop.py @@ -9,6 +9,7 @@ from __future__ import annotations from dataclasses import dataclass, replace +import re from typing import Literal, Protocol from .ports import ConversationTurn, GeneratedAnswer, ModelGateway, RetrievedSource @@ -91,6 +92,31 @@ def decide(self, request, state, phase, *, sources=(), history=()) -> ActionKind return choose_next_action(state, phase=phase, workflow_type=request.workflow_type.value) +_EXACT_RETRIEVAL_MARKER = re.compile( + r"(?:第\s*\d+\s*题|\b20\d{2}\b|\d{4}\s*年)", re.IGNORECASE +) + + +def should_retrieve_with_rewrite( + request: WorkflowRunRequest, + sources: list[RetrievedSource] | tuple[RetrievedSource, ...], +) -> bool: + """Small deterministic baseline for the optional second retrieval. + + This intentionally uses only evidence visible to the service: no candidate + is always insufficient; an explicitly year/question-shaped request also + retries when none of the returned chunks carries a question locator. It + is deliberately conservative so the baseline does not manufacture an + agent-like planner or spend a second retrieval on ordinary concept queries. + """ + if not sources: + return True + question = request.user_input + if not _EXACT_RETRIEVAL_MARKER.search(question): + return False + return not any(source.question_id for source in sources) + + def parse_model_action(raw: str, *, workflow_type: str) -> ActionKind | None: """Parse a model's single-action response and apply the Workflow allowlist.""" normalized = raw.strip().lower().replace("`", "") diff --git a/apps/scut-senior/api/src/scut_senior_api/byok_catalog.py b/apps/scut-senior/api/src/scut_senior_api/byok_catalog.py index 983b1cae..48816851 100644 --- a/apps/scut-senior/api/src/scut_senior_api/byok_catalog.py +++ b/apps/scut-senior/api/src/scut_senior_api/byok_catalog.py @@ -1,24 +1,194 @@ from __future__ import annotations +from dataclasses import dataclass, replace +from enum import StrEnum +from typing import Literal -BYOK_CATALOG_VERSION = "byok-connections-v1" +BYOK_CATALOG_VERSION = "byok-models-v4" -class ByokProviderCatalog: - """Advertise the custom-connection BYOK capability. - Provider profiles are user-owned records and therefore do not belong in - the process-wide model catalog. Authenticated users obtain their own - redacted connections from ``/api/v1/model-credentials``. +class ByokProviderId(StrEnum): + OPENROUTER = "openrouter" + DEEPSEEK = "deepseek" + SILICONFLOW = "siliconflow" + ZHIPU = "zhipu" + + +class EndpointPolicy(StrEnum): + FIXED_PROVIDER_ENDPOINT = "fixed_provider_endpoint" + + +class ByokProviderNotRegistered(ValueError): + pass + + +class ByokModelNotRegistered(ValueError): + pass + + +class ByokProviderDisabled(RuntimeError): + pass + + +@dataclass(frozen=True, slots=True) +class ByokModelEntry: + """One fixed model per BYOK provider. + + ``default_max_tokens`` and ``default_temperature`` are server-side call + defaults declared next to the model (adopted from DSH's adapter-owned + capability metadata). They stay out of the public payload on purpose: the + web client keeps a fail-closed frozen copy with exact-key matching, so + server-side fields must not drift that contract. """ + model_id: str + company: str + display_name: str + input_modalities: tuple[str, ...] = ("text",) + supports_structured_outputs: bool = True + default_max_tokens: int = 2048 + default_temperature: float = 0.2 + reasoning_effort: Literal["low", "high", "max"] | None = None + + def as_public_dict(self) -> dict[str, str]: + return { + "model_id": self.model_id, + "company": self.company, + "display_name": self.display_name, + } + + +@dataclass(frozen=True, slots=True) +class ByokProviderEntry: + """Fixed provider/model metadata plus a runtime-derived availability gate.""" + + provider_id: ByokProviderId + company: str + display_name: str + endpoint_policy: EndpointPolicy + models: tuple[ByokModelEntry, ...] + enabled: bool = False + models_confirmed: bool = True + custom_base_url_allowed: bool = False + + def as_public_dict(self) -> dict[str, object]: + return { + "provider_id": self.provider_id.value, + "company": self.company, + "display_name": self.display_name, + "enabled": self.enabled, + "models_confirmed": self.models_confirmed, + "models": [model.as_public_dict() for model in self.models], + "custom_base_url_allowed": self.custom_base_url_allowed, + "endpoint_policy": self.endpoint_policy.value, + } + + +_BYOK_PROVIDER_ENTRIES = ( + ByokProviderEntry( + provider_id=ByokProviderId.OPENROUTER, + company="OpenRouter", + display_name="OpenRouter", + endpoint_policy=EndpointPolicy.FIXED_PROVIDER_ENDPOINT, + models=( + ByokModelEntry( + model_id="deepseek/deepseek-v4-flash-0731", + company="DeepSeek", + display_name="DeepSeek V4 Flash 0731", + # DeepSeek is a reasoning model: its thinking consumes part of + # the token budget, so a small max_tokens can return an empty + # final ``content``. Keep headroom for reasoning + answer. + default_max_tokens=12288, + reasoning_effort="low", + ), + ), + ), + ByokProviderEntry( + provider_id=ByokProviderId.DEEPSEEK, + company="DeepSeek", + display_name="DeepSeek", + endpoint_policy=EndpointPolicy.FIXED_PROVIDER_ENDPOINT, + models=( + ByokModelEntry( + model_id="deepseek-v4-flash", + company="DeepSeek", + display_name="DeepSeek V4 Flash", + # Same reasoning-model note as the OpenRouter DeepSeek route. + default_max_tokens=12288, + reasoning_effort="low", + ), + ), + ), + ByokProviderEntry( + provider_id=ByokProviderId.SILICONFLOW, + company="SiliconFlow", + display_name="硅基流动", + endpoint_policy=EndpointPolicy.FIXED_PROVIDER_ENDPOINT, + models=( + ByokModelEntry( + model_id="Pro/zai-org/GLM-4.7", + company="Z.ai", + display_name="GLM-4.7 Pro", + ), + ), + ), + ByokProviderEntry( + provider_id=ByokProviderId.ZHIPU, + company="Zhipu AI", + display_name="智谱 AI", + endpoint_policy=EndpointPolicy.FIXED_PROVIDER_ENDPOINT, + models=( + ByokModelEntry( + model_id="glm-5.2", + company="Zhipu AI", + display_name="GLM-5.2", + ), + ), + ), +) + + +class ByokProviderCatalog: + """Strict four-provider whitelist with one fixed model per provider.""" + def __init__(self, *, runtime_enabled: bool = False) -> None: - self.runtime_enabled = runtime_enabled - self.entries: tuple[()] = () + self.entries = tuple( + replace( + entry, + enabled=runtime_enabled, + ) + for entry in _BYOK_PROVIDER_ENTRIES + ) + self._by_provider_id = { + entry.provider_id.value: entry for entry in self.entries + } + + def resolve_provider(self, provider_id: str) -> ByokProviderEntry: + entry = self._by_provider_id.get(provider_id) + if entry is None: + raise ByokProviderNotRegistered("BYOK provider is not registered") + return entry + + def require_enabled(self, provider_id: str) -> ByokProviderEntry: + entry = self.resolve_provider(provider_id) + if not entry.enabled: + raise ByokProviderDisabled("BYOK provider is disabled") + return entry + + def resolve_model(self, provider_id: str, model_id: str) -> ByokModelEntry: + entry = self.resolve_provider(provider_id) + model = next( + (model for model in entry.models if model.model_id == model_id), + None, + ) + if model is None: + raise ByokModelNotRegistered("BYOK model is not registered") + return model def public_payload(self) -> dict[str, object]: return { "catalog_version": BYOK_CATALOG_VERSION, - "enabled": self.runtime_enabled, - "providers": [], + "enabled": any(entry.enabled for entry in self.entries), + "providers": [entry.as_public_dict() for entry in self.entries], } diff --git a/apps/scut-senior/api/src/scut_senior_api/config.py b/apps/scut-senior/api/src/scut_senior_api/config.py index eec934ae..060f9fed 100644 --- a/apps/scut-senior/api/src/scut_senior_api/config.py +++ b/apps/scut-senior/api/src/scut_senior_api/config.py @@ -50,7 +50,7 @@ class Settings: agent_event_stream_enabled: bool = False # AB test only: model asks for the next bounded Action; invalid/unclear # output falls back to the deterministic policy. - agent_decision_mode: Literal["rule", "model"] = "rule" + agent_decision_mode: Literal["rule", "model", "shadow", "deterministic"] = "rule" # Iteration 7.5 (SOP §12A Group B): in-process periodic cleanup scheduler. # Decision gate confirmed form = in-process daemon thread for single-host # deployment; disabling restores startup/access-triggered cleanup only. @@ -224,9 +224,9 @@ def assert_safe(self) -> None: raise UnsafeRuntimeConfiguration( "SCUT_SENIOR_AGENT_EVENT_STREAM_ENABLED must be boolean" ) - if self.agent_decision_mode not in {"rule", "model"}: + if self.agent_decision_mode not in {"rule", "model", "shadow", "deterministic"}: raise UnsafeRuntimeConfiguration( - "SCUT_SENIOR_AGENT_DECISION_MODE must be rule or model" + "SCUT_SENIOR_AGENT_DECISION_MODE must be rule, model, shadow or deterministic" ) if self.dense_retrieval_enabled and self.retrieval_mode == "local_corpus": if self.onnx_embedding_model_path is None: diff --git a/apps/scut-senior/api/src/scut_senior_api/contracts.py b/apps/scut-senior/api/src/scut_senior_api/contracts.py index 8c59dece..971517f1 100644 --- a/apps/scut-senior/api/src/scut_senior_api/contracts.py +++ b/apps/scut-senior/api/src/scut_senior_api/contracts.py @@ -221,22 +221,18 @@ def strip_title(cls, value: str) -> str: class ModelCredentialUpsert(ContractModel): api_key: Annotated[SecretStr, Field(min_length=1, max_length=8192)] - display_name: Annotated[str, Field(min_length=1, max_length=100)] - base_url: Annotated[str, Field(min_length=1, max_length=2048)] - model_id: Annotated[str, Field(min_length=1, max_length=100)] - protocol: Literal["openai_chat_completions"] = "openai_chat_completions" class ModelCredentialStatus(ContractModel): - # Kept as provider_id on the wire for Workflow compatibility. It is now a - # user-chosen connection id rather than a server-owned vendor enum. - provider_id: Annotated[str, Field(min_length=1, max_length=64)] - display_name: Annotated[str, Field(min_length=1, max_length=100)] - base_url: Annotated[str, Field(min_length=1, max_length=2048)] - model_id: Annotated[str, Field(min_length=1, max_length=100)] - protocol: Literal["openai_chat_completions"] - configured: Literal[True] - masked_key: Literal["••••••••"] + provider_id: Literal["openrouter", "deepseek", "siliconflow", "zhipu"] + model_id: Literal[ + "deepseek/deepseek-v4-flash-0731", + "deepseek-v4-flash", + "Pro/zai-org/GLM-4.7", + "glm-5.2", + ] + configured: bool + masked_key: Literal["••••••••"] | None expires_at: datetime | None # DSH credential-seam describe semantics: safe status fields that never # expose the secret value. ``writable`` is whether a replacement could be @@ -247,10 +243,29 @@ class ModelCredentialStatus(ContractModel): @model_validator(mode="after") def enforce_configuration_metadata(self) -> "ModelCredentialStatus": - if self.expires_at is None or self.updated_at is None: + expected_model = { + "openrouter": "deepseek/deepseek-v4-flash-0731", + "deepseek": "deepseek-v4-flash", + "siliconflow": "Pro/zai-org/GLM-4.7", + "zhipu": "glm-5.2", + }[self.provider_id] + if self.model_id != expected_model: + raise ValueError("credential provider and model must match the fixed catalog") + if self.configured and ( + self.masked_key is None or self.expires_at is None or self.updated_at is None + ): raise ValueError( "configured credentials require masked_key, expires_at and updated_at" ) + if not self.configured and ( + self.masked_key is not None + or self.expires_at is not None + or self.updated_at is not None + or self.writable + ): + raise ValueError( + "unconfigured credentials cannot expose key metadata" + ) return self @@ -406,6 +421,7 @@ class TraceSafeResult(ContractModel): # prompts and private payloads never enter the student-visible Trace. decision_call_count: Annotated[int | None, Field(ge=0)] = None model_action_accepted_count: Annotated[int | None, Field(ge=0)] = None + model_action_shadow_count: Annotated[int | None, Field(ge=0)] = None answer_call_count: Annotated[int | None, Field(ge=0)] = None provider_retry_count: Annotated[int | None, Field(ge=0)] = None guard_retry_count: Annotated[int | None, Field(ge=0)] = None @@ -867,7 +883,6 @@ class AccountDeletionSummary(ContractModel): workflow_runs: int feedback: int temporary_materials: int - private_knowledge_items: int contributions: int model_credentials: int auth_sessions: int diff --git a/apps/scut-senior/api/src/scut_senior_api/eval_runner.py b/apps/scut-senior/api/src/scut_senior_api/eval_runner.py index ef1a7e1f..bc54a40e 100644 --- a/apps/scut-senior/api/src/scut_senior_api/eval_runner.py +++ b/apps/scut-senior/api/src/scut_senior_api/eval_runner.py @@ -215,6 +215,7 @@ def _extract_runtime_metrics(result: Any) -> dict[str, object]: "duration_ms", "decision_call_count", "model_action_accepted_count", + "model_action_shadow_count", "answer_call_count", "provider_retry_count", "guard_retry_count", @@ -272,8 +273,10 @@ def run_evaluation( case_retries: int = 0, agent_decision_mode: str = "rule", ) -> dict[str, object]: - if agent_decision_mode not in {"rule", "model"}: - raise ValueError("agent_decision_mode must be 'rule' or 'model'") + if agent_decision_mode not in {"rule", "model", "shadow", "deterministic"}: + raise ValueError( + "agent_decision_mode must be 'rule', 'model', 'shadow' or 'deterministic'" + ) cases = json.loads(cases_path.read_text(encoding="utf-8")) runner = ( json.loads(runner_path.read_text(encoding="utf-8")) @@ -464,7 +467,7 @@ def _parser() -> argparse.ArgumentParser: ) parser.add_argument( "--agent-decision-mode", - choices=("rule", "model"), + choices=("rule", "model", "shadow", "deterministic"), default="rule", help="bounded Action decision mode for AB comparisons; default rule", ) diff --git a/apps/scut-senior/api/src/scut_senior_api/fusion.py b/apps/scut-senior/api/src/scut_senior_api/fusion.py index 081dd291..40119089 100644 --- a/apps/scut-senior/api/src/scut_senior_api/fusion.py +++ b/apps/scut-senior/api/src/scut_senior_api/fusion.py @@ -8,9 +8,12 @@ from __future__ import annotations from collections import defaultdict +from collections.abc import Collection from typing import Sequence DEFAULT_RRF_K = 60 +DEFAULT_LEXICAL_WEIGHT = 1.0 +DEFAULT_DENSE_WEIGHT = 0.85 def reciprocal_rank_fusion( @@ -34,3 +37,74 @@ def reciprocal_rank_fusion( scores[chunk_id] += 1.0 / (k + rank) ordered = sorted(scores.items(), key=lambda item: (-item[1], item[0])) return [chunk_id for chunk_id, _ in ordered[:top_n]] + + +def weighted_reciprocal_rank_fusion( + ranked_lists: Sequence[Sequence[str]], + *, + weights: Sequence[float], + k: int = DEFAULT_RRF_K, + top_n: int, +) -> list[str]: + """Fuse ranked lists while retaining a fixed, auditable leg preference. + + Sparse and dense scores are not directly comparable. Weighting their RRF + contributions, rather than raw scores, lets the lexical leg remain the + slightly stronger default for course titles, years and question numbers + while allowing dense-only candidates to compete for the head of the list. + """ + if len(ranked_lists) != len(weights): + raise ValueError("ranked_lists and weights must have the same length") + if k < 1: + raise ValueError("rrf k must be >= 1") + if top_n < 0: + raise ValueError("top_n must be >= 0") + if any(weight <= 0 for weight in weights): + raise ValueError("RRF weights must be positive") + + scores: dict[str, float] = defaultdict(float) + for weight, ranking in zip(weights, ranked_lists, strict=True): + for rank, chunk_id in enumerate(ranking, start=1): + scores[chunk_id] += weight / (k + rank) + ordered = sorted(scores.items(), key=lambda item: (-item[1], item[0])) + return [chunk_id for chunk_id, _ in ordered[:top_n]] + + +def rank_hybrid_candidates( + lexical_ranked: Sequence[str], + dense_ranked: Sequence[str], + *, + protected_ids: Collection[str] = (), + limit: int, + lexical_weight: float = DEFAULT_LEXICAL_WEIGHT, + dense_weight: float = DEFAULT_DENSE_WEIGHT, +) -> list[str]: + """Return a cross-leg ranking with exact lexical matches kept at the head. + + Only explicit exact-match IDs are protected. Every other sparse and dense + candidate participates in weighted RRF, replacing the old behaviour where + dense results could only fill slots left empty by lexical retrieval. + """ + if limit < 1: + raise ValueError("limit must be positive") + protected = set(protected_ids) + result: list[str] = [] + seen: set[str] = set() + for chunk_id in lexical_ranked: + if chunk_id in protected and chunk_id not in seen: + result.append(chunk_id) + seen.add(chunk_id) + if len(result) == limit: + return result + fused = weighted_reciprocal_rank_fusion( + [lexical_ranked, dense_ranked], + weights=[lexical_weight, dense_weight], + top_n=limit + len(protected), + ) + for chunk_id in fused: + if chunk_id not in seen: + result.append(chunk_id) + seen.add(chunk_id) + if len(result) == limit: + break + return result diff --git a/apps/scut-senior/api/src/scut_senior_api/main.py b/apps/scut-senior/api/src/scut_senior_api/main.py index f9fe2ee8..9597a960 100644 --- a/apps/scut-senior/api/src/scut_senior_api/main.py +++ b/apps/scut-senior/api/src/scut_senior_api/main.py @@ -18,7 +18,7 @@ from .adapters.byok import ( ByokGatewayError, FailClosedJsonHttpClient, - OpenAICompatibleByokGateway, + FixedByokModelGateway, ) from .adapters.github import ( FailClosedHttpTransport, @@ -398,7 +398,10 @@ def create_app( ) if active_settings.app_env == "test" and byok_http_client is None: byok_http_client = FailClosedJsonHttpClient() - byok_model = OpenAICompatibleByokGateway(http_client=byok_http_client) + byok_model = FixedByokModelGateway( + http_client=byok_http_client, + catalog=model_catalog.byok_catalog, + ) oauth_adapter = github_oauth_adapter if active_settings.identity_mode == "github_oauth" and oauth_adapter is None: oauth_adapter = GitHubOAuthAdapter( @@ -413,7 +416,7 @@ def create_app( ) agent_decision = ( ModelAgentDecision(model) - if active_settings.agent_decision_mode == "model" + if active_settings.agent_decision_mode in {"model", "shadow"} else RuleBasedAgentDecision() ) service = IterationZeroService( diff --git a/apps/scut-senior/api/src/scut_senior_api/model_catalog.py b/apps/scut-senior/api/src/scut_senior_api/model_catalog.py index 0ed61dd6..5039fef0 100644 --- a/apps/scut-senior/api/src/scut_senior_api/model_catalog.py +++ b/apps/scut-senior/api/src/scut_senior_api/model_catalog.py @@ -159,7 +159,7 @@ class ModelCatalogResponse(BaseModel): real_platform_default_available: bool health_checked_at: datetime | None byok_available: bool - byok_catalog_version: Literal["byok-connections-v1"] + byok_catalog_version: Literal["byok-models-v4"] byok_providers: list[PublicByokProviderEntry] quota_notice: str quota_exhausted_message: str diff --git a/apps/scut-senior/api/src/scut_senior_api/model_credentials.py b/apps/scut-senior/api/src/scut_senior_api/model_credentials.py index 9f543326..63aa699d 100644 --- a/apps/scut-senior/api/src/scut_senior_api/model_credentials.py +++ b/apps/scut-senior/api/src/scut_senior_api/model_credentials.py @@ -1,13 +1,11 @@ from __future__ import annotations -import ipaddress -import re -from urllib.parse import urlsplit, urlunsplit - -import idna - from .auth import AuthRequired, AuthenticatedPrincipal -from .byok_catalog import ByokProviderCatalog +from .byok_catalog import ( + ByokProviderCatalog, + ByokProviderDisabled, + ByokProviderNotRegistered, +) from .contracts import ModelCredentialStatus, ModelCredentialUpsert from .credentials import ( CredentialCipher, @@ -19,7 +17,6 @@ MASKED_MODEL_KEY = "••••••••" -CONNECTION_ID_PATTERN = re.compile(r"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$") class ModelCredentialError(RuntimeError): @@ -30,100 +27,8 @@ def __init__(self, *, status_code: int, code: str, detail: str): self.detail = detail -def normalize_connection_id(value: str) -> str: - connection_id = value.strip() - if len(connection_id) > 64 or CONNECTION_ID_PATTERN.fullmatch(connection_id) is None: - raise ModelCredentialError( - status_code=422, - code="invalid_byok_connection_id", - detail="连接 ID 只能使用小写字母、数字和连字符,并且必须以字母开头。", - ) - return connection_id - - -def normalize_base_url(value: str) -> str: - """Validate the server-side destination before any credential is stored. - - The hosted backend accepts HTTPS provider endpoints only. Redirects remain - disabled by the shared HTTP transport, and obvious local/private targets - are rejected so a saved API key cannot be sent to a loopback or metadata - service by mistake. - """ - - raw = value.strip().rstrip("/") - try: - parsed = urlsplit(raw) - port = parsed.port - except ValueError: - parsed = None - port = None - if ( - parsed is None - or parsed.scheme != "https" - or not parsed.hostname - or parsed.username is not None - or parsed.password is not None - or parsed.query - or parsed.fragment - ): - raise ModelCredentialError( - status_code=422, - code="invalid_byok_base_url", - detail="API 地址必须是无账号、查询参数和片段的 HTTPS Base URL。", - ) - hostname = parsed.hostname.casefold().rstrip(".") - if hostname == "localhost" or hostname.endswith((".localhost", ".local", ".internal")): - raise ModelCredentialError( - status_code=422, - code="invalid_byok_base_url", - detail="API 地址不能指向本机或内网主机。", - ) - try: - address = ipaddress.ip_address(hostname) - except ValueError: - address = None - if address is None: - try: - hostname = idna.encode( - hostname, uts46=True, std3_rules=True - ).decode("ascii").casefold().rstrip(".") - except (idna.IDNAError, UnicodeError): - raise ModelCredentialError( - status_code=422, - code="invalid_byok_base_url", - detail="API 地址包含无效的主机名。", - ) from None - if "." not in hostname: - raise ModelCredentialError( - status_code=422, - code="invalid_byok_base_url", - detail="API 地址必须使用完整的公网主机名。", - ) - if hostname == "localhost" or hostname.endswith( - (".localhost", ".local", ".internal") - ): - raise ModelCredentialError( - status_code=422, - code="invalid_byok_base_url", - detail="API 地址不能指向本机或内网主机。", - ) - if address is not None and not address.is_global: - raise ModelCredentialError( - status_code=422, - code="invalid_byok_base_url", - detail="API 地址不能指向本机或内网地址。", - ) - host_for_netloc = ( - f"[{hostname}]" - if address is not None and address.version == 6 - else hostname - ) - netloc = host_for_netloc if port is None else f"{host_for_netloc}:{port}" - return urlunsplit(("https", netloc, parsed.path.rstrip("/"), "", "")) - - class ModelCredentialManager: - """Own encrypted user-defined OpenAI-compatible model connections.""" + """Owns session-bound credential validation, AEAD, and safe public metadata.""" def __init__( self, @@ -140,13 +45,20 @@ def list_statuses( self, principal: AuthenticatedPrincipal ) -> list[ModelCredentialStatus]: self._require_active_session(principal) - self._require_runtime() session_active = self._repository.session_is_active( principal.user_id, principal.auth_session_id ) - return [ - self._status(record, session_active) + configured = { + record.provider_id: record for record in self._repository.list_model_credentials(principal.user_id) + } + return [ + self._status( + entry.provider_id.value, + configured.get(entry.provider_id.value), + session_active, + ) + for entry in self._catalog.entries ] def replace( @@ -155,7 +67,7 @@ def replace( provider_id: str, payload: ModelCredentialUpsert, ) -> ModelCredentialStatus: - self._require_runtime() + entry = self._require_enabled_provider(provider_id) cipher = self._cipher if cipher is None: raise ModelCredentialError( @@ -164,16 +76,6 @@ def replace( detail="用户 API Key 加密服务未配置,当前无法保存凭据。", ) self._require_active_session(principal) - connection_id = normalize_connection_id(provider_id) - display_name = payload.display_name.strip() - model_id = payload.model_id.strip() - if not display_name or not model_id or any(ord(char) < 32 for char in display_name + model_id): - raise ModelCredentialError( - status_code=422, - code="invalid_byok_connection", - detail="连接名称和模型 ID 不能为空或包含控制字符。", - ) - base_url = normalize_base_url(payload.base_url) api_key = payload.api_key.get_secret_value() try: validate_user_api_key(api_key) @@ -186,66 +88,38 @@ def replace( encrypted = cipher.encrypt( api_key, user_id=principal.user_id, - provider_id=connection_id, + provider_id=provider_id, ) record = self._repository.upsert_model_credential( user_id=principal.user_id, - provider_id=connection_id, - display_name=display_name, - base_url=base_url, - model_id=model_id, - protocol=payload.protocol, + provider_id=provider_id, ciphertext=encrypted.ciphertext, nonce=encrypted.nonce, algorithm=encrypted.algorithm, key_version=encrypted.key_version, ) - return self._status(record, True) + # The credential is scoped to the user, not the session, so it persists + # across re-login on another device. The active-session check above is + # what authorizes this write. + return self._status(entry.provider_id.value, record, True) def delete( self, principal: AuthenticatedPrincipal, provider_id: str ) -> None: - self._require_runtime() - connection_id = normalize_connection_id(provider_id) + self._resolve_provider(provider_id) self._require_active_session(principal) deleted = self._repository.delete_model_credential( - principal.user_id, connection_id + principal.user_id, provider_id ) if not deleted and not self._repository.session_is_active( principal.user_id, principal.auth_session_id ): raise AuthRequired() - def get_connection( - self, - principal: AuthenticatedPrincipal, - provider_id: str, - model_id: str, - ) -> StoredModelCredential: - self._require_runtime() - connection_id = normalize_connection_id(provider_id) - self._require_active_session(principal) - record = self._repository.get_model_credential( - principal.user_id, connection_id - ) - if record is None: - raise ModelCredentialError( - status_code=409, - code="model_credential_not_configured", - detail="当前账号尚未保存该模型连接。", - ) - if record.model_id != model_id: - raise ModelCredentialError( - status_code=422, - code="byok_model_not_registered", - detail="所选模型与已保存连接不一致。", - ) - return record - def load_api_key( self, principal: AuthenticatedPrincipal, provider_id: str ) -> str: - self._require_runtime() + self._require_enabled_provider(provider_id) cipher = self._cipher if cipher is None: raise ModelCredentialError( @@ -253,9 +127,8 @@ def load_api_key( code="byok_encryption_unavailable", detail="用户 API Key 加密服务未配置。", ) - connection_id = normalize_connection_id(provider_id) record = self._repository.get_model_credential( - principal.user_id, connection_id + principal.user_id, provider_id ) if record is None: if not self._repository.session_is_active( @@ -265,7 +138,7 @@ def load_api_key( raise ModelCredentialError( status_code=409, code="model_credential_not_configured", - detail="当前账号尚未保存该模型连接。", + detail="当前账号尚未保存该供应商的 API Key。", ) try: api_key = cipher.decrypt( @@ -276,7 +149,7 @@ def load_api_key( algorithm=record.algorithm, ), user_id=principal.user_id, - provider_id=connection_id, + provider_id=provider_id, ) except CredentialDecryptionError: raise ModelCredentialError( @@ -284,34 +157,65 @@ def load_api_key( code="model_credential_unavailable", detail="已保存的 API Key 无法解密,请删除后重新保存。", ) from None + # Revalidate immediately before the caller is allowed to submit the + # provider request. Logout/revoke/expiry therefore invalidates late work. self._require_active_session(principal) return api_key - def _require_runtime(self) -> None: - if not self._catalog.runtime_enabled: - raise ModelCredentialError( - status_code=503, - code="byok_provider_disabled", - detail="自定义模型连接当前未启用。", - ) - def _require_active_session(self, principal: AuthenticatedPrincipal) -> None: if principal.is_mock or not self._repository.session_is_active( principal.user_id, principal.auth_session_id ): raise AuthRequired() + def _resolve_provider(self, provider_id: str): + try: + return self._catalog.resolve_provider(provider_id) + except ByokProviderNotRegistered: + raise ModelCredentialError( + status_code=422, + code="byok_provider_not_registered", + detail="该 BYOK 供应商未登记。", + ) from None + + def _require_enabled_provider(self, provider_id: str): + try: + return self._catalog.require_enabled(provider_id) + except ByokProviderNotRegistered: + raise ModelCredentialError( + status_code=422, + code="byok_provider_not_registered", + detail="该 BYOK 供应商未登记。", + ) from None + except ByokProviderDisabled: + raise ModelCredentialError( + status_code=503, + code="byok_provider_disabled", + detail="该 BYOK 供应商当前未启用。", + ) from None + def _status( self, - record: StoredModelCredential, + provider_id: str, + record: StoredModelCredential | None, session_active: bool, ) -> ModelCredentialStatus: + entry = self._catalog.resolve_provider(provider_id) + model_id = entry.models[0].model_id + if record is None: + return ModelCredentialStatus( + provider_id=provider_id, + model_id=model_id, + configured=False, + masked_key=None, + expires_at=None, + writable=False, + source="user_key", + updated_at=None, + ) return ModelCredentialStatus( - provider_id=record.provider_id, - display_name=record.display_name, - base_url=record.base_url, - model_id=record.model_id, - protocol="openai_chat_completions", + provider_id=provider_id, + model_id=model_id, configured=True, masked_key=MASKED_MODEL_KEY, expires_at=record.expires_at, diff --git a/apps/scut-senior/api/src/scut_senior_api/ports.py b/apps/scut-senior/api/src/scut_senior_api/ports.py index 59255ca6..ba74eb13 100644 --- a/apps/scut-senior/api/src/scut_senior_api/ports.py +++ b/apps/scut-senior/api/src/scut_senior_api/ports.py @@ -94,10 +94,6 @@ def humanize( class StoredModelCredential: user_id: UUID provider_id: str - display_name: str - base_url: str - model_id: str - protocol: str ciphertext: bytes = field(repr=False) nonce: bytes = field(repr=False) algorithm: str @@ -130,30 +126,14 @@ def generate( class UserKeyModelGateway(Protocol): - def decide_action( - self, - *, - api_key: str, - connection: StoredModelCredential, - request: WorkflowRunRequest, - state: object, - phase: str, - sources: tuple[RetrievedSource, ...] = (), - history: tuple[ConversationTurn, ...] = (), - cancel_check: Callable[[], bool] | None = None, - timeout_seconds: float | None = None, - ) -> str: ... - def generate( self, *, api_key: str, - connection: StoredModelCredential, request: WorkflowRunRequest, sources: list[RetrievedSource], history: tuple[ConversationTurn, ...] = (), cancel_check: Callable[[], bool] | None = None, - timeout_seconds: float | None = None, ) -> GeneratedAnswer: ... @@ -248,10 +228,6 @@ def upsert_model_credential( *, user_id: UUID, provider_id: str, - display_name: str, - base_url: str, - model_id: str, - protocol: str, ciphertext: bytes, nonce: bytes, algorithm: str, diff --git a/apps/scut-senior/api/src/scut_senior_api/service.py b/apps/scut-senior/api/src/scut_senior_api/service.py index 93617a1d..b56b6a11 100644 --- a/apps/scut-senior/api/src/scut_senior_api/service.py +++ b/apps/scut-senior/api/src/scut_senior_api/service.py @@ -7,16 +7,21 @@ from .auth import AuthRequired, AuthenticatedPrincipal, utc_now from .agent_loop import ( - AgentDecisionGateway, AgentBudget, AgentState, ModelAgentDecision, RuleBasedAgentDecision, action_allowed_for_workflow, reduce_agent_event, + should_retrieve_with_rewrite, ) from .adapters.bilibili import derive_question_keywords, normalize_keywords from .adapters.exam_facts import ExamFactsUnavailable +from .byok_catalog import ( + ByokModelNotRegistered, + ByokProviderDisabled, + ByokProviderNotRegistered, +) from .config import Settings from .contracts import ( AccountDeletionSummary, @@ -94,7 +99,6 @@ RetrievalBatch, RetrievalGateway, RetrievedSource, - StoredModelCredential, UserKeyModelGateway, UserIdentity, WorkflowRepository, @@ -138,58 +142,6 @@ class ExamReviewPlanContext: retrieval_query: str -class _BoundUserKeyDecisionModel: - """Request-local adapter that keeps BYOK secrets out of Agent state/events.""" - - __slots__ = ( - "_gateway", - "_api_key", - "_connection", - "_cancel_check", - "_timeout_seconds", - ) - - def __init__( - self, - gateway: UserKeyModelGateway, - api_key: str, - connection: StoredModelCredential, - cancel_check, - timeout_seconds: float, - ) -> None: - self._gateway = gateway - self._api_key: str | None = api_key - self._connection = connection - self._cancel_check = cancel_check - self._timeout_seconds = timeout_seconds - - def decide_action( - self, - request: WorkflowRunRequest, - state: object, - phase: str, - *, - sources: tuple[RetrievedSource, ...] = (), - history: tuple[ConversationTurn, ...] = (), - ) -> str: - if self._api_key is None: - raise RuntimeError("BYOK decision credential was already cleared") - return self._gateway.decide_action( - api_key=self._api_key, - connection=self._connection, - request=request, - state=state, - phase=phase, - sources=sources, - history=history, - cancel_check=self._cancel_check, - timeout_seconds=self._timeout_seconds, - ) - - def clear(self) -> None: - self._api_key = None - - class IterationZeroService: def __init__( self, @@ -874,7 +826,6 @@ def _run( # exactly, so this cannot fail for a contract-valid request. preset = HARNESS_REGISTRY.resolve_preset(request.workflow_type) model_entry: ModelCatalogEntry | None = None - byok_connection = None use_user_key = request.model_source == ModelSource.USER_KEY if not use_user_key: if self.settings.model_mode == "mock": @@ -915,11 +866,33 @@ def _run( else: if not isinstance(user, AuthenticatedPrincipal) or user.is_mock: raise AuthRequired() - byok_connection = self.credential_manager.get_connection( - user, request.provider_id, request.model_id - ) - model_provider_id = byok_connection.provider_id - model_id = byok_connection.model_id + try: + provider = self.model_catalog.byok_catalog.require_enabled( + request.provider_id + ) + selected_model = self.model_catalog.byok_catalog.resolve_model( + request.provider_id, request.model_id + ) + except ByokProviderNotRegistered: + raise ModelCredentialError( + status_code=422, + code="byok_provider_not_registered", + detail="该 BYOK 供应商未登记。", + ) from None + except ByokProviderDisabled: + raise ModelCredentialError( + status_code=503, + code="byok_provider_disabled", + detail="该 BYOK 供应商当前未启用。", + ) from None + except ByokModelNotRegistered: + raise ModelCredentialError( + status_code=422, + code="byok_model_not_registered", + detail="该 BYOK 模型未登记。", + ) from None + model_provider_id = provider.provider_id.value + model_id = selected_model.model_id billing_label = "user_provider_billing" availability_status = "user_key_enabled" mock_only = False @@ -927,8 +900,8 @@ def _run( # structured-output metadata remains descriptive for the current # text-capable presets. compatibility_reason = preset.check_model_compatibility( - input_modalities=("text",), - supports_structured_outputs=True, + input_modalities=selected_model.input_modalities, + supports_structured_outputs=selected_model.supports_structured_outputs, ) if compatibility_reason is not None: raise CapabilityUnavailable("model", compatibility_reason) @@ -986,6 +959,7 @@ def _run( agent_metrics = { "decision_call_count": 0, "model_action_accepted_count": 0, + "model_action_shadow_count": 0, "answer_call_count": 0, "provider_retry_count": 0, "guard_retry_count": 0, @@ -1002,13 +976,6 @@ def optional_model_work_allowed() -> bool: ) ) - def remaining_runtime_seconds() -> float: - return max( - 0.0, - agent_budget.max_runtime_seconds - - (perf_counter() - agent_started), - ) - def reduce_agent(kind: str, **payload: object) -> None: nonlocal agent_state agent_state = reduce_agent_event( @@ -1047,7 +1014,6 @@ def decide_for_phase( sources: list[RetrievedSource] | tuple[RetrievedSource, ...] = (), allow_model: bool = False, accepted_actions: frozenset[str] | None = None, - decision_gateway: AgentDecisionGateway | None = None, ) -> str: """Record one bounded decision and ensure it matches execution. @@ -1058,9 +1024,17 @@ def decide_for_phase( """ action = expected_action used_fallback = False - model_action_accepted = False - active_decision = decision_gateway or self.agent_decision - if allow_model and self.settings.agent_decision_mode == "model": + active_decision = self.agent_decision + decision_source = "rule" + mode = self.settings.agent_decision_mode + if allow_model and mode == "deterministic": + action = ( + "retrieve_with_query_rewrite" + if should_retrieve_with_rewrite(request, sources) + else expected_action + ) + decision_source = "deterministic" + elif allow_model and mode in {"model", "shadow"}: agent_metrics["decision_call_count"] += 1 action = active_decision.decide( request, @@ -1085,18 +1059,27 @@ def decide_for_phase( ) action = expected_action elif not used_fallback: + if mode == "shadow": + agent_metrics["model_action_shadow_count"] += 1 + # Shadow mode records a valid model decision but never + # lets it alter the server-owned execution path. + reduce_agent( + "decision_produced", + action=expected_action, + requested_action=action, + phase=phase, + expected_action=expected_action, + decision_source="model_shadow", + ) + return expected_action agent_metrics["model_action_accepted_count"] += 1 - model_action_accepted = True + decision_source = "model" reduce_agent( "decision_produced", action=action, phase=phase, expected_action=expected_action, - decision_source=( - "model" - if model_action_accepted - else "rule" - ), + decision_source=decision_source, ) return action @@ -1275,7 +1258,7 @@ def persist_failed_or_interrupted( course_ids, retrieval_query ) if ( - self.settings.agent_decision_mode != "model" + self.settings.agent_decision_mode == "rule" and isinstance(retrieval_batch, RetrievalBatch) and not retrieval_batch.sources and history @@ -1377,49 +1360,24 @@ def persist_failed_or_interrupted( record_agent_action("retrieve") reduce_agent("observation_recorded") if ( - self.settings.agent_decision_mode == "model" + not use_user_key + and self.settings.agent_decision_mode + in {"model", "shadow", "deterministic"} and action_allowed_for_workflow( request.workflow_type.value, "retrieve_with_query_rewrite", ) ): if optional_model_work_allowed(): - decision_gateway: AgentDecisionGateway | None = None - bound_byok_decision: _BoundUserKeyDecisionModel | None = None - if use_user_key: - assert isinstance(user, AuthenticatedPrincipal) - interrupted = interrupt_if_step_not_claimed() - if interrupted is not None: - return interrupted - api_key = self.credential_manager.load_api_key( - user, request.provider_id - ) - bound_byok_decision = _BoundUserKeyDecisionModel( - self.byok_model, - api_key, - byok_connection, - ( - (lambda: stream_session.cancelled) - if stream_session is not None - else None - ), - remaining_runtime_seconds(), - ) - decision_gateway = ModelAgentDecision(bound_byok_decision) - try: - next_action = decide_for_phase( - "post_retrieval", - "generate_answer", - sources=sources, - allow_model=True, - accepted_actions=frozenset( - {"generate_answer", "retrieve_with_query_rewrite"} - ), - decision_gateway=decision_gateway, - ) - finally: - if bound_byok_decision is not None: - bound_byok_decision.clear() + next_action = decide_for_phase( + "post_retrieval", + "generate_answer", + sources=sources, + allow_model=True, + accepted_actions=frozenset( + {"generate_answer", "retrieve_with_query_rewrite"} + ), + ) generation_decision_ready = next_action == "generate_answer" if next_action == "retrieve_with_query_rewrite": rewritten_query = _compose_agent_rewrite_query( @@ -1589,12 +1547,10 @@ def persist_failed_or_interrupted( ) generated = self.byok_model.generate( api_key=api_key, - connection=byok_connection, request=generation_request, sources=sources, history=history, cancel_check=cancel_check, - timeout_seconds=remaining_runtime_seconds(), ) else: platform_model = ( diff --git a/apps/scut-senior/docs/senior-ab/plan-ab.md b/apps/scut-senior/docs/senior-ab/plan-ab.md index 3945777b..5f2b49e0 100644 --- a/apps/scut-senior/docs/senior-ab/plan-ab.md +++ b/apps/scut-senior/docs/senior-ab/plan-ab.md @@ -1,8 +1,7 @@ # SCUT 老学长 AB 分支优化计划 版本:0.1(基于最新 AB 实跑后的收敛方案) -状态:**P0/P1 最小实现及自定义 BYOK 已完成本地回归;DeepSeek 直连已有真实 -Action 接受样本**。 +状态:**P0/P1 最小实现已完成本地回归;本分支不包含自定义 BYOK 连接功能。** 本文只针对 `ab-test/agent-action-shadow`。它不是 PLAN-2 的替代文档,也不是 把系统扩展成通用 Agent 平台的方案。目标是解释当前 AB 分支到底做了什么,保留 @@ -12,11 +11,11 @@ Action 接受样本**。 ### 1.1 当前结论 -当前 AB 分支是“受限模型决策适配器 + 原有同步运行时”的 post-retrieval 实验: +当前 AB 分支是“模型决策适配器 + 原有单链路运行时”的影子实验: ```text -请求校验 → 确定性计划/首轮检索 → post_retrieval 模型决策 - → 直接生成,或一次查询改写检索 → 引用 Guard → 收尾与持久化 +请求校验 → 确定性计划/检索 → 模型决策询问 → 固定检索或固定生成 + → 引用 Guard → 结果附录/外部搜索 → 持久化 ``` 它借鉴了 EventStream 的事件账本、Reducer 和 Observe → Decide → Act 形式, @@ -24,15 +23,14 @@ Action 接受样本**。 - `decision_produced` 会记录模型选择的动作; - 服务端仍按既定代码路径执行检索和生成; -- 固定首轮检索和最终回答阶段由服务端预期动作执行,不额外询问模型; -- 首轮检索后,模型只在 `generate_answer` 与 - `retrieve_with_query_rewrite` 之间选择;后者通过 Action Guard 后才执行第二次检索; +- 固定检索和回答阶段由服务端预期动作直接执行; +- 可选查询改写先通过 Action Guard,再执行第二次检索; - `finish`、`ask_clarification` 暂未暴露给模型,避免出现无执行语义的动作; - 不合规模型动作会记录 `action_rejected` 并显式回退到服务端动作。 -因此,旧实跑仍不能把引用数量提升归因给 Agent 决策;当时成功样本的 -`decision_call_count=0`。本轮改造后的归因必须同时看到决策调用、被接受的模型动作 -以及对应执行事件,不能再由最终引用数倒推。 +因此,当前实跑可以证明 AB 的额外模型调用成本,但不能把引用数量提升直接归因 +给 Agent 决策机制。引用收益还可能来自已有的混合检索、exam_review 确定性计划、 +模型输出差异或回答重试。 ### 1.2 版本目标 @@ -77,8 +75,15 @@ Action 接受样本**。 - `parse_model_action()`:只接受单个动作 token,解析失败时 fail-closed。 当前 `agent_decision_mode` 由环境变量 -`SCUT_SENIOR_AGENT_DECISION_MODE` 控制,默认值仍为 `rule`。AB 实跑必须显式打开 -`model`,否则运行的是 master 侧的确定性策略。 +`SCUT_SENIOR_AGENT_DECISION_MODE` 控制,默认值仍为 `rule`。本轮可用四组对照: + +- `rule`:既有确定性基线; +- `shadow`:调用模型并记录合法 Action,但不让其改变执行路径; +- `model`:合法模型 Action 真实驱动一次受限补检索; +- `deterministic`:只在候选为空,或题号/年份请求缺少题目定位证据时补检索。 + +`shadow`、`model` 与 `deterministic` 仅用于同一语料、模型和用例下的成对实验;线上 +默认值保持 `rule`。 ### 2.3 事件流与账本 @@ -99,9 +104,8 @@ Action 接受样本**。 3. `exam_review` 时先生成确定性复习计划; 4. 服务端确定性执行一次检索,不调用完整模型询问 `retrieve`; 5. 执行课程检索、私有知识合并、课程授权校验和来源去重; -6. `model` 模式在首轮检索后询问一次轻量决策;选择改写时执行一次有界二次检索, - 选择生成时直接继续;`rule` 模式保留原有空结果追问补锚; -7. 进入回答模型;固定阶段不重复调用完整模型询问 `generate_answer`; +6. 只有在本地检索空结果且满足条件时,才在第二次检索前询问一次可选决策; +7. 直接进入回答模型;固定阶段不重复调用完整模型询问 `generate_answer`; 8. 调用 OpenRouter、智谱、BYOK 或 Mock 模型生成回答; 9. 解析 Markdown/JSON、全角引用和 `scut-meta`; 10. 执行引用、课程范围、URL 和 AnswerBlock Guard; @@ -193,22 +197,20 @@ decision_produced ### P0-2 移除完整模型的重复决策调用 -旧实现复用回答模型和完整请求构造,曾让一次 Action 判断接近一次完整回答的成本。 -本轮已把决策调用拆为独立紧凑请求:只传问题摘要、证据数量和来源标题, -使用 `temperature=0`,不发送来源正文和完整历史。平台模型保留 16 token 控制预算; -真实 DeepSeek BYOK 在 16 token 下两次只返回推理、没有 Action 正文。后续放宽预算并 -以 `reasoning_effort=low` 校准后,DeepSeek 直连最终收敛到 256 token;其他通用 BYOK连接仍使用 512 token。它复用用户当前选择的模型连接,不是新的常驻决策服务。 +当前 `ModelAgentDecision` 复用回答模型和完整请求构造,仍可能携带历史和课程 +候选,且使用回答级 `max_tokens=16384`。这使一次 Action 判断接近一次完整回答的 +成本。 -已采用的做法: +首选做法: - 第一次检索固定由服务端执行,不调用模型决定 `retrieve`; -- 首轮证据返回后,只调用一次轻量决策器判断直接生成还是补检索; -- 选择生成后直接进入回答,选择改写时最多补一次检索。 +- 证据是否需要补检索,先由确定性条件判断; +- 证据满足要求后直接进入一次回答生成; +- 只有确实存在“是否补检索”这类不确定节点时,才调用一个轻量决策器。 -模型决策实验保持以下边界: +若要保留模型决策实验,则至少做到: -- 决策请求路径、token 预算和调用计数与回答请求分离; -- 当前仍复用所选平台模型身份,是否另选小模型留给实测后决定; +- 决策模型与回答模型配置分离; - 决策请求只传结构化观察量,不传完整 source 正文; - `max_tokens` 使用很小的控制预算; - temperature 设为 0; @@ -223,7 +225,6 @@ P0 不要求引入新的模型供应商,也不要求建立新的服务。 ```text decision_call_count -model_action_accepted_count answer_call_count provider_retry_count guard_retry_count @@ -231,9 +232,7 @@ decision_fallback_count action_rejection_count ``` -其中 `decision_call_count` 只表示尝试过模型决策;只有 -`model_action_accepted_count` 才表示一个合法、阶段适配的模型 Action 被执行。这些 -字段只用于 Trace、评测和服务端诊断,不需要变成学生侧复杂 UI。 +这些字段只用于 Trace、评测和服务端诊断,不需要变成学生侧复杂 UI。 同时修正预算口径:如果文档继续声明“Guard 重试计入 max_steps”,就让 `guard_retry_recorded` 同步增加 `step_count`;否则修改文档,明确它是独立计数。 @@ -435,20 +434,19 @@ P0-1 先统一 Action 与实际执行 - 固定检索/生成阶段不再调用完整模型询问 Action; - 查询改写在第二次检索前决策,错误 Action 会记录拒绝并回退; -- `decision_call_count`、`model_action_accepted_count`、`answer_call_count`、 - 供应商/Guard 重试及 fallback/rejection 已进入安全 Trace; +- `decision_call_count`、`answer_call_count`、供应商/Guard 重试及 fallback/rejection + 已进入安全 Trace; - Guard 重试携带服务端内部修复原因,并计入统一步骤预算; - `exam_review` 的未覆盖内容已压缩为数量与短名称,完整结构化明细仍可追溯; - 评测 runner 支持 `--agent-decision-mode rule|model`,每条用例输出受限运行指标, 可复用同一请求集做成对比较; -- AB 专项测试与后端全量测试均通过(当前为 678 passed,1 warning;警告来自现有 +- AB 专项测试与后端全量测试均通过(当前为 662 passed,1 warning;警告来自现有 Starlette/httpx 依赖兼容提示)。 -新增注入式回归已经覆盖正常 `generate_answer`、正常查询改写、阶段不兼容 Action、 -解析失败 fallback 和 3/4 软水位跳过。正常可达样本可稳定得到 -`decision_call_count=1` 与 `model_action_accepted_count=1`;选择直接生成时只有一次 -检索,选择改写时恰好两次检索。这里证明的是代码路径和归因口径,不是供应商真实 -延迟或引用收益。 +同一 fixture 用例集的本地 rule/model 对照也已执行:两组均为 5 passed、6 failed、 +1 skipped;11 个实际运行用例的 `decision_call_count` 均为 0。这是预期结果——用例 +没有触发“空检索且有多轮上下文”的可选改写节点,不能据此宣称模型决策有收益,后续 +需要用真实多轮稀疏检索样本单独测量该节点。 P1 的最小范围已完成:有限执行边界、一次查询改写上限和输出责任收敛均复用现有 同步运行时;不继续扩展为通用 Action 平台。当前实现已足够支撑下一轮对照实验。 @@ -537,6 +535,8 @@ AB 成功样本只有一次回答调用,`decision_call_count`、供应商重 正文预算配置,同时把正在进行的供应商请求纳入真正的墙钟超时;在此之前不以本组 结果改变合并结论。 +检索融合的独立实验与回退记录见 [RRF 融合 A/B 探索](rrf-exploration.md)。 + ## 12. 预算收敛与 Action 实验口径 DeepSeek 对照后不修改既有错误分类,预算按以下最小规则收敛: @@ -545,315 +545,23 @@ DeepSeek 对照后不修改既有错误分类,预算按以下最小规则收 - 控制权回到运行时且已超过软水位后,不再启动可选查询改写、供应商重试、引用修复 或 Humanizer,直接使用已有结果继续收尾; - 单个 Workflow 最多两次回答调用,避免供应商重试后再叠加 Guard 修复成为第三次调用; -- 通用 BYOK 单次 `max_tokens` 从 16384 收敛到 12288;只有迁移保留的 DeepSeek 直连 - 使用实跑校准后的 8192 和 `reasoning_effort=low`。其他 OpenAI-compatible 请求不 - 发送并非所有供应商都支持的 `reasoning_effort`。当前非流式接口不能在调用中实时 - 观察“已使用 3/4 token”,因此使用调用前硬上限替代伪实时判断; -- BYOK 请求的总墙钟上限保持 120 秒,不收紧为 60 秒。 -- 每次 BYOK 调用的 transport timeout 取“120 秒”和“Agent 剩余墙钟预算”的较小值; - 因此第二次回答或引用修复不再重新获得完整 120 秒,避免单次 Workflow 明显越过硬上限。 - -旧成功样本的 `decision_call_count=0` 不是统计错误,而是旧节点只允许在“首检为空、 -有历史、无 exam_plan”时触发,正常 `exam_review` 结构上不可达。本轮把真正存在选择 -意义的节点放在首轮检索之后:模型只决定“直接生成”还是“补一次改写检索”。这使 -正常复习样本可达,但不会让模型接管首轮检索、课程范围、工具参数或最终终态。 - -后续对照仍需拆开看: - -1. `decision_call_count=1`:确实发起过模型决策; -2. `model_action_accepted_count=1`:返回值合法且适合当前阶段; -3. `decision_source=model` 与后续 `action_executed` 一致:模型 Action 确实驱动执行; -4. 只有第 3 项成立后,引用候选或引用接受率变化才有资格进入因果比较。 - -解析失败、上游失败或非法 Action 都回退 `generate_answer`,并分别记录 fallback 或 -rejection;这种成功回答不能记作模型 Action 成功。进入 90 秒软水位后不再发起该 -可选决策,120 秒硬上限保持不变。 - -## 13. 自定义 BYOK 连接 - -BYOK 已从四组固定供应商/模型改为用户私有的 OpenAI-compatible 连接。用户保存: - -```text -连接 ID + 显示名称 + HTTPS Base URL + 模型 ID + API Key -``` - -服务端继续加密保存 Key;前端和查询接口只拿到脱敏状态。Workflow 仍以 -`provider_id + model_id` 选择连接,其中 `provider_id` 为兼容现有协议保留的字段名, -语义已经变为用户自定义连接 ID。旧四家凭据通过 `0018` 迁移补齐原 endpoint 和模型 -信息,密文、nonce、版本和到期时间保持不变。 - -P0 只支持 `openai_chat_completions`,调用路径为 -`/chat/completions`。服务端要求 HTTPS,拒绝 URL 账号密码、query、fragment、 -localhost、明显的私网/链路本地字面地址,并继续禁止重定向。`/api/v1/models` 不发布 -用户私有连接;登录后通过 `/api/v1/model-credentials` 获取自己的脱敏连接列表。 - -当前边界需要如实保留:尚未实现 `/models` 自动发现,也没有在传输层完成可抵御 DNS -rebinding 的 IP 固定,因此不能宣称任意 Base URL 已具备完整 SSRF 防护;面向不可信 -公网用户开放前仍需补齐。用户选择 BYOK 运行时,Action 和回答现在使用同一个私有 -连接,但仍分别计数;API Key 只在请求内解密,不进入 Agent 状态、Trace 或持久化。 - -自定义连接、迁移保密性和动态模型选择已由注入 HTTP 与本地回归验证。真实 DeepSeek -Action 的可达性和输出表现见下一节;调用可达不等于 Action 已被接受。 - -## 14. 自定义 BYOK 决策实跑(2026-09-03) - -本轮按新增授权只运行两次 AB,不失败补跑;master 不再消耗额度,复用第 11 节旧 -基线。数据库先复制到临时 SQLite,`0018` 迁移和实验结果均未写入线上数据库。两轮 -使用相同的线性代数请求、本地 corpus、DeepSeek 连接和 -`deepseek-v4-flash`;输入中的考试日期保持原始对照值 `2026-08-29`。 - -| 指标 | AB-1 | AB-2 | -| ---- | ---- | ---- | -| HTTP / 终态 | 504 / failed | 201 / completed | -| 总耗时 | 145.421s | 109.165s | -| Action 上游调用 | 1 次,0.710s | 1 次,0.545s | -| Action 输出 | `finish_reason=length`,正文 0 字符 | `finish_reason=length`,正文 0 字符 | -| Action token | 输入 246,输出 16 | 输入 246,输出 16 | -| 决策指标 | call=1,accepted=0,fallback=1 | call=1,accepted=0,fallback=1 | -| 实际动作 | 规则回退 `generate_answer` | 规则回退 `generate_answer` | -| 回答上游调用 | 2 次;首次成功、引用修复超时 | 1 次,107.819s | -| 重试 | Guard 引用修复 1 次 | 0 | -| 最终回答 | 无 | 3725 字符,输出在句中截断 | -| 引用 | 0 | 2 条 | -| 证据状态 | `not_evaluated` | `sufficient` | - -两轮 Action 请求都真正到达了 DeepSeek,所以 `decision_call_count=0` 的结构性不可达 -问题已经修复;但模型把 16 个 completion token 全用于推理,没有返回 Action 正文。 -因此两轮 `decision_source` 都是 `rule`,不能把 AB-2 的两条引用归因给模型 Action。 - -AB-1 首次回答在 23.787 秒返回 4345 字符,但没有课程引用,运行时按既有规则发起一次 -引用修复;第二次回答等待 120.041 秒后超时,最终没有向学生交付首答。该样本证明 -“90 秒后不再开始可选步骤”不足以约束已启动的请求:重试开始时尚未到软水位,却可 -重新取得完整 120 秒等待时间。实跑后已让 BYOK transport 使用 Agent 剩余墙钟预算, -全局上限仍为 120 秒,不改成 60 秒。 - -AB-2 没有回答重试,接受的来源为: - -- `[S1]`《2019-2020年度线性代数期末卷A》,第 2 页,题号 - `linear-algebra-012-Q12`; -- `[S3]`《2019-2020年度线性代数期末卷A》,第 1 页,题号 - `linear-algebra-012-Q1`。 - -这次成功回答完成了复习顺序、秩与方程组、向量组、特征值和二次型的组织,但质量 -仍不适合作为合并正证据:回答在公式中途被截断,系统附录又占据明显篇幅,“未覆盖 -内容”仍是大纲片段,Bilibili 关键词退回了“线性代数 + 结合历年卷”,没有进入具体 -知识点。供应商记录的回答输入为 5079 token、completion 为 12290 token,其中缓存 -命中 4992、未命中 87;这些字段只作为本次供应商观测,不与旧 master 的异口径数据 -做精确成本结论。 - -截至本节两轮后的中间收口是:平台 Action 继续保持 16 token,通用 BYOK Action 提高 -到 512 token;当时尚无真实 `model_action_accepted_count=1` 证据。后续单独获准的 -DeepSeek 直连校准及最终限额见下一节。 - -本轮与旧 master 只能比较运行可达性,不能比较回答质量:旧 master 两轮分别为人工 -中止和 504,没有成功回答。当前合并判断仍不改变:AB 的决策调用已经可达,但真实 -Action 接受率为 0/2,且一轮因引用修复超时失败;`agent_decision_mode=model` 仍不应 -成为默认值。 - -
-AB-2 最终学生可见回答(原样) - -## 结论 - -先别慌呀,考前 12 小时完全来得及!你手头这份大纲已经把考点列得很全了,复习时**不用平均用力**,要把时间押在“计算题必考的算法”和“用秩判定存在唯一性”这条主线上。结合历年卷,我最先提醒你:n 阶行列式的计算和代数余子式线性组合是实打实出现过的题型[S1][S3],所以第一章要练到“看到就能下笔”的程度,不能只背不练。 - -排序建议:行列式 → 矩阵运算与逆矩阵 → 秩与方程组通解 → 向量组相关性 → 特征值/相似对角化/二次型。公式记不住不可怕,可怕的是每个公式不知道什么时候用;下面这份大纲把每个公式都挂在对应题目场景里。 - -> **复习搭子提醒:** 这一步可别偷懒哦~自己先算一遍,我再帮你对答案! - -## 原理与依据 - -为什么先抓“秩”呢?你看大纲的第三章、第四章、第五章,最后都落到“几个解”“几个无关向量”“能不能对角化”上,而背后几乎都靠同一件事:**矩阵的秩**。把“秩”这件事吃透,很多公式就不再是一堆孤立结论,而是一张网。 - -公式记不住还有个原因:线性代数公式长得太像。比如伴随矩阵、转置、逆、特征值、行列式,符号和幂次都很容易混。补救办法是“同组对比,场景记公式”。每记一组公式,就配一道三两分钟能算完的小题;做题时发现卡住,再回头查公式,如此反复三四次就能记住了。 - -历年卷能对上的题目中,有“n 阶行列式计算”和“代数余子式组合求值”这两类[S1][S3],它们都是套路明确、分值实在的类型,建议优先突破。其余章节按你大纲里的“重点”去练,计算题占比高,多动手比多抄公式有用。 - -乖,把这题做完再玩手机嘛~公式背不下来的时候,就告诉自己:先做一道题,做完再看公式,绝对记得更牢。 - -## 推导或判断过程 - -下面是我给你整理的 12 小时复习大纲,按“第一优先→第二优先”排序。 - -### 第 1 块:行列式与矩阵运算(约 3 小时) - -**目标:** 看到 n 阶行列式会先找结构;逆矩阵能快速算对;不会把行列式性质用错。 - -这一块先背熟伴随矩阵求逆公式: - -$$ A^{-1} = \frac{1}{|A|}A^* $$ - -再记住两个“次方”关系,超容易混: - -$$ |kA| = k^n |A| $$ - -$$ |A^{-1}| = \frac{1}{|A|},\qquad |A^*| = |A|^{n-1} $$ - -练习时注意: - -- 计算行列式第一件事不是展开,而是观察:行和或列和是否相等?能不能先提公因子?能不能用“把所有行加到一起”再消元?历年卷里出现过的 n 阶行列式,常用“各行累加后再消元”的思路[S1]。 -- 求逆矩阵优先掌握“左边放原矩阵、右边放单位矩阵,整体做行变换,把左边变成单位矩阵,右边就是逆矩阵”的做法,中间不要跳步。 -- 如果遇到“某个行列式所有行的代数余子式乘给定系数后求和”这种题,本质是:把那一列换成给定系数,再按该列展开。历年卷出现过类似形式[S3],不必背结论,理解替换逻辑即可。 -- 分块矩阵只练最基础的对角分块:分块对角矩阵的行列式等于各分块行列式相乘,逆矩阵也分块求逆。 - -### 第 2 块:秩与线性方程组(约 3 小时) - -**目标:** 看到任意一个含参线性方程组,能按步骤讨论解的情况;能写出通解。 - -先练“化行最简形”:把增广矩阵化成行阶梯形,数非零行个数,得到秩。这一步速度决定整道计算题的得分。 - -齐次方程组的核心结论是:基础解系中解向量的个数等于未知量个数减去系数矩阵的秩,也就是: - -$$ n - r(A) $$ - -非齐次方程组解的情况,用三句话背: - -- 增广矩阵的秩大于系数矩阵的秩时,无解; -- 增广矩阵的秩等于系数矩阵的秩且等于未知量个数时,有唯一解; -- 增广矩阵的秩等于系数矩阵的秩但小于未知量个数时,有无穷多解,且通解由“一个特解 + 基础解系的线性组合”写出。 - -这个“秩比大小”的结论是第三章最容易考也最容易错的地方。建议手写三道完整题:一道无解、一道唯一解、一道无穷多解。遇到矩阵方程时要特别小心,乘逆矩阵一定要分清楚左乘还是右乘,不能乱交换顺序。 - -### 第 3 块:向量组线性相关性与基础解系(约 2 小时) - -**目标:** 能判断相关/无关,能找出极大无关组并表示其余向量。 - -核心判定文字版:**向量组的秩小于向量个数时线性相关;等于向量个数时线性无关。** - -把向量按列排成矩阵,做初等行变换到行最简形。主元列对应的原向量就是极大无关组。注意:初等行变换不会改变列向量之间的线性关系,所以行最简形中非主元列可以直接读出表示系数。计算时不要把行变换误写成列变换,否则全错。 - -证明线性无关时,模板是这样: - -设 - -$$ k_1\alpha_1 + k_2\alpha_2 + \cdots + k_s\alpha_s = 0 $$ - -然后利用题设条件逐步推导,最终得到 - -$$ k_1 = k_2 = \cdots = k_s = 0 $$ - -这一步是大纲特别提醒的证明题底线,平时练习时把每一步用的条件写在旁边,考场上就不会乱。 - -### 第 4 块:特征值、相似对角化与二次型(约 4 小时) - -**目标:** 会求特征值特征向量;判断能否对角化;实对称矩阵完成正交对角化;会判断正定性。 - -特征值的来源是特征多项式等于零: - -$$ |\lambda I - A| = 0 $$ - -求特征向量就是回到齐次线性方程组: - -$$ (\lambda I - A)x = 0 $$ - -相似对角化的判断:矩阵能对角化的充要条件是有 n 个线性无关的特征向量。等价说法是,每个特征值的线性无关特征向量个数恰好等于它的重数。 - -实对称矩阵是重点:不同特征值对应的特征向量天然正交;同一个特征值下有多个特征向量时,需要做施密特正交化,然后单位化。最终用这些单位正交特征向量拼成正交矩阵,使得: - -$$ Q^{-1}AQ = Q^TAQ = \operatorname{diag}(\lambda_1,\lambda - -> **提示:** 本次回答达到单次输出长度上限,内容在句中被截断;可缩小提问范围(如只问一个知识点)后重新运行。 - -## 备考复习统计(系统生成) - -> 范围与证据说明:本次备考复习以你提供的大纲为范围依据,按“用户大纲 > 课程资料 > 历年题 > 标记的通用知识”的证据顺序组织。 -> 证据边界:所有统计只来自当前课程已审核语料的客观出现次数,每条统计都能回到题目来源;资料未覆盖的内容会明确列为未覆盖,不做补造。 -> AI 样题边界:模型补充的练习样题均为 AI 生成、非历年真题;历年真题只包括下方统计与题组中列出且可回查来源的题目。 - -### 历年题客观统计 - -- 样本年份:2019、2020、2021(共 3 个年份、155 道题) -- 年份覆盖:2019(34 题)、2020(52 题)、2021(69 题) -- 题型分布(客观出现次数):未标注题型(155 次) -- 以上为客观出现次数统计,不输出命题概率,也没有“必考”预测。 - -### 知识点分层与建议顺序 - -当前历年题语料没有可按知识点归组的标题;以下题组是仅有的客观结构,请逐题回查来源,不要把题型当成知识点。 - -### 历年题题组 - -- 《2019-2020年度线性代数期末卷A》(2019):共 22 题;代表题号:linear-algebra-012-Q1、linear-algebra-012-Q2、linear-algebra-012-Q3 -- 《2019-2020年度线性代数期末卷A答案》(2019):共 12 题;代表题号:linear-algebra-013-Q1、linear-algebra-013-Q2、linear-algebra-013-Q3 -- 《2020-2021年度线代解几期末卷A》(2020):共 16 题;代表题号:linear-algebra-014-Q1、linear-algebra-014-Q2、linear-algebra-014-Q3 -- 《2020-2021年度线代解几期末卷A答案》(2020):共 11 题;代表题号:linear-algebra-015-Q1、linear-algebra-015-Q2、linear-algebra-015-Q3 -- 其余 6 组保留在结构化复习计划中,可按需展开回查。 - -### 复习建议 - -- 先按你的大纲逐条对照下方知识点与资料位置,再进入题组真题自测。 -- 历年题语料没有可按知识点归组的标题;先按上方题组逐题回查资料与答案来源,再回到课程资料目录补齐定义。 -- 你登记了 1 个薄弱点,排在前面的匹配知识点建议优先安排两轮。 -- 历年题共统计到 155 道题,做完一组就回对答案来源,不要跳过定位。 - -### 未覆盖内容 - -- 共 26 项:《线性代数》期末考试大纲 课程名称: 线性代数 适用对象…、笔试 总分: 100分 考试时间: 120分钟 一、考试重点与题型分布建议 题型 题量 分值 考察目的 一等 - -
- -## 15. DeepSeek 直连低推理校准(2026-09-03) - -上一节证明 16 token 不足,但不能据此猜测 256、512 或 8192 是否合理。本轮只保留并 -识别迁移前已有的 DeepSeek 直连组合: - -```text -连接 ID:deepseek -Base URL:https://api.deepseek.com -模型:deepseek-v4-flash -``` - -只有三项同时匹配时才发送 `reasoning_effort=low`。OpenRouter 上的 DeepSeek 和其他 -自定义 OpenAI-compatible 连接不继承该配置。校准运行临时把 Action 与回答的 -`max_tokens` 都放宽到 `256000`,该值参考现有 `deepseek-harness` 的 DeepSeek 适配器 -默认上限,只用于观察模型自然停止点,不作为最终线上配置。 - -本轮只运行一次相同的线性代数 Workflow: - -| 指标 | Action | 回答 | -| ---- | ------ | ---- | -| `reasoning_effort` | low | low | -| 临时 `max_tokens` | 256000 | 256000 | -| 耗时 | 0.842s | 20.352s | -| `finish_reason` | stop | stop | -| completion token | 26 | 2265 | -| 推理内容 | 51 字符 | 607 字符 | -| 最终正文 | 15 字符,`generate_answer` | 3045 字符 | - -整个 Workflow 用时 22.043 秒并成功结束: - -```text -decision_call_count=1 -model_action_accepted_count=1 -decision_fallback_count=0 -action_rejection_count=0 -answer_call_count=1 -provider_retry_count=0 -guard_retry_count=0 -``` - -模型决定的 `generate_answer` 与后续 `action_executed` 一致;只执行一次检索,没有查询 -改写。最终学生可见回答 4104 字符,`answered/sufficient`,接受 3 条引用: - -- `[S2]`《2019-2020年度线性代数期末卷A答案》,第 1 页, - `linear-algebra-013-Q1`; -- `[S3]`《2019-2020年度线性代数期末卷A》,第 1 页, - `linear-algebra-012-Q1`; -- `[S1]`《2019-2020年度线性代数期末卷A》,第 2 页, - `linear-algebra-012-Q12`。 - -该样本第一次满足“真实决策调用、合法 Action、模型来源事件与实际执行一致”三项 -归因条件,证明 BYOK 模型 Action 已从可达走到可执行;但模型选择的是直接生成,未 -改变检索候选,因此 3 条引用仍不能解释为查询改写收益。 - -按自然停止用量收敛后的最终配置为: - -| 请求 | 最终上限 | 实测用量 | 余量 | -| ---- | -------- | -------- | ---- | -| DeepSeek Action | 256 | 26 | 约 9.8 倍 | -| DeepSeek 回答 | 8192 | 2265 | 约 3.6 倍 | - -因此 8192 对 `reasoning_effort=low` 的本次完整回答是足够的;不继续保留 256000,也不 -让二选一 Action 使用 8192。当前证据仍只有一轮,能证明配置可工作,不能证明长期 -P95、失败率或引用收益。线上默认值仍保持 `agent_decision_mode=rule`,是否扩大样本需 -另行授权。 +- DeepSeek V4 Flash 使用官方支持的 `reasoning_effort=low`,单次 `max_tokens` 从 + 16384 收敛到 12288;当前非流式接口不能在调用中实时观察“已使用 3/4 token”, + 因此用调用前硬上限和推理强度控制替代伪实时判断; +- DeepSeek BYOK 请求的总墙钟上限为 120 秒,不收紧为 60 秒。 + +`decision_call_count=0` 不是计数错误。当前固定检索和固定生成阶段有意使用服务端 +决策,只有以下条件同时满足时才允许模型选择 Action:本地语料首轮检索为空、同一 +会话已有历史、没有 `exam_review` 确定性计划,并且尚未进入软水位。线性代数复习 +大纲会生成 `exam_plan`,所以该节点结构上不可达;回答中的 5 条引用由回答模型选择、 +引用 Guard 校验,与 Action 决策不是同一指标。 + +后续对照应拆成两类,不为了让计数非零而给正常 `exam_review` 强塞一次 Planner: + +1. `exam_review` 样本继续比较回答、引用和附录质量; +2. 使用“先问具体知识点,再用缺少词面锚点的追问触发首检为空”的多轮样本,比较 + rule/model 是否选择并实际执行 `retrieve_with_query_rewrite`。 + +只有第二类样本中出现 `decision_call_count > 0`,且 +`decision_produced → action_executed → observation_recorded` 一致,才能讨论模型 +Action 对检索结果和引用覆盖的因果收益。 diff --git a/apps/scut-senior/docs/senior-ab/rrf-exploration.md b/apps/scut-senior/docs/senior-ab/rrf-exploration.md new file mode 100644 index 00000000..5ad596e6 --- /dev/null +++ b/apps/scut-senior/docs/senior-ab/rrf-exploration.md @@ -0,0 +1,34 @@ +# RRF 融合 A/B 探索记录 + +## 2026-09-10:恢复旧融合,继续小范围验证 + +相同 corpus 版本 `corpus-c1513a68ccd7-b0_2_0-m1200-wworkflow-contract-v1-ooutline-none-v1-ebge-small-zh-v1.5`,黄金集 46 门课程、1,380 条。新复跑使用 min_score=1.0、返回 top20;以下旧 Hybrid 数据来自历史报告,恢复后的复跑需单独确认。 + +| 策略 | Recall@5 | Recall@20 | MRR | noise proxy | +| --- | ---: | ---: | ---: | ---: | +| BM25F 本次复跑 | 0.605072 | 0.791304 | 0.439231 | 0.863231 | +| 旧 Hybrid 历史基线 | 0.638406 | 0.860870 | 0.462348 | 0.928617 | +| 跨路 weighted RRF 本次复跑 | 0.569565 | 0.840580 | 0.397714 | 0.929632 | + +新 RRF 相对旧 Hybrid 的 Recall@5 下降 6.8841 个百分点,Recall@20 下降 2.0290 个百分点,MRR 下降 0.064634。已有证据支持恢复旧策略,没有证据支持“旧策略已到上限”或“新 RRF 上限更高”。Recall@20 只是当前检索器在这一截断位置的覆盖率,不能等同于整个 RAG 系统的理论上限。 + +旧融合的准确含义:query variants 在词法腿和 dense 腿内分别做 RRF;最终 exact lexical 优先,其余 lexical 随后,dense 补空位。此次恢复 `LocalCorpusRetrievalGateway` 调用原有 `rule_rerank`,实验用 weighted RRF 函数暂保留,运行主链路不调用。 + +报告位置:`resources/evaluation/retrieval-comparison.json`、`.local/evaluation/retrieval-rerun-bm25f.json`、`.local/evaluation/retrieval-rerun-hybrid.json`。后两份属于本地运行产物,上表保留可提交的摘要。纯检索评测不经过 rule/shadow/model/deterministic 决策节点。 + +## 下一步怎么优化 + +先复现恢复后的旧 Hybrid,再逐条比较旧策略命中、新策略掉出 top5 的问题。统计是“正确证据还在候选池但被排低”,还是“候选池里根本没有”。抽查少量典型题确认标签,避免对不完整的相关性标注过拟合;noise proxy 把未标注 chunk 都算成噪声,不等于这些 chunk 全都无关。 + +当前跨路 RRF 使用 lexical:dense=1:0.85、k=60、两腿各 50。它压缩了名次差距,并奖励两腿交集:两腿都排第 50 的分数约 0.01682,高于只在 lexical 排第 1 的 0.01639。这是可解释的风险机制,是否导致本次退化仍要从成对样本确认。 + +优先试一个小改动:保留旧结果的前 3 位及 exact 保护项,仅让其余位置参与 weighted RRF。Top5 最多有两个位置发生竞争,不强塞 dense;保护项占满时维持旧结果。先作为离线实验,尚未接入运行时。它可能牺牲部分语义题提升空间,所以保留全榜 RRF 作为对照。 + +参数只分两步试,不做大网格: + +1. 固定两腿各 50、k=60,测试 dense 权重 0.2、0.4、0.6(lexical 固定 1),分别比较全榜 RRF 与保留前 3 位的尾部融合。旧融合是独立基线,dense 权重趋近零不等价于旧补位逻辑。若交集低位候选仍被过度提升,再单独试 k=20;不要同时改所有参数。 +2. 固定表现最好的排序配置,比较 lexical/dense 池 50/20、50/50、50/100。候选池指每腿融合后的深度,并同步保证各 variant 的召回深度足够;先确认正确证据在 dense 的 51–100 位有实际增量,再考虑扩大。最终输出仍保持现有上限。 + +记录候选并集覆盖率(用黄金标签计算可达到的最大召回)、最终 Recall@5/@20、MRR,以及逐题赢/输数。并集覆盖不涨,扩大池子价值有限;并集覆盖高而 top5 低,重点改排序。只有小范围融合仍无法把候选增益转成 top5 收益时,再考虑本地轻量 reranker,并单独记录新增延迟。 + +沿用现有黄金集做回归,同时留出未用于调参的同义改写问题做一次最终验证。优先选 Recall@5、MRR 改善且 Recall@20 不明显下降的配置,检查精确题号/标题和语义改写两类问题的退化;单指标微涨不足以替换主链路。当前只恢复已验证逻辑并记录方案,以上参数实验尚未执行。 diff --git a/apps/scut-senior/infra/README.md b/apps/scut-senior/infra/README.md index dc1a19aa..bc93d594 100644 --- a/apps/scut-senior/infra/README.md +++ b/apps/scut-senior/infra/README.md @@ -2,7 +2,7 @@ 当前部署状态是**显式关闭**。应用镜像未来进入华为云 SWR,再由 ECS 部署;真实认证、灰度与回滚方式尚未确认,本目录不会用占位命令冒充可用部署。部署工作流提供默认的 `validation_only=true` 人工模式,只验证受限检出和镜像构建,成功后停止,不接触 SWR 或 ECS。 -预算获批前不创建或修改任何华为云资源,`DEPLOYMENT_ENABLED` 必须保持未设置或 `false`。未来首发基线已经缩减为华南-广州优先的 1 vCPU/2GB、40GB 系统盘、1~2Mbps;ECS 只承载 Web、API、生产 SQLite 和轻量检索,不部署大模型,也不承担 OCR、embedding、全量索引或课程包构建。包年购买前应先用按需实例验证平台模型和计划使用的 OpenAI-compatible BYOK 供应商出站连通性;向不可信公网用户开放自定义 Base URL 前,还需补齐传输层 DNS rebinding/SSRF 防护。 +预算获批前不创建或修改任何华为云资源,`DEPLOYMENT_ENABLED` 必须保持未设置或 `false`。未来首发基线已经缩减为华南-广州优先的 1 vCPU/2GB、40GB 系统盘、1~2Mbps;ECS 只承载 Web、API、生产 SQLite 和轻量检索,不部署大模型,也不承担 OCR、embedding、全量索引或课程包构建。包年购买前应先用按需实例验证 OpenRouter、DeepSeek、硅基流动和智谱四家固定 endpoint 的出站连通性。 当前镜像只用于本地和 CI 的开发验证,仍包含 Mock 身份、Fixture 检索与 SQLite Mock 存储,不能作为线上服务运行。即使配置了 OpenRouter 平台模型,当前 API 也会在 `SCUT_SENIOR_APP_ENV=production` 下拒绝启动。未来 ECS 的 OpenRouter 项目 Key、BYOK 加密主密钥和 OAuth Secret 只能进入受保护的运行 Secret,不能写入镜像、仓库、构建日志或前端。 diff --git a/apps/scut-senior/packages/contracts/v1/schemas/conversation-detail.schema.json b/apps/scut-senior/packages/contracts/v1/schemas/conversation-detail.schema.json index 1ae6100a..2d72b6f4 100644 --- a/apps/scut-senior/packages/contracts/v1/schemas/conversation-detail.schema.json +++ b/apps/scut-senior/packages/contracts/v1/schemas/conversation-detail.schema.json @@ -958,6 +958,19 @@ "default": null, "title": "Model Action Accepted Count" }, + "model_action_shadow_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Model Action Shadow Count" + }, "model_id": { "anyOf": [ { diff --git a/apps/scut-senior/packages/contracts/v1/schemas/model-catalog.schema.json b/apps/scut-senior/packages/contracts/v1/schemas/model-catalog.schema.json index ad67beff..b3160c31 100644 --- a/apps/scut-senior/packages/contracts/v1/schemas/model-catalog.schema.json +++ b/apps/scut-senior/packages/contracts/v1/schemas/model-catalog.schema.json @@ -220,7 +220,7 @@ "type": "boolean" }, "byok_catalog_version": { - "const": "byok-connections-v1", + "const": "byok-models-v4", "title": "Byok Catalog Version", "type": "string" }, diff --git a/apps/scut-senior/packages/contracts/v1/schemas/model-credential-list.schema.json b/apps/scut-senior/packages/contracts/v1/schemas/model-credential-list.schema.json index 4cd29a71..5f15abb4 100644 --- a/apps/scut-senior/packages/contracts/v1/schemas/model-credential-list.schema.json +++ b/apps/scut-senior/packages/contracts/v1/schemas/model-credential-list.schema.json @@ -3,23 +3,10 @@ "ModelCredentialStatus": { "additionalProperties": false, "properties": { - "base_url": { - "maxLength": 2048, - "minLength": 1, - "title": "Base Url", - "type": "string" - }, "configured": { - "const": true, "title": "Configured", "type": "boolean" }, - "display_name": { - "maxLength": 100, - "minLength": 1, - "title": "Display Name", - "type": "string" - }, "expires_at": { "anyOf": [ { @@ -33,24 +20,34 @@ "title": "Expires At" }, "masked_key": { - "const": "••••••••", - "title": "Masked Key", - "type": "string" + "anyOf": [ + { + "const": "••••••••", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Masked Key" }, "model_id": { - "maxLength": 100, - "minLength": 1, + "enum": [ + "deepseek/deepseek-v4-flash-0731", + "deepseek-v4-flash", + "Pro/zai-org/GLM-4.7", + "glm-5.2" + ], "title": "Model Id", "type": "string" }, - "protocol": { - "const": "openai_chat_completions", - "title": "Protocol", - "type": "string" - }, "provider_id": { - "maxLength": 64, - "minLength": 1, + "enum": [ + "openrouter", + "deepseek", + "siliconflow", + "zhipu" + ], "title": "Provider Id", "type": "string" }, @@ -78,10 +75,7 @@ }, "required": [ "provider_id", - "display_name", - "base_url", "model_id", - "protocol", "configured", "masked_key", "expires_at", diff --git a/apps/scut-senior/packages/contracts/v1/schemas/model-credential-upsert.schema.json b/apps/scut-senior/packages/contracts/v1/schemas/model-credential-upsert.schema.json index 4e6aa48b..400e55b7 100644 --- a/apps/scut-senior/packages/contracts/v1/schemas/model-credential-upsert.schema.json +++ b/apps/scut-senior/packages/contracts/v1/schemas/model-credential-upsert.schema.json @@ -10,37 +10,10 @@ "title": "Api Key", "type": "string", "writeOnly": true - }, - "base_url": { - "maxLength": 2048, - "minLength": 1, - "title": "Base Url", - "type": "string" - }, - "display_name": { - "maxLength": 100, - "minLength": 1, - "title": "Display Name", - "type": "string" - }, - "model_id": { - "maxLength": 100, - "minLength": 1, - "title": "Model Id", - "type": "string" - }, - "protocol": { - "const": "openai_chat_completions", - "default": "openai_chat_completions", - "title": "Protocol", - "type": "string" } }, "required": [ - "api_key", - "display_name", - "base_url", - "model_id" + "api_key" ], "title": "ModelCredentialUpsert", "type": "object" diff --git a/apps/scut-senior/packages/contracts/v1/schemas/workflow-result.schema.json b/apps/scut-senior/packages/contracts/v1/schemas/workflow-result.schema.json index f46e9be9..861ef908 100644 --- a/apps/scut-senior/packages/contracts/v1/schemas/workflow-result.schema.json +++ b/apps/scut-senior/packages/contracts/v1/schemas/workflow-result.schema.json @@ -848,6 +848,19 @@ "default": null, "title": "Model Action Accepted Count" }, + "model_action_shadow_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Model Action Shadow Count" + }, "model_id": { "anyOf": [ { diff --git a/apps/scut-senior/packages/contracts/v1/schemas/workflow-stream-event.schema.json b/apps/scut-senior/packages/contracts/v1/schemas/workflow-stream-event.schema.json index 7f31db5b..f24afde4 100644 --- a/apps/scut-senior/packages/contracts/v1/schemas/workflow-stream-event.schema.json +++ b/apps/scut-senior/packages/contracts/v1/schemas/workflow-stream-event.schema.json @@ -813,6 +813,19 @@ "default": null, "title": "Model Action Accepted Count" }, + "model_action_shadow_count": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Model Action Shadow Count" + }, "model_id": { "anyOf": [ { diff --git a/apps/scut-senior/scripts/debug-windows.cmd b/apps/scut-senior/scripts/debug-windows.cmd index 43955144..e32bd501 100644 --- a/apps/scut-senior/scripts/debug-windows.cmd +++ b/apps/scut-senior/scripts/debug-windows.cmd @@ -35,7 +35,7 @@ if /I "%~1"=="--check" ( ) start "SCUT Senior API" /D "%APP_ROOT%" "%BASH_EXE%" -lc "set -a; source .local/env.online; set +a; export SCUT_SENIOR_RETRIEVAL_MODE=local_corpus; exec ./api/.venv/Scripts/python.exe -m uvicorn scut_senior_api.main:app --reload --host 127.0.0.1 --port 8000" -start "SCUT Senior Web" /D "%APP_ROOT%\web" "%BASH_EXE%" -lc "exec ./node_modules/.bin/vite.cmd --host 0.0.0.0 --port 5173" +start "SCUT Senior Web" /D "%APP_ROOT%\web" "%BASH_EXE%" -lc "exec ./node_modules/.bin/vite.cmd --host 0.0.0.0 --port 5173 --strictPort" if /I "%~1"=="--funnel" ( "C:\Program Files\Tailscale\tailscale.exe" funnel --bg 5173 diff --git a/apps/scut-senior/tests/python/test_ab_runtime.py b/apps/scut-senior/tests/python/test_ab_runtime.py index 92d8dedf..3cebbb20 100644 --- a/apps/scut-senior/tests/python/test_ab_runtime.py +++ b/apps/scut-senior/tests/python/test_ab_runtime.py @@ -93,12 +93,12 @@ def decide_action(self, request, state, phase, *, sources=(), history=()): return self.action -def _model_mode_app(tmp_path: Path, name: str): +def _model_mode_app(tmp_path: Path, name: str, *, mode: str = "model"): app = create_app( Settings( app_env="test", database_path=tmp_path / name, - agent_decision_mode="model", + agent_decision_mode=mode, ) ) retrieval = _SequenceRetrieval() @@ -305,3 +305,65 @@ def test_soft_runtime_watermark_skips_optional_model_decision( ) assert skipped["status"] == "skipped" assert skipped["result"]["reason_code"] == "runtime_soft_limit" + + +def test_shadow_mode_records_valid_model_choice_without_driving_retrieval( + tmp_path: Path, +) -> None: + app, client, conversation_id, retrieval = _model_mode_app( + tmp_path, "ab-shadow.db", mode="shadow" + ) + action_model = _ActionModel("retrieve_with_query_rewrite") + app.state.service.agent_decision = ModelAgentDecision(action_model) + + response = client.post("/api/v1/workflow-runs", json=_request(conversation_id)) + + assert response.status_code == 201, response.text + result = response.json() + assert len(retrieval.calls) == 1 + metrics = _metrics(result) + assert metrics["decision_call_count"] == 1 + assert metrics["model_action_accepted_count"] == 0 + assert metrics["model_action_shadow_count"] == 1 + decision = next( + event + for event in app.state.repository.list_agent_events( + result["workflow_run_id"] + ) + if event.get("phase") == "post_retrieval" + ) + assert decision["decision_source"] == "model_shadow" + assert decision["requested_action"] == "retrieve_with_query_rewrite" + assert decision["action"] == "generate_answer" + + +def test_deterministic_mode_rewrites_only_for_missing_exact_question_evidence( + tmp_path: Path, +) -> None: + app, client, conversation_id, retrieval = _model_mode_app( + tmp_path, "ab-deterministic.db", mode="deterministic" + ) + payload = _request(conversation_id) + payload["user_input"] = "请讲解 2024 年第 3 题" + payload["workflow_payload"] = {"question": "请讲解 2024 年第 3 题"} + + response = client.post("/api/v1/workflow-runs", json=payload) + + assert response.status_code == 201, response.text + result = response.json() + assert len(retrieval.calls) == 2 + metrics = _metrics(result) + assert metrics["decision_call_count"] == 0 + rewrite = next( + event for event in result["trace"] if event["node"] == "agent_query_rewrite" + ) + assert rewrite["status"] == "completed" + decision = next( + event + for event in app.state.repository.list_agent_events( + result["workflow_run_id"] + ) + if event.get("phase") == "post_retrieval" + ) + assert decision["decision_source"] == "deterministic" + assert decision["action"] == "retrieve_with_query_rewrite" diff --git a/apps/scut-senior/tests/python/test_account_lifecycle.py b/apps/scut-senior/tests/python/test_account_lifecycle.py index 3f90ecca..97718953 100644 --- a/apps/scut-senior/tests/python/test_account_lifecycle.py +++ b/apps/scut-senior/tests/python/test_account_lifecycle.py @@ -137,12 +137,6 @@ def seed_account_data(app, client: TestClient, *, with_credential: bool) -> None "SELECT user_id FROM users WHERE github_user_id = 123456" ).fetchone() alice_user_id = row["user_id"] - repository.save_private_knowledge( - user_id=alice_user_id, - course_id="linear_algebra", - title="注销测试私有知识", - content="该内容必须与账户一起物理删除。", - ) # 贡献待审副本:直接按迁移 schema 插入一行 submitted 记录。 now = datetime.now(UTC) @@ -167,10 +161,6 @@ def seed_account_data(app, client: TestClient, *, with_credential: bool) -> None repository.upsert_model_credential( user_id=UUID(alice_user_id), provider_id="openrouter", - display_name="OpenRouter", - base_url="https://openrouter.ai/api/v1", - model_id="deepseek/deepseek-v4-flash-0731", - protocol="openai_chat_completions", ciphertext=b"0123456789abcdef0123456789abcdef", # 模拟密文 nonce=b"0123456789ab", algorithm="AES-256-GCM", @@ -221,7 +211,6 @@ def test_delete_account_wipes_data_blocks_relogin(tmp_path: Path) -> None: "workflow_runs", "feedback", "temporary_materials", - "private_knowledge_items", "contributions", "model_credentials", "auth_sessions", @@ -231,7 +220,6 @@ def test_delete_account_wipes_data_blocks_relogin(tmp_path: Path) -> None: assert before["workflow_runs"] >= 1 assert before["contributions"] >= 1 assert before["temporary_materials"] >= 1 - assert before["private_knowledge_items"] >= 1 assert before["model_credentials"] >= 1 old_cookie = client.cookies.get(SESSION_COOKIE_NAME) @@ -241,7 +229,6 @@ def test_delete_account_wipes_data_blocks_relogin(tmp_path: Path) -> None: assert summary["conversations"] >= 1 assert summary["workflow_runs"] >= 1 assert summary["auth_sessions"] >= 1 - assert summary["private_knowledge_items"] >= 1 assert summary["login_blocked"] is True with sqlite3.connect(database_path) as connection: @@ -255,7 +242,6 @@ def test_delete_account_wipes_data_blocks_relogin(tmp_path: Path) -> None: "workflow_runs", "feedback", "temporary_materials", - "private_knowledge_items", "contributions", "model_credentials", "auth_sessions", @@ -267,7 +253,6 @@ def test_delete_account_wipes_data_blocks_relogin(tmp_path: Path) -> None: assert after["workflow_runs"] == 0 assert after["feedback"] == 0 assert after["temporary_materials"] == 0 - assert after["private_knowledge_items"] == 0 assert after["contributions"] == 0 assert after["model_credentials"] == 0 assert after["auth_sessions"] == 0 diff --git a/apps/scut-senior/tests/python/test_agent_loop.py b/apps/scut-senior/tests/python/test_agent_loop.py index c4e678b8..a0cebf37 100644 --- a/apps/scut-senior/tests/python/test_agent_loop.py +++ b/apps/scut-senior/tests/python/test_agent_loop.py @@ -1,5 +1,8 @@ from __future__ import annotations +from dataclasses import replace +from types import SimpleNamespace + import pytest from scut_senior_api.agent_loop import ( @@ -12,7 +15,9 @@ parse_model_action, replay_agent_events, reduce_agent_event, + should_retrieve_with_rewrite, ) +from scut_senior_api.ports import RetrievedSource def test_workflow_is_hard_boundary_for_agent_actions() -> None: @@ -28,6 +33,31 @@ def test_model_action_parser_is_fail_closed_at_workflow_boundary() -> None: assert parse_model_action("switch_workflow", workflow_type="knowledge_qa") is None +def test_deterministic_rewrite_gate_is_conservative_and_evidence_based() -> None: + request = SimpleNamespace(user_input="请讲解 2024 年第 3 题") + ordinary_request = SimpleNamespace(user_input="解释矩阵的秩") + source_without_question_locator = RetrievedSource( + chunk_id="linear_algebra:1", + course_id="linear_algebra", + source_id="source-1", + source_title="矩阵讲义", + text="矩阵的秩。", + locator_type="page", + locator_start=1, + locator_end=1, + question_id=None, + heading_path=(), + ) + source_with_question_locator = replace( + source_without_question_locator, question_id="q3" + ) + + assert should_retrieve_with_rewrite(request, ()) + assert should_retrieve_with_rewrite(request, [source_without_question_locator]) + assert not should_retrieve_with_rewrite(request, [source_with_question_locator]) + assert not should_retrieve_with_rewrite(ordinary_request, [source_without_question_locator]) + + def event(kind: str, **payload: object) -> dict[str, object]: return {"kind": kind, **payload} diff --git a/apps/scut-senior/tests/python/test_api_schema_exports.py b/apps/scut-senior/tests/python/test_api_schema_exports.py index 084a769b..a31f4ab0 100644 --- a/apps/scut-senior/tests/python/test_api_schema_exports.py +++ b/apps/scut-senior/tests/python/test_api_schema_exports.py @@ -42,10 +42,7 @@ def test_model_credential_schemas_never_expose_ciphertext_or_plaintext_status() status_entry = status["$defs"]["ModelCredentialStatus"] assert set(status_entry["required"]) == { "provider_id", - "display_name", - "base_url", "model_id", - "protocol", "configured", "masked_key", "expires_at", @@ -58,13 +55,7 @@ def test_model_credential_schemas_never_expose_ciphertext_or_plaintext_status() assert "nonce" not in serialized assert upsert["properties"]["api_key"]["format"] == "password" assert upsert["properties"]["api_key"]["writeOnly"] is True - assert set(upsert["properties"]) == { - "api_key", - "display_name", - "base_url", - "model_id", - "protocol", - } + assert set(upsert["properties"]) == {"api_key"} def test_conversation_schema_exposes_linked_attempts_instead_of_bare_results() -> None: diff --git a/apps/scut-senior/tests/python/test_byok_providers.py b/apps/scut-senior/tests/python/test_byok_providers.py index a547f9aa..4903599a 100644 --- a/apps/scut-senior/tests/python/test_byok_providers.py +++ b/apps/scut-senior/tests/python/test_byok_providers.py @@ -1,69 +1,161 @@ +import json + import pytest -from scut_senior_api.byok_catalog import BYOK_CATALOG_VERSION, ByokProviderCatalog -from scut_senior_api.model_credentials import ( - ModelCredentialError, - normalize_base_url, - normalize_connection_id, +from scut_senior_api.byok_catalog import ( + BYOK_CATALOG_VERSION, + ByokModelNotRegistered, + ByokProviderCatalog, + ByokProviderNotRegistered, + EndpointPolicy, ) -def test_byok_catalog_advertises_dynamic_connections_without_global_entries() -> None: - disabled = ByokProviderCatalog().public_payload() - enabled = ByokProviderCatalog(runtime_enabled=True).public_payload() +EXPECTED_PROVIDER_IDS = ("openrouter", "deepseek", "siliconflow", "zhipu") +EXPECTED_PROVIDER_COMPANIES = { + "openrouter": "OpenRouter", + "deepseek": "DeepSeek", + "siliconflow": "SiliconFlow", + "zhipu": "Zhipu AI", +} +EXPECTED_MODELS = { + "openrouter": { + "model_id": "deepseek/deepseek-v4-flash-0731", + "company": "DeepSeek", + "display_name": "DeepSeek V4 Flash 0731", + }, + "deepseek": { + "model_id": "deepseek-v4-flash", + "company": "DeepSeek", + "display_name": "DeepSeek V4 Flash", + }, + "siliconflow": { + "model_id": "Pro/zai-org/GLM-4.7", + "company": "Z.ai", + "display_name": "GLM-4.7 Pro", + }, + "zhipu": { + "model_id": "glm-5.2", + "company": "Zhipu AI", + "display_name": "GLM-5.2", + }, +} + + +def test_byok_catalog_freezes_exact_provider_whitelist_disabled_by_default() -> None: + catalog = ByokProviderCatalog() + payload = catalog.public_payload() + + assert payload["catalog_version"] == BYOK_CATALOG_VERSION + assert payload["enabled"] is False + assert tuple( + entry.provider_id.value for entry in catalog.entries + ) == EXPECTED_PROVIDER_IDS + assert [provider["provider_id"] for provider in payload["providers"]] == list( + EXPECTED_PROVIDER_IDS + ) + assert { + provider["provider_id"]: provider["company"] + for provider in payload["providers"] + } == EXPECTED_PROVIDER_COMPANIES + assert all(provider["enabled"] is False for provider in payload["providers"]) + assert all( + provider["models_confirmed"] is True for provider in payload["providers"] + ) + assert { + provider["provider_id"]: provider["models"][0] + for provider in payload["providers"] + } == EXPECTED_MODELS + assert all(len(provider["models"]) == 1 for provider in payload["providers"]) - assert disabled == { - "catalog_version": BYOK_CATALOG_VERSION, - "enabled": False, - "providers": [], - } - assert enabled == { - "catalog_version": "byok-connections-v1", - "enabled": True, - "providers": [], - } +def test_runtime_gate_enables_all_four_fixed_providers_together() -> None: + payload = ByokProviderCatalog(runtime_enabled=True).public_payload() -@pytest.mark.parametrize("value", ["my-provider", "deepseek", "p2"]) -def test_connection_id_accepts_stable_user_defined_routes(value: str) -> None: - assert normalize_connection_id(value) == value + assert payload["enabled"] is True + assert all(provider["enabled"] is True for provider in payload["providers"]) @pytest.mark.parametrize( - "value", - ["", "OpenRouter", "two words", "https://provider.test", "-bad", "bad_underscore"], + "provider_id", + [ + "openrouter ", + "OPENROUTER", + "https://openrouter.example.invalid", + ], ) -def test_connection_id_rejects_ambiguous_or_url_like_values(value: str) -> None: - with pytest.raises(ModelCredentialError) as caught: - normalize_connection_id(value) - assert caught.value.code == "invalid_byok_connection_id" +def test_byok_catalog_rejects_unregistered_or_url_like_provider_ids( + provider_id: str, +) -> None: + with pytest.raises(ByokProviderNotRegistered): + ByokProviderCatalog().resolve_provider(provider_id) -def test_base_url_normalizes_a_public_https_provider() -> None: - assert normalize_base_url(" https://API.example.com:8443/v1/ ") == ( - "https://api.example.com:8443/v1" - ) - assert normalize_base_url("https://[2606:4700:4700::1111]:8443/v1/") == ( - "https://[2606:4700:4700::1111]:8443/v1" +def test_public_metadata_publishes_only_controlled_models_and_no_base_urls() -> None: + payload = ByokProviderCatalog().public_payload() + serialized = json.dumps(payload, ensure_ascii=False) + + assert "https://" not in serialized + assert all( + "base_url" not in provider + and provider["custom_base_url_allowed"] is False + for provider in payload["providers"] ) @pytest.mark.parametrize( - "value", + ("provider_id", "model_id"), [ - "http://api.example.com/v1", - "https://user:pass@example.com/v1", - "https://example.com/v1?key=secret", - "https://invalid host.example/v1", - "https://intranet/v1", - "https://localhost/v1", - "https://service。localhost/v1", - "https://127.0.0.1/v1", - "https://169.254.169.254/latest", - "https://10.0.0.2/v1", + ("openrouter", "deepseek/deepseek-v4-flash-0731"), + ("deepseek", "deepseek-v4-flash"), + ("siliconflow", "Pro/zai-org/GLM-4.7"), + ("zhipu", "glm-5.2"), ], ) -def test_base_url_rejects_unsafe_server_side_destinations(value: str) -> None: - with pytest.raises(ModelCredentialError) as caught: - normalize_base_url(value) - assert caught.value.code == "invalid_byok_base_url" +def test_byok_catalog_resolves_only_confirmed_models( + provider_id: str, model_id: str +) -> None: + model = ByokProviderCatalog().resolve_model(provider_id, model_id) + + assert model.model_id == model_id + + +@pytest.mark.parametrize( + ("provider_id", "model_id"), + [ + ("openrouter", "openai/gpt-4o"), + ("openrouter", "deepseek/deepseek-v4-flash-0731 "), + ("deepseek", "DEEPSEEK-V4-FLASH"), + ("siliconflow", "https://attacker.example.invalid/v1"), + ("siliconflow", "Pro/zai-org/GLM-4.7-latest"), + ("zhipu", "glm-5.3"), + ], +) +def test_byok_catalog_rejects_arbitrary_model_ids( + provider_id: str, model_id: str +) -> None: + with pytest.raises(ByokModelNotRegistered): + ByokProviderCatalog().resolve_model(provider_id, model_id) + + +@pytest.mark.parametrize("provider_id", EXPECTED_PROVIDER_IDS) +def test_all_providers_publish_only_the_fixed_endpoint_policy(provider_id: str) -> None: + catalog = ByokProviderCatalog() + entry = catalog.resolve_provider(provider_id) + public_entry = next( + item for item in catalog.public_payload()["providers"] + if item["provider_id"] == provider_id + ) + + assert entry.endpoint_policy is EndpointPolicy.FIXED_PROVIDER_ENDPOINT + assert public_entry["endpoint_policy"] == "fixed_provider_endpoint" + assert set(public_entry) == { + "provider_id", + "company", + "display_name", + "enabled", + "models_confirmed", + "models", + "custom_base_url_allowed", + "endpoint_policy", + } diff --git a/apps/scut-senior/tests/python/test_byok_runtime.py b/apps/scut-senior/tests/python/test_byok_runtime.py index 61daf7e5..1376af2a 100644 --- a/apps/scut-senior/tests/python/test_byok_runtime.py +++ b/apps/scut-senior/tests/python/test_byok_runtime.py @@ -12,13 +12,20 @@ import pytest from fastapi.testclient import TestClient +from scut_senior_api.adapters.byok import ( + DEEPSEEK_BYOK_ENDPOINT, + OPENROUTER_BYOK_ENDPOINT, + SILICONFLOW_BYOK_ENDPOINT, + ZHIPU_BYOK_ENDPOINT, +) from scut_senior_api.adapters.openrouter import HttpResponse from scut_senior_api.agent_loop import AgentBudget from scut_senior_api.auth import GitHubUserProfile, SESSION_COOKIE_NAME +from scut_senior_api.byok_catalog import ByokProviderCatalog from scut_senior_api.config import Settings from scut_senior_api.contracts import RunStatus, WorkflowRunRequest from scut_senior_api.main import create_app -from scut_senior_api.ports import GeneratedAnswer, RetrievalBatch, RetrievedSource +from scut_senior_api.ports import GeneratedAnswer from scut_senior_api.workflow_stream import WorkflowStreamSession @@ -27,51 +34,16 @@ ( "openrouter", "deepseek/deepseek-v4-flash-0731", - "https://openrouter.ai/api/v1", - "https://openrouter.ai/api/v1/chat/completions", - ), - ( - "deepseek", - "deepseek-v4-flash", - "https://api.deepseek.com", - "https://api.deepseek.com/chat/completions", + OPENROUTER_BYOK_ENDPOINT, ), + ("deepseek", "deepseek-v4-flash", DEEPSEEK_BYOK_ENDPOINT), ( "siliconflow", "Pro/zai-org/GLM-4.7", - "https://api.siliconflow.cn/v1", - "https://api.siliconflow.cn/v1/chat/completions", - ), - ( - "zhipu", - "glm-5.2", - "https://open.bigmodel.cn/api/paas/v4", - "https://open.bigmodel.cn/api/paas/v4/chat/completions", + SILICONFLOW_BYOK_ENDPOINT, ), + ("zhipu", "glm-5.2", ZHIPU_BYOK_ENDPOINT), ) -ROUTE_CONFIG = { - provider_id: (model_id, base_url) - for provider_id, model_id, base_url, _ in ROUTES -} - - -def credential_payload( - provider_id: str, - api_key: str, - *, - model_id: str | None = None, - base_url: str | None = None, -) -> dict[str, str]: - default_model, default_base_url = ROUTE_CONFIG.get( - provider_id, ("custom-model", "https://models.example.com/v1") - ) - return { - "display_name": provider_id.replace("-", " ").title(), - "base_url": base_url or default_base_url, - "model_id": model_id or default_model, - "protocol": "openai_chat_completions", - "api_key": api_key, - } class RecordingHttpClient: @@ -111,9 +83,7 @@ def success_response() -> HttpResponse: ) -def settings( - database_path: Path, *, agent_decision_mode: str = "rule" -) -> Settings: +def settings(database_path: Path) -> Settings: return Settings( app_env="test", identity_mode="github_oauth", @@ -125,21 +95,14 @@ def settings( post_login_redirect_url="https://testserver/", byok_master_key=MASTER_KEY, byok_key_version=3, - agent_decision_mode=agent_decision_mode, ) def authenticated_app( - tmp_path: Path, - http_client: RecordingHttpClient | None, - *, - agent_decision_mode: str = "rule", + tmp_path: Path, http_client: RecordingHttpClient | None ) -> tuple[object, TestClient, str, str]: app = create_app( - settings( - tmp_path / "byok-runtime.db", - agent_decision_mode=agent_decision_mode, - ), + settings(tmp_path / "byok-runtime.db"), byok_http_client=http_client, ) repository = app.state.repository @@ -178,23 +141,19 @@ def workflow_request( @pytest.mark.parametrize( - ("provider_id", "model_id", "base_url", "endpoint"), ROUTES + ("provider_id", "model_id", "endpoint"), ROUTES ) -def test_custom_byok_connections_use_the_saved_endpoint_and_model( +def test_four_byok_routes_use_one_fixed_endpoint_model_without_response_schema( tmp_path: Path, provider_id: str, model_id: str, - base_url: str, endpoint: str, ) -> None: http = RecordingHttpClient() app, client, _, conversation_id = authenticated_app(tmp_path, http) api_key = f"sk-{provider_id}-private" assert client.put( - f"/api/v1/model-credentials/{provider_id}", - json=credential_payload( - provider_id, api_key, model_id=model_id, base_url=base_url - ), + f"/api/v1/model-credentials/{provider_id}", json={"api_key": api_key} ).status_code == 200 response = client.post( @@ -208,13 +167,15 @@ def test_custom_byok_connections_use_the_saved_endpoint_and_model( assert call["url"] == endpoint assert call["headers"]["Authorization"] == f"Bearer {api_key}" assert call["payload"]["model"] == model_id - assert 0 < call["timeout_seconds"] <= 120.0 - direct_deepseek = provider_id == "deepseek" - assert call["payload"]["max_tokens"] == ( - 8192 if direct_deepseek else 12288 - ) - assert call["payload"]["temperature"] == 0.2 - if direct_deepseek: + assert call["timeout_seconds"] == 120.0 + # Call defaults are declared on the fixed catalog entry, not hard-coded + # in the request builder; assert against the catalog so a provider-specific + # default (e.g. a larger budget for reasoning models) stays correct. + catalog_entry = ByokProviderCatalog().resolve_model(provider_id, model_id) + assert call["payload"]["max_tokens"] == catalog_entry.default_max_tokens + assert call["payload"]["temperature"] == catalog_entry.default_temperature + if provider_id in {"openrouter", "deepseek"}: + assert call["payload"]["max_tokens"] == 12288 assert call["payload"]["reasoning_effort"] == "low" else: assert "reasoning_effort" not in call["payload"] @@ -246,207 +207,6 @@ def test_custom_byok_connections_use_the_saved_endpoint_and_model( assert api_key not in persisted -def test_byok_model_mode_uses_one_compact_action_call_then_one_answer_call( - tmp_path: Path, -) -> None: - responses = [ - HttpResponse( - 200, - json.dumps( - {"choices": [{"message": {"content": "generate_answer"}}]} - ).encode(), - ), - success_response(), - ] - http = RecordingHttpClient(callback=lambda: responses.pop(0)) - app, client, _, conversation_id = authenticated_app( - tmp_path, - http, - agent_decision_mode="model", - ) - key = "sk-deepseek-action-private" - assert client.put( - "/api/v1/model-credentials/deepseek", - json=credential_payload("deepseek", key), - ).status_code == 200 - - payload = workflow_request( - conversation_id, "deepseek", "deepseek-v4-flash" - ) - payload.update( - { - "workflow_type": "exam_review", - "user_input": "结合历年卷,帮我总结一份复习大纲", - "workflow_payload": { - "syllabus": "行列式、矩阵、秩、方程组、特征值和二次型", - "exam_date": "2026-08-29", - "available_hours": 12, - "goals": ["90+"], - "weak_topics": ["公式记不住"], - }, - } - ) - response = client.post("/api/v1/workflow-runs", json=payload) - - assert response.status_code == 201, response.text - assert len(http.calls) == 2 - action_call, answer_call = http.calls - assert action_call["url"] == "https://api.deepseek.com/chat/completions" - assert action_call["payload"]["max_tokens"] == 256 - assert action_call["payload"]["temperature"] == 0 - assert action_call["payload"]["model"] == "deepseek-v4-flash" - assert action_call["payload"]["reasoning_effort"] == "low" - action_body = json.dumps(action_call["payload"], ensure_ascii=False) - assert "课程资料候选" not in action_body - assert key not in action_body - assert answer_call["payload"]["max_tokens"] == 8192 - assert answer_call["payload"]["temperature"] == 0.2 - assert answer_call["payload"]["reasoning_effort"] == "low" - - result = response.json() - metrics = next( - event["result"] - for event in result["trace"] - if event["node"] == "byok_model" - ) - assert metrics["decision_call_count"] == 1 - assert metrics["model_action_accepted_count"] == 1 - assert metrics["decision_fallback_count"] == 0 - assert metrics["action_rejection_count"] == 0 - assert metrics["answer_call_count"] == 1 - assert key not in response.text - - -def test_openrouter_hosted_deepseek_does_not_receive_direct_deepseek_profile( - tmp_path: Path, -) -> None: - responses = [ - HttpResponse( - 200, - json.dumps( - {"choices": [{"message": {"content": "generate_answer"}}]} - ).encode(), - ), - success_response(), - ] - http = RecordingHttpClient(callback=lambda: responses.pop(0)) - _, client, _, conversation_id = authenticated_app( - tmp_path, - http, - agent_decision_mode="model", - ) - key = "sk-openrouter-action-private" - assert client.put( - "/api/v1/model-credentials/openrouter", - json=credential_payload("openrouter", key), - ).status_code == 200 - - response = client.post( - "/api/v1/workflow-runs", - json=workflow_request( - conversation_id, - "openrouter", - "deepseek/deepseek-v4-flash-0731", - ), - ) - - assert response.status_code == 201, response.text - assert len(http.calls) == 2 - action_call, answer_call = http.calls - assert action_call["payload"]["max_tokens"] == 512 - assert answer_call["payload"]["max_tokens"] == 12288 - assert "reasoning_effort" not in action_call["payload"] - assert "reasoning_effort" not in answer_call["payload"] - assert key not in response.text - - -@pytest.mark.parametrize( - ("raw_action", "expected_retrieval_calls", "accepted", "fallbacks"), - [ - ("retrieve_with_query_rewrite", 2, 1, 0), - ("先检索更多资料再回答", 1, 0, 1), - ], -) -def test_byok_action_rewrite_and_parse_fallback_remain_bounded( - tmp_path: Path, - raw_action: str, - expected_retrieval_calls: int, - accepted: int, - fallbacks: int, -) -> None: - class CountingRetrieval: - def __init__(self) -> None: - self.calls: list[str] = [] - - def is_course_available(self, course_id: str) -> bool: - return course_id == "linear_algebra" - - def search(self, course_ids: list[str], query: str) -> RetrievalBatch: - assert course_ids == ["linear_algebra"] - self.calls.append(query) - ordinal = len(self.calls) - source = RetrievedSource( - chunk_id=f"linear_algebra:byok-action:p{ordinal}", - course_id="linear_algebra", - source_id=f"byok-action-{ordinal}", - source_title=f"历年卷资料 {ordinal}", - text="此处是只允许进入回答调用、不能进入 Action 请求的证据正文。", - locator_type="page", - locator_start=ordinal, - locator_end=ordinal, - question_id=None, - heading_path=(), - ) - return RetrievalBatch((source,), "byok-action-corpus", "byok-action-pack") - - responses = [ - HttpResponse( - 200, - json.dumps( - {"choices": [{"message": {"content": raw_action}}]}, - ensure_ascii=False, - ).encode(), - ), - success_response(), - ] - http = RecordingHttpClient(callback=lambda: responses.pop(0)) - app, client, _, conversation_id = authenticated_app( - tmp_path, - http, - agent_decision_mode="model", - ) - retrieval = CountingRetrieval() - app.state.service.retrieval = retrieval - key = "sk-bounded-action-private" - assert client.put( - "/api/v1/model-credentials/deepseek", - json=credential_payload("deepseek", key), - ).status_code == 200 - - response = client.post( - "/api/v1/workflow-runs", - json=workflow_request( - conversation_id, "deepseek", "deepseek-v4-flash" - ), - ) - - assert response.status_code == 201, response.text - assert len(http.calls) == 2 - assert len(retrieval.calls) == expected_retrieval_calls - action_body = json.dumps(http.calls[0]["payload"], ensure_ascii=False) - assert "不能进入 Action 请求" not in action_body - metrics = next( - event["result"] - for event in response.json()["trace"] - if event["node"] == "byok_model" - ) - assert metrics["decision_call_count"] == 1 - assert metrics["model_action_accepted_count"] == accepted - assert metrics["decision_fallback_count"] == fallbacks - assert metrics["answer_call_count"] == 1 - assert key not in response.text - - def test_byok_accepts_a_plain_text_complex_answer_without_retry(tmp_path: Path) -> None: plain_text = ( "先通过初等行变换把矩阵化为阶梯形,再数每一行的首个非零元。" @@ -464,8 +224,7 @@ def test_byok_accepts_a_plain_text_complex_answer_without_retry(tmp_path: Path) _, client, _, conversation_id = authenticated_app(tmp_path, http) key = "sk-deepseek-plain-text" assert client.put( - "/api/v1/model-credentials/deepseek", - json=credential_payload("deepseek", key), + "/api/v1/model-credentials/deepseek", json={"api_key": key} ).status_code == 200 response = client.post( @@ -490,38 +249,6 @@ def test_byok_accepts_a_plain_text_complex_answer_without_retry(tmp_path: Path) assert key not in response.text -def test_byok_provider_timeout_is_capped_by_remaining_agent_runtime( - tmp_path: Path, -) -> None: - from scut_senior_api.adapters.byok import OpenAICompatibleByokGateway - - http = RecordingHttpClient() - app, client, token, conversation_id = authenticated_app(tmp_path, http) - key = "sk-deepseek-runtime-cap" - assert client.put( - "/api/v1/model-credentials/deepseek", - json=credential_payload("deepseek", key), - ).status_code == 200 - principal = app.state.repository.authenticate_session(token) - assert principal is not None - connection = app.state.service.credential_manager.get_connection( - principal, "deepseek", "deepseek-v4-flash" - ) - request = WorkflowRunRequest.model_validate( - workflow_request(conversation_id, "deepseek", "deepseek-v4-flash") - ) - - OpenAICompatibleByokGateway(http_client=http).generate( - api_key=key, - connection=connection, - request=request, - sources=[], - timeout_seconds=37.5, - ) - - assert http.calls[-1]["timeout_seconds"] == 37.5 - - def test_cancel_during_key_load_prevents_the_first_byok_provider_call( tmp_path: Path, ) -> None: @@ -529,9 +256,6 @@ def test_cancel_during_key_load_prevents_the_first_byok_provider_call( release_key_load = Event() class BlockingCredentialManager: - def __init__(self, delegate): - self.get_connection = delegate.get_connection - def load_api_key(self, principal, provider_id): del principal, provider_id key_load_entered.set() @@ -543,22 +267,16 @@ class RecordingByokModel: def __init__(self) -> None: self.calls = 0 - def generate(self, *, api_key, connection, request, sources, history=(), cancel_check=None): - del api_key, connection, request, sources, history, cancel_check + def generate(self, *, api_key, request, sources, history=()): + del api_key, request, sources, history self.calls += 1 return GeneratedAnswer(repository_answer="不得调用供应商。") app, client, token, conversation_id = authenticated_app(tmp_path, None) - assert client.put( - "/api/v1/model-credentials/openrouter", - json=credential_payload("openrouter", "sk-blocking"), - ).status_code == 200 principal = app.state.repository.authenticate_session(token) assert principal is not None model = RecordingByokModel() - app.state.service.credential_manager = BlockingCredentialManager( - app.state.service.credential_manager - ) + app.state.service.credential_manager = BlockingCredentialManager() app.state.service.byok_model = model request = WorkflowRunRequest.model_validate( workflow_request( @@ -596,8 +314,7 @@ def test_arbitrary_byok_model_is_rejected_before_decryption_or_http( http = RecordingHttpClient() app, client, _, conversation_id = authenticated_app(tmp_path, http) assert client.put( - "/api/v1/model-credentials/zhipu", - json=credential_payload("zhipu", "sk-zhipu"), + "/api/v1/model-credentials/zhipu", json={"api_key": "sk-zhipu"} ).status_code == 200 payload = workflow_request(conversation_id, "zhipu", "glm-5.3") response = client.post("/api/v1/workflow-runs", json=payload) @@ -627,8 +344,7 @@ def test_control_characters_are_rejected_before_storage_or_provider_http( app, client, _, conversation_id = authenticated_app(tmp_path, http) saved = client.put( - "/api/v1/model-credentials/openrouter", - json=credential_payload("openrouter", api_key), + "/api/v1/model-credentials/openrouter", json={"api_key": api_key} ) assert saved.status_code == 422 @@ -668,8 +384,7 @@ def test_missing_key_and_upstream_failure_persist_sanitized_failed_attempts( api_key = "sk-upstream-secret" assert client.put( - "/api/v1/model-credentials/openrouter", - json=credential_payload("openrouter", api_key), + "/api/v1/model-credentials/openrouter", json={"api_key": api_key} ).status_code == 200 failed = client.post("/api/v1/workflow-runs", json=request) assert failed.status_code == 502 @@ -679,9 +394,7 @@ def test_missing_key_and_upstream_failure_persist_sanitized_failed_attempts( assert api_key not in failed.text history = client.get(f"/api/v1/conversations/{conversation_id}").json() - # A missing connection is rejected before a workflow run is created. Only - # the actual upstream attempt is persisted as a failed run. - assert len(history["runs"]) == 1 + assert len(history["runs"]) == 2 for attempt in history["runs"]: result = attempt["result"] assert result["run_status"] == "failed" @@ -693,8 +406,6 @@ def test_missing_key_and_upstream_failure_persist_sanitized_failed_attempts( event for event in result["trace"] if event["status"] == "failed" ) assert failed_event["result"]["failure_code"] == "workflow_execution_failed" - assert failed_event["result"]["decision_call_count"] == 0 - assert failed_event["result"]["answer_call_count"] == 1 serialized = json.dumps(history, ensure_ascii=False) assert api_key not in serialized assert private_body not in serialized @@ -731,8 +442,7 @@ def test_user_key_permission_credit_and_rate_errors_are_safe( http = RecordingHttpClient(HttpResponse(upstream_status, private_body.encode())) _, client, _, conversation_id = authenticated_app(tmp_path, http) assert client.put( - "/api/v1/model-credentials/zhipu", - json=credential_payload("zhipu", key), + "/api/v1/model-credentials/zhipu", json={"api_key": key} ).status_code == 200 response = client.post( @@ -772,8 +482,7 @@ def timeout_then_succeed() -> HttpResponse: _, client, _, conversation_id = authenticated_app(tmp_path, http) key = "sk-private-retry" assert client.put( - "/api/v1/model-credentials/deepseek", - json=credential_payload("deepseek", key), + "/api/v1/model-credentials/deepseek", json={"api_key": key} ).status_code == 200 response = client.post( @@ -783,9 +492,7 @@ def timeout_then_succeed() -> HttpResponse: assert response.status_code == 201, response.text assert len(http.calls) == 2 - assert {call["url"] for call in http.calls} == { - "https://api.deepseek.com/chat/completions" - } + assert {call["url"] for call in http.calls} == {DEEPSEEK_BYOK_ENDPOINT} assert {call["payload"]["model"] for call in http.calls} == { "deepseek-v4-flash" } @@ -820,8 +527,7 @@ def invalid_then_succeed() -> HttpResponse: _, client, _, conversation_id = authenticated_app(tmp_path, http) key = "sk-private-invalid-retry" assert client.put( - "/api/v1/model-credentials/zhipu", - json=credential_payload("zhipu", key), + "/api/v1/model-credentials/zhipu", json={"api_key": key} ).status_code == 200 response = client.post( @@ -831,9 +537,7 @@ def invalid_then_succeed() -> HttpResponse: assert response.status_code == 201, response.text assert len(http.calls) == 2 - assert {call["url"] for call in http.calls} == { - "https://open.bigmodel.cn/api/paas/v4/chat/completions" - } + assert {call["url"] for call in http.calls} == {ZHIPU_BYOK_ENDPOINT} assert {call["payload"]["model"] for call in http.calls} == {"glm-5.2"} assert {call["headers"]["Authorization"] for call in http.calls} == { f"Bearer {key}" @@ -848,8 +552,7 @@ def test_byok_invalid_response_does_not_retry_past_soft_runtime_budget( _, client, _, conversation_id = authenticated_app(tmp_path, http) key = "sk-private-soft-runtime" assert client.put( - "/api/v1/model-credentials/deepseek", - json=credential_payload("deepseek", key), + "/api/v1/model-credentials/deepseek", json={"api_key": key} ).status_code == 200 monkeypatch.setattr( AgentBudget, @@ -877,8 +580,7 @@ def test_logout_during_provider_call_prevents_late_success_or_failed_history( http = RecordingHttpClient() app, client, token, conversation_id = authenticated_app(tmp_path, http) assert client.put( - "/api/v1/model-credentials/deepseek", - json=credential_payload("deepseek", "sk-race"), + "/api/v1/model-credentials/deepseek", json={"api_key": "sk-race"} ).status_code == 200 def revoke_during_call() -> HttpResponse: @@ -910,8 +612,7 @@ def test_test_profile_without_injected_byok_transport_fails_closed( app, client, _, conversation_id = authenticated_app(tmp_path, None) key = "sk-no-network" assert client.put( - "/api/v1/model-credentials/openrouter", - json=credential_payload("openrouter", key), + "/api/v1/model-credentials/openrouter", json={"api_key": key} ).status_code == 200 response = client.post( @@ -929,7 +630,7 @@ def test_test_profile_without_injected_byok_transport_fails_closed( def test_padded_key_is_rejected_consistently_on_save_and_generate(tmp_path: Path) -> None: """The shared validator must reject a padded paste on both paths.""" - from scut_senior_api.adapters.byok import ByokGatewayError, OpenAICompatibleByokGateway + from scut_senior_api.adapters.byok import ByokGatewayError, FixedByokModelGateway from scut_senior_api.credentials import validate_user_api_key for padded in (" sk-padded", "sk-padded ", "sk pa dded", "\tsk-tab"): @@ -940,38 +641,18 @@ def test_padded_key_is_rejected_consistently_on_save_and_generate(tmp_path: Path app, client, _, conversation_id = authenticated_app(tmp_path, http) saved = client.put( - "/api/v1/model-credentials/openrouter", - json=credential_payload("openrouter", " sk-padded"), + "/api/v1/model-credentials/openrouter", json={"api_key": " sk-padded"} ) assert saved.status_code == 422 assert saved.json()["error"]["code"] == "invalid_model_credential" - gateway = OpenAICompatibleByokGateway(http_client=http) + gateway = FixedByokModelGateway(http_client=http) request = WorkflowRunRequest.model_validate( workflow_request(conversation_id, "openrouter", "deepseek/deepseek-v4-flash-0731") ) with pytest.raises(ByokGatewayError) as exc_info: - from scut_senior_api.ports import StoredModelCredential - from datetime import UTC, datetime - from uuid import uuid4 - - connection = StoredModelCredential( - user_id=uuid4(), - provider_id="openrouter", - display_name="OpenRouter", - base_url="https://openrouter.ai/api/v1", - model_id="deepseek/deepseek-v4-flash-0731", - protocol="openai_chat_completions", - ciphertext=b"x" * 17, - nonce=b"x" * 12, - algorithm="AES-256-GCM", - key_version=1, - expires_at=datetime.now(UTC), - updated_at=datetime.now(UTC), - ) gateway.generate( api_key="sk-padded ", - connection=connection, request=request, sources=[], ) diff --git a/apps/scut-senior/tests/python/test_dense_leg.py b/apps/scut-senior/tests/python/test_dense_leg.py index 419df171..f95c4d58 100644 --- a/apps/scut-senior/tests/python/test_dense_leg.py +++ b/apps/scut-senior/tests/python/test_dense_leg.py @@ -3,7 +3,12 @@ import pytest from scut_senior_api.embedding import DeterministicHashEmbeddingProvider -from scut_senior_api.fusion import DEFAULT_RRF_K, reciprocal_rank_fusion +from scut_senior_api.fusion import ( + DEFAULT_RRF_K, + rank_hybrid_candidates, + reciprocal_rank_fusion, + weighted_reciprocal_rank_fusion, +) from scut_senior_api.vector_store import VectorStore @@ -59,6 +64,27 @@ def test_rrf_fusion_uses_default_k_and_limits_top_n() -> None: assert DEFAULT_RRF_K == 60 +def test_weighted_rrf_rejects_mismatched_leg_weights() -> None: + with pytest.raises(ValueError, match="same length"): + weighted_reciprocal_rank_fusion( + [["sparse"], ["dense"]], weights=[1.0], top_n=5 + ) + + +def test_hybrid_rank_allows_dense_result_to_beat_low_ranked_lexical_result() -> None: + lexical = [f"lexical-{index}" for index in range(1, 31)] + ranked = rank_hybrid_candidates(lexical, ["dense-1"], limit=20) + + assert ranked.index("dense-1") < ranked.index("lexical-12") + assert "lexical-20" not in ranked + + +def test_hybrid_rank_keeps_explicit_exact_match_before_fusion() -> None: + assert rank_hybrid_candidates( + ["lexical", "exact"], ["dense", "exact"], protected_ids={"exact"}, limit=3 + ) == ["exact", "lexical", "dense"] + + def test_rrf_fusion_validates_parameters() -> None: with pytest.raises(ValueError): reciprocal_rank_fusion([["a"]], k=0, top_n=1) diff --git a/apps/scut-senior/tests/python/test_model_credentials.py b/apps/scut-senior/tests/python/test_model_credentials.py index e041225a..7aa7c83f 100644 --- a/apps/scut-senior/tests/python/test_model_credentials.py +++ b/apps/scut-senior/tests/python/test_model_credentials.py @@ -1,7 +1,6 @@ from __future__ import annotations import base64 -import shutil import sqlite3 from datetime import UTC, datetime, timedelta from pathlib import Path @@ -16,35 +15,13 @@ CREDENTIAL_ALGORITHM, CredentialCipher, CredentialDecryptionError, - EncryptedCredential, ) -from scut_senior_api.adapters.sqlite import SQLiteWorkflowRepository from scut_senior_api.main import create_app -from scut_senior_api.paths import MIGRATION_ROOT MASTER_KEY_BYTES = bytes(range(32)) MASTER_KEY_B64 = base64.b64encode(MASTER_KEY_BYTES).decode("ascii") - - -def connection_payload( - api_key: str, - *, - display_name: str = "DeepSeek", - base_url: str = "https://api.deepseek.com", - model_id: str = "deepseek-v4-flash", -) -> dict[str, str]: - return { - "api_key": api_key, - "display_name": display_name, - "base_url": base_url, - "model_id": model_id, - "protocol": "openai_chat_completions", - } - - -def credential_upsert(api_key: str) -> ModelCredentialUpsert: - return ModelCredentialUpsert.model_validate(connection_payload(api_key)) +PROVIDERS = ("openrouter", "deepseek", "siliconflow", "zhipu") class MutableClock: @@ -175,11 +152,7 @@ def test_mock_identity_cannot_manage_credentials_even_with_a_test_master_key( assert all(item["enabled"] is False for item in models["byok_providers"]) for method, url, payload in ( ("get", "/api/v1/model-credentials", None), - ( - "put", - "/api/v1/model-credentials/openrouter", - connection_payload("secret"), - ), + ("put", "/api/v1/model-credentials/openrouter", {"api_key": "secret"}), ("delete", "/api/v1/model-credentials/openrouter", None), ): response = getattr(client, method)(url, json=payload) if payload else getattr(client, method)(url) @@ -197,32 +170,27 @@ def test_crud_returns_only_masked_metadata_and_database_contains_only_aead( catalog = client.get("/api/v1/models").json() assert catalog["byok_available"] is True - # User-defined connections are private account data and are not published - # through the global model catalog. - assert catalog["byok_providers"] == [] + assert [item["provider_id"] for item in catalog["byok_providers"]] == list(PROVIDERS) + assert all(item["enabled"] is True for item in catalog["byok_providers"]) initial = client.get("/api/v1/model-credentials") assert initial.status_code == 200 assert initial.headers["cache-control"] == "private, no-store" - assert initial.json() == [] + assert [item["provider_id"] for item in initial.json()] == list(PROVIDERS) + assert all(item["configured"] is False for item in initial.json()) + assert all(item["writable"] is False for item in initial.json()) + assert all(item["source"] == "user_key" for item in initial.json()) + assert all(item["updated_at"] is None for item in initial.json()) saved = client.put( "/api/v1/model-credentials/openrouter", - json=connection_payload( - secret, - display_name="OpenRouter DeepSeek", - base_url="https://openrouter.ai/api/v1/", - model_id="deepseek/deepseek-v4-flash-0731", - ), + json={"api_key": secret}, ) assert saved.status_code == 200, saved.text assert saved.headers["cache-control"] == "private, no-store" assert saved.json() == { "provider_id": "openrouter", - "display_name": "OpenRouter DeepSeek", - "base_url": "https://openrouter.ai/api/v1", "model_id": "deepseek/deepseek-v4-flash-0731", - "protocol": "openai_chat_completions", "configured": True, "masked_key": "••••••••", "expires_at": saved.json()["expires_at"], @@ -263,8 +231,7 @@ def test_replace_restart_same_session_and_new_session_isolation(tmp_path: Path) for secret in ("sk-old", "sk-new"): response = client.put( - "/api/v1/model-credentials/deepseek", - json=connection_payload(secret), + "/api/v1/model-credentials/deepseek", json={"api_key": secret} ) assert response.status_code == 200 with sqlite3.connect(database_path) as connection: @@ -297,98 +264,6 @@ def test_replace_restart_same_session_and_new_session_isolation(tmp_path: Path) )["configured"] is True -def test_0018_preserves_existing_ciphertext_and_adds_connection_profile( - tmp_path: Path, -) -> None: - migration_root = tmp_path / "migrations-through-0017" - migration_root.mkdir() - for migration in sorted(MIGRATION_ROOT.glob("*.sql")): - if migration.name >= "0018_custom_byok_connections.sql": - break - shutil.copy2(migration, migration_root / migration.name) - - database_path = tmp_path / "upgrade.db" - legacy = SQLiteWorkflowRepository( - database_path, migration_root=migration_root - ) - user_id = legacy.upsert_github_user( - GitHubUserProfile(404, "upgrade-user") - ) - session = legacy.issue_session(user_id) - cipher = CredentialCipher(MASTER_KEY_BYTES, 7) - encrypted = cipher.encrypt( - "sk-preserved", - user_id=user_id, - provider_id="deepseek", - ) - now = datetime.now(UTC) - with legacy.connect() as connection: - connection.execute( - """ - INSERT INTO model_credentials ( - user_id, provider_id, ciphertext, nonce, algorithm, - key_version, created_at, updated_at, expires_at - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) - """, - ( - str(user_id), - "deepseek", - sqlite3.Binary(encrypted.ciphertext), - sqlite3.Binary(encrypted.nonce), - encrypted.algorithm, - encrypted.key_version, - now.isoformat(), - now.isoformat(), - session.expires_at.isoformat(), - ), - ) - - upgraded = SQLiteWorkflowRepository(database_path) - record = upgraded.get_model_credential(user_id, "deepseek") - assert record is not None - assert record.display_name == "DeepSeek" - assert record.base_url == "https://api.deepseek.com" - assert record.model_id == "deepseek-v4-flash" - assert record.protocol == "openai_chat_completions" - assert record.ciphertext == encrypted.ciphertext - assert record.nonce == encrypted.nonce - assert cipher.decrypt( - EncryptedCredential( - ciphertext=record.ciphertext, - nonce=record.nonce, - key_version=record.key_version, - algorithm=record.algorithm, - ), - user_id=user_id, - provider_id="deepseek", - ) == "sk-preserved" - - with upgraded.connect() as connection: - with pytest.raises(sqlite3.IntegrityError): - connection.execute( - """ - INSERT INTO model_credentials ( - user_id, provider_id, display_name, base_url, model_id, - protocol, ciphertext, nonce, algorithm, key_version, - created_at, updated_at, expires_at - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - """, - ( - str(user_id), - "bad--id", - "Bad", - "https://models.example.com/v1", - "model", - "openai_chat_completions", - sqlite3.Binary(b"x" * 17), - sqlite3.Binary(b"n" * 12), - "AES-256-GCM", - 1, - now.isoformat(), - now.isoformat(), - session.expires_at.isoformat(), - ), - ) def test_logout_delete_expiry_and_restore_physically_remove_credentials( tmp_path: Path, ) -> None: @@ -399,25 +274,13 @@ def test_logout_delete_expiry_and_restore_physically_remove_credentials( client, _ = authenticated_client(app) assert client.put( - "/api/v1/model-credentials/siliconflow", - json=connection_payload( - "sk-life", - display_name="SiliconFlow", - base_url="https://api.siliconflow.cn/v1", - model_id="Pro/zai-org/GLM-4.7", - ), + "/api/v1/model-credentials/siliconflow", json={"api_key": "sk-life"} ).status_code == 200 deleted = client.delete("/api/v1/model-credentials/siliconflow") assert deleted.status_code == 204 assert deleted.headers["cache-control"] == "private, no-store" assert client.put( - "/api/v1/model-credentials/zhipu", - json=connection_payload( - "sk-life-2", - display_name="Zhipu", - base_url="https://open.bigmodel.cn/api/paas/v4", - model_id="glm-5.2", - ), + "/api/v1/model-credentials/zhipu", json={"api_key": "sk-life-2"} ).status_code == 200 assert client.post("/api/v1/auth/logout").status_code == 200 with sqlite3.connect(database_path) as connection: @@ -428,13 +291,7 @@ def test_logout_delete_expiry_and_restore_physically_remove_credentials( expiring, _ = authenticated_client(app, github_id=202, login="expiring") assert expiring.put( - "/api/v1/model-credentials/openrouter", - json=connection_payload( - "sk-expire", - display_name="OpenRouter", - base_url="https://openrouter.ai/api/v1", - model_id="deepseek/deepseek-v4-flash-0731", - ), + "/api/v1/model-credentials/openrouter", json={"api_key": "sk-expire"} ).status_code == 200 clock.advance(timedelta(days=7)) assert expiring.get("/api/v1/model-credentials").status_code == 401 @@ -446,8 +303,7 @@ def test_logout_delete_expiry_and_restore_physically_remove_credentials( fresh, _ = authenticated_client(app, github_id=303, login="backup") assert fresh.put( - "/api/v1/model-credentials/deepseek", - json=connection_payload("sk-backup"), + "/api/v1/model-credentials/deepseek", json={"api_key": "sk-backup"} ).status_code == 200 backup_path = tmp_path / "backup.db" app.state.repository.backup_to(backup_path) @@ -465,25 +321,24 @@ def test_logout_delete_expiry_and_restore_physically_remove_credentials( ).fetchone()[0] == 3 -def test_connection_id_and_base_url_contract_rejects_secret_without_reflection( +def test_provider_and_base_url_contract_rejects_secret_without_reflection( tmp_path: Path, ) -> None: app = create_app(byok_settings(tmp_path / "whitelist.db")) client, _ = authenticated_client(app) secret = "sk-never-reflect" - invalid_id = client.put( - "/api/v1/model-credentials/Not_Allowed", - json=connection_payload(secret), + unknown = client.put( + "/api/v1/model-credentials/not-a-provider", json={"api_key": secret} ) - assert invalid_id.status_code == 422 - assert secret not in invalid_id.text - invalid_url = client.put( + assert unknown.status_code == 422 + assert secret not in unknown.text + extra = client.put( "/api/v1/model-credentials/openrouter", - json=connection_payload(secret, base_url="http://127.0.0.1/v1"), + json={"api_key": secret, "base_url": "https://evil.invalid/v1"}, ) - assert invalid_url.status_code == 422 - assert secret not in invalid_url.text + assert extra.status_code == 422 + assert secret not in extra.text with sqlite3.connect(app.state.settings.database_path) as connection: assert connection.execute( "SELECT COUNT(*) FROM model_credentials" @@ -501,7 +356,7 @@ def test_stale_principal_is_revalidated_before_credential_write(tmp_path: Path) app.state.credential_manager.replace( principal, "openrouter", - credential_upsert("sk-too-late"), + ModelCredentialUpsert(api_key="sk-too-late"), ) with sqlite3.connect(app.state.settings.database_path) as connection: assert connection.execute( @@ -521,7 +376,7 @@ def test_revoke_after_replace_persists_per_user_credential(tmp_path: Path) -> No status = app.state.credential_manager.replace( principal, "openrouter", - credential_upsert("sk-race"), + ModelCredentialUpsert(api_key="sk-race"), ) assert status.configured is True # Cross-device: revoking the session that wrote the key must not clear the diff --git a/apps/scut-senior/tests/python/test_openrouter_health.py b/apps/scut-senior/tests/python/test_openrouter_health.py index b79723b1..983ebad6 100644 --- a/apps/scut-senior/tests/python/test_openrouter_health.py +++ b/apps/scut-senior/tests/python/test_openrouter_health.py @@ -116,12 +116,12 @@ def test_health_checker_requires_model_presence_zero_price_and_structured_output "Accept": "application/json", "Authorization": "Bearer server-health-secret", }, - "timeout_seconds": 10.0, + "timeout_seconds": 20.0, }, { "url": OPENROUTER_MODELS_URL, "headers": {"Accept": "application/json"}, - "timeout_seconds": 10.0, + "timeout_seconds": 20.0, } ] diff --git a/apps/scut-senior/tests/python/test_openrouter_models.py b/apps/scut-senior/tests/python/test_openrouter_models.py index 6ccc0fab..3696a506 100644 --- a/apps/scut-senior/tests/python/test_openrouter_models.py +++ b/apps/scut-senior/tests/python/test_openrouter_models.py @@ -12,11 +12,9 @@ from scut_senior_api.adapters.openrouter import ( OPENROUTER_CHAT_COMPLETIONS_URL, HttpResponse, - OpenRouterModelGateway, _quota_reset_at, ) from scut_senior_api.config import Settings, UnsafeRuntimeConfiguration -from scut_senior_api.contracts import WorkflowRunRequest from scut_senior_api.byok_catalog import BYOK_CATALOG_VERSION from scut_senior_api.main import create_app from scut_senior_api.model_catalog import ( @@ -24,7 +22,6 @@ ModelHealthResult, PLATFORM_DAILY_QUOTA_EXHAUSTED_MESSAGE, ) -from scut_senior_api.ports import RetrievedSource MODEL_FIXTURES = [ @@ -245,7 +242,7 @@ def _client_with_conversation( return client, conversation.json()["conversation_id"] -def test_model_catalog_returns_platform_models_without_private_byok_connections( +def test_model_catalog_returns_fixed_openrouter_and_zhipu_entries( tmp_path: Path, ) -> None: client = TestClient( @@ -274,7 +271,23 @@ def test_model_catalog_returns_platform_models_without_private_byok_connections( assert body["health_checked_at"] is None assert body["byok_available"] is False assert body["byok_catalog_version"] == BYOK_CATALOG_VERSION - assert body["byok_providers"] == [] + assert [item["provider_id"] for item in body["byok_providers"]] == [ + "openrouter", + "deepseek", + "siliconflow", + "zhipu", + ] + assert all(item["enabled"] is False for item in body["byok_providers"]) + assert all( + item["models_confirmed"] is True for item in body["byok_providers"] + ) + assert [item["models"][0]["model_id"] for item in body["byok_providers"]] == [ + "deepseek/deepseek-v4-flash-0731", + "deepseek-v4-flash", + "Pro/zai-org/GLM-4.7", + "glm-5.2", + ] + assert all(len(item["models"]) == 1 for item in body["byok_providers"]) assert body["quota_notice"] assert body["quota_exhausted_message"] == PLATFORM_DAILY_QUOTA_EXHAUSTED_MESSAGE assert len(body["models"]) == 6 @@ -510,52 +523,6 @@ def test_openrouter_uses_one_exact_model_without_a_structured_output_contract( assert model_event["result"]["real_model_called"] is True -def test_openrouter_action_decision_uses_compact_bounded_prompt() -> None: - selected_model = "google/gemma-4-26b-a4b-it:free" - http_client = RecordingHttpClient( - _chat_completion_response("retrieve_with_query_rewrite") - ) - gateway = OpenRouterModelGateway( - api_key="server-only-secret", - allowed_model_ids={selected_model}, - http_client=http_client, - ) - request = WorkflowRunRequest.model_validate( - _workflow_request( - "11111111-1111-1111-1111-111111111111", selected_model - ) - ) - source = RetrievedSource( - chunk_id="linear_algebra:compact:p1", - course_id="linear_algebra", - source_id="compact-source", - source_title="线性代数历年卷", - text="不应进入决策请求的完整私有证据正文", - locator_type="page", - locator_start=1, - locator_end=1, - question_id=None, - heading_path=(), - ) - - action = gateway.decide_action( - request, - object(), - "post_retrieval", - sources=(source,), - ) - - assert action == "retrieve_with_query_rewrite" - assert len(http_client.calls) == 1 - payload = http_client.calls[0]["payload"] - assert payload["max_tokens"] == 16 - assert payload["temperature"] == 0 - serialized = json.dumps(payload, ensure_ascii=False) - assert "请解释矩阵的秩" in serialized - assert "线性代数历年卷" in serialized - assert "不应进入决策请求的完整私有证据正文" not in serialized - - def test_openrouter_accepts_a_plain_text_complex_answer_without_retry( tmp_path: Path, ) -> None: diff --git a/apps/scut-senior/tests/python/test_sqlite_auth.py b/apps/scut-senior/tests/python/test_sqlite_auth.py index 29a25109..21d2abac 100644 --- a/apps/scut-senior/tests/python/test_sqlite_auth.py +++ b/apps/scut-senior/tests/python/test_sqlite_auth.py @@ -75,7 +75,6 @@ def test_auth_migrations_are_ledgered_and_sqlite_runtime_pragmas_are_enabled( "0015_user_preferences.sql", "0016_private_knowledge.sql", "0017_contribution_metadata_attachments.sql", - "0018_custom_byok_connections.sql", ] assert connection.execute("PRAGMA foreign_keys").fetchone()[0] == 1 assert connection.execute("PRAGMA journal_mode").fetchone()[0] == "wal" @@ -258,18 +257,13 @@ def test_legacy_0004_schema_is_rebuilt_without_removed_providers_or_extra_column connection.execute( """ INSERT INTO model_credentials ( - user_id, provider_id, display_name, base_url, model_id, protocol, - ciphertext, nonce, algorithm, + user_id, provider_id, ciphertext, nonce, algorithm, key_version, created_at, updated_at, expires_at - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) """, ( str(user_id), "deepseek", - "DeepSeek", - "https://api.deepseek.com", - "deepseek-v4-flash", - "openai_chat_completions", sqlite3.Binary(bytes([1]) * 17), sqlite3.Binary(bytes([1]) * 12), "AES-256-GCM", @@ -460,34 +454,6 @@ def test_cleanup_removes_dead_auth_records_but_preserves_users(tmp_path: Path) - assert repository.authenticate_session(expired_session.token) is None -def test_auth_cleanup_physically_removes_expired_byok_credentials(tmp_path: Path) -> None: - clock = MutableClock(datetime(2026, 8, 15, 10, 0, tzinfo=UTC)) - repository = SQLiteWorkflowRepository(tmp_path / "expired-byok.db", clock=clock) - user_id = repository.upsert_github_user( - GitHubUserProfile(111112, "expired-byok-user", None) - ) - repository.upsert_model_credential( - user_id=user_id, - provider_id="openrouter", - display_name="OpenRouter", - base_url="https://openrouter.ai/api/v1", - model_id="deepseek/deepseek-v4-flash-0731", - protocol="openai_chat_completions", - ciphertext=b"x" * 32, - nonce=b"y" * 12, - algorithm="AES-256-GCM", - key_version=1, - ) - clock.advance(timedelta(days=366)) - - repository.cleanup_auth_records() - - with connect(repository.database_path) as connection: - assert connection.execute( - "SELECT COUNT(*) FROM model_credentials" - ).fetchone()[0] == 0 - - def test_auth_cleanup_runs_on_startup_and_before_new_state_or_session( tmp_path: Path, ) -> None: diff --git a/apps/scut-senior/tests/python/test_workflow_focus.py b/apps/scut-senior/tests/python/test_workflow_focus.py index 6c96bac4..99507d4b 100644 --- a/apps/scut-senior/tests/python/test_workflow_focus.py +++ b/apps/scut-senior/tests/python/test_workflow_focus.py @@ -9,6 +9,7 @@ from scut_senior_api.adapters.byok import _build_byok_request from scut_senior_api.adapters.mock import MockModelGateway from scut_senior_api.adapters.openrouter import _build_structured_request +from scut_senior_api.byok_catalog import ByokProviderCatalog from scut_senior_api.config import Settings from scut_senior_api.contracts import WorkflowRunRequest from scut_senior_api.main import create_app @@ -142,13 +143,17 @@ def test_openrouter_and_byok_share_the_same_workflow_focus_directive( request = _request(workflow_type, payload, user_input=user_input) focus = build_workflow_focus(request) + byok_entry = ByokProviderCatalog().resolve_model( + "openrouter", "deepseek/deepseek-v4-flash-0731" + ) for provider_payload in ( _build_structured_request(request, []), _build_byok_request( request, [], - max_tokens=12288, - temperature=0.2, + max_tokens=byok_entry.default_max_tokens, + temperature=byok_entry.default_temperature, + reasoning_effort=byok_entry.reasoning_effort, ), ): messages = provider_payload["messages"] @@ -177,9 +182,12 @@ def test_answer_mode_and_tone_change_both_provider_prompts_and_mock_output() -> tone="senior_student", ) + byok_entry = ByokProviderCatalog().resolve_model( + "openrouter", "deepseek/deepseek-v4-flash-0731" + ) byok_args = { - "max_tokens": 12288, - "temperature": 0.2, + "max_tokens": byok_entry.default_max_tokens, + "temperature": byok_entry.default_temperature, } for builder in (_build_structured_request, _build_byok_request): concise_payload = ( diff --git a/apps/scut-senior/tests/python/test_zhipu_platform.py b/apps/scut-senior/tests/python/test_zhipu_platform.py index 9dda54d8..224fc43b 100644 --- a/apps/scut-senior/tests/python/test_zhipu_platform.py +++ b/apps/scut-senior/tests/python/test_zhipu_platform.py @@ -267,6 +267,46 @@ def test_zhipu_429_throttle_surfaces_model_overload_message(tmp_path: Path) -> N assert len(http_client.calls) == 1 +def test_zhipu_429_user_rate_limit_is_not_reported_as_unavailable( + tmp_path: Path, +) -> None: + http_client = RecordingHttpClient( + HttpResponse(429, b'{"error":{"code":"1302"}}') + ) + client, conversation_id = _client_with_conversation(tmp_path, http_client) + + response = client.post( + "/api/v1/workflow-runs", + json=_workflow_request(conversation_id), + ) + + assert response.status_code == 429 + assert response.json()["error"] == { + "code": "platform_rate_limited", + "detail": "智谱账号请求过于频繁,请稍后再试。", + } + + +def test_zhipu_429_daily_limit_is_not_reported_as_unavailable( + tmp_path: Path, +) -> None: + http_client = RecordingHttpClient( + HttpResponse(429, b'{"error":{"code":"1304"}}') + ) + client, conversation_id = _client_with_conversation(tmp_path, http_client) + + response = client.post( + "/api/v1/workflow-runs", + json=_workflow_request(conversation_id), + ) + + assert response.status_code == 429 + assert response.json()["error"] == { + "code": "platform_daily_quota_exhausted", + "detail": "智谱账号今日调用次数已达上限,请明日再试。", + } + + def test_zhipu_generic_429_keeps_channel_message_and_hides_body( tmp_path: Path, ) -> None: diff --git a/apps/scut-senior/web/src/__tests__/api.test.ts b/apps/scut-senior/web/src/__tests__/api.test.ts index 12cfad78..50fb929a 100644 --- a/apps/scut-senior/web/src/__tests__/api.test.ts +++ b/apps/scut-senior/web/src/__tests__/api.test.ts @@ -535,10 +535,7 @@ describe("BYOK credential API", () => { it("查询、保存和删除只走固定凭据路由并携带会话 Cookie", async () => { const configured = { provider_id: "openrouter", - display_name: "OpenRouter DeepSeek", - base_url: "https://openrouter.ai/api/v1", model_id: "deepseek/deepseek-v4-flash-0731", - protocol: "openai_chat_completions" as const, configured: true, masked_key: "sk-or-****1234", expires_at: "2026-08-20T08:00:00Z", @@ -547,13 +544,6 @@ describe("BYOK credential API", () => { updated_at: "2026-08-17T08:00:00Z", }; const dummyKey = "test-only-openrouter-key"; - const connectionInput = { - api_key: dummyKey, - display_name: configured.display_name, - base_url: configured.base_url, - model_id: configured.model_id, - protocol: configured.protocol, - }; const fetchMock = vi .fn() .mockResolvedValueOnce( @@ -572,9 +562,7 @@ describe("BYOK credential API", () => { vi.stubGlobal("fetch", fetchMock); await expect(getByokCredentials()).resolves.toEqual([configured]); - await expect( - saveByokCredential("openrouter", connectionInput), - ).resolves.toEqual(configured); + await expect(saveByokCredential("openrouter", dummyKey)).resolves.toEqual(configured); await expect(deleteByokCredential("openrouter")).resolves.toBeUndefined(); expect(fetchMock).toHaveBeenNthCalledWith( @@ -588,7 +576,7 @@ describe("BYOK credential API", () => { expect.objectContaining({ method: "PUT", credentials: "include", - body: JSON.stringify(connectionInput), + body: JSON.stringify({ api_key: dummyKey }), }), ); expect(fetchMock).toHaveBeenNthCalledWith( diff --git a/apps/scut-senior/web/src/__tests__/byokCatalog.test.ts b/apps/scut-senior/web/src/__tests__/byokCatalog.test.ts index 54921e12..19e1a384 100644 --- a/apps/scut-senior/web/src/__tests__/byokCatalog.test.ts +++ b/apps/scut-senior/web/src/__tests__/byokCatalog.test.ts @@ -1,14 +1,79 @@ import { describe, expect, it } from "vitest"; +import type { ByokProviderCatalogItem } from "../contracts"; import { BYOK_CATALOG_VERSION, + FROZEN_BYOK_PROVIDERS, isCurrentByokCatalogVersion, + mergeByokProvidersForDisplay, } from "../byokCatalog"; -describe("BYOK connection capability version", () => { - it("只信任当前自定义连接协议版本", () => { - expect(BYOK_CATALOG_VERSION).toBe("byok-connections-v1"); +describe("frozen BYOK display catalog", () => { + it("fail-closed fallback 始终只展示四家固定供应商与唯一模型", () => { + expect( + FROZEN_BYOK_PROVIDERS.map((provider) => ({ + provider_id: provider.provider_id, + enabled: provider.enabled, + model_id: provider.models[0]?.model_id, + custom_base_url_allowed: provider.custom_base_url_allowed, + })), + ).toEqual([ + { + provider_id: "openrouter", + enabled: false, + model_id: "deepseek/deepseek-v4-flash-0731", + custom_base_url_allowed: false, + }, + { + provider_id: "deepseek", + enabled: false, + model_id: "deepseek-v4-flash", + custom_base_url_allowed: false, + }, + { + provider_id: "siliconflow", + enabled: false, + model_id: "Pro/zai-org/GLM-4.7", + custom_base_url_allowed: false, + }, + { + provider_id: "zhipu", + enabled: false, + model_id: "glm-5.2", + custom_base_url_allowed: false, + }, + ]); + }); + + it("仅用服务端同 ID 条目覆盖启用状态,缺失条目继续禁用展示", () => { + const serverOpenRouter = { ...FROZEN_BYOK_PROVIDERS[0]!, enabled: true }; + const displayed = mergeByokProvidersForDisplay([serverOpenRouter]); + + expect(displayed).toHaveLength(4); + expect(displayed[0]?.enabled).toBe(true); + expect(displayed.slice(1).every((provider) => !provider.enabled)).toBe(true); + }); + + it("拒绝同 ID 下篡改模型、URL 策略或额外字段的旧目录", () => { + const frozen = FROZEN_BYOK_PROVIDERS[0]!; + const candidates = [ + { + ...frozen, + enabled: true, + models: [{ ...frozen.models[0]!, model_id: "user-controlled-model" }], + }, + { ...frozen, enabled: true, custom_base_url_allowed: true }, + { ...frozen, enabled: true, base_url: "https://evil.invalid/v1" }, + ] as unknown as ByokProviderCatalogItem[]; + + for (const candidate of candidates) { + expect(mergeByokProvidersForDisplay([candidate])[0]).toEqual(frozen); + expect(mergeByokProvidersForDisplay([candidate])[0]?.enabled).toBe(false); + } + }); + + it("只信任当前 v4 目录版本", () => { expect(isCurrentByokCatalogVersion(BYOK_CATALOG_VERSION)).toBe(true); - expect(isCurrentByokCatalogVersion("byok-models-v4")).toBe(false); - expect(isCurrentByokCatalogVersion("byok-connections-v2")).toBe(false); + expect(isCurrentByokCatalogVersion("byok-models-v3")).toBe(false); + expect(isCurrentByokCatalogVersion("byok-models-v4-fail-closed")).toBe(false); }); }); diff --git a/apps/scut-senior/web/src/__tests__/modelSelection.test.ts b/apps/scut-senior/web/src/__tests__/modelSelection.test.ts index d5cf7c5f..ad7859f1 100644 --- a/apps/scut-senior/web/src/__tests__/modelSelection.test.ts +++ b/apps/scut-senior/web/src/__tests__/modelSelection.test.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from "vitest"; import type { ByokCredentialStatus, + ByokProviderCatalogItem, ModelCatalogItem, } from "../contracts"; import { @@ -100,13 +101,45 @@ describe("modelsForRuntime", () => { }); }); +const byokProviders: ByokProviderCatalogItem[] = [ + { + provider_id: "openrouter", + company: "OpenRouter", + display_name: "OpenRouter", + enabled: true, + models_confirmed: true, + models: [ + { + model_id: "deepseek/deepseek-v4-flash-0731", + company: "DeepSeek", + display_name: "DeepSeek V4 Flash", + }, + ], + custom_base_url_allowed: false, + endpoint_policy: "fixed_provider_endpoint", + }, + { + provider_id: "siliconflow", + company: "SiliconFlow", + display_name: "硅基流动", + enabled: false, + models_confirmed: true, + models: [ + { + model_id: "Pro/zai-org/GLM-4.7", + company: "Z.ai", + display_name: "GLM-4.7 Pro", + }, + ], + custom_base_url_allowed: false, + endpoint_policy: "fixed_provider_endpoint", + }, +]; + const byokStatuses: ByokCredentialStatus[] = [ { provider_id: "openrouter", - display_name: "OpenRouter DeepSeek", - base_url: "https://openrouter.ai/api/v1", model_id: "deepseek/deepseek-v4-flash-0731", - protocol: "openai_chat_completions", configured: true, masked_key: "sk-or-****1234", expires_at: "2026-08-20T08:00:00Z", @@ -116,10 +149,7 @@ const byokStatuses: ByokCredentialStatus[] = [ }, { provider_id: "siliconflow", - display_name: "硅基流动", - base_url: "https://api.siliconflow.cn/v1", model_id: "Pro/zai-org/GLM-4.7", - protocol: "openai_chat_completions", configured: true, masked_key: "sk-****5678", expires_at: "2026-08-20T08:00:00Z", @@ -130,33 +160,33 @@ const byokStatuses: ByokCredentialStatus[] = [ ]; describe("configuredByokModelOptions", () => { - it("把账号已保存的自定义连接映射成 user_key 模型", () => { - expect(configuredByokModelOptions(byokStatuses)).toEqual([ + it("仅为 enabled 且本会话已配置的供应商生成固定 user_key 模型", () => { + expect(configuredByokModelOptions(byokProviders, byokStatuses)).toEqual([ expect.objectContaining({ provider_id: "openrouter", model_id: "deepseek/deepseek-v4-flash-0731", model_source: "user_key", - company: "OpenRouter DeepSeek", - display_name: "deepseek/deepseek-v4-flash-0731", + company: "OpenRouter", + display_name: "DeepSeek · DeepSeek V4 Flash", user_selectable: true, }), - expect.objectContaining({ - provider_id: "siliconflow", - model_id: "Pro/zai-org/GLM-4.7", - company: "硅基流动", - }), ]); }); - it("没有保存连接时不生成 BYOK 模型", () => { - expect(configuredByokModelOptions([])).toEqual([]); + it("供应商关闭时即使状态声称已配置也不生成模型选项", () => { + expect( + configuredByokModelOptions( + byokProviders.filter((provider) => provider.provider_id === "siliconflow"), + byokStatuses, + ), + ).toEqual([]); }); - it("接受连接自身保存的自定义模型 ID", () => { - const [model] = configuredByokModelOptions([ - { ...byokStatuses[0]!, model_id: "vendor/custom-model" }, - ]); - expect(model?.model_id).toBe("vendor/custom-model"); - expect(model?.provider_id).toBe("openrouter"); + it("凭据状态的模型 ID 与固定目录不一致时保持关闭", () => { + expect( + configuredByokModelOptions(byokProviders, [ + { ...byokStatuses[0]!, model_id: "user-supplied-model" }, + ]), + ).toEqual([]); }); }); diff --git a/apps/scut-senior/web/src/__tests__/workflowStream.test.ts b/apps/scut-senior/web/src/__tests__/workflowStream.test.ts index 6a0a7e4f..8e811c94 100644 --- a/apps/scut-senior/web/src/__tests__/workflowStream.test.ts +++ b/apps/scut-senior/web/src/__tests__/workflowStream.test.ts @@ -128,6 +128,27 @@ describe("parseWorkflowNdjson", () => { ); }); + it("accepts the safe aggregate A/B runtime counters in Trace", async () => { + const event = { + ...traceEvent(1), + trace_event: { + ...traceEvent(1).trace_event, + result: { + decision_call_count: 1, + model_action_accepted_count: 1, + model_action_shadow_count: 0, + answer_call_count: 1, + provider_retry_count: 0, + guard_retry_count: 0, + decision_fallback_count: 0, + action_rejection_count: 0, + }, + }, + }; + + await expect(collect(ndjsonStream([`${JSON.stringify(event)}\n`]))).resolves.toHaveLength(1); + }); + it("rejects unknown nested Trace fields and invalid values under otherwise safe keys", async () => { const nestedUnsafe = { ...traceEvent(0), diff --git a/apps/scut-senior/web/src/api.ts b/apps/scut-senior/web/src/api.ts index de2a107c..82a9fafd 100644 --- a/apps/scut-senior/web/src/api.ts +++ b/apps/scut-senior/web/src/api.ts @@ -1,6 +1,5 @@ import type { AuthUser, - ByokConnectionInput, ByokCredentialStatus, ByokProviderId, ContributionAttachmentRecord, @@ -155,13 +154,13 @@ export async function getByokCredentials(): Promise { export async function saveByokCredential( providerId: ByokProviderId, - input: ByokConnectionInput, + apiKey: string, ): Promise { return apiRequest( `/api/v1/model-credentials/${encodeURIComponent(providerId)}`, { method: "PUT", - body: JSON.stringify(input), + body: JSON.stringify({ api_key: apiKey }), }, ); } diff --git a/apps/scut-senior/web/src/appConfig.ts b/apps/scut-senior/web/src/appConfig.ts index c5e0ad92..9fd16900 100644 --- a/apps/scut-senior/web/src/appConfig.ts +++ b/apps/scut-senior/web/src/appConfig.ts @@ -1,6 +1,8 @@ import { ApiError } from "./api"; +import { FROZEN_BYOK_PROVIDERS } from "./byokCatalog"; import type { AnswerMode, + ByokProviderId, HelpLevel, ModelCatalog, ModelCatalogItem, @@ -30,16 +32,16 @@ export const FAIL_CLOSED_MODEL_CATALOG: ModelCatalog = { real_platform_default_available: false, health_checked_at: null, byok_available: false, - byok_catalog_version: "byok-connections-unavailable", - byok_providers: [], + byok_catalog_version: "byok-models-v4-fail-closed", + byok_providers: FROZEN_BYOK_PROVIDERS, quota_notice: "模型目录尚未加载;平台与 BYOK 模型请求均保持关闭。", quota_exhausted_message: "今日平台免费额度已用完,第二天再来重试吧!着急请使用你自己的 API Key。", models: [], }; -export function emptyByokKeyDrafts(): Record { - return {}; +export function emptyByokKeyDrafts(): Record { + return { openrouter: "", deepseek: "", siliconflow: "", zhipu: "" }; } export const workflowCopy: Record< diff --git a/apps/scut-senior/web/src/byokCatalog.ts b/apps/scut-senior/web/src/byokCatalog.ts index 3384510e..690fb4b2 100644 --- a/apps/scut-senior/web/src/byokCatalog.ts +++ b/apps/scut-senior/web/src/byokCatalog.ts @@ -1,5 +1,134 @@ -export const BYOK_CATALOG_VERSION = "byok-connections-v1"; +import type { ByokProviderCatalogItem } from "./contracts"; + +export const BYOK_CATALOG_VERSION = "byok-models-v4"; + +export const FROZEN_BYOK_PROVIDERS: ByokProviderCatalogItem[] = [ + { + provider_id: "openrouter", + company: "OpenRouter", + display_name: "OpenRouter", + enabled: false, + models_confirmed: true, + models: [ + { + model_id: "deepseek/deepseek-v4-flash-0731", + company: "DeepSeek", + display_name: "DeepSeek V4 Flash 0731", + }, + ], + custom_base_url_allowed: false, + endpoint_policy: "fixed_provider_endpoint", + }, + { + provider_id: "deepseek", + company: "DeepSeek", + display_name: "DeepSeek", + enabled: false, + models_confirmed: true, + models: [ + { + model_id: "deepseek-v4-flash", + company: "DeepSeek", + display_name: "DeepSeek V4 Flash", + }, + ], + custom_base_url_allowed: false, + endpoint_policy: "fixed_provider_endpoint", + }, + { + provider_id: "siliconflow", + company: "SiliconFlow", + display_name: "硅基流动", + enabled: false, + models_confirmed: true, + models: [ + { + model_id: "Pro/zai-org/GLM-4.7", + company: "Z.ai", + display_name: "GLM-4.7 Pro", + }, + ], + custom_base_url_allowed: false, + endpoint_policy: "fixed_provider_endpoint", + }, + { + provider_id: "zhipu", + company: "Zhipu AI", + display_name: "智谱 AI", + enabled: false, + models_confirmed: true, + models: [ + { + model_id: "glm-5.2", + company: "Zhipu AI", + display_name: "GLM-5.2", + }, + ], + custom_base_url_allowed: false, + endpoint_policy: "fixed_provider_endpoint", + }, +]; + +export function mergeByokProvidersForDisplay( + serverProviders: readonly ByokProviderCatalogItem[], +): ByokProviderCatalogItem[] { + return FROZEN_BYOK_PROVIDERS.map((fallback) => { + const candidate = serverProviders.find( + (provider) => + provider !== null && + typeof provider === "object" && + provider.provider_id === fallback.provider_id, + ); + return candidate && providerMatchesFrozenContract(candidate, fallback) + ? candidate + : fallback; + }); +} export function isCurrentByokCatalogVersion(value: string): boolean { return value === BYOK_CATALOG_VERSION; } + +function hasExactKeys(value: object, expected: readonly string[]): boolean { + const keys = Object.keys(value).sort(); + return keys.length === expected.length && keys.every((key, index) => key === expected[index]); +} + +function providerMatchesFrozenContract( + candidate: ByokProviderCatalogItem, + frozen: ByokProviderCatalogItem, +): boolean { + const providerKeys = [ + "company", + "custom_base_url_allowed", + "display_name", + "enabled", + "endpoint_policy", + "models", + "models_confirmed", + "provider_id", + ].sort(); + const modelKeys = ["company", "display_name", "model_id"].sort(); + const candidateModel = Array.isArray(candidate.models) ? candidate.models[0] : undefined; + const frozenModel = frozen.models[0]; + + return Boolean( + hasExactKeys(candidate, providerKeys) && + typeof candidate.enabled === "boolean" && + candidate.provider_id === frozen.provider_id && + candidate.company === frozen.company && + candidate.display_name === frozen.display_name && + candidate.models_confirmed === true && + candidate.custom_base_url_allowed === false && + candidate.endpoint_policy === "fixed_provider_endpoint" && + Array.isArray(candidate.models) && + candidate.models.length === 1 && + candidateModel && + typeof candidateModel === "object" && + frozenModel && + hasExactKeys(candidateModel, modelKeys) && + candidateModel.model_id === frozenModel.model_id && + candidateModel.company === frozenModel.company && + candidateModel.display_name === frozenModel.display_name, + ); +} diff --git a/apps/scut-senior/web/src/components/ByokCredentialsPanel.vue b/apps/scut-senior/web/src/components/ByokCredentialsPanel.vue index 8cec21bb..228a8415 100644 --- a/apps/scut-senior/web/src/components/ByokCredentialsPanel.vue +++ b/apps/scut-senior/web/src/components/ByokCredentialsPanel.vue @@ -1,58 +1,23 @@ -
-
添加供应商
-
- - - 以小写字母开头,只使用小写字母、数字和连字符。 + diff --git a/apps/scut-senior/web/src/composables/useAppStore.ts b/apps/scut-senior/web/src/composables/useAppStore.ts index aab0271e..4445622f 100644 --- a/apps/scut-senior/web/src/composables/useAppStore.ts +++ b/apps/scut-senior/web/src/composables/useAppStore.ts @@ -26,6 +26,7 @@ import { } from "../api"; import { isCurrentByokCatalogVersion, + mergeByokProvidersForDisplay, } from "../byokCatalog"; import { canManageByokCredentials } from "../byokSession"; import { @@ -39,8 +40,9 @@ import { import type { AnswerMode, AuthUser, - ByokConnectionInput, ByokCredentialStatus, + ByokProviderCatalogItem, + ByokProviderId, ConversationDetail, ConversationSummary, Course, @@ -177,10 +179,10 @@ function createAppStore() { const historyMessage = ref(""); const historyMessageIsError = ref(false); const byokCredentialStatuses = ref([]); - const byokKeyDrafts = ref>(emptyByokKeyDrafts()); + const byokKeyDrafts = ref>(emptyByokKeyDrafts()); const isLoadingByokCredentials = ref(false); - const savingByokProviderId = ref(""); - const deletingByokProviderId = ref(""); + const savingByokProviderId = ref(""); + const deletingByokProviderId = ref(""); const byokMessage = ref(""); const byokMessageIsError = ref(false); const privateRequestEpoch = createRequestEpoch(); @@ -202,6 +204,11 @@ function createAppStore() { isCurrentByokCatalogVersion(modelCatalog.value.byok_catalog_version) && Array.isArray(modelCatalog.value.byok_providers), ); + const byokProvidersForDisplay = computed(() => + mergeByokProvidersForDisplay( + byokCatalogIsCurrent.value ? modelCatalog.value.byok_providers : [], + ), + ); const byokRuntimeAvailable = computed( () => byokCatalogIsCurrent.value && modelCatalog.value.byok_available, ); @@ -213,7 +220,8 @@ function createAppStore() { modelCatalogLoadSucceeded.value, ), ...configuredByokModelOptions( - byokRuntimeAvailable.value ? byokCredentialStatuses.value : [], + byokRuntimeAvailable.value ? byokProvidersForDisplay.value : [], + byokCredentialStatuses.value, ), ]); const selectedModel = computed(() => @@ -456,18 +464,7 @@ function createAppStore() { !isLoadingModels.value && Boolean(currentUser.value) && Boolean(selectedCourse.value?.selectable) && - Boolean(selectedModel.value?.user_selectable) && - Boolean(userInput.value.trim()) && - (workflowType.value !== "mistake_review" || Boolean(originalAnswer.value.trim())) && - (!crossCourseSearchEnabled.value || ( - ["knowledge_qa", "problem_tutor"].includes(workflowType.value) && - new Set(selectedCourseIds.value).size >= 2 && - selectedCourseIds.value.every((courseId) => - courses.value.some( - (course) => course.course_id === courseId && course.selectable, - ), - ) - )), + Boolean(selectedModel.value?.user_selectable), ); const runtimeNoticeTitle = computed(() => selectedModelIsMock.value @@ -491,13 +488,13 @@ function createAppStore() { return courses.value.find((course) => course.course_id === courseId)?.display_name ?? courseId; } - function byokCredentialStatus(providerId: string): ByokCredentialStatus | null { + function byokCredentialStatus(providerId: ByokProviderId): ByokCredentialStatus | null { return ( byokCredentialStatuses.value.find((status) => status.provider_id === providerId) ?? null ); } - function byokProviderDisabledReason(): string { + function byokProviderDisabledReason(provider: ByokProviderCatalogItem): string { if (!modelCatalogLoadSucceeded.value) { return "模型目录未加载成功,凭据保存保持关闭。"; } @@ -507,24 +504,29 @@ function createAppStore() { if (currentUser.value?.is_mock) { return "BYOK 需要真实 GitHub 登录;Mock 身份只保留入口展示。"; } - if (!byokRuntimeAvailable.value) { - return "当前服务端未开启;需先满足凭据加密主密钥等安全运行条件。"; + if (!byokRuntimeAvailable.value || !provider.enabled) { + return "当前服务端未开启;需先满足会话级加密主密钥等安全运行条件。"; } if (!currentUser.value) return "使用真实 GitHub 身份登录后可管理当前会话凭据。"; return ""; } - function canSaveByokCredential(status: ByokCredentialStatus): boolean { + function canSaveByokCredential(provider: ByokProviderCatalogItem): boolean { + const status = byokCredentialStatus(provider.provider_id); + // 后端契约:未配置的供应商 writable=false(没有可管理的既有凭据), + // 但此时恰恰允许首次保存。因此只有「已配置且当前会话只读」才禁止保存。 + const writableForSave = status === null || !status.configured || status.writable; return Boolean( byokRuntimeAvailable.value && canManageByokCredentials(currentUser.value) && - status.writable && - byokKeyDrafts.value[status.provider_id]?.trim() && + provider.enabled && + writableForSave && + byokKeyDrafts.value[provider.provider_id].trim() && !byokIsBusy.value, ); } - function canDeleteByokCredential(providerId: string): boolean { + function canDeleteByokCredential(providerId: ByokProviderId): boolean { return Boolean( canManageByokCredentials(currentUser.value) && byokCredentialStatus(providerId)?.configured && @@ -533,7 +535,7 @@ function createAppStore() { ); } - function byokCredentialWritable(providerId: string): boolean { + function byokCredentialWritable(providerId: ByokProviderId): boolean { const status = byokCredentialStatus(providerId); return Boolean(status && status.configured && status.writable); } @@ -871,18 +873,6 @@ function createAppStore() { if (!selectedCourse.value?.selectable) return courseSelectionError(selectedCourse.value); if (!selectedModel.value?.user_selectable) return "请选择一个当前可用的模型。"; if (!userInput.value.trim()) return `请填写${activeWorkflow.value.inputLabel}。`; - if (crossCourseSearchEnabled.value) { - if (!["knowledge_qa", "problem_tutor"].includes(workflowType.value)) { - return "当前仅知识问答和题目辅导支持跨课程检索。"; - } - const selectedIds = [...new Set(selectedCourseIds.value)]; - if (selectedIds.length < 2) return "跨课程检索请至少选择两门课程。"; - if (selectedIds.some((courseId) => !courses.value.some( - (course) => course.course_id === courseId && course.selectable, - ))) { - return "跨课程检索中包含不可用课程,请重新选择。"; - } - } if (workflowType.value === "mistake_review" && !originalAnswer.value.trim()) { return "错题复盘需要填写原答案。"; } @@ -1009,59 +999,39 @@ function createAppStore() { } } - async function saveByokConnection( - providerId: string, - input: ByokConnectionInput, - ): Promise { + async function submitByokCredential(provider: ByokProviderCatalogItem): Promise { const requestUserId = currentUser.value?.user_id; - if ( - !requestUserId || - !canManageByokCredentials(currentUser.value) || - !byokRuntimeAvailable.value || - byokIsBusy.value - ) return false; + if (!requestUserId || !canSaveByokCredential(provider)) return; const requestEpoch = privateRequestEpoch.snapshot(); + const providerId = provider.provider_id; + const apiKey = byokKeyDrafts.value[providerId].trim(); savingByokProviderId.value = providerId; setByokMessage(""); try { - const status = await saveByokCredential(providerId, input); - if (!privateRequestIsCurrent(requestEpoch, requestUserId)) return false; + const status = await saveByokCredential(providerId, apiKey); + if (!privateRequestIsCurrent(requestEpoch, requestUserId)) return; upsertByokCredentialStatus(status); setByokMessage( - `${status.display_name} 连接已保存;模型仍需由你显式选择。`, + `${provider.display_name} 凭据状态已更新;模型仍需由你显式选择。`, ); - return true; } catch (error) { - if (!privateRequestIsCurrent(requestEpoch, requestUserId)) return false; + if (!privateRequestIsCurrent(requestEpoch, requestUserId)) return; applyAuthFailure(error); if (currentUser.value?.user_id === requestUserId) { setByokMessage(toMessage(error), true); } - return false; } finally { if (privateRequestIsCurrent(requestEpoch, requestUserId)) { + byokKeyDrafts.value[providerId] = ""; if (savingByokProviderId.value === providerId) savingByokProviderId.value = ""; } } } - async function submitByokCredential(status: ByokCredentialStatus): Promise { - if (!canSaveByokCredential(status)) return; - const apiKey = byokKeyDrafts.value[status.provider_id]?.trim() ?? ""; - const saved = await saveByokConnection(status.provider_id, { - display_name: status.display_name, - base_url: status.base_url, - model_id: status.model_id, - protocol: status.protocol, - api_key: apiKey, - }); - if (saved) byokKeyDrafts.value[status.provider_id] = ""; - } - - async function removeByokCredential(status: ByokCredentialStatus): Promise { + async function removeByokCredential(provider: ByokProviderCatalogItem): Promise { const requestUserId = currentUser.value?.user_id; - const providerId = status.provider_id; + const providerId = provider.provider_id; if (!requestUserId || !canDeleteByokCredential(providerId)) return; const requestEpoch = privateRequestEpoch.snapshot(); deletingByokProviderId.value = providerId; @@ -1074,7 +1044,7 @@ function createAppStore() { (status) => status.provider_id !== providerId, ); clearUnavailableByokSelection(); - setByokMessage(`${status.display_name} 连接与凭据已删除。`); + setByokMessage(`${provider.display_name} 凭据已从当前登录会话删除。`); } catch (error) { if (!privateRequestIsCurrent(requestEpoch, requestUserId)) return; applyAuthFailure(error); @@ -1598,6 +1568,7 @@ function createAppStore() { hasSelectableCourse, activeWorkflow, byokCatalogIsCurrent, + byokProvidersForDisplay, byokRuntimeAvailable, modelsForSelection, selectedModel, @@ -1652,7 +1623,6 @@ function createAppStore() { cancelWorkflow, reloadConversation, submitByokCredential, - saveByokConnection, removeByokCredential, startGithubLogin, signOut, diff --git a/apps/scut-senior/web/src/contracts.ts b/apps/scut-senior/web/src/contracts.ts index 8a010527..bfc96062 100644 --- a/apps/scut-senior/web/src/contracts.ts +++ b/apps/scut-senior/web/src/contracts.ts @@ -224,7 +224,7 @@ export interface ByokModelCatalogItem { display_name: string; } -export type ByokProviderId = string; +export type ByokProviderId = "openrouter" | "deepseek" | "siliconflow" | "zhipu"; export interface ByokProviderCatalogItem { provider_id: ByokProviderId; @@ -239,26 +239,15 @@ export interface ByokProviderCatalogItem { export interface ByokCredentialStatus { provider_id: ByokProviderId; - display_name: string; - base_url: string; model_id: string; - protocol: "openai_chat_completions"; - configured: true; - masked_key: string; + configured: boolean; + masked_key: string | null; expires_at: string | null; writable: boolean; source: "user_key"; updated_at: string | null; } -export interface ByokConnectionInput { - display_name: string; - base_url: string; - model_id: string; - protocol: "openai_chat_completions"; - api_key: string; -} - export interface AuthUser { user_id: string; display_name: string; @@ -388,6 +377,14 @@ export interface TraceSafeResult { real_model_called?: boolean | null; cache_hit?: boolean | null; retry_count?: number | null; + decision_call_count?: number | null; + model_action_accepted_count?: number | null; + model_action_shadow_count?: number | null; + answer_call_count?: number | null; + provider_retry_count?: number | null; + guard_retry_count?: number | null; + decision_fallback_count?: number | null; + action_rejection_count?: number | null; failure_code?: string | null; degradation_code?: string | null; catalog_version?: string | null; diff --git a/apps/scut-senior/web/src/modelSelection.ts b/apps/scut-senior/web/src/modelSelection.ts index ab24f5f2..6e330d3c 100644 --- a/apps/scut-senior/web/src/modelSelection.ts +++ b/apps/scut-senior/web/src/modelSelection.ts @@ -1,5 +1,6 @@ import type { ByokCredentialStatus, + ByokProviderCatalogItem, ModelCatalog, ModelCatalogItem, } from "./contracts"; @@ -49,13 +50,26 @@ export function initialModelSelectionKey( } export function configuredByokModelOptions( + providers: readonly ByokProviderCatalogItem[], statuses: readonly ByokCredentialStatus[], ): ModelCatalogItem[] { - return statuses.map((status) => ({ - provider_id: status.provider_id, - model_id: status.model_id, - company: status.display_name, - display_name: status.model_id, + return providers.flatMap((provider) => { + const model = provider.models[0]; + const credentialMatchesFixedModel = statuses.some( + (status) => + status.configured && + status.provider_id === provider.provider_id && + status.model_id === model?.model_id, + ); + if (!provider.enabled || !model || !credentialMatchesFixedModel) { + return []; + } + return [ + { + provider_id: provider.provider_id, + model_id: model.model_id, + company: provider.display_name, + display_name: `${model.company} · ${model.display_name}`, model_source: "user_key" as const, billing_label: "user_key", availability_status: "available", @@ -65,5 +79,7 @@ export function configuredByokModelOptions( is_preview: false, user_selectable: true, last_checked_at: null, - })); + }, + ]; + }); } diff --git a/apps/scut-senior/web/src/workflowResultValidation.ts b/apps/scut-senior/web/src/workflowResultValidation.ts index eb27d1f2..f48a27dd 100644 --- a/apps/scut-senior/web/src/workflowResultValidation.ts +++ b/apps/scut-senior/web/src/workflowResultValidation.ts @@ -67,6 +67,14 @@ const TRACE_RESULT_FIELDS = new Set([ "real_model_called", "cache_hit", "retry_count", + "decision_call_count", + "model_action_accepted_count", + "model_action_shadow_count", + "answer_call_count", + "provider_retry_count", + "guard_retry_count", + "decision_fallback_count", + "action_rejection_count", "failure_code", "degradation_code", "catalog_version", @@ -322,6 +330,14 @@ function assertTraceResult(value: unknown): asserts value is TraceSafeResult { const integerFields: Array = [ "hit_count", "retry_count", + "decision_call_count", + "model_action_accepted_count", + "model_action_shadow_count", + "answer_call_count", + "provider_retry_count", + "guard_retry_count", + "decision_fallback_count", + "action_rejection_count", "candidate_count", "accepted_count", ]; From 9796f9f4c4bd4373d4764e1eaec2ef8eb726d7af Mon Sep 17 00:00:00 2001 From: Alexbybye <244417287@qq.com> Date: Thu, 10 Sep 2026 21:37:57 +0800 Subject: [PATCH 10/25] =?UTF-8?q?=E5=9B=9E=E9=80=80RRF=E6=B7=B7=E5=90=88?= =?UTF-8?q?=E7=B4=A2=E5=BC=95=E5=8E=9F=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/scut-senior/docs/senior-ab/rrf-exploration.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/scut-senior/docs/senior-ab/rrf-exploration.md b/apps/scut-senior/docs/senior-ab/rrf-exploration.md index 5ad596e6..1ce9bbb0 100644 --- a/apps/scut-senior/docs/senior-ab/rrf-exploration.md +++ b/apps/scut-senior/docs/senior-ab/rrf-exploration.md @@ -2,12 +2,13 @@ ## 2026-09-10:恢复旧融合,继续小范围验证 -相同 corpus 版本 `corpus-c1513a68ccd7-b0_2_0-m1200-wworkflow-contract-v1-ooutline-none-v1-ebge-small-zh-v1.5`,黄金集 46 门课程、1,380 条。新复跑使用 min_score=1.0、返回 top20;以下旧 Hybrid 数据来自历史报告,恢复后的复跑需单独确认。 +相同 corpus 版本 `corpus-c1513a68ccd7-b0_2_0-m1200-wworkflow-contract-v1-ooutline-none-v1-ebge-small-zh-v1.5`,黄金集 46 门课程、1,380 条。新复跑使用 min_score=1.0、返回 top20;恢复旧逻辑后完整复跑已完成,四项汇总指标与历史 Hybrid 完全一致。相关检索测试 33 passed。 | 策略 | Recall@5 | Recall@20 | MRR | noise proxy | | --- | ---: | ---: | ---: | ---: | | BM25F 本次复跑 | 0.605072 | 0.791304 | 0.439231 | 0.863231 | | 旧 Hybrid 历史基线 | 0.638406 | 0.860870 | 0.462348 | 0.928617 | +| 恢复旧 Hybrid 后本次复跑 | 0.638406 | 0.860870 | 0.462348 | 0.928617 | | 跨路 weighted RRF 本次复跑 | 0.569565 | 0.840580 | 0.397714 | 0.929632 | 新 RRF 相对旧 Hybrid 的 Recall@5 下降 6.8841 个百分点,Recall@20 下降 2.0290 个百分点,MRR 下降 0.064634。已有证据支持恢复旧策略,没有证据支持“旧策略已到上限”或“新 RRF 上限更高”。Recall@20 只是当前检索器在这一截断位置的覆盖率,不能等同于整个 RAG 系统的理论上限。 @@ -18,10 +19,12 @@ ## 下一步怎么优化 -先复现恢复后的旧 Hybrid,再逐条比较旧策略命中、新策略掉出 top5 的问题。统计是“正确证据还在候选池但被排低”,还是“候选池里根本没有”。抽查少量典型题确认标签,避免对不完整的相关性标注过拟合;noise proxy 把未标注 chunk 都算成噪声,不等于这些 chunk 全都无关。 +恢复复跑报告为 `.local/evaluation/retrieval-restored-hybrid.json`。下一步逐条比较旧策略命中、新策略掉出 top5 的问题。统计是“正确证据还在候选池但被排低”,还是“候选池里根本没有”。抽查少量典型题确认标签,避免对不完整的相关性标注过拟合;noise proxy 把未标注 chunk 都算成噪声,不等于这些 chunk 全都无关。 当前跨路 RRF 使用 lexical:dense=1:0.85、k=60、两腿各 50。它压缩了名次差距,并奖励两腿交集:两腿都排第 50 的分数约 0.01682,高于只在 lexical 排第 1 的 0.01639。这是可解释的风险机制,是否导致本次退化仍要从成对样本确认。 +现有 exact 保护检测的是整句 query 是否出现在字段里,并不等价于抽出题号、年份或试卷名后做精确匹配。例如带“应该从哪里开始”的提问可能无法得到 exact 保护。若回退样本集中在这一类,优先补窄范围的标题/题号锚点识别,单独评测;不要把出现年份或课程名就当成相关性保证。 + 优先试一个小改动:保留旧结果的前 3 位及 exact 保护项,仅让其余位置参与 weighted RRF。Top5 最多有两个位置发生竞争,不强塞 dense;保护项占满时维持旧结果。先作为离线实验,尚未接入运行时。它可能牺牲部分语义题提升空间,所以保留全榜 RRF 作为对照。 参数只分两步试,不做大网格: From 828aaf8aeb55d5c845cc7009eec7f311768c2c3b Mon Sep 17 00:00:00 2001 From: Alexbybye <244417287@qq.com> Date: Thu, 10 Sep 2026 23:36:21 +0800 Subject: [PATCH 11/25] fix: preserve AB runtime after BYOK merge --- .../src/scut_senior_api/adapters/sqlite.py | 22 +++++++++++++++++-- .../api/src/scut_senior_api/contracts.py | 1 + .../api/src/scut_senior_api/eval_runner.py | 5 +++++ .../api/src/scut_senior_api/main.py | 18 ++++++++++++++- 4 files changed, 43 insertions(+), 3 deletions(-) diff --git a/apps/scut-senior/api/src/scut_senior_api/adapters/sqlite.py b/apps/scut-senior/api/src/scut_senior_api/adapters/sqlite.py index adee3a30..2c1b64cc 100644 --- a/apps/scut-senior/api/src/scut_senior_api/adapters/sqlite.py +++ b/apps/scut-senior/api/src/scut_senior_api/adapters/sqlite.py @@ -59,6 +59,16 @@ PRIVATE_FILE_MODE = 0o600 +class _ClosingSQLiteConnection(sqlite3.Connection): + """Make ``with repository.connect()`` release Windows file handles too.""" + + def __exit__(self, exc_type, exc_value, traceback): # type: ignore[no-untyped-def] + try: + return super().__exit__(exc_type, exc_value, traceback) + finally: + self.close() + + @dataclass(frozen=True, slots=True) class MaterialCleanupCounts: """迭代 7 清理结果:物理删除的材料数与载荷清空的贡献数。""" @@ -200,7 +210,11 @@ def __init__( def connect(self) -> sqlite3.Connection: expected_identity = _protect_database_bundle(self.database_path) - connection = sqlite3.connect(self.database_path, timeout=5.0) + connection = sqlite3.connect( + self.database_path, + timeout=5.0, + factory=_ClosingSQLiteConnection, + ) try: opened_identity = _protect_database_bundle(self.database_path) if ( @@ -725,7 +739,7 @@ def delete_account(self, user_id: str) -> dict[str, int]: """物理删除该账号的全部私有数据并封锁其 GitHub 身份。 注销语义(§16 待确认项 3 决议):会话立即失效、历史/反馈/临时材料/ - 贡献副本/模型凭据密文全部物理删除、users 行删除;deleted_accounts 仅 + 贡献副本/私人知识/模型凭据密文全部物理删除、users 行删除;deleted_accounts 仅 保留 github_user_id 用于登录封锁。导出请先于注销调用。 """ @@ -743,6 +757,10 @@ def delete_account(self, user_id: str) -> dict[str, int]: raise LookupError("account not found") github_user_id = int(row["github_user_id"]) counts = { + "private_knowledge_items": connection.execute( + "DELETE FROM private_knowledge_items WHERE user_id = ?", + (normalized_user_id,), + ).rowcount, "temporary_materials": connection.execute( "DELETE FROM temporary_materials WHERE user_id = ?", (normalized_user_id,), diff --git a/apps/scut-senior/api/src/scut_senior_api/contracts.py b/apps/scut-senior/api/src/scut_senior_api/contracts.py index ac83cefb..9271d650 100644 --- a/apps/scut-senior/api/src/scut_senior_api/contracts.py +++ b/apps/scut-senior/api/src/scut_senior_api/contracts.py @@ -921,6 +921,7 @@ class AccountDeletionSummary(ContractModel): workflow_runs: int feedback: int temporary_materials: int + private_knowledge_items: int contributions: int model_credentials: int auth_sessions: int diff --git a/apps/scut-senior/api/src/scut_senior_api/eval_runner.py b/apps/scut-senior/api/src/scut_senior_api/eval_runner.py index bc54a40e..fc2665a6 100644 --- a/apps/scut-senior/api/src/scut_senior_api/eval_runner.py +++ b/apps/scut-senior/api/src/scut_senior_api/eval_runner.py @@ -277,6 +277,11 @@ def run_evaluation( raise ValueError( "agent_decision_mode must be 'rule', 'model', 'shadow' or 'deterministic'" ) + # Keep documented POSIX-style temporary report paths usable from the + # Windows development launcher, where ``/tmp`` maps to a protected drive + # root rather than the system temporary directory. + if os.name == "nt" and report_path.as_posix().startswith("/tmp/"): + report_path = Path(tempfile.gettempdir()) / report_path.name cases = json.loads(cases_path.read_text(encoding="utf-8")) runner = ( json.loads(runner_path.read_text(encoding="utf-8")) diff --git a/apps/scut-senior/api/src/scut_senior_api/main.py b/apps/scut-senior/api/src/scut_senior_api/main.py index 6b34d035..07c19ec8 100644 --- a/apps/scut-senior/api/src/scut_senior_api/main.py +++ b/apps/scut-senior/api/src/scut_senior_api/main.py @@ -29,6 +29,7 @@ FixtureExamFactsProvider, LocalCorpusExamFactsProvider, ) +from .agent_loop import ModelAgentDecision, RuleBasedAgentDecision from .adapters.local_corpus import LocalCorpusRetrievalGateway from .adapters.onnx import OnnxEmbeddingProvider from .adapters.mock import ( @@ -120,6 +121,7 @@ ModelHealthChecker, ModelHealthResult, ModelNotRegistered, + ModelTemporarilyUnavailable, ) from .model_credentials import ( ByokDiscoveryHttpClient, @@ -283,7 +285,7 @@ def create_app( active_settings.assert_safe() if active_settings.app_env != "test" and byok_http_client is None: # Enforce the complete provider-call wall clock even when no client - # cancellation callback is present. The run-level ceiling is 180s. + # cancellation callback is present. The AB run-level ceiling is 120s. byok_http_client = CancellableJsonHttpClient(UrllibJsonHttpClient()) registry = CourseRegistry.load() mock_identity = MockIdentityProvider().current_user() @@ -416,6 +418,11 @@ def create_app( else None ), ) + agent_decision = ( + ModelAgentDecision(model) + if active_settings.agent_decision_mode in {"model", "shadow"} + else RuleBasedAgentDecision() + ) service = IterationZeroService( settings=active_settings, registry=registry, @@ -433,6 +440,7 @@ def create_app( if active_settings.retrieval_mode == "local_corpus" else FixtureExamFactsProvider() ), + agent_decision=agent_decision, ) maintenance_scheduler: MaintenanceScheduler | None = None @@ -560,6 +568,12 @@ async def resource_not_found_handler(_, exc: ResourceNotFound): async def model_not_registered_handler(_, exc: ModelNotRegistered): return _error_response(422, "model_not_registered", str(exc)) + @app.exception_handler(ModelTemporarilyUnavailable) + async def model_temporarily_unavailable_handler( + _, exc: ModelTemporarilyUnavailable + ): + return _error_response(503, "platform_model_unavailable", str(exc)) + @app.exception_handler(OpenRouterGatewayError) async def openrouter_gateway_error_handler(_, exc: OpenRouterGatewayError): return _error_response(exc.status_code, exc.code, exc.detail) @@ -1538,6 +1552,8 @@ def _safe_stream_error(exc: Exception) -> tuple[str, str]: return "capability_unavailable", exc.detail if isinstance(exc, ModelNotRegistered): return "model_not_registered", "所选模型未登记。" + if isinstance(exc, ModelTemporarilyUnavailable): + return "platform_model_unavailable", str(exc) if isinstance(exc, ResourceNotFound): return "not_found", "请求的资源不存在。" if isinstance(exc, ContractConflict | UnknownCourseError): From 2bf9ab23a748d3ce2f9397437f18e53beca63268 Mon Sep 17 00:00:00 2001 From: Alexbybye <244417287@qq.com> Date: Sat, 12 Sep 2026 03:28:02 +0800 Subject: [PATCH 12/25] feat: Enhance evaluation scripts and add new auditing functionality - Updated scut-real-corpus-cases.json to include new evaluation status and notes. - Introduced audit_evaluation_sets.py to inventory legacy annotations against the active corpus. - Added build_reviewed_evaluation.py to materialize authored annotations and scenarios. - Modified test_eval_runner.py to ensure cross-course support is enabled and functioning. - Created test_learning_eval.py to validate various scoring and evaluation scenarios. --- .../api/src/scut_senior_api/eval_runner.py | 63 +- .../api/src/scut_senior_api/learning_eval.py | 170 + .../api/src/scut_senior_api/retrieval_eval.py | 11 +- .../docs/senior-ab/next-experiments.md | 70 + apps/scut-senior/docs/senior-ab/plan-ab.md | 2 + .../docs/senior-ab/rrf-exploration.md | 2 + .../resources/evaluation/README.md | 11 + .../evaluation/exam-review-sweep.cases.json | 5 +- .../evaluation/retrieval-golden/README.md | 2 + .../resources/evaluation/reviewed-v2/AUDIT.md | 66 + .../evaluation/reviewed-v2/README.md | 58 + .../evaluation/reviewed-v2/annotations.json | 212 + .../reviewed-v2/baseline-bm25f.json | 2983 ++ .../reviewed-v2/baseline-hybrid.json | 3059 ++ .../evaluation/reviewed-v2/legacy-audit.json | 36122 ++++++++++++++++ .../reviewed-v2/legacy-scenarios-audit.json | 1009 + .../evaluation/reviewed-v2/retrieval.json | 1747 + .../evaluation/reviewed-v2/scenarios.json | 910 + .../evaluation/scut-real-corpus-cases.json | 5 +- .../scripts/audit_evaluation_sets.py | 90 + .../scripts/build_reviewed_evaluation.py | 177 + .../tests/python/test_eval_runner.py | 5 +- .../tests/python/test_learning_eval.py | 144 + 23 files changed, 46904 insertions(+), 19 deletions(-) create mode 100644 apps/scut-senior/api/src/scut_senior_api/learning_eval.py create mode 100644 apps/scut-senior/docs/senior-ab/next-experiments.md create mode 100644 apps/scut-senior/resources/evaluation/README.md create mode 100644 apps/scut-senior/resources/evaluation/reviewed-v2/AUDIT.md create mode 100644 apps/scut-senior/resources/evaluation/reviewed-v2/README.md create mode 100644 apps/scut-senior/resources/evaluation/reviewed-v2/annotations.json create mode 100644 apps/scut-senior/resources/evaluation/reviewed-v2/baseline-bm25f.json create mode 100644 apps/scut-senior/resources/evaluation/reviewed-v2/baseline-hybrid.json create mode 100644 apps/scut-senior/resources/evaluation/reviewed-v2/legacy-audit.json create mode 100644 apps/scut-senior/resources/evaluation/reviewed-v2/legacy-scenarios-audit.json create mode 100644 apps/scut-senior/resources/evaluation/reviewed-v2/retrieval.json create mode 100644 apps/scut-senior/resources/evaluation/reviewed-v2/scenarios.json create mode 100644 apps/scut-senior/scripts/audit_evaluation_sets.py create mode 100644 apps/scut-senior/scripts/build_reviewed_evaluation.py create mode 100644 apps/scut-senior/tests/python/test_learning_eval.py diff --git a/apps/scut-senior/api/src/scut_senior_api/eval_runner.py b/apps/scut-senior/api/src/scut_senior_api/eval_runner.py index fc2665a6..a0516502 100644 --- a/apps/scut-senior/api/src/scut_senior_api/eval_runner.py +++ b/apps/scut-senior/api/src/scut_senior_api/eval_runner.py @@ -36,7 +36,6 @@ from .ports import UserIdentity from .retrieval_eval import ( DEFAULT_CORPUS_STORE, - DEFAULT_GOLDEN_ROOT, run_retrieval_evaluation, ) @@ -51,6 +50,13 @@ def _payload_for( workflow_type: str, content: str, case: dict[str, object] ) -> dict[str, object]: + # Authored scenarios must preserve the student's actual answer/material and + # time budget. The request contract validates this payload before execution. + if "workflow_payload" in case: + payload = case["workflow_payload"] + if not isinstance(payload, dict): + raise ValueError("workflow_payload must be an object") + return dict(payload) if workflow_type == "knowledge_qa": return {"question": content} if workflow_type == "exam_review": @@ -130,10 +136,10 @@ def _check_expected( for block_type in expected.get("required_answer_block_types") or []: if block_type not in block_types: reasons.append(f"缺少回答块 {block_type}") - requires_citation = bool(expected.get("requires_citation")) - if requires_citation and not result.citations: + requires_citation = expected.get("requires_citation") + if requires_citation is True and not result.citations: reasons.append("requires_citation 但没有任何仓库引用") - if not requires_citation and result.citations: + if requires_citation is False and result.citations: reasons.append("不应有仓库引用但返回了引用") allows_general = expected.get("allows_general", True) if not allows_general and "general" in block_types: @@ -165,10 +171,16 @@ def _run_case( provider_id: str = "mock", model_id: str = "deterministic-fixture-v1", ) -> tuple[str, list[str], dict[str, object]]: - if case["course_scope"] == "cross": + if case["course_scope"] == "cross" and not app.state.service.settings.cross_course_enabled: return "skipped", ["cross_course_disabled_by_feature_flag"], {} + conversation_course = case.get("course_id") + if case["course_scope"] == "cross": + selected = list(case.get("allowed_course_ids") or []) + if not selected: + raise ValueError("cross-course case must name selected courses") + conversation_course = selected[0] conversation = app.state.service.create_conversation( - _MOCK_USER, str(case["course_id"]) + _MOCK_USER, str(conversation_course) ) last_run = None for turn in case["turns"]: @@ -189,6 +201,15 @@ def _run_case( return "failed", ["用例没有 user 轮次"], {} reasons = _check_expected(last_run, case["expected"]) metrics = _extract_runtime_metrics(last_run) + if case.get("quality_rubric"): + metrics["review_material"] = { + "repository_answer": last_run.repository_answer, + "general_supplement": last_run.general_supplement, + "citations": [citation.model_dump(mode="json") for citation in last_run.citations], + "workflow_output": last_run.workflow_output, + "answer_status": last_run.answer_status.value, + "evidence_status": last_run.evidence_status.value, + } return ("passed" if not reasons else "failed"), reasons, metrics @@ -257,7 +278,12 @@ def _report_line( "reasons": reasons, } if metrics: - line["runtime_metrics"] = metrics + line["runtime_metrics"] = {key: value for key, value in metrics.items() if key != "review_material"} + if case.get("quality_rubric"): + line["quality_outcome"] = "not_reviewed" + line["quality_rubric"] = case["quality_rubric"] + if metrics and "review_material" in metrics: + line["review_material"] = metrics["review_material"] return line @@ -366,6 +392,7 @@ def run_evaluation( report: dict[str, object] = { "runner_id": RUNNER_ID, "contract_version": CONTRACT_VERSION, + "evaluation_scope": "pipeline_contracts_only; semantic quality requires separate review", "fixture_only": fixture_only, "provider_id": provider_id if not fixture_only else "mock", "model_id": model_id if not fixture_only else "deterministic-fixture-v1", @@ -419,9 +446,8 @@ def _parser() -> argparse.ArgumentParser: parser.add_argument( "--golden", type=Path, - default=DEFAULT_GOLDEN_ROOT, - help="golden set directory for --retrieval-only " - "(default resources/evaluation/retrieval-golden)", + default=None, + help="explicit legacy/v1 golden directory; omitted uses source-reviewed v2", ) parser.add_argument( "--corpus-store", @@ -457,6 +483,11 @@ def _parser() -> argparse.ArgumentParser: default="deterministic-fixture-v1", help="platform model id for real-model runs (e.g. glm-4.7-flash)", ) + parser.add_argument( + "--local-corpus", + action="store_true", + help="use active local corpus even with the Mock model (mechanics only)", + ) parser.add_argument( "--fixture-corpus", action="store_true", @@ -487,6 +518,13 @@ def _run_retrieval_only(args: argparse.Namespace) -> int: APP_ROOT / ".local" / "models" / "bge-small-zh-v1.5" ) embedding = OnnxEmbeddingProvider(model_dir) + if args.golden is None: + from .learning_eval import DEFAULT_SUITE, run_suite + report = run_suite(DEFAULT_SUITE, args.corpus_store, embedding=embedding, min_score=args.min_score) + args.report.parent.mkdir(parents=True, exist_ok=True) + args.report.write_text(json.dumps(report, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") + print("source-reviewed retrieval (known evidence, not answer accuracy): " + json.dumps(report["summary"])) + return 0 report = run_retrieval_evaluation( args.golden, args.report, @@ -515,6 +553,9 @@ def _run_retrieval_only(args: argparse.Namespace) -> int: def main(argv: Iterable[str] | None = None) -> int: args = _parser().parse_args(argv) + if args.local_corpus and args.fixture_corpus: + print("--local-corpus and --fixture-corpus cannot be combined", file=sys.stderr) + return 2 if args.retrieval_only: return _run_retrieval_only(args) if args.cases is None: @@ -536,7 +577,7 @@ def main(argv: Iterable[str] | None = None) -> int: args.report, provider_id=args.provider, model_id=args.model, - local_corpus=not args.fixture_corpus if args.provider != "mock" else False, + local_corpus=args.local_corpus or (args.provider != "mock" and not args.fixture_corpus), pace_seconds=args.pace_seconds, case_retries=2 if args.provider != "mock" else 0, agent_decision_mode=args.agent_decision_mode, diff --git a/apps/scut-senior/api/src/scut_senior_api/learning_eval.py b/apps/scut-senior/api/src/scut_senior_api/learning_eval.py new file mode 100644 index 00000000..b888975d --- /dev/null +++ b/apps/scut-senior/api/src/scut_senior_api/learning_eval.py @@ -0,0 +1,170 @@ +"""Source-reviewed learning retrieval evaluation (no model/LLM calls). + +Evidence groups represent distinct needs; any listed chunk can satisfy one +group. Unlisted chunks remain unjudged. Scores are known-evidence lower bounds, +not exhaustive recall, answer accuracy, or a noise estimate. +""" +from __future__ import annotations + +import argparse +import hashlib +import json +import time +from collections import defaultdict +from pathlib import Path +from typing import Any + +from .paths import APP_ROOT +from .retrieval_eval import DEFAULT_CORPUS_STORE + +DEFAULT_SUITE = APP_ROOT / "resources/evaluation/reviewed-v2/retrieval.json" + + +def read_json(path: Path) -> dict[str, Any]: + return json.loads(path.read_text(encoding="utf-8")) + + +def validate_suite(suite: dict[str, Any], store_root: Path) -> dict[str, int]: + if suite.get("schema_version") != "reviewed-retrieval-v2": + raise ValueError("unsupported learning evaluation schema") + pointer = read_json(store_root / "active.json") + if suite["corpus_version"] != pointer["active_corpus_version"]: + raise ValueError("annotation corpus version differs from active corpus") + entries, evidence = suite["entries"], suite["evidence"] + if not entries or not evidence: + raise ValueError("empty reviewed suite") + root = store_root / "candidates" / suite["corpus_version"] / "courses" + indexes = {} + for course in {e["course_id"] for e in evidence.values()}: + indexes[course] = {c["chunk_id"]: c for c in read_json(root / f"{course}.json")["chunks"]} + for cid, saved in evidence.items(): + current = indexes[saved["course_id"]].get(cid) + if current is None or current["text"] != saved["text"]: + raise ValueError(f"evidence missing or changed: {cid}") + if hashlib.sha256(current["text"].encode()).hexdigest() != saved["text_sha256"]: + raise ValueError(f"evidence fingerprint mismatch: {cid}") + for key in ("source_id", "source_title", "locator_type", "locator_start", "locator_end", "question_id", "heading_path"): + if current[key] != saved[key]: + raise ValueError(f"evidence metadata changed: {cid}: {key}") + path = APP_ROOT / saved["knowledge_path"] + if hashlib.sha256(path.read_bytes()).hexdigest() != saved["knowledge_sha256"]: + raise ValueError(f"knowledge source changed: {cid}; review affected labels") + seen, source_splits, topic_splits = set(), {}, {} + for entry in entries: + if entry["case_id"] in seen or not entry["query"].strip(): + raise ValueError("duplicate case id or blank query") + seen.add(entry["case_id"]) + if entry["split"] not in {"dev", "validation"}: + raise ValueError("unknown split") + if not entry["reference_answer"] or not entry["verification"] or not entry["evidence_groups"]: + raise ValueError(f"missing review rationale: {entry['case_id']}") + previous_topic = topic_splits.setdefault(entry["topic_id"], entry["split"]) + if previous_topic != entry["split"]: + raise ValueError("paraphrase family crosses splits") + for group in entry["evidence_groups"]: + ids = group["chunk_ids"] + if not group["need"] or not ids or len(ids) != len(set(ids)): + raise ValueError("invalid evidence group") + for cid in ids: + if cid not in evidence or evidence[cid]["course_id"] != entry["course_id"]: + raise ValueError(f"invalid course evidence: {cid}") + source = evidence[cid]["source_id"] + previous = source_splits.setdefault(source, entry["split"]) + if previous != entry["split"]: + raise ValueError(f"source family crosses splits: {source}") + return {"queries": len(entries), "topics": len(topic_splits), "courses": len(indexes), "evidence_chunks": len(evidence)} + + +def score_ranking(groups: list[dict[str, Any]], ranked: list[str]) -> dict[str, Any]: + if not groups or any(not group["chunk_ids"] for group in groups): + raise ValueError("scoring requires non-empty positive evidence groups") + ranked = list(dict.fromkeys(ranked)) + known = {cid for group in groups for cid in group["chunk_ids"]} + result = {} + for k in (5, 20): + top = set(ranked[:k]) + hit = sum(bool(top.intersection(group["chunk_ids"])) for group in groups) + result[f"known_evidence_coverage_at_{k}"] = hit / len(groups) + result[f"all_evidence_groups_at_{k}"] = int(hit == len(groups)) + result["known_positive_mrr"] = next((1 / i for i, cid in enumerate(ranked, 1) if cid in known), 0.0) + result["unjudged_chunk_ids"] = [cid for cid in ranked if cid not in known] + return result + + +def run_suite(suite_path: Path, store_root: Path, *, embedding=None, min_score=1.0, split="all"): + from .adapters.local_corpus import LocalCorpusRetrievalGateway + + suite = read_json(suite_path) + validation = validate_suite(suite, store_root) + if embedding is not None: + candidate = store_root / "candidates" / suite["corpus_version"] + if read_json(candidate / "metadata.json").get("embedding_model_id") != embedding.model_id: + raise ValueError("hybrid evaluation requires a matching corpus embedding model") + for course in {entry["course_id"] for entry in suite["entries"]}: + if not (candidate / "vectors" / f"{course}.db").is_file(): + raise ValueError(f"hybrid evaluation missing vectors: {course}") + gateway = LocalCorpusRetrievalGateway(store_root, limit=20, min_score=min_score, embedding=embedding) + rows = [] + for entry in suite["entries"]: + if split != "all" and entry["split"] != split: + continue + start = time.perf_counter() + batch = gateway.search([entry["course_id"]], entry["query"]) + ids = [s.chunk_id for s in batch.sources] + rows.append({ + **{k: entry[k] for k in ("case_id", "topic_id", "course_id", "scenario", "split")}, + "query": entry["query"], "top_chunk_ids": ids, + "duration_ms": round((time.perf_counter() - start) * 1000, 3), + **score_ranking(entry["evidence_groups"], ids), + }) + metric_keys = ("known_evidence_coverage_at_5", "known_evidence_coverage_at_20", "all_evidence_groups_at_5", "all_evidence_groups_at_20", "known_positive_mrr") + + def summary(values): + return {"queries": len(values), **{k: round(sum(v[k] for v in values) / len(values), 6) for k in metric_keys}} + + if not rows: + raise ValueError("selected split has no queries") + report = { + "schema_version": "reviewed-retrieval-report-v2", "corpus_version": suite["corpus_version"], + "suite_sha256": hashlib.sha256(suite_path.read_bytes()).hexdigest(), + "mode": "hybrid" if embedding else "bm25f", "min_score": min_score, + "split": split, "validation": validation, "summary": summary(rows), + "interpretation": "Known-positive lower bounds; unjudged candidates require review, never automatic negative labels. No generation or answer-quality score. Timing includes first-load overhead.", + "entries": rows, + } + for key in ("course_id", "scenario", "split"): + groups = defaultdict(list) + for row in rows: + groups[row[key]].append(row) + report[f"by_{key}"] = {name: summary(values) for name, values in groups.items()} + return report + + +def main(argv=None): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--suite", type=Path, default=DEFAULT_SUITE) + parser.add_argument("--corpus-store", type=Path, default=DEFAULT_CORPUS_STORE) + parser.add_argument("--validate-only", action="store_true") + parser.add_argument("--report", type=Path) + parser.add_argument("--embedding-model-dir", type=Path) + parser.add_argument("--min-score", type=float, default=1.0) + parser.add_argument("--split", choices=("all", "dev", "validation"), default="all") + args = parser.parse_args(argv) + if args.validate_only: + print(json.dumps(validate_suite(read_json(args.suite), args.corpus_store))) + return 0 + if args.report is None: + parser.error("--report required for retrieval evaluation") + embedding = None + if args.embedding_model_dir: + from .adapters.onnx import OnnxEmbeddingProvider + embedding = OnnxEmbeddingProvider(args.embedding_model_dir) + report = run_suite(args.suite, args.corpus_store, embedding=embedding, min_score=args.min_score, split=args.split) + args.report.parent.mkdir(parents=True, exist_ok=True) + args.report.write_text(json.dumps(report, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") + print(json.dumps(report["summary"])) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/apps/scut-senior/api/src/scut_senior_api/retrieval_eval.py b/apps/scut-senior/api/src/scut_senior_api/retrieval_eval.py index a8ce7b03..10d17867 100644 --- a/apps/scut-senior/api/src/scut_senior_api/retrieval_eval.py +++ b/apps/scut-senior/api/src/scut_senior_api/retrieval_eval.py @@ -31,8 +31,8 @@ - ``recall@20`` : |expected ∩ top-20| / |expected| - ``mrr`` : 1 / rank of the first expected hit, 0 when none hits - ``noise_rate``: |top-N \\ expected| / |top-N| (retrieval-only proxy for the - full-pipeline "returned but never cited" share; a high value is the signal - to raise ``min_score``) + legacy unlabelled share; unlabelled does NOT mean irrelevant and this value + must not by itself justify raising ``min_score``) Reference validation fails closed: an expected chunk_id that is absent from the active course index aborts the evaluation, because a golden set whose @@ -311,6 +311,13 @@ def run_retrieval_evaluation( ) ) report = _build_report(results, gateway, top_n) + if golden_root.resolve() == DEFAULT_GOLDEN_ROOT.resolve(): + report["annotation_status"] = "legacy_not_semantically_certified" + report["annotation_warning"] = ( + "2026-09-12 audit found ambiguous labels and image-only evidence; " + "use learning_eval with resources/evaluation/reviewed-v2 for new experiments. " + "These legacy metrics reproduce historical targets, not answer quality." + ) report_path.parent.mkdir(parents=True, exist_ok=True) report_path.write_text( json.dumps(report, ensure_ascii=False, indent=2) + "\n", diff --git a/apps/scut-senior/docs/senior-ab/next-experiments.md b/apps/scut-senior/docs/senior-ab/next-experiments.md new file mode 100644 index 00000000..dde7e47b --- /dev/null +++ b/apps/scut-senior/docs/senior-ab/next-experiments.md @@ -0,0 +1,70 @@ +# 下一轮实验:场景适配与可信评测 + +更新:2026-09-12。用户已确认本方向。本方案承接 RRF 探索及 Agent AB 记录;本次落地规划、评测集审查与评测工具,检索主链路暂不改动。 + +## 先解决评测依据 + +原有 46 课、1,380 条黄金集不能继续作为已确认正确的教学质量标准。全量引用与文本检查发现 281 条目标为纯图片片段、231 条目标文本过短、7 条包含替换字符;每条原标注均缺少具体答案或相关性理由。详细审查见 [评测核验报告](../../resources/evaluation/reviewed-v2/AUDIT.md)。这不表示所有原查询都错误,也不追溯改写历史运行结果。 + +新的质量实验使用 [reviewed-v2](../../resources/evaluation/reviewed-v2/README.md):50 条问题、25 个主题、14 门课,逐题保存读过的证据、参考答案、核验理由和错误辨析。另有22条端到端场景,覆盖五类工作流、多轮追问、精确题目定位、跨课程、指定资料缺失和输入不足。它们是依据真实资料人工编写风格的模拟场景,由 Codex 核验,不冒称真实用户日志或独立专家双审。 + +不为凑齐每课30条而补模板。其余32门课的旧标注保持历史状态;纯图片课程先做独立视觉/OCR评测,正文尚未核验的课程后续按真实资料逐步扩充。 + +## 技术主线 + +保持五类 Workflow 和现有服务结构,在检索内部按请求特点选择策略。 + +| 场景 | 实现方向 | 验证目标 | +| --- | --- | --- | +| 查年份、卷别、题号 | 解析真实定位锚点,再关联题干与答案;注意内部question_id可能不同于卷面编号 | 题目定位正确率、错误年份率 | +| 概念理解、同义表达 | 两路召回后允许语义候选竞争头部,试分数融合与reranker | 已核验相关证据覆盖、解释所需条件 | +| 复习规划 | 分知识点召回,再按覆盖与重复程度选证据 | 主题覆盖、代表题、时间预算与薄弱点适配 | +| 解题、错题复盘 | 题干、解答、定义/易错点组成证据包 | 可复核推导、具体错因、帮助程度 | +| 多轮追问 | 根据最近主题补全指代;非空但未命中目标也可补检索 | 指代解析、最终问题完成率 | +| 跨课程 | 在已选择课程中按问题所需证据取舍 | 两门课各自贡献与正确关联,不强凑无关引用 | + +### 上下文与结构优先 + +复用已有标题路径、question_id和locator,建立轻量题干—答案、主题—例题关联。命中小片段后按需补充同题或小节内容。现有向量文本已包含标题、heading与题号,本轮不重复把“加标题”当成新能力。 + +先处理实际发现的图片占位、跨题切分、公式二维结构丢失、标题路径串入其他章节等问题。对可读材料补充有限上下文;确有必要时离线生成说明,保留原文定位。借鉴 [Contextual Retrieval](https://www.anthropic.com/engineering/contextual-retrieval) 的方法,不照搬其收益数字。 + +### 排序实验提前比较有意义的不同机制 + +固定同一候选池,比较旧排序、保留前3名的尾部RRF、归一化分数融合、交叉编码器reranker。保留前3名仅是诊断对照,不是永久规则;只保护确实匹配的题目身份。 + +reranker先作用于去重后的20~40个候选,记录CPU新增耗时。若有效,再测试仅在语义理解、两路分歧或定位不明确时启用。明确题号请求走快速路径。没有必要耗尽RRF小网格才允许试reranker。 + +[融合函数研究](https://arxiv.org/abs/2210.11934)支持把分数凸组合作为对照,但其结果不是本项目的效果保证。候选池扩到100前,先确认新位置包含已核验的增量证据。 + +### 动态行为围绕具体缺口 + +补检索触发条件从单纯“首检为空”扩展到“目标题号未命中”“重要主题缺证据”“追问指代未解”。规则能解决就直接补全;需要语义判断时再用轻量模型。先验证一次有目标的补检索,不给每个正常请求增加Planner。 + +复习任务可按每个主题的边际覆盖收益选择证据,避免同一份卷子占满前几条。初期使用现有元数据,不建设完整知识图谱或通用多Agent平台。 + +## 实验顺序 + +1. **已完成:评测依据修复。** 全量旧集结构审查、具体问题诊断、来源核验的新集、可替代证据分组、真实Workflow输入与离线基线。 +2. **候选诊断。** 收集各对照的候选并集,检查“没召回”与“召回后排低”。将未标注候选作为待判定,绝不自动标负。若补充标签,保存理由并升版本,对所有策略用同一新版本重算。 +3. **排序对照。** 固定语料、query与候选池,比四种排序,按场景分层汇总。调参只用dev,validation用于预先确定后的比较。 +4. **结构消融。** 分别加入真实题号锚点、题干答案关联、主题覆盖选择,再组合有效项。 +5. **动态行为。** 固定上述有效链路,比较指代补全与一次补检索;必须记录实际执行动作,不能拿正常复习路径的引用数归因Agent。 +6. **回答效果。** 用22条场景及其rubric核验正确性、引用支持、任务完成和帮助程度。固定模型配置与调用预算;保留失败样本,不按模型实际输出放宽答案。 + +## 指标与取舍 + +- 当前新集是非穷尽正例标注,报告“已知证据组覆盖@5/@20”和known-positive MRR,不称完整召回率或答案准确率。 +- 组内chunk为可替代证据,命中任意一个即可;组间表示不同信息需要,分别计覆盖。 +- 来源有效不等于结论正确。纠错案例要能反驳错误材料;数学题用独立推导/可执行计算,SQL用实际数据检验。 +- 格式、状态、引用存在性只属于管线检查。未读回答正文时,质量字段保持not_reviewed,不能记作语义通过。 +- 方案选择同时考虑任务收益、首个有效输出时间、检索新增耗时和调用次数。精确题重点控制定位退化;复杂题允许适量延迟换取明显教学收益。 +- 不把零退化、零延迟增长设为统一门槛。保留现有身份隔离、来源定位与调用预算,不新增审批链、复杂安全协议或学生侧调试流程;一般教学推导允许明确标为补充。 + +## 本轮基线 + +50题、同一min_score=1.0、top20:BM25F和当前旧Hybrid的已知证据组覆盖@5均为0.66,@20均为0.86,known-positive MRR均为0.511547。两组输出指标一致,并不证明dense没有独立召回增益;当前词法优先排序可能遮蔽增益,需要下一步观察候选并集。 + +新旧指标的任务与标注语义不同,不能把0.66与历史0.638406直接比较并宣称提升。报告包含数据集指纹,见reviewed-v2目录。此次未调用在线回答模型,也没有取得新的端到端回答质量成绩。 + +运行检查:22条新场景在真实语料+Mock下20条管线通过、2条因现有URL Guard失败;失败记录保留,不改问法迎合Guard。下一轮回答实验需将此类运行失败与参考答案错误分开报告。评测相关回归32 passed。 diff --git a/apps/scut-senior/docs/senior-ab/plan-ab.md b/apps/scut-senior/docs/senior-ab/plan-ab.md index 5f2b49e0..f42a35ce 100644 --- a/apps/scut-senior/docs/senior-ab/plan-ab.md +++ b/apps/scut-senior/docs/senior-ab/plan-ab.md @@ -1,5 +1,7 @@ # SCUT 老学长 AB 分支优化计划 +> 2026-09-12:后续实验改用[场景适配与可信评测方案](next-experiments.md),以及逐题附证据和核验理由的reviewed-v2评测集。本文既有实跑作为历史记录,引用通过不能证明答案正确。 + 版本:0.1(基于最新 AB 实跑后的收敛方案) 状态:**P0/P1 最小实现已完成本地回归;本分支不包含自定义 BYOK 连接功能。** diff --git a/apps/scut-senior/docs/senior-ab/rrf-exploration.md b/apps/scut-senior/docs/senior-ab/rrf-exploration.md index 1ce9bbb0..41723184 100644 --- a/apps/scut-senior/docs/senior-ab/rrf-exploration.md +++ b/apps/scut-senior/docs/senior-ab/rrf-exploration.md @@ -1,5 +1,7 @@ # RRF 融合 A/B 探索记录 +> 2026-09-12 更新:下一轮执行方案已调整为[场景适配与可信评测](next-experiments.md)。下述历史指标可以复现,但旧黄金集存在标注与证据质量问题,不能继续解读为已确认的教学质量。下述调参顺序保留为历史计划,以新方案为准。 + ## 2026-09-10:恢复旧融合,继续小范围验证 相同 corpus 版本 `corpus-c1513a68ccd7-b0_2_0-m1200-wworkflow-contract-v1-ooutline-none-v1-ebge-small-zh-v1.5`,黄金集 46 门课程、1,380 条。新复跑使用 min_score=1.0、返回 top20;恢复旧逻辑后完整复跑已完成,四项汇总指标与历史 Hybrid 完全一致。相关检索测试 33 passed。 diff --git a/apps/scut-senior/resources/evaluation/README.md b/apps/scut-senior/resources/evaluation/README.md new file mode 100644 index 00000000..9a590e91 --- /dev/null +++ b/apps/scut-senior/resources/evaluation/README.md @@ -0,0 +1,11 @@ +# 评测入口 + +2026-09-12起,新实验使用[来源核验评测集reviewed-v2](reviewed-v2/README.md),优化规划见[下一轮实验方案](../../docs/senior-ab/next-experiments.md)。 + +- `eval_runner --retrieval-only --report ...`默认使用新版已知证据组指标。 +- 复现旧指标需显式指定`--golden resources/evaluation/retrieval-golden`;旧集不是已经确认正确的语义金标准。 +- 端到端使用`--cases resources/evaluation/reviewed-v2/scenarios.json`。`outcome`只检查管线合同,`quality_outcome`另行核验。 +- 原`scut-real-corpus-cases.json`保留为历史数据,12条均有审查理由;`exam-review-sweep.cases.json`的20条仅作流程冒烟。不能把历史状态/引用通过率当成答案准确率。 +- 历史报告保持原样,新旧数据集分数不可直接相减宣称改进。 + +完整发现、已验证答案和覆盖限制见[核验报告](reviewed-v2/AUDIT.md)。 diff --git a/apps/scut-senior/resources/evaluation/exam-review-sweep.cases.json b/apps/scut-senior/resources/evaluation/exam-review-sweep.cases.json index a29e7d91..886f5b8c 100644 --- a/apps/scut-senior/resources/evaluation/exam-review-sweep.cases.json +++ b/apps/scut-senior/resources/evaluation/exam-review-sweep.cases.json @@ -462,5 +462,6 @@ } } ], - "_note_1": "2026-08-23:初版漏设 requires_citation,_check_expected 默认 False 反向断言'不得有引用'导致全数误报;备考复习本就应引用仓库资料,补上 true。" -} \ No newline at end of file + "_note_1": "2026-08-23:初版漏设 requires_citation,_check_expected 默认 False 反向断言'不得有引用'导致全数误报;备考复习本就应引用仓库资料,补上 true。", + "_evaluation_status_2026_09_12": "pipeline_smoke_only; not a semantic answer-quality benchmark; reviewed in reviewed-v2/legacy-scenarios-audit.json" +} diff --git a/apps/scut-senior/resources/evaluation/retrieval-golden/README.md b/apps/scut-senior/resources/evaluation/retrieval-golden/README.md index 45f66d0a..38497a33 100644 --- a/apps/scut-senior/resources/evaluation/retrieval-golden/README.md +++ b/apps/scut-senior/resources/evaluation/retrieval-golden/README.md @@ -1,5 +1,7 @@ # P0 检索评测 Golden Set(PLAN-2 阶段一 步骤 1) +> **2026-09-12 状态更正:本目录仅用于复现历史指标,不再视为已经确认正确的语义金标准。** 全量引用/文本检查与抽样语义核查发现模板问题、纯图片目标及缺少逐题理由等问题。原文件和历史说明保留,不追溯伪造审核记录。新实验请用 [reviewed-v2](../reviewed-v2/README.md),逐条审查结果见 [legacy-audit.json](../reviewed-v2/legacy-audit.json)。下文“人工核对”的历史描述未提供足以独立确认的逐题证据,不能当作本次核验结论。 + 本目录存放检索评测的**人工核对金标准**,是阶段一所有检索改造(BM25F、dense + RRF、 query 变体、rerank)的评测基线。格式契约见 `retrieval_eval.py` 模块 docstring。 diff --git a/apps/scut-senior/resources/evaluation/reviewed-v2/AUDIT.md b/apps/scut-senior/resources/evaluation/reviewed-v2/AUDIT.md new file mode 100644 index 00000000..362cd60e --- /dev/null +++ b/apps/scut-senior/resources/evaluation/reviewed-v2/AUDIT.md @@ -0,0 +1,66 @@ +# 评测集核验报告 + +日期:2026-09-12。执行者:Codex。结论:旧集足以复现历史程序结果,不足以证明真实学习任务正确;已建立可逐题复核的新版本。 + +## 全量旧黄金集检查 + +检查46门课全部1,380条条目的预期chunk是否存在、版本绑定、正文形态和原始指纹;每条处置见legacy-audit.json。 + +| 项目 | 条数 | 解释 | +| --- | ---: | --- | +| 缺少逐题答案/相关性理由 | 1,380 | 所有note都是“学生复习提问 -> 真实课程 chunk”,不能替代支持关系证明 | +| 命中宽泛模板提问特征 | 1,148 | 程序按列出的几类问法识别;不是对其余232条的正确性认证 | +| 预期证据纯图片 | 281 | 去除Markdown图片链接后无正文;只能作为图片/资源定位目标,不能冒充文本解题依据 | +| 预期文本过短 | 231 | 去除图片后字词字符不足40;只标记需要进一步语义核验,不自动断言不相关 | +| 目标包含替换字符 | 7 | 有编码/抽取质量问题 | + +上述类别不全部互斥,不能相加当作错误总数。引用存在检查未发现缺失chunk;存在并不代表内容支持问题。electrical_engineering_lab、circuit_and_electronics_lab、machine_learning三个课程的当前chunk全部为纯图片。 + +例如“2016-2017年度期末卷A应该从哪里开始”被绑定到linear-algebra-006:p2:c01,该目标只有图片链接。即使检索命中,也无法从当前文本确认复习顺序。其他“主要讲什么”“哪些内容最重要”的开放问题同样不能无理由绑定某一页当作唯一正确答案。 + +本次没有把1,380条全部谎称为逐题语义通过:完成的是全量可重复的引用/文本审查,以及典型问题的语义诊断。旧集统一标记historical_only_not_certified,原JSON与历史成绩保留。 + +## 全部旧场景逐条审查 + +12条scut-real-corpus场景的输入、期望与runner行为均已阅读,逐条理由在legacy-scenarios-audit.json。核心问题包括: + +- 2019卷第1题的矩阵在文本抽取后失去二维布局,现有目标不能直接认证正确计算;新精确题改用清晰的“选择题第4题”,并明确内部q10不是卷面第10题。 +- 错题复盘没有矩阵及学生答案,runner填入占位文字,仍要求充分回答;新集给出具体错误SQL和错误PV顺序。 +- 临时材料把秩写成“线性无关行的数量”,应明确为最大线性无关行数;且理解用户材料并不需要强制引用公共仓库页面。 +- 跨课程问题仍写“合成对比”,没有实际学习任务;旧runner无条件跳过cross,已改为尊重真实功能开关。 +- 多轮JSON里的assistant占位并未被runner使用,它实际重跑user问句。因此应评实际前轮生成后的追问结果,不能把占位文本当成已核验回答。 +- 部分历史注释根据某模型是否给出general块/answered状态放宽期望,这只能解释历史兼容性,不能证明标准答案正确。 +- “酉空间”等主题没有逐项证据支持记录,却统一要求sufficient;备考题应检查主题覆盖与计划适配。 + +20条exam-review-sweep场景全部检查:保留为有/无大纲流程冒烟。通用“核心概念、重点章节、典型题”不是每门课程的语义答案标准,不能用于模型质量排名。 + +## 新集如何核验 + +读取27个指定证据片段,形成25个主题、50种问法。每题保留原文、路径、locator、内容与源文件指纹,并写出可复核的答案理由。没有按检索成绩更换问法或挪动答案。 + +| 类型 | 核验实例 | +| --- | --- | +| 独立穷举 | 容量22的0-1背包穷举32个子集,最优25,唯一选择第2、4、5件 | +| 精确算术 | 四组加权均值的方差系数依次为7/18、3/8、1/3、9/25;第三组最小 | +| 可执行SQL | 用SQLite验证AGE=NULL不能筛中NULL,IS NULL可以;80、90均分85满足HAVING | +| 反例与代数 | 单位矩阵反驳“重根必不可对角化”;一致启发的路径重赋权逐项相消 | +| 执行交错 | 满缓冲区下生产者先拿mutex再等empty,消费者无法取出数据,验证死锁原因 | +| 结构与端点 | 关系等价类逐对核对;保险收费验证18/19、60/61及总范围端点 | +| 对照原始定义 | 投影、累计ACK、Cache局部性、预剪枝等仅采用原文直接支持的有限结论 | + +原材料本身也有错误,不能复制为标准: + +- data-structure-001:c03称切换std::sort可确保排序稳定性。查[C++工作草案](https://eel.is/c++draft/alg.sort),stable_sort明确有稳定性保证,sort没有。新集将该片段用作纠错对象,不用作正确事实。 +- web-frontend-fundamentals-014:s18写“忽略伪元素”。[W3C选择器规范](https://www.w3.org/TR/selectors-3/#specificity)要求伪元素与类型选择器参与相应计数。该页未进入正确性正例,不能通过“课件写了”替它背书。 +- operating-systems-005:p1有关虚拟存储逻辑容量的表述不严谨,新集只采用其中清晰的死锁及局部性段落,跨课rubric明确不能照抄容量公式。 +- NAPT原题背景将出站路由包写为“回包”,新问法及答案明确区分去服务器的路由选择和回到内网的地址端口还原。 + +新集的正例不是完整相关性标注。其余合理片段保持unjudged;50题首轮检索成绩只说明已知证据的命中,不能据此宣称答案正确率为66%。 + +## 范围与下一步 + +新语义集目前覆盖14门课,不假装替其余32门课完成了内容认证。旧46课已完成结构性盘点;为保证评测依据,未读过的内容不自动扩成新金标准。图片题、严重损坏公式、源码乱码先保留在资料质量清单,待OCR/视觉核验后另建题组。 + +dev/validation按共享来源连通组划分,分别26/24题;改写问题不跨组。这避免本集内部直接来源泄漏,但不构成独立盲审。后续用真实学生问法扩充时,应记录来自用户还是自拟,并检查题意与证据,不只补同义模板。 + +此次不要求用户先审核才能使用,也不引入额外审批流程。可立即用新集做开发对照;当结果影响路线选择时,按逐题材料核验失败与新候选,透明保留尚未确认项。 diff --git a/apps/scut-senior/resources/evaluation/reviewed-v2/README.md b/apps/scut-senior/resources/evaluation/reviewed-v2/README.md new file mode 100644 index 00000000..7ffd6436 --- /dev/null +++ b/apps/scut-senior/resources/evaluation/reviewed-v2/README.md @@ -0,0 +1,58 @@ +# 来源核验的学习评测集 v2 + +2026-09-12,由Codex读取指定材料、推导答案并编写场景。此处的“核验”指具体记录中的有限结论,不代表原材料全文正确、所有相关证据均已穷尽或独立专家双审。问题是贴近实际学习需求的自拟场景,不是真实用户日志。 + +## 内容 + +| 文件 | 用途 | +| --- | --- | +| annotations.json | 25个主题的两种问法、证据组、参考答案、核验理由、典型错误;主要维护入口 | +| retrieval.json | 50条检索问题,14门课、27个原始证据片段;含来源路径、原文及指纹 | +| scenarios.json | 22条端到端场景:五类Workflow、真实错答、临时材料、时间预算、多轮、精确查题、跨课、资料缺失、输入不足 | +| legacy-audit.json | 旧1,380条问题逐条引用存在性、文本形态与指纹检查;不是自动语义认证 | +| legacy-scenarios-audit.json | 旧12条真实语料场景和20条备考扫描的逐条处置理由 | +| AUDIT.md | 发现、事实核验方法、范围与未覆盖项 | +| baseline-bm25f.json / baseline-hybrid.json | 新集上的首轮纯检索基线,无在线回答模型调用 | + +## 判断什么才算正确 + +1. **资料定位:** chunk存在、对应正确课程/来源,原文没有在核验后变化。 +2. **内容支持:** 问题限定到材料中可读的知识;公式残缺、只剩图片、题号错配都不能凭编号认定正确。 +3. **答案正确:** 引用只是依据;按reference_answer与verification独立判断数学、代码、逻辑。source_correction中的来源是待反驳对象。 +4. **任务完成:** 回答当前追问、解释实际错因、满足复习时长、区分两门课,而非仅输出answered/sufficient。 + +reference_answer是语义要点,允许等价表达、正确的其他推导。pitfalls不应当通过简单关键词命中判错——例如引用错误说法再反驳应通过。暂不自动用另一个模型评分,避免用未经验证的裁判替代核验。 + +证据组内是替代关系;组间是不同信息需要。未列出的chunk是unjudged,不是负例。因此已知证据覆盖与MRR只是非穷尽标注下的诊断值,不计算“未标注=噪声”的比例。看到合理的新候选,读原文、记下理由后增加标注;统一升版并重算所有对照,不能只为某条链路变绿而改答案。 + +## 使用 + +在apps/scut-senior目录下用项目Python运行。Windows为`api/.venv/Scripts/python.exe`,其他系统使用对应虚拟环境Python。 + +```text +python -m scut_senior_api.learning_eval --validate-only +python -m scut_senior_api.learning_eval --split dev --report .local/evaluation/reviewed-dev.json +python -m scut_senior_api.learning_eval --split validation --report .local/evaluation/reviewed-validation.json +python -m scut_senior_api.learning_eval --embedding-model-dir .local/models/bge-small-zh-v1.5 --report .local/evaluation/reviewed-hybrid.json +``` + +默认只运行本地检索,不调用在线回答模型。当前dev为26题,validation为24题;同一来源及其关联证据、同主题改写不跨集合。这个validation由同一作者看过,且此次跑了全量基线,属于来源隔离的验证集,不是从未接触的盲测集。上线决策还应收集新的真实问题作为外部验证。 + +端到端仍使用现有eval_runner,指定`--cases resources/evaluation/reviewed-v2/scenarios.json`。`--local-corpus`加默认Mock只验证运行机制,不能形成真实回答质量结论;真实模型沿用其provider/model参数。没有提供参考答案给被测模型,rubric只进入结果报告。多轮场景先实际运行前一问,再发送追问;不注入虚构assistant答案。 + +报告中的`outcome`仅表示管线检查结果,`quality_outcome=not_reviewed`表示尚未按rubric核验。报告附最终正文、引用及Workflow结果,便于逐题审阅。跨课程在功能开启时真实执行;关闭时明确skipped。临时材料或资料缺失任务未指定引用要求时,评测器不额外要求“必须引用”或“禁止引用”。 + +修改annotations后,运行`python scripts/build_reviewed_evaluation.py`重新生成数据;更新旧集检查用`python scripts/audit_evaluation_sets.py`。改动证据或答案须说明原因,不用生成脚本自动创造审核结论。语料版本或来源变更时,先核对受影响题目再重新生成指纹。 + +## 本轮结果 + +| 策略 | 已知证据组覆盖@5 | @20 | known-positive MRR | +| --- | ---: | ---: | ---: | +| BM25F | 0.660000 | 0.860000 | 0.511547 | +| 旧Hybrid | 0.660000 | 0.860000 | 0.511547 | + +min_score=1.0,top20,50题。单轮耗时包含首次载入,不作为稳定P95或线上时延结论。新旧集不可直接比较绝对分数。没有执行新的在线回答实验。 + +14门课的向量资产均存在且有数据。两组有5题的top20列表不同,只是已知正例指标相同,不能称两种检索完全等价。 + +评测相关回归32 passed。22条新场景已在真实语料+Mock模型下做运行检查:20条管线通过、2条失败、0条跳过;跨课程已实际执行。失败为`reviewed-os-states`与`reviewed-network-ack-followup`触发现有URL Guard,保留失败记录,没有为使其变绿改题。全部22条语义质量仍标记not_reviewed;Mock输出不代表真实模型能力。本地报告为`.local/evaluation/reviewed-v2-mock-smoke.json`(相对应用根目录)。 diff --git a/apps/scut-senior/resources/evaluation/reviewed-v2/annotations.json b/apps/scut-senior/resources/evaluation/reviewed-v2/annotations.json new file mode 100644 index 00000000..1f566d13 --- /dev/null +++ b/apps/scut-senior/resources/evaluation/reviewed-v2/annotations.json @@ -0,0 +1,212 @@ +{ + "reviewer": "Codex", + "review_date": "2026-09-12", + "review_method": "Read the identified active-corpus passages, restrict claims to legible content, independently reason through answers; explicit source-error cases use external primary references. These are authored scenarios, not collected student logs or independently double-reviewed labels.", + "topics": [ + { + "id": "la-diagonalization", "course_id": "linear_algebra", "scenario": "concept", + "queries": ["矩阵可对角化的充要条件是什么?为什么特征值互不相同只是充分条件?", "有重根就一定不能化成对角矩阵吗?请用单位矩阵说明。"], + "groups": [{"need": "可对角化的充要条件", "chunk_ids": ["linear-algebra-012:p2:q-linear-algebra-012-q10:c01"]}], + "answer": "在讨论的数域内,n阶矩阵可对角化当且仅当有n个线性无关特征向量;n个不同特征值是充分条件而非必要条件。单位矩阵只有一个不同特征值但本身为对角矩阵。", + "verification": "原文选择题第4题的B项给出条件;单位矩阵作为独立反例。内部q10不是试卷第10题。", + "pitfalls": ["有重根必不可对角化", "n个互不相同的特征向量就足够,无需线性无关"] + }, + { + "id": "prob-t-symmetry", "course_id": "probability_theory", "scenario": "problem", + "queries": ["T服从t分布,若P(T>λ)=α,P(T<−λ)是多少?", "t分布右边尾巴的面积是α,关于0对称的左边尾巴也是α,还是α/2?"], + "groups": [{"need": "t分布双尾对称题", "chunk_ids": ["probability-theory-010:q-probability-theory-010-q1:c01"]}], + "answer": "P(T<−λ)=P(T>λ)=α,利用t密度关于0对称;不是α/2。", + "verification": "可读题干与选项完整;独立通过对称性积分变量替换验证,不把前一道题的答案B错配到本题。", + "pitfalls": ["把单侧概率再次除以2", "把chunk开头上一题的B当作本题答案"] + }, + { + "id": "prob-unbiased", "course_id": "probability_theory", "scenario": "problem", + "queries": ["独立同分布样本方差σ²>0,用权重(1/2,1/3,1/6)、(1/2,1/4,1/4)、(1/3,1/3,1/3)、(1/5,2/5,2/5)估计均值,哪个方差最小?", "四种加权平均都无偏时,为什么平均分配三个样本的权重更有效?假定样本独立同分布且方差为正。"], + "groups": [{"need": "四种均值估计量的题目与解答", "chunk_ids": ["probability-theory-010:q-probability-theory-010-q3:c01"]}], + "answer": "均无偏,因为权重和为1。方差分别为7σ²/18、3σ²/8、σ²/3、9σ²/25;第三种最小。", + "verification": "按独立变量方差公式逐项平方求和复算;σ²>0避免零方差时无严格优劣。", + "pitfalls": ["权重和相同所以方差相同", "漏掉独立性条件"] + }, + { + "id": "algo-knapsack", "course_id": "algorithm_design_and_analysis", "scenario": "problem", + "queries": ["2023-2024 B卷容量22、体积3/5/7/8/9、价值4/6/7/9/10的0-1背包题怎么做?", "背包最多装22,每件只能拿一次,五件物品重量3、5、7、8、9,价值4、6、7、9、10。最大价值和选择是什么?"], + "groups": [{"need": "容量22的完整背包题干", "chunk_ids": ["algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q13:c01"]}], + "answer": "最大价值25,选择第2、4、5件,体积5+8+9=22,价值6+9+10=25。第1、2、3、4件体积为23,不可行。", + "verification": "已独立穷举32个子集复核;题干提供实例,不提供现成答案。", + "verified_values": {"maximum_value": 25, "selected_items": [2, 4, 5]}, + "pitfalls": ["拿总体积23的组合", "把0-1背包按分数背包贪心求解"] + }, + { + "id": "ds-inorder", "course_id": "data_structure", "scenario": "concept", + "queries": ["不用递归,怎样用栈完成二叉树中序遍历?", "遍历二叉树时一路压左孩子,弹出后什么时候访问右子树?"], + "groups": [{"need": "显式栈中序遍历实现", "chunk_ids": ["data-structure-023:h-作业及分析:c01"]}], + "answer": "沿左链压栈;到空节点时弹栈并访问;转向弹出节点的右子树;栈为空且当前节点为空才结束。时间O(n),栈空间O(h)。", + "verification": "逐句检查代码的循环、压栈、弹栈、访问、转右顺序;复杂度为独立推导,不采纳材料中未经验证的性能测量。", + "pitfalls": ["栈一空就结束,遗漏当前右子树", "弹栈前先访问导致先序遍历"] + }, + { + "id": "db-projection", "course_id": "database", "scenario": "concept", + "queries": ["关系代数中选择和投影有什么区别?哪一个是按列切分?", "只保留学生表的学号和姓名,应该用选择还是投影?"], + "groups": [{"need": "投影按属性选列的解释", "chunk_ids": ["database-005:s15:c01"]}], + "answer": "投影选列,选择按谓词筛行;只保留学号和姓名是投影。", + "verification": "讲义给出垂直分割题及B项解析,按关系代数定义复核。", + "pitfalls": ["把选择说成选列", "把投影说成筛选满足条件的行"] + }, + { + "id": "db-having", "course_id": "database", "scenario": "concept", + "queries": ["SQL中HAVING筛选的是行还是分组?", "按学生分组算平均成绩后,只留下均分至少85的组,该在哪里写条件?"], + "groups": [{"need": "HAVING分组过滤", "chunk_ids": ["database-005:s19:c01", "database-004:p3:q-database-004-q27:c01", "database-001:q-database-001-q2:c01"]}], + "answer": "HAVING对分组聚合结果过滤,如GROUP BY 学号 HAVING AVG(成绩)>=85;不是要求每科成绩均达到85。", + "verification": "讲义解析、选择题、完整AVG查询相互对照;三种证据是可替代项,不要求全部命中。", + "pitfalls": ["每科都必须达到85", "HAVING只用于筛原始单行"] + }, + { + "id": "db-null", "course_id": "database", "scenario": "mistake", + "queries": ["我写WHERE AGE = NULL查缺失年龄,为什么不对?", "筛出没有填写年龄的学生,应该写等于NULL还是IS NULL?"], + "groups": [{"need": "NULL比较的讲义解释", "chunk_ids": ["database-005:s19:c01"]}], + "answer": "使用AGE IS NULL;普通等号与NULL比较得到UNKNOWN,WHERE不会保留该结果。", + "verification": "讲义明确指出AGE=NULL错误;用SQL三值逻辑复核。", + "pitfalls": ["AGE=NULL可以正确筛出缺失值", "用AGE=0替代缺失值判断"] + }, + { + "id": "os-states", "course_id": "operating_systems", "scenario": "concept", + "queries": ["进程就绪和阻塞有什么区别?I/O完成后会直接运行吗?", "一个进程只是没拿到CPU,另一个在等磁盘读完,它们是同一种状态吗?"], + "groups": [{"need": "就绪、阻塞及转换", "chunk_ids": ["operating-systems-028:h-os复习指导:c03"]}], + "answer": "就绪具备运行条件但等待CPU,阻塞等待外部事件;I/O完成后通常阻塞转就绪,再由调度选中进入运行。", + "verification": "讲义列出三个状态和转换;修正明显排字错误“单位分到CPU”为“未分到CPU”。", + "pitfalls": ["阻塞等同于等待CPU", "I/O完成必然立即获得CPU"] + }, + { + "id": "os-producer", "course_id": "operating_systems", "scenario": "mistake", + "queries": ["有界缓冲区生产者能先P(mutex)再P(empty)吗?", "缓冲区满时,生产者拿着互斥锁等空位,消费者还能取走数据吗?"], + "groups": [{"need": "生产者消费者信号量顺序", "chunk_ids": ["operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~3-参考答案与解析:c01"]}], + "answer": "应先P(empty)再P(mutex)。满缓冲区时,反过来会让生产者持锁等空位,消费者拿不到锁无法腾空位,造成死锁。", + "verification": "原文代码给出正确顺序;构造满缓冲区的执行交错验证错误顺序。标题路径串入Page Fault,按正文而非上级标题判断相关性。", + "pitfalls": ["PV操作可以任意交换", "只要有互斥锁就不会死锁"] + }, + { + "id": "os-deadlock", "course_id": "operating_systems", "scenario": "concept", + "queries": ["死锁的四个必要条件是什么?统一资源申请顺序破坏了哪一个?", "所有线程都先拿A锁再拿B锁,为什么能避免这两把锁形成循环等待?"], + "groups": [{"need": "死锁条件", "chunk_ids": ["operating-systems-005:p1:c01"]}], + "answer": "互斥、请求并保持、不可剥夺、循环等待;对这组锁统一全局获取顺序破坏循环等待。", + "verification": "只采用该页清晰的死锁定义段;顺序获取的结论通过有向等待环不可能严格递增复核,不采纳该页其他未经核验说法。", + "pitfalls": ["统一顺序破坏互斥条件", "两把锁有顺序就能防止系统中的所有其他死锁"] + }, + { + "id": "compiler-left-recursion", "course_id": "compiler_principles", "scenario": "problem", + "queries": ["T→T,S | S 如何消除直接左递归?", "递归下降遇到T先调用自己再读逗号的文法会卡住,怎么改写?原式T→T,S | S。"], + "groups": [{"need": "该文法左递归消除结果", "chunk_ids": ["compiler-principles-001:s27:c01"]}], + "answer": "T→S T′,T′→,S T′ | ε。以S开头,再接零次或多次逗号加S。", + "verification": "原文给出转换;通过两种文法都生成S(,S)*复核,问题不使用原文中含义不明确的∧符号。", + "pitfalls": ["忘记ε产生式", "改写后仍然T→T开头"] + }, + { + "id": "compiler-plan", "course_id": "compiler_principles", "scenario": "review", + "queries": ["复习课里那道S→a | ∧ | (T)、T→T,S | S的预测分析题,应该按什么步骤做?这里只要步骤。", "面对需要改写文法并构造LL(1)分析表的大题,先算FIRST还是先消除左递归?"], + "groups": [{"need": "预测分析题的解题流程", "chunk_ids": ["compiler-principles-001:s26:c01"]}], + "answer": "先消除左递归、提取左公共因子,再计算FIRST和FOLLOW,检查LL(1)条件,最后构造预测分析表或递归子程序;不能保证任意文法这样处理后都成为LL(1)。", + "verification": "讲义列出流程;任务限定步骤,不要求从存在字体歧义的∧推导具体集合。", + "pitfalls": ["保证任意文法都可变为LL(1)", "在改写之前算好集合后直接沿用"] + }, + { + "id": "network-ack", "course_id": "computer_networks", "scenario": "concept", + "queries": ["TCP确认号为n到底表示收到了n,还是接下来想收到n?", "接收方回复ACK=501,发送方能理解为500之前的字节都确认了吗?"], + "groups": [{"need": "TCP累计确认号含义", "chunk_ids": ["computer-networks-051:h-笔记:c10"]}], + "answer": "确认号n表示期望下一个字节序号为n,至n−1的字节已累计确认;确认号501包括对序号500的确认。ACK标志为1时确认字段有效。", + "verification": "原文给出n−1与n的明确关系;只评这一关系,不扩展为所有TCP细节。", + "pitfalls": ["确认号是最后收到的字节序号", "按报文个数而不是字节编号解释"] + }, + { + "id": "network-napt", "course_id": "computer_networks", "scenario": "evidence_bundle", + "queries": ["网络层大题中192.168.1.10:5000映射到202.1.1.1:8000,回包怎么还原?去8.8.8.8该选哪条路由?", "请找到NAPT网关那道题的题干和答案,解释回程端口还原以及/8为什么优先于默认路由。"], + "groups": [ + {"need": "NAPT映射及两条路由题干", "chunk_ids": ["computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四:c01"]}, + {"need": "还原与路由选择答案", "chunk_ids": ["computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四~大题二-参考答案:c01"]} + ], + "answer": "服务器回包在公网侧目的为202.1.1.1:8000,转换后为192.168.1.10:5000;去8.8.8.8的出站包按/8选202.1.1.5,不选默认202.1.1.254。", + "verification": "题干与答案成对读取;原题背景把去服务器的包称作回包,按第3小问明确区分出站路由与回程NAPT,不能照抄方向混乱。", + "pitfalls": ["把回到内网的包继续发往8.8.8.8", "以路由表出现先后代替最长前缀"] + }, + { + "id": "testing-boundary", "course_id": "software_testing", "scenario": "problem", + "queries": ["三个独立输入变量,健壮最坏情况边界值测试需要多少组?和健壮边界值有什么不同?", "每个输入都取七个含越界的代表值,再组合三个输入,是19组还是343组?"], + "groups": [{"need": "边界值四种计数模型", "chunk_ids": ["software-testing-040:h-unit~第二章-软件测试方法~一-黑盒测试-重点:c01"]}], + "answer": "经典每变量七个互异代表值且无额外约束的模型下,健壮最坏情况为7³=343;健壮单故障假设边界值为6×3+1=19。", + "verification": "原文列出7^n与6n+1;按笛卡尔积和单变量变化两种构造独立复算。", + "pitfalls": ["把7^n写成7n", "忽略跨变量约束仍断言任何实际系统必需343条"] + }, + { + "id": "testing-insurance", "course_id": "software_testing", "scenario": "problem", + "queries": ["保险年龄1–18收费100,19–60收费200,61–150收费300,非整数或越界非法,怎么选等价类和边界测试?", "测保险系统只用年龄1、80、150够吗?1–18、19–60、61–150三档收费,输入必须是整数。"], + "groups": [{"need": "保险年龄分段规则", "chunk_ids": ["software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~题目:c01"]}], + "answer": "覆盖三个有效类及小于1、大于150、非整数的无效类;重点取0/1/2、17/18/19/20、59/60/61/62、149/150/151与非整数,允许不同等效测试设计,不强制唯一列表。", + "verification": "按题干逐段检查闭区间端点及预期收费,边界用例由规则推导。", + "pitfalls": ["年龄18与19收费相同", "只测总区间两端遗漏内部收费分界", "把非整数作为有效输入"] + }, + { + "id": "testing-branch", "course_id": "software_testing", "scenario": "concept", + "queries": ["判定覆盖能保证复合条件里的每个条件都独立影响结果吗?", "if里有三个布尔条件,真假分支各走一次就算MC/DC了吗?"], + "groups": [{"need": "分支覆盖与MC/DC的差异", "chunk_ids": ["software-testing-045:h-unit~第八章-软件质量度量~三-软件度量方法~2.-覆盖率度量-测试充分性指标:c01"]}], + "answer": "不是。分支覆盖要求判定的各出口被执行;MC/DC还要求展示每个条件可独立影响判定结果。分支覆盖不能保证这一点。", + "verification": "对照表的定义;用复合判定各出口均执行但某条件始终固定的反例验证。", + "pitfalls": ["分支覆盖等同于MC/DC", "分支覆盖保证所有条件组合"] + }, + { + "id": "ai-prepruning", "course_id": "artificial_intelligence_intro", "scenario": "concept", + "queries": ["决策树预剪枝为什么既能减少过拟合,又可能欠拟合?", "某次分裂当下没提高验证表现就停止,会不会错过后续更好的树?"], + "groups": [{"need": "预剪枝的收益及贪心局限", "chunk_ids": ["artificial-intelligence-intro-017:s27:c01"]}], + "answer": "提前停止可降低过拟合风险和训练测试开销;当前无收益的分裂可能为后续有效划分创造条件,贪心停止会错过它而欠拟合。", + "verification": "讲义直接解释因果链;措辞使用可能,避免把风险说成必然。", + "pitfalls": ["预剪枝一定提高泛化", "预剪枝只能导致过拟合"] + }, + { + "id": "ai-consistent", "course_id": "artificial_intelligence_intro", "scenario": "concept", + "queries": ["一致启发为什么能让A*像Dijkstra一样工作?请解释重赋权。", "如果h(n)≤c(n,n′)+h(n′),为什么c′=c−h(n)+h(n′)不会是负数?"], + "groups": [{"need": "一致启发与非负重赋权证明", "chunk_ids": ["artificial-intelligence-intro-008:h-第3章-搜索探寻与问题求解:c04"]}], + "answer": "由一致性移项得c′≥0;路径代价相消为g′(n)=g(n)−h(s)+h(n),故f(n)=g′(n)+h(s),排序差常数。在标准最短路搜索条件下对应非负边上的Dijkstra。", + "verification": "逐项代数相消;同一目标比较路径,不把可容性无条件等同于图搜索不重开节点时的最优性。", + "pitfalls": ["一致性允许负的重赋权边", "只要可容就无需考虑CLOSED节点重开"] + }, + { + "id": "org-cache", "course_id": "computer_organization", "scenario": "concept", + "queries": ["Cache为什么能缓解CPU与主存速度不匹配?", "只加一小块高速缓存为什么有用?它利用程序访问的什么特点?"], + "groups": [{"need": "Cache作用与时间空间局部性", "chunk_ids": ["computer-organization-026:s76:c01"]}], + "answer": "Cache位于CPU与主存之间,利用时间局部性和空间局部性,让重复或邻近访问有机会由更快存储满足;效果取决于命中率,不能保证所有访问变快。", + "verification": "讲义给出层次、速度及局部性;命中条件为基本原理推导。", + "pitfalls": ["Cache越小越快所以任意小容量都足够", "所有程序都必然有同样收益"] + }, + { + "id": "web-margin", "course_id": "web_frontend_fundamentals", "scenario": "concept", + "queries": ["CSS只想增加元素下面的外边距,应该改哪个属性?", "不想动上左右间距,只想让一个块和下一个块离远一点,margin还是margin-bottom?"], + "groups": [{"need": "margin各方向属性", "chunk_ids": ["web-frontend-fundamentals-014:s32:c01"]}], + "answer": "用margin-bottom指定下外边距;margin是四方向简写。实际块间距离还可能涉及外边距折叠,不要求在此简单问题展开全部布局规则。", + "verification": "属性表清晰;只核验方向语义,不采纳同一讲义其他页有误的选择器规则。", + "pitfalls": ["用padding-bottom等同于外边距", "margin只影响底部"] + }, + { + "id": "discrete-partition", "course_id": "discrete_mathematics", "scenario": "problem", + "queries": ["A={a,b,c,d},等价关系R={(a,b),(b,a),(c,d),(d,c)}∪I_A,对应什么划分?", "a和b等价,c和d等价,每个元素也与自己等价,为什么不是四个单独的等价类?"], + "groups": [{"need": "等价关系与划分实例", "chunk_ids": ["discrete-mathematics-003:p4:q-discrete-mathematics-003-q20:c01"]}], + "answer": "划分为{{a,b},{c,d}};[a]=[b]={a,b},[c]=[d]={c,d}。", + "verification": "题干与D项可读;逐对检查关系并独立列出等价类。", + "pitfalls": ["四个单元素集合", "把所有四个元素放入同一类"] + }, + { + "id": "electrical-plan", "course_id": "electrical_engineering", "scenario": "review", + "queries": ["电路复习大纲里一阶暂态分析要掌握哪三个量?我想先按它们安排练习。", "复习RC/RL一阶暂态时,初始值、最终值和变化快慢分别对应大纲中的什么?"], + "groups": [{"need": "一阶暂态三要素要求", "chunk_ids": ["electrical-engineering-009:h-电路与电子技术-复习大纲:c01"]}], + "answer": "初始值、稳态值、时间常数;先练换路初始值,再练稳态电路与时间常数,最后组合一阶响应。顺序是教学建议,不是声称大纲指定了唯一顺序。", + "verification": "仅使用该长段中第3项明确列举的三要素;不假定其他年份考核分值或必考题。", + "pitfalls": ["把电压电流电阻当成三要素", "断言这道题今年必考"] + }, + { + "id": "ds-source-error", "course_id": "data_structure", "scenario": "source_correction", + "queries": ["资料说切换到std::sort就确保排序稳定,这句话对吗?", "相同分数的学生必须保留原先先后顺序,笔记建议用std::sort,我能直接照做吗?"], + "groups": [{"need": "待纠正的原始说法", "chunk_ids": ["data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c03"]}], + "answer": "该说法不成立。std::sort不保证等价元素相对顺序;std::stable_sort提供稳定性保证。资料的速度波动稳定与排序算法的稳定性不是一个概念。", + "verification": "读到原文错误陈述后查C++工作草案,stable_sort明确标为Stable,sort没有该保证;错误片段只作纠错对象。", + "external_reference": "https://eel.is/c++draft/alg.sort", + "pitfalls": ["因为有引用所以照抄std::sort稳定", "将耗时稳定当作等键顺序稳定"] + } + ] +} diff --git a/apps/scut-senior/resources/evaluation/reviewed-v2/baseline-bm25f.json b/apps/scut-senior/resources/evaluation/reviewed-v2/baseline-bm25f.json new file mode 100644 index 00000000..33b2eb58 --- /dev/null +++ b/apps/scut-senior/resources/evaluation/reviewed-v2/baseline-bm25f.json @@ -0,0 +1,2983 @@ +{ + "schema_version": "reviewed-retrieval-report-v2", + "corpus_version": "corpus-c1513a68ccd7-b0_2_0-m1200-wworkflow-contract-v1-ooutline-none-v1-ebge-small-zh-v1.5", + "suite_sha256": "7a93284c39ea8d81e0864668f91f208cf98ed125f22e645cf102ba5dbc5cffc5", + "mode": "bm25f", + "min_score": 1.0, + "split": "all", + "validation": { + "queries": 50, + "topics": 25, + "courses": 14, + "evidence_chunks": 27 + }, + "summary": { + "queries": 50, + "known_evidence_coverage_at_5": 0.66, + "known_evidence_coverage_at_20": 0.86, + "all_evidence_groups_at_5": 0.66, + "all_evidence_groups_at_20": 0.86, + "known_positive_mrr": 0.511547 + }, + "interpretation": "Known-positive lower bounds; unjudged candidates require review, never automatic negative labels. No generation or answer-quality score. Timing includes first-load overhead.", + "entries": [ + { + "case_id": "la-diagonalization-1", + "topic_id": "la-diagonalization", + "course_id": "linear_algebra", + "scenario": "concept", + "split": "validation", + "query": "矩阵可对角化的充要条件是什么?为什么特征值互不相同只是充分条件?", + "top_chunk_ids": [ + "linear-algebra-014:p1:q-linear-algebra-014-q6:c01", + "linear-algebra-012:p2:q-linear-algebra-012-q10:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q5:c01", + "linear-algebra-020:p1:q-linear-algebra-020-q3:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q3:c01", + "linear-algebra-014:p1:q-linear-algebra-014-q5:c01", + "linear-algebra-014:p1:q-linear-algebra-014-q2:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q2:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q4:c01", + "linear-algebra-012:p1:q-linear-algebra-012-q6:c01", + "linear-algebra-013:p4:q-linear-algebra-013-q12:c01", + "linear-algebra-018:p2:q-linear-algebra-018-q21:c01", + "linear-algebra-012:p2:q-linear-algebra-012-q11:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q7:c01", + "linear-algebra-022:s2:c05", + "linear-algebra-020:p2:q-linear-algebra-020-q18:c01", + "linear-algebra-014:p3:q-linear-algebra-014-q15:c01", + "linear-algebra-016:p3:q-linear-algebra-016-q15:c01", + "linear-algebra-012:p3:q-linear-algebra-012-q20:c01", + "linear-algebra-014:p2:q-linear-algebra-014-q12:c01" + ], + "duration_ms": 478.993, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "linear-algebra-014:p1:q-linear-algebra-014-q6:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q5:c01", + "linear-algebra-020:p1:q-linear-algebra-020-q3:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q3:c01", + "linear-algebra-014:p1:q-linear-algebra-014-q5:c01", + "linear-algebra-014:p1:q-linear-algebra-014-q2:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q2:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q4:c01", + "linear-algebra-012:p1:q-linear-algebra-012-q6:c01", + "linear-algebra-013:p4:q-linear-algebra-013-q12:c01", + "linear-algebra-018:p2:q-linear-algebra-018-q21:c01", + "linear-algebra-012:p2:q-linear-algebra-012-q11:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q7:c01", + "linear-algebra-022:s2:c05", + "linear-algebra-020:p2:q-linear-algebra-020-q18:c01", + "linear-algebra-014:p3:q-linear-algebra-014-q15:c01", + "linear-algebra-016:p3:q-linear-algebra-016-q15:c01", + "linear-algebra-012:p3:q-linear-algebra-012-q20:c01", + "linear-algebra-014:p2:q-linear-algebra-014-q12:c01" + ] + }, + { + "case_id": "la-diagonalization-2", + "topic_id": "la-diagonalization", + "course_id": "linear_algebra", + "scenario": "concept", + "split": "validation", + "query": "有重根就一定不能化成对角矩阵吗?请用单位矩阵说明。", + "top_chunk_ids": [ + "linear-algebra-012:p3:q-linear-algebra-012-q21:c01", + "linear-algebra-012:p3:q-linear-algebra-012-q22:c01", + "linear-algebra-012:p1:q-linear-algebra-012-q6:c01", + "linear-algebra-014:p1:q-linear-algebra-014-q2:c01", + "linear-algebra-012:p2:q-linear-algebra-012-q10:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q2:c01", + "linear-algebra-014:p1:q-linear-algebra-014-q6:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q5:c01", + "linear-algebra-012:p2:q-linear-algebra-012-q11:c01", + "linear-algebra-014:p2:q-linear-algebra-014-q12:c01", + "linear-algebra-016:p2:q-linear-algebra-016-q12:c01", + "linear-algebra-014:p1:q-linear-algebra-014-q1:c01", + "linear-algebra-013:p4:q-linear-algebra-013-q11:c01", + "linear-algebra-021:p3:q-linear-algebra-021-q14:c01", + "linear-algebra-022:s1:c02", + "linear-algebra-020:p1:q-linear-algebra-020-q3:c01", + "linear-algebra-012:p1:q-linear-algebra-012-q8:c01", + "linear-algebra-019:p3:q-linear-algebra-019-q14:c01", + "linear-algebra-018:p1:q-linear-algebra-018-q3:c01" + ], + "duration_ms": 9.594, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.2, + "unjudged_chunk_ids": [ + "linear-algebra-012:p3:q-linear-algebra-012-q21:c01", + "linear-algebra-012:p3:q-linear-algebra-012-q22:c01", + "linear-algebra-012:p1:q-linear-algebra-012-q6:c01", + "linear-algebra-014:p1:q-linear-algebra-014-q2:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q2:c01", + "linear-algebra-014:p1:q-linear-algebra-014-q6:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q5:c01", + "linear-algebra-012:p2:q-linear-algebra-012-q11:c01", + "linear-algebra-014:p2:q-linear-algebra-014-q12:c01", + "linear-algebra-016:p2:q-linear-algebra-016-q12:c01", + "linear-algebra-014:p1:q-linear-algebra-014-q1:c01", + "linear-algebra-013:p4:q-linear-algebra-013-q11:c01", + "linear-algebra-021:p3:q-linear-algebra-021-q14:c01", + "linear-algebra-022:s1:c02", + "linear-algebra-020:p1:q-linear-algebra-020-q3:c01", + "linear-algebra-012:p1:q-linear-algebra-012-q8:c01", + "linear-algebra-019:p3:q-linear-algebra-019-q14:c01", + "linear-algebra-018:p1:q-linear-algebra-018-q3:c01" + ] + }, + { + "case_id": "prob-t-symmetry-1", + "topic_id": "prob-t-symmetry", + "course_id": "probability_theory", + "scenario": "problem", + "split": "validation", + "query": "T服从t分布,若P(T>λ)=α,P(T<−λ)是多少?", + "top_chunk_ids": [ + "probability-theory-010:q-probability-theory-010-q1:c01", + "probability-theory-018:p1:q-probability-theory-018-q7:c01", + "probability-theory-030:q-probability-theory-030-q2:c01", + "probability-theory-020:p3:c01", + "probability-theory-022:p4:q-probability-theory-022-q15:c01", + "probability-theory-031:q-probability-theory-031-q2:c01", + "probability-theory-035:q-probability-theory-035-q1:c02", + "probability-theory-017:p1:c01", + "probability-theory-012:q-probability-theory-012-q6:c01", + "probability-theory-022:p4:q-probability-theory-022-q14:c01", + "probability-theory-011:q-probability-theory-011-q4:c01", + "probability-theory-015:q-probability-theory-015-q5:c01", + "probability-theory-014:p1:q-probability-theory-014-q3:c01", + "probability-theory-034:q-probability-theory-034-q2:c01", + "probability-theory-023:p4:q-probability-theory-023-q12:c01", + "probability-theory-021:p2:c01", + "probability-theory-010:q-probability-theory-010-q13:c01", + "probability-theory-033:h-2016春季a卷答案:c07", + "probability-theory-015:q-probability-theory-015-q1:c01", + "probability-theory-035:q-probability-theory-035-q1:c01" + ], + "duration_ms": 81.052, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "probability-theory-018:p1:q-probability-theory-018-q7:c01", + "probability-theory-030:q-probability-theory-030-q2:c01", + "probability-theory-020:p3:c01", + "probability-theory-022:p4:q-probability-theory-022-q15:c01", + "probability-theory-031:q-probability-theory-031-q2:c01", + "probability-theory-035:q-probability-theory-035-q1:c02", + "probability-theory-017:p1:c01", + "probability-theory-012:q-probability-theory-012-q6:c01", + "probability-theory-022:p4:q-probability-theory-022-q14:c01", + "probability-theory-011:q-probability-theory-011-q4:c01", + "probability-theory-015:q-probability-theory-015-q5:c01", + "probability-theory-014:p1:q-probability-theory-014-q3:c01", + "probability-theory-034:q-probability-theory-034-q2:c01", + "probability-theory-023:p4:q-probability-theory-023-q12:c01", + "probability-theory-021:p2:c01", + "probability-theory-010:q-probability-theory-010-q13:c01", + "probability-theory-033:h-2016春季a卷答案:c07", + "probability-theory-015:q-probability-theory-015-q1:c01", + "probability-theory-035:q-probability-theory-035-q1:c01" + ] + }, + { + "case_id": "prob-t-symmetry-2", + "topic_id": "prob-t-symmetry", + "course_id": "probability_theory", + "scenario": "problem", + "split": "validation", + "query": "t分布右边尾巴的面积是α,关于0对称的左边尾巴也是α,还是α/2?", + "top_chunk_ids": [ + "probability-theory-014:p3:q-probability-theory-014-q22:c01", + "probability-theory-023:p2:q-probability-theory-023-q5:c01", + "probability-theory-036:q-probability-theory-036-q4:c04", + "probability-theory-025:p3:q-probability-theory-025-q12:c01", + "probability-theory-018:p4:q-probability-theory-018-q29:c01", + "probability-theory-012:q-probability-theory-012-q11:c01", + "probability-theory-036:q-probability-theory-036-q6:c01", + "probability-theory-018:p1:q-probability-theory-018-q7:c01", + "probability-theory-033:q-probability-theory-033-q3:c01", + "probability-theory-024:p2:c01", + "probability-theory-017:p1:c01", + "probability-theory-010:q-probability-theory-010-q1:c01", + "probability-theory-018:p3:q-probability-theory-018-q20:c01", + "probability-theory-018:p1:q-probability-theory-018-q4:c01", + "probability-theory-018:p3:q-probability-theory-018-q23:c01", + "probability-theory-023:p5:q-probability-theory-023-q19:c01", + "probability-theory-023:p1:q-probability-theory-023-q3:c01", + "probability-theory-014:p1:c01", + "probability-theory-022:p5:q-probability-theory-022-q21:c01", + "probability-theory-023:p6:q-probability-theory-023-q19:c01" + ], + "duration_ms": 22.118, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.08333333333333333, + "unjudged_chunk_ids": [ + "probability-theory-014:p3:q-probability-theory-014-q22:c01", + "probability-theory-023:p2:q-probability-theory-023-q5:c01", + "probability-theory-036:q-probability-theory-036-q4:c04", + "probability-theory-025:p3:q-probability-theory-025-q12:c01", + "probability-theory-018:p4:q-probability-theory-018-q29:c01", + "probability-theory-012:q-probability-theory-012-q11:c01", + "probability-theory-036:q-probability-theory-036-q6:c01", + "probability-theory-018:p1:q-probability-theory-018-q7:c01", + "probability-theory-033:q-probability-theory-033-q3:c01", + "probability-theory-024:p2:c01", + "probability-theory-017:p1:c01", + "probability-theory-018:p3:q-probability-theory-018-q20:c01", + "probability-theory-018:p1:q-probability-theory-018-q4:c01", + "probability-theory-018:p3:q-probability-theory-018-q23:c01", + "probability-theory-023:p5:q-probability-theory-023-q19:c01", + "probability-theory-023:p1:q-probability-theory-023-q3:c01", + "probability-theory-014:p1:c01", + "probability-theory-022:p5:q-probability-theory-022-q21:c01", + "probability-theory-023:p6:q-probability-theory-023-q19:c01" + ] + }, + { + "case_id": "prob-unbiased-1", + "topic_id": "prob-unbiased", + "course_id": "probability_theory", + "scenario": "problem", + "split": "validation", + "query": "独立同分布样本方差σ²>0,用权重(1/2,1/3,1/6)、(1/2,1/4,1/4)、(1/3,1/3,1/3)、(1/5,2/5,2/5)估计均值,哪个方差最小?", + "top_chunk_ids": [ + "probability-theory-020:p2:c01", + "probability-theory-022:p3:q-probability-theory-022-q10:c01", + "probability-theory-018:p1:q-probability-theory-018-q5:c01", + "probability-theory-022:p2:q-probability-theory-022-q10:c01", + "probability-theory-027:p2:q-probability-theory-027-q7:c01", + "probability-theory-022:p3:q-probability-theory-022-q11:c01", + "probability-theory-022:p2:q-probability-theory-022-q7:c01", + "probability-theory-026:p1:c01", + "probability-theory-025:p4:q-probability-theory-025-q13:c01", + "probability-theory-022:p3:q-probability-theory-022-q12:c01", + "probability-theory-017:p1:c01", + "probability-theory-035:q-probability-theory-035-q1:c01", + "probability-theory-033:h-2016春季a卷答案:c05", + "probability-theory-024:p2:c01", + "probability-theory-029:h-2013春-a无答案:c01", + "probability-theory-031:q-probability-theory-031-q6:c01", + "probability-theory-020:p1:c01", + "probability-theory-028:h-2013春-a:c01", + "probability-theory-032:h-2016春季a卷无答案:c02", + "probability-theory-027:p1:q-probability-theory-027-q5:c01" + ], + "duration_ms": 24.08, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "probability-theory-020:p2:c01", + "probability-theory-022:p3:q-probability-theory-022-q10:c01", + "probability-theory-018:p1:q-probability-theory-018-q5:c01", + "probability-theory-022:p2:q-probability-theory-022-q10:c01", + "probability-theory-027:p2:q-probability-theory-027-q7:c01", + "probability-theory-022:p3:q-probability-theory-022-q11:c01", + "probability-theory-022:p2:q-probability-theory-022-q7:c01", + "probability-theory-026:p1:c01", + "probability-theory-025:p4:q-probability-theory-025-q13:c01", + "probability-theory-022:p3:q-probability-theory-022-q12:c01", + "probability-theory-017:p1:c01", + "probability-theory-035:q-probability-theory-035-q1:c01", + "probability-theory-033:h-2016春季a卷答案:c05", + "probability-theory-024:p2:c01", + "probability-theory-029:h-2013春-a无答案:c01", + "probability-theory-031:q-probability-theory-031-q6:c01", + "probability-theory-020:p1:c01", + "probability-theory-028:h-2013春-a:c01", + "probability-theory-032:h-2016春季a卷无答案:c02", + "probability-theory-027:p1:q-probability-theory-027-q5:c01" + ] + }, + { + "case_id": "prob-unbiased-2", + "topic_id": "prob-unbiased", + "course_id": "probability_theory", + "scenario": "problem", + "split": "validation", + "query": "四种加权平均都无偏时,为什么平均分配三个样本的权重更有效?假定样本独立同分布且方差为正。", + "top_chunk_ids": [ + "probability-theory-022:p3:q-probability-theory-022-q10:c01", + "probability-theory-022:p2:q-probability-theory-022-q10:c01", + "probability-theory-018:p1:q-probability-theory-018-q5:c01", + "probability-theory-020:p2:c01", + "probability-theory-022:p2:q-probability-theory-022-q7:c01", + "probability-theory-022:p3:q-probability-theory-022-q12:c01", + "probability-theory-035:q-probability-theory-035-q1:c01", + "probability-theory-027:p2:q-probability-theory-027-q7:c01", + "probability-theory-025:p4:q-probability-theory-025-q13:c01", + "probability-theory-017:p1:c01", + "probability-theory-031:q-probability-theory-031-q6:c01", + "probability-theory-026:p1:c01", + "probability-theory-018:p1:q-probability-theory-018-q4:c01", + "probability-theory-027:p5:q-probability-theory-027-q16:c01", + "probability-theory-020:p1:c01", + "probability-theory-025:p5:q-probability-theory-025-q18:c01", + "probability-theory-027:p1:q-probability-theory-027-q5:c01", + "probability-theory-010:q-probability-theory-010-q4:c03", + "probability-theory-024:p2:c01", + "probability-theory-026:p3:c01" + ], + "duration_ms": 21.045, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "probability-theory-022:p3:q-probability-theory-022-q10:c01", + "probability-theory-022:p2:q-probability-theory-022-q10:c01", + "probability-theory-018:p1:q-probability-theory-018-q5:c01", + "probability-theory-020:p2:c01", + "probability-theory-022:p2:q-probability-theory-022-q7:c01", + "probability-theory-022:p3:q-probability-theory-022-q12:c01", + "probability-theory-035:q-probability-theory-035-q1:c01", + "probability-theory-027:p2:q-probability-theory-027-q7:c01", + "probability-theory-025:p4:q-probability-theory-025-q13:c01", + "probability-theory-017:p1:c01", + "probability-theory-031:q-probability-theory-031-q6:c01", + "probability-theory-026:p1:c01", + "probability-theory-018:p1:q-probability-theory-018-q4:c01", + "probability-theory-027:p5:q-probability-theory-027-q16:c01", + "probability-theory-020:p1:c01", + "probability-theory-025:p5:q-probability-theory-025-q18:c01", + "probability-theory-027:p1:q-probability-theory-027-q5:c01", + "probability-theory-010:q-probability-theory-010-q4:c03", + "probability-theory-024:p2:c01", + "probability-theory-026:p3:c01" + ] + }, + { + "case_id": "algo-knapsack-1", + "topic_id": "algo-knapsack", + "course_id": "algorithm_design_and_analysis", + "scenario": "problem", + "split": "validation", + "query": "2023-2024 B卷容量22、体积3/5/7/8/9、价值4/6/7/9/10的0-1背包题怎么做?", + "top_chunk_ids": [ + "algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q13:c01", + "algorithm-design-and-analysis-028:p6:c01", + "algorithm-design-and-analysis-023:p4:c01", + "algorithm-design-and-analysis-028:p4:c01", + "algorithm-design-and-analysis-028:p3:c01", + "algorithm-design-and-analysis-028:p5:c01", + "algorithm-design-and-analysis-023:p8:c01", + "algorithm-design-and-analysis-001:p2:q-algorithm-design-and-analysis-001-q11:c01", + "algorithm-design-and-analysis-027:p2:c01", + "algorithm-design-and-analysis-023:p7:c01", + "algorithm-design-and-analysis-024:p2:c01", + "algorithm-design-and-analysis-028:p7:c01", + "algorithm-design-and-analysis-005:p17:c01", + "algorithm-design-and-analysis-024:p3:c01", + "algorithm-design-and-analysis-027:p1:c01", + "algorithm-design-and-analysis-023:p6:c01", + "algorithm-design-and-analysis-024:p4:c01", + "algorithm-design-and-analysis-027:p9:c01", + "algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q12:c01", + "algorithm-design-and-analysis-024:p5:c01" + ], + "duration_ms": 85.176, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "algorithm-design-and-analysis-028:p6:c01", + "algorithm-design-and-analysis-023:p4:c01", + "algorithm-design-and-analysis-028:p4:c01", + "algorithm-design-and-analysis-028:p3:c01", + "algorithm-design-and-analysis-028:p5:c01", + "algorithm-design-and-analysis-023:p8:c01", + "algorithm-design-and-analysis-001:p2:q-algorithm-design-and-analysis-001-q11:c01", + "algorithm-design-and-analysis-027:p2:c01", + "algorithm-design-and-analysis-023:p7:c01", + "algorithm-design-and-analysis-024:p2:c01", + "algorithm-design-and-analysis-028:p7:c01", + "algorithm-design-and-analysis-005:p17:c01", + "algorithm-design-and-analysis-024:p3:c01", + "algorithm-design-and-analysis-027:p1:c01", + "algorithm-design-and-analysis-023:p6:c01", + "algorithm-design-and-analysis-024:p4:c01", + "algorithm-design-and-analysis-027:p9:c01", + "algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q12:c01", + "algorithm-design-and-analysis-024:p5:c01" + ] + }, + { + "case_id": "algo-knapsack-2", + "topic_id": "algo-knapsack", + "course_id": "algorithm_design_and_analysis", + "scenario": "problem", + "split": "validation", + "query": "背包最多装22,每件只能拿一次,五件物品重量3、5、7、8、9,价值4、6、7、9、10。最大价值和选择是什么?", + "top_chunk_ids": [ + "algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q13:c01", + "algorithm-design-and-analysis-023:p8:c01", + "algorithm-design-and-analysis-023:p7:c01", + "algorithm-design-and-analysis-023:p4:c01", + "algorithm-design-and-analysis-023:p6:c01", + "algorithm-design-and-analysis-028:p6:c01", + "algorithm-design-and-analysis-005:p17:c01", + "algorithm-design-and-analysis-027:p2:c01", + "algorithm-design-and-analysis-017:p2:c01", + "algorithm-design-and-analysis-024:p1:c01", + "algorithm-design-and-analysis-024:p2:c01", + "algorithm-design-and-analysis-010:p5:c01", + "algorithm-design-and-analysis-027:p1:c01", + "algorithm-design-and-analysis-024:p3:c01", + "algorithm-design-and-analysis-028:p4:c01", + "algorithm-design-and-analysis-024:p4:c01", + "algorithm-design-and-analysis-027:p9:c01", + "algorithm-design-and-analysis-024:p5:c01", + "algorithm-design-and-analysis-023:p5:c01", + "algorithm-design-and-analysis-027:p6:c01" + ], + "duration_ms": 24.846, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "algorithm-design-and-analysis-023:p8:c01", + "algorithm-design-and-analysis-023:p7:c01", + "algorithm-design-and-analysis-023:p4:c01", + "algorithm-design-and-analysis-023:p6:c01", + "algorithm-design-and-analysis-028:p6:c01", + "algorithm-design-and-analysis-005:p17:c01", + "algorithm-design-and-analysis-027:p2:c01", + "algorithm-design-and-analysis-017:p2:c01", + "algorithm-design-and-analysis-024:p1:c01", + "algorithm-design-and-analysis-024:p2:c01", + "algorithm-design-and-analysis-010:p5:c01", + "algorithm-design-and-analysis-027:p1:c01", + "algorithm-design-and-analysis-024:p3:c01", + "algorithm-design-and-analysis-028:p4:c01", + "algorithm-design-and-analysis-024:p4:c01", + "algorithm-design-and-analysis-027:p9:c01", + "algorithm-design-and-analysis-024:p5:c01", + "algorithm-design-and-analysis-023:p5:c01", + "algorithm-design-and-analysis-027:p6:c01" + ] + }, + { + "case_id": "ds-inorder-1", + "topic_id": "ds-inorder", + "course_id": "data_structure", + "scenario": "concept", + "split": "dev", + "query": "不用递归,怎样用栈完成二叉树中序遍历?", + "top_chunk_ids": [ + "data-structure-023:h-作业及分析:c01", + "data-structure-022:h-2025-a-辅修班卷子:c03", + "data-structure-016:p1:c01", + "data-structure-022:h-2025-a-辅修班卷子:c04", + "data-structure-022:h-2025-a-辅修班卷子:c02", + "data-structure-024:p6:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02" + ], + "duration_ms": 52.86, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "data-structure-022:h-2025-a-辅修班卷子:c03", + "data-structure-016:p1:c01", + "data-structure-022:h-2025-a-辅修班卷子:c04", + "data-structure-022:h-2025-a-辅修班卷子:c02", + "data-structure-024:p6:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02" + ] + }, + { + "case_id": "ds-inorder-2", + "topic_id": "ds-inorder", + "course_id": "data_structure", + "scenario": "concept", + "split": "dev", + "query": "遍历二叉树时一路压左孩子,弹出后什么时候访问右子树?", + "top_chunk_ids": [ + "data-structure-022:h-2025-a-辅修班卷子:c02", + "data-structure-022:h-2025-a-辅修班卷子:c03", + "data-structure-023:h-作业及分析:c01", + "data-structure-022:h-2025-a-辅修班卷子:c04", + "data-structure-016:p1:c01", + "data-structure-024:p4:c01", + "data-structure-024:p3:c01", + "data-structure-024:p5:c01" + ], + "duration_ms": 10.631, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "data-structure-022:h-2025-a-辅修班卷子:c02", + "data-structure-022:h-2025-a-辅修班卷子:c03", + "data-structure-022:h-2025-a-辅修班卷子:c04", + "data-structure-016:p1:c01", + "data-structure-024:p4:c01", + "data-structure-024:p3:c01", + "data-structure-024:p5:c01" + ] + }, + { + "case_id": "db-projection-1", + "topic_id": "db-projection", + "course_id": "database", + "scenario": "concept", + "split": "dev", + "query": "关系代数中选择和投影有什么区别?哪一个是按列切分?", + "top_chunk_ids": [ + "database-002:p2:q-database-002-q13:c01", + "database-003:p3:q-database-003-q29:c01", + "database-005:s15:c01", + "database-005:s13:c01", + "database-001:q-database-001-q13:c01", + "database-002:p3:q-database-002-q26:c01", + "database-003:p2:q-database-003-q20:c01", + "database-004:p2:q-database-004-q19:c01", + "database-005:s4:c01", + "database-003:p1:q-database-003-q10:c01", + "database-002:p7:q-database-002-q57:c01", + "database-004:p5:q-database-004-q52:c01", + "database-005:s16:c01", + "database-005:s39:c01", + "database-003:p5:q-database-003-q48:c01", + "database-005:s41:c01", + "database-005:s28:c01", + "database-005:s40:c01", + "database-001:q-database-001-q16:c01", + "database-004:p3:q-database-004-q22:c01" + ], + "duration_ms": 71.457, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "database-002:p2:q-database-002-q13:c01", + "database-003:p3:q-database-003-q29:c01", + "database-005:s13:c01", + "database-001:q-database-001-q13:c01", + "database-002:p3:q-database-002-q26:c01", + "database-003:p2:q-database-003-q20:c01", + "database-004:p2:q-database-004-q19:c01", + "database-005:s4:c01", + "database-003:p1:q-database-003-q10:c01", + "database-002:p7:q-database-002-q57:c01", + "database-004:p5:q-database-004-q52:c01", + "database-005:s16:c01", + "database-005:s39:c01", + "database-003:p5:q-database-003-q48:c01", + "database-005:s41:c01", + "database-005:s28:c01", + "database-005:s40:c01", + "database-001:q-database-001-q16:c01", + "database-004:p3:q-database-004-q22:c01" + ] + }, + { + "case_id": "db-projection-2", + "topic_id": "db-projection", + "course_id": "database", + "scenario": "concept", + "split": "dev", + "query": "只保留学生表的学号和姓名,应该用选择还是投影?", + "top_chunk_ids": [ + "database-001:q-database-001-q2:c01", + "database-004:p1:q-database-004-q6:c01", + "database-003:p5:q-database-003-q54:c01", + "database-001:q-database-001-q41:c01", + "database-005:s20:c01", + "database-003:p5:q-database-003-q51:c01", + "database-001:q-database-001-q24:c01", + "database-002:p5:q-database-002-q41:c01", + "database-003:p4:q-database-003-q41:c01", + "database-004:p4:q-database-004-q31:c01", + "database-004:p5:q-database-004-q53:c01", + "database-004:p5:q-database-004-q48:c01", + "database-005:s16:c01", + "database-004:p5:q-database-004-q52:c01", + "database-001:q-database-001-q23:c01", + "database-003:p4:q-database-003-q45:c01", + "database-002:p4:q-database-002-q37:c01", + "database-004:p3:q-database-004-q29:c01", + "database-001:q-database-001-q37:c01", + "database-003:p5:q-database-003-q49:c01" + ], + "duration_ms": 12.687, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "database-001:q-database-001-q2:c01", + "database-004:p1:q-database-004-q6:c01", + "database-003:p5:q-database-003-q54:c01", + "database-001:q-database-001-q41:c01", + "database-005:s20:c01", + "database-003:p5:q-database-003-q51:c01", + "database-001:q-database-001-q24:c01", + "database-002:p5:q-database-002-q41:c01", + "database-003:p4:q-database-003-q41:c01", + "database-004:p4:q-database-004-q31:c01", + "database-004:p5:q-database-004-q53:c01", + "database-004:p5:q-database-004-q48:c01", + "database-005:s16:c01", + "database-004:p5:q-database-004-q52:c01", + "database-001:q-database-001-q23:c01", + "database-003:p4:q-database-003-q45:c01", + "database-002:p4:q-database-002-q37:c01", + "database-004:p3:q-database-004-q29:c01", + "database-001:q-database-001-q37:c01", + "database-003:p5:q-database-003-q49:c01" + ] + }, + { + "case_id": "db-having-1", + "topic_id": "db-having", + "course_id": "database", + "scenario": "concept", + "split": "dev", + "query": "SQL中HAVING筛选的是行还是分组?", + "top_chunk_ids": [ + "database-005:s19:c01", + "database-001:q-database-001-q21:c01", + "database-003:p4:q-database-003-q39:c01", + "database-004:p3:q-database-004-q27:c01", + "database-001:q-database-001-q14:c01", + "database-003:p3:q-database-003-q35:c01", + "database-004:p2:q-database-004-q20:c01", + "database-002:p3:q-database-002-q24:c01", + "database-002:p2:q-database-002-q13:c01", + "database-003:p3:q-database-003-q29:c01", + "database-001:q-database-001-q12:c01", + "database-004:p2:q-database-004-q18:c01", + "database-003:p3:q-database-003-q23:c01", + "database-005:s41:c01", + "database-002:p2:q-database-002-q21:c01", + "database-005:s15:c01", + "database-005:s24:c01", + "database-005:s27:c01", + "database-005:s18:c01", + "database-005:s13:c01" + ], + "duration_ms": 11.412, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "database-001:q-database-001-q21:c01", + "database-003:p4:q-database-003-q39:c01", + "database-001:q-database-001-q14:c01", + "database-003:p3:q-database-003-q35:c01", + "database-004:p2:q-database-004-q20:c01", + "database-002:p3:q-database-002-q24:c01", + "database-002:p2:q-database-002-q13:c01", + "database-003:p3:q-database-003-q29:c01", + "database-001:q-database-001-q12:c01", + "database-004:p2:q-database-004-q18:c01", + "database-003:p3:q-database-003-q23:c01", + "database-005:s41:c01", + "database-002:p2:q-database-002-q21:c01", + "database-005:s15:c01", + "database-005:s24:c01", + "database-005:s27:c01", + "database-005:s18:c01", + "database-005:s13:c01" + ] + }, + { + "case_id": "db-having-2", + "topic_id": "db-having", + "course_id": "database", + "scenario": "concept", + "split": "dev", + "query": "按学生分组算平均成绩后,只留下均分至少85的组,该在哪里写条件?", + "top_chunk_ids": [ + "database-001:q-database-001-q2:c01", + "database-004:p1:q-database-004-q6:c01", + "database-004:p5:q-database-004-q55:c01", + "database-003:p5:q-database-003-q54:c01", + "database-005:s20:c01", + "database-001:q-database-001-q43:c01", + "database-001:q-database-001-q21:c01", + "database-003:p4:q-database-003-q39:c01", + "database-004:p3:q-database-004-q27:c01", + "database-004:p5:q-database-004-q52:c01", + "database-002:p3:q-database-002-q24:c01", + "database-001:q-database-001-q41:c01", + "database-003:p5:q-database-003-q50:c01", + "database-005:s19:c01", + "database-005:s16:c01", + "database-004:p5:q-database-004-q48:c01", + "database-003:p5:q-database-003-q48:c01", + "database-005:s40:c01", + "database-001:q-database-001-q37:c01", + "database-005:s54:c01" + ], + "duration_ms": 12.125, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "database-004:p1:q-database-004-q6:c01", + "database-004:p5:q-database-004-q55:c01", + "database-003:p5:q-database-003-q54:c01", + "database-005:s20:c01", + "database-001:q-database-001-q43:c01", + "database-001:q-database-001-q21:c01", + "database-003:p4:q-database-003-q39:c01", + "database-004:p5:q-database-004-q52:c01", + "database-002:p3:q-database-002-q24:c01", + "database-001:q-database-001-q41:c01", + "database-003:p5:q-database-003-q50:c01", + "database-005:s16:c01", + "database-004:p5:q-database-004-q48:c01", + "database-003:p5:q-database-003-q48:c01", + "database-005:s40:c01", + "database-001:q-database-001-q37:c01", + "database-005:s54:c01" + ] + }, + { + "case_id": "db-null-1", + "topic_id": "db-null", + "course_id": "database", + "scenario": "mistake", + "split": "dev", + "query": "我写WHERE AGE = NULL查缺失年龄,为什么不对?", + "top_chunk_ids": [ + "database-003:p6:q-database-003-q65:c01", + "database-001:q-database-001-q14:c01", + "database-003:p3:q-database-003-q35:c01", + "database-004:p2:q-database-004-q20:c01", + "database-005:s19:c01", + "database-002:p4:q-database-002-q38:c01", + "database-001:q-database-001-q24:c01", + "database-002:p5:q-database-002-q41:c01", + "database-003:p4:q-database-003-q41:c01", + "database-004:p4:q-database-004-q31:c01", + "database-002:p2:q-database-002-q13:c01", + "database-003:p3:q-database-003-q29:c01", + "database-002:p3:q-database-002-q24:c01", + "database-001:q-database-001-q25:c01", + "database-003:p4:q-database-003-q43:c01", + "database-004:p4:q-database-004-q32:c01", + "database-005:s34:c01", + "database-005:s20:c01", + "database-004:p1:q-database-004-q9:c01", + "database-001:q-database-001-q4:c01" + ], + "duration_ms": 11.003, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.2, + "unjudged_chunk_ids": [ + "database-003:p6:q-database-003-q65:c01", + "database-001:q-database-001-q14:c01", + "database-003:p3:q-database-003-q35:c01", + "database-004:p2:q-database-004-q20:c01", + "database-002:p4:q-database-002-q38:c01", + "database-001:q-database-001-q24:c01", + "database-002:p5:q-database-002-q41:c01", + "database-003:p4:q-database-003-q41:c01", + "database-004:p4:q-database-004-q31:c01", + "database-002:p2:q-database-002-q13:c01", + "database-003:p3:q-database-003-q29:c01", + "database-002:p3:q-database-002-q24:c01", + "database-001:q-database-001-q25:c01", + "database-003:p4:q-database-003-q43:c01", + "database-004:p4:q-database-004-q32:c01", + "database-005:s34:c01", + "database-005:s20:c01", + "database-004:p1:q-database-004-q9:c01", + "database-001:q-database-001-q4:c01" + ] + }, + { + "case_id": "db-null-2", + "topic_id": "db-null", + "course_id": "database", + "scenario": "mistake", + "split": "dev", + "query": "筛出没有填写年龄的学生,应该写等于NULL还是IS NULL?", + "top_chunk_ids": [ + "database-001:q-database-001-q24:c01", + "database-002:p5:q-database-002-q41:c01", + "database-003:p4:q-database-003-q41:c01", + "database-004:p4:q-database-004-q31:c01", + "database-001:q-database-001-q14:c01", + "database-003:p3:q-database-003-q35:c01", + "database-004:p2:q-database-004-q20:c01", + "database-003:p4:q-database-003-q45:c01", + "database-002:p4:q-database-002-q37:c01", + "database-004:p3:q-database-004-q29:c01", + "database-001:q-database-001-q2:c01", + "database-004:p1:q-database-004-q6:c01", + "database-003:p5:q-database-003-q52:c01", + "database-001:q-database-001-q42:c01", + "database-004:p5:q-database-004-q54:c01", + "database-003:p5:q-database-003-q49:c01", + "database-004:p5:q-database-004-q55:c01", + "database-005:s19:c01", + "database-003:p5:q-database-003-q53:c01", + "database-003:p5:q-database-003-q50:c01" + ], + "duration_ms": 12.66, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.05555555555555555, + "unjudged_chunk_ids": [ + "database-001:q-database-001-q24:c01", + "database-002:p5:q-database-002-q41:c01", + "database-003:p4:q-database-003-q41:c01", + "database-004:p4:q-database-004-q31:c01", + "database-001:q-database-001-q14:c01", + "database-003:p3:q-database-003-q35:c01", + "database-004:p2:q-database-004-q20:c01", + "database-003:p4:q-database-003-q45:c01", + "database-002:p4:q-database-002-q37:c01", + "database-004:p3:q-database-004-q29:c01", + "database-001:q-database-001-q2:c01", + "database-004:p1:q-database-004-q6:c01", + "database-003:p5:q-database-003-q52:c01", + "database-001:q-database-001-q42:c01", + "database-004:p5:q-database-004-q54:c01", + "database-003:p5:q-database-003-q49:c01", + "database-004:p5:q-database-004-q55:c01", + "database-003:p5:q-database-003-q53:c01", + "database-003:p5:q-database-003-q50:c01" + ] + }, + { + "case_id": "os-states-1", + "topic_id": "os-states", + "course_id": "operating_systems", + "scenario": "concept", + "split": "validation", + "query": "进程就绪和阻塞有什么区别?I/O完成后会直接运行吗?", + "top_chunk_ids": [ + "operating-systems-043:s24:c01", + "operating-systems-036:q-operating-systems-036-q22:c01", + "operating-systems-002:q-operating-systems-002-q51:c01", + "operating-systems-038:s28:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-91-题-dma-访问流程~3-参考答案与解析:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-90-题-i-o-阻塞与非阻塞~1-知识点:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-91-题-dma-访问流程~1-知识点:c01", + "operating-systems-002:q-operating-systems-002-q43:c01", + "operating-systems-001:h-第-3-题-进程状态~1-知识点:c01", + "operating-systems-028:h-os复习指导:c03", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-90-题-i-o-阻塞与非阻塞~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-90-题-i-o-阻塞与非阻塞~3-参考答案与解析:c01", + "operating-systems-038:s33:c01", + "operating-systems-001:h-第-3-题-进程状态~1-知识点~3-参考答案与解析:c01", + "operating-systems-037:h-上古osq-a:c17", + "operating-systems-037:h-上古osq-a:c03", + "operating-systems-034:q-operating-systems-034-q30:c01", + "operating-systems-029:p2:c01", + "operating-systems-038:s98:c01", + "operating-systems-001:h-第-7-题-中断-interrupt~1-知识点:c01" + ], + "duration_ms": 350.76, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.1, + "unjudged_chunk_ids": [ + "operating-systems-043:s24:c01", + "operating-systems-036:q-operating-systems-036-q22:c01", + "operating-systems-002:q-operating-systems-002-q51:c01", + "operating-systems-038:s28:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-91-题-dma-访问流程~3-参考答案与解析:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-90-题-i-o-阻塞与非阻塞~1-知识点:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-91-题-dma-访问流程~1-知识点:c01", + "operating-systems-002:q-operating-systems-002-q43:c01", + "operating-systems-001:h-第-3-题-进程状态~1-知识点:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-90-题-i-o-阻塞与非阻塞~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-90-题-i-o-阻塞与非阻塞~3-参考答案与解析:c01", + "operating-systems-038:s33:c01", + "operating-systems-001:h-第-3-题-进程状态~1-知识点~3-参考答案与解析:c01", + "operating-systems-037:h-上古osq-a:c17", + "operating-systems-037:h-上古osq-a:c03", + "operating-systems-034:q-operating-systems-034-q30:c01", + "operating-systems-029:p2:c01", + "operating-systems-038:s98:c01", + "operating-systems-001:h-第-7-题-中断-interrupt~1-知识点:c01" + ] + }, + { + "case_id": "os-states-2", + "topic_id": "os-states", + "course_id": "operating_systems", + "scenario": "concept", + "split": "validation", + "query": "一个进程只是没拿到CPU,另一个在等磁盘读完,它们是同一种状态吗?", + "top_chunk_ids": [ + "operating-systems-038:s59:c01", + "operating-systems-042:s4:c01", + "operating-systems-038:s101:c01", + "operating-systems-042:s42:c01", + "operating-systems-001:h-第-5-题-上下文切换~1-知识点:c01", + "operating-systems-044:s68:c01", + "operating-systems-003:p7:q-operating-systems-003-q59:c01", + "operating-systems-038:s62:c01", + "operating-systems-038:s34:c01", + "operating-systems-038:s58:c01", + "operating-systems-038:s37:c01", + "operating-systems-037:h-上古osq-a:c16", + "operating-systems-038:s107:c01", + "operating-systems-038:s50:c01", + "operating-systems-038:s33:c01", + "operating-systems-033:p1:c01", + "operating-systems-038:s23:c01", + "operating-systems-038:s46:c01", + "operating-systems-028:h-os复习指导:c03", + "operating-systems-036:q-operating-systems-036-q22:c01" + ], + "duration_ms": 56.7, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.05263157894736842, + "unjudged_chunk_ids": [ + "operating-systems-038:s59:c01", + "operating-systems-042:s4:c01", + "operating-systems-038:s101:c01", + "operating-systems-042:s42:c01", + "operating-systems-001:h-第-5-题-上下文切换~1-知识点:c01", + "operating-systems-044:s68:c01", + "operating-systems-003:p7:q-operating-systems-003-q59:c01", + "operating-systems-038:s62:c01", + "operating-systems-038:s34:c01", + "operating-systems-038:s58:c01", + "operating-systems-038:s37:c01", + "operating-systems-037:h-上古osq-a:c16", + "operating-systems-038:s107:c01", + "operating-systems-038:s50:c01", + "operating-systems-038:s33:c01", + "operating-systems-033:p1:c01", + "operating-systems-038:s23:c01", + "operating-systems-038:s46:c01", + "operating-systems-036:q-operating-systems-036-q22:c01" + ] + }, + { + "case_id": "os-producer-1", + "topic_id": "os-producer", + "course_id": "operating_systems", + "scenario": "mistake", + "split": "validation", + "query": "有界缓冲区生产者能先P(mutex)再P(empty)吗?", + "top_chunk_ids": [ + "operating-systems-002:q-operating-systems-002-q28:c01", + "operating-systems-029:p3:c02", + "operating-systems-002:q-operating-systems-002-q25:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~3-参考答案与解析:c01", + "operating-systems-002:q-operating-systems-002-q24:c01", + "operating-systems-002:q-operating-systems-002-q27:c01", + "operating-systems-029:p4:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-59-题-同步与互斥~3-参考答案与解析:c01", + "operating-systems-038:s56:c01", + "operating-systems-002:q-operating-systems-002-q20:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-59-题-同步与互斥~2-测试题型:c01", + "operating-systems-003:p3:q-operating-systems-003-q19:c01", + "operating-systems-008:p5:c01", + "operating-systems-002:q-operating-systems-002-q21:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-21-题-管程-monitor-的定义与作用~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~1-知识点:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~2-测试题型:c01", + "operating-systems-002:q-operating-systems-002-q22:c01", + "operating-systems-002:q-operating-systems-002-q1:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~3-参考答案与解析:c02" + ], + "duration_ms": 44.663, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.25, + "unjudged_chunk_ids": [ + "operating-systems-002:q-operating-systems-002-q28:c01", + "operating-systems-029:p3:c02", + "operating-systems-002:q-operating-systems-002-q25:c01", + "operating-systems-002:q-operating-systems-002-q24:c01", + "operating-systems-002:q-operating-systems-002-q27:c01", + "operating-systems-029:p4:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-59-题-同步与互斥~3-参考答案与解析:c01", + "operating-systems-038:s56:c01", + "operating-systems-002:q-operating-systems-002-q20:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-59-题-同步与互斥~2-测试题型:c01", + "operating-systems-003:p3:q-operating-systems-003-q19:c01", + "operating-systems-008:p5:c01", + "operating-systems-002:q-operating-systems-002-q21:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-21-题-管程-monitor-的定义与作用~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~1-知识点:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~2-测试题型:c01", + "operating-systems-002:q-operating-systems-002-q22:c01", + "operating-systems-002:q-operating-systems-002-q1:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~3-参考答案与解析:c02" + ] + }, + { + "case_id": "os-producer-2", + "topic_id": "os-producer", + "course_id": "operating_systems", + "scenario": "mistake", + "split": "validation", + "query": "缓冲区满时,生产者拿着互斥锁等空位,消费者还能取走数据吗?", + "top_chunk_ids": [ + "operating-systems-002:q-operating-systems-002-q28:c01", + "operating-systems-002:q-operating-systems-002-q27:c01", + "operating-systems-002:q-operating-systems-002-q25:c01", + "operating-systems-002:q-operating-systems-002-q24:c01", + "operating-systems-038:s56:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-59-题-同步与互斥~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-59-题-同步与互斥~3-参考答案与解析:c01", + "operating-systems-029:p3:c02", + "operating-systems-003:p3:q-operating-systems-003-q19:c01", + "operating-systems-002:q-operating-systems-002-q20:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~3-参考答案与解析:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-21-题-管程-monitor-的定义与作用~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~1-知识点:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~3-参考答案与解析:c02", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-22-题-自旋锁-spinlock-与互斥锁区别~1-知识点:c01", + "operating-systems-002:q-operating-systems-002-q1:c01", + "operating-systems-002:q-operating-systems-002-q21:c01", + "operating-systems-002:q-operating-systems-002-q22:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-22-题-自旋锁-spinlock-与互斥锁区别~3-参考答案与解读:c01" + ], + "duration_ms": 48.967, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.09090909090909091, + "unjudged_chunk_ids": [ + "operating-systems-002:q-operating-systems-002-q28:c01", + "operating-systems-002:q-operating-systems-002-q27:c01", + "operating-systems-002:q-operating-systems-002-q25:c01", + "operating-systems-002:q-operating-systems-002-q24:c01", + "operating-systems-038:s56:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-59-题-同步与互斥~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-59-题-同步与互斥~3-参考答案与解析:c01", + "operating-systems-029:p3:c02", + "operating-systems-003:p3:q-operating-systems-003-q19:c01", + "operating-systems-002:q-operating-systems-002-q20:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-21-题-管程-monitor-的定义与作用~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~1-知识点:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~3-参考答案与解析:c02", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-22-题-自旋锁-spinlock-与互斥锁区别~1-知识点:c01", + "operating-systems-002:q-operating-systems-002-q1:c01", + "operating-systems-002:q-operating-systems-002-q21:c01", + "operating-systems-002:q-operating-systems-002-q22:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-22-题-自旋锁-spinlock-与互斥锁区别~3-参考答案与解读:c01" + ] + }, + { + "case_id": "os-deadlock-1", + "topic_id": "os-deadlock", + "course_id": "operating_systems", + "scenario": "concept", + "split": "dev", + "query": "死锁的四个必要条件是什么?统一资源申请顺序破坏了哪一个?", + "top_chunk_ids": [ + "operating-systems-001:h-第-15-题-死锁四条件~1-知识点~2-测试题型:c01", + "operating-systems-003:p4:q-operating-systems-003-q32:c01", + "operating-systems-003:p5:q-operating-systems-003-q42:c02", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-66-题-死锁预防策略~1-知识点:c01", + "operating-systems-030:p2:c01", + "operating-systems-003:p1:q-operating-systems-003-q6:c01", + "operating-systems-032:p2:c01", + "operating-systems-031:p2:c01", + "operating-systems-006:p2:c01", + "operating-systems-028:h-os复习指导:c04", + "operating-systems-035:p2:q-operating-systems-035-q36:c01", + "operating-systems-038:s62:c01", + "operating-systems-008:p1:c02", + "operating-systems-036:q-operating-systems-036-q23:c01", + "operating-systems-034:q-operating-systems-034-q23:c01", + "operating-systems-039:s6:c01", + "operating-systems-026:h-os上古大题范围:c01", + "operating-systems-027:h-第2章-进程的描述与控制:c03", + "operating-systems-030:p1:c01", + "operating-systems-037:h-上古osq-a:c02" + ], + "duration_ms": 52.608, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "operating-systems-001:h-第-15-题-死锁四条件~1-知识点~2-测试题型:c01", + "operating-systems-003:p4:q-operating-systems-003-q32:c01", + "operating-systems-003:p5:q-operating-systems-003-q42:c02", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-66-题-死锁预防策略~1-知识点:c01", + "operating-systems-030:p2:c01", + "operating-systems-003:p1:q-operating-systems-003-q6:c01", + "operating-systems-032:p2:c01", + "operating-systems-031:p2:c01", + "operating-systems-006:p2:c01", + "operating-systems-028:h-os复习指导:c04", + "operating-systems-035:p2:q-operating-systems-035-q36:c01", + "operating-systems-038:s62:c01", + "operating-systems-008:p1:c02", + "operating-systems-036:q-operating-systems-036-q23:c01", + "operating-systems-034:q-operating-systems-034-q23:c01", + "operating-systems-039:s6:c01", + "operating-systems-026:h-os上古大题范围:c01", + "operating-systems-027:h-第2章-进程的描述与控制:c03", + "operating-systems-030:p1:c01", + "operating-systems-037:h-上古osq-a:c02" + ] + }, + { + "case_id": "os-deadlock-2", + "topic_id": "os-deadlock", + "course_id": "operating_systems", + "scenario": "concept", + "split": "dev", + "query": "所有线程都先拿A锁再拿B锁,为什么能避免这两把锁形成循环等待?", + "top_chunk_ids": [ + "operating-systems-003:p5:q-operating-systems-003-q46:c01", + "operating-systems-035:p1:q-operating-systems-035-q24:c01", + "operating-systems-003:p1:q-operating-systems-003-q6:c01", + "operating-systems-003:p3:q-operating-systems-003-q15:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-66-题-死锁预防策略~1-知识点:c01", + "operating-systems-003:p7:q-operating-systems-003-q60:c01", + "operating-systems-035:p1:q-operating-systems-035-q13:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-39-题-多核调度-multicore-scheduling~2-测试题型:c01", + "operating-systems-001:h-第-5-题-上下文切换~1-知识点~2-测试题型:c01", + "operating-systems-003:p4:q-operating-systems-003-q34:c01", + "operating-systems-002:q-operating-systems-002-q6:c01", + "operating-systems-003:p6:q-operating-systems-003-q50:c01", + "operating-systems-039:s16:c01", + "operating-systems-006:p4:c01", + "operating-systems-038:s67:c01", + "operating-systems-039:s17:c01", + "operating-systems-038:s68:c01", + "operating-systems-031:p2:c01", + "operating-systems-032:p2:c01", + "operating-systems-042:s42:c01" + ], + "duration_ms": 54.195, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "operating-systems-003:p5:q-operating-systems-003-q46:c01", + "operating-systems-035:p1:q-operating-systems-035-q24:c01", + "operating-systems-003:p1:q-operating-systems-003-q6:c01", + "operating-systems-003:p3:q-operating-systems-003-q15:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-66-题-死锁预防策略~1-知识点:c01", + "operating-systems-003:p7:q-operating-systems-003-q60:c01", + "operating-systems-035:p1:q-operating-systems-035-q13:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-39-题-多核调度-multicore-scheduling~2-测试题型:c01", + "operating-systems-001:h-第-5-题-上下文切换~1-知识点~2-测试题型:c01", + "operating-systems-003:p4:q-operating-systems-003-q34:c01", + "operating-systems-002:q-operating-systems-002-q6:c01", + "operating-systems-003:p6:q-operating-systems-003-q50:c01", + "operating-systems-039:s16:c01", + "operating-systems-006:p4:c01", + "operating-systems-038:s67:c01", + "operating-systems-039:s17:c01", + "operating-systems-038:s68:c01", + "operating-systems-031:p2:c01", + "operating-systems-032:p2:c01", + "operating-systems-042:s42:c01" + ] + }, + { + "case_id": "compiler-left-recursion-1", + "topic_id": "compiler-left-recursion", + "course_id": "compiler_principles", + "scenario": "problem", + "split": "validation", + "query": "T→T,S | S 如何消除直接左递归?", + "top_chunk_ids": [ + "compiler-principles-001:s27:c01", + "compiler-principles-001:s26:c01", + "compiler-principles-017:q-compiler-principles-017-q10:c01", + "compiler-principles-017:q-compiler-principles-017-q15:c01", + "compiler-principles-015:q-compiler-principles-015-q14:c01", + "compiler-principles-016:q-compiler-principles-016-q12:c01", + "compiler-principles-016:q-compiler-principles-016-q17:c01", + "compiler-principles-015:q-compiler-principles-015-q11:c01", + "compiler-principles-001:s23:c01", + "compiler-principles-015:q-compiler-principles-015-q7:c01", + "compiler-principles-017:q-compiler-principles-017-q6:c01", + "compiler-principles-009:q-compiler-principles-009-q8:c01", + "compiler-principles-002:p1:c01", + "compiler-principles-013:q-compiler-principles-013-q5:c01", + "compiler-principles-001:s46:c01", + "compiler-principles-001:s36:c01", + "compiler-principles-001:s35:c01", + "compiler-principles-001:s32:c01", + "compiler-principles-001:s45:c01", + "compiler-principles-001:s31:c01" + ], + "duration_ms": 113.287, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "compiler-principles-001:s26:c01", + "compiler-principles-017:q-compiler-principles-017-q10:c01", + "compiler-principles-017:q-compiler-principles-017-q15:c01", + "compiler-principles-015:q-compiler-principles-015-q14:c01", + "compiler-principles-016:q-compiler-principles-016-q12:c01", + "compiler-principles-016:q-compiler-principles-016-q17:c01", + "compiler-principles-015:q-compiler-principles-015-q11:c01", + "compiler-principles-001:s23:c01", + "compiler-principles-015:q-compiler-principles-015-q7:c01", + "compiler-principles-017:q-compiler-principles-017-q6:c01", + "compiler-principles-009:q-compiler-principles-009-q8:c01", + "compiler-principles-002:p1:c01", + "compiler-principles-013:q-compiler-principles-013-q5:c01", + "compiler-principles-001:s46:c01", + "compiler-principles-001:s36:c01", + "compiler-principles-001:s35:c01", + "compiler-principles-001:s32:c01", + "compiler-principles-001:s45:c01", + "compiler-principles-001:s31:c01" + ] + }, + { + "case_id": "compiler-left-recursion-2", + "topic_id": "compiler-left-recursion", + "course_id": "compiler_principles", + "scenario": "problem", + "split": "validation", + "query": "递归下降遇到T先调用自己再读逗号的文法会卡住,怎么改写?原式T→T,S | S。", + "top_chunk_ids": [ + "compiler-principles-053:h-递归下降方法的错误处理:c01", + "compiler-principles-001:s26:c01", + "compiler-principles-010:p1:q-compiler-principles-010-q6:c01", + "compiler-principles-001:s62:c01", + "compiler-principles-013:q-compiler-principles-013-q5:c01", + "compiler-principles-019:p95:c01", + "compiler-principles-001:s24:c01", + "compiler-principles-012:p1:q-compiler-principles-012-q14:c01", + "compiler-principles-001:s23:c01", + "compiler-principles-001:s25:c01", + "compiler-principles-019:p94:c01", + "compiler-principles-019:p77:c01", + "compiler-principles-014:q-compiler-principles-014-q1:c01", + "compiler-principles-001:s27:c01", + "compiler-principles-015:q-compiler-principles-015-q15:c01", + "compiler-principles-016:q-compiler-principles-016-q18:c01", + "compiler-principles-017:q-compiler-principles-017-q16:c01", + "compiler-principles-001:s8:c01", + "compiler-principles-016:q-compiler-principles-016-q14:c01", + "compiler-principles-017:q-compiler-principles-017-q12:c01" + ], + "duration_ms": 19.344, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.07142857142857142, + "unjudged_chunk_ids": [ + "compiler-principles-053:h-递归下降方法的错误处理:c01", + "compiler-principles-001:s26:c01", + "compiler-principles-010:p1:q-compiler-principles-010-q6:c01", + "compiler-principles-001:s62:c01", + "compiler-principles-013:q-compiler-principles-013-q5:c01", + "compiler-principles-019:p95:c01", + "compiler-principles-001:s24:c01", + "compiler-principles-012:p1:q-compiler-principles-012-q14:c01", + "compiler-principles-001:s23:c01", + "compiler-principles-001:s25:c01", + "compiler-principles-019:p94:c01", + "compiler-principles-019:p77:c01", + "compiler-principles-014:q-compiler-principles-014-q1:c01", + "compiler-principles-015:q-compiler-principles-015-q15:c01", + "compiler-principles-016:q-compiler-principles-016-q18:c01", + "compiler-principles-017:q-compiler-principles-017-q16:c01", + "compiler-principles-001:s8:c01", + "compiler-principles-016:q-compiler-principles-016-q14:c01", + "compiler-principles-017:q-compiler-principles-017-q12:c01" + ] + }, + { + "case_id": "compiler-plan-1", + "topic_id": "compiler-plan", + "course_id": "compiler_principles", + "scenario": "review", + "split": "validation", + "query": "复习课里那道S→a | ∧ | (T)、T→T,S | S的预测分析题,应该按什么步骤做?这里只要步骤。", + "top_chunk_ids": [ + "compiler-principles-001:s26:c01", + "compiler-principles-001:s36:c01", + "compiler-principles-001:s37:c01", + "compiler-principles-013:q-compiler-principles-013-q10:c01", + "compiler-principles-010:p2:q-compiler-principles-010-q13:c01", + "compiler-principles-011:q-compiler-principles-011-q11:c01", + "compiler-principles-012:p3:q-compiler-principles-012-q21:c01", + "compiler-principles-055:h-预测分析法:c01", + "compiler-principles-001:s62:c01", + "compiler-principles-001:s24:c01", + "compiler-principles-056:h-预测分析法的分析表:c01", + "compiler-principles-007:p3:q-compiler-principles-007-q15:c01", + "compiler-principles-014:q-compiler-principles-014-q10:c01", + "compiler-principles-001:s23:c01", + "compiler-principles-001:s25:c01", + "compiler-principles-001:s60:c01", + "compiler-principles-001:s59:c01", + "compiler-principles-001:s61:c01", + "compiler-principles-001:s41:c01", + "compiler-principles-001:s39:c01" + ], + "duration_ms": 20.339, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "compiler-principles-001:s36:c01", + "compiler-principles-001:s37:c01", + "compiler-principles-013:q-compiler-principles-013-q10:c01", + "compiler-principles-010:p2:q-compiler-principles-010-q13:c01", + "compiler-principles-011:q-compiler-principles-011-q11:c01", + "compiler-principles-012:p3:q-compiler-principles-012-q21:c01", + "compiler-principles-055:h-预测分析法:c01", + "compiler-principles-001:s62:c01", + "compiler-principles-001:s24:c01", + "compiler-principles-056:h-预测分析法的分析表:c01", + "compiler-principles-007:p3:q-compiler-principles-007-q15:c01", + "compiler-principles-014:q-compiler-principles-014-q10:c01", + "compiler-principles-001:s23:c01", + "compiler-principles-001:s25:c01", + "compiler-principles-001:s60:c01", + "compiler-principles-001:s59:c01", + "compiler-principles-001:s61:c01", + "compiler-principles-001:s41:c01", + "compiler-principles-001:s39:c01" + ] + }, + { + "case_id": "compiler-plan-2", + "topic_id": "compiler-plan", + "course_id": "compiler_principles", + "scenario": "review", + "split": "validation", + "query": "面对需要改写文法并构造LL(1)分析表的大题,先算FIRST还是先消除左递归?", + "top_chunk_ids": [ + "compiler-principles-001:s26:c01", + "compiler-principles-001:s27:c01", + "compiler-principles-015:q-compiler-principles-015-q14:c01", + "compiler-principles-016:q-compiler-principles-016-q12:c01", + "compiler-principles-016:q-compiler-principles-016-q17:c01", + "compiler-principles-015:q-compiler-principles-015-q11:c01", + "compiler-principles-017:q-compiler-principles-017-q10:c01", + "compiler-principles-017:q-compiler-principles-017-q15:c01", + "compiler-principles-015:q-compiler-principles-015-q7:c01", + "compiler-principles-017:q-compiler-principles-017-q6:c01", + "compiler-principles-009:q-compiler-principles-009-q8:c01", + "compiler-principles-001:s23:c01", + "compiler-principles-019:p107:c01", + "compiler-principles-019:p75:c01", + "compiler-principles-002:p1:c01", + "compiler-principles-011:q-compiler-principles-011-q15:c01", + "compiler-principles-012:p3:q-compiler-principles-012-q25:c01", + "compiler-principles-016:q-compiler-principles-016-q13:c01", + "compiler-principles-001:s36:c01", + "compiler-principles-015:q-compiler-principles-015-q15:c01" + ], + "duration_ms": 20.018, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "compiler-principles-001:s27:c01", + "compiler-principles-015:q-compiler-principles-015-q14:c01", + "compiler-principles-016:q-compiler-principles-016-q12:c01", + "compiler-principles-016:q-compiler-principles-016-q17:c01", + "compiler-principles-015:q-compiler-principles-015-q11:c01", + "compiler-principles-017:q-compiler-principles-017-q10:c01", + "compiler-principles-017:q-compiler-principles-017-q15:c01", + "compiler-principles-015:q-compiler-principles-015-q7:c01", + "compiler-principles-017:q-compiler-principles-017-q6:c01", + "compiler-principles-009:q-compiler-principles-009-q8:c01", + "compiler-principles-001:s23:c01", + "compiler-principles-019:p107:c01", + "compiler-principles-019:p75:c01", + "compiler-principles-002:p1:c01", + "compiler-principles-011:q-compiler-principles-011-q15:c01", + "compiler-principles-012:p3:q-compiler-principles-012-q25:c01", + "compiler-principles-016:q-compiler-principles-016-q13:c01", + "compiler-principles-001:s36:c01", + "compiler-principles-015:q-compiler-principles-015-q15:c01" + ] + }, + { + "case_id": "network-ack-1", + "topic_id": "network-ack", + "course_id": "computer_networks", + "scenario": "concept", + "split": "dev", + "query": "TCP确认号为n到底表示收到了n,还是接下来想收到n?", + "top_chunk_ids": [ + "computer-networks-043:p33:c01", + "computer-networks-051:h-笔记:c10", + "computer-networks-041:p34:c01", + "computer-networks-033:p7:c01", + "computer-networks-031:p41:c01", + "computer-networks-047:p41:c01", + "computer-networks-031:p40:c01", + "computer-networks-047:p40:c01", + "computer-networks-043:p32:c01", + "computer-networks-041:p36:c01", + "computer-networks-029:p5:c01", + "computer-networks-033:p32:c01", + "computer-networks-044:p15:c01", + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三:c01", + "computer-networks-044:p13:c01", + "computer-networks-033:p16:c01", + "computer-networks-033:p3:c01", + "computer-networks-046:p14:c01", + "computer-networks-031:p15:c01", + "computer-networks-047:p15:c01" + ], + "duration_ms": 323.902, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "computer-networks-043:p33:c01", + "computer-networks-041:p34:c01", + "computer-networks-033:p7:c01", + "computer-networks-031:p41:c01", + "computer-networks-047:p41:c01", + "computer-networks-031:p40:c01", + "computer-networks-047:p40:c01", + "computer-networks-043:p32:c01", + "computer-networks-041:p36:c01", + "computer-networks-029:p5:c01", + "computer-networks-033:p32:c01", + "computer-networks-044:p15:c01", + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三:c01", + "computer-networks-044:p13:c01", + "computer-networks-033:p16:c01", + "computer-networks-033:p3:c01", + "computer-networks-046:p14:c01", + "computer-networks-031:p15:c01", + "computer-networks-047:p15:c01" + ] + }, + { + "case_id": "network-ack-2", + "topic_id": "network-ack", + "course_id": "computer_networks", + "scenario": "concept", + "split": "dev", + "query": "接收方回复ACK=501,发送方能理解为500之前的字节都确认了吗?", + "top_chunk_ids": [ + "computer-networks-149:h-发送方的复用和接收方的分用:c01", + "computer-networks-033:p35:c01", + "computer-networks-033:p39:c01", + "computer-networks-033:p36:c01", + "computer-networks-044:p13:c01", + "computer-networks-033:p34:c01", + "computer-networks-044:p4:c01", + "computer-networks-033:p37:c01", + "computer-networks-033:p32:c01", + "computer-networks-051:h-笔记:c13", + "computer-networks-043:p30:c01", + "computer-networks-044:p12:c01", + "computer-networks-050:h-术语和缩写大全:c02", + "computer-networks-034:p15:c01", + "computer-networks-031:p40:c01", + "computer-networks-047:p40:c01", + "computer-networks-013:p2:q-computer-networks-013-q25:c01", + "computer-networks-031:p5:c01", + "computer-networks-047:p5:c01", + "computer-networks-035:p39:c01" + ], + "duration_ms": 50.291, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "computer-networks-149:h-发送方的复用和接收方的分用:c01", + "computer-networks-033:p35:c01", + "computer-networks-033:p39:c01", + "computer-networks-033:p36:c01", + "computer-networks-044:p13:c01", + "computer-networks-033:p34:c01", + "computer-networks-044:p4:c01", + "computer-networks-033:p37:c01", + "computer-networks-033:p32:c01", + "computer-networks-051:h-笔记:c13", + "computer-networks-043:p30:c01", + "computer-networks-044:p12:c01", + "computer-networks-050:h-术语和缩写大全:c02", + "computer-networks-034:p15:c01", + "computer-networks-031:p40:c01", + "computer-networks-047:p40:c01", + "computer-networks-013:p2:q-computer-networks-013-q25:c01", + "computer-networks-031:p5:c01", + "computer-networks-047:p5:c01", + "computer-networks-035:p39:c01" + ] + }, + { + "case_id": "network-napt-1", + "topic_id": "network-napt", + "course_id": "computer_networks", + "scenario": "evidence_bundle", + "split": "dev", + "query": "网络层大题中192.168.1.10:5000映射到202.1.1.1:8000,回包怎么还原?去8.8.8.8该选哪条路由?", + "top_chunk_ids": [ + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四~大题二-参考答案:c01", + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四:c01", + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题一-参考答案:c01", + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三:c01", + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~考前最后三句话:c01", + "computer-networks-042:p23:c01", + "computer-networks-046:p71:c01", + "computer-networks-038:p35:c01", + "computer-networks-038:p17:c01", + "computer-networks-046:p72:c01", + "computer-networks-038:p36:c01", + "computer-networks-003:q-computer-networks-003-q15:c01", + "computer-networks-042:p28:c01", + "computer-networks-038:p5:c01", + "computer-networks-087:h-网络层提供的服务的比较:c01", + "computer-networks-029:p20:c01", + "computer-networks-038:p26:c01", + "computer-networks-046:p70:c01", + "computer-networks-041:p1:c01", + "computer-networks-029:p17:c01" + ], + "duration_ms": 64.504, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题一-参考答案:c01", + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三:c01", + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~考前最后三句话:c01", + "computer-networks-042:p23:c01", + "computer-networks-046:p71:c01", + "computer-networks-038:p35:c01", + "computer-networks-038:p17:c01", + "computer-networks-046:p72:c01", + "computer-networks-038:p36:c01", + "computer-networks-003:q-computer-networks-003-q15:c01", + "computer-networks-042:p28:c01", + "computer-networks-038:p5:c01", + "computer-networks-087:h-网络层提供的服务的比较:c01", + "computer-networks-029:p20:c01", + "computer-networks-038:p26:c01", + "computer-networks-046:p70:c01", + "computer-networks-041:p1:c01", + "computer-networks-029:p17:c01" + ] + }, + { + "case_id": "network-napt-2", + "topic_id": "network-napt", + "course_id": "computer_networks", + "scenario": "evidence_bundle", + "split": "dev", + "query": "请找到NAPT网关那道题的题干和答案,解释回程端口还原以及/8为什么优先于默认路由。", + "top_chunk_ids": [ + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四~大题二-参考答案:c01", + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四:c01", + "computer-networks-037:p17:c01", + "computer-networks-085:h-网关与访问internet的题目:c01", + "computer-networks-046:p67:c01", + "computer-networks-038:p14:c01", + "computer-networks-035:p23:c01", + "computer-networks-003:q-computer-networks-003-q30:c01", + "computer-networks-042:p38:c01", + "computer-networks-172:h-cdma的应用和为什么要正交:c01", + "computer-networks-147:h-为什么三次握手而不是两次握手:c01", + "computer-networks-045:p5:c01", + "computer-networks-041:p30:c01", + "computer-networks-038:p27:c01", + "computer-networks-041:p21:c01", + "computer-networks-046:p75:c01", + "computer-networks-011:p5:q-computer-networks-011-q41:c01", + "computer-networks-014:p5:c01", + "computer-networks-006:p2:c01", + "computer-networks-003:q-computer-networks-003-q15:c01" + ], + "duration_ms": 53.415, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "computer-networks-037:p17:c01", + "computer-networks-085:h-网关与访问internet的题目:c01", + "computer-networks-046:p67:c01", + "computer-networks-038:p14:c01", + "computer-networks-035:p23:c01", + "computer-networks-003:q-computer-networks-003-q30:c01", + "computer-networks-042:p38:c01", + "computer-networks-172:h-cdma的应用和为什么要正交:c01", + "computer-networks-147:h-为什么三次握手而不是两次握手:c01", + "computer-networks-045:p5:c01", + "computer-networks-041:p30:c01", + "computer-networks-038:p27:c01", + "computer-networks-041:p21:c01", + "computer-networks-046:p75:c01", + "computer-networks-011:p5:q-computer-networks-011-q41:c01", + "computer-networks-014:p5:c01", + "computer-networks-006:p2:c01", + "computer-networks-003:q-computer-networks-003-q15:c01" + ] + }, + { + "case_id": "testing-boundary-1", + "topic_id": "testing-boundary", + "course_id": "software_testing", + "scenario": "problem", + "split": "dev", + "query": "三个独立输入变量,健壮最坏情况边界值测试需要多少组?和健壮边界值有什么不同?", + "top_chunk_ids": [ + "software-testing-030:s28:c01", + "software-testing-046:q-software-testing-046-q2:c01", + "software-testing-030:s27:c01", + "software-testing-040:h-unit~第二章-软件测试方法~一-黑盒测试-重点:c01", + "software-testing-030:s26:c01", + "software-testing-051:h-八-组合测试-combinational-testing~2.-真值表-truth-table:c01", + "software-testing-030:s24:c01", + "software-testing-038:h-集成测试---学习笔记~5.-path-based-integration-基于路径的集成~mm-path-based-integration-基于mm路径的集成:c01", + "software-testing-038:h-黑盒测试---详细学习笔记~3.-combinational-testing-组合测试~when-to-use-decision-tables-何时使用判定表:c01", + "software-testing-038:h-单元测试---学习笔记~2.-unit-testing-单元测试~tasks-of-unit-testing-单元测试的任务:c01", + "software-testing-049:h-十二-圈复杂度-cyclomatic-complexity~3.-注意事项:c01", + "software-testing-032:s106:c01", + "software-testing-060:h-补充~二-五个评价指标:c01", + "software-testing-029:s57:c01", + "software-testing-052:h-st-讲义-二-黑盒测试:c08", + "software-testing-051:h-六-等价类划分总结~1.-优点:c01", + "software-testing-051:h-七-边界值分析-boundary-value-analysis-bva~4.-优缺点:c01", + "software-testing-038:h-黑盒测试---详细学习笔记~2.-boundary-value-analysis-bva-边界值分析~concept-概念:c01", + "software-testing-030:s20:c01", + "software-testing-034:s17:c01" + ], + "duration_ms": 613.174, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.25, + "unjudged_chunk_ids": [ + "software-testing-030:s28:c01", + "software-testing-046:q-software-testing-046-q2:c01", + "software-testing-030:s27:c01", + "software-testing-030:s26:c01", + "software-testing-051:h-八-组合测试-combinational-testing~2.-真值表-truth-table:c01", + "software-testing-030:s24:c01", + "software-testing-038:h-集成测试---学习笔记~5.-path-based-integration-基于路径的集成~mm-path-based-integration-基于mm路径的集成:c01", + "software-testing-038:h-黑盒测试---详细学习笔记~3.-combinational-testing-组合测试~when-to-use-decision-tables-何时使用判定表:c01", + "software-testing-038:h-单元测试---学习笔记~2.-unit-testing-单元测试~tasks-of-unit-testing-单元测试的任务:c01", + "software-testing-049:h-十二-圈复杂度-cyclomatic-complexity~3.-注意事项:c01", + "software-testing-032:s106:c01", + "software-testing-060:h-补充~二-五个评价指标:c01", + "software-testing-029:s57:c01", + "software-testing-052:h-st-讲义-二-黑盒测试:c08", + "software-testing-051:h-六-等价类划分总结~1.-优点:c01", + "software-testing-051:h-七-边界值分析-boundary-value-analysis-bva~4.-优缺点:c01", + "software-testing-038:h-黑盒测试---详细学习笔记~2.-boundary-value-analysis-bva-边界值分析~concept-概念:c01", + "software-testing-030:s20:c01", + "software-testing-034:s17:c01" + ] + }, + { + "case_id": "testing-boundary-2", + "topic_id": "testing-boundary", + "course_id": "software_testing", + "scenario": "problem", + "split": "dev", + "query": "每个输入都取七个含越界的代表值,再组合三个输入,是19组还是343组?", + "top_chunk_ids": [ + "software-testing-030:s11:c01", + "software-testing-030:s41:c01", + "software-testing-051:h-八-组合测试-combinational-testing~1.-定义:c01", + "software-testing-030:s8:c01", + "software-testing-031:s30:c01", + "software-testing-051:h-软件测试与维护-讲义-二-黑盒测试去冗余笔记~一-整体脉络分析线:c01", + "software-testing-051:h-九-决策表-decision-table~2.-适用场景:c01", + "software-testing-051:h-三-等价类划分-equivalence-partitioning~2.-什么是分区-partition:c01", + "software-testing-032:s89:c01", + "software-testing-051:h-四-弱等价类与强等价类~2.-强等价类测试:c01", + "software-testing-029:s100:c01", + "software-testing-040:h-unit~题目-2-判定表驱动分析-多条件组合题~解题过程~第四步-生成测试用例:c01", + "software-testing-030:s39:c01", + "software-testing-052:h-st-讲义-二-黑盒测试:c05", + "software-testing-049:h-五-期末重点题型-grade-打分系统~3.-条件组合覆盖解题方法:c01", + "software-testing-030:s24:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第二步-边界值分析-针对有效等价类:c01", + "software-testing-040:h-unit~题目-2-判定表驱动分析-多条件组合题~题目:c01", + "software-testing-040:h-unit~题目-3-白盒覆盖分析-语句-分支-条件组合~解题过程~第四步-条件组合覆盖-multiple-condition-coverage:c02", + "software-testing-058:h-概念整理~四-黑盒测试技术:c01" + ], + "duration_ms": 82.743, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "software-testing-030:s11:c01", + "software-testing-030:s41:c01", + "software-testing-051:h-八-组合测试-combinational-testing~1.-定义:c01", + "software-testing-030:s8:c01", + "software-testing-031:s30:c01", + "software-testing-051:h-软件测试与维护-讲义-二-黑盒测试去冗余笔记~一-整体脉络分析线:c01", + "software-testing-051:h-九-决策表-decision-table~2.-适用场景:c01", + "software-testing-051:h-三-等价类划分-equivalence-partitioning~2.-什么是分区-partition:c01", + "software-testing-032:s89:c01", + "software-testing-051:h-四-弱等价类与强等价类~2.-强等价类测试:c01", + "software-testing-029:s100:c01", + "software-testing-040:h-unit~题目-2-判定表驱动分析-多条件组合题~解题过程~第四步-生成测试用例:c01", + "software-testing-030:s39:c01", + "software-testing-052:h-st-讲义-二-黑盒测试:c05", + "software-testing-049:h-五-期末重点题型-grade-打分系统~3.-条件组合覆盖解题方法:c01", + "software-testing-030:s24:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第二步-边界值分析-针对有效等价类:c01", + "software-testing-040:h-unit~题目-2-判定表驱动分析-多条件组合题~题目:c01", + "software-testing-040:h-unit~题目-3-白盒覆盖分析-语句-分支-条件组合~解题过程~第四步-条件组合覆盖-multiple-condition-coverage:c02", + "software-testing-058:h-概念整理~四-黑盒测试技术:c01" + ] + }, + { + "case_id": "testing-insurance-1", + "topic_id": "testing-insurance", + "course_id": "software_testing", + "scenario": "problem", + "split": "dev", + "query": "保险年龄1–18收费100,19–60收费200,61–150收费300,非整数或越界非法,怎么选等价类和边界测试?", + "top_chunk_ids": [ + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~题目:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第一步-等价类划分:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第二步-边界值分析-针对有效等价类:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第三步-设计测试用例:c01", + "software-testing-024:h-新高考-b~附一-黑盒测试-ds-魔改版~问题1-输入参数的有效等价类与无效等价类划分-覆盖边界和异常情况~1-.-酒店星级-l-正整数-1-10:c01", + "software-testing-024:h-新高考-b~附一-黑盒测试-ds-魔改版~手工速搓版:c01", + "software-testing-030:s14:c01", + "software-testing-024:h-新高考-b~附一-黑盒测试-ds-魔改版~问题2-测试用例设计-覆盖参数组合与预期结果:c01", + "software-testing-024:h-新高考-b~附一-黑盒测试-ds-魔改版~问题1-输入参数的有效等价类与无效等价类划分-覆盖边界和异常情况~3-.-消费金额-a-正实数-a-0-.01-保留两位小数:c01", + "software-testing-051:h-三-等价类划分-equivalence-partitioning~4.-识别等价类的步骤~步骤-3-建立等价类表:c01", + "software-testing-032:s61:c01", + "software-testing-052:h-st-讲义-二-黑盒测试:c26", + "software-testing-052:h-st-讲义-二-黑盒测试:c03", + "software-testing-031:s35:c01", + "software-testing-024:h-新高考-b~四-黑盒测试:c01", + "software-testing-051:h-软件测试与维护-讲义-二-黑盒测试去冗余笔记~一-整体脉络分析线:c01", + "software-testing-040:h-unit~题目-4-循环覆盖~解题过程:c01", + "software-testing-052:h-st-讲义-二-黑盒测试:c07", + "software-testing-024:h-新高考-a~三-黑白盒测试:c04", + "software-testing-052:h-st-讲义-二-黑盒测试:c02" + ], + "duration_ms": 105.043, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第一步-等价类划分:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第二步-边界值分析-针对有效等价类:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第三步-设计测试用例:c01", + "software-testing-024:h-新高考-b~附一-黑盒测试-ds-魔改版~问题1-输入参数的有效等价类与无效等价类划分-覆盖边界和异常情况~1-.-酒店星级-l-正整数-1-10:c01", + "software-testing-024:h-新高考-b~附一-黑盒测试-ds-魔改版~手工速搓版:c01", + "software-testing-030:s14:c01", + "software-testing-024:h-新高考-b~附一-黑盒测试-ds-魔改版~问题2-测试用例设计-覆盖参数组合与预期结果:c01", + "software-testing-024:h-新高考-b~附一-黑盒测试-ds-魔改版~问题1-输入参数的有效等价类与无效等价类划分-覆盖边界和异常情况~3-.-消费金额-a-正实数-a-0-.01-保留两位小数:c01", + "software-testing-051:h-三-等价类划分-equivalence-partitioning~4.-识别等价类的步骤~步骤-3-建立等价类表:c01", + "software-testing-032:s61:c01", + "software-testing-052:h-st-讲义-二-黑盒测试:c26", + "software-testing-052:h-st-讲义-二-黑盒测试:c03", + "software-testing-031:s35:c01", + "software-testing-024:h-新高考-b~四-黑盒测试:c01", + "software-testing-051:h-软件测试与维护-讲义-二-黑盒测试去冗余笔记~一-整体脉络分析线:c01", + "software-testing-040:h-unit~题目-4-循环覆盖~解题过程:c01", + "software-testing-052:h-st-讲义-二-黑盒测试:c07", + "software-testing-024:h-新高考-a~三-黑白盒测试:c04", + "software-testing-052:h-st-讲义-二-黑盒测试:c02" + ] + }, + { + "case_id": "testing-insurance-2", + "topic_id": "testing-insurance", + "course_id": "software_testing", + "scenario": "problem", + "split": "dev", + "query": "测保险系统只用年龄1、80、150够吗?1–18、19–60、61–150三档收费,输入必须是整数。", + "top_chunk_ids": [ + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~题目:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第一步-等价类划分:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第二步-边界值分析-针对有效等价类:c01", + "software-testing-035:s86:c01", + "software-testing-030:s42:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第三步-设计测试用例:c01", + "software-testing-051:h-五-等价类划分典型例题~例-1-外线电话号码:c01", + "software-testing-038:h-软件测试导论-第二部分---学习笔记~2.-software-testing-axioms-软件测试公理~axiom-6-it-is-difficult-to-say-when-a-bug-is-indeed-a-bug:c01", + "software-testing-030:s45:c01", + "software-testing-038:h-静态测试---学习笔记~2.-code-review-代码审查~code-review-checklist-crucial-for-practice-代码审查检查清单-实战关键~data-reference-errors-数据引用错误:c01", + "software-testing-024:h-新高考-b~附一-黑盒测试-ds-魔改版~问题1-输入参数的有效等价类与无效等价类划分-覆盖边界和异常情况~1-.-酒店星级-l-正整数-1-10:c01", + "software-testing-029:s71:c01", + "software-testing-031:s78:c01", + "software-testing-024:h-样板卷-a~为什么条件组合的最小用例集是-7-个:c01", + "software-testing-038:h-黑盒测试---详细学习笔记~2.-boundary-value-analysis-bva-边界值分析~picking-boundary-values-选取边界值的原则:c01", + "software-testing-029:s28:c01", + "software-testing-029:s26:c01", + "software-testing-013:p19:c01", + "software-testing-050:h-st-讲义-三-白盒测试:c11", + "software-testing-035:s47:c01" + ], + "duration_ms": 97.59, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第一步-等价类划分:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第二步-边界值分析-针对有效等价类:c01", + "software-testing-035:s86:c01", + "software-testing-030:s42:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第三步-设计测试用例:c01", + "software-testing-051:h-五-等价类划分典型例题~例-1-外线电话号码:c01", + "software-testing-038:h-软件测试导论-第二部分---学习笔记~2.-software-testing-axioms-软件测试公理~axiom-6-it-is-difficult-to-say-when-a-bug-is-indeed-a-bug:c01", + "software-testing-030:s45:c01", + "software-testing-038:h-静态测试---学习笔记~2.-code-review-代码审查~code-review-checklist-crucial-for-practice-代码审查检查清单-实战关键~data-reference-errors-数据引用错误:c01", + "software-testing-024:h-新高考-b~附一-黑盒测试-ds-魔改版~问题1-输入参数的有效等价类与无效等价类划分-覆盖边界和异常情况~1-.-酒店星级-l-正整数-1-10:c01", + "software-testing-029:s71:c01", + "software-testing-031:s78:c01", + "software-testing-024:h-样板卷-a~为什么条件组合的最小用例集是-7-个:c01", + "software-testing-038:h-黑盒测试---详细学习笔记~2.-boundary-value-analysis-bva-边界值分析~picking-boundary-values-选取边界值的原则:c01", + "software-testing-029:s28:c01", + "software-testing-029:s26:c01", + "software-testing-013:p19:c01", + "software-testing-050:h-st-讲义-三-白盒测试:c11", + "software-testing-035:s47:c01" + ] + }, + { + "case_id": "testing-branch-1", + "topic_id": "testing-branch", + "course_id": "software_testing", + "scenario": "concept", + "split": "validation", + "query": "判定覆盖能保证复合条件里的每个条件都独立影响结果吗?", + "top_chunk_ids": [ + "software-testing-046:q-software-testing-046-q34:c01", + "software-testing-049:h-十三-复合条件分解~2.-原因:c01", + "software-testing-036:s74:c01", + "software-testing-045:h-unit~第八章-软件质量度量~三-软件度量方法~2.-覆盖率度量-测试充分性指标:c01", + "software-testing-050:h-st-讲义-三-白盒测试:c20", + "software-testing-038:h-白盒测试-路径覆盖与基本路径测试---学习笔记~1.-control-flow-graphs-cfgs-控制流图~discussion-compound-condition-decomposition-讨论-复合条件分解:c01", + "software-testing-049:h-十三-复合条件分解~3.-影响:c01", + "software-testing-049:h-四-逻辑覆盖-logic-coverage~4.-decision-condition-coverage-决策条件覆盖~设计步骤:c01", + "software-testing-049:h-十三-复合条件分解~1.-定义:c01", + "software-testing-049:h-十三-复合条件分解~1.-定义:c03", + "software-testing-049:h-十三-复合条件分解~1.-定义:c02", + "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~3.-condition-coverage-cc-条件覆盖:c01", + "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~2.-decision-coverage-dc-判定覆盖-branch-coverage-分支覆盖:c01", + "software-testing-049:h-四-逻辑覆盖-logic-coverage~3.-condition-coverage-条件覆盖~定义:c01", + "software-testing-049:h-四-逻辑覆盖-logic-coverage~2.-decision-branch-edge-coverage-判定-分支-边覆盖~示例:c01", + "software-testing-038:h-白盒测试-路径覆盖与基本路径测试---学习笔记~5.-deep-dive-compound-condition-decomposition-path-count-深入探讨-复合条件分解与路径计数:c01", + "software-testing-030:s64:c01", + "software-testing-046:q-software-testing-046-q21:c01", + "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~4.-decision-condition-coverage-dcc-判定-条件覆盖:c01", + "software-testing-030:s61:c01" + ], + "duration_ms": 87.369, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.25, + "unjudged_chunk_ids": [ + "software-testing-046:q-software-testing-046-q34:c01", + "software-testing-049:h-十三-复合条件分解~2.-原因:c01", + "software-testing-036:s74:c01", + "software-testing-050:h-st-讲义-三-白盒测试:c20", + "software-testing-038:h-白盒测试-路径覆盖与基本路径测试---学习笔记~1.-control-flow-graphs-cfgs-控制流图~discussion-compound-condition-decomposition-讨论-复合条件分解:c01", + "software-testing-049:h-十三-复合条件分解~3.-影响:c01", + "software-testing-049:h-四-逻辑覆盖-logic-coverage~4.-decision-condition-coverage-决策条件覆盖~设计步骤:c01", + "software-testing-049:h-十三-复合条件分解~1.-定义:c01", + "software-testing-049:h-十三-复合条件分解~1.-定义:c03", + "software-testing-049:h-十三-复合条件分解~1.-定义:c02", + "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~3.-condition-coverage-cc-条件覆盖:c01", + "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~2.-decision-coverage-dc-判定覆盖-branch-coverage-分支覆盖:c01", + "software-testing-049:h-四-逻辑覆盖-logic-coverage~3.-condition-coverage-条件覆盖~定义:c01", + "software-testing-049:h-四-逻辑覆盖-logic-coverage~2.-decision-branch-edge-coverage-判定-分支-边覆盖~示例:c01", + "software-testing-038:h-白盒测试-路径覆盖与基本路径测试---学习笔记~5.-deep-dive-compound-condition-decomposition-path-count-深入探讨-复合条件分解与路径计数:c01", + "software-testing-030:s64:c01", + "software-testing-046:q-software-testing-046-q21:c01", + "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~4.-decision-condition-coverage-dcc-判定-条件覆盖:c01", + "software-testing-030:s61:c01" + ] + }, + { + "case_id": "testing-branch-2", + "topic_id": "testing-branch", + "course_id": "software_testing", + "scenario": "concept", + "split": "validation", + "query": "if里有三个布尔条件,真假分支各走一次就算MC/DC了吗?", + "top_chunk_ids": [ + "software-testing-040:h-unit~题目-3-白盒覆盖分析-语句-分支-条件组合~解题过程~第三步-分支覆盖-判定覆盖-branch-coverage:c01", + "software-testing-049:h-十四-白盒测试考试方法论~3.-如果题目要求列出-decisions-和-conditions:c01", + "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~3.-condition-coverage-cc-条件覆盖:c01", + "software-testing-050:h-st-讲义-三-白盒测试:c04", + "software-testing-049:h-四-逻辑覆盖-logic-coverage~3.-condition-coverage-条件覆盖~定义:c01", + "software-testing-036:s75:c01", + "software-testing-036:s74:c01", + "software-testing-058:h-概念整理~三-白盒测试技术:c01", + "software-testing-036:s76:c01", + "software-testing-030:s61:c01", + "software-testing-045:h-unit~第八章-软件质量度量~三-软件度量方法~2.-覆盖率度量-测试充分性指标:c01", + "software-testing-046:q-software-testing-046-q21:c01", + "software-testing-050:h-st-讲义-三-白盒测试:c05", + "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~2.-decision-coverage-dc-判定覆盖-branch-coverage-分支覆盖:c01", + "software-testing-046:q-software-testing-046-q34:c01", + "software-testing-049:h-四-逻辑覆盖-logic-coverage~2.-decision-branch-edge-coverage-判定-分支-边覆盖~示例:c01", + "software-testing-040:h-unit~总结-各方法答题模板:c01", + "software-testing-049:h-六-逻辑覆盖方法论小结:c01", + "software-testing-036:s73:c01", + "software-testing-036:s77:c01" + ], + "duration_ms": 82.687, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.09090909090909091, + "unjudged_chunk_ids": [ + "software-testing-040:h-unit~题目-3-白盒覆盖分析-语句-分支-条件组合~解题过程~第三步-分支覆盖-判定覆盖-branch-coverage:c01", + "software-testing-049:h-十四-白盒测试考试方法论~3.-如果题目要求列出-decisions-和-conditions:c01", + "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~3.-condition-coverage-cc-条件覆盖:c01", + "software-testing-050:h-st-讲义-三-白盒测试:c04", + "software-testing-049:h-四-逻辑覆盖-logic-coverage~3.-condition-coverage-条件覆盖~定义:c01", + "software-testing-036:s75:c01", + "software-testing-036:s74:c01", + "software-testing-058:h-概念整理~三-白盒测试技术:c01", + "software-testing-036:s76:c01", + "software-testing-030:s61:c01", + "software-testing-046:q-software-testing-046-q21:c01", + "software-testing-050:h-st-讲义-三-白盒测试:c05", + "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~2.-decision-coverage-dc-判定覆盖-branch-coverage-分支覆盖:c01", + "software-testing-046:q-software-testing-046-q34:c01", + "software-testing-049:h-四-逻辑覆盖-logic-coverage~2.-decision-branch-edge-coverage-判定-分支-边覆盖~示例:c01", + "software-testing-040:h-unit~总结-各方法答题模板:c01", + "software-testing-049:h-六-逻辑覆盖方法论小结:c01", + "software-testing-036:s73:c01", + "software-testing-036:s77:c01" + ] + }, + { + "case_id": "ai-prepruning-1", + "topic_id": "ai-prepruning", + "course_id": "artificial_intelligence_intro", + "scenario": "concept", + "split": "validation", + "query": "决策树预剪枝为什么既能减少过拟合,又可能欠拟合?", + "top_chunk_ids": [ + "artificial-intelligence-intro-017:s27:c01", + "artificial-intelligence-intro-017:s20:c01", + "artificial-intelligence-intro-017:s36:c01", + "artificial-intelligence-intro-017:s26:c01", + "artificial-intelligence-intro-017:s25:c01", + "artificial-intelligence-intro-017:s23:c01", + "artificial-intelligence-intro-017:s24:c01", + "artificial-intelligence-intro-017:s51:c01", + "artificial-intelligence-intro-043:h-ai导论~一-选择题答案~三-分析计算题答案~7.-决策树预测-playtennis-no:c01", + "artificial-intelligence-intro-015:s47:c01", + "artificial-intelligence-intro-011:p2:c01", + "artificial-intelligence-intro-002:p5:c01", + "artificial-intelligence-intro-017:s35:c01", + "artificial-intelligence-intro-017:s28:c01", + "artificial-intelligence-intro-017:s33:c01", + "artificial-intelligence-intro-017:s31:c01", + "artificial-intelligence-intro-017:s29:c01", + "artificial-intelligence-intro-017:s22:c01", + "artificial-intelligence-intro-017:s30:c01", + "artificial-intelligence-intro-017:s32:c01" + ], + "duration_ms": 439.346, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "artificial-intelligence-intro-017:s20:c01", + "artificial-intelligence-intro-017:s36:c01", + "artificial-intelligence-intro-017:s26:c01", + "artificial-intelligence-intro-017:s25:c01", + "artificial-intelligence-intro-017:s23:c01", + "artificial-intelligence-intro-017:s24:c01", + "artificial-intelligence-intro-017:s51:c01", + "artificial-intelligence-intro-043:h-ai导论~一-选择题答案~三-分析计算题答案~7.-决策树预测-playtennis-no:c01", + "artificial-intelligence-intro-015:s47:c01", + "artificial-intelligence-intro-011:p2:c01", + "artificial-intelligence-intro-002:p5:c01", + "artificial-intelligence-intro-017:s35:c01", + "artificial-intelligence-intro-017:s28:c01", + "artificial-intelligence-intro-017:s33:c01", + "artificial-intelligence-intro-017:s31:c01", + "artificial-intelligence-intro-017:s29:c01", + "artificial-intelligence-intro-017:s22:c01", + "artificial-intelligence-intro-017:s30:c01", + "artificial-intelligence-intro-017:s32:c01" + ] + }, + { + "case_id": "ai-prepruning-2", + "topic_id": "ai-prepruning", + "course_id": "artificial_intelligence_intro", + "scenario": "concept", + "split": "validation", + "query": "某次分裂当下没提高验证表现就停止,会不会错过后续更好的树?", + "top_chunk_ids": [ + "artificial-intelligence-intro-017:s23:c01", + "artificial-intelligence-intro-058:s8:c01", + "artificial-intelligence-intro-019:s9:c01", + "artificial-intelligence-intro-055:s49:c01", + "artificial-intelligence-intro-055:s42:c01", + "artificial-intelligence-intro-017:s29:c01", + "artificial-intelligence-intro-056:s19:c01", + "artificial-intelligence-intro-055:s29:c01", + "artificial-intelligence-intro-017:s30:c01", + "artificial-intelligence-intro-002:p2:c02", + "artificial-intelligence-intro-017:s27:c01", + "artificial-intelligence-intro-058:s12:c01", + "artificial-intelligence-intro-019:s20:c01", + "artificial-intelligence-intro-018:s19:c01", + "artificial-intelligence-intro-055:s21:c01", + "artificial-intelligence-intro-023:h-dhh题目~图1-知识点-信息增益与决策树分裂属性选择:c09", + "artificial-intelligence-intro-009:s14:c01", + "artificial-intelligence-intro-049:s18:c01", + "artificial-intelligence-intro-023:h-dhh题目~图2-知识点-前馈神经网络-bp-算法-前向传播-梯度下降更新:c09", + "artificial-intelligence-intro-017:s24:c01" + ], + "duration_ms": 55.614, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.09090909090909091, + "unjudged_chunk_ids": [ + "artificial-intelligence-intro-017:s23:c01", + "artificial-intelligence-intro-058:s8:c01", + "artificial-intelligence-intro-019:s9:c01", + "artificial-intelligence-intro-055:s49:c01", + "artificial-intelligence-intro-055:s42:c01", + "artificial-intelligence-intro-017:s29:c01", + "artificial-intelligence-intro-056:s19:c01", + "artificial-intelligence-intro-055:s29:c01", + "artificial-intelligence-intro-017:s30:c01", + "artificial-intelligence-intro-002:p2:c02", + "artificial-intelligence-intro-058:s12:c01", + "artificial-intelligence-intro-019:s20:c01", + "artificial-intelligence-intro-018:s19:c01", + "artificial-intelligence-intro-055:s21:c01", + "artificial-intelligence-intro-023:h-dhh题目~图1-知识点-信息增益与决策树分裂属性选择:c09", + "artificial-intelligence-intro-009:s14:c01", + "artificial-intelligence-intro-049:s18:c01", + "artificial-intelligence-intro-023:h-dhh题目~图2-知识点-前馈神经网络-bp-算法-前向传播-梯度下降更新:c09", + "artificial-intelligence-intro-017:s24:c01" + ] + }, + { + "case_id": "ai-consistent-1", + "topic_id": "ai-consistent", + "course_id": "artificial_intelligence_intro", + "scenario": "concept", + "split": "validation", + "query": "一致启发为什么能让A*像Dijkstra一样工作?请解释重赋权。", + "top_chunk_ids": [ + "artificial-intelligence-intro-008:h-第3章-搜索探寻与问题求解:c04", + "artificial-intelligence-intro-040:h-人工智能导论-模拟卷三-全真冲刺卷~二-简答题-共-40-分:c01", + "artificial-intelligence-intro-050:s51:c01", + "artificial-intelligence-intro-017:s20:c01", + "artificial-intelligence-intro-011:p1:c01", + "artificial-intelligence-intro-050:s3:c01", + "artificial-intelligence-intro-015:s46:c01", + "artificial-intelligence-intro-010:s3:c01", + "artificial-intelligence-intro-008:h-第3章-搜索探寻与问题求解:c03", + "artificial-intelligence-intro-002:p2:c02", + "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~四-按章节整合的核心考点与优先级~第5章-搜索与优化:c01", + "artificial-intelligence-intro-011:p22:c01", + "artificial-intelligence-intro-015:s67:c01", + "artificial-intelligence-intro-009:s11:c01", + "artificial-intelligence-intro-049:s15:c01", + "artificial-intelligence-intro-004:p5:c01", + "artificial-intelligence-intro-015:s49:c01", + "artificial-intelligence-intro-011:p4:c01", + "artificial-intelligence-intro-042:h-2026人工智能导论回忆版:c01", + "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~二-jk2.docx-官方重点清单-源c-逐条映射:c02" + ], + "duration_ms": 62.802, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "artificial-intelligence-intro-040:h-人工智能导论-模拟卷三-全真冲刺卷~二-简答题-共-40-分:c01", + "artificial-intelligence-intro-050:s51:c01", + "artificial-intelligence-intro-017:s20:c01", + "artificial-intelligence-intro-011:p1:c01", + "artificial-intelligence-intro-050:s3:c01", + "artificial-intelligence-intro-015:s46:c01", + "artificial-intelligence-intro-010:s3:c01", + "artificial-intelligence-intro-008:h-第3章-搜索探寻与问题求解:c03", + "artificial-intelligence-intro-002:p2:c02", + "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~四-按章节整合的核心考点与优先级~第5章-搜索与优化:c01", + "artificial-intelligence-intro-011:p22:c01", + "artificial-intelligence-intro-015:s67:c01", + "artificial-intelligence-intro-009:s11:c01", + "artificial-intelligence-intro-049:s15:c01", + "artificial-intelligence-intro-004:p5:c01", + "artificial-intelligence-intro-015:s49:c01", + "artificial-intelligence-intro-011:p4:c01", + "artificial-intelligence-intro-042:h-2026人工智能导论回忆版:c01", + "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~二-jk2.docx-官方重点清单-源c-逐条映射:c02" + ] + }, + { + "case_id": "ai-consistent-2", + "topic_id": "ai-consistent", + "course_id": "artificial_intelligence_intro", + "scenario": "concept", + "split": "validation", + "query": "如果h(n)≤c(n,n′)+h(n′),为什么c′=c−h(n)+h(n′)不会是负数?", + "top_chunk_ids": [ + "artificial-intelligence-intro-050:s51:c01", + "artificial-intelligence-intro-008:h-第3章-搜索探寻与问题求解:c04", + "artificial-intelligence-intro-017:s20:c01", + "artificial-intelligence-intro-015:s56:c01", + "artificial-intelligence-intro-022:p91:c01", + "artificial-intelligence-intro-015:s76:c01", + "artificial-intelligence-intro-015:s79:c01", + "artificial-intelligence-intro-011:p31:c01", + "artificial-intelligence-intro-011:p11:c01", + "artificial-intelligence-intro-011:p34:c01", + "artificial-intelligence-intro-022:p86:c01", + "artificial-intelligence-intro-013:s72:c01", + "artificial-intelligence-intro-002:p2:c02", + "artificial-intelligence-intro-015:s66:c01", + "artificial-intelligence-intro-015:s50:c01", + "artificial-intelligence-intro-011:p5:c01", + "artificial-intelligence-intro-011:p21:c01", + "artificial-intelligence-intro-041:h-人工智能导论-模拟卷二-强化提升卷~一-选择题-每题-1-分-共-20-分:c02", + "artificial-intelligence-intro-015:s61:c01", + "artificial-intelligence-intro-015:s77:c01" + ], + "duration_ms": 65.01, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "artificial-intelligence-intro-050:s51:c01", + "artificial-intelligence-intro-017:s20:c01", + "artificial-intelligence-intro-015:s56:c01", + "artificial-intelligence-intro-022:p91:c01", + "artificial-intelligence-intro-015:s76:c01", + "artificial-intelligence-intro-015:s79:c01", + "artificial-intelligence-intro-011:p31:c01", + "artificial-intelligence-intro-011:p11:c01", + "artificial-intelligence-intro-011:p34:c01", + "artificial-intelligence-intro-022:p86:c01", + "artificial-intelligence-intro-013:s72:c01", + "artificial-intelligence-intro-002:p2:c02", + "artificial-intelligence-intro-015:s66:c01", + "artificial-intelligence-intro-015:s50:c01", + "artificial-intelligence-intro-011:p5:c01", + "artificial-intelligence-intro-011:p21:c01", + "artificial-intelligence-intro-041:h-人工智能导论-模拟卷二-强化提升卷~一-选择题-每题-1-分-共-20-分:c02", + "artificial-intelligence-intro-015:s61:c01", + "artificial-intelligence-intro-015:s77:c01" + ] + }, + { + "case_id": "org-cache-1", + "topic_id": "org-cache", + "course_id": "computer_organization", + "scenario": "concept", + "split": "dev", + "query": "Cache为什么能缓解CPU与主存速度不匹配?", + "top_chunk_ids": [ + "computer-organization-026:s76:c01", + "computer-organization-046:h-题:c01", + "computer-organization-032:s45:c01", + "computer-organization-014:h-b:c02", + "computer-organization-026:s77:c01", + "computer-organization-002:q-computer-organization-002-q7:c01", + "computer-organization-002:q-computer-organization-002-q22:c01", + "computer-organization-009:h-b:c02", + "computer-organization-032:s17:c01", + "computer-organization-049:h-题:c01", + "computer-organization-008:h-b:c04", + "computer-organization-039:h-题:c02", + "computer-organization-027:s91:c01", + "computer-organization-002:q-computer-organization-002-q23:c01", + "computer-organization-003:h-2022秋计算机组成复习要点:c02", + "computer-organization-038:h-题:c01", + "computer-organization-026:s79:c01", + "computer-organization-048:h-题:c02", + "computer-organization-016:h-b:c03", + "computer-organization-045:h-题:c03" + ], + "duration_ms": 298.947, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "computer-organization-046:h-题:c01", + "computer-organization-032:s45:c01", + "computer-organization-014:h-b:c02", + "computer-organization-026:s77:c01", + "computer-organization-002:q-computer-organization-002-q7:c01", + "computer-organization-002:q-computer-organization-002-q22:c01", + "computer-organization-009:h-b:c02", + "computer-organization-032:s17:c01", + "computer-organization-049:h-题:c01", + "computer-organization-008:h-b:c04", + "computer-organization-039:h-题:c02", + "computer-organization-027:s91:c01", + "computer-organization-002:q-computer-organization-002-q23:c01", + "computer-organization-003:h-2022秋计算机组成复习要点:c02", + "computer-organization-038:h-题:c01", + "computer-organization-026:s79:c01", + "computer-organization-048:h-题:c02", + "computer-organization-016:h-b:c03", + "computer-organization-045:h-题:c03" + ] + }, + { + "case_id": "org-cache-2", + "topic_id": "org-cache", + "course_id": "computer_organization", + "scenario": "concept", + "split": "dev", + "query": "只加一小块高速缓存为什么有用?它利用程序访问的什么特点?", + "top_chunk_ids": [ + "computer-organization-032:s17:c01", + "computer-organization-027:s125:c01", + "computer-organization-003:h-2022秋计算机组成复习要点:c02", + "computer-organization-026:s53:c01", + "computer-organization-003:h-2022秋计算机组成复习要点:c03", + "computer-organization-036:h-题:c02", + "computer-organization-014:h-b:c02", + "computer-organization-026:s76:c01", + "computer-organization-026:s11:c01", + "computer-organization-032:s45:c01", + "computer-organization-026:s116:c01", + "computer-organization-032:s38:c01", + "computer-organization-039:h-题:c02", + "computer-organization-002:q-computer-organization-002-q23:c01", + "computer-organization-027:s9:c01", + "computer-organization-069:h-答案:c01", + "computer-organization-008:h-b:c03", + "computer-organization-013:h-b:c03", + "computer-organization-026:s63:c01", + "computer-organization-028:s7:c01" + ], + "duration_ms": 39.301, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.125, + "unjudged_chunk_ids": [ + "computer-organization-032:s17:c01", + "computer-organization-027:s125:c01", + "computer-organization-003:h-2022秋计算机组成复习要点:c02", + "computer-organization-026:s53:c01", + "computer-organization-003:h-2022秋计算机组成复习要点:c03", + "computer-organization-036:h-题:c02", + "computer-organization-014:h-b:c02", + "computer-organization-026:s11:c01", + "computer-organization-032:s45:c01", + "computer-organization-026:s116:c01", + "computer-organization-032:s38:c01", + "computer-organization-039:h-题:c02", + "computer-organization-002:q-computer-organization-002-q23:c01", + "computer-organization-027:s9:c01", + "computer-organization-069:h-答案:c01", + "computer-organization-008:h-b:c03", + "computer-organization-013:h-b:c03", + "computer-organization-026:s63:c01", + "computer-organization-028:s7:c01" + ] + }, + { + "case_id": "web-margin-1", + "topic_id": "web-margin", + "course_id": "web_frontend_fundamentals", + "scenario": "concept", + "split": "validation", + "query": "CSS只想增加元素下面的外边距,应该改哪个属性?", + "top_chunk_ids": [ + "web-frontend-fundamentals-014:s32:c01", + "web-frontend-fundamentals-014:s34:c01", + "web-frontend-fundamentals-015:s26:c01", + "web-frontend-fundamentals-014:s22:c01", + "web-frontend-fundamentals-014:s33:c01", + "web-frontend-fundamentals-014:s37:c01", + "web-frontend-fundamentals-015:s3:c01", + "web-frontend-fundamentals-017:s17:c01", + "web-frontend-fundamentals-017:s15:c01", + "web-frontend-fundamentals-017:s14:c01", + "web-frontend-fundamentals-014:s29:c01", + "web-frontend-fundamentals-006:s21:c01", + "web-frontend-fundamentals-013:s3:c01", + "web-frontend-fundamentals-014:s31:c01", + "web-frontend-fundamentals-007:s23:c01", + "web-frontend-fundamentals-007:s32:c01", + "web-frontend-fundamentals-014:s20:c01", + "web-frontend-fundamentals-013:s33:c01", + "web-frontend-fundamentals-018:s22:c01", + "web-frontend-fundamentals-015:s39:c01" + ], + "duration_ms": 95.828, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "web-frontend-fundamentals-014:s34:c01", + "web-frontend-fundamentals-015:s26:c01", + "web-frontend-fundamentals-014:s22:c01", + "web-frontend-fundamentals-014:s33:c01", + "web-frontend-fundamentals-014:s37:c01", + "web-frontend-fundamentals-015:s3:c01", + "web-frontend-fundamentals-017:s17:c01", + "web-frontend-fundamentals-017:s15:c01", + "web-frontend-fundamentals-017:s14:c01", + "web-frontend-fundamentals-014:s29:c01", + "web-frontend-fundamentals-006:s21:c01", + "web-frontend-fundamentals-013:s3:c01", + "web-frontend-fundamentals-014:s31:c01", + "web-frontend-fundamentals-007:s23:c01", + "web-frontend-fundamentals-007:s32:c01", + "web-frontend-fundamentals-014:s20:c01", + "web-frontend-fundamentals-013:s33:c01", + "web-frontend-fundamentals-018:s22:c01", + "web-frontend-fundamentals-015:s39:c01" + ] + }, + { + "case_id": "web-margin-2", + "topic_id": "web-margin", + "course_id": "web_frontend_fundamentals", + "scenario": "concept", + "split": "validation", + "query": "不想动上左右间距,只想让一个块和下一个块离远一点,margin还是margin-bottom?", + "top_chunk_ids": [ + "web-frontend-fundamentals-014:s36:c01", + "web-frontend-fundamentals-014:s32:c01", + "web-frontend-fundamentals-003:s8:c01", + "web-frontend-fundamentals-015:s17:c01", + "web-frontend-fundamentals-010:s2:c01", + "web-frontend-fundamentals-015:s20:c01", + "web-frontend-fundamentals-015:s8:c01", + "web-frontend-fundamentals-014:s27:c01", + "web-frontend-fundamentals-016:s5:c01", + "web-frontend-fundamentals-015:s18:c01", + "web-frontend-fundamentals-013:s38:c01", + "web-frontend-fundamentals-014:s13:c01", + "web-frontend-fundamentals-006:s30:c01", + "web-frontend-fundamentals-015:s13:c01", + "web-frontend-fundamentals-014:s29:c01", + "web-frontend-fundamentals-014:s20:c01", + "web-frontend-fundamentals-014:s28:c01", + "web-frontend-fundamentals-015:s12:c01", + "web-frontend-fundamentals-006:s14:c01", + "web-frontend-fundamentals-008:s13:c01" + ], + "duration_ms": 17.374, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "web-frontend-fundamentals-014:s36:c01", + "web-frontend-fundamentals-003:s8:c01", + "web-frontend-fundamentals-015:s17:c01", + "web-frontend-fundamentals-010:s2:c01", + "web-frontend-fundamentals-015:s20:c01", + "web-frontend-fundamentals-015:s8:c01", + "web-frontend-fundamentals-014:s27:c01", + "web-frontend-fundamentals-016:s5:c01", + "web-frontend-fundamentals-015:s18:c01", + "web-frontend-fundamentals-013:s38:c01", + "web-frontend-fundamentals-014:s13:c01", + "web-frontend-fundamentals-006:s30:c01", + "web-frontend-fundamentals-015:s13:c01", + "web-frontend-fundamentals-014:s29:c01", + "web-frontend-fundamentals-014:s20:c01", + "web-frontend-fundamentals-014:s28:c01", + "web-frontend-fundamentals-015:s12:c01", + "web-frontend-fundamentals-006:s14:c01", + "web-frontend-fundamentals-008:s13:c01" + ] + }, + { + "case_id": "discrete-partition-1", + "topic_id": "discrete-partition", + "course_id": "discrete_mathematics", + "scenario": "problem", + "split": "dev", + "query": "A={a,b,c,d},等价关系R={(a,b),(b,a),(c,d),(d,c)}∪I_A,对应什么划分?", + "top_chunk_ids": [ + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q20:c01", + "discrete-mathematics-005:p6:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-005:p5:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p7:q-discrete-mathematics-003-q34:c01", + "discrete-mathematics-005:p2:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p5:q-discrete-mathematics-003-q22:c01", + "discrete-mathematics-005:p1:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-005:p3:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q9:c01", + "discrete-mathematics-005:p4:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-006:p5:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-005:p7:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-006:p1:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q19:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q9:c03", + "discrete-mathematics-006:p4:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-006:p6:q-discrete-mathematics-006-q5:c01", + "discrete-mathematics-006:p2:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q18:c01", + "discrete-mathematics-006:p3:q-discrete-mathematics-006-q4:c01" + ], + "duration_ms": 16.58, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "discrete-mathematics-005:p6:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-005:p5:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p7:q-discrete-mathematics-003-q34:c01", + "discrete-mathematics-005:p2:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p5:q-discrete-mathematics-003-q22:c01", + "discrete-mathematics-005:p1:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-005:p3:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q9:c01", + "discrete-mathematics-005:p4:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-006:p5:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-005:p7:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-006:p1:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q19:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q9:c03", + "discrete-mathematics-006:p4:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-006:p6:q-discrete-mathematics-006-q5:c01", + "discrete-mathematics-006:p2:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q18:c01", + "discrete-mathematics-006:p3:q-discrete-mathematics-006-q4:c01" + ] + }, + { + "case_id": "discrete-partition-2", + "topic_id": "discrete-partition", + "course_id": "discrete_mathematics", + "scenario": "problem", + "split": "dev", + "query": "a和b等价,c和d等价,每个元素也与自己等价,为什么不是四个单独的等价类?", + "top_chunk_ids": [ + "discrete-mathematics-005:p6:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-005:p5:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q20:c01", + "discrete-mathematics-005:p2:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p5:q-discrete-mathematics-003-q22:c01", + "discrete-mathematics-005:p4:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p7:q-discrete-mathematics-003-q34:c01", + "discrete-mathematics-006:p2:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-006:p4:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-005:p3:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-006:p5:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-003:p5:q-discrete-mathematics-003-q26:c01", + "discrete-mathematics-006:p3:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-005:p1:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q18:c01", + "discrete-mathematics-006:p6:q-discrete-mathematics-006-q5:c01", + "discrete-mathematics-003:p5:q-discrete-mathematics-003-q24:c01", + "discrete-mathematics-006:p1:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-006:p7:q-discrete-mathematics-006-q5:c01", + "discrete-mathematics-003:p8:q-discrete-mathematics-003-q35:c01" + ], + "duration_ms": 5.798, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "discrete-mathematics-005:p6:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-005:p5:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-005:p2:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p5:q-discrete-mathematics-003-q22:c01", + "discrete-mathematics-005:p4:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p7:q-discrete-mathematics-003-q34:c01", + "discrete-mathematics-006:p2:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-006:p4:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-005:p3:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-006:p5:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-003:p5:q-discrete-mathematics-003-q26:c01", + "discrete-mathematics-006:p3:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-005:p1:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q18:c01", + "discrete-mathematics-006:p6:q-discrete-mathematics-006-q5:c01", + "discrete-mathematics-003:p5:q-discrete-mathematics-003-q24:c01", + "discrete-mathematics-006:p1:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-006:p7:q-discrete-mathematics-006-q5:c01", + "discrete-mathematics-003:p8:q-discrete-mathematics-003-q35:c01" + ] + }, + { + "case_id": "electrical-plan-1", + "topic_id": "electrical-plan", + "course_id": "electrical_engineering", + "scenario": "review", + "split": "dev", + "query": "电路复习大纲里一阶暂态分析要掌握哪三个量?我想先按它们安排练习。", + "top_chunk_ids": [ + "electrical-engineering-009:h-电路与电子技术-复习大纲:c01", + "electrical-engineering-008:p1:c01", + "electrical-engineering-009:h-电路与电子技术-复习大纲:c02", + "electrical-engineering-008:p2:c01", + "electrical-engineering-008:p3:c01", + "electrical-engineering-008:p4:c01", + "electrical-engineering-008:p5:c01", + "electrical-engineering-001:p1:c01", + "electrical-engineering-001:p2:c01", + "electrical-engineering-001:p3:c01", + "electrical-engineering-001:p4:c01", + "electrical-engineering-001:p5:c01", + "electrical-engineering-001:p6:c01", + "electrical-engineering-001:p7:c01" + ], + "duration_ms": 12.672, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "electrical-engineering-008:p1:c01", + "electrical-engineering-009:h-电路与电子技术-复习大纲:c02", + "electrical-engineering-008:p2:c01", + "electrical-engineering-008:p3:c01", + "electrical-engineering-008:p4:c01", + "electrical-engineering-008:p5:c01", + "electrical-engineering-001:p1:c01", + "electrical-engineering-001:p2:c01", + "electrical-engineering-001:p3:c01", + "electrical-engineering-001:p4:c01", + "electrical-engineering-001:p5:c01", + "electrical-engineering-001:p6:c01", + "electrical-engineering-001:p7:c01" + ] + }, + { + "case_id": "electrical-plan-2", + "topic_id": "electrical-plan", + "course_id": "electrical_engineering", + "scenario": "review", + "split": "dev", + "query": "复习RC/RL一阶暂态时,初始值、最终值和变化快慢分别对应大纲中的什么?", + "top_chunk_ids": [ + "electrical-engineering-008:p1:c01", + "electrical-engineering-009:h-电路与电子技术-复习大纲:c01", + "electrical-engineering-008:p3:c01", + "electrical-engineering-009:h-电路与电子技术-复习大纲:c02", + "electrical-engineering-008:p2:c01", + "electrical-engineering-008:p4:c01", + "electrical-engineering-008:p5:c01", + "electrical-engineering-001:p1:c01", + "electrical-engineering-001:p2:c01", + "electrical-engineering-001:p3:c01", + "electrical-engineering-001:p4:c01", + "electrical-engineering-001:p5:c01", + "electrical-engineering-001:p6:c01", + "electrical-engineering-001:p7:c01" + ], + "duration_ms": 3.98, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "electrical-engineering-008:p1:c01", + "electrical-engineering-008:p3:c01", + "electrical-engineering-009:h-电路与电子技术-复习大纲:c02", + "electrical-engineering-008:p2:c01", + "electrical-engineering-008:p4:c01", + "electrical-engineering-008:p5:c01", + "electrical-engineering-001:p1:c01", + "electrical-engineering-001:p2:c01", + "electrical-engineering-001:p3:c01", + "electrical-engineering-001:p4:c01", + "electrical-engineering-001:p5:c01", + "electrical-engineering-001:p6:c01", + "electrical-engineering-001:p7:c01" + ] + }, + { + "case_id": "ds-source-error-1", + "topic_id": "ds-source-error", + "course_id": "data_structure", + "scenario": "source_correction", + "split": "dev", + "query": "资料说切换到std::sort就确保排序稳定,这句话对吗?", + "top_chunk_ids": [ + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c03", + "data-structure-016:p1:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02", + "data-structure-004:h-sort_faster:c01", + "data-structure-029:h-1:c01", + "data-structure-003:h-contrary:c01", + "data-structure-022:h-2025-a-辅修班卷子:c02", + "data-structure-024:p6:c01", + "data-structure-005:h-1:c01", + "data-structure-008:h-4:c01", + "data-structure-018:h-2023-a-数据结构-初稿:c01", + "data-structure-006:h-2:c01", + "data-structure-010:h-2011级数据结构试卷a及答案:c03", + "data-structure-015:h-2016数据结构试卷b及答案:c02", + "data-structure-020:h-2024-a-数据结构:c05", + "data-structure-012:q-data-structure-012-q1:c02", + "data-structure-024:p1:c01", + "data-structure-020:h-2024-a-数据结构:c07", + "data-structure-020:h-2024-a-数据结构:c02" + ], + "duration_ms": 14.213, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "data-structure-016:p1:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02", + "data-structure-004:h-sort_faster:c01", + "data-structure-029:h-1:c01", + "data-structure-003:h-contrary:c01", + "data-structure-022:h-2025-a-辅修班卷子:c02", + "data-structure-024:p6:c01", + "data-structure-005:h-1:c01", + "data-structure-008:h-4:c01", + "data-structure-018:h-2023-a-数据结构-初稿:c01", + "data-structure-006:h-2:c01", + "data-structure-010:h-2011级数据结构试卷a及答案:c03", + "data-structure-015:h-2016数据结构试卷b及答案:c02", + "data-structure-020:h-2024-a-数据结构:c05", + "data-structure-012:q-data-structure-012-q1:c02", + "data-structure-024:p1:c01", + "data-structure-020:h-2024-a-数据结构:c07", + "data-structure-020:h-2024-a-数据结构:c02" + ] + }, + { + "case_id": "ds-source-error-2", + "topic_id": "ds-source-error", + "course_id": "data_structure", + "scenario": "source_correction", + "split": "dev", + "query": "相同分数的学生必须保留原先先后顺序,笔记建议用std::sort,我能直接照做吗?", + "top_chunk_ids": [ + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c01", + "data-structure-004:h-sort_faster:c01", + "data-structure-016:p1:c01", + "data-structure-029:h-1:c01", + "data-structure-003:h-contrary:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c03", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02", + "data-structure-019:p1:c01", + "data-structure-024:p1:c01", + "data-structure-005:h-1:c01", + "data-structure-008:h-4:c01", + "data-structure-024:p2:c01", + "data-structure-023:h-作业及分析:c01", + "data-structure-011:h-2012数据结构试卷a及答案:c01", + "data-structure-014:h-2016数据结构试卷a及答案:c01", + "data-structure-022:h-2025-a-辅修班卷子:c03", + "data-structure-018:h-2023-a-数据结构-初稿:c01", + "data-structure-006:h-2:c01", + "data-structure-010:h-2011级数据结构试卷a及答案:c03", + "data-structure-015:h-2016数据结构试卷b及答案:c02" + ], + "duration_ms": 14.014, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.16666666666666666, + "unjudged_chunk_ids": [ + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c01", + "data-structure-004:h-sort_faster:c01", + "data-structure-016:p1:c01", + "data-structure-029:h-1:c01", + "data-structure-003:h-contrary:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02", + "data-structure-019:p1:c01", + "data-structure-024:p1:c01", + "data-structure-005:h-1:c01", + "data-structure-008:h-4:c01", + "data-structure-024:p2:c01", + "data-structure-023:h-作业及分析:c01", + "data-structure-011:h-2012数据结构试卷a及答案:c01", + "data-structure-014:h-2016数据结构试卷a及答案:c01", + "data-structure-022:h-2025-a-辅修班卷子:c03", + "data-structure-018:h-2023-a-数据结构-初稿:c01", + "data-structure-006:h-2:c01", + "data-structure-010:h-2011级数据结构试卷a及答案:c03", + "data-structure-015:h-2016数据结构试卷b及答案:c02" + ] + } + ], + "by_course_id": { + "linear_algebra": { + "queries": 2, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.35 + }, + "probability_theory": { + "queries": 4, + "known_evidence_coverage_at_5": 0.25, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_5": 0.25, + "all_evidence_groups_at_20": 0.5, + "known_positive_mrr": 0.270833 + }, + "algorithm_design_and_analysis": { + "queries": 2, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "data_structure": { + "queries": 4, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.625 + }, + "database": { + "queries": 6, + "known_evidence_coverage_at_5": 0.666667, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.666667, + "all_evidence_groups_at_20": 0.833333, + "known_positive_mrr": 0.431481 + }, + "operating_systems": { + "queries": 6, + "known_evidence_coverage_at_5": 0.166667, + "known_evidence_coverage_at_20": 0.666667, + "all_evidence_groups_at_5": 0.166667, + "all_evidence_groups_at_20": 0.666667, + "known_positive_mrr": 0.082257 + }, + "compiler_principles": { + "queries": 4, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.767857 + }, + "computer_networks": { + "queries": 4, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 0.75, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 0.75, + "known_positive_mrr": 0.625 + }, + "software_testing": { + "queries": 6, + "known_evidence_coverage_at_5": 0.666667, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.666667, + "all_evidence_groups_at_20": 0.833333, + "known_positive_mrr": 0.431818 + }, + "artificial_intelligence_intro": { + "queries": 4, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.647727 + }, + "computer_organization": { + "queries": 2, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.5625 + }, + "web_frontend_fundamentals": { + "queries": 2, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.75 + }, + "discrete_mathematics": { + "queries": 2, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.666667 + }, + "electrical_engineering": { + "queries": 2, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.75 + } + }, + "by_scenario": { + "concept": { + "queries": 24, + "known_evidence_coverage_at_5": 0.625, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.625, + "all_evidence_groups_at_20": 0.833333, + "known_positive_mrr": 0.440672 + }, + "problem": { + "queries": 14, + "known_evidence_coverage_at_5": 0.642857, + "known_evidence_coverage_at_20": 0.785714, + "all_evidence_groups_at_5": 0.642857, + "all_evidence_groups_at_20": 0.785714, + "known_positive_mrr": 0.552721 + }, + "mistake": { + "queries": 4, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.149116 + }, + "review": { + "queries": 4, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.875 + }, + "evidence_bundle": { + "queries": 2, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "source_correction": { + "queries": 2, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.583333 + } + }, + "by_split": { + "validation": { + "queries": 24, + "known_evidence_coverage_at_5": 0.625, + "known_evidence_coverage_at_20": 0.916667, + "all_evidence_groups_at_5": 0.625, + "all_evidence_groups_at_20": 0.916667, + "known_positive_mrr": 0.490838 + }, + "dev": { + "queries": 26, + "known_evidence_coverage_at_5": 0.692308, + "known_evidence_coverage_at_20": 0.807692, + "all_evidence_groups_at_5": 0.692308, + "all_evidence_groups_at_20": 0.807692, + "known_positive_mrr": 0.530662 + } + } +} diff --git a/apps/scut-senior/resources/evaluation/reviewed-v2/baseline-hybrid.json b/apps/scut-senior/resources/evaluation/reviewed-v2/baseline-hybrid.json new file mode 100644 index 00000000..013e08f8 --- /dev/null +++ b/apps/scut-senior/resources/evaluation/reviewed-v2/baseline-hybrid.json @@ -0,0 +1,3059 @@ +{ + "schema_version": "reviewed-retrieval-report-v2", + "corpus_version": "corpus-c1513a68ccd7-b0_2_0-m1200-wworkflow-contract-v1-ooutline-none-v1-ebge-small-zh-v1.5", + "suite_sha256": "7a93284c39ea8d81e0864668f91f208cf98ed125f22e645cf102ba5dbc5cffc5", + "mode": "hybrid", + "min_score": 1.0, + "split": "all", + "validation": { + "queries": 50, + "topics": 25, + "courses": 14, + "evidence_chunks": 27 + }, + "summary": { + "queries": 50, + "known_evidence_coverage_at_5": 0.66, + "known_evidence_coverage_at_20": 0.86, + "all_evidence_groups_at_5": 0.66, + "all_evidence_groups_at_20": 0.86, + "known_positive_mrr": 0.511547 + }, + "interpretation": "Known-positive lower bounds; unjudged candidates require review, never automatic negative labels. No generation or answer-quality score. Timing includes first-load overhead.", + "entries": [ + { + "case_id": "la-diagonalization-1", + "topic_id": "la-diagonalization", + "course_id": "linear_algebra", + "scenario": "concept", + "split": "validation", + "query": "矩阵可对角化的充要条件是什么?为什么特征值互不相同只是充分条件?", + "top_chunk_ids": [ + "linear-algebra-014:p1:q-linear-algebra-014-q6:c01", + "linear-algebra-012:p2:q-linear-algebra-012-q10:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q5:c01", + "linear-algebra-020:p1:q-linear-algebra-020-q3:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q3:c01", + "linear-algebra-014:p1:q-linear-algebra-014-q5:c01", + "linear-algebra-014:p1:q-linear-algebra-014-q2:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q2:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q4:c01", + "linear-algebra-012:p1:q-linear-algebra-012-q6:c01", + "linear-algebra-013:p4:q-linear-algebra-013-q12:c01", + "linear-algebra-018:p2:q-linear-algebra-018-q21:c01", + "linear-algebra-012:p2:q-linear-algebra-012-q11:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q7:c01", + "linear-algebra-022:s2:c05", + "linear-algebra-020:p2:q-linear-algebra-020-q18:c01", + "linear-algebra-014:p3:q-linear-algebra-014-q15:c01", + "linear-algebra-016:p3:q-linear-algebra-016-q15:c01", + "linear-algebra-012:p3:q-linear-algebra-012-q20:c01", + "linear-algebra-014:p2:q-linear-algebra-014-q12:c01" + ], + "duration_ms": 676.974, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "linear-algebra-014:p1:q-linear-algebra-014-q6:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q5:c01", + "linear-algebra-020:p1:q-linear-algebra-020-q3:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q3:c01", + "linear-algebra-014:p1:q-linear-algebra-014-q5:c01", + "linear-algebra-014:p1:q-linear-algebra-014-q2:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q2:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q4:c01", + "linear-algebra-012:p1:q-linear-algebra-012-q6:c01", + "linear-algebra-013:p4:q-linear-algebra-013-q12:c01", + "linear-algebra-018:p2:q-linear-algebra-018-q21:c01", + "linear-algebra-012:p2:q-linear-algebra-012-q11:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q7:c01", + "linear-algebra-022:s2:c05", + "linear-algebra-020:p2:q-linear-algebra-020-q18:c01", + "linear-algebra-014:p3:q-linear-algebra-014-q15:c01", + "linear-algebra-016:p3:q-linear-algebra-016-q15:c01", + "linear-algebra-012:p3:q-linear-algebra-012-q20:c01", + "linear-algebra-014:p2:q-linear-algebra-014-q12:c01" + ] + }, + { + "case_id": "la-diagonalization-2", + "topic_id": "la-diagonalization", + "course_id": "linear_algebra", + "scenario": "concept", + "split": "validation", + "query": "有重根就一定不能化成对角矩阵吗?请用单位矩阵说明。", + "top_chunk_ids": [ + "linear-algebra-012:p3:q-linear-algebra-012-q21:c01", + "linear-algebra-012:p3:q-linear-algebra-012-q22:c01", + "linear-algebra-012:p1:q-linear-algebra-012-q6:c01", + "linear-algebra-014:p1:q-linear-algebra-014-q2:c01", + "linear-algebra-012:p2:q-linear-algebra-012-q10:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q2:c01", + "linear-algebra-014:p1:q-linear-algebra-014-q6:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q5:c01", + "linear-algebra-012:p2:q-linear-algebra-012-q11:c01", + "linear-algebra-014:p2:q-linear-algebra-014-q12:c01", + "linear-algebra-016:p2:q-linear-algebra-016-q12:c01", + "linear-algebra-014:p1:q-linear-algebra-014-q1:c01", + "linear-algebra-013:p4:q-linear-algebra-013-q11:c01", + "linear-algebra-021:p3:q-linear-algebra-021-q14:c01", + "linear-algebra-022:s1:c02", + "linear-algebra-020:p1:q-linear-algebra-020-q3:c01", + "linear-algebra-012:p1:q-linear-algebra-012-q8:c01", + "linear-algebra-019:p3:q-linear-algebra-019-q14:c01", + "linear-algebra-018:p1:q-linear-algebra-018-q3:c01", + "linear-algebra-022:s2:c05" + ], + "duration_ms": 85.905, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.2, + "unjudged_chunk_ids": [ + "linear-algebra-012:p3:q-linear-algebra-012-q21:c01", + "linear-algebra-012:p3:q-linear-algebra-012-q22:c01", + "linear-algebra-012:p1:q-linear-algebra-012-q6:c01", + "linear-algebra-014:p1:q-linear-algebra-014-q2:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q2:c01", + "linear-algebra-014:p1:q-linear-algebra-014-q6:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q5:c01", + "linear-algebra-012:p2:q-linear-algebra-012-q11:c01", + "linear-algebra-014:p2:q-linear-algebra-014-q12:c01", + "linear-algebra-016:p2:q-linear-algebra-016-q12:c01", + "linear-algebra-014:p1:q-linear-algebra-014-q1:c01", + "linear-algebra-013:p4:q-linear-algebra-013-q11:c01", + "linear-algebra-021:p3:q-linear-algebra-021-q14:c01", + "linear-algebra-022:s1:c02", + "linear-algebra-020:p1:q-linear-algebra-020-q3:c01", + "linear-algebra-012:p1:q-linear-algebra-012-q8:c01", + "linear-algebra-019:p3:q-linear-algebra-019-q14:c01", + "linear-algebra-018:p1:q-linear-algebra-018-q3:c01", + "linear-algebra-022:s2:c05" + ] + }, + { + "case_id": "prob-t-symmetry-1", + "topic_id": "prob-t-symmetry", + "course_id": "probability_theory", + "scenario": "problem", + "split": "validation", + "query": "T服从t分布,若P(T>λ)=α,P(T<−λ)是多少?", + "top_chunk_ids": [ + "probability-theory-010:q-probability-theory-010-q1:c01", + "probability-theory-018:p1:q-probability-theory-018-q7:c01", + "probability-theory-030:q-probability-theory-030-q2:c01", + "probability-theory-020:p3:c01", + "probability-theory-022:p4:q-probability-theory-022-q15:c01", + "probability-theory-031:q-probability-theory-031-q2:c01", + "probability-theory-035:q-probability-theory-035-q1:c02", + "probability-theory-017:p1:c01", + "probability-theory-012:q-probability-theory-012-q6:c01", + "probability-theory-022:p4:q-probability-theory-022-q14:c01", + "probability-theory-011:q-probability-theory-011-q4:c01", + "probability-theory-015:q-probability-theory-015-q5:c01", + "probability-theory-014:p1:q-probability-theory-014-q3:c01", + "probability-theory-034:q-probability-theory-034-q2:c01", + "probability-theory-023:p4:q-probability-theory-023-q12:c01", + "probability-theory-021:p2:c01", + "probability-theory-010:q-probability-theory-010-q13:c01", + "probability-theory-033:h-2016春季a卷答案:c07", + "probability-theory-015:q-probability-theory-015-q1:c01", + "probability-theory-035:q-probability-theory-035-q1:c01" + ], + "duration_ms": 145.694, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "probability-theory-018:p1:q-probability-theory-018-q7:c01", + "probability-theory-030:q-probability-theory-030-q2:c01", + "probability-theory-020:p3:c01", + "probability-theory-022:p4:q-probability-theory-022-q15:c01", + "probability-theory-031:q-probability-theory-031-q2:c01", + "probability-theory-035:q-probability-theory-035-q1:c02", + "probability-theory-017:p1:c01", + "probability-theory-012:q-probability-theory-012-q6:c01", + "probability-theory-022:p4:q-probability-theory-022-q14:c01", + "probability-theory-011:q-probability-theory-011-q4:c01", + "probability-theory-015:q-probability-theory-015-q5:c01", + "probability-theory-014:p1:q-probability-theory-014-q3:c01", + "probability-theory-034:q-probability-theory-034-q2:c01", + "probability-theory-023:p4:q-probability-theory-023-q12:c01", + "probability-theory-021:p2:c01", + "probability-theory-010:q-probability-theory-010-q13:c01", + "probability-theory-033:h-2016春季a卷答案:c07", + "probability-theory-015:q-probability-theory-015-q1:c01", + "probability-theory-035:q-probability-theory-035-q1:c01" + ] + }, + { + "case_id": "prob-t-symmetry-2", + "topic_id": "prob-t-symmetry", + "course_id": "probability_theory", + "scenario": "problem", + "split": "validation", + "query": "t分布右边尾巴的面积是α,关于0对称的左边尾巴也是α,还是α/2?", + "top_chunk_ids": [ + "probability-theory-014:p3:q-probability-theory-014-q22:c01", + "probability-theory-023:p2:q-probability-theory-023-q5:c01", + "probability-theory-036:q-probability-theory-036-q4:c04", + "probability-theory-025:p3:q-probability-theory-025-q12:c01", + "probability-theory-018:p4:q-probability-theory-018-q29:c01", + "probability-theory-012:q-probability-theory-012-q11:c01", + "probability-theory-036:q-probability-theory-036-q6:c01", + "probability-theory-018:p1:q-probability-theory-018-q7:c01", + "probability-theory-033:q-probability-theory-033-q3:c01", + "probability-theory-024:p2:c01", + "probability-theory-017:p1:c01", + "probability-theory-010:q-probability-theory-010-q1:c01", + "probability-theory-018:p3:q-probability-theory-018-q20:c01", + "probability-theory-018:p1:q-probability-theory-018-q4:c01", + "probability-theory-018:p3:q-probability-theory-018-q23:c01", + "probability-theory-023:p5:q-probability-theory-023-q19:c01", + "probability-theory-023:p1:q-probability-theory-023-q3:c01", + "probability-theory-014:p1:c01", + "probability-theory-022:p5:q-probability-theory-022-q21:c01", + "probability-theory-023:p6:q-probability-theory-023-q19:c01" + ], + "duration_ms": 64.38, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.08333333333333333, + "unjudged_chunk_ids": [ + "probability-theory-014:p3:q-probability-theory-014-q22:c01", + "probability-theory-023:p2:q-probability-theory-023-q5:c01", + "probability-theory-036:q-probability-theory-036-q4:c04", + "probability-theory-025:p3:q-probability-theory-025-q12:c01", + "probability-theory-018:p4:q-probability-theory-018-q29:c01", + "probability-theory-012:q-probability-theory-012-q11:c01", + "probability-theory-036:q-probability-theory-036-q6:c01", + "probability-theory-018:p1:q-probability-theory-018-q7:c01", + "probability-theory-033:q-probability-theory-033-q3:c01", + "probability-theory-024:p2:c01", + "probability-theory-017:p1:c01", + "probability-theory-018:p3:q-probability-theory-018-q20:c01", + "probability-theory-018:p1:q-probability-theory-018-q4:c01", + "probability-theory-018:p3:q-probability-theory-018-q23:c01", + "probability-theory-023:p5:q-probability-theory-023-q19:c01", + "probability-theory-023:p1:q-probability-theory-023-q3:c01", + "probability-theory-014:p1:c01", + "probability-theory-022:p5:q-probability-theory-022-q21:c01", + "probability-theory-023:p6:q-probability-theory-023-q19:c01" + ] + }, + { + "case_id": "prob-unbiased-1", + "topic_id": "prob-unbiased", + "course_id": "probability_theory", + "scenario": "problem", + "split": "validation", + "query": "独立同分布样本方差σ²>0,用权重(1/2,1/3,1/6)、(1/2,1/4,1/4)、(1/3,1/3,1/3)、(1/5,2/5,2/5)估计均值,哪个方差最小?", + "top_chunk_ids": [ + "probability-theory-020:p2:c01", + "probability-theory-022:p3:q-probability-theory-022-q10:c01", + "probability-theory-018:p1:q-probability-theory-018-q5:c01", + "probability-theory-022:p2:q-probability-theory-022-q10:c01", + "probability-theory-027:p2:q-probability-theory-027-q7:c01", + "probability-theory-022:p3:q-probability-theory-022-q11:c01", + "probability-theory-022:p2:q-probability-theory-022-q7:c01", + "probability-theory-026:p1:c01", + "probability-theory-025:p4:q-probability-theory-025-q13:c01", + "probability-theory-022:p3:q-probability-theory-022-q12:c01", + "probability-theory-017:p1:c01", + "probability-theory-035:q-probability-theory-035-q1:c01", + "probability-theory-033:h-2016春季a卷答案:c05", + "probability-theory-024:p2:c01", + "probability-theory-029:h-2013春-a无答案:c01", + "probability-theory-031:q-probability-theory-031-q6:c01", + "probability-theory-020:p1:c01", + "probability-theory-028:h-2013春-a:c01", + "probability-theory-032:h-2016春季a卷无答案:c02", + "probability-theory-027:p1:q-probability-theory-027-q5:c01" + ], + "duration_ms": 76.533, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "probability-theory-020:p2:c01", + "probability-theory-022:p3:q-probability-theory-022-q10:c01", + "probability-theory-018:p1:q-probability-theory-018-q5:c01", + "probability-theory-022:p2:q-probability-theory-022-q10:c01", + "probability-theory-027:p2:q-probability-theory-027-q7:c01", + "probability-theory-022:p3:q-probability-theory-022-q11:c01", + "probability-theory-022:p2:q-probability-theory-022-q7:c01", + "probability-theory-026:p1:c01", + "probability-theory-025:p4:q-probability-theory-025-q13:c01", + "probability-theory-022:p3:q-probability-theory-022-q12:c01", + "probability-theory-017:p1:c01", + "probability-theory-035:q-probability-theory-035-q1:c01", + "probability-theory-033:h-2016春季a卷答案:c05", + "probability-theory-024:p2:c01", + "probability-theory-029:h-2013春-a无答案:c01", + "probability-theory-031:q-probability-theory-031-q6:c01", + "probability-theory-020:p1:c01", + "probability-theory-028:h-2013春-a:c01", + "probability-theory-032:h-2016春季a卷无答案:c02", + "probability-theory-027:p1:q-probability-theory-027-q5:c01" + ] + }, + { + "case_id": "prob-unbiased-2", + "topic_id": "prob-unbiased", + "course_id": "probability_theory", + "scenario": "problem", + "split": "validation", + "query": "四种加权平均都无偏时,为什么平均分配三个样本的权重更有效?假定样本独立同分布且方差为正。", + "top_chunk_ids": [ + "probability-theory-022:p3:q-probability-theory-022-q10:c01", + "probability-theory-022:p2:q-probability-theory-022-q10:c01", + "probability-theory-018:p1:q-probability-theory-018-q5:c01", + "probability-theory-020:p2:c01", + "probability-theory-022:p2:q-probability-theory-022-q7:c01", + "probability-theory-022:p3:q-probability-theory-022-q12:c01", + "probability-theory-035:q-probability-theory-035-q1:c01", + "probability-theory-027:p2:q-probability-theory-027-q7:c01", + "probability-theory-025:p4:q-probability-theory-025-q13:c01", + "probability-theory-017:p1:c01", + "probability-theory-031:q-probability-theory-031-q6:c01", + "probability-theory-026:p1:c01", + "probability-theory-018:p1:q-probability-theory-018-q4:c01", + "probability-theory-027:p5:q-probability-theory-027-q16:c01", + "probability-theory-020:p1:c01", + "probability-theory-025:p5:q-probability-theory-025-q18:c01", + "probability-theory-027:p1:q-probability-theory-027-q5:c01", + "probability-theory-010:q-probability-theory-010-q4:c03", + "probability-theory-024:p2:c01", + "probability-theory-026:p3:c01" + ], + "duration_ms": 69.294, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "probability-theory-022:p3:q-probability-theory-022-q10:c01", + "probability-theory-022:p2:q-probability-theory-022-q10:c01", + "probability-theory-018:p1:q-probability-theory-018-q5:c01", + "probability-theory-020:p2:c01", + "probability-theory-022:p2:q-probability-theory-022-q7:c01", + "probability-theory-022:p3:q-probability-theory-022-q12:c01", + "probability-theory-035:q-probability-theory-035-q1:c01", + "probability-theory-027:p2:q-probability-theory-027-q7:c01", + "probability-theory-025:p4:q-probability-theory-025-q13:c01", + "probability-theory-017:p1:c01", + "probability-theory-031:q-probability-theory-031-q6:c01", + "probability-theory-026:p1:c01", + "probability-theory-018:p1:q-probability-theory-018-q4:c01", + "probability-theory-027:p5:q-probability-theory-027-q16:c01", + "probability-theory-020:p1:c01", + "probability-theory-025:p5:q-probability-theory-025-q18:c01", + "probability-theory-027:p1:q-probability-theory-027-q5:c01", + "probability-theory-010:q-probability-theory-010-q4:c03", + "probability-theory-024:p2:c01", + "probability-theory-026:p3:c01" + ] + }, + { + "case_id": "algo-knapsack-1", + "topic_id": "algo-knapsack", + "course_id": "algorithm_design_and_analysis", + "scenario": "problem", + "split": "validation", + "query": "2023-2024 B卷容量22、体积3/5/7/8/9、价值4/6/7/9/10的0-1背包题怎么做?", + "top_chunk_ids": [ + "algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q13:c01", + "algorithm-design-and-analysis-028:p6:c01", + "algorithm-design-and-analysis-023:p4:c01", + "algorithm-design-and-analysis-028:p4:c01", + "algorithm-design-and-analysis-028:p3:c01", + "algorithm-design-and-analysis-028:p5:c01", + "algorithm-design-and-analysis-023:p8:c01", + "algorithm-design-and-analysis-001:p2:q-algorithm-design-and-analysis-001-q11:c01", + "algorithm-design-and-analysis-027:p2:c01", + "algorithm-design-and-analysis-023:p7:c01", + "algorithm-design-and-analysis-024:p2:c01", + "algorithm-design-and-analysis-028:p7:c01", + "algorithm-design-and-analysis-005:p17:c01", + "algorithm-design-and-analysis-024:p3:c01", + "algorithm-design-and-analysis-027:p1:c01", + "algorithm-design-and-analysis-023:p6:c01", + "algorithm-design-and-analysis-024:p4:c01", + "algorithm-design-and-analysis-027:p9:c01", + "algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q12:c01", + "algorithm-design-and-analysis-024:p5:c01" + ], + "duration_ms": 153.774, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "algorithm-design-and-analysis-028:p6:c01", + "algorithm-design-and-analysis-023:p4:c01", + "algorithm-design-and-analysis-028:p4:c01", + "algorithm-design-and-analysis-028:p3:c01", + "algorithm-design-and-analysis-028:p5:c01", + "algorithm-design-and-analysis-023:p8:c01", + "algorithm-design-and-analysis-001:p2:q-algorithm-design-and-analysis-001-q11:c01", + "algorithm-design-and-analysis-027:p2:c01", + "algorithm-design-and-analysis-023:p7:c01", + "algorithm-design-and-analysis-024:p2:c01", + "algorithm-design-and-analysis-028:p7:c01", + "algorithm-design-and-analysis-005:p17:c01", + "algorithm-design-and-analysis-024:p3:c01", + "algorithm-design-and-analysis-027:p1:c01", + "algorithm-design-and-analysis-023:p6:c01", + "algorithm-design-and-analysis-024:p4:c01", + "algorithm-design-and-analysis-027:p9:c01", + "algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q12:c01", + "algorithm-design-and-analysis-024:p5:c01" + ] + }, + { + "case_id": "algo-knapsack-2", + "topic_id": "algo-knapsack", + "course_id": "algorithm_design_and_analysis", + "scenario": "problem", + "split": "validation", + "query": "背包最多装22,每件只能拿一次,五件物品重量3、5、7、8、9,价值4、6、7、9、10。最大价值和选择是什么?", + "top_chunk_ids": [ + "algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q13:c01", + "algorithm-design-and-analysis-023:p8:c01", + "algorithm-design-and-analysis-023:p7:c01", + "algorithm-design-and-analysis-023:p4:c01", + "algorithm-design-and-analysis-023:p6:c01", + "algorithm-design-and-analysis-028:p6:c01", + "algorithm-design-and-analysis-005:p17:c01", + "algorithm-design-and-analysis-027:p2:c01", + "algorithm-design-and-analysis-017:p2:c01", + "algorithm-design-and-analysis-024:p1:c01", + "algorithm-design-and-analysis-024:p2:c01", + "algorithm-design-and-analysis-010:p5:c01", + "algorithm-design-and-analysis-027:p1:c01", + "algorithm-design-and-analysis-024:p3:c01", + "algorithm-design-and-analysis-028:p4:c01", + "algorithm-design-and-analysis-024:p4:c01", + "algorithm-design-and-analysis-027:p9:c01", + "algorithm-design-and-analysis-024:p5:c01", + "algorithm-design-and-analysis-023:p5:c01", + "algorithm-design-and-analysis-027:p6:c01" + ], + "duration_ms": 79.946, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "algorithm-design-and-analysis-023:p8:c01", + "algorithm-design-and-analysis-023:p7:c01", + "algorithm-design-and-analysis-023:p4:c01", + "algorithm-design-and-analysis-023:p6:c01", + "algorithm-design-and-analysis-028:p6:c01", + "algorithm-design-and-analysis-005:p17:c01", + "algorithm-design-and-analysis-027:p2:c01", + "algorithm-design-and-analysis-017:p2:c01", + "algorithm-design-and-analysis-024:p1:c01", + "algorithm-design-and-analysis-024:p2:c01", + "algorithm-design-and-analysis-010:p5:c01", + "algorithm-design-and-analysis-027:p1:c01", + "algorithm-design-and-analysis-024:p3:c01", + "algorithm-design-and-analysis-028:p4:c01", + "algorithm-design-and-analysis-024:p4:c01", + "algorithm-design-and-analysis-027:p9:c01", + "algorithm-design-and-analysis-024:p5:c01", + "algorithm-design-and-analysis-023:p5:c01", + "algorithm-design-and-analysis-027:p6:c01" + ] + }, + { + "case_id": "ds-inorder-1", + "topic_id": "ds-inorder", + "course_id": "data_structure", + "scenario": "concept", + "split": "dev", + "query": "不用递归,怎样用栈完成二叉树中序遍历?", + "top_chunk_ids": [ + "data-structure-023:h-作业及分析:c01", + "data-structure-022:h-2025-a-辅修班卷子:c03", + "data-structure-016:p1:c01", + "data-structure-022:h-2025-a-辅修班卷子:c04", + "data-structure-022:h-2025-a-辅修班卷子:c02", + "data-structure-024:p6:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02", + "data-structure-032:h-bst-operation:c01", + "data-structure-019:p1:c01", + "data-structure-021:h-2024-b-数据结构:c08", + "data-structure-020:h-2024-a-数据结构:c06", + "data-structure-018:h-2023-a-数据结构-初稿:c06", + "data-structure-034:h-print-a-tree:c01", + "data-structure-031:h-bst-ooperation:c01", + "data-structure-014:q-data-structure-014-q2:c02", + "data-structure-021:h-2024-b-数据结构:c09", + "data-structure-020:h-2024-a-数据结构:c07", + "data-structure-007:h-3:c01", + "data-structure-035:h-000:c01", + "data-structure-010:q-data-structure-010-q1:c02" + ], + "duration_ms": 78.845, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "data-structure-022:h-2025-a-辅修班卷子:c03", + "data-structure-016:p1:c01", + "data-structure-022:h-2025-a-辅修班卷子:c04", + "data-structure-022:h-2025-a-辅修班卷子:c02", + "data-structure-024:p6:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02", + "data-structure-032:h-bst-operation:c01", + "data-structure-019:p1:c01", + "data-structure-021:h-2024-b-数据结构:c08", + "data-structure-020:h-2024-a-数据结构:c06", + "data-structure-018:h-2023-a-数据结构-初稿:c06", + "data-structure-034:h-print-a-tree:c01", + "data-structure-031:h-bst-ooperation:c01", + "data-structure-014:q-data-structure-014-q2:c02", + "data-structure-021:h-2024-b-数据结构:c09", + "data-structure-020:h-2024-a-数据结构:c07", + "data-structure-007:h-3:c01", + "data-structure-035:h-000:c01", + "data-structure-010:q-data-structure-010-q1:c02" + ] + }, + { + "case_id": "ds-inorder-2", + "topic_id": "ds-inorder", + "course_id": "data_structure", + "scenario": "concept", + "split": "dev", + "query": "遍历二叉树时一路压左孩子,弹出后什么时候访问右子树?", + "top_chunk_ids": [ + "data-structure-022:h-2025-a-辅修班卷子:c02", + "data-structure-022:h-2025-a-辅修班卷子:c03", + "data-structure-023:h-作业及分析:c01", + "data-structure-022:h-2025-a-辅修班卷子:c04", + "data-structure-016:p1:c01", + "data-structure-024:p4:c01", + "data-structure-024:p3:c01", + "data-structure-024:p5:c01", + "data-structure-024:p6:c01", + "data-structure-019:p1:c01", + "data-structure-021:h-2024-b-数据结构:c06", + "data-structure-024:p1:c01", + "data-structure-010:q-data-structure-010-q5:c01", + "data-structure-021:h-2024-b-数据结构:c02", + "data-structure-010:q-data-structure-010-q4:c04", + "data-structure-032:h-bst-operation:c01", + "data-structure-020:h-2024-a-数据结构:c05", + "data-structure-021:h-2024-b-数据结构:c03", + "data-structure-010:q-data-structure-010-q1:c02", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02" + ], + "duration_ms": 26.402, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "data-structure-022:h-2025-a-辅修班卷子:c02", + "data-structure-022:h-2025-a-辅修班卷子:c03", + "data-structure-022:h-2025-a-辅修班卷子:c04", + "data-structure-016:p1:c01", + "data-structure-024:p4:c01", + "data-structure-024:p3:c01", + "data-structure-024:p5:c01", + "data-structure-024:p6:c01", + "data-structure-019:p1:c01", + "data-structure-021:h-2024-b-数据结构:c06", + "data-structure-024:p1:c01", + "data-structure-010:q-data-structure-010-q5:c01", + "data-structure-021:h-2024-b-数据结构:c02", + "data-structure-010:q-data-structure-010-q4:c04", + "data-structure-032:h-bst-operation:c01", + "data-structure-020:h-2024-a-数据结构:c05", + "data-structure-021:h-2024-b-数据结构:c03", + "data-structure-010:q-data-structure-010-q1:c02", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02" + ] + }, + { + "case_id": "db-projection-1", + "topic_id": "db-projection", + "course_id": "database", + "scenario": "concept", + "split": "dev", + "query": "关系代数中选择和投影有什么区别?哪一个是按列切分?", + "top_chunk_ids": [ + "database-002:p2:q-database-002-q13:c01", + "database-003:p3:q-database-003-q29:c01", + "database-005:s15:c01", + "database-005:s13:c01", + "database-001:q-database-001-q13:c01", + "database-002:p3:q-database-002-q26:c01", + "database-003:p2:q-database-003-q20:c01", + "database-004:p2:q-database-004-q19:c01", + "database-005:s4:c01", + "database-003:p1:q-database-003-q10:c01", + "database-002:p7:q-database-002-q57:c01", + "database-004:p5:q-database-004-q52:c01", + "database-005:s16:c01", + "database-005:s39:c01", + "database-003:p5:q-database-003-q48:c01", + "database-005:s41:c01", + "database-005:s28:c01", + "database-005:s40:c01", + "database-001:q-database-001-q16:c01", + "database-004:p3:q-database-004-q22:c01" + ], + "duration_ms": 115.88, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "database-002:p2:q-database-002-q13:c01", + "database-003:p3:q-database-003-q29:c01", + "database-005:s13:c01", + "database-001:q-database-001-q13:c01", + "database-002:p3:q-database-002-q26:c01", + "database-003:p2:q-database-003-q20:c01", + "database-004:p2:q-database-004-q19:c01", + "database-005:s4:c01", + "database-003:p1:q-database-003-q10:c01", + "database-002:p7:q-database-002-q57:c01", + "database-004:p5:q-database-004-q52:c01", + "database-005:s16:c01", + "database-005:s39:c01", + "database-003:p5:q-database-003-q48:c01", + "database-005:s41:c01", + "database-005:s28:c01", + "database-005:s40:c01", + "database-001:q-database-001-q16:c01", + "database-004:p3:q-database-004-q22:c01" + ] + }, + { + "case_id": "db-projection-2", + "topic_id": "db-projection", + "course_id": "database", + "scenario": "concept", + "split": "dev", + "query": "只保留学生表的学号和姓名,应该用选择还是投影?", + "top_chunk_ids": [ + "database-001:q-database-001-q2:c01", + "database-004:p1:q-database-004-q6:c01", + "database-003:p5:q-database-003-q54:c01", + "database-001:q-database-001-q41:c01", + "database-005:s20:c01", + "database-003:p5:q-database-003-q51:c01", + "database-001:q-database-001-q24:c01", + "database-002:p5:q-database-002-q41:c01", + "database-003:p4:q-database-003-q41:c01", + "database-004:p4:q-database-004-q31:c01", + "database-004:p5:q-database-004-q53:c01", + "database-004:p5:q-database-004-q48:c01", + "database-005:s16:c01", + "database-004:p5:q-database-004-q52:c01", + "database-001:q-database-001-q23:c01", + "database-003:p4:q-database-003-q45:c01", + "database-002:p4:q-database-002-q37:c01", + "database-004:p3:q-database-004-q29:c01", + "database-001:q-database-001-q37:c01", + "database-003:p5:q-database-003-q49:c01" + ], + "duration_ms": 39.606, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "database-001:q-database-001-q2:c01", + "database-004:p1:q-database-004-q6:c01", + "database-003:p5:q-database-003-q54:c01", + "database-001:q-database-001-q41:c01", + "database-005:s20:c01", + "database-003:p5:q-database-003-q51:c01", + "database-001:q-database-001-q24:c01", + "database-002:p5:q-database-002-q41:c01", + "database-003:p4:q-database-003-q41:c01", + "database-004:p4:q-database-004-q31:c01", + "database-004:p5:q-database-004-q53:c01", + "database-004:p5:q-database-004-q48:c01", + "database-005:s16:c01", + "database-004:p5:q-database-004-q52:c01", + "database-001:q-database-001-q23:c01", + "database-003:p4:q-database-003-q45:c01", + "database-002:p4:q-database-002-q37:c01", + "database-004:p3:q-database-004-q29:c01", + "database-001:q-database-001-q37:c01", + "database-003:p5:q-database-003-q49:c01" + ] + }, + { + "case_id": "db-having-1", + "topic_id": "db-having", + "course_id": "database", + "scenario": "concept", + "split": "dev", + "query": "SQL中HAVING筛选的是行还是分组?", + "top_chunk_ids": [ + "database-005:s19:c01", + "database-001:q-database-001-q21:c01", + "database-003:p4:q-database-003-q39:c01", + "database-004:p3:q-database-004-q27:c01", + "database-001:q-database-001-q14:c01", + "database-003:p3:q-database-003-q35:c01", + "database-004:p2:q-database-004-q20:c01", + "database-002:p3:q-database-002-q24:c01", + "database-002:p2:q-database-002-q13:c01", + "database-003:p3:q-database-003-q29:c01", + "database-001:q-database-001-q12:c01", + "database-004:p2:q-database-004-q18:c01", + "database-003:p3:q-database-003-q23:c01", + "database-005:s41:c01", + "database-002:p2:q-database-002-q21:c01", + "database-005:s15:c01", + "database-005:s24:c01", + "database-005:s27:c01", + "database-005:s18:c01", + "database-005:s13:c01" + ], + "duration_ms": 35.824, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "database-001:q-database-001-q21:c01", + "database-003:p4:q-database-003-q39:c01", + "database-001:q-database-001-q14:c01", + "database-003:p3:q-database-003-q35:c01", + "database-004:p2:q-database-004-q20:c01", + "database-002:p3:q-database-002-q24:c01", + "database-002:p2:q-database-002-q13:c01", + "database-003:p3:q-database-003-q29:c01", + "database-001:q-database-001-q12:c01", + "database-004:p2:q-database-004-q18:c01", + "database-003:p3:q-database-003-q23:c01", + "database-005:s41:c01", + "database-002:p2:q-database-002-q21:c01", + "database-005:s15:c01", + "database-005:s24:c01", + "database-005:s27:c01", + "database-005:s18:c01", + "database-005:s13:c01" + ] + }, + { + "case_id": "db-having-2", + "topic_id": "db-having", + "course_id": "database", + "scenario": "concept", + "split": "dev", + "query": "按学生分组算平均成绩后,只留下均分至少85的组,该在哪里写条件?", + "top_chunk_ids": [ + "database-001:q-database-001-q2:c01", + "database-004:p1:q-database-004-q6:c01", + "database-004:p5:q-database-004-q55:c01", + "database-003:p5:q-database-003-q54:c01", + "database-005:s20:c01", + "database-001:q-database-001-q43:c01", + "database-001:q-database-001-q21:c01", + "database-003:p4:q-database-003-q39:c01", + "database-004:p3:q-database-004-q27:c01", + "database-004:p5:q-database-004-q52:c01", + "database-002:p3:q-database-002-q24:c01", + "database-001:q-database-001-q41:c01", + "database-003:p5:q-database-003-q50:c01", + "database-005:s19:c01", + "database-005:s16:c01", + "database-004:p5:q-database-004-q48:c01", + "database-003:p5:q-database-003-q48:c01", + "database-005:s40:c01", + "database-001:q-database-001-q37:c01", + "database-005:s54:c01" + ], + "duration_ms": 35.75, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "database-004:p1:q-database-004-q6:c01", + "database-004:p5:q-database-004-q55:c01", + "database-003:p5:q-database-003-q54:c01", + "database-005:s20:c01", + "database-001:q-database-001-q43:c01", + "database-001:q-database-001-q21:c01", + "database-003:p4:q-database-003-q39:c01", + "database-004:p5:q-database-004-q52:c01", + "database-002:p3:q-database-002-q24:c01", + "database-001:q-database-001-q41:c01", + "database-003:p5:q-database-003-q50:c01", + "database-005:s16:c01", + "database-004:p5:q-database-004-q48:c01", + "database-003:p5:q-database-003-q48:c01", + "database-005:s40:c01", + "database-001:q-database-001-q37:c01", + "database-005:s54:c01" + ] + }, + { + "case_id": "db-null-1", + "topic_id": "db-null", + "course_id": "database", + "scenario": "mistake", + "split": "dev", + "query": "我写WHERE AGE = NULL查缺失年龄,为什么不对?", + "top_chunk_ids": [ + "database-003:p6:q-database-003-q65:c01", + "database-001:q-database-001-q14:c01", + "database-003:p3:q-database-003-q35:c01", + "database-004:p2:q-database-004-q20:c01", + "database-005:s19:c01", + "database-002:p4:q-database-002-q38:c01", + "database-001:q-database-001-q24:c01", + "database-002:p5:q-database-002-q41:c01", + "database-003:p4:q-database-003-q41:c01", + "database-004:p4:q-database-004-q31:c01", + "database-002:p2:q-database-002-q13:c01", + "database-003:p3:q-database-003-q29:c01", + "database-002:p3:q-database-002-q24:c01", + "database-001:q-database-001-q25:c01", + "database-003:p4:q-database-003-q43:c01", + "database-004:p4:q-database-004-q32:c01", + "database-005:s34:c01", + "database-005:s20:c01", + "database-004:p1:q-database-004-q9:c01", + "database-001:q-database-001-q4:c01" + ], + "duration_ms": 34.344, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.2, + "unjudged_chunk_ids": [ + "database-003:p6:q-database-003-q65:c01", + "database-001:q-database-001-q14:c01", + "database-003:p3:q-database-003-q35:c01", + "database-004:p2:q-database-004-q20:c01", + "database-002:p4:q-database-002-q38:c01", + "database-001:q-database-001-q24:c01", + "database-002:p5:q-database-002-q41:c01", + "database-003:p4:q-database-003-q41:c01", + "database-004:p4:q-database-004-q31:c01", + "database-002:p2:q-database-002-q13:c01", + "database-003:p3:q-database-003-q29:c01", + "database-002:p3:q-database-002-q24:c01", + "database-001:q-database-001-q25:c01", + "database-003:p4:q-database-003-q43:c01", + "database-004:p4:q-database-004-q32:c01", + "database-005:s34:c01", + "database-005:s20:c01", + "database-004:p1:q-database-004-q9:c01", + "database-001:q-database-001-q4:c01" + ] + }, + { + "case_id": "db-null-2", + "topic_id": "db-null", + "course_id": "database", + "scenario": "mistake", + "split": "dev", + "query": "筛出没有填写年龄的学生,应该写等于NULL还是IS NULL?", + "top_chunk_ids": [ + "database-001:q-database-001-q24:c01", + "database-002:p5:q-database-002-q41:c01", + "database-003:p4:q-database-003-q41:c01", + "database-004:p4:q-database-004-q31:c01", + "database-001:q-database-001-q14:c01", + "database-003:p3:q-database-003-q35:c01", + "database-004:p2:q-database-004-q20:c01", + "database-003:p4:q-database-003-q45:c01", + "database-002:p4:q-database-002-q37:c01", + "database-004:p3:q-database-004-q29:c01", + "database-001:q-database-001-q2:c01", + "database-004:p1:q-database-004-q6:c01", + "database-003:p5:q-database-003-q52:c01", + "database-001:q-database-001-q42:c01", + "database-004:p5:q-database-004-q54:c01", + "database-003:p5:q-database-003-q49:c01", + "database-004:p5:q-database-004-q55:c01", + "database-005:s19:c01", + "database-003:p5:q-database-003-q53:c01", + "database-003:p5:q-database-003-q50:c01" + ], + "duration_ms": 36.737, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.05555555555555555, + "unjudged_chunk_ids": [ + "database-001:q-database-001-q24:c01", + "database-002:p5:q-database-002-q41:c01", + "database-003:p4:q-database-003-q41:c01", + "database-004:p4:q-database-004-q31:c01", + "database-001:q-database-001-q14:c01", + "database-003:p3:q-database-003-q35:c01", + "database-004:p2:q-database-004-q20:c01", + "database-003:p4:q-database-003-q45:c01", + "database-002:p4:q-database-002-q37:c01", + "database-004:p3:q-database-004-q29:c01", + "database-001:q-database-001-q2:c01", + "database-004:p1:q-database-004-q6:c01", + "database-003:p5:q-database-003-q52:c01", + "database-001:q-database-001-q42:c01", + "database-004:p5:q-database-004-q54:c01", + "database-003:p5:q-database-003-q49:c01", + "database-004:p5:q-database-004-q55:c01", + "database-003:p5:q-database-003-q53:c01", + "database-003:p5:q-database-003-q50:c01" + ] + }, + { + "case_id": "os-states-1", + "topic_id": "os-states", + "course_id": "operating_systems", + "scenario": "concept", + "split": "validation", + "query": "进程就绪和阻塞有什么区别?I/O完成后会直接运行吗?", + "top_chunk_ids": [ + "operating-systems-043:s24:c01", + "operating-systems-036:q-operating-systems-036-q22:c01", + "operating-systems-002:q-operating-systems-002-q51:c01", + "operating-systems-038:s28:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-91-题-dma-访问流程~3-参考答案与解析:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-90-题-i-o-阻塞与非阻塞~1-知识点:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-91-题-dma-访问流程~1-知识点:c01", + "operating-systems-002:q-operating-systems-002-q43:c01", + "operating-systems-001:h-第-3-题-进程状态~1-知识点:c01", + "operating-systems-028:h-os复习指导:c03", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-90-题-i-o-阻塞与非阻塞~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-90-题-i-o-阻塞与非阻塞~3-参考答案与解析:c01", + "operating-systems-038:s33:c01", + "operating-systems-001:h-第-3-题-进程状态~1-知识点~3-参考答案与解析:c01", + "operating-systems-037:h-上古osq-a:c17", + "operating-systems-037:h-上古osq-a:c03", + "operating-systems-034:q-operating-systems-034-q30:c01", + "operating-systems-029:p2:c01", + "operating-systems-038:s98:c01", + "operating-systems-001:h-第-7-题-中断-interrupt~1-知识点:c01" + ], + "duration_ms": 489.028, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.1, + "unjudged_chunk_ids": [ + "operating-systems-043:s24:c01", + "operating-systems-036:q-operating-systems-036-q22:c01", + "operating-systems-002:q-operating-systems-002-q51:c01", + "operating-systems-038:s28:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-91-题-dma-访问流程~3-参考答案与解析:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-90-题-i-o-阻塞与非阻塞~1-知识点:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-91-题-dma-访问流程~1-知识点:c01", + "operating-systems-002:q-operating-systems-002-q43:c01", + "operating-systems-001:h-第-3-题-进程状态~1-知识点:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-90-题-i-o-阻塞与非阻塞~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-90-题-i-o-阻塞与非阻塞~3-参考答案与解析:c01", + "operating-systems-038:s33:c01", + "operating-systems-001:h-第-3-题-进程状态~1-知识点~3-参考答案与解析:c01", + "operating-systems-037:h-上古osq-a:c17", + "operating-systems-037:h-上古osq-a:c03", + "operating-systems-034:q-operating-systems-034-q30:c01", + "operating-systems-029:p2:c01", + "operating-systems-038:s98:c01", + "operating-systems-001:h-第-7-题-中断-interrupt~1-知识点:c01" + ] + }, + { + "case_id": "os-states-2", + "topic_id": "os-states", + "course_id": "operating_systems", + "scenario": "concept", + "split": "validation", + "query": "一个进程只是没拿到CPU,另一个在等磁盘读完,它们是同一种状态吗?", + "top_chunk_ids": [ + "operating-systems-038:s59:c01", + "operating-systems-042:s4:c01", + "operating-systems-038:s101:c01", + "operating-systems-042:s42:c01", + "operating-systems-001:h-第-5-题-上下文切换~1-知识点:c01", + "operating-systems-044:s68:c01", + "operating-systems-003:p7:q-operating-systems-003-q59:c01", + "operating-systems-038:s62:c01", + "operating-systems-038:s34:c01", + "operating-systems-038:s58:c01", + "operating-systems-038:s37:c01", + "operating-systems-037:h-上古osq-a:c16", + "operating-systems-038:s107:c01", + "operating-systems-038:s50:c01", + "operating-systems-038:s33:c01", + "operating-systems-033:p1:c01", + "operating-systems-038:s23:c01", + "operating-systems-038:s46:c01", + "operating-systems-028:h-os复习指导:c03", + "operating-systems-036:q-operating-systems-036-q22:c01" + ], + "duration_ms": 161.331, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.05263157894736842, + "unjudged_chunk_ids": [ + "operating-systems-038:s59:c01", + "operating-systems-042:s4:c01", + "operating-systems-038:s101:c01", + "operating-systems-042:s42:c01", + "operating-systems-001:h-第-5-题-上下文切换~1-知识点:c01", + "operating-systems-044:s68:c01", + "operating-systems-003:p7:q-operating-systems-003-q59:c01", + "operating-systems-038:s62:c01", + "operating-systems-038:s34:c01", + "operating-systems-038:s58:c01", + "operating-systems-038:s37:c01", + "operating-systems-037:h-上古osq-a:c16", + "operating-systems-038:s107:c01", + "operating-systems-038:s50:c01", + "operating-systems-038:s33:c01", + "operating-systems-033:p1:c01", + "operating-systems-038:s23:c01", + "operating-systems-038:s46:c01", + "operating-systems-036:q-operating-systems-036-q22:c01" + ] + }, + { + "case_id": "os-producer-1", + "topic_id": "os-producer", + "course_id": "operating_systems", + "scenario": "mistake", + "split": "validation", + "query": "有界缓冲区生产者能先P(mutex)再P(empty)吗?", + "top_chunk_ids": [ + "operating-systems-002:q-operating-systems-002-q28:c01", + "operating-systems-029:p3:c02", + "operating-systems-002:q-operating-systems-002-q25:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~3-参考答案与解析:c01", + "operating-systems-002:q-operating-systems-002-q24:c01", + "operating-systems-002:q-operating-systems-002-q27:c01", + "operating-systems-029:p4:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-59-题-同步与互斥~3-参考答案与解析:c01", + "operating-systems-038:s56:c01", + "operating-systems-002:q-operating-systems-002-q20:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-59-题-同步与互斥~2-测试题型:c01", + "operating-systems-003:p3:q-operating-systems-003-q19:c01", + "operating-systems-008:p5:c01", + "operating-systems-002:q-operating-systems-002-q21:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-21-题-管程-monitor-的定义与作用~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~1-知识点:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~2-测试题型:c01", + "operating-systems-002:q-operating-systems-002-q22:c01", + "operating-systems-002:q-operating-systems-002-q1:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~3-参考答案与解析:c02" + ], + "duration_ms": 146.139, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.25, + "unjudged_chunk_ids": [ + "operating-systems-002:q-operating-systems-002-q28:c01", + "operating-systems-029:p3:c02", + "operating-systems-002:q-operating-systems-002-q25:c01", + "operating-systems-002:q-operating-systems-002-q24:c01", + "operating-systems-002:q-operating-systems-002-q27:c01", + "operating-systems-029:p4:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-59-题-同步与互斥~3-参考答案与解析:c01", + "operating-systems-038:s56:c01", + "operating-systems-002:q-operating-systems-002-q20:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-59-题-同步与互斥~2-测试题型:c01", + "operating-systems-003:p3:q-operating-systems-003-q19:c01", + "operating-systems-008:p5:c01", + "operating-systems-002:q-operating-systems-002-q21:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-21-题-管程-monitor-的定义与作用~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~1-知识点:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~2-测试题型:c01", + "operating-systems-002:q-operating-systems-002-q22:c01", + "operating-systems-002:q-operating-systems-002-q1:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~3-参考答案与解析:c02" + ] + }, + { + "case_id": "os-producer-2", + "topic_id": "os-producer", + "course_id": "operating_systems", + "scenario": "mistake", + "split": "validation", + "query": "缓冲区满时,生产者拿着互斥锁等空位,消费者还能取走数据吗?", + "top_chunk_ids": [ + "operating-systems-002:q-operating-systems-002-q28:c01", + "operating-systems-002:q-operating-systems-002-q27:c01", + "operating-systems-002:q-operating-systems-002-q25:c01", + "operating-systems-002:q-operating-systems-002-q24:c01", + "operating-systems-038:s56:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-59-题-同步与互斥~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-59-题-同步与互斥~3-参考答案与解析:c01", + "operating-systems-029:p3:c02", + "operating-systems-003:p3:q-operating-systems-003-q19:c01", + "operating-systems-002:q-operating-systems-002-q20:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~3-参考答案与解析:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-21-题-管程-monitor-的定义与作用~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~1-知识点:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~3-参考答案与解析:c02", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-22-题-自旋锁-spinlock-与互斥锁区别~1-知识点:c01", + "operating-systems-002:q-operating-systems-002-q1:c01", + "operating-systems-002:q-operating-systems-002-q21:c01", + "operating-systems-002:q-operating-systems-002-q22:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-22-题-自旋锁-spinlock-与互斥锁区别~3-参考答案与解读:c01" + ], + "duration_ms": 151.589, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.09090909090909091, + "unjudged_chunk_ids": [ + "operating-systems-002:q-operating-systems-002-q28:c01", + "operating-systems-002:q-operating-systems-002-q27:c01", + "operating-systems-002:q-operating-systems-002-q25:c01", + "operating-systems-002:q-operating-systems-002-q24:c01", + "operating-systems-038:s56:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-59-题-同步与互斥~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-59-题-同步与互斥~3-参考答案与解析:c01", + "operating-systems-029:p3:c02", + "operating-systems-003:p3:q-operating-systems-003-q19:c01", + "operating-systems-002:q-operating-systems-002-q20:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-21-题-管程-monitor-的定义与作用~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~1-知识点:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~3-参考答案与解析:c02", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-22-题-自旋锁-spinlock-与互斥锁区别~1-知识点:c01", + "operating-systems-002:q-operating-systems-002-q1:c01", + "operating-systems-002:q-operating-systems-002-q21:c01", + "operating-systems-002:q-operating-systems-002-q22:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-22-题-自旋锁-spinlock-与互斥锁区别~3-参考答案与解读:c01" + ] + }, + { + "case_id": "os-deadlock-1", + "topic_id": "os-deadlock", + "course_id": "operating_systems", + "scenario": "concept", + "split": "dev", + "query": "死锁的四个必要条件是什么?统一资源申请顺序破坏了哪一个?", + "top_chunk_ids": [ + "operating-systems-001:h-第-15-题-死锁四条件~1-知识点~2-测试题型:c01", + "operating-systems-003:p4:q-operating-systems-003-q32:c01", + "operating-systems-003:p5:q-operating-systems-003-q42:c02", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-66-题-死锁预防策略~1-知识点:c01", + "operating-systems-030:p2:c01", + "operating-systems-003:p1:q-operating-systems-003-q6:c01", + "operating-systems-032:p2:c01", + "operating-systems-031:p2:c01", + "operating-systems-006:p2:c01", + "operating-systems-028:h-os复习指导:c04", + "operating-systems-035:p2:q-operating-systems-035-q36:c01", + "operating-systems-038:s62:c01", + "operating-systems-008:p1:c02", + "operating-systems-036:q-operating-systems-036-q23:c01", + "operating-systems-034:q-operating-systems-034-q23:c01", + "operating-systems-039:s6:c01", + "operating-systems-026:h-os上古大题范围:c01", + "operating-systems-027:h-第2章-进程的描述与控制:c03", + "operating-systems-030:p1:c01", + "operating-systems-037:h-上古osq-a:c02" + ], + "duration_ms": 149.947, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "operating-systems-001:h-第-15-题-死锁四条件~1-知识点~2-测试题型:c01", + "operating-systems-003:p4:q-operating-systems-003-q32:c01", + "operating-systems-003:p5:q-operating-systems-003-q42:c02", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-66-题-死锁预防策略~1-知识点:c01", + "operating-systems-030:p2:c01", + "operating-systems-003:p1:q-operating-systems-003-q6:c01", + "operating-systems-032:p2:c01", + "operating-systems-031:p2:c01", + "operating-systems-006:p2:c01", + "operating-systems-028:h-os复习指导:c04", + "operating-systems-035:p2:q-operating-systems-035-q36:c01", + "operating-systems-038:s62:c01", + "operating-systems-008:p1:c02", + "operating-systems-036:q-operating-systems-036-q23:c01", + "operating-systems-034:q-operating-systems-034-q23:c01", + "operating-systems-039:s6:c01", + "operating-systems-026:h-os上古大题范围:c01", + "operating-systems-027:h-第2章-进程的描述与控制:c03", + "operating-systems-030:p1:c01", + "operating-systems-037:h-上古osq-a:c02" + ] + }, + { + "case_id": "os-deadlock-2", + "topic_id": "os-deadlock", + "course_id": "operating_systems", + "scenario": "concept", + "split": "dev", + "query": "所有线程都先拿A锁再拿B锁,为什么能避免这两把锁形成循环等待?", + "top_chunk_ids": [ + "operating-systems-003:p5:q-operating-systems-003-q46:c01", + "operating-systems-035:p1:q-operating-systems-035-q24:c01", + "operating-systems-003:p1:q-operating-systems-003-q6:c01", + "operating-systems-003:p3:q-operating-systems-003-q15:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-66-题-死锁预防策略~1-知识点:c01", + "operating-systems-003:p7:q-operating-systems-003-q60:c01", + "operating-systems-035:p1:q-operating-systems-035-q13:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-39-题-多核调度-multicore-scheduling~2-测试题型:c01", + "operating-systems-001:h-第-5-题-上下文切换~1-知识点~2-测试题型:c01", + "operating-systems-003:p4:q-operating-systems-003-q34:c01", + "operating-systems-002:q-operating-systems-002-q6:c01", + "operating-systems-003:p6:q-operating-systems-003-q50:c01", + "operating-systems-039:s16:c01", + "operating-systems-006:p4:c01", + "operating-systems-038:s67:c01", + "operating-systems-039:s17:c01", + "operating-systems-038:s68:c01", + "operating-systems-031:p2:c01", + "operating-systems-032:p2:c01", + "operating-systems-042:s42:c01" + ], + "duration_ms": 158.05, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "operating-systems-003:p5:q-operating-systems-003-q46:c01", + "operating-systems-035:p1:q-operating-systems-035-q24:c01", + "operating-systems-003:p1:q-operating-systems-003-q6:c01", + "operating-systems-003:p3:q-operating-systems-003-q15:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-66-题-死锁预防策略~1-知识点:c01", + "operating-systems-003:p7:q-operating-systems-003-q60:c01", + "operating-systems-035:p1:q-operating-systems-035-q13:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-39-题-多核调度-multicore-scheduling~2-测试题型:c01", + "operating-systems-001:h-第-5-题-上下文切换~1-知识点~2-测试题型:c01", + "operating-systems-003:p4:q-operating-systems-003-q34:c01", + "operating-systems-002:q-operating-systems-002-q6:c01", + "operating-systems-003:p6:q-operating-systems-003-q50:c01", + "operating-systems-039:s16:c01", + "operating-systems-006:p4:c01", + "operating-systems-038:s67:c01", + "operating-systems-039:s17:c01", + "operating-systems-038:s68:c01", + "operating-systems-031:p2:c01", + "operating-systems-032:p2:c01", + "operating-systems-042:s42:c01" + ] + }, + { + "case_id": "compiler-left-recursion-1", + "topic_id": "compiler-left-recursion", + "course_id": "compiler_principles", + "scenario": "problem", + "split": "validation", + "query": "T→T,S | S 如何消除直接左递归?", + "top_chunk_ids": [ + "compiler-principles-001:s27:c01", + "compiler-principles-001:s26:c01", + "compiler-principles-017:q-compiler-principles-017-q10:c01", + "compiler-principles-017:q-compiler-principles-017-q15:c01", + "compiler-principles-015:q-compiler-principles-015-q14:c01", + "compiler-principles-016:q-compiler-principles-016-q12:c01", + "compiler-principles-016:q-compiler-principles-016-q17:c01", + "compiler-principles-015:q-compiler-principles-015-q11:c01", + "compiler-principles-001:s23:c01", + "compiler-principles-015:q-compiler-principles-015-q7:c01", + "compiler-principles-017:q-compiler-principles-017-q6:c01", + "compiler-principles-009:q-compiler-principles-009-q8:c01", + "compiler-principles-002:p1:c01", + "compiler-principles-013:q-compiler-principles-013-q5:c01", + "compiler-principles-001:s46:c01", + "compiler-principles-001:s36:c01", + "compiler-principles-001:s35:c01", + "compiler-principles-001:s32:c01", + "compiler-principles-001:s45:c01", + "compiler-principles-001:s31:c01" + ], + "duration_ms": 196.26, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "compiler-principles-001:s26:c01", + "compiler-principles-017:q-compiler-principles-017-q10:c01", + "compiler-principles-017:q-compiler-principles-017-q15:c01", + "compiler-principles-015:q-compiler-principles-015-q14:c01", + "compiler-principles-016:q-compiler-principles-016-q12:c01", + "compiler-principles-016:q-compiler-principles-016-q17:c01", + "compiler-principles-015:q-compiler-principles-015-q11:c01", + "compiler-principles-001:s23:c01", + "compiler-principles-015:q-compiler-principles-015-q7:c01", + "compiler-principles-017:q-compiler-principles-017-q6:c01", + "compiler-principles-009:q-compiler-principles-009-q8:c01", + "compiler-principles-002:p1:c01", + "compiler-principles-013:q-compiler-principles-013-q5:c01", + "compiler-principles-001:s46:c01", + "compiler-principles-001:s36:c01", + "compiler-principles-001:s35:c01", + "compiler-principles-001:s32:c01", + "compiler-principles-001:s45:c01", + "compiler-principles-001:s31:c01" + ] + }, + { + "case_id": "compiler-left-recursion-2", + "topic_id": "compiler-left-recursion", + "course_id": "compiler_principles", + "scenario": "problem", + "split": "validation", + "query": "递归下降遇到T先调用自己再读逗号的文法会卡住,怎么改写?原式T→T,S | S。", + "top_chunk_ids": [ + "compiler-principles-053:h-递归下降方法的错误处理:c01", + "compiler-principles-001:s26:c01", + "compiler-principles-010:p1:q-compiler-principles-010-q6:c01", + "compiler-principles-001:s62:c01", + "compiler-principles-013:q-compiler-principles-013-q5:c01", + "compiler-principles-019:p95:c01", + "compiler-principles-001:s24:c01", + "compiler-principles-012:p1:q-compiler-principles-012-q14:c01", + "compiler-principles-001:s23:c01", + "compiler-principles-001:s25:c01", + "compiler-principles-019:p94:c01", + "compiler-principles-019:p77:c01", + "compiler-principles-014:q-compiler-principles-014-q1:c01", + "compiler-principles-001:s27:c01", + "compiler-principles-015:q-compiler-principles-015-q15:c01", + "compiler-principles-016:q-compiler-principles-016-q18:c01", + "compiler-principles-017:q-compiler-principles-017-q16:c01", + "compiler-principles-001:s8:c01", + "compiler-principles-016:q-compiler-principles-016-q14:c01", + "compiler-principles-017:q-compiler-principles-017-q12:c01" + ], + "duration_ms": 73.789, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.07142857142857142, + "unjudged_chunk_ids": [ + "compiler-principles-053:h-递归下降方法的错误处理:c01", + "compiler-principles-001:s26:c01", + "compiler-principles-010:p1:q-compiler-principles-010-q6:c01", + "compiler-principles-001:s62:c01", + "compiler-principles-013:q-compiler-principles-013-q5:c01", + "compiler-principles-019:p95:c01", + "compiler-principles-001:s24:c01", + "compiler-principles-012:p1:q-compiler-principles-012-q14:c01", + "compiler-principles-001:s23:c01", + "compiler-principles-001:s25:c01", + "compiler-principles-019:p94:c01", + "compiler-principles-019:p77:c01", + "compiler-principles-014:q-compiler-principles-014-q1:c01", + "compiler-principles-015:q-compiler-principles-015-q15:c01", + "compiler-principles-016:q-compiler-principles-016-q18:c01", + "compiler-principles-017:q-compiler-principles-017-q16:c01", + "compiler-principles-001:s8:c01", + "compiler-principles-016:q-compiler-principles-016-q14:c01", + "compiler-principles-017:q-compiler-principles-017-q12:c01" + ] + }, + { + "case_id": "compiler-plan-1", + "topic_id": "compiler-plan", + "course_id": "compiler_principles", + "scenario": "review", + "split": "validation", + "query": "复习课里那道S→a | ∧ | (T)、T→T,S | S的预测分析题,应该按什么步骤做?这里只要步骤。", + "top_chunk_ids": [ + "compiler-principles-001:s26:c01", + "compiler-principles-001:s36:c01", + "compiler-principles-001:s37:c01", + "compiler-principles-013:q-compiler-principles-013-q10:c01", + "compiler-principles-010:p2:q-compiler-principles-010-q13:c01", + "compiler-principles-011:q-compiler-principles-011-q11:c01", + "compiler-principles-012:p3:q-compiler-principles-012-q21:c01", + "compiler-principles-055:h-预测分析法:c01", + "compiler-principles-001:s62:c01", + "compiler-principles-001:s24:c01", + "compiler-principles-056:h-预测分析法的分析表:c01", + "compiler-principles-007:p3:q-compiler-principles-007-q15:c01", + "compiler-principles-014:q-compiler-principles-014-q10:c01", + "compiler-principles-001:s23:c01", + "compiler-principles-001:s25:c01", + "compiler-principles-001:s60:c01", + "compiler-principles-001:s59:c01", + "compiler-principles-001:s61:c01", + "compiler-principles-001:s41:c01", + "compiler-principles-001:s39:c01" + ], + "duration_ms": 68.493, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "compiler-principles-001:s36:c01", + "compiler-principles-001:s37:c01", + "compiler-principles-013:q-compiler-principles-013-q10:c01", + "compiler-principles-010:p2:q-compiler-principles-010-q13:c01", + "compiler-principles-011:q-compiler-principles-011-q11:c01", + "compiler-principles-012:p3:q-compiler-principles-012-q21:c01", + "compiler-principles-055:h-预测分析法:c01", + "compiler-principles-001:s62:c01", + "compiler-principles-001:s24:c01", + "compiler-principles-056:h-预测分析法的分析表:c01", + "compiler-principles-007:p3:q-compiler-principles-007-q15:c01", + "compiler-principles-014:q-compiler-principles-014-q10:c01", + "compiler-principles-001:s23:c01", + "compiler-principles-001:s25:c01", + "compiler-principles-001:s60:c01", + "compiler-principles-001:s59:c01", + "compiler-principles-001:s61:c01", + "compiler-principles-001:s41:c01", + "compiler-principles-001:s39:c01" + ] + }, + { + "case_id": "compiler-plan-2", + "topic_id": "compiler-plan", + "course_id": "compiler_principles", + "scenario": "review", + "split": "validation", + "query": "面对需要改写文法并构造LL(1)分析表的大题,先算FIRST还是先消除左递归?", + "top_chunk_ids": [ + "compiler-principles-001:s26:c01", + "compiler-principles-001:s27:c01", + "compiler-principles-015:q-compiler-principles-015-q14:c01", + "compiler-principles-016:q-compiler-principles-016-q12:c01", + "compiler-principles-016:q-compiler-principles-016-q17:c01", + "compiler-principles-015:q-compiler-principles-015-q11:c01", + "compiler-principles-017:q-compiler-principles-017-q10:c01", + "compiler-principles-017:q-compiler-principles-017-q15:c01", + "compiler-principles-015:q-compiler-principles-015-q7:c01", + "compiler-principles-017:q-compiler-principles-017-q6:c01", + "compiler-principles-009:q-compiler-principles-009-q8:c01", + "compiler-principles-001:s23:c01", + "compiler-principles-019:p107:c01", + "compiler-principles-019:p75:c01", + "compiler-principles-002:p1:c01", + "compiler-principles-011:q-compiler-principles-011-q15:c01", + "compiler-principles-012:p3:q-compiler-principles-012-q25:c01", + "compiler-principles-016:q-compiler-principles-016-q13:c01", + "compiler-principles-001:s36:c01", + "compiler-principles-015:q-compiler-principles-015-q15:c01" + ], + "duration_ms": 62.809, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "compiler-principles-001:s27:c01", + "compiler-principles-015:q-compiler-principles-015-q14:c01", + "compiler-principles-016:q-compiler-principles-016-q12:c01", + "compiler-principles-016:q-compiler-principles-016-q17:c01", + "compiler-principles-015:q-compiler-principles-015-q11:c01", + "compiler-principles-017:q-compiler-principles-017-q10:c01", + "compiler-principles-017:q-compiler-principles-017-q15:c01", + "compiler-principles-015:q-compiler-principles-015-q7:c01", + "compiler-principles-017:q-compiler-principles-017-q6:c01", + "compiler-principles-009:q-compiler-principles-009-q8:c01", + "compiler-principles-001:s23:c01", + "compiler-principles-019:p107:c01", + "compiler-principles-019:p75:c01", + "compiler-principles-002:p1:c01", + "compiler-principles-011:q-compiler-principles-011-q15:c01", + "compiler-principles-012:p3:q-compiler-principles-012-q25:c01", + "compiler-principles-016:q-compiler-principles-016-q13:c01", + "compiler-principles-001:s36:c01", + "compiler-principles-015:q-compiler-principles-015-q15:c01" + ] + }, + { + "case_id": "network-ack-1", + "topic_id": "network-ack", + "course_id": "computer_networks", + "scenario": "concept", + "split": "dev", + "query": "TCP确认号为n到底表示收到了n,还是接下来想收到n?", + "top_chunk_ids": [ + "computer-networks-043:p33:c01", + "computer-networks-051:h-笔记:c10", + "computer-networks-041:p34:c01", + "computer-networks-033:p7:c01", + "computer-networks-031:p41:c01", + "computer-networks-047:p41:c01", + "computer-networks-031:p40:c01", + "computer-networks-047:p40:c01", + "computer-networks-043:p32:c01", + "computer-networks-041:p36:c01", + "computer-networks-029:p5:c01", + "computer-networks-033:p32:c01", + "computer-networks-044:p15:c01", + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三:c01", + "computer-networks-044:p13:c01", + "computer-networks-033:p16:c01", + "computer-networks-033:p3:c01", + "computer-networks-046:p14:c01", + "computer-networks-031:p15:c01", + "computer-networks-047:p15:c01" + ], + "duration_ms": 550.585, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "computer-networks-043:p33:c01", + "computer-networks-041:p34:c01", + "computer-networks-033:p7:c01", + "computer-networks-031:p41:c01", + "computer-networks-047:p41:c01", + "computer-networks-031:p40:c01", + "computer-networks-047:p40:c01", + "computer-networks-043:p32:c01", + "computer-networks-041:p36:c01", + "computer-networks-029:p5:c01", + "computer-networks-033:p32:c01", + "computer-networks-044:p15:c01", + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三:c01", + "computer-networks-044:p13:c01", + "computer-networks-033:p16:c01", + "computer-networks-033:p3:c01", + "computer-networks-046:p14:c01", + "computer-networks-031:p15:c01", + "computer-networks-047:p15:c01" + ] + }, + { + "case_id": "network-ack-2", + "topic_id": "network-ack", + "course_id": "computer_networks", + "scenario": "concept", + "split": "dev", + "query": "接收方回复ACK=501,发送方能理解为500之前的字节都确认了吗?", + "top_chunk_ids": [ + "computer-networks-149:h-发送方的复用和接收方的分用:c01", + "computer-networks-033:p35:c01", + "computer-networks-033:p39:c01", + "computer-networks-033:p36:c01", + "computer-networks-044:p13:c01", + "computer-networks-033:p34:c01", + "computer-networks-044:p4:c01", + "computer-networks-033:p37:c01", + "computer-networks-033:p32:c01", + "computer-networks-051:h-笔记:c13", + "computer-networks-043:p30:c01", + "computer-networks-044:p12:c01", + "computer-networks-050:h-术语和缩写大全:c02", + "computer-networks-034:p15:c01", + "computer-networks-031:p40:c01", + "computer-networks-047:p40:c01", + "computer-networks-013:p2:q-computer-networks-013-q25:c01", + "computer-networks-031:p5:c01", + "computer-networks-047:p5:c01", + "computer-networks-035:p39:c01" + ], + "duration_ms": 181.791, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "computer-networks-149:h-发送方的复用和接收方的分用:c01", + "computer-networks-033:p35:c01", + "computer-networks-033:p39:c01", + "computer-networks-033:p36:c01", + "computer-networks-044:p13:c01", + "computer-networks-033:p34:c01", + "computer-networks-044:p4:c01", + "computer-networks-033:p37:c01", + "computer-networks-033:p32:c01", + "computer-networks-051:h-笔记:c13", + "computer-networks-043:p30:c01", + "computer-networks-044:p12:c01", + "computer-networks-050:h-术语和缩写大全:c02", + "computer-networks-034:p15:c01", + "computer-networks-031:p40:c01", + "computer-networks-047:p40:c01", + "computer-networks-013:p2:q-computer-networks-013-q25:c01", + "computer-networks-031:p5:c01", + "computer-networks-047:p5:c01", + "computer-networks-035:p39:c01" + ] + }, + { + "case_id": "network-napt-1", + "topic_id": "network-napt", + "course_id": "computer_networks", + "scenario": "evidence_bundle", + "split": "dev", + "query": "网络层大题中192.168.1.10:5000映射到202.1.1.1:8000,回包怎么还原?去8.8.8.8该选哪条路由?", + "top_chunk_ids": [ + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四~大题二-参考答案:c01", + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四:c01", + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题一-参考答案:c01", + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三:c01", + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~考前最后三句话:c01", + "computer-networks-042:p23:c01", + "computer-networks-046:p71:c01", + "computer-networks-038:p35:c01", + "computer-networks-038:p17:c01", + "computer-networks-046:p72:c01", + "computer-networks-038:p36:c01", + "computer-networks-003:q-computer-networks-003-q15:c01", + "computer-networks-042:p28:c01", + "computer-networks-038:p5:c01", + "computer-networks-087:h-网络层提供的服务的比较:c01", + "computer-networks-029:p20:c01", + "computer-networks-038:p26:c01", + "computer-networks-046:p70:c01", + "computer-networks-041:p1:c01", + "computer-networks-029:p17:c01" + ], + "duration_ms": 192.608, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题一-参考答案:c01", + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三:c01", + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~考前最后三句话:c01", + "computer-networks-042:p23:c01", + "computer-networks-046:p71:c01", + "computer-networks-038:p35:c01", + "computer-networks-038:p17:c01", + "computer-networks-046:p72:c01", + "computer-networks-038:p36:c01", + "computer-networks-003:q-computer-networks-003-q15:c01", + "computer-networks-042:p28:c01", + "computer-networks-038:p5:c01", + "computer-networks-087:h-网络层提供的服务的比较:c01", + "computer-networks-029:p20:c01", + "computer-networks-038:p26:c01", + "computer-networks-046:p70:c01", + "computer-networks-041:p1:c01", + "computer-networks-029:p17:c01" + ] + }, + { + "case_id": "network-napt-2", + "topic_id": "network-napt", + "course_id": "computer_networks", + "scenario": "evidence_bundle", + "split": "dev", + "query": "请找到NAPT网关那道题的题干和答案,解释回程端口还原以及/8为什么优先于默认路由。", + "top_chunk_ids": [ + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四~大题二-参考答案:c01", + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四:c01", + "computer-networks-037:p17:c01", + "computer-networks-085:h-网关与访问internet的题目:c01", + "computer-networks-046:p67:c01", + "computer-networks-038:p14:c01", + "computer-networks-035:p23:c01", + "computer-networks-003:q-computer-networks-003-q30:c01", + "computer-networks-042:p38:c01", + "computer-networks-172:h-cdma的应用和为什么要正交:c01", + "computer-networks-147:h-为什么三次握手而不是两次握手:c01", + "computer-networks-045:p5:c01", + "computer-networks-041:p30:c01", + "computer-networks-038:p27:c01", + "computer-networks-041:p21:c01", + "computer-networks-046:p75:c01", + "computer-networks-011:p5:q-computer-networks-011-q41:c01", + "computer-networks-014:p5:c01", + "computer-networks-006:p2:c01", + "computer-networks-003:q-computer-networks-003-q15:c01" + ], + "duration_ms": 197.106, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "computer-networks-037:p17:c01", + "computer-networks-085:h-网关与访问internet的题目:c01", + "computer-networks-046:p67:c01", + "computer-networks-038:p14:c01", + "computer-networks-035:p23:c01", + "computer-networks-003:q-computer-networks-003-q30:c01", + "computer-networks-042:p38:c01", + "computer-networks-172:h-cdma的应用和为什么要正交:c01", + "computer-networks-147:h-为什么三次握手而不是两次握手:c01", + "computer-networks-045:p5:c01", + "computer-networks-041:p30:c01", + "computer-networks-038:p27:c01", + "computer-networks-041:p21:c01", + "computer-networks-046:p75:c01", + "computer-networks-011:p5:q-computer-networks-011-q41:c01", + "computer-networks-014:p5:c01", + "computer-networks-006:p2:c01", + "computer-networks-003:q-computer-networks-003-q15:c01" + ] + }, + { + "case_id": "testing-boundary-1", + "topic_id": "testing-boundary", + "course_id": "software_testing", + "scenario": "problem", + "split": "dev", + "query": "三个独立输入变量,健壮最坏情况边界值测试需要多少组?和健壮边界值有什么不同?", + "top_chunk_ids": [ + "software-testing-030:s28:c01", + "software-testing-046:q-software-testing-046-q2:c01", + "software-testing-030:s27:c01", + "software-testing-040:h-unit~第二章-软件测试方法~一-黑盒测试-重点:c01", + "software-testing-030:s26:c01", + "software-testing-051:h-八-组合测试-combinational-testing~2.-真值表-truth-table:c01", + "software-testing-030:s24:c01", + "software-testing-038:h-集成测试---学习笔记~5.-path-based-integration-基于路径的集成~mm-path-based-integration-基于mm路径的集成:c01", + "software-testing-038:h-黑盒测试---详细学习笔记~3.-combinational-testing-组合测试~when-to-use-decision-tables-何时使用判定表:c01", + "software-testing-038:h-单元测试---学习笔记~2.-unit-testing-单元测试~tasks-of-unit-testing-单元测试的任务:c01", + "software-testing-049:h-十二-圈复杂度-cyclomatic-complexity~3.-注意事项:c01", + "software-testing-032:s106:c01", + "software-testing-060:h-补充~二-五个评价指标:c01", + "software-testing-029:s57:c01", + "software-testing-052:h-st-讲义-二-黑盒测试:c08", + "software-testing-051:h-六-等价类划分总结~1.-优点:c01", + "software-testing-051:h-七-边界值分析-boundary-value-analysis-bva~4.-优缺点:c01", + "software-testing-038:h-黑盒测试---详细学习笔记~2.-boundary-value-analysis-bva-边界值分析~concept-概念:c01", + "software-testing-030:s20:c01", + "software-testing-034:s17:c01" + ], + "duration_ms": 917.45, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.25, + "unjudged_chunk_ids": [ + "software-testing-030:s28:c01", + "software-testing-046:q-software-testing-046-q2:c01", + "software-testing-030:s27:c01", + "software-testing-030:s26:c01", + "software-testing-051:h-八-组合测试-combinational-testing~2.-真值表-truth-table:c01", + "software-testing-030:s24:c01", + "software-testing-038:h-集成测试---学习笔记~5.-path-based-integration-基于路径的集成~mm-path-based-integration-基于mm路径的集成:c01", + "software-testing-038:h-黑盒测试---详细学习笔记~3.-combinational-testing-组合测试~when-to-use-decision-tables-何时使用判定表:c01", + "software-testing-038:h-单元测试---学习笔记~2.-unit-testing-单元测试~tasks-of-unit-testing-单元测试的任务:c01", + "software-testing-049:h-十二-圈复杂度-cyclomatic-complexity~3.-注意事项:c01", + "software-testing-032:s106:c01", + "software-testing-060:h-补充~二-五个评价指标:c01", + "software-testing-029:s57:c01", + "software-testing-052:h-st-讲义-二-黑盒测试:c08", + "software-testing-051:h-六-等价类划分总结~1.-优点:c01", + "software-testing-051:h-七-边界值分析-boundary-value-analysis-bva~4.-优缺点:c01", + "software-testing-038:h-黑盒测试---详细学习笔记~2.-boundary-value-analysis-bva-边界值分析~concept-概念:c01", + "software-testing-030:s20:c01", + "software-testing-034:s17:c01" + ] + }, + { + "case_id": "testing-boundary-2", + "topic_id": "testing-boundary", + "course_id": "software_testing", + "scenario": "problem", + "split": "dev", + "query": "每个输入都取七个含越界的代表值,再组合三个输入,是19组还是343组?", + "top_chunk_ids": [ + "software-testing-030:s11:c01", + "software-testing-030:s41:c01", + "software-testing-051:h-八-组合测试-combinational-testing~1.-定义:c01", + "software-testing-030:s8:c01", + "software-testing-031:s30:c01", + "software-testing-051:h-软件测试与维护-讲义-二-黑盒测试去冗余笔记~一-整体脉络分析线:c01", + "software-testing-051:h-九-决策表-decision-table~2.-适用场景:c01", + "software-testing-051:h-三-等价类划分-equivalence-partitioning~2.-什么是分区-partition:c01", + "software-testing-032:s89:c01", + "software-testing-051:h-四-弱等价类与强等价类~2.-强等价类测试:c01", + "software-testing-029:s100:c01", + "software-testing-040:h-unit~题目-2-判定表驱动分析-多条件组合题~解题过程~第四步-生成测试用例:c01", + "software-testing-030:s39:c01", + "software-testing-052:h-st-讲义-二-黑盒测试:c05", + "software-testing-049:h-五-期末重点题型-grade-打分系统~3.-条件组合覆盖解题方法:c01", + "software-testing-030:s24:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第二步-边界值分析-针对有效等价类:c01", + "software-testing-040:h-unit~题目-2-判定表驱动分析-多条件组合题~题目:c01", + "software-testing-040:h-unit~题目-3-白盒覆盖分析-语句-分支-条件组合~解题过程~第四步-条件组合覆盖-multiple-condition-coverage:c02", + "software-testing-058:h-概念整理~四-黑盒测试技术:c01" + ], + "duration_ms": 304.036, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "software-testing-030:s11:c01", + "software-testing-030:s41:c01", + "software-testing-051:h-八-组合测试-combinational-testing~1.-定义:c01", + "software-testing-030:s8:c01", + "software-testing-031:s30:c01", + "software-testing-051:h-软件测试与维护-讲义-二-黑盒测试去冗余笔记~一-整体脉络分析线:c01", + "software-testing-051:h-九-决策表-decision-table~2.-适用场景:c01", + "software-testing-051:h-三-等价类划分-equivalence-partitioning~2.-什么是分区-partition:c01", + "software-testing-032:s89:c01", + "software-testing-051:h-四-弱等价类与强等价类~2.-强等价类测试:c01", + "software-testing-029:s100:c01", + "software-testing-040:h-unit~题目-2-判定表驱动分析-多条件组合题~解题过程~第四步-生成测试用例:c01", + "software-testing-030:s39:c01", + "software-testing-052:h-st-讲义-二-黑盒测试:c05", + "software-testing-049:h-五-期末重点题型-grade-打分系统~3.-条件组合覆盖解题方法:c01", + "software-testing-030:s24:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第二步-边界值分析-针对有效等价类:c01", + "software-testing-040:h-unit~题目-2-判定表驱动分析-多条件组合题~题目:c01", + "software-testing-040:h-unit~题目-3-白盒覆盖分析-语句-分支-条件组合~解题过程~第四步-条件组合覆盖-multiple-condition-coverage:c02", + "software-testing-058:h-概念整理~四-黑盒测试技术:c01" + ] + }, + { + "case_id": "testing-insurance-1", + "topic_id": "testing-insurance", + "course_id": "software_testing", + "scenario": "problem", + "split": "dev", + "query": "保险年龄1–18收费100,19–60收费200,61–150收费300,非整数或越界非法,怎么选等价类和边界测试?", + "top_chunk_ids": [ + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~题目:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第一步-等价类划分:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第二步-边界值分析-针对有效等价类:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第三步-设计测试用例:c01", + "software-testing-024:h-新高考-b~附一-黑盒测试-ds-魔改版~问题1-输入参数的有效等价类与无效等价类划分-覆盖边界和异常情况~1-.-酒店星级-l-正整数-1-10:c01", + "software-testing-024:h-新高考-b~附一-黑盒测试-ds-魔改版~手工速搓版:c01", + "software-testing-030:s14:c01", + "software-testing-024:h-新高考-b~附一-黑盒测试-ds-魔改版~问题2-测试用例设计-覆盖参数组合与预期结果:c01", + "software-testing-024:h-新高考-b~附一-黑盒测试-ds-魔改版~问题1-输入参数的有效等价类与无效等价类划分-覆盖边界和异常情况~3-.-消费金额-a-正实数-a-0-.01-保留两位小数:c01", + "software-testing-051:h-三-等价类划分-equivalence-partitioning~4.-识别等价类的步骤~步骤-3-建立等价类表:c01", + "software-testing-032:s61:c01", + "software-testing-052:h-st-讲义-二-黑盒测试:c26", + "software-testing-052:h-st-讲义-二-黑盒测试:c03", + "software-testing-031:s35:c01", + "software-testing-024:h-新高考-b~四-黑盒测试:c01", + "software-testing-051:h-软件测试与维护-讲义-二-黑盒测试去冗余笔记~一-整体脉络分析线:c01", + "software-testing-040:h-unit~题目-4-循环覆盖~解题过程:c01", + "software-testing-052:h-st-讲义-二-黑盒测试:c07", + "software-testing-024:h-新高考-a~三-黑白盒测试:c04", + "software-testing-052:h-st-讲义-二-黑盒测试:c02" + ], + "duration_ms": 341.243, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第一步-等价类划分:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第二步-边界值分析-针对有效等价类:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第三步-设计测试用例:c01", + "software-testing-024:h-新高考-b~附一-黑盒测试-ds-魔改版~问题1-输入参数的有效等价类与无效等价类划分-覆盖边界和异常情况~1-.-酒店星级-l-正整数-1-10:c01", + "software-testing-024:h-新高考-b~附一-黑盒测试-ds-魔改版~手工速搓版:c01", + "software-testing-030:s14:c01", + "software-testing-024:h-新高考-b~附一-黑盒测试-ds-魔改版~问题2-测试用例设计-覆盖参数组合与预期结果:c01", + "software-testing-024:h-新高考-b~附一-黑盒测试-ds-魔改版~问题1-输入参数的有效等价类与无效等价类划分-覆盖边界和异常情况~3-.-消费金额-a-正实数-a-0-.01-保留两位小数:c01", + "software-testing-051:h-三-等价类划分-equivalence-partitioning~4.-识别等价类的步骤~步骤-3-建立等价类表:c01", + "software-testing-032:s61:c01", + "software-testing-052:h-st-讲义-二-黑盒测试:c26", + "software-testing-052:h-st-讲义-二-黑盒测试:c03", + "software-testing-031:s35:c01", + "software-testing-024:h-新高考-b~四-黑盒测试:c01", + "software-testing-051:h-软件测试与维护-讲义-二-黑盒测试去冗余笔记~一-整体脉络分析线:c01", + "software-testing-040:h-unit~题目-4-循环覆盖~解题过程:c01", + "software-testing-052:h-st-讲义-二-黑盒测试:c07", + "software-testing-024:h-新高考-a~三-黑白盒测试:c04", + "software-testing-052:h-st-讲义-二-黑盒测试:c02" + ] + }, + { + "case_id": "testing-insurance-2", + "topic_id": "testing-insurance", + "course_id": "software_testing", + "scenario": "problem", + "split": "dev", + "query": "测保险系统只用年龄1、80、150够吗?1–18、19–60、61–150三档收费,输入必须是整数。", + "top_chunk_ids": [ + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~题目:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第一步-等价类划分:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第二步-边界值分析-针对有效等价类:c01", + "software-testing-035:s86:c01", + "software-testing-030:s42:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第三步-设计测试用例:c01", + "software-testing-051:h-五-等价类划分典型例题~例-1-外线电话号码:c01", + "software-testing-038:h-软件测试导论-第二部分---学习笔记~2.-software-testing-axioms-软件测试公理~axiom-6-it-is-difficult-to-say-when-a-bug-is-indeed-a-bug:c01", + "software-testing-030:s45:c01", + "software-testing-038:h-静态测试---学习笔记~2.-code-review-代码审查~code-review-checklist-crucial-for-practice-代码审查检查清单-实战关键~data-reference-errors-数据引用错误:c01", + "software-testing-024:h-新高考-b~附一-黑盒测试-ds-魔改版~问题1-输入参数的有效等价类与无效等价类划分-覆盖边界和异常情况~1-.-酒店星级-l-正整数-1-10:c01", + "software-testing-029:s71:c01", + "software-testing-031:s78:c01", + "software-testing-024:h-样板卷-a~为什么条件组合的最小用例集是-7-个:c01", + "software-testing-038:h-黑盒测试---详细学习笔记~2.-boundary-value-analysis-bva-边界值分析~picking-boundary-values-选取边界值的原则:c01", + "software-testing-029:s28:c01", + "software-testing-029:s26:c01", + "software-testing-013:p19:c01", + "software-testing-050:h-st-讲义-三-白盒测试:c11", + "software-testing-035:s47:c01" + ], + "duration_ms": 397.537, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第一步-等价类划分:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第二步-边界值分析-针对有效等价类:c01", + "software-testing-035:s86:c01", + "software-testing-030:s42:c01", + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~解题过程~第三步-设计测试用例:c01", + "software-testing-051:h-五-等价类划分典型例题~例-1-外线电话号码:c01", + "software-testing-038:h-软件测试导论-第二部分---学习笔记~2.-software-testing-axioms-软件测试公理~axiom-6-it-is-difficult-to-say-when-a-bug-is-indeed-a-bug:c01", + "software-testing-030:s45:c01", + "software-testing-038:h-静态测试---学习笔记~2.-code-review-代码审查~code-review-checklist-crucial-for-practice-代码审查检查清单-实战关键~data-reference-errors-数据引用错误:c01", + "software-testing-024:h-新高考-b~附一-黑盒测试-ds-魔改版~问题1-输入参数的有效等价类与无效等价类划分-覆盖边界和异常情况~1-.-酒店星级-l-正整数-1-10:c01", + "software-testing-029:s71:c01", + "software-testing-031:s78:c01", + "software-testing-024:h-样板卷-a~为什么条件组合的最小用例集是-7-个:c01", + "software-testing-038:h-黑盒测试---详细学习笔记~2.-boundary-value-analysis-bva-边界值分析~picking-boundary-values-选取边界值的原则:c01", + "software-testing-029:s28:c01", + "software-testing-029:s26:c01", + "software-testing-013:p19:c01", + "software-testing-050:h-st-讲义-三-白盒测试:c11", + "software-testing-035:s47:c01" + ] + }, + { + "case_id": "testing-branch-1", + "topic_id": "testing-branch", + "course_id": "software_testing", + "scenario": "concept", + "split": "validation", + "query": "判定覆盖能保证复合条件里的每个条件都独立影响结果吗?", + "top_chunk_ids": [ + "software-testing-046:q-software-testing-046-q34:c01", + "software-testing-049:h-十三-复合条件分解~2.-原因:c01", + "software-testing-036:s74:c01", + "software-testing-045:h-unit~第八章-软件质量度量~三-软件度量方法~2.-覆盖率度量-测试充分性指标:c01", + "software-testing-050:h-st-讲义-三-白盒测试:c20", + "software-testing-038:h-白盒测试-路径覆盖与基本路径测试---学习笔记~1.-control-flow-graphs-cfgs-控制流图~discussion-compound-condition-decomposition-讨论-复合条件分解:c01", + "software-testing-049:h-十三-复合条件分解~3.-影响:c01", + "software-testing-049:h-四-逻辑覆盖-logic-coverage~4.-decision-condition-coverage-决策条件覆盖~设计步骤:c01", + "software-testing-049:h-十三-复合条件分解~1.-定义:c01", + "software-testing-049:h-十三-复合条件分解~1.-定义:c03", + "software-testing-049:h-十三-复合条件分解~1.-定义:c02", + "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~3.-condition-coverage-cc-条件覆盖:c01", + "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~2.-decision-coverage-dc-判定覆盖-branch-coverage-分支覆盖:c01", + "software-testing-049:h-四-逻辑覆盖-logic-coverage~3.-condition-coverage-条件覆盖~定义:c01", + "software-testing-049:h-四-逻辑覆盖-logic-coverage~2.-decision-branch-edge-coverage-判定-分支-边覆盖~示例:c01", + "software-testing-038:h-白盒测试-路径覆盖与基本路径测试---学习笔记~5.-deep-dive-compound-condition-decomposition-path-count-深入探讨-复合条件分解与路径计数:c01", + "software-testing-030:s64:c01", + "software-testing-046:q-software-testing-046-q21:c01", + "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~4.-decision-condition-coverage-dcc-判定-条件覆盖:c01", + "software-testing-030:s61:c01" + ], + "duration_ms": 319.852, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.25, + "unjudged_chunk_ids": [ + "software-testing-046:q-software-testing-046-q34:c01", + "software-testing-049:h-十三-复合条件分解~2.-原因:c01", + "software-testing-036:s74:c01", + "software-testing-050:h-st-讲义-三-白盒测试:c20", + "software-testing-038:h-白盒测试-路径覆盖与基本路径测试---学习笔记~1.-control-flow-graphs-cfgs-控制流图~discussion-compound-condition-decomposition-讨论-复合条件分解:c01", + "software-testing-049:h-十三-复合条件分解~3.-影响:c01", + "software-testing-049:h-四-逻辑覆盖-logic-coverage~4.-decision-condition-coverage-决策条件覆盖~设计步骤:c01", + "software-testing-049:h-十三-复合条件分解~1.-定义:c01", + "software-testing-049:h-十三-复合条件分解~1.-定义:c03", + "software-testing-049:h-十三-复合条件分解~1.-定义:c02", + "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~3.-condition-coverage-cc-条件覆盖:c01", + "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~2.-decision-coverage-dc-判定覆盖-branch-coverage-分支覆盖:c01", + "software-testing-049:h-四-逻辑覆盖-logic-coverage~3.-condition-coverage-条件覆盖~定义:c01", + "software-testing-049:h-四-逻辑覆盖-logic-coverage~2.-decision-branch-edge-coverage-判定-分支-边覆盖~示例:c01", + "software-testing-038:h-白盒测试-路径覆盖与基本路径测试---学习笔记~5.-deep-dive-compound-condition-decomposition-path-count-深入探讨-复合条件分解与路径计数:c01", + "software-testing-030:s64:c01", + "software-testing-046:q-software-testing-046-q21:c01", + "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~4.-decision-condition-coverage-dcc-判定-条件覆盖:c01", + "software-testing-030:s61:c01" + ] + }, + { + "case_id": "testing-branch-2", + "topic_id": "testing-branch", + "course_id": "software_testing", + "scenario": "concept", + "split": "validation", + "query": "if里有三个布尔条件,真假分支各走一次就算MC/DC了吗?", + "top_chunk_ids": [ + "software-testing-040:h-unit~题目-3-白盒覆盖分析-语句-分支-条件组合~解题过程~第三步-分支覆盖-判定覆盖-branch-coverage:c01", + "software-testing-049:h-十四-白盒测试考试方法论~3.-如果题目要求列出-decisions-和-conditions:c01", + "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~3.-condition-coverage-cc-条件覆盖:c01", + "software-testing-050:h-st-讲义-三-白盒测试:c04", + "software-testing-049:h-四-逻辑覆盖-logic-coverage~3.-condition-coverage-条件覆盖~定义:c01", + "software-testing-036:s75:c01", + "software-testing-036:s74:c01", + "software-testing-058:h-概念整理~三-白盒测试技术:c01", + "software-testing-036:s76:c01", + "software-testing-030:s61:c01", + "software-testing-045:h-unit~第八章-软件质量度量~三-软件度量方法~2.-覆盖率度量-测试充分性指标:c01", + "software-testing-046:q-software-testing-046-q21:c01", + "software-testing-050:h-st-讲义-三-白盒测试:c05", + "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~2.-decision-coverage-dc-判定覆盖-branch-coverage-分支覆盖:c01", + "software-testing-046:q-software-testing-046-q34:c01", + "software-testing-049:h-四-逻辑覆盖-logic-coverage~2.-decision-branch-edge-coverage-判定-分支-边覆盖~示例:c01", + "software-testing-040:h-unit~总结-各方法答题模板:c01", + "software-testing-049:h-六-逻辑覆盖方法论小结:c01", + "software-testing-036:s73:c01", + "software-testing-036:s77:c01" + ], + "duration_ms": 295.655, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.09090909090909091, + "unjudged_chunk_ids": [ + "software-testing-040:h-unit~题目-3-白盒覆盖分析-语句-分支-条件组合~解题过程~第三步-分支覆盖-判定覆盖-branch-coverage:c01", + "software-testing-049:h-十四-白盒测试考试方法论~3.-如果题目要求列出-decisions-和-conditions:c01", + "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~3.-condition-coverage-cc-条件覆盖:c01", + "software-testing-050:h-st-讲义-三-白盒测试:c04", + "software-testing-049:h-四-逻辑覆盖-logic-coverage~3.-condition-coverage-条件覆盖~定义:c01", + "software-testing-036:s75:c01", + "software-testing-036:s74:c01", + "software-testing-058:h-概念整理~三-白盒测试技术:c01", + "software-testing-036:s76:c01", + "software-testing-030:s61:c01", + "software-testing-046:q-software-testing-046-q21:c01", + "software-testing-050:h-st-讲义-三-白盒测试:c05", + "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~2.-decision-coverage-dc-判定覆盖-branch-coverage-分支覆盖:c01", + "software-testing-046:q-software-testing-046-q34:c01", + "software-testing-049:h-四-逻辑覆盖-logic-coverage~2.-decision-branch-edge-coverage-判定-分支-边覆盖~示例:c01", + "software-testing-040:h-unit~总结-各方法答题模板:c01", + "software-testing-049:h-六-逻辑覆盖方法论小结:c01", + "software-testing-036:s73:c01", + "software-testing-036:s77:c01" + ] + }, + { + "case_id": "ai-prepruning-1", + "topic_id": "ai-prepruning", + "course_id": "artificial_intelligence_intro", + "scenario": "concept", + "split": "validation", + "query": "决策树预剪枝为什么既能减少过拟合,又可能欠拟合?", + "top_chunk_ids": [ + "artificial-intelligence-intro-017:s27:c01", + "artificial-intelligence-intro-017:s20:c01", + "artificial-intelligence-intro-017:s36:c01", + "artificial-intelligence-intro-017:s26:c01", + "artificial-intelligence-intro-017:s25:c01", + "artificial-intelligence-intro-017:s23:c01", + "artificial-intelligence-intro-017:s24:c01", + "artificial-intelligence-intro-017:s51:c01", + "artificial-intelligence-intro-043:h-ai导论~一-选择题答案~三-分析计算题答案~7.-决策树预测-playtennis-no:c01", + "artificial-intelligence-intro-015:s47:c01", + "artificial-intelligence-intro-011:p2:c01", + "artificial-intelligence-intro-002:p5:c01", + "artificial-intelligence-intro-017:s35:c01", + "artificial-intelligence-intro-017:s28:c01", + "artificial-intelligence-intro-017:s33:c01", + "artificial-intelligence-intro-017:s31:c01", + "artificial-intelligence-intro-017:s29:c01", + "artificial-intelligence-intro-017:s22:c01", + "artificial-intelligence-intro-017:s30:c01", + "artificial-intelligence-intro-017:s32:c01" + ], + "duration_ms": 688.62, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "artificial-intelligence-intro-017:s20:c01", + "artificial-intelligence-intro-017:s36:c01", + "artificial-intelligence-intro-017:s26:c01", + "artificial-intelligence-intro-017:s25:c01", + "artificial-intelligence-intro-017:s23:c01", + "artificial-intelligence-intro-017:s24:c01", + "artificial-intelligence-intro-017:s51:c01", + "artificial-intelligence-intro-043:h-ai导论~一-选择题答案~三-分析计算题答案~7.-决策树预测-playtennis-no:c01", + "artificial-intelligence-intro-015:s47:c01", + "artificial-intelligence-intro-011:p2:c01", + "artificial-intelligence-intro-002:p5:c01", + "artificial-intelligence-intro-017:s35:c01", + "artificial-intelligence-intro-017:s28:c01", + "artificial-intelligence-intro-017:s33:c01", + "artificial-intelligence-intro-017:s31:c01", + "artificial-intelligence-intro-017:s29:c01", + "artificial-intelligence-intro-017:s22:c01", + "artificial-intelligence-intro-017:s30:c01", + "artificial-intelligence-intro-017:s32:c01" + ] + }, + { + "case_id": "ai-prepruning-2", + "topic_id": "ai-prepruning", + "course_id": "artificial_intelligence_intro", + "scenario": "concept", + "split": "validation", + "query": "某次分裂当下没提高验证表现就停止,会不会错过后续更好的树?", + "top_chunk_ids": [ + "artificial-intelligence-intro-017:s23:c01", + "artificial-intelligence-intro-058:s8:c01", + "artificial-intelligence-intro-019:s9:c01", + "artificial-intelligence-intro-055:s49:c01", + "artificial-intelligence-intro-055:s42:c01", + "artificial-intelligence-intro-017:s29:c01", + "artificial-intelligence-intro-056:s19:c01", + "artificial-intelligence-intro-055:s29:c01", + "artificial-intelligence-intro-017:s30:c01", + "artificial-intelligence-intro-002:p2:c02", + "artificial-intelligence-intro-017:s27:c01", + "artificial-intelligence-intro-058:s12:c01", + "artificial-intelligence-intro-019:s20:c01", + "artificial-intelligence-intro-018:s19:c01", + "artificial-intelligence-intro-055:s21:c01", + "artificial-intelligence-intro-023:h-dhh题目~图1-知识点-信息增益与决策树分裂属性选择:c09", + "artificial-intelligence-intro-009:s14:c01", + "artificial-intelligence-intro-049:s18:c01", + "artificial-intelligence-intro-023:h-dhh题目~图2-知识点-前馈神经网络-bp-算法-前向传播-梯度下降更新:c09", + "artificial-intelligence-intro-017:s24:c01" + ], + "duration_ms": 195.782, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.09090909090909091, + "unjudged_chunk_ids": [ + "artificial-intelligence-intro-017:s23:c01", + "artificial-intelligence-intro-058:s8:c01", + "artificial-intelligence-intro-019:s9:c01", + "artificial-intelligence-intro-055:s49:c01", + "artificial-intelligence-intro-055:s42:c01", + "artificial-intelligence-intro-017:s29:c01", + "artificial-intelligence-intro-056:s19:c01", + "artificial-intelligence-intro-055:s29:c01", + "artificial-intelligence-intro-017:s30:c01", + "artificial-intelligence-intro-002:p2:c02", + "artificial-intelligence-intro-058:s12:c01", + "artificial-intelligence-intro-019:s20:c01", + "artificial-intelligence-intro-018:s19:c01", + "artificial-intelligence-intro-055:s21:c01", + "artificial-intelligence-intro-023:h-dhh题目~图1-知识点-信息增益与决策树分裂属性选择:c09", + "artificial-intelligence-intro-009:s14:c01", + "artificial-intelligence-intro-049:s18:c01", + "artificial-intelligence-intro-023:h-dhh题目~图2-知识点-前馈神经网络-bp-算法-前向传播-梯度下降更新:c09", + "artificial-intelligence-intro-017:s24:c01" + ] + }, + { + "case_id": "ai-consistent-1", + "topic_id": "ai-consistent", + "course_id": "artificial_intelligence_intro", + "scenario": "concept", + "split": "validation", + "query": "一致启发为什么能让A*像Dijkstra一样工作?请解释重赋权。", + "top_chunk_ids": [ + "artificial-intelligence-intro-008:h-第3章-搜索探寻与问题求解:c04", + "artificial-intelligence-intro-040:h-人工智能导论-模拟卷三-全真冲刺卷~二-简答题-共-40-分:c01", + "artificial-intelligence-intro-050:s51:c01", + "artificial-intelligence-intro-017:s20:c01", + "artificial-intelligence-intro-011:p1:c01", + "artificial-intelligence-intro-050:s3:c01", + "artificial-intelligence-intro-015:s46:c01", + "artificial-intelligence-intro-010:s3:c01", + "artificial-intelligence-intro-008:h-第3章-搜索探寻与问题求解:c03", + "artificial-intelligence-intro-002:p2:c02", + "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~四-按章节整合的核心考点与优先级~第5章-搜索与优化:c01", + "artificial-intelligence-intro-011:p22:c01", + "artificial-intelligence-intro-015:s67:c01", + "artificial-intelligence-intro-009:s11:c01", + "artificial-intelligence-intro-049:s15:c01", + "artificial-intelligence-intro-004:p5:c01", + "artificial-intelligence-intro-015:s49:c01", + "artificial-intelligence-intro-011:p4:c01", + "artificial-intelligence-intro-042:h-2026人工智能导论回忆版:c01", + "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~二-jk2.docx-官方重点清单-源c-逐条映射:c02" + ], + "duration_ms": 198.888, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "artificial-intelligence-intro-040:h-人工智能导论-模拟卷三-全真冲刺卷~二-简答题-共-40-分:c01", + "artificial-intelligence-intro-050:s51:c01", + "artificial-intelligence-intro-017:s20:c01", + "artificial-intelligence-intro-011:p1:c01", + "artificial-intelligence-intro-050:s3:c01", + "artificial-intelligence-intro-015:s46:c01", + "artificial-intelligence-intro-010:s3:c01", + "artificial-intelligence-intro-008:h-第3章-搜索探寻与问题求解:c03", + "artificial-intelligence-intro-002:p2:c02", + "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~四-按章节整合的核心考点与优先级~第5章-搜索与优化:c01", + "artificial-intelligence-intro-011:p22:c01", + "artificial-intelligence-intro-015:s67:c01", + "artificial-intelligence-intro-009:s11:c01", + "artificial-intelligence-intro-049:s15:c01", + "artificial-intelligence-intro-004:p5:c01", + "artificial-intelligence-intro-015:s49:c01", + "artificial-intelligence-intro-011:p4:c01", + "artificial-intelligence-intro-042:h-2026人工智能导论回忆版:c01", + "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~二-jk2.docx-官方重点清单-源c-逐条映射:c02" + ] + }, + { + "case_id": "ai-consistent-2", + "topic_id": "ai-consistent", + "course_id": "artificial_intelligence_intro", + "scenario": "concept", + "split": "validation", + "query": "如果h(n)≤c(n,n′)+h(n′),为什么c′=c−h(n)+h(n′)不会是负数?", + "top_chunk_ids": [ + "artificial-intelligence-intro-050:s51:c01", + "artificial-intelligence-intro-008:h-第3章-搜索探寻与问题求解:c04", + "artificial-intelligence-intro-017:s20:c01", + "artificial-intelligence-intro-015:s56:c01", + "artificial-intelligence-intro-022:p91:c01", + "artificial-intelligence-intro-015:s76:c01", + "artificial-intelligence-intro-015:s79:c01", + "artificial-intelligence-intro-011:p31:c01", + "artificial-intelligence-intro-011:p11:c01", + "artificial-intelligence-intro-011:p34:c01", + "artificial-intelligence-intro-022:p86:c01", + "artificial-intelligence-intro-013:s72:c01", + "artificial-intelligence-intro-002:p2:c02", + "artificial-intelligence-intro-015:s66:c01", + "artificial-intelligence-intro-015:s50:c01", + "artificial-intelligence-intro-011:p5:c01", + "artificial-intelligence-intro-011:p21:c01", + "artificial-intelligence-intro-041:h-人工智能导论-模拟卷二-强化提升卷~一-选择题-每题-1-分-共-20-分:c02", + "artificial-intelligence-intro-015:s61:c01", + "artificial-intelligence-intro-015:s77:c01" + ], + "duration_ms": 216.404, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "artificial-intelligence-intro-050:s51:c01", + "artificial-intelligence-intro-017:s20:c01", + "artificial-intelligence-intro-015:s56:c01", + "artificial-intelligence-intro-022:p91:c01", + "artificial-intelligence-intro-015:s76:c01", + "artificial-intelligence-intro-015:s79:c01", + "artificial-intelligence-intro-011:p31:c01", + "artificial-intelligence-intro-011:p11:c01", + "artificial-intelligence-intro-011:p34:c01", + "artificial-intelligence-intro-022:p86:c01", + "artificial-intelligence-intro-013:s72:c01", + "artificial-intelligence-intro-002:p2:c02", + "artificial-intelligence-intro-015:s66:c01", + "artificial-intelligence-intro-015:s50:c01", + "artificial-intelligence-intro-011:p5:c01", + "artificial-intelligence-intro-011:p21:c01", + "artificial-intelligence-intro-041:h-人工智能导论-模拟卷二-强化提升卷~一-选择题-每题-1-分-共-20-分:c02", + "artificial-intelligence-intro-015:s61:c01", + "artificial-intelligence-intro-015:s77:c01" + ] + }, + { + "case_id": "org-cache-1", + "topic_id": "org-cache", + "course_id": "computer_organization", + "scenario": "concept", + "split": "dev", + "query": "Cache为什么能缓解CPU与主存速度不匹配?", + "top_chunk_ids": [ + "computer-organization-026:s76:c01", + "computer-organization-046:h-题:c01", + "computer-organization-032:s45:c01", + "computer-organization-014:h-b:c02", + "computer-organization-026:s77:c01", + "computer-organization-002:q-computer-organization-002-q7:c01", + "computer-organization-002:q-computer-organization-002-q22:c01", + "computer-organization-009:h-b:c02", + "computer-organization-032:s17:c01", + "computer-organization-049:h-题:c01", + "computer-organization-008:h-b:c04", + "computer-organization-039:h-题:c02", + "computer-organization-027:s91:c01", + "computer-organization-002:q-computer-organization-002-q23:c01", + "computer-organization-003:h-2022秋计算机组成复习要点:c02", + "computer-organization-038:h-题:c01", + "computer-organization-026:s79:c01", + "computer-organization-048:h-题:c02", + "computer-organization-016:h-b:c03", + "computer-organization-045:h-题:c03" + ], + "duration_ms": 345.09, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "computer-organization-046:h-题:c01", + "computer-organization-032:s45:c01", + "computer-organization-014:h-b:c02", + "computer-organization-026:s77:c01", + "computer-organization-002:q-computer-organization-002-q7:c01", + "computer-organization-002:q-computer-organization-002-q22:c01", + "computer-organization-009:h-b:c02", + "computer-organization-032:s17:c01", + "computer-organization-049:h-题:c01", + "computer-organization-008:h-b:c04", + "computer-organization-039:h-题:c02", + "computer-organization-027:s91:c01", + "computer-organization-002:q-computer-organization-002-q23:c01", + "computer-organization-003:h-2022秋计算机组成复习要点:c02", + "computer-organization-038:h-题:c01", + "computer-organization-026:s79:c01", + "computer-organization-048:h-题:c02", + "computer-organization-016:h-b:c03", + "computer-organization-045:h-题:c03" + ] + }, + { + "case_id": "org-cache-2", + "topic_id": "org-cache", + "course_id": "computer_organization", + "scenario": "concept", + "split": "dev", + "query": "只加一小块高速缓存为什么有用?它利用程序访问的什么特点?", + "top_chunk_ids": [ + "computer-organization-032:s17:c01", + "computer-organization-027:s125:c01", + "computer-organization-003:h-2022秋计算机组成复习要点:c02", + "computer-organization-026:s53:c01", + "computer-organization-003:h-2022秋计算机组成复习要点:c03", + "computer-organization-036:h-题:c02", + "computer-organization-014:h-b:c02", + "computer-organization-026:s76:c01", + "computer-organization-026:s11:c01", + "computer-organization-032:s45:c01", + "computer-organization-026:s116:c01", + "computer-organization-032:s38:c01", + "computer-organization-039:h-题:c02", + "computer-organization-002:q-computer-organization-002-q23:c01", + "computer-organization-027:s9:c01", + "computer-organization-069:h-答案:c01", + "computer-organization-008:h-b:c03", + "computer-organization-013:h-b:c03", + "computer-organization-026:s63:c01", + "computer-organization-028:s7:c01" + ], + "duration_ms": 116.296, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.125, + "unjudged_chunk_ids": [ + "computer-organization-032:s17:c01", + "computer-organization-027:s125:c01", + "computer-organization-003:h-2022秋计算机组成复习要点:c02", + "computer-organization-026:s53:c01", + "computer-organization-003:h-2022秋计算机组成复习要点:c03", + "computer-organization-036:h-题:c02", + "computer-organization-014:h-b:c02", + "computer-organization-026:s11:c01", + "computer-organization-032:s45:c01", + "computer-organization-026:s116:c01", + "computer-organization-032:s38:c01", + "computer-organization-039:h-题:c02", + "computer-organization-002:q-computer-organization-002-q23:c01", + "computer-organization-027:s9:c01", + "computer-organization-069:h-答案:c01", + "computer-organization-008:h-b:c03", + "computer-organization-013:h-b:c03", + "computer-organization-026:s63:c01", + "computer-organization-028:s7:c01" + ] + }, + { + "case_id": "web-margin-1", + "topic_id": "web-margin", + "course_id": "web_frontend_fundamentals", + "scenario": "concept", + "split": "validation", + "query": "CSS只想增加元素下面的外边距,应该改哪个属性?", + "top_chunk_ids": [ + "web-frontend-fundamentals-014:s32:c01", + "web-frontend-fundamentals-014:s34:c01", + "web-frontend-fundamentals-015:s26:c01", + "web-frontend-fundamentals-014:s22:c01", + "web-frontend-fundamentals-014:s33:c01", + "web-frontend-fundamentals-014:s37:c01", + "web-frontend-fundamentals-015:s3:c01", + "web-frontend-fundamentals-017:s17:c01", + "web-frontend-fundamentals-017:s15:c01", + "web-frontend-fundamentals-017:s14:c01", + "web-frontend-fundamentals-014:s29:c01", + "web-frontend-fundamentals-006:s21:c01", + "web-frontend-fundamentals-013:s3:c01", + "web-frontend-fundamentals-014:s31:c01", + "web-frontend-fundamentals-007:s23:c01", + "web-frontend-fundamentals-007:s32:c01", + "web-frontend-fundamentals-014:s20:c01", + "web-frontend-fundamentals-013:s33:c01", + "web-frontend-fundamentals-018:s22:c01", + "web-frontend-fundamentals-015:s39:c01" + ], + "duration_ms": 316.306, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "web-frontend-fundamentals-014:s34:c01", + "web-frontend-fundamentals-015:s26:c01", + "web-frontend-fundamentals-014:s22:c01", + "web-frontend-fundamentals-014:s33:c01", + "web-frontend-fundamentals-014:s37:c01", + "web-frontend-fundamentals-015:s3:c01", + "web-frontend-fundamentals-017:s17:c01", + "web-frontend-fundamentals-017:s15:c01", + "web-frontend-fundamentals-017:s14:c01", + "web-frontend-fundamentals-014:s29:c01", + "web-frontend-fundamentals-006:s21:c01", + "web-frontend-fundamentals-013:s3:c01", + "web-frontend-fundamentals-014:s31:c01", + "web-frontend-fundamentals-007:s23:c01", + "web-frontend-fundamentals-007:s32:c01", + "web-frontend-fundamentals-014:s20:c01", + "web-frontend-fundamentals-013:s33:c01", + "web-frontend-fundamentals-018:s22:c01", + "web-frontend-fundamentals-015:s39:c01" + ] + }, + { + "case_id": "web-margin-2", + "topic_id": "web-margin", + "course_id": "web_frontend_fundamentals", + "scenario": "concept", + "split": "validation", + "query": "不想动上左右间距,只想让一个块和下一个块离远一点,margin还是margin-bottom?", + "top_chunk_ids": [ + "web-frontend-fundamentals-014:s36:c01", + "web-frontend-fundamentals-014:s32:c01", + "web-frontend-fundamentals-003:s8:c01", + "web-frontend-fundamentals-015:s17:c01", + "web-frontend-fundamentals-010:s2:c01", + "web-frontend-fundamentals-015:s20:c01", + "web-frontend-fundamentals-015:s8:c01", + "web-frontend-fundamentals-014:s27:c01", + "web-frontend-fundamentals-016:s5:c01", + "web-frontend-fundamentals-015:s18:c01", + "web-frontend-fundamentals-013:s38:c01", + "web-frontend-fundamentals-014:s13:c01", + "web-frontend-fundamentals-006:s30:c01", + "web-frontend-fundamentals-015:s13:c01", + "web-frontend-fundamentals-014:s29:c01", + "web-frontend-fundamentals-014:s20:c01", + "web-frontend-fundamentals-014:s28:c01", + "web-frontend-fundamentals-015:s12:c01", + "web-frontend-fundamentals-006:s14:c01", + "web-frontend-fundamentals-008:s13:c01" + ], + "duration_ms": 70.055, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "web-frontend-fundamentals-014:s36:c01", + "web-frontend-fundamentals-003:s8:c01", + "web-frontend-fundamentals-015:s17:c01", + "web-frontend-fundamentals-010:s2:c01", + "web-frontend-fundamentals-015:s20:c01", + "web-frontend-fundamentals-015:s8:c01", + "web-frontend-fundamentals-014:s27:c01", + "web-frontend-fundamentals-016:s5:c01", + "web-frontend-fundamentals-015:s18:c01", + "web-frontend-fundamentals-013:s38:c01", + "web-frontend-fundamentals-014:s13:c01", + "web-frontend-fundamentals-006:s30:c01", + "web-frontend-fundamentals-015:s13:c01", + "web-frontend-fundamentals-014:s29:c01", + "web-frontend-fundamentals-014:s20:c01", + "web-frontend-fundamentals-014:s28:c01", + "web-frontend-fundamentals-015:s12:c01", + "web-frontend-fundamentals-006:s14:c01", + "web-frontend-fundamentals-008:s13:c01" + ] + }, + { + "case_id": "discrete-partition-1", + "topic_id": "discrete-partition", + "course_id": "discrete_mathematics", + "scenario": "problem", + "split": "dev", + "query": "A={a,b,c,d},等价关系R={(a,b),(b,a),(c,d),(d,c)}∪I_A,对应什么划分?", + "top_chunk_ids": [ + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q20:c01", + "discrete-mathematics-005:p6:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-005:p5:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p7:q-discrete-mathematics-003-q34:c01", + "discrete-mathematics-005:p2:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p5:q-discrete-mathematics-003-q22:c01", + "discrete-mathematics-005:p1:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-005:p3:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q9:c01", + "discrete-mathematics-005:p4:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-006:p5:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-005:p7:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-006:p1:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q19:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q9:c03", + "discrete-mathematics-006:p4:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-006:p6:q-discrete-mathematics-006-q5:c01", + "discrete-mathematics-006:p2:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q18:c01", + "discrete-mathematics-006:p3:q-discrete-mathematics-006-q4:c01" + ], + "duration_ms": 33.857, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "discrete-mathematics-005:p6:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-005:p5:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p7:q-discrete-mathematics-003-q34:c01", + "discrete-mathematics-005:p2:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p5:q-discrete-mathematics-003-q22:c01", + "discrete-mathematics-005:p1:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-005:p3:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q9:c01", + "discrete-mathematics-005:p4:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-006:p5:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-005:p7:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-006:p1:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q19:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q9:c03", + "discrete-mathematics-006:p4:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-006:p6:q-discrete-mathematics-006-q5:c01", + "discrete-mathematics-006:p2:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q18:c01", + "discrete-mathematics-006:p3:q-discrete-mathematics-006-q4:c01" + ] + }, + { + "case_id": "discrete-partition-2", + "topic_id": "discrete-partition", + "course_id": "discrete_mathematics", + "scenario": "problem", + "split": "dev", + "query": "a和b等价,c和d等价,每个元素也与自己等价,为什么不是四个单独的等价类?", + "top_chunk_ids": [ + "discrete-mathematics-005:p6:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-005:p5:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q20:c01", + "discrete-mathematics-005:p2:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p5:q-discrete-mathematics-003-q22:c01", + "discrete-mathematics-005:p4:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p7:q-discrete-mathematics-003-q34:c01", + "discrete-mathematics-006:p2:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-006:p4:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-005:p3:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-006:p5:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-003:p5:q-discrete-mathematics-003-q26:c01", + "discrete-mathematics-006:p3:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-005:p1:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q18:c01", + "discrete-mathematics-006:p6:q-discrete-mathematics-006-q5:c01", + "discrete-mathematics-003:p5:q-discrete-mathematics-003-q24:c01", + "discrete-mathematics-006:p1:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-006:p7:q-discrete-mathematics-006-q5:c01", + "discrete-mathematics-003:p8:q-discrete-mathematics-003-q35:c01" + ], + "duration_ms": 22.492, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "discrete-mathematics-005:p6:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-005:p5:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-005:p2:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p5:q-discrete-mathematics-003-q22:c01", + "discrete-mathematics-005:p4:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p7:q-discrete-mathematics-003-q34:c01", + "discrete-mathematics-006:p2:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-006:p4:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-005:p3:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-006:p5:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-003:p5:q-discrete-mathematics-003-q26:c01", + "discrete-mathematics-006:p3:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-005:p1:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q18:c01", + "discrete-mathematics-006:p6:q-discrete-mathematics-006-q5:c01", + "discrete-mathematics-003:p5:q-discrete-mathematics-003-q24:c01", + "discrete-mathematics-006:p1:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-006:p7:q-discrete-mathematics-006-q5:c01", + "discrete-mathematics-003:p8:q-discrete-mathematics-003-q35:c01" + ] + }, + { + "case_id": "electrical-plan-1", + "topic_id": "electrical-plan", + "course_id": "electrical_engineering", + "scenario": "review", + "split": "dev", + "query": "电路复习大纲里一阶暂态分析要掌握哪三个量?我想先按它们安排练习。", + "top_chunk_ids": [ + "electrical-engineering-009:h-电路与电子技术-复习大纲:c01", + "electrical-engineering-008:p1:c01", + "electrical-engineering-009:h-电路与电子技术-复习大纲:c02", + "electrical-engineering-008:p2:c01", + "electrical-engineering-008:p3:c01", + "electrical-engineering-008:p4:c01", + "electrical-engineering-008:p5:c01", + "electrical-engineering-001:p1:c01", + "electrical-engineering-001:p2:c01", + "electrical-engineering-001:p3:c01", + "electrical-engineering-001:p4:c01", + "electrical-engineering-001:p5:c01", + "electrical-engineering-001:p6:c01", + "electrical-engineering-001:p7:c01", + "electrical-engineering-004:h-2022级电工回忆版:c01", + "electrical-engineering-003:p2:c01", + "electrical-engineering-003:p4:c02", + "electrical-engineering-003:p2:c02", + "electrical-engineering-003:p4:c01", + "electrical-engineering-005:p4:c01" + ], + "duration_ms": 30.117, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "electrical-engineering-008:p1:c01", + "electrical-engineering-009:h-电路与电子技术-复习大纲:c02", + "electrical-engineering-008:p2:c01", + "electrical-engineering-008:p3:c01", + "electrical-engineering-008:p4:c01", + "electrical-engineering-008:p5:c01", + "electrical-engineering-001:p1:c01", + "electrical-engineering-001:p2:c01", + "electrical-engineering-001:p3:c01", + "electrical-engineering-001:p4:c01", + "electrical-engineering-001:p5:c01", + "electrical-engineering-001:p6:c01", + "electrical-engineering-001:p7:c01", + "electrical-engineering-004:h-2022级电工回忆版:c01", + "electrical-engineering-003:p2:c01", + "electrical-engineering-003:p4:c02", + "electrical-engineering-003:p2:c02", + "electrical-engineering-003:p4:c01", + "electrical-engineering-005:p4:c01" + ] + }, + { + "case_id": "electrical-plan-2", + "topic_id": "electrical-plan", + "course_id": "electrical_engineering", + "scenario": "review", + "split": "dev", + "query": "复习RC/RL一阶暂态时,初始值、最终值和变化快慢分别对应大纲中的什么?", + "top_chunk_ids": [ + "electrical-engineering-008:p1:c01", + "electrical-engineering-009:h-电路与电子技术-复习大纲:c01", + "electrical-engineering-008:p3:c01", + "electrical-engineering-009:h-电路与电子技术-复习大纲:c02", + "electrical-engineering-008:p2:c01", + "electrical-engineering-008:p4:c01", + "electrical-engineering-008:p5:c01", + "electrical-engineering-001:p1:c01", + "electrical-engineering-001:p2:c01", + "electrical-engineering-001:p3:c01", + "electrical-engineering-001:p4:c01", + "electrical-engineering-001:p5:c01", + "electrical-engineering-001:p6:c01", + "electrical-engineering-001:p7:c01", + "electrical-engineering-004:h-2022级电工回忆版:c01", + "electrical-engineering-003:p2:c01", + "electrical-engineering-003:p4:c02", + "electrical-engineering-003:p2:c02", + "electrical-engineering-003:p5:c01", + "electrical-engineering-005:p4:c01" + ], + "duration_ms": 23.896, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "electrical-engineering-008:p1:c01", + "electrical-engineering-008:p3:c01", + "electrical-engineering-009:h-电路与电子技术-复习大纲:c02", + "electrical-engineering-008:p2:c01", + "electrical-engineering-008:p4:c01", + "electrical-engineering-008:p5:c01", + "electrical-engineering-001:p1:c01", + "electrical-engineering-001:p2:c01", + "electrical-engineering-001:p3:c01", + "electrical-engineering-001:p4:c01", + "electrical-engineering-001:p5:c01", + "electrical-engineering-001:p6:c01", + "electrical-engineering-001:p7:c01", + "electrical-engineering-004:h-2022级电工回忆版:c01", + "electrical-engineering-003:p2:c01", + "electrical-engineering-003:p4:c02", + "electrical-engineering-003:p2:c02", + "electrical-engineering-003:p5:c01", + "electrical-engineering-005:p4:c01" + ] + }, + { + "case_id": "ds-source-error-1", + "topic_id": "ds-source-error", + "course_id": "data_structure", + "scenario": "source_correction", + "split": "dev", + "query": "资料说切换到std::sort就确保排序稳定,这句话对吗?", + "top_chunk_ids": [ + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c03", + "data-structure-016:p1:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02", + "data-structure-004:h-sort_faster:c01", + "data-structure-029:h-1:c01", + "data-structure-003:h-contrary:c01", + "data-structure-022:h-2025-a-辅修班卷子:c02", + "data-structure-024:p6:c01", + "data-structure-005:h-1:c01", + "data-structure-008:h-4:c01", + "data-structure-018:h-2023-a-数据结构-初稿:c01", + "data-structure-006:h-2:c01", + "data-structure-010:h-2011级数据结构试卷a及答案:c03", + "data-structure-015:h-2016数据结构试卷b及答案:c02", + "data-structure-020:h-2024-a-数据结构:c05", + "data-structure-012:q-data-structure-012-q1:c02", + "data-structure-024:p1:c01", + "data-structure-020:h-2024-a-数据结构:c07", + "data-structure-020:h-2024-a-数据结构:c02" + ], + "duration_ms": 40.49, + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "data-structure-016:p1:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02", + "data-structure-004:h-sort_faster:c01", + "data-structure-029:h-1:c01", + "data-structure-003:h-contrary:c01", + "data-structure-022:h-2025-a-辅修班卷子:c02", + "data-structure-024:p6:c01", + "data-structure-005:h-1:c01", + "data-structure-008:h-4:c01", + "data-structure-018:h-2023-a-数据结构-初稿:c01", + "data-structure-006:h-2:c01", + "data-structure-010:h-2011级数据结构试卷a及答案:c03", + "data-structure-015:h-2016数据结构试卷b及答案:c02", + "data-structure-020:h-2024-a-数据结构:c05", + "data-structure-012:q-data-structure-012-q1:c02", + "data-structure-024:p1:c01", + "data-structure-020:h-2024-a-数据结构:c07", + "data-structure-020:h-2024-a-数据结构:c02" + ] + }, + { + "case_id": "ds-source-error-2", + "topic_id": "ds-source-error", + "course_id": "data_structure", + "scenario": "source_correction", + "split": "dev", + "query": "相同分数的学生必须保留原先先后顺序,笔记建议用std::sort,我能直接照做吗?", + "top_chunk_ids": [ + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c01", + "data-structure-004:h-sort_faster:c01", + "data-structure-016:p1:c01", + "data-structure-029:h-1:c01", + "data-structure-003:h-contrary:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c03", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02", + "data-structure-019:p1:c01", + "data-structure-024:p1:c01", + "data-structure-005:h-1:c01", + "data-structure-008:h-4:c01", + "data-structure-024:p2:c01", + "data-structure-023:h-作业及分析:c01", + "data-structure-011:h-2012数据结构试卷a及答案:c01", + "data-structure-014:h-2016数据结构试卷a及答案:c01", + "data-structure-022:h-2025-a-辅修班卷子:c03", + "data-structure-018:h-2023-a-数据结构-初稿:c01", + "data-structure-006:h-2:c01", + "data-structure-010:h-2011级数据结构试卷a及答案:c03", + "data-structure-015:h-2016数据结构试卷b及答案:c02" + ], + "duration_ms": 28.389, + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.16666666666666666, + "unjudged_chunk_ids": [ + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c01", + "data-structure-004:h-sort_faster:c01", + "data-structure-016:p1:c01", + "data-structure-029:h-1:c01", + "data-structure-003:h-contrary:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02", + "data-structure-019:p1:c01", + "data-structure-024:p1:c01", + "data-structure-005:h-1:c01", + "data-structure-008:h-4:c01", + "data-structure-024:p2:c01", + "data-structure-023:h-作业及分析:c01", + "data-structure-011:h-2012数据结构试卷a及答案:c01", + "data-structure-014:h-2016数据结构试卷a及答案:c01", + "data-structure-022:h-2025-a-辅修班卷子:c03", + "data-structure-018:h-2023-a-数据结构-初稿:c01", + "data-structure-006:h-2:c01", + "data-structure-010:h-2011级数据结构试卷a及答案:c03", + "data-structure-015:h-2016数据结构试卷b及答案:c02" + ] + } + ], + "by_course_id": { + "linear_algebra": { + "queries": 2, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.35 + }, + "probability_theory": { + "queries": 4, + "known_evidence_coverage_at_5": 0.25, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_5": 0.25, + "all_evidence_groups_at_20": 0.5, + "known_positive_mrr": 0.270833 + }, + "algorithm_design_and_analysis": { + "queries": 2, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "data_structure": { + "queries": 4, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.625 + }, + "database": { + "queries": 6, + "known_evidence_coverage_at_5": 0.666667, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.666667, + "all_evidence_groups_at_20": 0.833333, + "known_positive_mrr": 0.431481 + }, + "operating_systems": { + "queries": 6, + "known_evidence_coverage_at_5": 0.166667, + "known_evidence_coverage_at_20": 0.666667, + "all_evidence_groups_at_5": 0.166667, + "all_evidence_groups_at_20": 0.666667, + "known_positive_mrr": 0.082257 + }, + "compiler_principles": { + "queries": 4, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.767857 + }, + "computer_networks": { + "queries": 4, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 0.75, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 0.75, + "known_positive_mrr": 0.625 + }, + "software_testing": { + "queries": 6, + "known_evidence_coverage_at_5": 0.666667, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.666667, + "all_evidence_groups_at_20": 0.833333, + "known_positive_mrr": 0.431818 + }, + "artificial_intelligence_intro": { + "queries": 4, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.647727 + }, + "computer_organization": { + "queries": 2, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.5625 + }, + "web_frontend_fundamentals": { + "queries": 2, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.75 + }, + "discrete_mathematics": { + "queries": 2, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.666667 + }, + "electrical_engineering": { + "queries": 2, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.75 + } + }, + "by_scenario": { + "concept": { + "queries": 24, + "known_evidence_coverage_at_5": 0.625, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.625, + "all_evidence_groups_at_20": 0.833333, + "known_positive_mrr": 0.440672 + }, + "problem": { + "queries": 14, + "known_evidence_coverage_at_5": 0.642857, + "known_evidence_coverage_at_20": 0.785714, + "all_evidence_groups_at_5": 0.642857, + "all_evidence_groups_at_20": 0.785714, + "known_positive_mrr": 0.552721 + }, + "mistake": { + "queries": 4, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.149116 + }, + "review": { + "queries": 4, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.875 + }, + "evidence_bundle": { + "queries": 2, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "source_correction": { + "queries": 2, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.583333 + } + }, + "by_split": { + "validation": { + "queries": 24, + "known_evidence_coverage_at_5": 0.625, + "known_evidence_coverage_at_20": 0.916667, + "all_evidence_groups_at_5": 0.625, + "all_evidence_groups_at_20": 0.916667, + "known_positive_mrr": 0.490838 + }, + "dev": { + "queries": 26, + "known_evidence_coverage_at_5": 0.692308, + "known_evidence_coverage_at_20": 0.807692, + "all_evidence_groups_at_5": 0.692308, + "all_evidence_groups_at_20": 0.807692, + "known_positive_mrr": 0.530662 + } + } +} diff --git a/apps/scut-senior/resources/evaluation/reviewed-v2/legacy-audit.json b/apps/scut-senior/resources/evaluation/reviewed-v2/legacy-audit.json new file mode 100644 index 00000000..97ae0056 --- /dev/null +++ b/apps/scut-senior/resources/evaluation/reviewed-v2/legacy-audit.json @@ -0,0 +1,36122 @@ +{ + "schema_version": "evaluation-annotation-audit-v1", + "review_date": "2026-09-12", + "method": "Exhaustive reference/text-shape inventory; semantic examples reviewed by Codex in AUDIT.md. No blanket human/semantic certification.", + "corpus_version": "corpus-c1513a68ccd7-b0_2_0-m1200-wworkflow-contract-v1-ooutline-none-v1-ebge-small-zh-v1.5", + "summary": { + "queries": 1380, + "courses": 46, + "findings": { + "no_per_query_answer_or_relevance_rationale": 1380, + "broad_or_template_query_with_specific_chunk_target": 1148, + "short_text_requires_semantic_review": 231, + "image_only_not_text_answer_evidence": 281, + "replacement_character_in_source": 7 + } + }, + "courses": [ + { + "course_id": "algorithm_design_and_analysis", + "legacy_queries": 30, + "chunks": 757, + "image_only_chunks": 44 + }, + { + "course_id": "artificial_intelligence_intro", + "legacy_queries": 30, + "chunks": 1691, + "image_only_chunks": 20 + }, + { + "course_id": "circuit_and_electronics_lab", + "legacy_queries": 30, + "chunks": 2, + "image_only_chunks": 2 + }, + { + "course_id": "compiler_principles", + "legacy_queries": 30, + "chunks": 486, + "image_only_chunks": 36 + }, + { + "course_id": "computer_graphics", + "legacy_queries": 30, + "chunks": 707, + "image_only_chunks": 31 + }, + { + "course_id": "computer_networks", + "legacy_queries": 30, + "chunks": 1647, + "image_only_chunks": 219 + }, + { + "course_id": "computer_organization", + "legacy_queries": 30, + "chunks": 782, + "image_only_chunks": 103 + }, + { + "course_id": "computer_science_intro", + "legacy_queries": 30, + "chunks": 263, + "image_only_chunks": 1 + }, + { + "course_id": "computing_methods", + "legacy_queries": 30, + "chunks": 827, + "image_only_chunks": 23 + }, + { + "course_id": "cpp", + "legacy_queries": 30, + "chunks": 952, + "image_only_chunks": 14 + }, + { + "course_id": "data_structure", + "legacy_queries": 30, + "chunks": 131, + "image_only_chunks": 3 + }, + { + "course_id": "database", + "legacy_queries": 30, + "chunks": 307, + "image_only_chunks": 2 + }, + { + "course_id": "digital_logic", + "legacy_queries": 30, + "chunks": 97, + "image_only_chunks": 17 + }, + { + "course_id": "digital_system_creative_design", + "legacy_queries": 30, + "chunks": 582, + "image_only_chunks": 507 + }, + { + "course_id": "discrete_mathematics", + "legacy_queries": 30, + "chunks": 99, + "image_only_chunks": 23 + }, + { + "course_id": "electrical_engineering", + "legacy_queries": 30, + "chunks": 93, + "image_only_chunks": 75 + }, + { + "course_id": "electrical_engineering_lab", + "legacy_queries": 30, + "chunks": 35, + "image_only_chunks": 35 + }, + { + "course_id": "embedded_systems", + "legacy_queries": 30, + "chunks": 832, + "image_only_chunks": 38 + }, + { + "course_id": "engineering_math_analysis_1", + "legacy_queries": 30, + "chunks": 524, + "image_only_chunks": 17 + }, + { + "course_id": "engineering_math_analysis_2", + "legacy_queries": 30, + "chunks": 686, + "image_only_chunks": 2 + }, + { + "course_id": "english", + "legacy_queries": 30, + "chunks": 10, + "image_only_chunks": 0 + }, + { + "course_id": "ideology_morality_and_rule_of_law", + "legacy_queries": 30, + "chunks": 7, + "image_only_chunks": 0 + }, + { + "course_id": "information_security_intro", + "legacy_queries": 30, + "chunks": 8, + "image_only_chunks": 4 + }, + { + "course_id": "information_security_mathematics", + "legacy_queries": 30, + "chunks": 102, + "image_only_chunks": 38 + }, + { + "course_id": "intelligent_algorithms", + "legacy_queries": 30, + "chunks": 658, + "image_only_chunks": 485 + }, + { + "course_id": "linear_algebra", + "legacy_queries": 30, + "chunks": 223, + "image_only_chunks": 25 + }, + { + "course_id": "machine_learning", + "legacy_queries": 30, + "chunks": 17, + "image_only_chunks": 17 + }, + { + "course_id": "mao_zedong_thought_overview", + "legacy_queries": 30, + "chunks": 45, + "image_only_chunks": 0 + }, + { + "course_id": "marxist_basic_principles", + "legacy_queries": 30, + "chunks": 23, + "image_only_chunks": 0 + }, + { + "course_id": "mathematical_modeling", + "legacy_queries": 30, + "chunks": 2308, + "image_only_chunks": 5 + }, + { + "course_id": "mobile_application_development", + "legacy_queries": 30, + "chunks": 49, + "image_only_chunks": 3 + }, + { + "course_id": "network_application_architecture", + "legacy_queries": 30, + "chunks": 2, + "image_only_chunks": 0 + }, + { + "course_id": "network_management", + "legacy_queries": 30, + "chunks": 13, + "image_only_chunks": 2 + }, + { + "course_id": "next_generation_network_architecture", + "legacy_queries": 30, + "chunks": 32, + "image_only_chunks": 0 + }, + { + "course_id": "operating_systems", + "legacy_queries": 30, + "chunks": 1242, + "image_only_chunks": 34 + }, + { + "course_id": "probability_theory", + "legacy_queries": 30, + "chunks": 423, + "image_only_chunks": 0 + }, + { + "course_id": "signals_and_communication", + "legacy_queries": 30, + "chunks": 984, + "image_only_chunks": 21 + }, + { + "course_id": "software_engineering", + "legacy_queries": 30, + "chunks": 2340, + "image_only_chunks": 155 + }, + { + "course_id": "software_testing", + "legacy_queries": 30, + "chunks": 2520, + "image_only_chunks": 41 + }, + { + "course_id": "swarm_intelligence", + "legacy_queries": 30, + "chunks": 353, + "image_only_chunks": 2 + }, + { + "course_id": "university_physics_3_1", + "legacy_queries": 30, + "chunks": 306, + "image_only_chunks": 0 + }, + { + "course_id": "university_physics_3_2", + "legacy_queries": 30, + "chunks": 420, + "image_only_chunks": 0 + }, + { + "course_id": "university_physics_lab_1", + "legacy_queries": 30, + "chunks": 30, + "image_only_chunks": 0 + }, + { + "course_id": "university_physics_lab_2", + "legacy_queries": 30, + "chunks": 389, + "image_only_chunks": 32 + }, + { + "course_id": "web_frontend_fundamentals", + "legacy_queries": 30, + "chunks": 652, + "image_only_chunks": 96 + }, + { + "course_id": "xi_thought_overview", + "legacy_queries": 30, + "chunks": 5, + "image_only_chunks": 0 + } + ], + "entries": [ + { + "legacy_id": "algorithm_design_and_analysis:001", + "course_id": "algorithm_design_and_analysis", + "query": "2023-2024 B卷主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-001:p1:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-001", + "source_title": "2023-2024 算法设计与分析B卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "6d111a4b37131682c4413ab6661761bc196b46c1547dddcbf7c3cbb2c7805a00", + "text_excerpt": "诚信应考,考试作弊将带来严重后果!\n\n华南理工大学本科生期末考试\n\n《算法设计与分析》B 卷\n\n( 密 封 线 内 不 答 题 )\n姓名\n学号\n学院\n专业\n座位号\n\n2023-2024 学年第二学期\n\n线\n封\n密\n\n注意事项:1. 开考前请将密封线内各项信息填写清楚;", + "flags": [] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:002", + "course_id": "algorithm_design_and_analysis", + "query": "我想先复习2023-2024 B卷,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-001:p1:q-algorithm-design-and-analysis-001-q1:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-001", + "source_title": "2023-2024 算法设计与分析B卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "53f264542c46e1b8d98fae918ff8183ba51d4a807504c8ae4a02cf9a90936e56", + "text_excerpt": "2. 所有答案请直接答在试卷上;", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:003", + "course_id": "algorithm_design_and_analysis", + "query": "复习2023-2024 B卷时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-001:p1:q-algorithm-design-and-analysis-001-q2:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-001", + "source_title": "2023-2024 算法设计与分析B卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "be37a7f01e84d3f4afe006fa73a71d0fd26edd43b2b12a5f3ce0320ef79fa7bc", + "text_excerpt": "3. 考试形式:闭卷;", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:004", + "course_id": "algorithm_design_and_analysis", + "query": "2023-2024 B卷里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-001:p1:q-algorithm-design-and-analysis-001-q3:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-001", + "source_title": "2023-2024 算法设计与分析B卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "fa20876d312b76b5b71882b4c903bc3f74d43bdc8cd3bca440bd45a6f4349cf4", + "text_excerpt": "4. 本试卷共7 大题,满分100 分,考试时间120 分钟;\n\n题 号\n一\n二\n三\n四\n五\n六\n七\n总分\n\n得 分\n\n评阅教师请在试卷袋上评阅栏签名", + "flags": [] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:005", + "course_id": "algorithm_design_and_analysis", + "query": "学习2023-2024 B卷时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-001:p1:q-algorithm-design-and-analysis-001-q4:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-001", + "source_title": "2023-2024 算法设计与分析B卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "0232f5d2d69527a0a1a2d0aacae3cd4ed982b159dc43da52057e96cd8ec83f06", + "text_excerpt": "一、 共5 题,每题3 分,共15 分.", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:006", + "course_id": "algorithm_design_and_analysis", + "query": "这类题一般怎么考?能用渐进增长率的比较举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-001:p1:q-algorithm-design-and-analysis-001-q5:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-001", + "source_title": "2023-2024 算法设计与分析B卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "35aace7b7a0e0b69076b3eeb1d8e2e5620c83fc61e6490f3d2cb4c5b10068d77", + "text_excerpt": "1.𝑓(𝑛) = 22𝑛, 𝑔(𝑛) = 2𝑛", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:007", + "course_id": "algorithm_design_and_analysis", + "query": "渐进增长率的比较怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-001:p1:q-algorithm-design-and-analysis-001-q6:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-001", + "source_title": "2023-2024 算法设计与分析B卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "4400d3402181ba42a996cd85c56c6b19b7b25c19fecbf896f86afdc1c1c0ce3e", + "text_excerpt": "2.𝑓(𝑛) = 𝑛log 𝑐, 𝑔(𝑛) = 𝑐log 𝑛\n\n得分", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:008", + "course_id": "algorithm_design_and_analysis", + "query": "做渐进增长率的比较时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-001:p1:q-algorithm-design-and-analysis-001-q7:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-001", + "source_title": "2023-2024 算法设计与分析B卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "1383630042308512dae91a76aab126049a05c5ca86429a49a3bf6d47f544f9f7", + "text_excerpt": "3.𝑓(𝑛) = 8 log(𝑛𝑛), 𝑔(𝑛) = 100 log(𝑛!)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:009", + "course_id": "algorithm_design_and_analysis", + "query": "渐进增长率的比较的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-001:p1:q-algorithm-design-and-analysis-001-q8:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-001", + "source_title": "2023-2024 算法设计与分析B卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "9972cfbcce94026a72b4691729f1282322bc827cb6eee01de9c926c2fdca608a", + "text_excerpt": "4.𝑓(𝑛) = 𝑛, 𝑔(𝑛) = log2 𝑛", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:010", + "course_id": "algorithm_design_and_analysis", + "query": "能把渐进增长率的比较的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-001:p1:q-algorithm-design-and-analysis-001-q9:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-001", + "source_title": "2023-2024 算法设计与分析B卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "b60a7e9029f6f529ddf13c0c9dc3d7edb8e1bb941f7ba4c8e4fc641c6d7aeea8", + "text_excerpt": "5.𝑓(𝑛) = 𝑛log 𝑛+ 𝑛, 𝑔(𝑛) = log 𝑛+ 𝑛\n\n《算法设计与分析》试卷 第 1 页 共 4 页", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:011", + "course_id": "algorithm_design_and_analysis", + "query": "做递推关系的通项和复杂度时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-001:p2:q-algorithm-design-and-analysis-001-q10:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-001", + "source_title": "2023-2024 算法设计与分析B卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "70b6ed474614b5125d84770f0e7c666f991d3175bf6746873c9cd89d52d93cbd", + "text_excerpt": "二、求解递推关系:当𝑛≥2时,𝑓(𝑛) = 5𝑓(𝑛−1) −6𝑓(𝑛−2);𝑓(0) =\n1;𝑓(1) = 0(10 分)\n\n得分", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:012", + "course_id": "algorithm_design_and_analysis", + "query": "这类题一般怎么考?能用Prim算法求最小生成树举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-001:p2:q-algorithm-design-and-analysis-001-q11:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-001", + "source_title": "2023-2024 算法设计与分析B卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "102b127ff2389472e781ad6a9b921a1f843d38233096b522f7fb190cb886ba02", + "text_excerpt": "三、用Prim 方法求下图的最小耗费生成树。(10 分)\n\n6\n\n4\n\n1\n\n3\n\n5\n\n得分\n\n3\n7\n2\n9\n7\n3\n\n1\n\n6\n\n2\n\n2\n\n4\n\n6\n\n《算法设计与分析》试卷 第 2 页 共 4 页", + "flags": [] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:013", + "course_id": "algorithm_design_and_analysis", + "query": "Dijkstra算法求单源最短路径怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q12:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-001", + "source_title": "2023-2024 算法设计与分析B卷", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "8260c2c03774667d22c78bc263b6beeca61ce1a120d7fbf6fc2a2488047976d7", + "text_excerpt": "四、用Dijkstra 算法求解下图的单源最短路径问题,设原点为1。(15\n分)\n\n12\n\n2\n\n4\n\n得分\n\n9\n\n2\n\n5\n3\n\n1\n\n4\n\n6\n\n15\n\n4\n\n13\n\n3\n\n5", + "flags": [] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:014", + "course_id": "algorithm_design_and_analysis", + "query": "做0-1背包问题的最优价值和物品选择时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q13:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-001", + "source_title": "2023-2024 算法设计与分析B卷", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "6f1e9c6811ee145d2dc841f266e2690b0678985b9b5cc19331ec9b1b3bbde7d0", + "text_excerpt": "五、用动态规划法,求解0-1 背包问题,已知背包容量为22,5 件物\n品的体积分别为3,5,7,8,9,价值分别为4,6,7,9,10。求该背包的最\n大价值及物品选择情况。(15 分)\n\n得分\n\n《算法设计与分析》试卷 第 3 页 共 4 页", + "flags": [] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:015", + "course_id": "algorithm_design_and_analysis", + "query": "矩阵连乘的最小计算次数的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-001:p4:q-algorithm-design-and-analysis-001-q14:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-001", + "source_title": "2023-2024 算法设计与分析B卷", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "f21de47a7f21b49ab58da0fc2044a59c7dd2a2acc3399a29217fb9a0f6d3b43e", + "text_excerpt": "六、求对下列5 个矩阵连乘:𝑀1(4 × 5); 𝑀2(5 × 4); 𝑀3(4 × 6);\n𝑀4(6 × 4); 𝑀5(4 × 5)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:016", + "course_id": "algorithm_design_and_analysis", + "query": "能把矩阵连乘的动态规划实现的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-001:p4:q-algorithm-design-and-analysis-001-q15:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-001", + "source_title": "2023-2024 算法设计与分析B卷", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "048d4cb1a477f19cfb0958010e70bce858f4dc0f6881ab1941720f128ac7a3c3", + "text_excerpt": "1. (本题10 分)写出解决上述问题的动态规划实现算法(文字描述或伪代码);\n\n得分", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:017", + "course_id": "algorithm_design_and_analysis", + "query": "做矩阵连乘的动态规划求解过程时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-001:p4:q-algorithm-design-and-analysis-001-q16:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-001", + "source_title": "2023-2024 算法设计与分析B卷", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "3bde308e348cd63540eda2f50140b0e7a5b76b20a75868d844ab22bbf4caa8c3", + "text_excerpt": "2. (本题10 分)写出通过此算法解决上述问题的过程及结果。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:018", + "course_id": "algorithm_design_and_analysis", + "query": "这类题一般怎么考?能用在线性时间内找出序列的近似中值举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-001:p4:q-algorithm-design-and-analysis-001-q17:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-001", + "source_title": "2023-2024 算法设计与分析B卷", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "72fa8be28cf152ef3c4c12d9ab2f3ff3a03a56e1d62793fcc79fd216b7bbaf54", + "text_excerpt": "七、设A 是n 个数的序列,如果A 中的元素x 满足以下条件:小于x\n的数的个数≥𝑛\n\n3,且大于x 的数的个数≥𝑛\n3,则称x 为A 的近似中值。\n请设计算法求出A 的一个近似中值,说明算法的设计思想和最坏情况\n下的时间复杂度。(15 分)\n\n得分\n\n《算法设计与分析》试卷 第 4 页 共 4 页", + "flags": [] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:019", + "course_id": "algorithm_design_and_analysis", + "query": "矩阵连乘的最小计算次数怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-002:h-23-24-2-算法设计与分析:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-002", + "source_title": "23-24(2)算法设计与分析", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "51f84ee8d96f6fe4250230d443f1015d0378c3b98194b8146859c611f96898a5", + "text_excerpt": "23-24 第二学期 算法设计与分析\n\n七道大题:\n- ![image](assets/algorithm-design-and-analysis-002/image-001.jpeg)复杂度分析,五小问 15’\n- 归并排序算法(1)描述(2)伪代码(3)时间复杂度分析 15’\n- 最长公共子序列(1)递推式(2)过程(3)最优解 15‘\n- Kruscal算法求解最小生成树 15’\n- 最小生成树和单源最短路径求解 10‘\n- ![image](assets/algo", + "flags": [] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:020", + "course_id": "algorithm_design_and_analysis", + "query": "我想先复习DAL-2020-Exam Paper A,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-003:p1:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-003", + "source_title": "DAL-2020-Exam Paper A", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "42698bf1f0f005f2df6c76668c481f53b4df8f56fc89c27f401a2293ecf06661", + "text_excerpt": "WARNING: MISBEHAVIOR AT EXAM TIME WILL LEAD TO SERIOUS\nCONSEQUENCE.\n\nSCUT Final Exam\n\n《The design and Analysis of Computer Algorithms》\n\nExam Paper A\n\nNotice:\n1. Make sure that you have filled the form on the left side of seal line.\n2. Write", + "flags": [] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:021", + "course_id": "algorithm_design_and_analysis", + "query": "复习DAL-2020-Exam Paper A时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-003:p2:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-003", + "source_title": "DAL-2020-Exam Paper A", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "42f14698940f01038d82b789a1117f6e74388eac04576b9d340b66bef77ae770", + "text_excerpt": "2. Please introduce the Divide-and-Conquer algorithm and write\n\nout its general steps used to solve problem? (10 marks)\n\nScore:\nAnswer:\n\n1. The\ndivide-and-conquer\nstrategy\nis\na\npowerful\n\nparadigm for designing efficient algorithms. This\n\nap", + "flags": [] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:022", + "course_id": "algorithm_design_and_analysis", + "query": "DAL-2020-Exam Paper A里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-003:p3:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-003", + "source_title": "DAL-2020-Exam Paper A", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "860967150dd8f0bb12b5e5b5dc6c2e7160ee0d53edb8bace5b0a2a4dc7180be8", + "text_excerpt": "3. Given an un-directed graph like\n\nbelow, please find out its minimum\n\nspanning\ntrees\n(MST)\nusing\n\nKruskal's\nand\nPrim's\nalgorithm\n\nrespectively. (15 marks)\n\nScore:\n\nAnswer:\n\n(5points)\n\n1. To use Kruskal algorithm solving it as below:\n\nStep", + "flags": [] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:023", + "course_id": "algorithm_design_and_analysis", + "query": "学习DAL-2020-Exam Paper A时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-003:p4:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-003", + "source_title": "DAL-2020-Exam Paper A", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "c033d82f2bc62aa9a82279d157f1f540329973e6c85d18bcd94be87cc1eacc79", + "text_excerpt": "AB(1), BE(1), DE(1), CF(2), AD(3), EF(4), BD(5), CE(5),\n\nBC(6), and then select the first edge AB into MST and the A and\n\nB set change like below:\n\nA\nB =V-A\n\nStep 2 There are the edges could\n\nA, B\nA, B, E\nA, B, E,D\nA, B, E,D,F\nA, B, E,D,F,C", + "flags": [] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:024", + "course_id": "algorithm_design_and_analysis", + "query": "考试会怎么考DAL-2020-Exam Paper A?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-003:p4:c02", + "exists": true, + "source_id": "algorithm-design-and-analysis-003", + "source_title": "DAL-2020-Exam Paper A", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "68dbccdf6e06120cdb3c42b2dd9f246cbec5c5afbab6e29c9133cbac304ca485", + "text_excerpt": "The design and Analysis of Computer Algorithms Final Exam\n\nPage 4 of 18", + "flags": [] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:025", + "course_id": "algorithm_design_and_analysis", + "query": "DAL-2020-Exam Paper A主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-003:p5:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-003", + "source_title": "DAL-2020-Exam Paper A", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "84e84f21d6b1fef418a727a0188c735b2623e12b722257ac7da0f890599298fc", + "text_excerpt": "4. There are five jobs needed to be assigned to five persons.\n\nGiven us the following job assignment condition and the cost\n\nmatrix, please write out the solution tree and get all possible\n\nsolutions, in the meantime to calculate the reduce", + "flags": [] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:026", + "course_id": "algorithm_design_and_analysis", + "query": "我想先复习DAL-2020-Exam Paper A,应该从哪里开始?,见第6页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-003:p6:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-003", + "source_title": "DAL-2020-Exam Paper A", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "572a5571a68ef0e7f01ece42e3a0e2207e0ed085c44d5322ed4b3196c2bc7c92", + "text_excerpt": "J2J3J5J1J4, J2J3J1J4J5, J2J3J1J5J4, J3J1J2J4J5, J3J1J2J5J4,\n\n(2points)\n\nJ3J2J5J1J4 with total 16 possible\nsolutions.\n\n2. the reduced cost matrix is:\n\nWith the lower bound:\n\n10+22+3+10+6+2+3 = 56\n\n3. The optimal solution using\n\ntree searchin", + "flags": [] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:027", + "course_id": "algorithm_design_and_analysis", + "query": "复习DAL-2020-Exam Paper A时哪些内容最重要?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-003:p7:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-003", + "source_title": "DAL-2020-Exam Paper A", + "locator_type": "page", + "locator_start": 7, + "text_sha256": "f2aaf1032cbb9003cde3b09ff1a919ed29c418e0d1907c273aece2fc6a717f18", + "text_excerpt": "with 68+0=68, and Root -> J3 -> J2->J5 with 68+5=73;\n\n7) Then expand Root -> J3 -> J2->J1 with 68: Root -> J3 ->\n\nJ2->J1->J4 with 68+3 =71, and Root -> J3 -> J2->J1->J5 with\n\n68+6 =74;\n\n8) Then expand Root -> J2-> J3 ->J1->J4 with cost 69: ", + "flags": [] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:028", + "course_id": "algorithm_design_and_analysis", + "query": "DAL-2020-Exam Paper A里的方法或结论怎么理解?,见第8页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-003:p8:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-003", + "source_title": "DAL-2020-Exam Paper A", + "locator_type": "page", + "locator_start": 8, + "text_sha256": "68a70da769dd95de5b94e70f480f16381a7b6a5bc59dc2512e2b827092d453b3", + "text_excerpt": "J1->J2->J3 with cost 80+4=84, and Root -> J1->J2->J4 with\n\ncost 80+4=84;\n\n17) Then expand Root -> J3 -> J2->J5->J1 with cost 81: Root\n\n-> J3 -> J2->J5->J1-J4 with cost: 81+12=93; (leaf)\n\n18) the optimal solution is Root -> J2-> J3 ->J1->J5-", + "flags": [] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:029", + "course_id": "algorithm_design_and_analysis", + "query": "学习DAL-2020-Exam Paper A时哪些概念容易混淆?,见第9页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-003:p9:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-003", + "source_title": "DAL-2020-Exam Paper A", + "locator_type": "page", + "locator_start": 9, + "text_sha256": "99f361b24588c38e90c5bacd8110a0d5968706649b4504780fd67bfb8b643431", + "text_excerpt": "5. Given you five matrices: M1(10×20), M2(20×30), M3(30\n\n×20), M4(20×10),M5(10×20),please calculate the\n\nminimum cost of their product using dynamic programming\n\nalgorithm for matrices multiplication and write out the optimal\n\nmultiplicatio", + "flags": [] + } + ] + }, + { + "legacy_id": "algorithm_design_and_analysis:030", + "course_id": "algorithm_design_and_analysis", + "query": "考试会怎么考DAL-2020-Exam Paper A?,见第10页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "algorithm-design-and-analysis-003:p10:c01", + "exists": true, + "source_id": "algorithm-design-and-analysis-003", + "source_title": "DAL-2020-Exam Paper A", + "locator_type": "page", + "locator_start": 10, + "text_sha256": "5410529a1f7eece8bbd559adbb340c2daa5660b02c61fc3d21cf2b54c7e55eef", + "text_excerpt": "=6000 with new matrix size: 10×30;\n\nM11=0\nM22=0\nM33=0\nM44=0\nM55=0\n\nM12=6000\nM23=12000\nM34=6000\nM45=4000\n\n(3points)\n\nM13=12000\nM24=12000\nM35=12000\n\nM14=14000 M25=16000\n\nM15=16000\n\nM23 = 20*30*20 =12000 with new matrix size: 20×20;\n\nM34 = 30*", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:001", + "course_id": "artificial_intelligence_intro", + "query": "考点分布梳理 融合版主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-001", + "source_title": "00_考点分布梳理", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "da6fdacfc83c285e2bab91c05dbad254f339deb0458fa244581ce1ce4a48a6fc", + "text_excerpt": "> 本文融合四个信息源,交叉标注重点等级,作为三天复习的\"作战地图\"。\n> - **源A|考纲**:`往年卷/AI考纲.md`(章节核心知识点 + 题型编号)\n> - **源B|jk1.png**:官方模块表,红色 = 重点\n> - **源C|jk2.docx**:官方重点条目清单(30 条)\n> - **源D|往年卷**:2023/2024 复习题(题型与计算题形式的基准)\n>\n> 重点等级:⭐⭐⭐ = 双渠道命中/年年考;⭐⭐ = 单渠道命中;⭐ = 覆盖即可。\n\n---", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:002", + "course_id": "artificial_intelligence_intro", + "query": "我想先复习本次考试题型结构 务必先记住,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~一-本次考试题型结构-务必先记住:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-001", + "source_title": "00_考点分布梳理", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "c8fe2a24bf33ba59fe4e1ce3c8b7a39b474ae3c5f52621aa871875b94e3dbcad", + "text_excerpt": "| 题型 | 分值 | 数量 | 备注 |\n|------|------|------|------|\n| 选择题 | 20 分 | 20 题(每题 1 分) | 细节辨析,往年卷原题复现率极高 |\n| 简答题 | 40 分 | 约 5–8 题 | 概念对比与阐述,SVM 简答题**确定会考** |\n| 计算题 | 40 分 | 约 4–5 题 | 形式与 `人工智能复习题-2023.docx` 一致 |\n\n**计算题已知情报(来自你的批注 + jk2)**:\n1. 神经网络", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:003", + "course_id": "artificial_intelligence_intro", + "query": "复习官方重点清单 ,逐条映射时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~二-jk2.docx-官方重点清单-源c-逐条映射:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-001", + "source_title": "00_考点分布梳理", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "993de96c770b3a3580f66db3af522d9f61893f15c22e7618bdd45d59838fecea", + "text_excerpt": "> 这是最贴近今年的重点。每条标注对应章节 + 预计题型。\n\n| # | jk2 重点条目 | 章节 | 预计题型 |\n|---|------|------|------|\n| 1 | 人工智能的研究主题 | 1 | 选择 |\n| 2 | AlphaGo 的基本原理 | 3/5 | 选择/简答 |\n| 3 | 推理的三个层次 | 2 | 选择/简答 |\n| 4 | 命题与复合命题的定义与理解 | 2 | 选择 |\n| 5 | 宽度优先搜索得到最优解的条件 | 5 | 选择 |", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:004", + "course_id": "artificial_intelligence_intro", + "query": "官方重点清单 ,逐条映射里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~二-jk2.docx-官方重点清单-源c-逐条映射:c02", + "exists": true, + "source_id": "artificial-intelligence-intro-001", + "source_title": "00_考点分布梳理", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "8fa7c74177ec63b0d17af73b73c446dcf8a36e0fcfc218534ae02f99318ce35a", + "text_excerpt": "> **注意新增考点**:jk2 相比往年卷多出 **强化学习(MDP、贝尔曼、探索与利用、强化学习目标与基本过程)**、**生成式 VS 判别式**、**启发函数可容性/一致性**。往年卷没有这些,属于今年新重点,必须补。\n\n---", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:005", + "course_id": "artificial_intelligence_intro", + "query": "学习模块红色重点时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~三-jk1.png-模块红色重点-源b:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-001", + "source_title": "00_考点分布梳理", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "723e0a5aba0ca71f7aa5ce5dc6f5fc53ad516d5e9ceaf34f86b54c27a7f9410c", + "text_excerpt": "红色标注 = 官方划的重点方向:\n\n- **模块1 发展历史**:可计算理论、图灵机模型和图灵测试、主流算法(**符号主义、连接主义和行为主义**)\n- **模块2 知识表达与推理**:知识表示方法、**一阶谓词逻辑推理**、知识图谱推理\n- **模块3 搜索与问题求解**:**启发式搜索 A\\* 搜索**、**Minimax 搜索**、**Alpha-Beta 剪枝搜索**、蒙特卡洛树搜索\n- **模块4 机器学习**:**线性回归模型**、**聚类**\n- **模块5 深", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:006", + "course_id": "artificial_intelligence_intro", + "query": "考试会怎么考第1章 绪论 ⭐⭐?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~四-按章节整合的核心考点与优先级~第1章-绪论:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-001", + "source_title": "00_考点分布梳理", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "97c50a09ae3f79628d2e4ea7f872e87b21c53215c092eb733c710d11348cd1c9", + "text_excerpt": "- AI 研究领域 vs 非研究领域(编译原理不是)— 选择必考\n- **三大流派:符号主义 / 连接主义 / 行为主义**(jk1 红色,往年只讲两派,今年补行为主义)\n- AI / 机器学习 / 神经网络 区别与联系 — 简答高频\n- 人类智能 vs 机器智能(常识推理是区别点)\n- 图灵测试、可计算理论 — 选择\n- 归纳推理 vs 演绎推理(jk2 新增)", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:007", + "course_id": "artificial_intelligence_intro", + "query": "第2章 知识工程 ⭐⭐主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~四-按章节整合的核心考点与优先级~第2章-知识工程:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-001", + "source_title": "00_考点分布梳理", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "9274d5b8f6df23eaa7e52a54997767c8071c94b30da096cda54a32c8e9dda0b5", + "text_excerpt": "- 知识表示方法:谓词逻辑/产生式/框架/语义网络/知识图谱 — 简答\n- 命题与复合命题定义(陈述句可判真假)— 选择必考\n- 等价变换:吸收律、摩根律、结合律、分配律 — 选择必考\n- 产生式系统推理方式:正向/反向/双向 — 简答\n- 语义网络 AKO/ISA 链 = 继承性 — 选择\n- 知识图谱 — 选择\n- 推理的三个层次(jk2 新增)", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:008", + "course_id": "artificial_intelligence_intro", + "query": "我想先复习第3章 确定性推理 ⭐⭐⭐ 计算题富矿,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~四-按章节整合的核心考点与优先级~第3章-确定性推理-计算题富矿:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-001", + "source_title": "00_考点分布梳理", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "7fabe4fb9764830557df30bc3e17534af91804e202f9205b0f0f1e16ca8bbb1a", + "text_excerpt": "- 归结演绎推理、自然演绎推理 — 选择\n- 合一(哪个不能合一)— 选择必考\n- 代换复合 q○p — 选择必考\n- Skolem 标准型、前束范式 — 选择\n- **归结原理证明(谓词逻辑,反演法)— 计算题必考**\n- **反演法求问题答案的过程 — 简答**", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:009", + "course_id": "artificial_intelligence_intro", + "query": "复习第4章 不确定性推理 ⭐⭐⭐时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~四-按章节整合的核心考点与优先级~第4章-不确定性推理:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-001", + "source_title": "00_考点分布梳理", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "b7317d939a5cb95d41b0593048c054caff9aaa3323ace56457c7ec8658b82006", + "text_excerpt": "- 不确定性来源(证据/知识/推理)— 简答\n- **贝叶斯定理 + 贝叶斯网络推理 — 计算题必考**\n- 贝叶斯定理刻画的是相关关系;P(E|H)→P(H|E) — 选择/简答\n- 主观贝叶斯 LS/LN 取值合理性 — 选择\n- 模糊性 vs 随机性、最模糊的数(0.5)、模糊关系合成(max-min) — 选择", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:010", + "course_id": "artificial_intelligence_intro", + "query": "第5章 搜索与优化 ⭐⭐⭐里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~四-按章节整合的核心考点与优先级~第5章-搜索与优化:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-001", + "source_title": "00_考点分布梳理", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "86bbb5124cc476023782365350a82f6721b952659c71e420000052bfaab80784", + "text_excerpt": "- BFS 得最优解条件(单位耗散)— 选择\n- **A\\* 算法 f=g+h、OPEN/CLOSED 表变化 — 计算题**\n- **启发函数可容性(admissible)与一致性(consistent) — 选择/简答(jk2 新增重点)**\n- A* 最优性、启发信息多者扩展节点少 — 选择\n- **α-β 剪枝过程与剪枝标记 — 计算题必考**\n- 与或树:或节点/与节点可解性 — 选择\n- 评价函数定义、蒙特卡洛树搜索、AlphaGo 原理 — 选择/简答", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:011", + "course_id": "artificial_intelligence_intro", + "query": "学习第6章 机器学习 ⭐⭐⭐ 题量最大时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~四-按章节整合的核心考点与优先级~第6章-机器学习-题量最大:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-001", + "source_title": "00_考点分布梳理", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "9744053e0015f043503de0dd156161bdaa30f558b59fd6a9a62fd4ba453ebe3b", + "text_excerpt": "- 分类/聚类/回归区别 — 简答必考\n- 泛化能力 — 简答\n- **决策树 ID3 信息增益计算 — 计算题必考**\n- **朴素贝叶斯分类 — 计算题**\n- K-means 步骤与特点、DBSCAN 思想与缺点 — 简答\n- 梯度下降步骤 — 简答\n- 交叉验证 — 简答\n- 分类评价指标:精度 Precision、召回率 Recall — 选择/简答\n- 生成式 vs 判别式(jk2 新增)— 简答\n- 监督/无监督/强化学习区别 — 简答\n- 机器学习系统构成与风", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:012", + "course_id": "artificial_intelligence_intro", + "query": "考试会怎么考第7章 神经网络与深度学习 ⭐⭐⭐ 计算题核心?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~四-按章节整合的核心考点与优先级~第7章-神经网络与深度学习-计算题核心:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-001", + "source_title": "00_考点分布梳理", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "435757265706d19f787640a227696b0514542a8bed7b30c16995b5541f59c99e", + "text_excerpt": "- **BP 算法调整\"相邻层神经元连接权重\" — 选择必考**\n- **AND 神经元求 w1,w2,b — 计算题(复杂版必考)**\n- 激活函数 Sigmoid[0,1] / ReLU / tanh / Leaky ReLU — 选择必考\n- **卷积输出尺寸 =(输入-卷积核)/步幅+1 — 选择/计算必考**\n- **加法/乘法节点梯度反传 — 计算题必考(复杂版)**\n- **前馈网络损失函数计算 + 反向传播推导 — 计算题必考**\n- 输出层维数 = 类别数 ", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:013", + "course_id": "artificial_intelligence_intro", + "query": "【新增】强化学习 ⭐⭐ jk1+jk2 双命中,往年卷无主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~四-按章节整合的核心考点与优先级~新增-强化学习-jk1-jk2-双命中-往年卷无:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-001", + "source_title": "00_考点分布梳理", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "82256282c848352ae1efb99b3d6c514d8e942ec77d62d17357ef6db44c8b6ec9", + "text_excerpt": "- 马尔科夫决策过程(MDP)五元素:状态S、动作A、状态转移概率P、奖励R、折扣因子γ\n- 贝尔曼方程(了解形式)\n- 强化学习目标:最大化累积奖励期望\n- 强化学习基本过程:智能体-环境交互、状态-动作-奖励循环\n- 探索与利用(exploration vs exploitation)的平衡\n- 监督学习 vs 强化学习区别", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:014", + "course_id": "artificial_intelligence_intro", + "query": "我想先复习【新增】伦理与安全 ⭐,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~四-按章节整合的核心考点与优先级~新增-伦理与安全:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-001", + "source_title": "00_考点分布梳理", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fa221f0d76091abe9b67c84c122b3e1dc70b53c6bf2945936c635428f7d31b76", + "text_excerpt": "- 可信人工智能、可解释性、算法攻击与防守(了解即可,可能出选择)\n\n---", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:015", + "course_id": "artificial_intelligence_intro", + "query": "复习SVM 专项提示 确定考简答时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~五-svm-专项提示-确定考简答:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-001", + "source_title": "00_考点分布梳理", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "9ba6ba8b605853a8f53e0687c9b93b0f7d39b041a4725c69934ed767e3e4bc15", + "text_excerpt": "你已明确:**有一道 SVM 简答题**。核心答题点(详见 `01_简答题题库.md` SVM 专题):\n- 结构风险最小化(SRM)含义 + 示意图\n- 最优分类超平面、分类边距 Margin = 2/‖w‖\n- 支持向量的定义\n- 核函数思想(避开高维非线性变换)\n- SVM 优点\n\n---", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:016", + "course_id": "artificial_intelligence_intro", + "query": "三天复习优先级总结里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~六-三天复习优先级总结:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-001", + "source_title": "00_考点分布梳理", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "8f76687a79fbaef1ad13c7f36f90801eb1813a5c10b3fca535716c9330f6f78e", + "text_excerpt": "**必须拿下(占分 70%+)**:\n1. 计算题 6 类模板(归结、贝叶斯网络、α-β、A*、决策树 ID3、神经网络梯度/AND)\n2. 选择题往年卷原题(复现率极高,直接背答案+理解)\n3. SVM 简答 + 高频简答对比题\n\n**性价比补充**:\n4. 强化学习新考点(MDP 五要素、目标、探索利用)\n5. 生成式 vs 判别式、可容性/一致性\n\n**了解即可**:伦理安全、蒙特卡洛树搜索细节", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:017", + "course_id": "artificial_intelligence_intro", + "query": "学习01 简答题题库时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-002:p1:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-002", + "source_title": "01_简答题题库", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "e510c320feb1cbbae30d969854bd4a79051972728c52436d271154d23f5dfb6e", + "text_excerpt": "简答题题库与标准答案(含 SVM 专题)\n\n覆盖:往年卷全部简答 + jk2 新增考点 + SVM 专项。\n\n用法:先盖住答案自答,再对照。⭐标注为高频/官方重点。\n\n第1章 绪论\n\n1. 人工智能、机器学习、神经网络的区别与联系 ⭐⭐⭐\n\n人工智能(AI):最宏观的概念,研究如何让机器具有智能、模拟人类智能行为的学科。\n\n机器学习(ML):AI 的一个子领域,研究让计算机从数据中自动学习规律、实现自我完善的方法。\n\n神经网络(NN):机器学习中的一类具体模型/方法,模仿生物", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:018", + "course_id": "artificial_intelligence_intro", + "query": "考试会怎么考01 简答题题库?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-002:p1:c02", + "exists": true, + "source_id": "artificial-intelligence-intro-002", + "source_title": "01_简答题题库", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "ffde9b98e7e718580ed845f9d73b486f1b2fabf2f262b7ce2ece3ab407f36c27", + "text_excerpt": "知识图谱:以结构化形式描述实体、概念及其关系的大规模语义网络。\n\n6. 逻辑表示法的优缺点\n\n优点:严密精确、自然(接近自然语言)、易于逻辑演绎推理、便于机器实现。\n\n缺点:表达效率低、不便表示不确定性/模糊知识、易产生组合爆炸、难以表示过程性和启发性知识。\n\n7. 产生式系统中推理机的推理方式 ⭐⭐\n\n正向推理(数据驱动):从已知事实出发,匹配规则前件,推出结论,直到达到目标。\n\n反向推理(目标驱动):从目标假设出发,反向寻找支持它的证据/规则。\n\n双向推理:正反向结合,从", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:019", + "course_id": "artificial_intelligence_intro", + "query": "01 简答题题库主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-002:p2:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-002", + "source_title": "01_简答题题库", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "314e2de13b2a096d0056f6006af878bffba55c2ab475fc0d4845c1a21ec7374a", + "text_excerpt": "第3章 确定性推理\n\n9. 简述反演法(归结反演)求取某个问题答案的过程 ⭐⭐⭐\n\n1. 把已知前提用谓词公式表示,并化为子句集 S。\n\n2. 把待求解的问题的否定用谓词公式表示,用一个求解谓词 ANSWER 附加到其上,化为子句加入 S(构造带 ANSWER 的重言式)。\n\n3. 对新子句集反复应用归结原理进行归结。\n\n4. 当归结出的子句只含 ANSWER 谓词时,ANSWER 中的项就是问题的答案。\n\n(若只是证明命题:将结论取反加入子句集,归结出空子句 □ 即证明结论", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:020", + "course_id": "artificial_intelligence_intro", + "query": "我想先复习01 简答题题库,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-002:p2:c02", + "exists": true, + "source_id": "artificial-intelligence-intro-002", + "source_title": "01_简答题题库", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "491fb64e7fb21ae4d1fdb077aae0aaeab2a7ff315f6bf80e77f4f585791226d5", + "text_excerpt": "一致性/单调性(consistent):对任意相邻节点 n、n',h(n) ≤ c(n,a,n') + h(n'),且 h(目标)=0(三角不等式)。一致 ⇒ 一定可容,且保证 f(n) 非递减,故每个节点首\n次扩展即最优(无需重开节点)。\n\n性质\n定义\n作用\n\n可容性\nh(n) ≤ h*(n),永不高估真实代价\n保证 A* 最优性\n\n一致性\nh(n) ≤ c(n,a,n') + h(n'),且 h(goal)=0\n保证 f(n) 非递减,比可容性更严格\n\n关系:一致性 ⇒ ", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:021", + "course_id": "artificial_intelligence_intro", + "query": "复习01 简答题题库时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-002:p3:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-002", + "source_title": "01_简答题题库", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "5b955f0540943882bb1c40efccff17ccda0e4118ef356ea0d4492d86fd3ab302", + "text_excerpt": "算法\nf(n)\n含义\n\n贪心搜索\nf(n) = h(n)\n只看离目标\"有多远\"(不保证最优)\n\nUCS(一致代价)\nf(n) = g(n)\n只看从起点\"花了多少\"(后视)\n\nA*\nf(n) = g(n) + h(n)\n两者结合,最优+高效\n\nA* 每次选 OPEN 表中 f 最小的节点扩展——看起来最有希望的路先走。\n\nAlphaGo 原理:蒙特卡洛树搜索(MCTS) + 深度神经网络(策略网络选走法、价值网络评估局面),结合强化学习自我对弈训练。\n\n第6章 机器学习\n\n17", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:022", + "course_id": "artificial_intelligence_intro", + "query": "01 简答题题库里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-002:p3:c02", + "exists": true, + "source_id": "artificial-intelligence-intro-002", + "source_title": "01_简答题题库", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "a7ebae1021c2be9a9e11df846b866896cb4eb9bb8ccf3572fbc2245a09d8c893", + "text_excerpt": "系统构成:数据采集与预处理 → 特征工程 → 模型(假设空间)→ 训练算法(优化目标)→ 评估/验证 → 部署预测,评估结果反馈调整。\n\n是否可预测:基于数据驱动的机器学习是从数据中归纳规律而非死记数据;但结果不完全可预测——依赖数据质量、存在统计误差、黑盒模型决策不透明。\n\n风险:数据偏见导致歧视性决策;黑盒不可解释导致责任难追溯;被恶意样本攻击;隐私泄露等。\n\n24. 生成式方法 VS 判别式方法(jk2 新增)⭐⭐\n\n生成式模型:学习联合概率分布 P(x,y),再由贝叶", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:023", + "course_id": "artificial_intelligence_intro", + "query": "学习01 简答题题库时哪些概念容易混淆?,见第4页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-002:p4:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-002", + "source_title": "01_简答题题库", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "28dce1a3a7ca2ec4230a0630230b7054f4e66fd23985a92e58ff515f335c6850", + "text_excerpt": "设 混淆矩阵:TP 真阳、FP 假阳、TN 真阴、FN 假阴。\n\n精度 Precision = TP/(TP+FP):预测为正中真正为正的比例。\n\n召回率 Recall = TP/(TP+FN):真实为正中被正确找出的比例。\n\n准确率 Accuracy = (TP+TN)/总数。\n\nF1 = 2·P·R/(P+R):精度与召回的调和平均。\n\n精度与召回常此消彼长,用 F1 或 PR/ROC 曲线综合权衡。\n\n【新增】强化学习(jk1+jk2 双命中,务必掌握)\n\n28. 马尔", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:024", + "course_id": "artificial_intelligence_intro", + "query": "考试会怎么考01 简答题题库?,见第4页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-002:p4:c02", + "exists": true, + "source_id": "artificial-intelligence-intro-002", + "source_title": "01_简答题题库", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "9f2189b75bf783dc4a9312d97a2b43d57a8d8f91e7f8e13ffa93af66477fae16", + "text_excerpt": "S1. 支持向量机的优点在哪?用示意图解释结构风险最小化的含义与合理性 ★核心题★\n\nSVM 的优点:\n\n1. 基于结构风险最小化原则,泛化能力强,适合小样本。\n\n2. 最终决策只由少数支持向量决定,模型稀疏、计算高效。\n\n3. 通过核函数巧妙解决非线性分类,避免高维显式变换(避开维数灾难)。\n\n4. 是凸二次规划问题,存在唯一全局最优解,不会陷入局部极小。\n\n结构风险最小化(SRM)的含义(配示意图):\n\n真实(期望)风险 R(a) ≤ 经验风险 Remp(a) + 置信范", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:025", + "course_id": "artificial_intelligence_intro", + "query": "01 简答题题库主要讲什么?,见第5页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-002:p5:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-002", + "source_title": "01_简答题题库", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "340c3e22ed1db4cbc702bdf451d4c790b8c0ca0b8294bb3abd60c446007d9881", + "text_excerpt": "风险\n │\ 置信范围(随复杂度↑) /真实风险上界(总和)=U形\n │ \ /\n │ \________ ____/ ← 最优点:真实风险最小\n │ \\__//\n\n│ 经验风险(随复杂度↓)\\\\\\\\\n └────────────────────────────► 模型复杂度(VC维 h)\n 欠拟合 | 最优 | 过拟合\n\n合理性:模型太简单→经验", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:026", + "course_id": "artificial_intelligence_intro", + "query": "我想先复习选择题速记与易错点 20 分,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-003:h-选择题速记与易错点-20-分:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-003", + "source_title": "02_选择题速记与易错点", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "951ed285d0395568851208a0f3c56bbb81b32a0445ffe0f600d42117141ff21e", + "text_excerpt": "> 往年卷选择题**原题复现率极高**,先把这份\"答案+解析\"背熟,考场直接秒选。\n> 附高频易错辨析,专治\"看着都对\"。\n\n---", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:027", + "course_id": "artificial_intelligence_intro", + "query": "复习往年卷选择题标准答案 2023/2024 通用时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-003:h-选择题速记与易错点-20-分~一-往年卷选择题标准答案-2023-2024-通用-共-52-题库:c01", + "exists": true, + "source_id": "artificial-intelligence-intro-003", + "source_title": "02_选择题速记与易错点", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0c16aaa2cfdeb1f6df0c5790919cd5b4ee5ff22e075ccc214ea05e00de99cd08", + "text_excerpt": "| 题 | 答案 | 一句话理由 |\n| --- | --- | ------------------------------------------------ |\n| 1 | D | 编译原理不是 AI 研究领域 |\n| 2 | D | 命题=可判真假的**陈述句** ", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:028", + "course_id": "artificial_intelligence_intro", + "query": "往年卷选择题标准答案 2023/2024 通用里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-003:h-选择题速记与易错点-20-分~一-往年卷选择题标准答案-2023-2024-通用-共-52-题库:c02", + "exists": true, + "source_id": "artificial-intelligence-intro-003", + "source_title": "02_选择题速记与易错点", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ef9ee17b228f98f2b1615e09316994b33cca2817f91b741c6d0d3cb899d3fa46", + "text_excerpt": "| 17 | C | 启发函数用于**选择后续节点** |\n| 18 | A | 输出限 [0,1] → **Sigmoid** |\n| 19 | B | 错误项:回归是**有监督**不是无监督 |\n| 20 | A | outlook 信息增益最大 ", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:029", + "course_id": "artificial_intelligence_intro", + "query": "学习往年卷选择题标准答案 2023/2024 通用时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-003:h-选择题速记与易错点-20-分~一-往年卷选择题标准答案-2023-2024-通用-共-52-题库:c03", + "exists": true, + "source_id": "artificial-intelligence-intro-003", + "source_title": "02_选择题速记与易错点", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fb96e0d5de6a7226a5e675c4f168713d8e24e5cf8934ae68908a3b213aea0bf1", + "text_excerpt": "| 35 | C | 错误:k-means **不能**发现任意形状簇 |\n| 36 | C | 2 个错误(a 项转移路线非要素、c 项\"无穷次碰\"错) |\n| 37 | C | 推理所得证据由**传递算法**得到 |\n| 38 | C | AKO/ISA 链表达**继承性** ", + "flags": [] + } + ] + }, + { + "legacy_id": "artificial_intelligence_intro:030", + "course_id": "artificial_intelligence_intro", + "query": "考试会怎么考往年卷选择题标准答案 2023/2024 通用?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "artificial-intelligence-intro-003:h-选择题速记与易错点-20-分~一-往年卷选择题标准答案-2023-2024-通用-共-52-题库:c04", + "exists": true, + "source_id": "artificial-intelligence-intro-003", + "source_title": "02_选择题速记与易错点", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "c8246c2f1d741330893c7a3d8cc06a681d869b8f5e69b8d24fe11199f0b54d6a", + "text_excerpt": "> ⚠️ 第 7 题争议:若问\"训练复杂度\"选 A(O(1));若问\"**预测/测试**复杂度\"选 B(O(N))。看清题干!\n\n---", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:001", + "course_id": "circuit_and_electronics_lab", + "query": "期末 2025-2026第二学期 试卷主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p1:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "6818b491a6c41b11709d77a8a7121f5d022bc9bd24233a9440a21e6049c8428b", + "text_excerpt": "![page-001.jpg](assets/circuit-and-electronics-lab-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:002", + "course_id": "circuit_and_electronics_lab", + "query": "我想先复习期末 2025-2026第二学期 试卷,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p2:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "ebe205df26f1895648c66f7b702b7f983943265f3f9a5430cac26ae227b56fc4", + "text_excerpt": "![page-002.jpg](assets/circuit-and-electronics-lab-001/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:003", + "course_id": "circuit_and_electronics_lab", + "query": "复习期末 2025-2026第二学期 试卷时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p1:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "6818b491a6c41b11709d77a8a7121f5d022bc9bd24233a9440a21e6049c8428b", + "text_excerpt": "![page-001.jpg](assets/circuit-and-electronics-lab-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:004", + "course_id": "circuit_and_electronics_lab", + "query": "期末 2025-2026第二学期 试卷里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p2:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "ebe205df26f1895648c66f7b702b7f983943265f3f9a5430cac26ae227b56fc4", + "text_excerpt": "![page-002.jpg](assets/circuit-and-electronics-lab-001/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:005", + "course_id": "circuit_and_electronics_lab", + "query": "学习期末 2025-2026第二学期 试卷时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p1:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "6818b491a6c41b11709d77a8a7121f5d022bc9bd24233a9440a21e6049c8428b", + "text_excerpt": "![page-001.jpg](assets/circuit-and-electronics-lab-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:006", + "course_id": "circuit_and_electronics_lab", + "query": "考试会怎么考期末 2025-2026第二学期 试卷?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p2:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "ebe205df26f1895648c66f7b702b7f983943265f3f9a5430cac26ae227b56fc4", + "text_excerpt": "![page-002.jpg](assets/circuit-and-electronics-lab-001/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:007", + "course_id": "circuit_and_electronics_lab", + "query": "期末 2025-2026第二学期 试卷主要讲什么?,见第1页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p1:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "6818b491a6c41b11709d77a8a7121f5d022bc9bd24233a9440a21e6049c8428b", + "text_excerpt": "![page-001.jpg](assets/circuit-and-electronics-lab-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:008", + "course_id": "circuit_and_electronics_lab", + "query": "我想先复习期末 2025-2026第二学期 试卷,应该从哪里开始?,见第2页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p2:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "ebe205df26f1895648c66f7b702b7f983943265f3f9a5430cac26ae227b56fc4", + "text_excerpt": "![page-002.jpg](assets/circuit-and-electronics-lab-001/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:009", + "course_id": "circuit_and_electronics_lab", + "query": "复习期末 2025-2026第二学期 试卷时哪些内容最重要?,见第1页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p1:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "6818b491a6c41b11709d77a8a7121f5d022bc9bd24233a9440a21e6049c8428b", + "text_excerpt": "![page-001.jpg](assets/circuit-and-electronics-lab-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:010", + "course_id": "circuit_and_electronics_lab", + "query": "期末 2025-2026第二学期 试卷里的方法或结论怎么理解?,见第2页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p2:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "ebe205df26f1895648c66f7b702b7f983943265f3f9a5430cac26ae227b56fc4", + "text_excerpt": "![page-002.jpg](assets/circuit-and-electronics-lab-001/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:011", + "course_id": "circuit_and_electronics_lab", + "query": "学习期末 2025-2026第二学期 试卷时哪些概念容易混淆?,见第1页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p1:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "6818b491a6c41b11709d77a8a7121f5d022bc9bd24233a9440a21e6049c8428b", + "text_excerpt": "![page-001.jpg](assets/circuit-and-electronics-lab-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:012", + "course_id": "circuit_and_electronics_lab", + "query": "考试会怎么考期末 2025-2026第二学期 试卷?,见第2页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p2:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "ebe205df26f1895648c66f7b702b7f983943265f3f9a5430cac26ae227b56fc4", + "text_excerpt": "![page-002.jpg](assets/circuit-and-electronics-lab-001/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:013", + "course_id": "circuit_and_electronics_lab", + "query": "期末 2025-2026第二学期 试卷主要讲什么?,第13条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p1:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "6818b491a6c41b11709d77a8a7121f5d022bc9bd24233a9440a21e6049c8428b", + "text_excerpt": "![page-001.jpg](assets/circuit-and-electronics-lab-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:014", + "course_id": "circuit_and_electronics_lab", + "query": "我想先复习期末 2025-2026第二学期 试卷,应该从哪里开始?,第14条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p2:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "ebe205df26f1895648c66f7b702b7f983943265f3f9a5430cac26ae227b56fc4", + "text_excerpt": "![page-002.jpg](assets/circuit-and-electronics-lab-001/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:015", + "course_id": "circuit_and_electronics_lab", + "query": "复习期末 2025-2026第二学期 试卷时哪些内容最重要?,第15条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p1:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "6818b491a6c41b11709d77a8a7121f5d022bc9bd24233a9440a21e6049c8428b", + "text_excerpt": "![page-001.jpg](assets/circuit-and-electronics-lab-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:016", + "course_id": "circuit_and_electronics_lab", + "query": "期末 2025-2026第二学期 试卷里的方法或结论怎么理解?,第16条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p2:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "ebe205df26f1895648c66f7b702b7f983943265f3f9a5430cac26ae227b56fc4", + "text_excerpt": "![page-002.jpg](assets/circuit-and-electronics-lab-001/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:017", + "course_id": "circuit_and_electronics_lab", + "query": "学习期末 2025-2026第二学期 试卷时哪些概念容易混淆?,第17条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p1:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "6818b491a6c41b11709d77a8a7121f5d022bc9bd24233a9440a21e6049c8428b", + "text_excerpt": "![page-001.jpg](assets/circuit-and-electronics-lab-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:018", + "course_id": "circuit_and_electronics_lab", + "query": "考试会怎么考期末 2025-2026第二学期 试卷?,第18条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p2:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "ebe205df26f1895648c66f7b702b7f983943265f3f9a5430cac26ae227b56fc4", + "text_excerpt": "![page-002.jpg](assets/circuit-and-electronics-lab-001/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:019", + "course_id": "circuit_and_electronics_lab", + "query": "期末 2025-2026第二学期 试卷主要讲什么?,第19条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p1:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "6818b491a6c41b11709d77a8a7121f5d022bc9bd24233a9440a21e6049c8428b", + "text_excerpt": "![page-001.jpg](assets/circuit-and-electronics-lab-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:020", + "course_id": "circuit_and_electronics_lab", + "query": "我想先复习期末 2025-2026第二学期 试卷,应该从哪里开始?,第20条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p2:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "ebe205df26f1895648c66f7b702b7f983943265f3f9a5430cac26ae227b56fc4", + "text_excerpt": "![page-002.jpg](assets/circuit-and-electronics-lab-001/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:021", + "course_id": "circuit_and_electronics_lab", + "query": "复习期末 2025-2026第二学期 试卷时哪些内容最重要?,第21条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p1:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "6818b491a6c41b11709d77a8a7121f5d022bc9bd24233a9440a21e6049c8428b", + "text_excerpt": "![page-001.jpg](assets/circuit-and-electronics-lab-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:022", + "course_id": "circuit_and_electronics_lab", + "query": "期末 2025-2026第二学期 试卷里的方法或结论怎么理解?,第22条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p2:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "ebe205df26f1895648c66f7b702b7f983943265f3f9a5430cac26ae227b56fc4", + "text_excerpt": "![page-002.jpg](assets/circuit-and-electronics-lab-001/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:023", + "course_id": "circuit_and_electronics_lab", + "query": "学习期末 2025-2026第二学期 试卷时哪些概念容易混淆?,第23条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p1:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "6818b491a6c41b11709d77a8a7121f5d022bc9bd24233a9440a21e6049c8428b", + "text_excerpt": "![page-001.jpg](assets/circuit-and-electronics-lab-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:024", + "course_id": "circuit_and_electronics_lab", + "query": "考试会怎么考期末 2025-2026第二学期 试卷?,第24条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p2:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "ebe205df26f1895648c66f7b702b7f983943265f3f9a5430cac26ae227b56fc4", + "text_excerpt": "![page-002.jpg](assets/circuit-and-electronics-lab-001/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:025", + "course_id": "circuit_and_electronics_lab", + "query": "期末 2025-2026第二学期 试卷主要讲什么?,第25条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p1:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "6818b491a6c41b11709d77a8a7121f5d022bc9bd24233a9440a21e6049c8428b", + "text_excerpt": "![page-001.jpg](assets/circuit-and-electronics-lab-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:026", + "course_id": "circuit_and_electronics_lab", + "query": "我想先复习期末 2025-2026第二学期 试卷,应该从哪里开始?,第26条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p2:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "ebe205df26f1895648c66f7b702b7f983943265f3f9a5430cac26ae227b56fc4", + "text_excerpt": "![page-002.jpg](assets/circuit-and-electronics-lab-001/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:027", + "course_id": "circuit_and_electronics_lab", + "query": "复习期末 2025-2026第二学期 试卷时哪些内容最重要?,第27条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p1:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "6818b491a6c41b11709d77a8a7121f5d022bc9bd24233a9440a21e6049c8428b", + "text_excerpt": "![page-001.jpg](assets/circuit-and-electronics-lab-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:028", + "course_id": "circuit_and_electronics_lab", + "query": "期末 2025-2026第二学期 试卷里的方法或结论怎么理解?,第28条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p2:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "ebe205df26f1895648c66f7b702b7f983943265f3f9a5430cac26ae227b56fc4", + "text_excerpt": "![page-002.jpg](assets/circuit-and-electronics-lab-001/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:029", + "course_id": "circuit_and_electronics_lab", + "query": "学习期末 2025-2026第二学期 试卷时哪些概念容易混淆?,第29条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p1:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "6818b491a6c41b11709d77a8a7121f5d022bc9bd24233a9440a21e6049c8428b", + "text_excerpt": "![page-001.jpg](assets/circuit-and-electronics-lab-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "circuit_and_electronics_lab:030", + "course_id": "circuit_and_electronics_lab", + "query": "考试会怎么考期末 2025-2026第二学期 试卷?,第30条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "circuit-and-electronics-lab-001:p2:c01", + "exists": true, + "source_id": "circuit-and-electronics-lab-001", + "source_title": "华南理工大学本科生期末考试_2025-2026第二学期_电路与电子技术实验试卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "ebe205df26f1895648c66f7b702b7f983943265f3f9a5430cac26ae227b56fc4", + "text_excerpt": "![page-002.jpg](assets/circuit-and-electronics-lab-001/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "compiler_principles:001", + "course_id": "compiler_principles", + "query": "复习课 2025主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s1:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 1, + "text_sha256": "ce1f55bcb7b824809dfa29775129057fdf255a2f04aef018ca39aaafe359f953", + "text_excerpt": "- *\n- 2025.06\n\n> 备注:第38讲 习题课(1)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "compiler_principles:002", + "course_id": "compiler_principles", + "query": "我想先复习第一章 编译程序概论小结,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s2:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 2, + "text_sha256": "4f524287cff0a1b4b7dfad62791113e22ce919227e49ec95db0526293f077ca0", + "text_excerpt": "- 内容:\n - 什么是编译程序\n - 编译的各个阶段\n - 为什么要学习编译程序\n- 重点是对编译程序的功能和结构有总体认识,理解编译程序各个阶段的逻辑关系以及他们怎样作为一个整体完成编译任务", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:003", + "course_id": "compiler_principles", + "query": "复习第三章 文法和语言时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s3:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 3, + "text_sha256": "9feea85ab1cab024415c234b4a9c4e1649af832ff86c38b1aa7aa1a8500b39a4", + "text_excerpt": "- 学习目标:\n- 掌握:自上而下与自下而上的分析方法, 构建语法树,规范推导,规范规约\n- 理解:文法的形式定义,推导,归约,句型,句子,语言,上下文无关文法,规范句型,语法树,短语,直接短语,句柄\n- 了解:文法的类型,文法实用中的限制,文法的二义性", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:004", + "course_id": "compiler_principles", + "query": "第三章 文法和语言里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s4:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 4, + "text_sha256": "e23393a7c4150843dfee1f135955f3725853e4150e1533e72be1e267ca9263bc", + "text_excerpt": "- *\n- 程序语言的定义\n- 高级语言的一般特性\n- 程序语言的语法描述", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "compiler_principles:005", + "course_id": "compiler_principles", + "query": "学习上下文无关文法时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s5:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 5, + "text_sha256": "b015d56cfd682aa151f643b1804eec430e8a9f0b966abd1250a9d1b987d79c97", + "text_excerpt": "- *\n- 一个上下文无关文法G是一个四元式\n- G=(VT,VN,S,P),其中\n - VT:终结符集合(非空)\n - VN:非终结符集合(非空),且VT  VN=\n - S:文法的开始符号,SVN\n - P:产生式集合(有限),每个产生式形式为\n - P, PVN,   (VT  VN)*\n - 开始符S至少必须在某个产生式的左部出现一次", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:006", + "course_id": "compiler_principles", + "query": "考试会怎么考上下文无关文法?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s6:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 6, + "text_sha256": "2fc6c9c7c16d1a77d6795f58eeed5f47bbc66c88d14f5dbf894eaf4d60742f71", + "text_excerpt": "- *\n- 定义:称A直接推出,即\n - A\n - 仅当A  是一个产生式,\n - 且,  (VT  VN)* 。\n- 如果1  2   n,则我们称这个序列是从1到n的一个推导。若存在一个从1到n的推导,则称1可以推导出n\n\n> 备注:一个上下文无关文法如何确定一个语言?\n中心思想:从文法的开始符号出发,反复连续使用产生式,对非终结符施行替换和展开.(把产生式的左部符号替换为右部符号串)\n\n从一个句型到另一个", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:007", + "course_id": "compiler_principles", + "query": "上下文无关文法主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s7:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 7, + "text_sha256": "77a3f2981af0cb8f37be678d6219e80df6243e7ebde498edd97f6d84b9f3e09f", + "text_excerpt": "- *\n- 定义:假定G是一个文法,S 是它的开始符号。如果 ,则称是一个句型。\n- 仅含终结符号的句型是一个句子。\n- 文法G所产生的句子的全体是一个语言,将它记为 L(G)。", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:008", + "course_id": "compiler_principles", + "query": "我想先复习如何写出产生特定语言的文法,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s8:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 8, + "text_sha256": "6af936d3aa255374d0563a312e2cdfd9925ab4fc54141854e90bad732c98a5ef", + "text_excerpt": "- *\n- 分析语言的特点\n- 分解成层次结构\n- 根据结构写出文法", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "compiler_principles:009", + "course_id": "compiler_principles", + "query": "复习写一个文法,使其语言是奇数集,且每个奇数不以0开头。时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s9:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 9, + "text_sha256": "469ea77dd0e4a0c8fda6ffe3f33c6ba03735573f447ac8a163b7483646efb647", + "text_excerpt": "- *\n- G(S):\n - S  O | A O\n - O  1 | 3 | 5 | 7 | 9 奇数\n - N  O | 2 | 4 | 6 | 8 非零数\n - D  0 | N 可包含零\n - A  A D | N 不以零开头的数\n- 非0开头数字串\n- 奇数数字", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:010", + "course_id": "compiler_principles", + "query": "给出下面语言的相应文法里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s10:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 10, + "text_sha256": "ddb8c9c58f23139e09a3047164a828c8a49c5506a7c6477794075b3ac5f40ad5", + "text_excerpt": "- *\n- L1={anbn ci | n1,i0}\n- 解答:G(S):\n - S → A C\n - A → a A b | ab\n - C → c C | \n- L4={1n 0m 1m 0n | n,m0}\n- 解答:G(S):\n - S → 1 S 0 | B | \n - B → 0 B 1 | ", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:011", + "course_id": "compiler_principles", + "query": "学习第四章 词法分析时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s11:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 11, + "text_sha256": "c9f7ef4d1e05847ef1596cfacaca73faba2ec9421bcbb2aaff495b68771344e7", + "text_excerpt": "- 学习目标:\n- 掌握:词法分析程序的构造,正规式和正规文法到有穷自动机的转换,NFA到DFA的转换、DFA的化简\n- 理解:正规文法、正规式、DFA的概念、NFA的概念\n- 了解:词法分析程序的自动构造工具", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:012", + "course_id": "compiler_principles", + "query": "考试会怎么考第四章 词法分析?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s12:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 12, + "text_sha256": "f0685862b2d5a7e108ce337853b1e7f4bf30766c7f92cd44695087b7220f835b", + "text_excerpt": "- *\n- 对于词法分析器的要求\n- 词法分析器的设计\n- 正规表达式与有限自动机\n- 词法分析器的自动产生--LEX", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:013", + "course_id": "compiler_principles", + "query": "关系图主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s13:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 13, + "text_sha256": "50293d44a446ac60e93150846ece5d49dd9c15d542a663904ea1cb7171cbdef8", + "text_excerpt": "- *\n- FA\n- 正规集\n- 正规式\n- DFA\n- NFA\n- curState = 初态\n- GetChar();\n- while( stateTrans[curState][ch]有定义){\n- //存在后继状态,读入、拼接\n- Concat();\n- //转换入下一状态,读入下一字符   curState= stateTrans[curState][ch];\n- if cur_state是终态 then 返回strToken中的单词\n- GetChar( );\n-", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:014", + "course_id": "compiler_principles", + "query": "我想先复习要点,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s14:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 14, + "text_sha256": "1cfd661253bd6324dd428884fd6395a47929a8974f65f842cc030cafd39e7584", + "text_excerpt": "- *\n- 几个转换算法\n - 正规式 ⇔ NFA\n - NFA  DFA\n - DFA化简算法", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "compiler_principles:015", + "course_id": "compiler_principles", + "query": "复习构造下列正规式相应的DFA时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s15:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 15, + "text_sha256": "bce43a4827a6938f15f81c4954867c095d63b0cbb4e65658e964efc958fe824e", + "text_excerpt": "1(0 | 1)*101\n\n- *\n- 思路:正规式NFA DFA\n- X\n- Y\n- 1 ( 0 | 1)* 1 0 1\n- X\n- 1\n- 2\n- 3\n- 4\n- Y\n- 5\n- 1\n- \n- \n- 1\n- 0\n- 1\n- 1\n- 0", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "compiler_principles:016", + "course_id": "compiler_principles", + "query": "确定化的过程里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s16:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 16, + "text_sha256": "7c5a33b7e8496422d6ad1f0722e4bc36b9699885b25c36d29d2eac50e56d4738", + "text_excerpt": "- *\n- 不失一般性,设字母表只包含两个 a 和b,我们构造一张表:\n- {...}\n- {...}\n- {...}\n- {...}\n- {...}\n- {...}\n- {...}\n- {...}\n- e-Closure({X})\n- Ia\n- Ib\n- I\n- 首先,置第1行第1列为-closure({X})求出这一列的Ia,Ib;\n- 然后,检查这两个Ia,Ib,看它们是否已在表中的第一列中出现,把未曾出现的填入后面的空行的第1列上,求出每行第2,3列上的集合...\n", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:017", + "course_id": "compiler_principles", + "query": "学习确定化时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s17:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 17, + "text_sha256": "4ac321e5f48d63a17aabd5e656577033204b3d581e13b1bc324f2c7a96caac00", + "text_excerpt": "- *\n\n| | 0 | 1 |\n|---|---|---|\n| {X} |  | {1,2,3} |\n|  |  |  |\n| {1,2,3} | {2,3} | {2,3,4} |\n| {2,3} | {2,3} | {2,3,4} |\n| {2,3,4} | {2,3,5} | {2,3,4} |\n| {2,3,5} | {2,3} | {2,3,4,Y} |\n| {2,3,4,Y} | {2,3,5} | {2,3,4,} |\n\n- X\n- 1\n- 2\n- ", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:018", + "course_id": "compiler_principles", + "query": "考试会怎么考确定化?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s18:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 18, + "text_sha256": "ca6683865939a4a09ba520f4f6c9f3f56235d68c520c42dd665aed6d5c6209bb", + "text_excerpt": "- *\n\n| | 0 | 1 |\n|---|---|---|\n| {X} |  | {1,2,3} |\n|  |  |  |\n| {1,2,3} | {2,3} | {2,3,4} |\n| {2,3} | {2,3} | {2,3,4} |\n| {2,3,4} | {2,3,5} | {2,3,4} |\n| {2,3,5} | {2,3} | {2,3,4,Y} |\n| {2,3,4,Y} | {2,3,5} | {2,3,4,} |\n\n- 6\n- 0\n- 1\n- ", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:019", + "course_id": "compiler_principles", + "query": "最小化:对状态集进行划分主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s19:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 19, + "text_sha256": "b45bc7db8e8ed74329d2e026bae4233a31a5701533047356e4439095ba575f83", + "text_excerpt": "- *\n- 首先,把S划分为终态和非终态两个子集,形成基本划分。\n- 假定到某个时候,已含m个子集,记为={I(1),I(2),,I(m)},检查中的每个子集看是否能进一步划分:\n - 对某个I(i),令I(i)={s1,s2, ,sk},若存在一个输入字符a使得Ia(i) 不会包含在现行的某个子集I(j)中,则至少应把I(i)分为两个部分。", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:020", + "course_id": "compiler_principles", + "query": "我想先复习最小化:对状态集进行划分,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s19:c02", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 19, + "text_sha256": "0470ea63c0fea2aa413ae207492b232dcec08e6879c07c39420144f9a4f96427", + "text_excerpt": "> 备注:序号 大写 小写 英文注音 中文读音\n1 Α α alpha 阿尔法\n2 Β β beta 贝塔\n3 Γ γ gamma 伽马\n4 Δ δ delta 德尔塔\n5 Ε ", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:021", + "course_id": "compiler_principles", + "query": "复习最小化时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s20:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 20, + "text_sha256": "45895b8dc689bca97dabe23084ce16833cefa3bf402b3daf4042c68d00768809", + "text_excerpt": "- *\n- 6\n- 0\n- 1\n- 3\n- 5\n- 4\n- 1\n- 0\n- 0\n- 0\n- 0\n- 0\n- 1\n- 1\n- 1\n- 1\n- 0\n- 1\n- 6\n- 0\n- 1\n- 2\n- 3\n- 5\n- 4\n- 1\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 1\n- 1\n- 1\n- 1\n- 1\n- 0\n- 1", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "compiler_principles:022", + "course_id": "compiler_principles", + "query": "构造一个DFA,它接受={0,1}上所有满足如下条件的字符串:每个1都有0直接跟在右边。里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s21:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 21, + "text_sha256": "50fe5c5873d441a387e3d8d2d0bd5f7a480c6dd0e5e0c48cb84d6dff6b7a3630", + "text_excerpt": "- *\n- 思路\n - 分析语言特点\n - 01000101000010\n - 写出正规式\n - ( 0 | 10)*\n - 正规式  NFA  DFA\n- ( 0 | 10)*\n- Y\n- X\n- 1\n- 0\n- 1\n- 1\n- 2\n- 0\n- 0\n- 0\n- 1", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:023", + "course_id": "compiler_principles", + "query": "学习小结时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s22:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 22, + "text_sha256": "4b328c2d7362567c18eb03143c19ce243747c7003a79d299f8b6a056f393e0d6", + "text_excerpt": "- *\n- 文法与语言\n- 正规式 vs. NFA vs. DFA", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "compiler_principles:024", + "course_id": "compiler_principles", + "query": "考试会怎么考第四章 语法分析—自上而下分析?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s23:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 23, + "text_sha256": "ff8c7b9996c74eef003a60e999bbbe4cd7de9a47bb9e8b116aed531c2254ecf2", + "text_excerpt": "- *\n- 自上而下分析面临的问题\n - 文法的左递归性\n - 回溯\n- 构造不带回溯的自上而下分析算法\n - 消除文法的左递归的方法\n - 提取左公共因子,克服回溯\n- LL(1)文法的条件\n - FIRST、FOLLOW、SELECT集合\n- LL(1)分析法\n - 递归下降分析程序\n - 预测分析程序", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:025", + "course_id": "compiler_principles", + "query": "第四章 语法分析—自上而下分析主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s24:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 24, + "text_sha256": "b0bef0dd63e2f66523cc7d0b36ec260f745a941d1fd7f1ee734a819b5fa9504e", + "text_excerpt": "- *\n- 语法分析器的功能\n- 自上而下分析面临的问题\n- LL(1)分析法\n- 递归下降分析程序构造\n- 预测分析程序", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:026", + "course_id": "compiler_principles", + "query": "我想先复习语法分析的方法,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s25:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 25, + "text_sha256": "b3ae259d5e97e693713b9288afa55b7c18639a50de1c5d6678c388bb92f5ed00", + "text_excerpt": "- *\n- 自上而下分析法(Top-down)\n - 基本思想\n - 它从文法的开始符号出发,反复使用各种产生式,寻找\"匹配\"的推导\n - 递归下降分析法\n - 对每一语法变量(非终结符)构造一个相应的子程序,每个子程序识别一定的语法单位\n - 通过子程序间的相互调用实现对输入串的识别\n - 预测分析程序\n - 非递归实现\n - 直观、简单", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:027", + "course_id": "compiler_principles", + "query": "复习考虑下面文法G1时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s26:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 26, + "text_sha256": "f213f49d4af297af8135dea21c251c73ef95681bdc3818335380c69055e9458b", + "text_excerpt": "S → a |  | (T)\n\t\tT → T, S | S\n(1) 消去G1的左递归。然后,对每个非终结符,写出不带回溯的递归子程序。\n(2) 经改写后的文法是否是LL(1)的?给出它的预测分析表。\n\n- *\n- 思路\n - 消除左递归\n - 提取左公共因子\n - 计算非终结符的FIRST集合和FOLLOW集合\n - 检查LL(1)条件\n - 构造预测分析表或递归子程序", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:028", + "course_id": "compiler_principles", + "query": "G1里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s27:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 27, + "text_sha256": "701db1fd2df14991fceba2c16e07099fb3167ca915b6f6a5fb6aea0a7a6faf6f", + "text_excerpt": "S → a |  | (T)\nT → T, S | S\n\n- *\n- 消除左递归:按照T,S的顺序消除左递归\n- G’1(S):\n - S → a |  | (T)\n - T → S T’\n - T’ → , S T’ | \n- 无左公共因子", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:029", + "course_id": "compiler_principles", + "query": "学习LL文法的判别时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s28:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 28, + "text_sha256": "b3e3a95c0072c4d0dbcdc9ac445c179d067ea35f5e05996aa5b07bbe66ecdfec", + "text_excerpt": "- 要判别一个上下文无关文法是否是LL(1)文法\n- 分为五步:\n- 1.  求能推出ε的非终结符集\n- 2.  计算每个产生式右部α的FIRST(α)集\n- 3.  计算每个非终结符A的FOLLOW(A)集\n- 4.  计算每个产生式A→α的SELECT(A→α)集\n- 5.  按LL(1)文法的定义判别", + "flags": [] + } + ] + }, + { + "legacy_id": "compiler_principles:030", + "course_id": "compiler_principles", + "query": "考试会怎么考G’1?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "compiler-principles-001:s29:c01", + "exists": true, + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 29, + "text_sha256": "bf8e9d3b24c844e8d2ad76ae1a0259c87b853f0ae05b504444b0521b999cffc1", + "text_excerpt": "S → a |  | (T)\nT → S T’\nT’ → , S T’ | \n\n- *\n- 1. 求能推出ε的非终结符集\n- {T’ } 收敛\n- 第一次\n- 初值\n- 非终结符集S\n- {T’ }", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_graphics:001", + "course_id": "computer_graphics", + "query": "1-Computer Graphics and Applications主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p1:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "d647fcb7b4ef91afcefe05ea13c88f9f7b349d0db812355b3a10c7a83a60ae22", + "text_excerpt": "计算机图形学与虚拟现实\n\n冼楚华\nEmail: chhxian@scut.edu.cn\n华南理工大学计算机科学与工程学院\n\n![image](assets/computer-graphics-001/image-001.png)", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_graphics:002", + "course_id": "computer_graphics", + "query": "我想先复习1-Computer Graphics and Applications,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p2:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "80b6922d7fa75ced547204038ec49c3893fa5dd1f1760b31441c35672e04e568", + "text_excerpt": "课程信息\n\n• 授课老师姓名:冼楚华\n• Email: chhxian@scut.edu.cn\n• 个人主页:https://chuhuaxian.github.io/\n• QQ:89071086 (比较少用,非急事请不要私聊)\n• 办公室:B3-202-2\n• 课程QQ群(见二维码)\n\n![image](assets/computer-graphics-001/image-002.png)\n\n![image](assets/computer-graphics-001/ima", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_graphics:003", + "course_id": "computer_graphics", + "query": "复习1-Computer Graphics and Applications时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p3:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "3f6ed4bf90829e1c7a5c3f0143eaa7d7ba6c47d990c196f1a6bd6a98fc7459bf", + "text_excerpt": "内容\n\n计算机图形学的源起\n\n计算机图形学的应用\n\n3\n\n![image](assets/computer-graphics-001/image-004.png)\n\n![image](assets/computer-graphics-001/image-005.png)\n\n![image](assets/computer-graphics-001/image-006.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_graphics:004", + "course_id": "computer_graphics", + "query": "1-Computer Graphics and Applications里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p4:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "58c4d0fa47e7e685dbdf8dcadef8a00791a836429981f5194bd6138b710a3157", + "text_excerpt": "1 计算机图形学的起源\n\n软硬件技术发展+ 应用需求\n\n4\n\n![image](assets/computer-graphics-001/image-007.png)\n\n![image](assets/computer-graphics-001/image-008.png)\n\n![image](assets/computer-graphics-001/image-009.png)\n\n![image](assets/computer-graphics-001/image-010", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_graphics:005", + "course_id": "computer_graphics", + "query": "学习1-Computer Graphics and Applications时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p5:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "6d065c590bc71e3b5a195a998bef4a788fccee6c120de798236e1a679e684f28", + "text_excerpt": "从人的视觉说起…\n\n![image](assets/computer-graphics-001/image-011.png)\n\n![image](assets/computer-graphics-001/image-012.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_graphics:006", + "course_id": "computer_graphics", + "query": "考试会怎么考1-Computer Graphics and Applications?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p6:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "426f83a83e247d09b6b487b202909e806c8adad08d0608743069ff5f0cd34d59", + "text_excerpt": "生物智能体\n\n人的感官系统\n\n寒武纪大爆发\n\n![image](assets/computer-graphics-001/image-013.png)\n\n![image](assets/computer-graphics-001/image-014.png)\n\n![image](assets/computer-graphics-001/image-015.png)\n\n![image](assets/computer-graphics-001/image-016.jpeg)\n\n", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_graphics:007", + "course_id": "computer_graphics", + "query": "1-Computer Graphics and Applications主要讲什么?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p7:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 7, + "text_sha256": "624c8cdaa84a2ef73e79134e9d6acc28518491d59e7af9bcbb4af2e7dc7bc423", + "text_excerpt": "图像:眼睛/相机成像--搜集场景\n的光\n\n![image](assets/computer-graphics-001/image-018.png)\n\n![image](assets/computer-graphics-001/image-019.png)\n\n![image](assets/computer-graphics-001/image-020.png)\n\n![image](assets/computer-graphics-001/image-021.jpeg)\n\n![", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_graphics:008", + "course_id": "computer_graphics", + "query": "我想先复习1-Computer Graphics and Applications,应该从哪里开始?,见第8页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p8:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 8, + "text_sha256": "002f433d51dc1ef34ba75ddf15c9b013eae7b4d8193dd1e4057f604b5320d3f7", + "text_excerpt": "人眼看到什么?\n\n3D 世界\n2D 图像\n\nPoint of observation\n\n![image](assets/computer-graphics-001/image-023.png)\n\n![image](assets/computer-graphics-001/image-024.png)\n\n![image](assets/computer-graphics-001/image-025.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_graphics:009", + "course_id": "computer_graphics", + "query": "复习1-Computer Graphics and Applications时哪些内容最重要?,见第9页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p9:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 9, + "text_sha256": "259e2cd6e7c2c1a846410c4e9c6cc8184949567517e74bb4504110e1353fcdac", + "text_excerpt": "人眼看到什么?\n\n3D 世界\n2D 图像\n\n绘制背景\n\n![image](assets/computer-graphics-001/image-026.png)\n\n![image](assets/computer-graphics-001/image-027.png)\n\n![image](assets/computer-graphics-001/image-028.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_graphics:010", + "course_id": "computer_graphics", + "query": "1-Computer Graphics and Applications里的方法或结论怎么理解?,见第10页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p10:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 10, + "text_sha256": "7725122d73c6d635c8316f9898b4138f17fe8282c430474cf9680960b3a5b719", + "text_excerpt": "数字图像的表达与存储\n\n计算机中存\n\n人眼看到\n\n储的\n\n的\n\n![image](assets/computer-graphics-001/image-029.png)\n\n![image](assets/computer-graphics-001/image-030.png)\n\n![image](assets/computer-graphics-001/image-031.png)\n\n![image](assets/computer-graphics-001/image-03", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_graphics:011", + "course_id": "computer_graphics", + "query": "学习1-Computer Graphics and Applications时哪些概念容易混淆?,见第11页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p11:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 11, + "text_sha256": "0a53277d288e1c0ae8ca77b4270216e0210fb670e86b3dfd1f34ff5a9b9f76a0", + "text_excerpt": "我们看到的像素颜色是否可计算?\n\n![image](assets/computer-graphics-001/image-035.png)\n\n![image](assets/computer-graphics-001/image-036.png)\n\n![image](assets/computer-graphics-001/image-037.png)\n\n![image](assets/computer-graphics-001/image-038.jpeg)\n\n![imag", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_graphics:012", + "course_id": "computer_graphics", + "query": "考试会怎么考1-Computer Graphics and Applications?,见第12页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p12:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 12, + "text_sha256": "d5e0080546543e5c31e69e9f69fb9f23d6342d278525923ef6b6f6cc5c8fb1ef", + "text_excerpt": "![image](assets/computer-graphics-001/image-040.png)\n\n![image](assets/computer-graphics-001/image-041.png)\n\n![image](assets/computer-graphics-001/image-042.png)\n\n![image](assets/computer-graphics-001/image-043.jpeg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_graphics:013", + "course_id": "computer_graphics", + "query": "1-Computer Graphics and Applications主要讲什么?,见第13页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p13:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 13, + "text_sha256": "ccf02d749c1f864d6b24fc709be96ce0105a35f6152eeb3f0121fe228aa5313a", + "text_excerpt": "1988年图灵奖Ivan Sutherland\nComputer Graphics(计算机图形学)\nVirtual Reality(虚拟现实技术)\n\n2003年图灵奖Alan Kay\n面向对象编程:SmallTalk\n人机交互:GUI\n\nRenderman: CG Imagery\nJurassic Park, The Lord of the\nRings trilogy, the Star Wars,…\n\nGPU: GLSL, Brook/CUDA\n\nPat Hanrahan ", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_graphics:014", + "course_id": "computer_graphics", + "query": "我想先复习1-Computer Graphics and Applications,应该从哪里开始?,见第14页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p14:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 14, + "text_sha256": "749065fd03ef69d3dd5df2129ebf7858445f146309b75713e5543f3bd4ab0a42", + "text_excerpt": "第一幅在显示器上生成的图像\n\nBen Laposky\n\n◦人工智能艺术家\n◦用示波器(oscilloscope)\n控制出现在小显示屏\n上的电子波;波浪会\n在显示屏上不断地移\n动和起伏。\n\n14\n\n![image](assets/computer-graphics-001/image-051.png)\n\n![image](assets/computer-graphics-001/image-052.png)\n\n![image](assets/computer-graphics", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_graphics:015", + "course_id": "computer_graphics", + "query": "复习1-Computer Graphics and Applications时哪些内容最重要?,见第15页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p15:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 15, + "text_sha256": "05fdc14480d2a2fb668e48c33add7822e3b13fbe22e7d4a84d3bd465b351690c", + "text_excerpt": "SAGE (SemiAutomatic Ground Equipment)\n\nBert Sutherland\n\n◦在SAGE系统上首次用光\n笔(light pen)在屏幕\n上定位目标\n◦SAGE采用向量图形显示\n\n![image](assets/computer-graphics-001/image-057.png)\n\n![image](assets/computer-graphics-001/image-058.png)\n\n![image](assets/computer", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_graphics:016", + "course_id": "computer_graphics", + "query": "1-Computer Graphics and Applications里的方法或结论怎么理解?,见第16页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p16:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 16, + "text_sha256": "02afa3e867950a59b104422b98cb270e872ccb226413c889f6ab462a1b877c34", + "text_excerpt": "“Computer Graphics”名字的由来\n\nWilliam A. Fetter\n\n◦1928~2002, a graphic artist\n◦1950s~1960s: Boeing,研究飞机驾驶舱仿真\n◦首次设计人体模型\n◦1960 首次使用“Computer Graphics”\n\n16\n\n![image](assets/computer-graphics-001/image-062.png)\n\n![image](assets/computer-graphics-0", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_graphics:017", + "course_id": "computer_graphics", + "query": "学习1-Computer Graphics and Applications时哪些概念容易混淆?,见第17页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p17:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 17, + "text_sha256": "78252dc3cb547c1ce199326206e9e15121e0c28be527b6251590fe0232ed4e52", + "text_excerpt": "Sketchpad—人机交互的图形系统\n\nI. Sutherland\n\n◦CMU BS, Caltech MS, MIT Ph.D\n◦博士论文Sketchpad: A Man-machine\nGraphical Communications System\n\n计算机图形学的奠基之作\n1963, Supervised by Claude Shannon\n◦1968,在哈佛大学与Bob Sproull一起\n发明头盔\n\nA visual thinker (“If I can p", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_graphics:018", + "course_id": "computer_graphics", + "query": "考试会怎么考1-Computer Graphics and Applications?,见第18页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p18:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 18, + "text_sha256": "22f893fbd80f909031c32a8132ec48b1731adfc82a5db2158cebe42ae51d642c", + "text_excerpt": "18\n\n![image](assets/computer-graphics-001/image-071.png)\n\n![image](assets/computer-graphics-001/image-072.png)\n\n![image](assets/computer-graphics-001/image-073.png)\n\n![image](assets/computer-graphics-001/image-074.jpeg)\n\n![image](assets/com", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_graphics:019", + "course_id": "computer_graphics", + "query": "1-Computer Graphics and Applications主要讲什么?,见第19页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p19:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 19, + "text_sha256": "6856f6235ed1a53b0d04a7fe3710efc2f8c1e5a7085d8649bd35b69f0f6a86bf", + "text_excerpt": "计算机图形学发展中的标志性事件\n\n具体可参看\n\n◦https://blog.csdn.net/oTianLe1234/article/details/115581463\n◦https://zhuanlan.zhihu.com/p/107420103\n\n19\n\n![image](assets/computer-graphics-001/image-078.png)\n\n![image](assets/computer-graphics-001/image-079.png)\n\n!", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_graphics:020", + "course_id": "computer_graphics", + "query": "我想先复习1-Computer Graphics and Applications,应该从哪里开始?,见第20页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p20:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 20, + "text_sha256": "0f551baed017ae7116d8146bea4f78606019a78edd8c7ff1af17648260ccc9cf", + "text_excerpt": "线框显示(1960s)\n\n光栅化\n\n填充算法\n\n裁剪算法\n\nN\nE\n\nQE\nP=(xp, yp)\n\n20\n\n![image](assets/computer-graphics-001/image-082.png)\n\n![image](assets/computer-graphics-001/image-083.png)\n\n![image](assets/computer-graphics-001/image-084.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_graphics:021", + "course_id": "computer_graphics", + "query": "复习1-Computer Graphics and Applications时哪些内容最重要?,见第21页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p21:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 21, + "text_sha256": "b796e4401b0c1bc6af6bee4cd4fada90f0f887f7da84e0c28a54668b92a8d806", + "text_excerpt": "线框显示(1960s)\n\n21\n\n![image](assets/computer-graphics-001/image-085.png)\n\n![image](assets/computer-graphics-001/image-086.png)\n\n![image](assets/computer-graphics-001/image-087.png)\n\n![image](assets/computer-graphics-001/image-088.jpeg)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_graphics:022", + "course_id": "computer_graphics", + "query": "1-Computer Graphics and Applications里的方法或结论怎么理解?,见第22页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p22:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 22, + "text_sha256": "09f54d51ae9547d3d0780735183fe98e499f7d212943c50c52632722886b5462", + "text_excerpt": "真实感绘制(1970s-1980s)\n\n22\n\n![image](assets/computer-graphics-001/image-089.png)\n\n![image](assets/computer-graphics-001/image-090.png)\n\n![image](assets/computer-graphics-001/image-091.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_graphics:023", + "course_id": "computer_graphics", + "query": "学习1-Computer Graphics and Applications时哪些概念容易混淆?,见第23页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p23:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 23, + "text_sha256": "3492d74541af093833bc34daed688f2e797223b6e64ff7a5af148a098cb34afa", + "text_excerpt": "局部光照模型, 1973: Phong lighting model\n\n23\n\n![image](assets/computer-graphics-001/image-092.png)\n\n![image](assets/computer-graphics-001/image-093.png)\n\n![image](assets/computer-graphics-001/image-094.png)\n\n![image](assets/computer-graphics-001/", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_graphics:024", + "course_id": "computer_graphics", + "query": "考试会怎么考1-Computer Graphics and Applications?,见第24页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p24:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 24, + "text_sha256": "c26a219a12ce42ba8e4306e7314d9a20ec060394e7f424b7c55b40f742698178", + "text_excerpt": "Ray Tracing (1980)\n\n24\n\n![image](assets/computer-graphics-001/image-096.png)\n\n![image](assets/computer-graphics-001/image-097.png)\n\n![image](assets/computer-graphics-001/image-098.png)\n\n![image](assets/computer-graphics-001/image-099.jpeg)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_graphics:025", + "course_id": "computer_graphics", + "query": "1-Computer Graphics and Applications主要讲什么?,见第25页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p25:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 25, + "text_sha256": "6f268bf91976b3dc9df41276871042426571f7e451bb7a3dfe8e972be70a5573", + "text_excerpt": "Radiosity 1984, BRDF\n\n25\n\n![image](assets/computer-graphics-001/image-100.png)\n\n![image](assets/computer-graphics-001/image-101.png)\n\n![image](assets/computer-graphics-001/image-102.png)\n\n![image](assets/computer-graphics-001/image-103.jpeg", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_graphics:026", + "course_id": "computer_graphics", + "query": "我想先复习1-Computer Graphics and Applications,应该从哪里开始?,见第26页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p26:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 26, + "text_sha256": "416b36ba8fec7dd329ad6a30dc68e2595959a926e45df4d604a03044cdf764cc", + "text_excerpt": "Reyes\n\nRender Everything You Ever Saw (RenderMan)\n\nA road to Point Reyes\n\n26\n\n![image](assets/computer-graphics-001/image-104.png)\n\n![image](assets/computer-graphics-001/image-105.png)\n\n![image](assets/computer-graphics-001/image-106.png)\n", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_graphics:027", + "course_id": "computer_graphics", + "query": "复习1-Computer Graphics and Applications时哪些内容最重要?,见第27页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p27:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 27, + "text_sha256": "3677ffdc49ede14e8d933c5a3f1f694079af03424f5b22d94674b9c46f886e39", + "text_excerpt": "附:S.乔布斯给Pixar的500万美金支票\n\n张心欣:《科学、艺术、天才,一篇计算科学的\n\n史诗,一场兑现的资本盛宴》\nhttps://zhuanlan.zhihu.com/p/121868664\n\n27\n\n![image](assets/computer-graphics-001/image-108.png)\n\n![image](assets/computer-graphics-001/image-109.png)\n\n![image](assets/computer-g", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_graphics:028", + "course_id": "computer_graphics", + "query": "1-Computer Graphics and Applications里的方法或结论怎么理解?,见第28页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p28:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 28, + "text_sha256": "1878ee442f90ecd21b54ed192444595d4942dec9ddaf802c0aadffe4e16c098f", + "text_excerpt": "1990s\n\n新的曲线曲面表示\n\n◦网格曲面(meshes),\n◦细分曲面\n◦隐式曲面\n\n绘制\n\n◦体绘制, 基于图象的绘制,\n点绘制\n\n可视化(Scientific\n\nvisualization)\n\n图形硬件—图形工作站\n\n28\n\n![image](assets/computer-graphics-001/image-112.png)\n\n![image](assets/computer-graphics-001/image-113.png)\n\n![image](as", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_graphics:029", + "course_id": "computer_graphics", + "query": "学习1-Computer Graphics and Applications时哪些概念容易混淆?,见第29页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p29:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 29, + "text_sha256": "ec467af709fb83807d6488496a98d0f7c972179cdae943c6c28c3fe89eb2c965", + "text_excerpt": "2000s\n\n数字几何处理\n\n材质(BRDF)编辑\n\n图像与视频编辑\n\nNVIDIA\n\n◦可编程GPU\n\n29\n\n![image](assets/computer-graphics-001/image-117.png)\n\n![image](assets/computer-graphics-001/image-118.png)\n\n![image](assets/computer-graphics-001/image-119.png)\n\n![image](assets/c", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_graphics:030", + "course_id": "computer_graphics", + "query": "考试会怎么考1-Computer Graphics and Applications?,见第30页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computer-graphics-001:p30:c01", + "exists": true, + "source_id": "computer-graphics-001", + "source_title": "1-Computer Graphics and Applications", + "locator_type": "page", + "locator_start": 30, + "text_sha256": "c66385cd3b4c2f3148b1b76b77e65bf66708728ef070976e3c352d7cc2141ba6", + "text_excerpt": "2010s\n\n大数据+可视计算与分析\n(Visual computing and analysis)\n\n30\n\n![image](assets/computer-graphics-001/image-122.png)\n\n![image](assets/computer-graphics-001/image-123.png)\n\n![image](assets/computer-graphics-001/image-124.png)\n\n![image](assets/comput", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_networks:001", + "course_id": "computer_networks", + "query": "总评成绩组成主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-networks-001:h-总评成绩组成:c01", + "exists": true, + "source_id": "computer-networks-001", + "source_title": "总评成绩组成", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "d3cf398a2d547ecff26e2077887fe8ec48832b4c48f449d49402000bc5532696", + "text_excerpt": "![page-001.png](assets/computer-networks-001/page-001.png)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_networks:002", + "course_id": "computer_networks", + "query": "我想先复习期末题目构成,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-networks-002:h-期末题目构成:c01", + "exists": true, + "source_id": "computer-networks-002", + "source_title": "期末题目构成", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "e90624f4e5f4f4bb58f85a3aff9a20e1bc805faafaa4f722b5058234c93f369a", + "text_excerpt": "![page-001.png](assets/computer-networks-002/page-001.png)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_networks:003", + "course_id": "computer_networks", + "query": "复习期末试卷及答案 2000级时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:h-计算机网络-期末试卷及答案-2000级:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "b6469f778b1b823963c70df5b87582406fefd7ea4d948c795df021926252b81c", + "text_excerpt": "**《计算机网络》期末试卷及答案(2000级)**\n\n**一、填空题(每空1分,共25分)**", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_networks:004", + "course_id": "computer_networks", + "query": "能把信道复用有哪几种方式的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q1:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5117bb1563fd70900390decb0642057f56c96a9e169a58cfa33f2c85000637f8", + "text_excerpt": "1、信道复用技术有三种方式:________、___________和_____________。", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_networks:005", + "course_id": "computer_networks", + "query": "做IPv4和IPv6的地址长度分别是多少时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q2:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "70ee7388eb5d03d04743cc69c33c643048a16dbb02afbf6dcf619a4d81ca7332", + "text_excerpt": "2、IP地址长度在IPV4中为_____比特,而在IPV6中则为_____比特。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_networks:006", + "course_id": "computer_networks", + "query": "这类题一般怎么考?能用FTP属于哪一层协议举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q3:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "46642da843bd1d8f228e7cf8e53db168f8ce21e0c72030b2fcf2187780194abe", + "text_excerpt": "3、网络上的计算机之间通信要采用相同的______,FTP是一种常用的_____层协议。", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_networks:007", + "course_id": "computer_networks", + "query": "域名解析成IP地址的过程是什么怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q4:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "be34ee477e9de919018acd41561a1b5d5597fdbd95d109f46c0205465b4973b1", + "text_excerpt": "4、从计算机域名到IP地址翻译的过程称为________。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_networks:008", + "course_id": "computer_networks", + "query": "做常见广播式网络一般采用_____和______结构。时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q5:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "8b8031ad3cea34bc83bce69cd61072b6907a5e6a9d45e3a141828e49e7e4263d", + "text_excerpt": "5、常见广播式网络一般采用_____和______结构。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_networks:009", + "course_id": "computer_networks", + "query": "目前以太网最常用的传输媒体是_________。的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q6:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fda79877d8b4e682355a4f9c40fb614acf1e4e9c5609aa4805c2b1c3ebe9f067", + "text_excerpt": "6、目前以太网最常用的传输媒体是_________。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_networks:010", + "course_id": "computer_networks", + "query": "能把TCP和UDP有什么区别的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q7:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "52d2cc7240231bd2b3b7420a236f64ee0af9c962710c48b535a96af07f13d104", + "text_excerpt": "7、TCP协议是_________的,UDP协议是____________的。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_networks:011", + "course_id": "computer_networks", + "query": "做数据链路层分为哪两个子层时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q8:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "edd8ae99695059837dbb1581e6c7652f643051f183ce645ffc1e1d23f1e48bbe", + "text_excerpt": "8、在局域网模型中,数据链路层又分为_____________和___________。", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_networks:012", + "course_id": "computer_networks", + "query": "这类题一般怎么考?能用网络管理的五大功能分别是什么举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q9:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "46934bbac70bcf198fa1badf828ea66740d75b76261cf22104704b6067d0e606", + "text_excerpt": "9、网络管理的五大功能是:_____、____、____、____、____。\n\n**二、名词翻译(英译中)(每小题3分,共15分)**", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_networks:013", + "course_id": "computer_networks", + "query": "ARP怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q10:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6f636a0d3ff92db9d59a45d4fb0a1c4a476686a4ef793eba98b86af8c187f5f1", + "text_excerpt": "1、ARP", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_networks:014", + "course_id": "computer_networks", + "query": "做SDH时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q11:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fc6d3d9f0a6b0bca031cccde1924a9d4568ab82e8c9e0b0f84c27caf61fd7968", + "text_excerpt": "2、SDH", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_networks:015", + "course_id": "computer_networks", + "query": "FDDI的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q12:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "b3247090013b2cdcc18ea08431418c647d5c944d67b6baffe87aaa26ed83fdd6", + "text_excerpt": "3、FDDI", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_networks:016", + "course_id": "computer_networks", + "query": "能把WAN的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q13:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "60b6adcdef06f8a70d7b82f8da3159f178e44ba8b46da3a1df84827118867739", + "text_excerpt": "4、WAN", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_networks:017", + "course_id": "computer_networks", + "query": "做QOS 三、选择题 每小题,共时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q14:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "49ac6f05e98af35ebcd855db706175d9f972bedadf047476248dcd8b8cbdd3f0", + "text_excerpt": "5、QOS\n\n**三、选择题(每小题2分,共30分)**", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_networks:018", + "course_id": "computer_networks", + "query": "这类题一般怎么考?能用网络层的互联设备是____。举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q15:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "8a0ef3016fec453c36182cf9796380eaf6d25fcbaec268a869921d4488074666", + "text_excerpt": "1、网络层的互联设备是____。\n\nA、网桥 B、交换机 C、路由器 D、网关", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_networks:019", + "course_id": "computer_networks", + "query": "IP协议是无连接的,其信息传输方式是____。怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q16:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "96483e81e8a832f25ed29406bc68708e5079dd1ca5e513f5b780c88a5f4627f0", + "text_excerpt": "2、IP协议是无连接的,其信息传输方式是____。\n\nA、点到点 B、广播 C、虚电路 D、数据报", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_networks:020", + "course_id": "computer_networks", + "query": "做用于电子邮件的协议是____。时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q17:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a7423f0c98cbcd2f997704a6a84dc0b0db4f5c4de74a4a7c611fb79129da2189", + "text_excerpt": "3、用于电子邮件的协议是____。\n\nA、IP B、TCP C、SNMP D、SMTP", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_networks:021", + "course_id": "computer_networks", + "query": "WEB使用____进行信息传递。的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q18:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "c36431a04b831042c160677369ae9c0e890e1520e4cdad7b420fc53f2d010b22", + "text_excerpt": "4、WEB使用____进行信息传递。\n\nA、HTTP B、HTML C、FTP D、TELNET", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_networks:022", + "course_id": "computer_networks", + "query": "能把检查网络连通性的应用程序是____。的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q19:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "71200bf084ac2c7bf20db59f2fd7362a741751664527a62bd832dfdcad20ad47", + "text_excerpt": "5、检查网络连通性的应用程序是____。\n\nA、PING B、ARP C、BIND D、DNS", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_networks:023", + "course_id": "computer_networks", + "query": "做ISDN的基本速率是____。时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q20:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "39f87888cc1763b84f5b2e4d0f5e22de53040715812ebe6f99d5a168dd4ae19b", + "text_excerpt": "6、ISDN的基本速率是____。\n\nA、64kbps B、128kbps C、144kbps D、384kbps", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_networks:024", + "course_id": "computer_networks", + "query": "这类题一般怎么考?能用在INTERNET中,按____地址进行寻址。举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q21:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "df6e94347191222a21b5e597c2d3a0743a8872b817c5ef30bffda8edc9a01197", + "text_excerpt": "7、在INTERNET中,按____地址进行寻址。\n\nA、邮件地址 B、IP地址 C、MAC地址 D、网线接口地址", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_networks:025", + "course_id": "computer_networks", + "query": "在下面的服务中,____不属于INTERNET标准的应用服务。怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q22:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "67c00b87cf67390f17bf953a4f2ef0d7b85764a2cd96a92c1c49e09c9ed6fb16", + "text_excerpt": "8、在下面的服务中,____不属于INTERNET标准的应用服务。\n\nA、WWW服务 B、EMAIL服务 C、FTP服务 D、NETBIOS服务", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_networks:026", + "course_id": "computer_networks", + "query": "做数据链路层的数据单位是____。时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q23:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "408b5cdce28619726c7438a147c399019c0c79f63a9179771424076ecbdde3fd", + "text_excerpt": "9、数据链路层的数据单位是____。\n\nA、比特 B、字节 C、帧 D、分组", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_networks:027", + "course_id": "computer_networks", + "query": "RIP采用哪种路由算法的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q24:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "63d22f7acd562d1bee4d179e8c65d7eef239359c7be312a966ba68fa4086be49", + "text_excerpt": "10、RIP(路由信息协议)采用了____作为路由协议。\n\nA、距离向量 B、链路状态 C、分散通信量 D、固定查表", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_networks:028", + "course_id": "computer_networks", + "query": "能把TCP和UDP有什么区别的解题步骤写出来吗?,对应第25题", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q25:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "527be7cc8e7619e5dff166cc4fa45256df8d89d9a71b951abbb2de48d0e8c879", + "text_excerpt": "11、TCP协议在每次建立或拆除连接时,都要在收发双方之间交换____报文。\n\nA、一个 B、两个 C、三个 D、四个", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_networks:029", + "course_id": "computer_networks", + "query": "做对等层实体之间采用____进行通信。时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q26:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "29ff6aa682857320d388e9119a1d1918158c6907f6b0d8c3e80c73e6ac2d8cd8", + "text_excerpt": "12、对等层实体之间采用____进行通信。\n\nA、服务 B、服务访问点 C、协议 D、上述三者", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_networks:030", + "course_id": "computer_networks", + "query": "这类题一般怎么考?能用通过改变载波信号的相位值来表示数字信号1、0的方法,称为____.举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-networks-003:q-computer-networks-003-q27:c01", + "exists": true, + "source_id": "computer-networks-003", + "source_title": "《计算机网络》期末试卷及答案(2000级)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "2a9258ac9127925a277574e688a4b7da924c67d6b237a3e6d36e77babb993404", + "text_excerpt": "13、通过改变载波信号的相位值来表示数字信号1、0的方法,称为____.\n\nA、ASK B、FSK C、PSK D、ATM", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_organization:001", + "course_id": "computer_organization", + "query": "课后习题答案主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p1:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "8529002a6353b515a6ca056b2786e6b6e556922cbe771939ffe20dc148357335", + "text_excerpt": "![page-001.jpg](assets/computer-organization-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:002", + "course_id": "computer_organization", + "query": "我想先复习课后习题答案,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p2:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "65d01233e8ebec3c27979c20dcc44c6d61c8156c68f133053f5156a8c779c2b6", + "text_excerpt": "![page-002.jpg](assets/computer-organization-001/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:003", + "course_id": "computer_organization", + "query": "复习课后习题答案时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p3:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "7b8c90c9fbc4296e61c228a9aed65b30b137672aab6371303a68a352b5f770a2", + "text_excerpt": "![page-003.jpg](assets/computer-organization-001/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:004", + "course_id": "computer_organization", + "query": "课后习题答案里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p4:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "20e45815daf3da9c13ab7297d244afaf571dc4b3f8593bf748520cadb95bbbea", + "text_excerpt": "![page-004.jpg](assets/computer-organization-001/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:005", + "course_id": "computer_organization", + "query": "学习课后习题答案时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p5:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "4400a536b8f2be7fb376d7ef7434fb4b5d3bd0219dd1244cd33c6267da5cb1f0", + "text_excerpt": "![page-005.jpg](assets/computer-organization-001/page-005.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:006", + "course_id": "computer_organization", + "query": "考试会怎么考课后习题答案?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p6:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "5079708514ed0bb82e38499aefa48fd1872ba11e5baf15aa364e84e80f5bd1f2", + "text_excerpt": "![page-006.jpg](assets/computer-organization-001/page-006.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:007", + "course_id": "computer_organization", + "query": "课后习题答案主要讲什么?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p7:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 7, + "text_sha256": "4e84ce8726820a4ee5bce153772e629b5fbed569baa9b91c7d38d355e719e661", + "text_excerpt": "![page-007.jpg](assets/computer-organization-001/page-007.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:008", + "course_id": "computer_organization", + "query": "我想先复习课后习题答案,应该从哪里开始?,见第8页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p8:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 8, + "text_sha256": "1884109dc36447de35068bd570e8d1b9745acb2d425d6a74df6b79d24bca3c39", + "text_excerpt": "![page-008.jpg](assets/computer-organization-001/page-008.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:009", + "course_id": "computer_organization", + "query": "复习课后习题答案时哪些内容最重要?,见第9页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p9:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 9, + "text_sha256": "f8266df7eec66ed92875d34712776934e5c4208b5a7a063736dab1fb30778e94", + "text_excerpt": "![page-009.jpg](assets/computer-organization-001/page-009.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:010", + "course_id": "computer_organization", + "query": "课后习题答案里的方法或结论怎么理解?,见第10页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p10:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 10, + "text_sha256": "1c0e704e6cbbf7955c52c27587bca05d81cee2285035d48ab963e4ce05428fc1", + "text_excerpt": "![page-010.jpg](assets/computer-organization-001/page-010.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:011", + "course_id": "computer_organization", + "query": "学习课后习题答案时哪些概念容易混淆?,见第11页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p11:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 11, + "text_sha256": "6bc9c27de95d16241261383a3b489834c49ffa3e4a45f4986193c4c7be1f0393", + "text_excerpt": "![page-011.jpg](assets/computer-organization-001/page-011.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:012", + "course_id": "computer_organization", + "query": "考试会怎么考课后习题答案?,见第12页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p12:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 12, + "text_sha256": "acb994ae87b4b468f87e3c091d033125778e6fd5adbd6173c6f886cd5e9e48d3", + "text_excerpt": "![page-012.jpg](assets/computer-organization-001/page-012.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:013", + "course_id": "computer_organization", + "query": "课后习题答案主要讲什么?,见第13页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p13:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 13, + "text_sha256": "8213c522f20f0f5a76188733b278460979ac9fb175905640ceb30246ebd6b0f1", + "text_excerpt": "![page-013.jpg](assets/computer-organization-001/page-013.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:014", + "course_id": "computer_organization", + "query": "我想先复习课后习题答案,应该从哪里开始?,见第14页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p14:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 14, + "text_sha256": "47d9952206884aee92a4f552396fcbe148803d0589f0e044cffe9db2a175745e", + "text_excerpt": "![page-014.jpg](assets/computer-organization-001/page-014.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:015", + "course_id": "computer_organization", + "query": "复习课后习题答案时哪些内容最重要?,见第15页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p15:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 15, + "text_sha256": "ab212c75875b633a830e221fe0d462942f8db1e21f0f64f129791303b4845474", + "text_excerpt": "![page-015.jpg](assets/computer-organization-001/page-015.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:016", + "course_id": "computer_organization", + "query": "课后习题答案里的方法或结论怎么理解?,见第16页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p16:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 16, + "text_sha256": "dcf2603b537b0e929c9b9eb4e49e84dcf557c327723b0b4f9bf82ce2c1451627", + "text_excerpt": "![page-016.jpg](assets/computer-organization-001/page-016.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:017", + "course_id": "computer_organization", + "query": "学习课后习题答案时哪些概念容易混淆?,见第17页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p17:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 17, + "text_sha256": "7c37e71c387d519acb7ac7ff06ef8ea907f67730bc03d8ecb86bfbe239070b65", + "text_excerpt": "![page-017.jpg](assets/computer-organization-001/page-017.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:018", + "course_id": "computer_organization", + "query": "考试会怎么考课后习题答案?,见第18页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p18:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 18, + "text_sha256": "34d2f636577c19932a56e948a768d7fd3913d3b738707efb7e2542a9d6fb420c", + "text_excerpt": "![page-018.jpg](assets/computer-organization-001/page-018.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:019", + "course_id": "computer_organization", + "query": "课后习题答案主要讲什么?,见第19页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p19:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 19, + "text_sha256": "01cd191fee642efab3d75fd9a61250f2793c5cbaab7db8fef156b37740281074", + "text_excerpt": "![page-019.jpg](assets/computer-organization-001/page-019.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:020", + "course_id": "computer_organization", + "query": "我想先复习课后习题答案,应该从哪里开始?,见第20页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p20:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 20, + "text_sha256": "33221e0d491935d860d5732547ebf2d7ebd937a9b043fbd0547cf6fea7e43a04", + "text_excerpt": "![page-020.jpg](assets/computer-organization-001/page-020.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:021", + "course_id": "computer_organization", + "query": "复习课后习题答案时哪些内容最重要?,见第21页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p21:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 21, + "text_sha256": "df789cd1d47f8941962a9ae32eb3eb4e0aee199fbeca8de0a149c8e1691e3b39", + "text_excerpt": "![page-021.jpg](assets/computer-organization-001/page-021.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:022", + "course_id": "computer_organization", + "query": "课后习题答案里的方法或结论怎么理解?,见第22页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p22:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 22, + "text_sha256": "778068da29b54c6c78e2648e33ec21c69539477109aa8d2fc223082c35cbf23a", + "text_excerpt": "![page-022.jpg](assets/computer-organization-001/page-022.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:023", + "course_id": "computer_organization", + "query": "学习课后习题答案时哪些概念容易混淆?,见第23页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p23:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 23, + "text_sha256": "650dbd9e80cacd54ae44c4b066492bb86e0759ec7ece03041f28ae4700fdae93", + "text_excerpt": "![page-023.jpg](assets/computer-organization-001/page-023.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:024", + "course_id": "computer_organization", + "query": "考试会怎么考课后习题答案?,见第24页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p24:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 24, + "text_sha256": "9c4ff475262486a82c6cdc03ee99b109a561128818f1410a0480065b85d78dc6", + "text_excerpt": "![page-024.jpg](assets/computer-organization-001/page-024.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:025", + "course_id": "computer_organization", + "query": "课后习题答案主要讲什么?,见第25页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p25:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 25, + "text_sha256": "bbba8fb75c52cf4baad827f83bc0b12e5833802676b07ca71e87a96e9dc2084f", + "text_excerpt": "![page-025.jpg](assets/computer-organization-001/page-025.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:026", + "course_id": "computer_organization", + "query": "我想先复习课后习题答案,应该从哪里开始?,见第26页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p26:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 26, + "text_sha256": "d23da7c154885c1a3ff6d2e668778d988cc6e7232993bd9709f0254882ad968e", + "text_excerpt": "![page-026.jpg](assets/computer-organization-001/page-026.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:027", + "course_id": "computer_organization", + "query": "复习课后习题答案时哪些内容最重要?,见第27页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p27:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 27, + "text_sha256": "0ba1d45f6a43f8af12eeb54c0a8319245b9864890b480bc7e2b148295fc9ca80", + "text_excerpt": "![page-027.jpg](assets/computer-organization-001/page-027.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:028", + "course_id": "computer_organization", + "query": "课后习题答案里的方法或结论怎么理解?,见第28页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p28:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 28, + "text_sha256": "e76bfc1533f4c86dd372bf5923f6709b996fa94b8bccc1a6caa6e23fc4f5aa16", + "text_excerpt": "![page-028.jpg](assets/computer-organization-001/page-028.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:029", + "course_id": "computer_organization", + "query": "学习课后习题答案时哪些概念容易混淆?,见第29页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p29:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 29, + "text_sha256": "90cec7026b88dcef1acf6703ccdcadd679cf8a128af8df527d5b8abea34c867e", + "text_excerpt": "![page-029.jpg](assets/computer-organization-001/page-029.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_organization:030", + "course_id": "computer_organization", + "query": "考试会怎么考课后习题答案?,见第30页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-organization-001:p30:c01", + "exists": true, + "source_id": "computer-organization-001", + "source_title": "课后习题答案", + "locator_type": "page", + "locator_start": 30, + "text_sha256": "39962e3751601cae67ded47106918e14a6ca59417a758b8ef0aa705d50fc9e2a", + "text_excerpt": "![page-030.jpg](assets/computer-organization-001/page-030.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_science_intro:001", + "course_id": "computer_science_intro", + "query": "Final Exam A 2021V1主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p1:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "727ae65ebe0ff83d6d13b797d476d7131b695f4916f002f1c00f6b6dd4f14bad", + "text_excerpt": "……………………………………………Seal Line………………………………………………Seal Line………………………………………Seal Line……………………………………\n\nName Student ID\n School Major/Class Seat No.\n\nWARNING: MISBEHAVIOR AT EXAM TIME WILL LEAD TO SERIO", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_science_intro:002", + "course_id": "computer_science_intro", + "query": "做Write your answers on the answer sheet.时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p1:q-computer-science-intro-003-q1:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "1cd707bf6669d5e5e4c5dc0b458e95d8cdcf795e2add4ef82d7a3d251858b95c", + "text_excerpt": "2. Write your answers on the answer sheet.", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_science_intro:003", + "course_id": "computer_science_intro", + "query": "This is a close-book exam. 4. The exam with full score of 100 points lasts 120 minutes. Question No. I II III的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p1:q-computer-science-intro-003-q2:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "9188237f1108405d652f637579d618ce6e4e0d34cd9c84be3363185a4b44c31e", + "text_excerpt": "3. This is a close-book exam.\n4. The exam with full score of 100 points lasts 120 minutes.\n\nQuestion No.\nI\nII\nIII\nIV\nSum\nScore", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_science_intro:004", + "course_id": "computer_science_intro", + "query": "能把Fill in the blanks 5 blanks×2’ (1) Computer _______________ is the collection of programs that ( DONNOT WRIT的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p1:q-computer-science-intro-003-q3:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "5c583a3623696dee6b02478f74b96fdf7bf6a91f7dc787c270a5705853c3522f", + "text_excerpt": "1. Fill in the blanks (5 blanks×2’)\n\n(1) Computer _______________ is the collection of programs that\n\n( DONNOT WRITE YOUR ANSWER IN THIS AREA )\n\nprovide the instructions that a computer carries out.\n\n(2) A(n) _______________ is a natural nu", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_science_intro:005", + "course_id": "computer_science_intro", + "query": "做(3) A TrueColor RGB representation of one pixel takes up _______________ bytes. (4) A gate that accepts two in时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p1:q-computer-science-intro-003-q4:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "dc5f2fc7e7308d1187af040964391b76907b9cf661d55b3ba2b51f0b28c01533", + "text_excerpt": "(3) A TrueColor RGB representation of one pixel takes up\n\n_______________ bytes.\n\n(4) A gate that accepts two input values has _______________ possible\n\ninput combinations.\n\n(5) The _______________ is a set of wires through which data trave", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_science_intro:006", + "course_id": "computer_science_intro", + "query": "这类题一般怎么考?能用Single selection questions 20×2’ (1) Which of the following terms best describes the concept of abstraction?举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p1:q-computer-science-intro-003-q5:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "d517f70ec8d739203e041119e8aadf6b73cc46a2648fdeff83252f543f1719c8", + "text_excerpt": "2. Single selection questions(20×2’)\n\n(1) Which of the following terms best describes the concept of\n\nabstraction?\n\nA) exposing difficulty\nB) hiding quantity\n\nFoundations of Computer Science Exam Paper A Page 1 of 5", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_science_intro:007", + "course_id": "computer_science_intro", + "query": "C) exposing distance怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p2:q-computer-science-intro-003-q5:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "a6642bd8f875ef15e73f96e8feb333e7e427300eff8096feaaa60a28bf39961b", + "text_excerpt": "C) exposing distance\nD) hiding details", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_science_intro:008", + "course_id": "computer_science_intro", + "query": "做(2) What is a single binary digit called?时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p2:q-computer-science-intro-003-q6:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "d13c3b929938e7ccf3041e2f8521d9d66522ece5a29782c7fed954d26cafb389", + "text_excerpt": "(2) What is a single binary digit called?\n\nA) byte\nB) nibble\nC) bit\nD) word", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_science_intro:009", + "course_id": "computer_science_intro", + "query": "(3) How many digits are there in the octal number system?的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p2:q-computer-science-intro-003-q7:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "4c6017e54296df7a66da19b8761e753667f26f2fce765a941898902ea19d24f5", + "text_excerpt": "(3) How many digits are there in the octal number system?\n\nA) 10\nB) 2\nC) 7\nD) 8", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_science_intro:010", + "course_id": "computer_science_intro", + "query": "能把(4) How many things can be represented using four bits?的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p2:q-computer-science-intro-003-q8:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "f3f4b9e939202c7b7482e62823031fc7e7a48013402cbdec6332cb6990f2245d", + "text_excerpt": "(4) How many things can be represented using four bits?\n\nA) 4\nB) 8\nC) 12\nD) 16\n\n(5) Which technique for representing numeric data has two forms of zero?\n\nA) signed-magnitude\nB) fixed-sized numbers\n\nC) floating point\nD) ten's complem", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_science_intro:011", + "course_id": "computer_science_intro", + "query": "做(7) A transistor is made up of what kind of material?时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p2:q-computer-science-intro-003-q9:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "b3a2f060cd31ab99ae44985211221aeb89bb3ee14cf25b68acf1399be6e421dd", + "text_excerpt": "(7) A transistor is made up of what kind of material?\n\nA) semiconductor\nB) conductor\nC) insulation\nD) rubber\n\n(8) Which of the following circuits represented by Boolean expressions\n\nis/are equivalent?\n\nA) AB , BA\nB) A(B+C) , (AB) + (A", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_science_intro:012", + "course_id": "computer_science_intro", + "query": "这类题一般怎么考?能用(10) Which of the following manages the fetch-execute cycle?举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p3:q-computer-science-intro-003-q9:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "aec3836c832ab91470a09f3116efbb3f01fd33bd2ea3e77e4b810b2314d8ff49", + "text_excerpt": "(10) Which of the following manages the fetch-execute cycle?\n\nA) control unit\nB) arithmetic/logic unit\n\nC) auxiliary storage device\nD) RAM\n\n(11) Which language is actually executed by the central processing unit of\n\na computer?\n\nA) hig", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_science_intro:013", + "course_id": "computer_science_intro", + "query": "(15) RAM is non-volatile and ROM is volatile.怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p3:q-computer-science-intro-003-q10:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "fdf90dc0004ba6bf9a230a39104c9104f112f6a22746a67a983db3b226c7d00d", + "text_excerpt": "(15) RAM is non-volatile and ROM is volatile.\n\nA) True\nB) False", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_science_intro:014", + "course_id": "computer_science_intro", + "query": "做(16) A touch screen is both an input and output device.时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p3:q-computer-science-intro-003-q11:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "084d6f73b7a829d5c0dda4d3bcb8633b53ce3581d9be3710c16c839bed169b7b", + "text_excerpt": "(16) A touch screen is both an input and output device.\n\nA) True\nB) False\n\n(17) A megabyte of memory space is larger than a gigabyte of memory\n\nFoundations of Computer Science Exam Paper A Page 3 of 5", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_science_intro:015", + "course_id": "computer_science_intro", + "query": "space.的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p4:q-computer-science-intro-003-q11:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "dcb094a423d04cc3044ad5c66a44cf8b63722fd468469585843fff2a015ba511", + "text_excerpt": "space.\n\nA) True\nB) False", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_science_intro:016", + "course_id": "computer_science_intro", + "query": "能把(18) An AND gate and an OR gate produce opposite output.的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p4:q-computer-science-intro-003-q12:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "d4397d7098eb796a2bf28dd590d6e3e87e11663b9855114880fc1c7c0bebfe66", + "text_excerpt": "(18) An AND gate and an OR gate produce opposite output.\n\nA) True\nB) False\n\n(19) A character set is a list of characters and their numeric codes.\n\nA) True\nB) False\n\n(20) The letter C is used to represent the number 11 in hexadecimal.\n\nA) Tr", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_science_intro:017", + "course_id": "computer_science_intro", + "query": "做Calculations ( 5×6’ )时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p4:q-computer-science-intro-003-q13:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "935bb94fbc6433e05005f153d093a8346697dab4dff7a132bf045414db345578", + "text_excerpt": "3. Calculations ( 5×6’ )", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_science_intro:018", + "course_id": "computer_science_intro", + "query": "这类题一般怎么考?能用(1) Convert the binary number 11011011 to the target base .举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p4:q-computer-science-intro-003-q14:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "0b3e71ae6e2fefdb26332b8e563bf6eec0e4696d8a154b836cde5f462a6d914b", + "text_excerpt": "(1) Convert the binary number 11011011 to the target base .\n\nA. to base 10\nB. to base 8\nC. to base 16\n\n(2) If 891 is a number in each of the following bases, how many 1s are\n\nthere?\n\nA. base 12\n\nB. base 8\n\n(3) Given a fixed-sized numbe", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_science_intro:019", + "course_id": "computer_science_intro", + "query": "the boolean expression: A B C (5) What does code X8BBCA9 represent using run-length encoding? What is the comp怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p5:q-computer-science-intro-003-q14:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "cb9a15db137dae3d6fa38d13469869bd98ea6873a8b73e893dda314bb593fe82", + "text_excerpt": "the boolean expression:\n\nA\n\nB\n\nC\n\n(5) What does code *X8BBC*A9 represent using run-length encoding?\n\nWhat is the compression ratio?", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_science_intro:020", + "course_id": "computer_science_intro", + "query": "做Essay questions (4×5’) (1) Why do computers have difficulty with analog information?时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p5:q-computer-science-intro-003-q15:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "145f6fd6f0a031bd3439dcad9057f1533b61e4d7f6080ed216c5119b8ea8be8f", + "text_excerpt": "4. Essay questions (4×5’)\n\n(1) Why do computers have difficulty with analog information?", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_science_intro:021", + "course_id": "computer_science_intro", + "query": "(2) Name the components of a von Neumann machine.的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p5:q-computer-science-intro-003-q16:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "8cd0b033c6fbaf3640ad239ca939bdbdfc0741234e484b25b501a826086e9de5", + "text_excerpt": "(2) Name the components of a von Neumann machine.", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_science_intro:022", + "course_id": "computer_science_intro", + "query": "能把(3) How can gates be combined into circuits? (4) Write a pseudocode algorithm for Binary Search in a sorted ar的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-003:p5:q-computer-science-intro-003-q17:c01", + "exists": true, + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "f856be3b3e471fb5ca25217e46030bea2c227a2ab05ae4355d8d3424bccd5796", + "text_excerpt": "(3) How can gates be combined into circuits?\n\n(4) Write a pseudocode algorithm for Binary Search in a sorted array.\n\nFoundations of Computer Science Exam Paper A Page 5 of 5", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_science_intro:023", + "course_id": "computer_science_intro", + "query": "学习这张图片时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-004:h-微信图片_20231218194317:c01", + "exists": true, + "source_id": "computer-science-intro-004", + "source_title": "微信图片_20231218194317", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "87d8d8bada2136d798f706e6d2643e08127f583c64df4d680ea02236355f7f83", + "text_excerpt": "![page-001.png](assets/computer-science-intro-004/page-001.png)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "computer_science_intro:024", + "course_id": "computer_science_intro", + "query": "考试会怎么考The Big Picture?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-005:s1:c01", + "exists": true, + "source_id": "computer-science-intro-005", + "source_title": "第1章", + "locator_type": "slide", + "locator_start": 1, + "text_sha256": "e7c15a2b75faaa1179e8f946b5fa99b78b019c4477d93cfc80382821b916daab", + "text_excerpt": "- Chapter 1", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_science_intro:025", + "course_id": "computer_science_intro", + "query": "Chapter Goals主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-005:s2:c01", + "exists": true, + "source_id": "computer-science-intro-005", + "source_title": "第1章", + "locator_type": "slide", + "locator_start": 2, + "text_sha256": "fdea6fc9bbdf89da2a549860a0bec982796f217d01605b78040c72d580a95f17", + "text_excerpt": "- Describe the layers of a computer system\n- Describe the concept of abstraction and its relationship to computing\n- Describe the history of computer hardware and software\n- Describe the changing role of the computer user\n- Distinguish betw", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_science_intro:026", + "course_id": "computer_science_intro", + "query": "我想先复习Computing Systems,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-005:s3:c01", + "exists": true, + "source_id": "computer-science-intro-005", + "source_title": "第1章", + "locator_type": "slide", + "locator_start": 3, + "text_sha256": "112e58598c98433b1733fcf4c9fd9c4b6c5f235b7de5fa6af03c3e6cc169c7bf", + "text_excerpt": "- \n- 2\n- Computing systems are dynamic!\n- computer hardware ,software, data which interact to solve the problem.\n- What is the difference between hardware and software?", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_science_intro:027", + "course_id": "computer_science_intro", + "query": "复习Computing Systems时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-005:s4:c01", + "exists": true, + "source_id": "computer-science-intro-005", + "source_title": "第1章", + "locator_type": "slide", + "locator_start": 4, + "text_sha256": "23500ed1a9bd0028204f14cd09fe2c9feed8bc196dedc1a074f6d0d0d05d8950", + "text_excerpt": "- \n- 3\n- Hardware The physical elements of a computing system (printer, circuit boards, wires, keyboard…)\n- Software The programs that provide the instructions for a computer to execute", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_science_intro:028", + "course_id": "computer_science_intro", + "query": "Layers of a Computing System里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-005:s5:c01", + "exists": true, + "source_id": "computer-science-intro-005", + "source_title": "第1章", + "locator_type": "slide", + "locator_start": 5, + "text_sha256": "4d63dee9cc68aed373eeb828d9830f8d6a37235cf073374fb9cfc5c31193c9f1", + "text_excerpt": "- \n- 4\n![image](assets/computer-science-intro-005/image-001.jpg)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computer_science_intro:029", + "course_id": "computer_science_intro", + "query": "学习Abstraction时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-005:s6:c01", + "exists": true, + "source_id": "computer-science-intro-005", + "source_title": "第1章", + "locator_type": "slide", + "locator_start": 6, + "text_sha256": "a405441e7f033cf9df740526e51e0f93909efedbfd0a18ed83bbd7dd2a4096aa", + "text_excerpt": "- \n- 5\n- Abstraction A mental model that removes complex details\n- This is a key concept. Abstraction will reappear throughout the text – be sure you understand it!", + "flags": [] + } + ] + }, + { + "legacy_id": "computer_science_intro:030", + "course_id": "computer_science_intro", + "query": "考试会怎么考Internal View?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computer-science-intro-005:s7:c01", + "exists": true, + "source_id": "computer-science-intro-005", + "source_title": "第1章", + "locator_type": "slide", + "locator_start": 7, + "text_sha256": "95d39c446dd868af27599f8da6b3a046a77b1f3b07009fb8bb6b18210b6784c1", + "text_excerpt": "- \n![image](assets/computer-science-intro-005/image-002.jpg)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computing_methods:001", + "course_id": "computing_methods", + "query": "老粉福利:证明题通用模板主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-001:p1:c01", + "exists": true, + "source_id": "computing-methods-001", + "source_title": "老粉福利:证明题通用模板", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "1c194145d245a0b941349b36d3d3b9c7423b72bdee73f21b5ff8e696bd6b920e", + "text_excerpt": "⎪\n\n⎪\n\n一、 插值误差估计(核心:构造辅助函数 + 反复使用 Rolle 定理证明:对任意的 x ∈[a, b],其插值余项\n满足...)\n\n定理: n 次插值余项为:\n\nRn(x) = f(x) −Pn(x) = f (n+1)(ξ)\n\n(n + 1)! ωn+1(x),\nξ ∈(a, b)\n\n其中 ωn+1(x) = ∏n\n\ni=0(x −xi)。\n\n证明模板:\n\n1. 定义常数与构造函数: 对固定的求值点 x(x ≠xi),令常数 K = f(x)−Pn(x)\nωn", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:002", + "course_id": "computing_methods", + "query": "我想先复习老粉福利:证明题通用模板,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-001:p2:c01", + "exists": true, + "source_id": "computing-methods-001", + "source_title": "老粉福利:证明题通用模板", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "419e4fc6b514bd7a37ee18a4ee754d229db8fe9dbc26b588e50373d8ffc27efe", + "text_excerpt": "1. 先最小化偏差平方和\n\n偏导数必须为 0得:\n\na = −2\nn\ni=1 [yi −\n\n=0 axi]xi = 0\n\n2. 交换求和顺序与整理上面偏导数为0的2-3个式子,得出结论即可\n\n三、 求积公式误差(核心:插值余项 + 积分中值定理中点求积公式为 b\n\na f(x)x (b −a)f ( a+b\n\n2 )。试证明\n其求积误差为:...)\n\n1. 梯形公式误差\n\n公式:= b−a\n\n2 [f(a) + f(b)]\n\n证明模板:\n\n1. 利用线性插值余项: f(x) ", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:003", + "course_id": "computing_methods", + "query": "复习老粉福利:证明题通用模板时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-001:p3:c01", + "exists": true, + "source_id": "computing-methods-001", + "source_title": "老粉福利:证明题通用模板", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "5bbc9c9366bebcd6731dc61cd645b4a7f0f0e22a58868c80deea8f1cfb27d576", + "text_excerpt": "四、 条件数与线性迭代法收敛性\n\n1. 右端误差对解的影响:试估计解的相对误差 ∥x∥\n∥x∥ 的上限(使用 ∞-范数)。\n\n证明模板:\n\n1. 设 Ax = b,扰动后 A(x + x) = b + b。相减得 A x = b。\n\n2. 变形取范数:∥x∥= ∥A−1b∥≤∥A−1∥∥b∥。\n\n3. 又由原方程知:∥b∥≤∥A∥∥x∥。\n\n4. 两式相乘并联立:\n\n∥x∥\n∥x∥≤∥A∥⋅∥A−1∥\n\n⋅∥b∥\n\n∥b∥\n\n(A)\n\n5. 具体数值计算\n\n计算 ∥A∥∞:", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:004", + "course_id": "computing_methods", + "query": "老粉福利:证明题通用模板里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-001:p4:c01", + "exists": true, + "source_id": "computing-methods-001", + "source_title": "老粉福利:证明题通用模板", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "8993a3a7df1f55c13b74e2def36f760098a3b96ce1414f6e7b155749a1d6f23d", + "text_excerpt": "后验误差证明模板:\n利用 () = () −(+1) + (+1) 和 () −(+1) = x() −x(+1)。\n再由三角不等式:∥()∥≤∥x() −x(+1)∥+ ∥∥∥()∥,移项解出 ∥()∥ 即可:\n\n∥x() −x∥≤\n∥∥\n1 −∥∥∥x() −x(−1)∥\n\n具体数值计算与结论:已知= (\n)\n0.2\n0.1\n0.1\n0.3\n\n计算 ∥∥∞= max(|0.2| + |0.1|, |0.1| + |0.3|) = 0.4。\n\n已知 ∥x() −x(−1)∥", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:005", + "course_id": "computing_methods", + "query": "学习老粉福利:证明题通用模板时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-001:p5:c01", + "exists": true, + "source_id": "computing-methods-001", + "source_title": "老粉福利:证明题通用模板", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "43b6329bf7217900e868343048f1e64fa38ffa4a6d01621bfb9be3a870cfd70f", + "text_excerpt": "两边取对数 :\n\n⋅(0.5) ≤(2.54 10−5) ⟹\n≥−10.5\n\n−0.63 15.26\n\n4. 得出结论\n\n根据先验估计,至少需要迭代 16 次才能确保误差在 10−5 以内。\n\n2. p 阶收敛定理(例题应用)\n\n【例题】\n\n求方程 x2 −3 = 0 的正根 x = 3。现有一种特殊的迭代格式:\n\nx+1 = x(x2 + )\n\n3x2 + 3\n\n试证明该迭代格式在根 x = 3 邻域内是 3 阶收敛的。\n\n规范证明与解答\n\n1. 确定迭代函数与根\n令迭代函", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:006", + "course_id": "computing_methods", + "query": "考试会怎么考老粉福利:证明题通用模板?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-001:p6:c01", + "exists": true, + "source_id": "computing-methods-001", + "source_title": "老粉福利:证明题通用模板", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "202d7709453fc4ba240dc07e7adc40151985cba6e541e559a941f054902cb09a", + "text_excerpt": "φ′′(x) = 0\n\n三阶导数:\n\n继续对关键项求导(在 x 邻域展开或直接算),会发现三阶导数在 x = 3 处不再为 0:\n\nφ(x) ≠0\n\n3. 套用泰勒展开模板得出结论\n\n根据 p 阶收敛定理模板,由于 φ′(x) = 0, φ′′(x) = 0 且 φ(x) ≠0,我们在 x 处对 φ(x) 进行\nTaylor 展开:\n\nx+1 −x = φ(x) −φ(x) = φ′(x)(x −x) + φ′′(x)\n\n2!\n(x −x)2 + φ(ξ)\n\n3!\n(x −x", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:007", + "course_id": "computing_methods", + "query": "电子版教材-仅供学生参考-勿对外分享主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p1:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "1d0cc6b14396f9ae1eb76f002c57fa5fa41642b82fe722c20920b3f0c0554256", + "text_excerpt": "21世纪计算机科学与技术系列教材(本科)\n\n数值分析\n\n主 编 韩国强\n副主编 林伟健 陈大正\n\n华南理工大学出版社\n\n· 广州·", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:008", + "course_id": "computing_methods", + "query": "我想先复习电子版教材-仅供学生参考-勿对外分享,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p2:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "ea5bc420e216e69d88ffeb999f64ca23ceb65505a25c009852ec50e4f58c4078", + "text_excerpt": "图书在版编目(CIP)数据\n\n数值分析/韩国强主编.—广州:华南理工大学出版社,2005畅3\n\n(21世纪计算机科学与技术系列教材(本科))\n\nISBN7_5623_2182_5\n\nⅠ畅数… Ⅱ畅韩… Ⅲ畅数值计算-高等学校-教材 Ⅳ畅O241\n\n中国版本图书馆CIP数据核字(2004)第136326号\n\n总发行:华南理工大学出版社(广州五山华南理工大学17号楼,邮编510640)\n\n发行部电话:020-87113487 87111048(传真)\n\nEmail:scut202", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:009", + "course_id": "computing_methods", + "query": "复习电子版教材-仅供学生参考-勿对外分享时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p3:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "29754c9867415ecbc92b5193904b57fd9518e771b2212bce4729dfc92cb292e1", + "text_excerpt": "前 言\n\n在科学技术特别是计算机科学技术的发展过程中,遇到了大量的数值计算问\n\n题.数值分析就是研究解决这些数值计算问题的学科,也是一门实用性很强,内容\n\n丰富,有自身理论体系的课程.\n\n根据多年从事枟数值分析枠教学的经验,按照学生学习的认知规律,我们精心\n\n构造了本教材的体系.在叙述本课程的内容时,采用由简单到复杂,由特殊到一般\n\n的叙述方法.在介绍数值分析基础理论的同时,也给出了数值计算的实例.为了方\n\n便学生在计算机上进行一些数值计算实验,我们对每一种数值计算方法都给出", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:010", + "course_id": "computing_methods", + "query": "电子版教材-仅供学生参考-勿对外分享里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p4:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "a7f2b35efb22f1f6bd10b6422928278745b6c4e6f679705d8abd3f0a26e948cd", + "text_excerpt": "目  录\n\n1 误 差\n( )\n………………………………………………………………………\n\n1畅1 误差的来源\n( )\n……………………………………………………………\n\n1畅2 误差、误差限和有效数字\n( )\n………………………………………………\n\n1畅3 相对误差和相对误差限\n( )\n………………………………………………\n\n1畅4 数值运算中的误差估计\n( )\n………………………………………………\n\n1畅5 数值计算中应注意的一些问题\n( )\n………………………………………\n", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:011", + "course_id": "computing_methods", + "query": "学习电子版教材-仅供学生参考-勿对外分享时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p5:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "5c577816b4cf9a4e9534adf368460b4e8d16aceb8971bc92ac1e9461a3455310", + "text_excerpt": "2\n数值分析\n\n4畅1 梯形求积公式、抛物线求积公式和Newton-Cotes求积公式\n( )\n………\n\n4畅1畅1 梯形求积公式\n( )\n……………………………………………………\n\n4畅1畅2 Simpson求积公式\n( )\n…………………………………………………\n\n4畅1畅3 Newton-Cotes求积公式\n( )\n…………………………………………\n\n4畅2 求积公式的代数精确度\n( )\n………………………………………………\n\n4畅3 梯形求积公式和Simpson求积公", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:012", + "course_id": "computing_methods", + "query": "考试会怎么考电子版教材-仅供学生参考-勿对外分享?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p5:c02", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "0e5794973fc3ac2e37357c5856027e74f3c75b7f3fc184877f124ad9b8466251", + "text_excerpt": "5畅畅1 向量范数\n( )\n…………………………………………………………\n\n5畅畅2 矩阵范数\n( )\n…………………………………………………………\n\n4\n4\n4\n4\n\n5畅畅3 谱半径\n( )\n……………………………………………………………\n\n5畅畅4 方程右端误差对解的影响\n( )\n………………………………………\n\n5畅畅5 系数矩阵误差对解的影响\n( )\n………………………………………", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:013", + "course_id": "computing_methods", + "query": "电子版教材-仅供学生参考-勿对外分享主要讲什么?,见第6页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p6:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "033231312fc84916d40aae52847d1125f4dff20c6dc91b38eaa2981da1c4e609", + "text_excerpt": "3\n目  录\n\n6 解线性代数方程组的迭代法\n( )\n………………………………………………\n\n6畅1 几种常用的迭代格式\n( )\n…………………………………………………\n\n6畅1畅1 简单迭代法(Jacobi迭代)\n( )\n………………………………………\n\n6畅1畅2 Seidel迭代法\n( )\n………………………………………………………\n\n6畅1畅3 松弛法(SOR迭代)\n( )\n………………………………………………\n\n6畅2 迭代法收敛性理论\n( )\n…………………………", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:014", + "course_id": "computing_methods", + "query": "我想先复习电子版教材-仅供学生参考-勿对外分享,应该从哪里开始?,见第6页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p6:c02", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "cd07575739601db28cf2ad13967b5c31553d8787eea8a37de770acd67e3f7de8", + "text_excerpt": "8畅3畅1 平面旋转矩阵\n( )\n……………………………………………………\n\n8畅3畅2 雅可比方法\n( )\n………………………………………………………\n\n8畅3畅3 过关雅可比方法", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "computing_methods:015", + "course_id": "computing_methods", + "query": "复习电子版教材-仅供学生参考-勿对外分享时哪些内容最重要?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p7:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 7, + "text_sha256": "69da3619144fa513f31e5bf7a18a05881892547108376182031e7b3940425bb8", + "text_excerpt": "4\n数值分析\n\n8畅4 QR 算法\n( )\n…………………………………………………………………\n\n8畅4畅1 豪斯豪德尔(Householder)矩阵\n( )\n…………………………………\n\n8畅4畅2 化一般矩阵为拟上三角矩阵\n( )\n……………………………………\n\n8畅4畅3 矩阵的正交三角分解\n( )\n……………………………………………\n\n8畅4畅4 QR 算法\n( )\n……………………………………………………………\n\n8畅4畅5 QR 算法的收敛性\n( )\n………………", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:016", + "course_id": "computing_methods", + "query": "电子版教材-仅供学生参考-勿对外分享里的方法或结论怎么理解?,见第8页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p8:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 8, + "text_sha256": "abf3a40826532224515c0f981a1227881071ca8c343d8e9472384f0fb5127d08", + "text_excerpt": "1 误 差\n\n1畅1 误差的来源\n\n科学研究、科学实验和工程技术中的实际问题经常要用数学工具解决,而用数\n\n学工具解决实际问题往往会产生误差.按误差产生的原因可以把误差分为四种:模\n\n型误差、观测误差、方法误差和舍入误差.\n\n在使用数学工具解决实际问题的过程中,往往需要通过分析问题,抓住主要矛\n\n盾,抛开次要因素,建立起量与量之间的数学模型.数学模型是关于部分现实世界\n\n和为一种特殊目的而作的一个抽象的、简化的结构.它是近似的,必然会带来误差,\n\n这种误差称为模型误差.\n\n在", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:017", + "course_id": "computing_methods", + "query": "学习电子版教材-仅供学生参考-勿对外分享时哪些概念容易混淆?,见第9页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p9:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 9, + "text_sha256": "53073d1f1428ea91390e3e25b691de563f06e910378531fc8ab98f7ff4fa781c", + "text_excerpt": "2\n数值分析\n\n1畅2畅0畅2 误差限\n\n一般情况下,准确值x 是未知的,所以误差e\n\n倡的准确值求不出来.但有时可以\n\n根据具体测量或计算估计出误差的绝对值不可能超过某个正数,这个正数通常称\n\n为误差限.\n\n定义1畅2 若e\n\n倡\n=x\n\n倡-x ≤ε\n\n倡,则ε\n\n倡的误差限.近似值x\n\n倡称为近似值x\n\n倡\n\n的误差限也记为ε(x\n\n倡).\n\n倡-x ≤ε\n\n倡,所以x\n\n倡-ε\n\n倡≤x≤x\n\n倡+ε\n\n倡,即x∈[x\n\n倡-ε\n\n倡,x\n\n倡+ε\n\n倡],也可\n\n由", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:018", + "course_id": "computing_methods", + "query": "考试会怎么考电子版教材-仅供学生参考-勿对外分享?,见第10页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p10:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 10, + "text_sha256": "fff533f98150524fb6ee3367d7e58ca76bceb25a4ca2c646a5fa45c166497bde", + "text_excerpt": "3\n1 误  差\n\n限是它末位的半个单位.\n\n可以证明:对任何数值经过四舍五入之后所得到的近似值,它的误差限是它末\n\n位的半个单位.\n\n在数值分析中,为了更好地描述近似值的这种性质,特别引入了有效数字的定\n\n义.\n\n定义1畅3 若近似值x\n\n倡的误差限为该值的某一位的半个单位,且从该位开始\n\n倡的第一位非0数字共有n 位,则称近似值x\n\n倡具有n 位有效数字.\n\n往左数到x\n\n例如,x\n\n倡\n3=3畅14具有3位有效数字.这是因为\n\n3畅14-π <1\n\n2×10\n\n-2\n\n", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:019", + "course_id": "computing_methods", + "query": "电子版教材-仅供学生参考-勿对外分享主要讲什么?,见第11页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p11:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 11, + "text_sha256": "8bc3f86680feca2977ccb1aa732cb8d1a58161b90d7e2a21e9151abcecdeb270", + "text_excerpt": "4\n数值分析\n\n实际上,可以把这段话看成有效数字的一个等价定义.按照这个定义,如果知\n\n道近似值的误差限,就可以知道它有多少位有效数字;反过来,如果知道近似值有\n\n多少位有效数字,就可以知道它的误差限是多少.\n\n例1 -3 假设x\n\n倡=0畅0012345是准确值x 的具有5位有效数字的近似值,\n\n则它的误差限为多少?\n\n解 因为\n\n倡=0畅0012345=0畅12345×10\n\n-2\n\nx\n\n由此得到p =-2.所以有\n\n倡-x ≤1\n\n-2-5=1\n\n2×10\n\n2×10", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:020", + "course_id": "computing_methods", + "query": "我想先复习电子版教材-仅供学生参考-勿对外分享,应该从哪里开始?,见第12页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p12:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 12, + "text_sha256": "d85a88fd6d84db3ffef844993ded4d9f00565b75df03607c2410fa64d98bd6aa", + "text_excerpt": "5\n1 误  差\n\n倡-x\n\n倡\nr=x\n\n定义1畅4 若记e\n\nx\n,则e\n\n倡的相对误差.近似值x\n\n倡\nr称为x\n\n倡的相对误差\n\n有时也记为er(x\n\n倡).\n\n在实际计算中,准确值x 一般是不知道的,分母中的x 通常用近似值x\n\n倡代替,\n\n即相对误差也定义为\n\n倡-x\n\n倡\nr=x\n\n倡\n(1畅3)\n\ne\n\nx\n\n1畅3畅0畅2 相对误差限\n\n从相对误差的定义可以看到,由于准确值x 一般是无法求出来的,所以不能直\n\n接计算相对误差的值.但有时近似值x\n\n倡的误差限", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:021", + "course_id": "computing_methods", + "query": "复习电子版教材-仅供学生参考-勿对外分享时哪些内容最重要?,见第13页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p13:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 13, + "text_sha256": "d7f342bb92c042ea55c0cb75c3057d34c0f35cb9dd84b36a9541ba61f918694e", + "text_excerpt": "6\n数值分析\n\n从这个定理可以看到,有效数字位越多,相对误差限就会越小.因此,在计算过\n\n程中应该尽量避免有效数字的损失.\n\n如果已知近似值的有效数字位,可以使用公式(1畅4)求出它的相对误差限.\n\n例1 -5 已知用e\n\n倡=2畅718来表示e=2畅7182…具有4位有效数字,求e\n\n倡的\n\n相对误差限.\n\n解 因为n =4,由公式(1畅4)得\n\n倡\nr≤1\n\n-(4-1)=1\n\nε\n\n2×2×10\n\n4×10\n\n-3\n\n倡\nr=1\n\n倡的相对误差限为ε\n\n4×10\n\n-3", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:022", + "course_id": "computing_methods", + "query": "电子版教材-仅供学生参考-勿对外分享里的方法或结论怎么理解?,见第14页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p14:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 14, + "text_sha256": "772b70292c1f60894edbb9c5ce46d9f600fa0267c3338df8509c100a431417ee", + "text_excerpt": "7\n1 误  差\n\nf(x)-f(x\n\n倡)≈f′(x\n\n倡)(x -x\n\n倡)\n(1畅6)\n\n即f(x\n\n倡)的绝对误差\n\ne(f(x\n\n倡))≈f′(x\n\n倡)e(x\n\n倡)\n\n由(1畅6)式可以得到f(x\n\n倡)的相对误差\n\n倡))≈f′(x\n\n倡)\n\ner(f(x\n\ne(x\n\n倡)\n(1畅7)\n\nf(x\n\n倡)\n\n对(1畅5)式两边取绝对值得\n\n倡)+f″(ξ)\n\n倡)\n=f′(x\n\n倡)(x -x\n\n(x -x\n\n倡)\n\nf(x)-f(x\n\n2\n\n2!\n\n≈f′(x", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:023", + "course_id": "computing_methods", + "query": "学习电子版教材-仅供学生参考-勿对外分享时哪些概念容易混淆?,见第15页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p15:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 15, + "text_sha256": "8761c125a83918983f4ae1f09e7af7ab233f07a7c4f0c45446eea47fb737838d", + "text_excerpt": "8\n数值分析\n\ne(x\n\n倡±y\n\n倡)≈e(x\n\n倡)±e(y\n\n倡)\n\ne(x\n\n倡· y\n\n倡)≈y\n\n倡e(x\n\n倡)+x\n\n倡e(y\n\n倡)\n\n倡\n\n倡≈1\n\n倡\n\ne x\n\n倡)-x\n\n倡e(x\n\n2e(y\n\n倡) (y\n\n倡≠0)\n\n(y\n\n倡)\n\ny\n\ny\n\nε(x\n\n倡±y\n\n倡)≤ε(x\n\n倡)+ε(y\n\n倡)\n\nε(x\n\n倡)≤y\n\n倡ε(x\n\n倡)+x\n\n倡ε(y\n\n倡)\n\n倡y\n\n倡ε(x\n\n倡)+x\n\n倡ε(y\n\n倡)\n\n倡≤y\n\n倡\n\nε x\n\n", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:024", + "course_id": "computing_methods", + "query": "考试会怎么考电子版教材-仅供学生参考-勿对外分享?,见第16页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p16:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 16, + "text_sha256": "ca1a0e3c9c2982c944e69405f358ca3ecd9ab5e70454259b5c26cf4b56f2260b", + "text_excerpt": "9\n1 误  差\n\n抄f(x\n\n倡\n1,x\n\n倡\nn )\n抄xi\n\n倡\n2,…,x\n\nn\n\n倡)≈∑\n\ne(y\n\ne(x\n\n倡\ni )\n\ni =1\n\n抄f(x\n\n倡\n1,x\n\n倡\nn )\n抄xi\n\n倡\n2,…,x\n\nn\n\n倡)≈∑\n\ner(y\n\ne(x\n\n倡\ni )\ny\n\n倡\n\ni =1\n\n抄f(x\n\n倡\n1,x\n\n倡\nn )\n抄xi\n\n倡\n2,…,x\n\nn\n\n倡)≈∑\n\nε(y\n\nε(x\n\n倡\ni )\n\ni =1\n\n抄f(x\n\n倡\n1,x\n\n倡\nn )\n抄xi\n\n倡\n2,…", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:025", + "course_id": "computing_methods", + "query": "电子版教材-仅供学生参考-勿对外分享主要讲什么?,见第17页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p17:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 17, + "text_sha256": "546d427d032ee383160d004744952a0bd9659d339840963835ab7bd256a79774", + "text_excerpt": "0\n1\n数值分析\n\n这说明变换公式后能使有效数字位由1位增加到3位.\n\n1畅5畅0畅2 要防止小数被大数“吃掉”而使有效数字位损失\n\n在数值计算中,如果两个参与计算的数相差太大,则小数有可能被大数“ 吃\n\n掉”而使有效数字位损失,从而影响计算结果的可靠性.\n\n例1 -9 求一元二次方程ax\n\n2+bx +c =0的根.\n\n解 求一元二次方程的根可以使用公式\n\nx1=-b +\nb\n\n2-4ac\n2a\n  x2=-b -\nb\n\n2-4ac\n2a\n\n但是,如果b\n\n2远远大于4ac", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:026", + "course_id": "computing_methods", + "query": "我想先复习电子版教材-仅供学生参考-勿对外分享,应该从哪里开始?,见第18页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p18:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 18, + "text_sha256": "ebfaae5d6b6c6b846b19daee3c3d858986d36c29c5269eb32a8d55e10b0cb719", + "text_excerpt": "1\n1\n1 误  差\n\nmn =an\n\nmk =xmk +1+ak (k =n -1,n -2,…,1,0)\n\npn(x)=m0\n则计算n 次多项式的值只需n 次乘法和n 次加法.\n\n这个算法就是著名的秦九韶算法.\n\n1畅5畅0畅4 避免做除数绝对值远远小于被除数绝对值的除法\n\n很显然,用绝对值较小的数去除绝对值较大的数,得到的数一定会较大,有可\n\n能会产生溢出错误.如果不溢出,也有可能使舍入误差严重增大,导致最后结果不\n\n可靠.\n\n例1 -11 求解方程组\n\n0畅0003x", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:027", + "course_id": "computing_methods", + "query": "复习电子版教材-仅供学生参考-勿对外分享时哪些内容最重要?,见第19页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p19:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 19, + "text_sha256": "18d4016b85b076cdffd74a9a6839312414a8fb7b886c93a561213d660c700275", + "text_excerpt": "2\n1\n数值分析\n\n由此可知,按递推公式In =1-nIn -1(n =1,2,…)采用正向递推求In 的值时,\n\n误差传播逐步增大,In 与I\n\n倡\n0的误差的n!倍.这说明,按给定的递\n\n倡\nn 的误差是I0与I\n\n推公式采用正向递推计算In 的值是不稳定的.\n\n由递推公式In =1-nIn -1(n =1,2,…)有\n\nIn -1=1\n\nn (1-In)\n\n倡\nn ,则In -1的近似值\n\n若已知In 的近似值为I\n\n倡\nn -1=1\n\nn (1-I\n\n倡\nn )\n\nI", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:028", + "course_id": "computing_methods", + "query": "电子版教材-仅供学生参考-勿对外分享里的方法或结论怎么理解?,见第20页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p20:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 20, + "text_sha256": "f230259e54dfc5ce8e0b4104f53fde9eb7da426fe51035d4c8f5f85b06887a69", + "text_excerpt": "3\n1\n1 误  差\n\n6畅下面各数x1=1畅21,x2=0畅05,x3=10畅380是按四舍五入原则得到的近似\n\n值.试估计x1+x2+x3和x1x2x3的相对误差限.\n\n7畅设有一个长方形的水池,经测量得知它的长为50m,宽为25m,深为20m,\n\n它们的误差限都为0畅01m.求该水池容积近似值的误差、误差限、相对误差和相对\n\n误差限.\n\n8畅已知求三角形面积公式为\n\nS =1\n\n2absinc\n\n其中c 为弧度,0<c <π\n\n2.而且假定测量a,b,c 时的误差分别为", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:029", + "course_id": "computing_methods", + "query": "学习电子版教材-仅供学生参考-勿对外分享时哪些概念容易混淆?,见第21页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p21:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 21, + "text_sha256": "c3affca026a3a39a7d61d4253c185a36b90a3099e6c185ae8aea2d45bc82d069", + "text_excerpt": "2 代数插值与数值微分\n\n在工程技术中,经常会遇到只给定一个函数表,要求根据该函数表求出某些点\n\n上函数值的问题.\n\n例如,某气象台经过气象探测得到高度与大气压的一些数据,这些数据如表\n\n2-1所示.\n\n表2-1 高度与大气压的探测数据\n\n表2-2 函数表\n\nx(高度)\n0\n1畅5\n2畅5\n3\n4畅8\n\nx\nx0\nx1\n…\nxn\n\ny =f(x)(大气压)\n1\n0畅9\n0畅85\n0畅7\n0畅67\n\ny =f(x)\ny0\ny1\n…\nyn\n\n表2-1表示了高度与大气压的函数关系.", + "flags": [] + } + ] + }, + { + "legacy_id": "computing_methods:030", + "course_id": "computing_methods", + "query": "考试会怎么考电子版教材-仅供学生参考-勿对外分享?,见第22页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "computing-methods-002:p22:c01", + "exists": true, + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "locator_type": "page", + "locator_start": 22, + "text_sha256": "591268d0d49982a8416c34c43b43190a55b8d6d6b1b6c920ddd929b9fd6f3603", + "text_excerpt": "5\n1\n2 代数插值与数值微分\n\n其中,x0和x1称为插值节点;f(x)称为被插值\n\n表2-3 线性插值函数表\n\n函数;p1(x)称为线性插值函数;条件①和②称\n\nx\nx0\nx1\n\n为插值条件.\n\ny =f(x)\ny0\ny1\n\n线性插值的目的是构造p1(x)来近似代替\n\nf(x).当求某一点x\n\n倡的函数值f(x\n\n倡)时,可以用\n\np1(x\n\n倡)来近似代替f(x\n\n倡).\n\n因为p1(x)满足插值条件②,所以线性插值\n\n的几何意义是用过(x0,y0)和(x1,y1)两点的", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:001", + "course_id": "cpp", + "query": "非应试笔记主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-002:h-c-非应试笔记-全-开源:c01", + "exists": true, + "source_id": "cpp-002", + "source_title": "C++非应试笔记(全:开源)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "bd46c6d58cce4be8f4562a9d90ad8a309128ccfa5e50746271d591d1e882d1dc", + "text_excerpt": "```cpp\n#include\nusing namespace std;\n//一、构造函数与初始化\n//1.构造函数与类同名 eg. stock::stock\n//其中有两种,第一种是只创建一个类\n//stock::stock()\n//{\n//ch=\" \";\n//a=0;\n//};\n//另一种是带值创建stock::stock(int a,...)\n//{\n// =a;\n//};\n//一般会默认是第一种,但如果写了第二种,第一种也要自己写\n// 注意,当", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:002", + "course_id": "cpp", + "query": "我想先复习body,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "replacement_character_in_source" + ], + "evidence": [ + { + "chunk_id": "cpp-003:h-body:c01", + "exists": true, + "source_id": "cpp-003", + "source_title": "body", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "c951dbc4829e989cbbdf233c51a4cb306cfe36ca97d30b4556eb7a1993be5fe5", + "text_excerpt": "```cpp\n#define _CRT_SECURE_NO_WARNINGS //��ֹvs����c�����еĺ���\n//#include\n//#include\n//using namespace std;\n////structĬ��Ϊ���У�classĬ��Ϊ˽��\n//\n//class circle //���һ��Բ�࣬���ܳ�\n//{\n//\n//public:\n//\tint r;\n//\tconst double PI ", + "flags": [ + "replacement_character_in_source" + ] + } + ] + }, + { + "legacy_id": "cpp:003", + "course_id": "cpp", + "query": "复习基础部分时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "replacement_character_in_source" + ], + "evidence": [ + { + "chunk_id": "cpp-004:h-基础部分:c01", + "exists": true, + "source_id": "cpp-004", + "source_title": "基础部分", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "c148d28b4c9b7e1be6d2c83eee3f7866feee1f1e9d83c09f04a10e7fe447067d", + "text_excerpt": "```cpp\n#include\nusing namespace std;\n//һ�����캯�����ʼ��\n//1.���캯������ͬ�� eg. stock::stock\n//���������֣���һ����ֻ����һ����\n//stock::stock()\n//{\n//ch=\" \";\n//a=0;\n//};\n//��һ���Ǵ�ֵ����stock::stock��int a,...)\n//{\n// =a;\n//};\n//һ���Ĭ��", + "flags": [ + "replacement_character_in_source" + ] + } + ] + }, + { + "legacy_id": "cpp:004", + "course_id": "cpp", + "query": "实践题一里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-005:h-实践题一:c01", + "exists": true, + "source_id": "cpp-005", + "source_title": "10.8测试", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ab58c383bb999cb68c6094449a85e6de530b9d9bcad35505a7b8a638310630a6", + "text_excerpt": "(2)编辑时间:3’42”\n\n运行时间:2303毫秒\n\n(3)分析原因:第一组满足三角条件 出现:area=6\n\n第二组不满足两边之和大于第三边 出现:area=-nan(ind)\n\n第三组出现边长为0 出现:area=-nan(ind)\n\n第四组出现边长为-2 出现:area=-0\n\n解决方案:在原方案基础上套上一个if条件判断,来避免错误数据进入程序输出,具体如下:\n\n#include\n\n#include\n\nusing namespa", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:005", + "course_id": "cpp", + "query": "学习实践题二时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-005:h-实践题二:c01", + "exists": true, + "source_id": "cpp-005", + "source_title": "10.8测试", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "1e54cb8eac4b6e1c9beeb4435222757da0b85cf1e3e24278cf42eeeb8649bf95", + "text_excerpt": "1. **i进行到2时,term** **值依然为** **0。此后** **sum** **值不再变化,因此循环不会再进行下去。**\n1. **i值为2。在** **while** **前设置断点,打印i的值或在调试窗口中查看。还有一种是在VS2022点击调试-监视-监视i(1)**\n1. **将term的初始值修改为1.0**", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:006", + "course_id": "cpp", + "query": "考试会怎么考实验作业?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "cpp-006:s1:c01", + "exists": true, + "source_id": "cpp-006", + "source_title": "10.8测试", + "locator_type": "slide", + "locator_start": 1, + "text_sha256": "38b7415760a12016c6ca696ba63074b321d7a33cccdf899a64f1becc91b47ea8", + "text_excerpt": "- 1:调制程序技巧\n- 2:设置断点技巧\n- 3:OJ系统使用技巧", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "cpp:007", + "course_id": "cpp", + "query": "实验作业主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-006:s2:c01", + "exists": true, + "source_id": "cpp-006", + "source_title": "10.8测试", + "locator_type": "slide", + "locator_start": 2, + "text_sha256": "6fb6985f79e5ebfb1c4dca68c85bd42e825ae7e46b03d96b4890d441e56f39e2", + "text_excerpt": "![image](assets/cpp-006/image-001.png)\n- 调制程序是指对程序代码进行修改、优化或改进的过程。\n- 对于像我一样的C++初学者,我认为调制程序具有三大技巧:提高代码可读性;内存管理;测试与调试\n- 提高代码可读性\n- 初学阶段,最重要的是养成良好的编码习惯,例如上课时候讲的合理命名变量及函数,以及如括号格式的安排,如下图所示,这是我业余时间写的一个猜数字游戏,含有多重条件语句。如果括号乱排,很容\n![image](assets/cpp-0", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:008", + "course_id": "cpp", + "query": "我想先复习实验作业,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-006:s3:c01", + "exists": true, + "source_id": "cpp-006", + "source_title": "10.8测试", + "locator_type": "slide", + "locator_start": 3, + "text_sha256": "eba0ff90a8805116ad834da1db37bb3a06ae2cc631530b25f6e75b97f037cdec", + "text_excerpt": "![image](assets/cpp-006/image-003.png)\n- 内存管理\n- 例如int和double,这两个字节不同,但有时候其实可以表达同一个变量的数据类型,我们可以把整形数据用int表达,进而节省4字节的空间。\n- 由于C++缺点就是效率较低,因此,会内存管理无疑是一个必备技能来提升效率。\n- 测试与调试\n- 这需要我们逐步测试和调试程序,查找和修复可能存在的错误和问题,并保证程序的正确性和稳定性。\n- 于此,我们不得不谈断点的使用技巧。", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:009", + "course_id": "cpp", + "query": "复习实验作业时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-006:s4:c01", + "exists": true, + "source_id": "cpp-006", + "source_title": "10.8测试", + "locator_type": "slide", + "locator_start": 4, + "text_sha256": "adf1a336eb6a811526479e21193ed7bed086ade3950059de56b687684a9423a6", + "text_excerpt": "![image](assets/cpp-006/image-004.png)\n- 断点的使用,我认为现阶段只需要掌握七个即可。\n - 设置断点:在需要暂停程序执行的地方,通常是在代码的关键位置或者有问题的地方设置断点。可以在代码编辑器中点击行号旁边的空白区域或使用调试工具提供的命令来设置断点。\n - 条件断点:除了在特定的位置设置断点外,也可以设置条件断点。条件断点只有在满足特定条件时才会触发。这在需要观察特定条件下程序的行为时很有用。\n - 启用/禁用断点:当不需要某", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:010", + "course_id": "cpp", + "query": "实验作业里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-006:s5:c01", + "exists": true, + "source_id": "cpp-006", + "source_title": "10.8测试", + "locator_type": "slide", + "locator_start": 5, + "text_sha256": "fe21c048bd2728e77f7ff42821348b5f0da22a4278402a887dbc9461366b70cf", + "text_excerpt": "![image](assets/cpp-006/image-005.png)\n- OJ平台,目前我们使用的方面是提交C++作业和C++上机测试,但二者操作技巧基本相同。\n- 首先我们需要牢记一个必须,三个基准\n- 一个必须是指必须记住网址!!!222.201.144.175!!\n- 三个基准是:登录好自己的学生号,选择好自己的课程,点击对自己的项目\n- 然后提交作业后发现错误,可以进入提交界面,直接开始编辑自己上次的代码\n- 如是操作,OJ平台会变成有利于我们学习C++的制胜", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:011", + "course_id": "cpp", + "query": "学习题目时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-007:h-题目:c01", + "exists": true, + "source_id": "cpp-007", + "source_title": "题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a60167293cd792699161907266a10e21eb737fad34cc56e2d9e1672f5b60455b", + "text_excerpt": "```text\n题目描述\n构造一个类层次结构,用来对影片的制作进行跟踪管理,这些影片包括一些特殊的影片,如外国影片、导演的影片剪辑(directors cut, 表示因剪辑而产生的不同影片版本)。由于所有的影片都具有标题、导演、时间和等级(0星到4星)等共同属性,需要设计一个基类Film,该类包含所有影片共同的属性及存取这些属性的成员函数,同时需要专门设计一个输出信息的成员函数。\n从基类Film派生出一个DirectorCut类,并为其添加一些数据成员用来存储影片修订时间、影", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:012", + "course_id": "cpp", + "query": "考试会怎么考A?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-008:h-a:c01", + "exists": true, + "source_id": "cpp-008", + "source_title": "A", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6d3c917d9cfc432717e221d4ebcf3dcf591f5272431171fe04ad6fc6b918675d", + "text_excerpt": "```text\n#include\n#include\nusing namespace std;\nclass Film\n{\npublic:\n void store_title(const string& t) { title = t; }\n void store_director(const string& d) { director = d; }\n void store_time(int t) { time = t; }\n ", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:013", + "course_id": "cpp", + "query": "B主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-009:h-b:c01", + "exists": true, + "source_id": "cpp-009", + "source_title": "B", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "b4775639621374c39f877fe992224f4702fb900f1843d4e25e1cf862b8017fda", + "text_excerpt": "```text\n#include \n#include \nusing namespace std;\n\nclass Film {\nprotected:\n string title;\n string director;\n int time;\n int quality;\n\npublic:\n virtual void input() {\n cout << \"Input title:\" << endl;\n ", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:014", + "course_id": "cpp", + "query": "我想先复习我想先复习我想先复习我想先复习我想先复习我想先看第14个知识点,应该从哪部分开始?,应该从哪里开始?,应该从哪里开始?,应该从哪里开始?,应该从哪里开始?,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-010:h-c:c01", + "exists": true, + "source_id": "cpp-010", + "source_title": "C++", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "f41cffc5942d6826830c9100fb611419dc3adf0d2bc65f4a1631dc04753246ae", + "text_excerpt": "```text\n//#include\n//#include\n//using namespace std;\n//\n//class Film\n//{\n//public:\n//\tvoid store_title(string title)\n//\t{\n//\t\tthis->title = title;\n//\t}\n//\tvoid store_director(string d)\n//\t{\n//\t\tdirector = d;\n//\t}\n//\tvoid s", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:015", + "course_id": "cpp", + "query": "复习C时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-011:h-c:c01", + "exists": true, + "source_id": "cpp-011", + "source_title": "C", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "001b6ba9dc569a114e1b75141960a710d56ab3915d7f9ac780979cf02c499ec3", + "text_excerpt": "```text\n#include\nusing namespace std;\nclass Complex\n{\npublic:\n // TODO: 重载 ==\n friend bool operator==(Complex& p1,Complex &p2);\n friend bool operator!=(Complex& p1, Complex& p2);\n friend Complex operator-(Complex& p1);", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:016", + "course_id": "cpp", + "query": "D里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-012:h-d:c01", + "exists": true, + "source_id": "cpp-012", + "source_title": "D", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "3f0825a1db24f227b7d7bf1ecdb4e94f0ebcac7ca2781617ec2036ff92016602", + "text_excerpt": "```text\n#include\n#include\nusing namespace std;\nclass Student\n{\nprivate:\n\tint id;//以后都用int!\n\tstring name;\n\tdouble hw;\n\tdouble midterm;\n\tdouble final;\n\tstatic double couscore1;\n\npublic:\n\tStudent();\n\tStudent(int a, string b,d", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:017", + "course_id": "cpp", + "query": "学习E时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-013:h-e:c01", + "exists": true, + "source_id": "cpp-013", + "source_title": "E", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "1475703ae8819d0c54dfb2282010e44446930eaaec7bc9da4539d443ae1f08d8", + "text_excerpt": "```text\n#include \n#include \n\nusing namespace std;\n\nclass Student {\nprivate:\n int id;\n string name;\n double hwGrade;\n double midtermGrade;\n double finalGrade;\n\npublic:\n Student(int _id, string _name, doubl", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:018", + "course_id": "cpp", + "query": "考试会怎么考F?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-014:h-f:c01", + "exists": true, + "source_id": "cpp-014", + "source_title": "F", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "474b6485773041fb47d0805ad2665fe7f8bfd94aa54a35a658ff86f215c97dcd", + "text_excerpt": "```text\n#include \n#include \n\nusing namespace std;\n\nclass Student {\nprotected:\n int id;\n string name;\n double practiceCredits;\n double courseCredits;\n\npublic:\n Student(int _id, string _name, double _practiceC", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:019", + "course_id": "cpp", + "query": "这张截图 140657主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "cpp-015:h-屏幕截图-2-140657:c01", + "exists": true, + "source_id": "cpp-015", + "source_title": "屏幕截图 2 140657", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "150b757e58f0d78adb735ef80beb64bff62a11d2fba2d83ca14b4cccaa93b027", + "text_excerpt": "![page-001.png](assets/cpp-015/page-001.png)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "cpp:020", + "course_id": "cpp", + "query": "我想先复习这张截图 140511,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "cpp-016:h-屏幕截图-2024-04-25-140511:c01", + "exists": true, + "source_id": "cpp-016", + "source_title": "屏幕截图 2024-04-25 140511", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "d782aab6ba450c722493b51d2bea7a84ffd65ff1263ec40172e4c49ef915ad56", + "text_excerpt": "![page-001.png](assets/cpp-016/page-001.png)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "cpp:021", + "course_id": "cpp", + "query": "复习最后一题图片时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "cpp-017:h-最后一题图片:c01", + "exists": true, + "source_id": "cpp-017", + "source_title": "最后一题图片", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "3475fb4789eff5e1f1d647b28f74fab189eaf15c2f864272778977d249e08b64", + "text_excerpt": "![page-001.png](assets/cpp-017/page-001.png)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "cpp:022", + "course_id": "cpp", + "query": "1里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-018:h-1:c01", + "exists": true, + "source_id": "cpp-018", + "source_title": "1", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "9f314ea763e6144199839648b84e2b16d16b15a4957daebf5737be47d3d6ddff", + "text_excerpt": "```cpp\n#include \"stm32f4xx_hal.h\"\n#include \n\nUART_HandleTypeDef huart2; // USART2用于RS-485通信\n#define RS485_DIR_PIN GPIO_PIN_12\n#define RS485_DIR_PORT GPIOB\n\n#define LED_PIN GPIO_PIN_0\n#define LED_PORT GPIOB\n\nuint8_t rxBuffer[256];", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:023", + "course_id": "cpp", + "query": "学习Jimmy的学习计划时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-019:h-jimmy的学习计划:c01", + "exists": true, + "source_id": "cpp-019", + "source_title": "Jimmy的学习计划", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0b75d2fcaa83687369995f547571709e45489f2f0da6fa762cc9d7b053c12e10", + "text_excerpt": "```cpp\n#include \n#include \n#include \nusing namespace std;\n\nint read() {\n int x = 0;\n char c = getchar();\n while (c < '0' || c > '9') {\n c = getchar();\n }\n while (c >= '0' && c <= '9') {\n ", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:024", + "course_id": "cpp", + "query": "考试会怎么考摘果子?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-020:h-摘果子:c01", + "exists": true, + "source_id": "cpp-020", + "source_title": "摘果子", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a77ac07a5e55cb3df4520878d11a1a5ecbde97fd252e11b5ef6922f8f276fac2", + "text_excerpt": "```cpp\n#include \n#include \n#include \nusing namespace std;\nusing ll = long long;\n\nconst int MAXN = 105;\nll f[MAXN], d[MAXN], t[MAXN];\nint n, h;\n\n// 计算在某个果树停留k个5分钟能获得的果子数量\nll get_fruits(int tree, int k) {\n ll total", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:025", + "course_id": "cpp", + "query": "最小生成树主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-021:h-最小生成树:c01", + "exists": true, + "source_id": "cpp-021", + "source_title": "最小生成树", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "7789f1d5149d89e5414c6534ddb4548bee125dfaa481c0c5b4daaa65c7880c3a", + "text_excerpt": "```cpp\n#include \n#include \n#include \nusing namespace std;\n\n// 边的结构体\nstruct Edge {\n int u, v, w;\n Edge(int _u, int _v, int _w) : u(_u), v(_v), w(_w) {}\n bool operator<(const Edge& other) const {\n ", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:026", + "course_id": "cpp", + "query": "我想先复习签到,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-022:h-签到:c01", + "exists": true, + "source_id": "cpp-022", + "source_title": "签到", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5a67a172adeeb62dd9320c5409a3f69e4ad068df2160f644c37c8fd822569dce", + "text_excerpt": "```cpp\n#include \nusing namespace std;\n\nint main() {\n int t;\n cin >> t;\n while (t--) {\n long long x, y;\n cin >> x >> y;\n \n int count = 0;\n while (x != y) {\n if (x < y) {\n ", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:027", + "course_id": "cpp", + "query": "复习签到时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-023:h-签到:c01", + "exists": true, + "source_id": "cpp-023", + "source_title": "签到", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "df42b2842f20f9dc41533fe97013b6637306ee9df44386d1251ee583b3e989e6", + "text_excerpt": "```cpp\n#include \n#include \n#include \nusing namespace std;\n\nint main() {\n ios::sync_with_stdio(false);\n cin.tie(nullptr);\n \n int t;\n cin >> t;\n vector> intervals(t);\n ", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:028", + "course_id": "cpp", + "query": "精明的商人里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-024:h-精明的商人:c01", + "exists": true, + "source_id": "cpp-024", + "source_title": "精明的商人", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "9fca32a7c21f5761354e46b3926f2bad8650a6328f59191b79c88b5cee34d581", + "text_excerpt": "```cpp\n#include \n#include \n#include \n#include \n#include \n\nint calculateDissatisfaction(long long price) {\n std::string priceStr = std::to_string(price);\n while (!priceStr.empty() && priceStr.b", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:029", + "course_id": "cpp", + "query": "学习自习时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-025:h-自习:c01", + "exists": true, + "source_id": "cpp-025", + "source_title": "自习", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "dc3473a914ed0e9febada294c9f4d2d489b9f21291f0131533cab93c79d6c5ab", + "text_excerpt": "```cpp\n#include \n#define ll long long\nusing namespace std;\nll a[300010],b[300010];\nll n, m;\n\n// 上取整函数\nll ceil(ll x, ll y) {\n return (x + y - 1) / y;\n}\n\n// 检查是否能让所有课程的熟练度都达到k\nbool check(ll k) {\n // 计算每门课程需要的最少周数\n ll need[3", + "flags": [] + } + ] + }, + { + "legacy_id": "cpp:030", + "course_id": "cpp", + "query": "考试会怎么考跳一跳?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "cpp-026:h-跳一跳:c01", + "exists": true, + "source_id": "cpp-026", + "source_title": "跳一跳", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "2f165df6af00210bbf34f2f436804b3e21bd0f425d2e7f804718c59821a5b790", + "text_excerpt": "```cpp\n#include \n#include \nusing namespace std;\n\nint main() {\n int n;\n cin >> n;\n vector nums(n);\n \n // 读取输入数组\n for(int i = 0; i < n; i++) {\n cin >> nums[i];\n }\n \n int maxReach = 0; ", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:001", + "course_id": "data_structure", + "query": "关于二分双数组—冒泡排序算法的研究主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c01", + "exists": true, + "source_id": "data-structure-001", + "source_title": "关于二分双数组—冒泡排序算法的研究", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fa87f87f56467c2cfdab680448cc87db92b46b94c5a9afdb9c896e37eb3d90c2", + "text_excerpt": "关于对排序的自创方案\n\n——平衡分治思想及切换排序的应用\n\n202330453151 于博宇 计科一班\n\n目录\n\n摘要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2\n\n关键词 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2\n\n核心思想 . ", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:002", + "course_id": "data_structure", + "query": "我想先复习关于二分双数组—冒泡排序算法的研究,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02", + "exists": true, + "source_id": "data-structure-001", + "source_title": "关于二分双数组—冒泡排序算法的研究", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "4f4dec11d71f0f3c1530c89752f803eada206dbac47084ddb295bbc3a3e5c87b", + "text_excerpt": "“二分数组——快速排序算法”的核心思想是将原始数组分成两个部分:小数组和大数组。初始时,选择数组中的两个元素作为分界点,大数插入到大数组的最小分界位;小数插入到小数组中的最大分界位。对于后续的每个元素,根据其与2个分界点的关系,插入到相应的数组中。通过这种方法,我们可以**干净利落的把原始数组分成大数及小数两份**。\n\n具体的后续插入方案是:如果元素位于两个分界点之间,则根据小数组和大数组的插入次数,选择插入次数较少的数组,并更新相应的分界点。通过这种方式,算法能够在递归过程", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:003", + "course_id": "data_structure", + "query": "复习关于二分双数组—冒泡排序算法的研究时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c03", + "exists": true, + "source_id": "data-structure-001", + "source_title": "关于二分双数组—冒泡排序算法的研究", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "dcb5e4e88885d819868e9aab1d66501407b4fc4756ddb6940520a7086e64fc73", + "text_excerpt": "通过比较小数组和大数组的插入次数,算法能够尽量保持两个数组的平衡,从而提高排序效率。相比之下,快速排序在处理已经部分有序的数据时,可能会导致不平衡的分区,从而影响性能。\n\n稳定性:\n\n在数组大小小于特定阈值时,算法切换到 std::sort,确保了排序的稳定性。快速排序本身是不稳定的排序算法。\n\n适应性:\n\n算法在处理不同类型的数据分布时,可能会有更好的适应性。例如,在处理包含大量重复元素的数据时,可能会表现得更好,因为它可以根据插入次数动态调整数组大小\n\n**劣势**\n\n复", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:004", + "course_id": "data_structure", + "query": "sort times里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "data-structure-002:h-sort_times:c01", + "exists": true, + "source_id": "data-structure-002", + "source_title": "sort_times", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "bd3dc4d8a7804af019e6a7c3c5c1c3348e2fad45ab6fa136cfa9ba8ebbcb49fd", + "text_excerpt": "```text\n498\n517\n464\n411\n335\n218\n304\n205\n178\n149\n220\n189\n114\n117\n118\n117\n213\n185\n134\n131\n173\n178\n155\n195\n130\n96\n137\n166\n98\n166\n150\n142\n167\n129\n187\n122\n114\n89\n98\n96\n133\n114\n83\n102\n148\n86\n125\n80\n86\n116\n166\n181\n190\n170\n160\n148\n165\n162\n179\n138\n8", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:005", + "course_id": "data_structure", + "query": "学习contrary时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "replacement_character_in_source" + ], + "evidence": [ + { + "chunk_id": "data-structure-003:h-contrary:c01", + "exists": true, + "source_id": "data-structure-003", + "source_title": "contrary", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "bef1dd56d1a76589c67db301c9355cd8ef3edff0ccf5146d53b63727e6eb34b8", + "text_excerpt": "```cpp\n//#include \n//#include \n//#include // ���� std::merge �� std::sort\n//#include // ���ڲ���ʱ��\n//#include // �����ļ�����\n//#include // ���� std::numeric_limits\n//\n//// ��������\n/", + "flags": [ + "replacement_character_in_source" + ] + } + ] + }, + { + "legacy_id": "data_structure:006", + "course_id": "data_structure", + "query": "考试会怎么考sort faster?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "replacement_character_in_source" + ], + "evidence": [ + { + "chunk_id": "data-structure-004:h-sort_faster:c01", + "exists": true, + "source_id": "data-structure-004", + "source_title": "sort_faster", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ff5c73f5426ef32f349a51eeb26db05aaa38e774058c22b265477b730632c66a", + "text_excerpt": "```cpp\n#include \n#include \n#include // ���� std::merge �� std::sort\n#include // ���ڲ���ʱ��\n#include\n\n// �Դ������㷨\nvoid customsort(std::vector& arr, int threshold) {\n if (arr.size() <= ", + "flags": [ + "replacement_character_in_source" + ] + } + ] + }, + { + "legacy_id": "data_structure:007", + "course_id": "data_structure", + "query": "1主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "replacement_character_in_source" + ], + "evidence": [ + { + "chunk_id": "data-structure-005:h-1:c01", + "exists": true, + "source_id": "data-structure-005", + "source_title": "1", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "e14cd37a69abcf84bd2ad8f90388b631ed4a8127a48c0b2c6c565ab96abc9fe1", + "text_excerpt": "```cpp\n#include \n#include \n#include \n#include\ntemplate\nclass Set {\npublic:\n virtual void Insert(const Elem& e) = 0;\n virtual bool Remove(const Elem& e) = 0;\n virtual bool GetFirstElemen", + "flags": [ + "replacement_character_in_source" + ] + } + ] + }, + { + "legacy_id": "data_structure:008", + "course_id": "data_structure", + "query": "我想先复习2,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "data-structure-006:h-2:c01", + "exists": true, + "source_id": "data-structure-006", + "source_title": "2", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "663bd100aff9a5bc471dc568dce6ca0539902ff1601dfe0c13a334e811f49d2d", + "text_excerpt": "```cpp\n//#include \n//#include \n//#include \n//\n//using namespace std;\n//\n//int main() {\n// int T;\n// cin >> T; // Read the number of test cases\n// cin.ignore(); // Ignore the newline character after th", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:009", + "course_id": "data_structure", + "query": "复习3时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "data-structure-007:h-3:c01", + "exists": true, + "source_id": "data-structure-007", + "source_title": "3", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "76d636da37c4986b4cfeff539c4d0f684feb67c39b4c1348d89180d14ecb4210", + "text_excerpt": "```cpp\n//#include \n//#include \n//\n//using namespace std;\n//\n//struct ListNode {\n// int val;\n// ListNode* next;\n// ListNode(int x) : val(x), next(nullptr) {}\n//};\n//\n//// Function to create a linked list from a vec", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:010", + "course_id": "data_structure", + "query": "4里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "replacement_character_in_source" + ], + "evidence": [ + { + "chunk_id": "data-structure-008:h-4:c01", + "exists": true, + "source_id": "data-structure-008", + "source_title": "4", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5168ef4d902356c3149eac53e4721d7c4264fe0604f98e959d9352bf111b0259", + "text_excerpt": "```cpp\n//#include \n//#include // ���� set\n//\n//template\n//class Set {\n//public:\n// virtual void Insert(const Elem& e) = 0;\n// virtual bool Remove(const Elem& e) = 0;\n// virtual bool GetFirstElement(Elem", + "flags": [ + "replacement_character_in_source" + ] + } + ] + }, + { + "legacy_id": "data_structure:011", + "course_id": "data_structure", + "query": "学习ConsoleApplication时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "data-structure-009:h-consoleapplication:c01", + "exists": true, + "source_id": "data-structure-009", + "source_title": "ConsoleApplication", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "f221472ad0a3ade913409f45089d9bb461f0b4d48de42b050ba890fd77f8bc10", + "text_excerpt": "```cpp\n\n```", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "data_structure:012", + "course_id": "data_structure", + "query": "考试会怎么考2011级试卷A及答案?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "data-structure-010:h-2011级数据结构试卷a及答案:c01", + "exists": true, + "source_id": "data-structure-010", + "source_title": "2011级数据结构试卷A及答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "4c363b44a8e1bc66afb76434259e55da1f0149718376c74556eab95b002171e7", + "text_excerpt": "**诚信应考,考试作弊将带来严重后果!**\n\n**华南理工大学期末考试**\n\n**《** **Data Structure** **》试卷** **A**\n\n**注意事项:1.** **考前请将密封线内填写清楚;**\n\n**2.** **所有答案请答在答题纸上;**\n\n**3.考试形式:闭卷;**\n\n**4.** **本试卷共十大题,满分100分,考试时间120分钟**。\n\n| **题 号** | **一** | **二** | **三** | **四** | **五**", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:013", + "course_id": "data_structure", + "query": "2011级试卷A及答案主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "data-structure-010:h-2011级数据结构试卷a及答案:c02", + "exists": true, + "source_id": "data-structure-010", + "source_title": "2011级数据结构试卷A及答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "bf2f9091ee0220566234a7834f1e83df4ef6d54f74fb553046a4933fc037e832", + "text_excerpt": "(4) Which statement is not correct among the following four: ( C )\n- The Quick-sort is an unstable sorting algorithm.\n- The number of empty sub-trees in a non-empty full binary tree is one more than the number of nodes in the", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:014", + "course_id": "data_structure", + "query": "我想先复习2011级试卷A及答案,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "data-structure-010:h-2011级数据结构试卷a及答案:c03", + "exists": true, + "source_id": "data-structure-010", + "source_title": "2011级数据结构试卷A及答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "2c838933a904b8624ded4784e5a615922366b2bedb7b46b09e150ceab6f975a6", + "text_excerpt": "(7) Given an array as A[m] [n]. Supposed that *A* [0] [0] is located at 644(10) and *A* [2] [2] is stored at 676(10), and every element occupies one space. “(10)” means that the number is presented in decimals. Then the eleme", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:015", + "course_id": "data_structure", + "query": "复习2011级试卷A及答案时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "data-structure-010:h-2011级数据结构试卷a及答案:c04", + "exists": true, + "source_id": "data-structure-010", + "source_title": "2011级数据结构试卷A及答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "942a61369a01481c915989d1e0ec06b633f12dc35c16f0fe92445be1c30bb497", + "text_excerpt": "(10) Assume that we have eight records, with key values A to H, and that they are initially placed in alphabetical order. Now, consider the result of applying the following access pattern: F D F G E G F A D F G E if the list is organized", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:016", + "course_id": "data_structure", + "query": "能把Fill the blank with correct C++ codes: (16 scores) (1) Given an array storing integers ordered by distinct val的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "data-structure-010:q-data-structure-010-q1:c01", + "exists": true, + "source_id": "data-structure-010", + "source_title": "2011级数据结构试卷A及答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ca604901f6d09f488b3b91a30f4bbab1ac4b21608d250d521a712f5081c31edd", + "text_excerpt": "2. Fill the blank with correct C++ codes: (16 scores)\n\n(1) Given an array storing integers ordered by distinct value without duplicate, modify the binary search routines to return the position of the integer with the greatest va", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:017", + "course_id": "data_structure", + "query": "做这段双重循环的时间复杂度是多少时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "data-structure-010:q-data-structure-010-q1:c02", + "exists": true, + "source_id": "data-structure-010", + "source_title": "2011级数据结构试卷A及答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "f3ea00feaf7c207e159ed9c5bef84117e2115154dd02bdb0aaf2669a5f0ed4c1", + "text_excerpt": "The number of nodes in a complete binary tree as big as possible with height h is 2h-1(suppose 1-node tree’s height is 1) (3 scores)\n\n(3) The number of different shapes of binary trees with 6 nodes is _132. (3 scores)\n\n3. A certain bin", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:018", + "course_id": "data_structure", + "query": "这类题一般怎么考?能用这段双重循环的时间复杂度是多少举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "data-structure-010:q-data-structure-010-q2:c01", + "exists": true, + "source_id": "data-structure-010", + "source_title": "2011级数据结构试卷A及答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "b767b875f8976a1575d6a2c32440ed0099f879723f6b8dc364f6dba33e519cbc", + "text_excerpt": "(1) sum=0;\n\nfor (i=0; i<5; i++)\n\nfor (j=0; j 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "data-structure-010:q-data-structure-010-q3:c01", + "exists": true, + "source_id": "data-structure-010", + "source_title": "2011级数据结构试卷A及答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "dee378c973ddacf790e0d69b03f13daa87843e386efffb3c1f7b67cdc11c8492", + "text_excerpt": "(2) sum = 0;\n\nfor(i=1;i<=n;i++)\n\nfor(j=n;j>=i;j--)\n\nsum++; solution : Θ__(n2)________", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:020", + "course_id": "data_structure", + "query": "做这段双重循环的时间复杂度是多少时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "data-structure-010:q-data-structure-010-q4:c01", + "exists": true, + "source_id": "data-structure-010", + "source_title": "2011级数据结构试卷A及答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "052cdb2a0b2cb76c62b176444f8762392d13144c94e4f50e7c33406feb2947b9", + "text_excerpt": "(3) sum=0;\n\nif (EVEN(n))\n\nfor (i=0; i 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "data-structure-010:q-data-structure-010-q4:c02", + "exists": true, + "source_id": "data-structure-010", + "source_title": "2011级数据结构试卷A及答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cbd913574837b8be4f3e5a32ee4fafe39324232818b7a0b8d7fda3d3e5b2d7f6", + "text_excerpt": "7. Assume a disk drive is configured as follows. The total storage is approximately 675M divided among 15 surfaces. Each surface has 612 tracks; there are 144 sectors/track, 512 byte/sector, and 16 sectors/cluster. The interleaving factor i", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:022", + "course_id": "data_structure", + "query": "能把Using closed hashing, with double hashing to resolve collisions, insert the following keys into a hash table o的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "data-structure-010:q-data-structure-010-q4:c03", + "exists": true, + "source_id": "data-structure-010", + "source_title": "2011级数据结构试卷A及答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "63f70b1ce3d35af0c740dd0cb0d972bec981643dec8a991701f31f8df3ef0758", + "text_excerpt": "8. Using closed hashing, with double hashing to resolve collisions, insert the following keys into a hash table of eleven slots (the slots are numbered 0 through 10). The hash functions to be used are H1 and H2, defined below. You should sh", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:023", + "course_id": "data_structure", + "query": "做You are given a series of records whose keys are chars. The records arrive in the following order: C, S, D, T时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "data-structure-010:q-data-structure-010-q4:c04", + "exists": true, + "source_id": "data-structure-010", + "source_title": "2011级数据结构试卷A及答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "f7fd89795fde233752385d951d30ed59500db1f9ea15e96a9ea0a3f313f38ba4", + "text_excerpt": "9. You are given a series of records whose keys are chars. The records arrive in the following order: C, S, D, T, A, M, P, I, B, W, N, G, U, R. Show the 2-3 tree that results from inserting these records. (the process of your solution is r", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:024", + "course_id": "data_structure", + "query": "这类题一般怎么考?能用Draw the MST: It is a Hamilton path.举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "data-structure-010:q-data-structure-010-q5:c01", + "exists": true, + "source_id": "data-structure-010", + "source_title": "2011级数据结构试卷A及答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "8692ae12fcbb46d3af1f8450e2d1e41fca46e61d5675f7c79002affc3f9c2357", + "text_excerpt": "2. Draw the MST: It is a Hamilton path.", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "data_structure:025", + "course_id": "data_structure", + "query": "2012试卷A及答案主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "data-structure-011:h-2012数据结构试卷a及答案:c01", + "exists": true, + "source_id": "data-structure-011", + "source_title": "2012数据结构试卷A及答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fd6b3741a438e69bcd044e194c679ec750b612e93c4bc40f4df7d0b11e95916f", + "text_excerpt": "**诚信应考,考试作弊将带来严重后果!**\n\n**华南理工大学期末考试**\n\n**《** **Data Structure** **》A试卷**\n\n**注意事项:1.** **考前请将密封线内填写清楚;**\n\n**2.** **所有答案请直接答在试卷上;**\n\n**3.考试形式:闭卷;**\n\n**4.** **本试卷共十大题,满分100分,考试时间120分钟**。\n\n| **题 号** | **一** | **二** | **三** | **四** | **五** | *", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:026", + "course_id": "data_structure", + "query": "我想先复习2012试卷A及答案,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "data-structure-011:h-2012数据结构试卷a及答案:c02", + "exists": true, + "source_id": "data-structure-011", + "source_title": "2012数据结构试卷A及答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0cca00b5da15d4b7ab5abf9d46f3e6a8cccc55355870e9140508411703d6b00a", + "text_excerpt": "(4) Which is the realization of a data type as a software component: ( A )\n\n(A) An abstract data type (B) A real data type\n\n(C) A type (D)A data structure\n\n(5) We use the parent pointer representation for gener", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:027", + "course_id": "data_structure", + "query": "(7) In the hash function, collision refers to ( B ). Two elements have the same key value. Different keys are的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "data-structure-011:q-data-structure-011-q1:c01", + "exists": true, + "source_id": "data-structure-011", + "source_title": "2012数据结构试卷A及答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5800d8a6d2bbb905dc2674474d7d57268bc10b5140d1cda8c5d34399e6210431", + "text_excerpt": "(7) In the hash function, collision refers to ( B ).\n\n(A) Two elements have the same key value.\n\n(B) Different keys are mapped to the same position of hash table.\n\n(C) Two records have the same requiring number.\n\n(D) Data element", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:028", + "course_id": "data_structure", + "query": "能把(10) Assume that we have eight records, with key values A to H, and that they are initially placed in alphabet的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "data-structure-011:q-data-structure-011-q1:c02", + "exists": true, + "source_id": "data-structure-011", + "source_title": "2012数据结构试卷A及答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "80fb7d6a78841432404413b44f0d5e77fa253cc5f240bac32b34ddb946784cda", + "text_excerpt": "(10) Assume that we have eight records, with key values A to H, and that they are initially placed in alphabetical order. Now, consider the result of applying the following access pattern: F D F G E G F A D F G E if the list is organized ", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:029", + "course_id": "data_structure", + "query": "做Fill the blank with correct C++ codes: (18 scores) 1. Given an array storing integers ordered by value, modify时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "data-structure-011:q-data-structure-011-q2:c01", + "exists": true, + "source_id": "data-structure-011", + "source_title": "2012数据结构试卷A及答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "411892b091a4f17cdd48b0635e30ac7590ff7c0ca06ab55a84360275ce2abadd", + "text_excerpt": "2. Fill the blank with correct C++ codes: (18 scores)\n1. Given an array storing integers ordered by value, modify the binary search routines to return the position of the first integer with the least value greater than K when K itself do", + "flags": [] + } + ] + }, + { + "legacy_id": "data_structure:030", + "course_id": "data_structure", + "query": "这类题一般怎么考?能用The height of the shortest tree and the tallest tree with both n nodes is respectively _2_or n(n<2) and __n举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "data-structure-011:q-data-structure-011-q2:c02", + "exists": true, + "source_id": "data-structure-011", + "source_title": "2012数据结构试卷A及答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5a7352fa89b16d332719497930770f0ee6dff8b6524c85f2e77a2b027111f5e7", + "text_excerpt": "The height of the shortest tree and the tallest tree with both n nodes is respectively _2_or n(n<2) and __n_ , suppose that the height of the one-node tree is 1 ( 4 scores)\n\n3. Please calculate the number of binary trees in different", + "flags": [] + } + ] + }, + { + "legacy_id": "database:001", + "course_id": "database", + "query": "2012A试卷主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "database-001:h-2012-数据库系统概论-a试卷:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "60778e63a7696a1bb1c6dde78b2145c5acea0f513e83fb69ddae0b4a34c717e8", + "text_excerpt": "**诚信应考,考试作弊将带来严重后果!**\n\n**华南理工大学期末考试**\n\n**《数据库系统概论》A试卷答题纸**\n\n**注意事项:1.** **考前请将密封线内各项信息填写清楚;**\n\n**2.** **所有答案请直接答在答题纸;**\n\n**3.考试形式:闭卷;**\n\n**4.** **本试卷共 五 大题,满分100分,考试时间120分钟**。\n\n| **题 号** | **一** | **二** | **三** | **四** | **五** | **总分** |\n|", + "flags": [] + } + ] + }, + { + "legacy_id": "database:002", + "course_id": "database", + "query": "做自然连接的条件时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q1:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "b315a514d04fd12c87b6db9ea048c0b491bc148d0490ae572be640bd27013923", + "text_excerpt": "1. 进行自然联接运算的两个关系必须具有( )\n\nA.公共属性 B.相同关系名 C.相同属性个数\t\tD.相同关键字", + "flags": [] + } + ] + }, + { + "legacy_id": "database:003", + "course_id": "database", + "query": "数据库系统中的死锁故障类型的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q2:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "02fac2f63d062a81771cc91ecf4f2595d537123acc62b8db51e3a9034c29499c", + "text_excerpt": "1. 在数据库系统中死锁属于( )\n\nA.系统故障 B.程序故障 C.事务故障 \t\tD.介质故障\n1. 命令SELECT 学号,AVG(成绩) AS ‘平均成绩’ FROM XS_KC GROUP BY 学号 HAVING AVG(成绩)>=85,表示( )。\n\nA.查找XS_KC表中平均成绩在85分以上的学生的学号和平均成绩\n\nB.查找平均成绩在85分以上的学生\n\nC.查找XS_KC表中各科成绩在85分以上的学生\n\nD.", + "flags": [] + } + ] + }, + { + "legacy_id": "database:004", + "course_id": "database", + "query": "能把E-R图的三个基本要素的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q3:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "e1e8930a53cf73e96c1b635b427f516c6c01480adee41f6b2046181348342350", + "text_excerpt": "1. E-R图有三个要素,其中不包括( )\n\nA.实体 B.属性 C.实体之间的联系 D.实体标识符", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "database:005", + "course_id": "database", + "query": "做视图中保存的数据和定义时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q4:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "dd7a7ad61c7c7d7164a3fb8baf5e96fe56ece51cf6db3f260a1d4d954a321be9", + "text_excerpt": "1. 一般视图在数据库中只存放( )\n\nA.操作 B.对应的数据 C.定义 D.限制\n1. 设有一个关系:DEPT(DNO,DNAME),如果要找出倒数第三个字母为W,其他为任意字母的DNAME,则查询条件子句应写成 WHERE DNAME LIKE ( )\n\nA.'_ _W _%' B.'%W _ %' C.'%W _ _' D.' _ %W _ _'", + "flags": [] + } + ] + }, + { + "legacy_id": "database:006", + "course_id": "database", + "query": "这类题一般怎么考?能用候选码的定义和组成举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q5:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "470244f8514447905d3ad856c082e922ecfde94d527d1fc67d9d2a686f6b660a", + "text_excerpt": "1. 关系模型中,候选码( )\n\nA.可由多个任意属性组成 B.至多由一个属性组成\n\nC.可由一个或多个其值能惟一标识该关系模式中任何元组的属性组成\n\nD.以上都不是", + "flags": [] + } + ] + }, + { + "legacy_id": "database:007", + "course_id": "database", + "query": "关系模式设计的任务怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q6:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fae9dbdd0e4e37a6d99789cd2689c37f74eadec5802e6545cd12f487a8ed45f8", + "text_excerpt": "1. 在关系数据库设计中,设计关系模式是( )的任务。\n\nA.需求分析阶段 B.概念设计阶段 C.逻辑设计阶段 D.物理设计阶段", + "flags": [] + } + ] + }, + { + "legacy_id": "database:008", + "course_id": "database", + "query": "做两个事务并发执行的正确性判断时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q7:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "b16fc4f559c2ae80744ca5ea805207d0c351cb0e6c8e1e0aa4883f49e3e1f8c1", + "text_excerpt": "1. 设有两个事务T1、T2,其并发操作如下所示,下列评价正确的是( )。\n\nA.该操作不存在问题 B.该操作丢失修改\n\nC.该操作不能重复读 D.该操作读“脏”数据\n1. ![image](assets/database-001/image-001.png)由于某种原因,造成系统停止运行,致使事务在执行过程中以非控制方式终止,这时内存中的信息丢失,而存储在外存上的数据未受影响,这种情况称为( )。\n", + "flags": [] + } + ] + }, + { + "legacy_id": "database:009", + "course_id": "database", + "query": "恢复和并发控制的基本单位的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q8:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fb5bcc0f063d1119429febc4b7ff6d0b1e7212b1416a1afd69173ffe7d873e8b", + "text_excerpt": "1. 恢复和并发控制的基本单位是( )。\n\nA.事务 B.数据冗余 C.日志文件 D.数据转储", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "database:010", + "course_id": "database", + "query": "能把事务原子性的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q9:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "b244f74acb50d6093fbe9b9849f739a46a7f9fedc52080db58cf54a398702bb0", + "text_excerpt": "1. 一个事务的执行不能被其他事务干扰,叫做事务的( )。\n\nA.原子性 B.一致性 C.持续性 D.隔离性", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "database:011", + "course_id": "database", + "query": "做共享锁S锁的作用和兼容性时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q10:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "8285bc7581293f2477319cf9396efc59842f97a101514e1bc4fdc349e2bb43e1", + "text_excerpt": "1. 若事务T对数据对象A加上S锁,则( )。\n\nA.事务T可以读A和修改A,其它事务只能再对A加S锁,而不能加X 锁。\n\nB.事务T可以读A但不能修改A,其它事务能对A加S锁和X锁。\n\nC.事务T可以读A但不能修改A,其它事务只能再对A加S锁,而不能加X 锁。\n\nD.事务T可以读A和修改A,其它事务能对A加S锁和X锁。", + "flags": [] + } + ] + }, + { + "legacy_id": "database:012", + "course_id": "database", + "query": "这类题一般怎么考?能用两阶段锁协议的判断举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q11:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "253deccb955a26fe78cd268035a45cfa875659d25e74cd6a317697c86dad21f1", + "text_excerpt": "1. 以下( )封锁违反两段锁协议。\n\nA. Slock A … Slock B … Xlock C ………… Unlock A … Unlock B … Unlock C\n\nB. Slock A … Slock B … Xlock C ………… Unlock C … Unlock B … Unlock A\n\nC. Slock A … Slock B … Xlock C ………… Unlock B … Unlock C … Unlock A\n\nD. Slock A", + "flags": [] + } + ] + }, + { + "legacy_id": "database:013", + "course_id": "database", + "query": "下列 SQL语句中,修改表结构的是 。怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q12:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "9f9d673cacb55843f8515bbb702a386174ec92274b86f610effe5c2670e0833e", + "text_excerpt": "1. 下列 SQL语句中,修改表结构的是( )。\n\nA.CREATE B.ALTER C.UPDATE D.INSERT", + "flags": [] + } + ] + }, + { + "legacy_id": "database:014", + "course_id": "database", + "query": "做关系代数表达式的优化策略中,首先要做的是时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q13:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "3f28c4548ab50c416cdaf817fd94fea3594343f561a54b932d9388e9b8130255", + "text_excerpt": "1. 关系代数表达式的优化策略中,首先要做的是( )\n\nA. 对文件进行预处理 B. 尽早执行选择运算\n\nC. 执行笛卡儿积运算 D. 投影运算", + "flags": [] + } + ] + }, + { + "legacy_id": "database:015", + "course_id": "database", + "query": "SQL中,下列涉及空值的操作,不正确的是的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q14:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "1767de0fc0ea503c6a6725606e480c09ccd501a42e2b64b867561080a0c0828b", + "text_excerpt": "1. SQL中,下列涉及空值的操作,不正确的是 ( )\n\nA. AGE IS NULL B. AGE IS NOT NULL\n\nC. AGE = NULL D. NOT (AGE IS NULL)", + "flags": [] + } + ] + }, + { + "legacy_id": "database:016", + "course_id": "database", + "query": "能把管理系统中 故障的恢复需要DBA的介入的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q15:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ec40ee6469e89a50fa039ab4f3aa2f0a0005f015ceb19b8952272e81005041e7", + "text_excerpt": "1. 数据库管理系统中( )故障的恢复需要DBA的介入\n\nA.介质故障 B.事务故障 C.系统故障 \t\tD.死锁", + "flags": [] + } + ] + }, + { + "legacy_id": "database:017", + "course_id": "database", + "query": "做关于查询优化正确的说法有时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q16:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "e441fa6f1137cc9f0f2f72f528ccc621bb4d405d3330e1a41b291b2266beddb7", + "text_excerpt": "1. 关于查询优化正确的说法有( )\n\nA. 选择运算应尽可能后做 B. 在执行投影操作前对关系适当进行预处理\n\nC. 将投影运算与其前面或后面的双目运算结合 D. 投影运算应尽可能先做", + "flags": [] + } + ] + }, + { + "legacy_id": "database:018", + "course_id": "database", + "query": "这类题一般怎么考?能用在规范化的关系中,下列说法正确的是 。举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q17:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "69ca535f03b56c1af460c1c54d4a124e56c3e2b7b995c63e94ab8f30a105a4f2", + "text_excerpt": "1. 在规范化的关系中,下列说法正确的是( )。\n\nA.行列顺序有关 B.属性名允许重名\n\nC.任意两个元组不允许重复 D.列是非同质的", + "flags": [] + } + ] + }, + { + "legacy_id": "database:019", + "course_id": "database", + "query": "在SQL语言中,建立索引用 。怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q18:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "3441f45e920c588955a9b429a693486b915a3c352fd4d3a5fc891464424904b4", + "text_excerpt": "1. 在SQL语言中,建立索引用( )。\n\nA.CREATE SCHMA命令 B.CREATE TABLE命令\n\nC.CREATE VIEW命令 D.CREATE INDEX命令", + "flags": [] + } + ] + }, + { + "legacy_id": "database:020", + "course_id": "database", + "query": "做下列SQL语句中,能够实现实体完整性控制的子句是 。时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q19:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fd4b3c3421d695d281a417388f5d7fd5b378e3fc87e63c87ac0e18aa1bbe970d", + "text_excerpt": "1. 下列SQL语句中,能够实现实体完整性控制的子句是( )。\n\nA. FOREIGN KEY B. PRIMARY KEY\n\nC. REFERENCES D. FOREIGN KEY 和 REFERENCES", + "flags": [] + } + ] + }, + { + "legacy_id": "database:021", + "course_id": "database", + "query": "一般不适合建立索引的属性有 。的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q20:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "b9ed3abed7110d61ca6e39b0595df6d747100ab5418b12ca6521d7506d3c33aa", + "text_excerpt": "1. 一般不适合建立索引的属性有( )。\n\nA.主键码和外键码 B.可以从索引直接得到查询结果的属性\n\nC.对于范围查询中使用的属性 D.经常更新的属性", + "flags": [] + } + ] + }, + { + "legacy_id": "database:022", + "course_id": "database", + "query": "能把SQL 的 SELECT 语句中,“ HAVING 条件表达式”用来筛选满足条件的 。的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q21:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "d33e2cfd8e7be816bb44c423342dc1d34f1a6c9a8519a965146f9db07723138f", + "text_excerpt": "1. SQL 的 SELECT 语句中,“ HAVING 条件表达式”用来筛选满足条件的( )。\n\nA .列 B .行 C .关系 D .分组", + "flags": [] + } + ] + }, + { + "legacy_id": "database:023", + "course_id": "database", + "query": "做满足2NF但不满足3NF时可能存在的依赖时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q22:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "c6000ee706b21109e2d062e5581c1ad0c9bd8160e7e6d53e5a9586f0a3ef9ae3", + "text_excerpt": "1. 任何一个满足2NF但不满足3NF的关系模式都不存在( )\n\nA.主属性对候选键的部分依赖\t\t\t\t\t\tB.非主属性对候选键的部分依赖\n\nC.主属性对候选键的传递依赖\t\t\t\t\t\tD.非主属性对候选键的传递依赖", + "flags": [] + } + ] + }, + { + "legacy_id": "database:024", + "course_id": "database", + "query": "这类题一般怎么考?能用自然连接的条件举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q23:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "bd559eb15a8f682e4ca592291b2634470c19436355a63a919e507d14e7c71401", + "text_excerpt": "1. 学校数据库中有学生和宿舍两个关系:\n\n学生(学号,姓名) 和 宿舍(楼名,房间号,床位号,学号)\n\n假设有的学生不住宿,床位也可能空闲。如果要列出所有学生住宿和宿舍分配的情况,包括没有住宿的学生和空闲的床位,则应执行( )\n\nA.全外联接 B.左外联接 C.右外联接\t\t\t\tD.自然联接\n1. 如下面的数据库表中,如果部门表的主关键字是部门号,职工表的主关键字是职工号,外键为部门号,哪个SQL操作不能执行?(\t\t)\n\n| 职工号 | |\n", + "flags": [] + } + ] + }, + { + "legacy_id": "database:025", + "course_id": "database", + "query": "按系号分组统计平均年龄的SQL怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q24:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "88ea151521cea893ceea22e2112f3ed2c7e674a1b7ef2a78b884dd20e00cb20f", + "text_excerpt": "1. 有学生关系:学生(学号,姓名,年龄,系号),对学生关系的查询语句如下:\n\nSELECT 系号,AVG(年龄) FROM 学生 GROUP BY 系号\n\n如果要提高查询效率,应该建索引的属性是( )。\n\nA.学号 B.姓名 C.年龄\t\t\t\tD.系号", + "flags": [] + } + ] + }, + { + "legacy_id": "database:026", + "course_id": "database", + "query": "做按系号分组统计平均年龄的SQL时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q25:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cb488f204c293500ca91e7119114d53d23bfa703a9aadaea841a5577b0d50b7b", + "text_excerpt": "1. 下列聚合函数中不忽略空值 (null) 的是( )。\n\nA. SUM (列名) B. MAX (列名) C. COUNT ( * ) \t\tD. AVG (列名)", + "flags": [] + } + ] + }, + { + "legacy_id": "database:027", + "course_id": "database", + "query": "用来记录对中数据进行的每一次更新操作的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q26:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "bfd7929f1888876fbe2b9f46df5b392d67ccc432127bd96ccf38e32109e6bb65", + "text_excerpt": "1. (\t\t )用来记录对数据库中数据进行的每一次更新操作\n\nA.后援副本 B.日志文件 C.数据库\t\t\t\tD.缓冲区\n\n**二、判断题(10分,每题1分,正确打√,错误打╳,请将答案填在答题纸上)**", + "flags": [] + } + ] + }, + { + "legacy_id": "database:028", + "course_id": "database", + "query": "能把当局部E-R图合并成全局E-R图时可能出现的合并冲突中包含了命名冲突。的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q27:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "e763d0e26f3fec82bf95df63ce4e3130d10bb0f8cd7997cb25ad63b7e427440a", + "text_excerpt": "1. 当局部E-R图合并成全局E-R图时可能出现的合并冲突中包含了命名冲突。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "database:029", + "course_id": "database", + "query": "做恢复的基本原理是利用存储在后备副本、日志文件和镜像中的冗余数据来重建。时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q28:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "4c42b211541dadcd4cc6315a456e463807653f324590308643e257009dd37fb2", + "text_excerpt": "1. 数据库恢复的基本原理是利用存储在后备副本、日志文件和数据库镜像中的冗余数据来重建数据库。\n1. 产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求对已为其他事务封锁的数据对象加锁,从而出现死等待。", + "flags": [] + } + ] + }, + { + "legacy_id": "database:030", + "course_id": "database", + "query": "这类题一般怎么考?能用将所有事务串行起来的调度策略一定是正确的调度策略。举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "database-001:q-database-001-q29:c01", + "exists": true, + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "c466f213f53126896dfe1caca4a530b87e702718a602d39c8160b828b327a998", + "text_excerpt": "1. 将所有事务串行起来的调度策略一定是正确的调度策略。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "digital_logic:001", + "course_id": "digital_logic", + "query": "作业主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-logic-001:h-数字逻辑作业:c01", + "exists": true, + "source_id": "digital-logic-001", + "source_title": "数字逻辑作业", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "70b4f958bda37261620b33b68b49aae75bfc44fca3e96421dee34b0e83976ec7", + "text_excerpt": "1.\n\n![image](assets/digital-logic-001/image-001.png)\n\n![image](assets/digital-logic-001/image-002.png)\n\n2.函数f(A,B,C,D)=AB+AB否 可以简化为f(A,B)=A,因为无论B的值如何,只要A为1,函\n\n数值就为1。\n\n要使用74153实现这个函数,可以将A和B分别连接到选择输入SO和S1,然后将使能端G接高电平(1)。数据输入D0-D3可以设置为:\n\n· D0=", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_logic:002", + "course_id": "digital_logic", + "query": "我想先复习作业,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-logic-001:h-数字逻辑作业:c02", + "exists": true, + "source_id": "digital-logic-001", + "source_title": "数字逻辑作业", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "4751e92be3748c29b99bfafbd2eb00a6a99e752ab29b036a7ecc8003c06937cd", + "text_excerpt": "6.分别用摩尔逻辑和米里逻辑设计”101”信号检测\n\n摩尔逻辑设计:\n\n摩尔逻辑使用状态机来实现序列检测。对于序列”101”,可以设计一个具有三个状态的状态机:S0(初始状态),S1(检测到\"1\"),S2(检测到\"101\")。\n\nS0:初始状态。如果输入是1,转移到S1。\n\nS1:如果输入是0,转移到S2;如果输入是1,保持在S1。\n\nS2:如果输入是1,输出1并回到S0;如果输入是0,回到S1。\n\n米里逻辑设计:\n\n米里逻辑与摩尔逻辑类似,但输出不仅依赖于当前状态,还依赖于", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_logic:003", + "course_id": "digital_logic", + "query": "复习作业时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-logic-001:h-数字逻辑作业:c03", + "exists": true, + "source_id": "digital-logic-001", + "source_title": "数字逻辑作业", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "c0bbf7d25bb2054792bdab2136410f7ef19cfbabcc2a7f1938ee8352bb57faaf", + "text_excerpt": "行为、数据流和结构化建模。\n\n丰富的语法,支持模块化设计。\n\n支持并行性和同步性。\n\n易于理解和学习。\n\n10.\n\nFPGA(现场可编程门阵列)的主要特点包括:\n\n可编程性:用户可以根据需要重新配置逻辑功能。\n\n灵活性:可以快速适应新的设计需求。\n\n并行处理能力:可以同时执行多个操作。\n\n低功耗:与ASIC相比,FPGA通常具有较低的功耗。\n\n快速上市时间:由于可编程性,FPGA可以快速部署新设计。", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_logic:004", + "course_id": "digital_logic", + "query": "2012级计算机学院试卷 A卷题目里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:h-2012级计算机学院数字逻辑试卷-a卷题目:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6d5ae99396a599809ae22b334003fa5c793da3ffd98984e2502ff18bca4a6d70", + "text_excerpt": "**诚信应考,考试作弊将带来严重后果!**\n\n**华南理工大学期末考试**\n\n**《2012级计算机学院数字逻辑》试卷** **A卷**\n\n**2014年1月15日**\n\n**注意事项:1.** **考前请将密封线内填写清楚;**\n\n**2.** **所有答案请直接答在试卷或答题纸上;**\n\n**3.考试形式:闭卷;**\n\n**4.** **本试卷共 三 大题,满分100分,考试时间120分钟**。\n\n| **题 号** | **一** | **二** | **三** |", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_logic:005", + "course_id": "digital_logic", + "query": "做下列逻辑表达式中正确的是 C时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q1:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ff16d3e98038d15a0c27cbd92a9e2ca4656a829057b7a77a3ad3b1b68c3a36d7", + "text_excerpt": "1.下列逻辑表达式中正确的是( C )\n\nA.、A+A=1 B.$A\\cdot A=0$ C.A+A=A D.A+B = A", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "digital_logic:006", + "course_id": "digital_logic", + "query": "这类题一般怎么考?能用逻辑表达式的对偶式怎么写举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q2:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "61b396f7268daee1f3c70a3a19a5afae35240a810fa560dd3fc95d95384fc916", + "text_excerpt": "2.逻辑表达式中$(A+1)(B+\\overline {C})$的对偶式是( B )\n\nA.$\\overline {A}+\\overline {B}\\overline {C}$\n\nB.$\\hat {A}\\cdot 0+\\hat {B}\\cdot C$\n\nC. $\\hat {A}\\cdot 0+B\\cdot \\hat {C}$\n\nD. $A\\cdot 1+B\\cdot \\hat {C}$\n\n3 .组合逻辑电路通常由( A )组合而成。\n\nA.门电路 ", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_logic:007", + "course_id": "digital_logic", + "query": "八路数据选择器的接线如下图所示,该电路实现的逻辑表达式F=( B )怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q3:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "7a9a99977c5b2176d864773cc27e14a4e468b9fa544a4825c0fb3ebcdc783260", + "text_excerpt": "4.八路数据选择器的接线如下图所示,该电路实现的逻辑表达式F=( B )\n\nA. $\\hat {A}B+A\\hat {B}$\n\nB. $\\hat {A}B+AB$\n\nC. $\\hat {A}\\hat {B}+A\\hat {B}$\n\nD. $A+B$", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_logic:008", + "course_id": "digital_logic", + "query": "做如图所示的组合电路中,其逻辑函数F=时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q4:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "27f6e7fe9f66b0c409a30629dd76481865e160935703e78b075cce6129b75637", + "text_excerpt": "5.如图所示的组合电路中,其逻辑函数F= ( )\n\n![formula-object](assets/digital-logic-002/image-001.png)A. $\\overline {AB}\\cdot \\overline {(B+C)}$\n\nB. $\\sum {m}^{3}(1,2,3,5,6,7)$\n\nC. $\\sum {m}^{3}(2,3,4,5,6,7)$\n\nD. 以上都不对", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_logic:009", + "course_id": "digital_logic", + "query": "电路如下图所示,经CP脉冲作用后,${Q}^{n+1}$=( )。的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q5:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "3419cc919725cae12297687e776174958796718a3dea4282d953abb6fc2080b7", + "text_excerpt": "6.电路如下图所示,经CP脉冲作用后,${Q}^{n+1}$=( )。\n\nA. 1 B. 0 C. *X* D. $\\hat {X}$\n\n![formula-object](assets/digital-logic-002/image-002.png)\n\n7.8线—3线优先编码器的输入为I0-I7,当有限级别最高的I7有效时,其输出 ![formula-object](assets/digital-logic-002/image-003.p", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_logic:010", + "course_id": "digital_logic", + "query": "能把设计一个28进制的计数器,至少需要 个触发器。的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q6:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "d87e20d4db5f2cf69f0b8c8f67c031427764771ec52d8368c9c57e2fb01a36dd", + "text_excerpt": "8. 设计一个28进制的计数器,至少需要( )个触发器。\n\nA.4 B.5 C.14 D. 28", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "digital_logic:011", + "course_id": "digital_logic", + "query": "做20488位EPROM芯片,其地址线有 条,数据线有 条。时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q7:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "57940a270f1a188b6eef7d0246289cea63635a1541da15d5aac974ce6d98393c", + "text_excerpt": "9. 2048*8位EPROM芯片,其地址线有( )条,数据线有( )条。\n\nA.8, 2048 B.2048, 8 C. 8, 11 D. 11, 8", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_logic:012", + "course_id": "digital_logic", + "query": "这类题一般怎么考?能用FPGA指的是 C 。举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q8:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "273220705445526809310af9523f433b34f3deaceeba546eeaee85061b024edf", + "text_excerpt": "10. FPGA指的是( C )。\n\nA.门阵列 B. 可编程逻辑阵列\n\nC.现场可编程门阵列 D. 可擦写编程的只读存储器\n\n**二.填空题,请在空格内填入正确的内容(每题1分,共20分)**\n1. 假设m13是变量A、B、C、D、E的一个最小项,用这些变量写出该最小项是 01101 。", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_logic:013", + "course_id": "digital_logic", + "query": "将BCD8421码0101转换成余3码是 1000 。怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q9:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fc6fdcfb0a4307dc012a2404aa31410376d2e9b9a8efbc38d075249fa3877258", + "text_excerpt": "1. 将BCD8421码0101转换成余3码是 1000 。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "digital_logic:014", + "course_id": "digital_logic", + "query": "做时序逻辑电路任一时刻的输出状态与电路原来所处的状态 有关 。时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q10:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fef0f90753938e72729d4e8942fcda03f6bde18ad24a369e56884e01a5e2ff10", + "text_excerpt": "1. 时序逻辑电路任一时刻的输出状态与电路原来所处的状态 有关 。\n1. 数字电路按逻辑功能的不同特点分为两大类:组合逻辑电路和 时序逻辑电路 。\n1. 完整地描述一个实现逻辑电路的功能,需要3个方程,分别是:输出方程、激励方程和 次态方程 。\n1. VHDL的基本组成包括3个部分,分别是:参数部分——library库 、", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_logic:015", + "course_id": "digital_logic", + "query": "同步时序电路的状态图怎么画的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q11:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "00ed9a2d924c89d62f8b955e344d9088edd4803570fd56c534a8f3b10ccb4710", + "text_excerpt": "1. 某同步时序电路有9个状态,该电路需要 4 个触发器。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "digital_logic:016", + "course_id": "digital_logic", + "query": "能把只读存储器的英文缩写为ROM,这种存储器具有断电后信息仍 的特点。的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q12:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "624cb2ea1b592fb2f4cd54f3b79ca2f434435cd2dd8514de1cb66f13e61d7e3e", + "text_excerpt": "1. 只读存储器的英文缩写为ROM,这种存储器具有断电后信息仍 的特点。\n1. (82)10=( 1010 )8421BCD。", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_logic:017", + "course_id": "digital_logic", + "query": "做n个变量的函数的全体最小项之或恒为 1 。时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q13:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0f16374d84954733ed9340505ea15d077e85abadfec61c6f1ad980f79b41f175", + "text_excerpt": "1. n个变量的函数的全体最小项之或恒为 1 。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "digital_logic:018", + "course_id": "digital_logic", + "query": "这类题一般怎么考?能用若要某共阳极数码管显示数字“3”,则显示代码abcdefg 为 1111001 0000000~1111111。举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q14:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0a3a453071db8d3af13f84c2c83dcb4baf11e0f93d26f366379f6bf640a49b33", + "text_excerpt": "1. 若要某共阳极数码管显示数字“3”,则显示代码abcdefg\n\n为 1111001 (0000000~1111111)。\n\n![image](assets/digital-logic-002/image-004.png)", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_logic:019", + "course_id": "digital_logic", + "query": "对于n输入端的与非门,要使输出为1,则必有一输入端取值为 0 。怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q15:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "71985cd09e8cd5a707c72a513684e7789e5cea40bd84bdaaa60ced67fedde271", + "text_excerpt": "1. 对于n输入端的与非门,要使输出为1,则必有一输入端取值为 0 。\n1. 74LS138是3线—8线译码器,译码为输出低电平有效,若输入为A2A1A0=110时,输出Y7Y6Y5 Y4Y3 Y2Y1 Y0应为 10111111 。\n1. 三态门除了具有高电平和低电平两种状态外,还有第三种状态叫 高阻态 。", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_logic:020", + "course_id": "digital_logic", + "query": "做八进制的基数为 8 。时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q16:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "08d3fe78c2a4f9a2df1bf8d9997532b09f12d14ff91dab96f080e252dbc78d1a", + "text_excerpt": "1. 八进制的基数为 8 。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "digital_logic:021", + "course_id": "digital_logic", + "query": "触发器有2个稳态,分别是0态和 1 态。的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q17:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "284a6c0f1b52b01e1bb59b71ba4b7c66fcfea6099c28aa9a5d584a672b202e4d", + "text_excerpt": "1. 触发器有2个稳态,分别是0态和 1 态。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "digital_logic:022", + "course_id": "digital_logic", + "query": "能把一个逻辑函数,如果有k个变量,则有 个最小项。的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q18:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cad787069c11bbaaf7d0a888054c52dbc538b9e7f215098e1cb2dcc476f01ae0", + "text_excerpt": "1. 一个逻辑函数,如果有k个变量,则有 个最小项。\n1. 将一个包含有32768个基本存储单元的存储电路设计16位为一个字节的ROM。该ROM有11根地址线,有 根数据读出线。", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_logic:023", + "course_id": "digital_logic", + "query": "做存储器必须有控制线、地址线和 。时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q19:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "f41a859d15c28f2f2e39b8cc7f8c2c2e07908f0334ecf7a71846a29eb4ddc291", + "text_excerpt": "1. 存储器必须有控制线、地址线和 。\n\n**三.分析设计题(共计60分)**", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "digital_logic:024", + "course_id": "digital_logic", + "query": "这类题一般怎么考?能用逻辑电路如图所示,试写出逻辑式,并化简之,列出真值表,并说明它的逻辑功能。举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q20:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "eb4510a70e58ebb0b80f979adf3a1f7cc943eaa7532c3bc50bea6e67886e2abe", + "text_excerpt": "1. (10分)逻辑电路如图所示,试写出逻辑式,并化简之,列出真值表,并说明它的逻辑功能。\n\n![image](assets/digital-logic-002/image-005.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "digital_logic:025", + "course_id": "digital_logic", + "query": "优先排队电路应该怎么设计怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q21:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "bae5ae6fcc2851a8931553018d117abec16042b8e02e3e290fe0916e1ddbba64", + "text_excerpt": "1. (10分)设计一个优先排队电路,其优先顺序为:\n\n当E=F=G=0时,所有的灯都不亮。\n\n当E=1时,不论F、G为何值,X灯亮,其余灯不亮。\n\n当E=0,F=1时,不论G为何值,Y灯亮,其余灯不亮。\n\n当E=F=0,G=1时,Z灯亮,其余灯不亮。\n\n注:灯亮表示输出“1”,灯不亮表示输出“0”。", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_logic:026", + "course_id": "digital_logic", + "query": "做列出真值表。时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q22:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "e20de821b39e9c90dd80601498978f59b6e71f69712e37dc8c76ca13e678fc82", + "text_excerpt": "1. 列出真值表。(4分)\n\n\n\n\n\n
输入输出
EFGXYZ
000
001<", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_logic:027", + "course_id": "digital_logic", + "query": "写出输出逻辑表达式。的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q23:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "602e99a8c9fc06363000bc301cfedae58204fad88512696b7027a9ee6e9c005e", + "text_excerpt": "1. 写出输出逻辑表达式。(3分)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "digital_logic:028", + "course_id": "digital_logic", + "query": "能把用集成芯片和门电路实现逻辑函数的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q24:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "8d3cc65208a1c5c005fc585559d034fe94f03da3d84d73e8804c712ec75dd6cf", + "text_excerpt": "(3)已知一种集成芯片的功能表如下表,试用该片芯片和若干门电路来实现上述逻辑函数,直接补全该电路图。(3分)\n\n![image](assets/digital-logic-002/image-006.png)\n\nH=High Level,L=Low Level, X=don’t care, Note 1: $G2=\\overline {G2A}+\\overline {G2B}$\n\n![image](assets/digital-logic-002/image-007.png", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_logic:029", + "course_id": "digital_logic", + "query": "做同步时序电路的状态图怎么画时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q25:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "8c21f3b8a2838b36d9c395a0c2b537b41a38f01c1d1a0e695fbd8e6db79a4d6f", + "text_excerpt": "1. (12分)分析下图所示同步时序逻辑电路,作出状态转移表和状态图,说明这个电路能对何种序列进行检测?\n\n![image](assets/digital-logic-002/image-008.png)\n1. (12分)设计一个奇偶校验器,数输入信号X中1的个数,如果X中1的个数为奇数,输出Z为1;若X中1的个数为偶数,则输出Z为0,画出状态图和状态表,并使用D触发器实现该电路。", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_logic:030", + "course_id": "digital_logic", + "query": "这类题一般怎么考?能用用一个ROM实现下列函数,请画出该ROM的阵列结构图 ${F}_{1}=AB+CD;{F}_{2}=BC+\\overline {A}$举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "digital-logic-002:q-digital-logic-002-q26:c01", + "exists": true, + "source_id": "digital-logic-002", + "source_title": "2012级计算机学院数字逻辑试卷 A卷题目", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "44a67c035908f48aa97d2bebfe16c7505b22abfda048215367b0aef8c16de87f", + "text_excerpt": "1. (6分)用一个ROM实现下列函数,请画出该ROM的阵列结构图\n\n${F}_{1}=AB+CD;{F}_{2}=BC+\\overline {A}$", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:001", + "course_id": "digital_system_creative_design", + "query": "这张图片主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-001:h-微信图片_20231129235834:c01", + "exists": true, + "source_id": "digital-system-creative-design-001", + "source_title": "微信图片_20231129235834", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "3005419c95a5d7dc2ec2e9bc177a8584513f496aa6756a0335415c19f83ce21a", + "text_excerpt": "![page-001.jpg](assets/digital-system-creative-design-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:002", + "course_id": "digital_system_creative_design", + "query": "我想先复习这张图片,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-002:h-微信图片_20231130003702:c01", + "exists": true, + "source_id": "digital-system-creative-design-002", + "source_title": "微信图片_20231130003702", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a30cf4faf83bdee7bf4ff4edde18d25914576e661ec7ab5714e85994ffc04f6a", + "text_excerpt": "![page-001.png](assets/digital-system-creative-design-002/page-001.png)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:003", + "course_id": "digital_system_creative_design", + "query": "复习Mindspore口罩检测 yolov3时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c01", + "exists": true, + "source_id": "digital-system-creative-design-003", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "8f24b6aa86b91fabcbb5af8a03037e645a23a23773389078405e436db85179b3", + "text_excerpt": "**Mindspore口罩检测(yolov3)**\n\n**1.文件组织结构**\n\n进入华为云ModelArts平台,点击开发环境-notebook后创建,镜像类别选择tensorflow1.15-mindspore1.3.0。等待创建完成后打开该notebook,进入JupyterLab,在左上角菜单栏,新建、上传代码文件和数据集,最终目录结构如下\n\n| JSON ├──code ├──src ├──config.py ├──", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:004", + "course_id": "digital_system_creative_design", + "query": "Mindspore口罩检测 yolov3里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c02", + "exists": true, + "source_id": "digital-system-creative-design-003", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "bc77fc3568508548a93bf03760ff3d02b4249a5587df5417a2a35bf5b1c64e87", + "text_excerpt": "由于滑动窗口,同一个class可能有好几个框(每一个框都带有一个分类器得分),我们的目的就是要去除冗余的检测框,保留最好的一个。于是我们就要用到非极大值抑制,来抑制那些冗余的框: 抑制的过程是一个迭代-遍历-消除的过程。\n- 将person类别所有框的得分排序,选中最高分及其对应的框A:\n- 遍历其余的框,如果和当前最高分框A的重叠面积(IOU)大于一定阈值,我们就将框删除。\n- 从剩下的person类别框中继续选一个得分最高的(非A,A已经确定),重复上述过程,指导找到所有", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:005", + "course_id": "digital_system_creative_design", + "query": "学习Mindspore口罩检测 yolov3时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c03", + "exists": true, + "source_id": "digital-system-creative-design-003", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "8a7ea68dc14c71601cc97c2743528cd44618e19567a402b914ca3bc4fac112e4", + "text_excerpt": "| JSON import os import argparse import ast from easydict import EasyDict as edict import shutil import numpy as np import mindspore.nn as nn from mindspore import context, Tensor from mindspore.communication.management import init from ", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:006", + "course_id": "digital_system_creative_design", + "query": "考试会怎么考Mindspore口罩检测 yolov3?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c04", + "exists": true, + "source_id": "digital-system-creative-design-003", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "9ebed560534aed3de8fc3838d8723926bcde06a8b0ff346db8b50a8526869dff", + "text_excerpt": "| JSON # 定义学习率 def get_lr(learning_rate, start_step, global_step, decay_step, decay_rate, steps=False): \"\"\"Set learning rate.\"\"\" lr_each_step = [] for i in range(global_step): if steps: lr_each_step.append(l", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:007", + "course_id": "digital_system_creative_design", + "query": "Mindspore口罩检测 yolov3主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c05", + "exists": true, + "source_id": "digital-system-creative-design-003", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "122e1c99ca1c7e95d62f34f25a4121248bd20f689a819d91e277833681a2648f", + "text_excerpt": "context.set_auto_parallel_context(parallel_mode=ParallelMode.DATA_PARALLEL, gradients_mean=True, device_num=device_num) init() rank = args_opt.device_id % device_num else: ", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:008", + "course_id": "digital_system_creative_design", + "query": "我想先复习Mindspore口罩检测 yolov3,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c06", + "exists": true, + "source_id": "digital-system-creative-design-003", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "682303413f411cb0c92cba0d3b1237fcc7f86aa57cd87b5e8f5f7305f23f12b4", + "text_excerpt": "directory=cfg.ckpt_dir, config=ckpt_config) #保存训练网络结构与权重参数 if args_opt.pre_trained: if args_opt.pre_trained_epoch_size <= 0: raise KeyError(\"pre_trained_epoch_size must be greater than 0.\") param_dict = lo", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:009", + "course_id": "digital_system_creative_design", + "query": "复习Mindspore口罩检测 yolov3时哪些内容最重要?,第9条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c07", + "exists": true, + "source_id": "digital-system-creative-design-003", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "4f3cecac0496b9ba688c5bcb6354f0e21d062fe04db85104dd5724e199433661", + "text_excerpt": "| JSON # ------------yolov3 train ----------------------------- #初始化超参数 cfg = edict({ \"distribute\": False, \"device_id\": 0, \"device_num\": 1, \"dataset_sink_mode\": True, \"lr\": 0.001, \"epoch_size\": 60, \"batch_size\"", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:010", + "course_id": "digital_system_creative_design", + "query": "Mindspore口罩检测 yolov3里的方法或结论怎么理解?,第10条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c08", + "exists": true, + "source_id": "digital-system-creative-design-003", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "92918df25695dc2f63c6c399e21f1624e92295f6e1aa05d07f370854dfd4b16a", + "text_excerpt": "创建mindrecord文件 prefix = \"yolo.mindrecord\" cfg.mindrecord_file = os.path.join(mindrecord_dir_train, prefix) if os.path.exists(mindrecord_dir_train+'/'+prefix):#!!!! print('The mindrecord file had exists!') else: image_dir = os.path.j", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:011", + "course_id": "digital_system_creative_design", + "query": "学习Mindspore口罩检测 yolov3时哪些概念容易混淆?,第11条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c09", + "exists": true, + "source_id": "digital-system-creative-design-003", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ff69858189afda6914f2663e5652ea1080c3265f4c97461bee8d248ca62d4b89", + "text_excerpt": "| JSON \"\"\"Test for yolov3-resnet18\"\"\" import os import argparse import time from easydict import EasyDict as edict import matplotlib.pyplot as plt from PIL import Image import PIL import numpy as np import sys #sys.path.insert(0,'./yolov", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:012", + "course_id": "digital_system_creative_design", + "query": "考试会怎么考Mindspore口罩检测 yolov3?,第12条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c10", + "exists": true, + "source_id": "digital-system-creative-design-003", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "990d759c5a6900b59623a374bfecb3e805da4232cdfc70a2b4abf1a0fc115bd3", + "text_excerpt": "重复直到所有备选处理完毕 def apply_nms(all_boxes, all_scores, thres, max_boxes): \"\"\"Apply NMS to bboxes.\"\"\" x1 = all_boxes[:, 0] y1 = all_boxes[:, 1] x2 = all_boxes[:, 2] y2 = all_boxes[:, 3] areas = (x2 - x1 + 1) * (y2 - y1 + 1", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:013", + "course_id": "digital_system_creative_design", + "query": "Mindspore口罩检测 yolov3主要讲什么?,第13条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c11", + "exists": true, + "source_id": "digital-system-creative-design-003", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "b5e94eb3c314826a2ea0af40fd58a805c4ea848789bb7714725b29ea732e107e", + "text_excerpt": "range(num_classes): class_boxes = np.reshape(boxes, [-1, 4])[np.reshape(mask[:, c], [-1])] class_box_scores = np.reshape(box_scores[:, c], [-1])[np.reshape(mask[:, c], [-1])] nms_index = apply_nms(class_boxes, class_", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:014", + "course_id": "digital_system_creative_design", + "query": "我想先复习Mindspore口罩检测 yolov3,应该从哪里开始?,第14条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c12", + "exists": true, + "source_id": "digital-system-creative-design-003", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "f9aac269d4616c2fb498c77854218ef2b4902b748cd086015a0fb2b6e00998c4", + "text_excerpt": "eval_net.set_train(False) i = 1. total = ds.get_dataset_size() start = time.time() pred_data = [] print(\"\\n========================================\\n\") print(\"total images num: \", total) print(\"Processing, please", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:015", + "course_id": "digital_system_creative_design", + "query": "复习Mindspore口罩检测 yolov3时哪些内容最重要?,第15条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c13", + "exists": true, + "source_id": "digital-system-creative-design-003", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "018cc7f1252ef3ec798a74ad9d9c1d483863c7057d5271d18c4cf69f0c3b57f9", + "text_excerpt": "具体由其中参数而定 image_path = os.path.join(cfg.image_dir, image_file) f = Image.open(image_path) img_np = np.asarray(f ,dtype=np.float32) #H,W,C格式 ax.imshow(img_np.astype(np.uint8)) #当前画纸中画一个图片 ", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:016", + "course_id": "digital_system_creative_design", + "query": "Mindspore口罩检测 yolov3里的方法或结论怎么理解?,第16条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c14", + "exists": true, + "source_id": "digital-system-creative-design-003", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ef2c7c3d553a1ca70bdbc506875675e1bc786cf069bca60ae9cf8e1f13aaef27", + "text_excerpt": "| JSON # ---------------yolov3 test------------------------- context.set_context(mode=context.GRAPH_MODE, device_target=\"Ascend\") ckpt_path = './ckpt/' if not os.path.exists(ckpt_path): mox.file.copy_parallel(src_url=args_opt.ckpt_ur", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:017", + "course_id": "digital_system_creative_design", + "query": "学习Mindspore口罩检测 yolov3时哪些概念容易混淆?,第17条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c15", + "exists": true, + "source_id": "digital-system-creative-design-003", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a115690787f5eb848a0e698199d642a197aa885b9076b44cbf1ec5b4671bd10e", + "text_excerpt": "next time, you can save them to yours obs. #mox.file.copy_parallel(src_url=args_opt.mindrecord_dir_test, dst_url=os.path.join(cfg.data_url,'mindspore/test') print(\"Start Eval!\") yolo_eval(cfg) |\n|---|\n\n测试输出结果如下\n\n![image](assets/digit", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:018", + "course_id": "digital_system_creative_design", + "query": "考试会怎么考Mindspore口罩检测 yolov3?,见第1页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-004:p1:c01", + "exists": true, + "source_id": "digital-system-creative-design-004", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "6ef6ccdefaba67c2a4413c0bcd4939a6fa92539fd09ba0c2cf76358acfe0b6f1", + "text_excerpt": "Mindspore口罩检测(yolov3)​\n\n1.文件组织结构​\n\n进入华为云ModelArts平台,点击开发环境-notebook后创建,镜像类别选择tensorflow1.15-\n\nmindspore1.3.0。等待创建完成后打开该notebook,进入JupyterLab,在左上角菜单栏,新建、上\n\n传代码文件和数据集,最终目录结构如下\n\n1\n\n├──code​\n\n2\n\n├──src​\n\n3\n\n├──config.py ​\n\n4\n\n├──dataset.py ​\n\n5", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:019", + "course_id": "digital_system_creative_design", + "query": "Mindspore口罩检测 yolov3主要讲什么?,见第2页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-004:p2:c01", + "exists": true, + "source_id": "digital-system-creative-design-004", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "1f6146dd49b7c80856daa07c477d5a412b0f7010dc643ad3e0c22ce7cfeedba6", + "text_excerpt": "• 定义ResNet18主干网络​\n\n• 定义YOLOv3网络​\n\n• 定义检测网络-DetectionBlock​\n\n• 定义IoU​\n\n• 定义loss计算-YoloLossBlock​\n\n• YOLOv3验证网络结构-YoloWithEval​\n\n2.3 utils.py​\n\n评价指标定义文件在code/src/utils.py ,无需执行。\n\n非极大值抑制NMS算法:​\n\n由于滑动窗口,同一个class可能有好几个框(每一个框都带有一个分类器得分),我们的目的就是要去", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:020", + "course_id": "digital_system_creative_design", + "query": "我想先复习Mindspore口罩检测 yolov3,应该从哪里开始?,见第3页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-004:p3:c01", + "exists": true, + "source_id": "digital-system-creative-design-004", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "c1597aed23e272d43bd645a6ff1e134459b301b23c57dc85f4ff39751887956f", + "text_excerpt": "6\n\n7\n\nimport numpy as np\n\n8\n\nimport mindspore.nn as nn\n\n9\n\nfrom mindspore import context, Tensor\n\n10\n\nfrom mindspore.communication.management import init\n\n11\n\nfrom mindspore.train.callback import CheckpointConfig, ModelCheckpoint, LossMoni\n", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:021", + "course_id": "digital_system_creative_design", + "query": "复习定义学习率时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-004:p3:c02", + "exists": true, + "source_id": "digital-system-creative-design-004", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "83eaae13c71b0814c1e268b01809f4feccfddb12697d86602b462085d6c12c99", + "text_excerpt": "2\n\ndef get_lr(learning_rate, start_step, global_step, decay_step, decay_rate, steps\n\n3\n\n\"\"\"Set learning rate.\"\"\"\n\n4\n\nlr_each_step = []\n\n5\n\nfor i in range(global_step):\n\n6\n\nif steps:\n\n7\n\nlr_each_step.append(learning_rate * (decay_rate ** (i ", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:022", + "course_id": "digital_system_creative_design", + "query": "定义网络初始化参数里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-004:p3:c03", + "exists": true, + "source_id": "digital-system-creative-design-004", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "fc77b4a56d11627ec9918f1a8f604b2234e2dc4ec29de7e70ea50ce4ae16dbd1", + "text_excerpt": "15\n\ndef init_net_param(network, init_value='ones'):\n\n16\n\n\"\"\"Init the parameters in network.\"\"\"\n\n17\n\nparams = network.trainable_params()\n\n18\n\nfor p in params:\n\n19\n\nif isinstance(p.data, Tensor) and 'beta' not in p.name and 'gamma' not i\n\n20\n", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:023", + "course_id": "digital_system_creative_design", + "query": "学习定义网络初始化参数时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-004:p4:c01", + "exists": true, + "source_id": "digital-system-creative-design-004", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "6fd4e2c3bc2d97c0ca7d917f9a064e5a1819dd1fc905774bb188b1a66435efb9", + "text_excerpt": "21\n\n22", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:024", + "course_id": "digital_system_creative_design", + "query": "考试会怎么考定义训练网络?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-004:p4:c02", + "exists": true, + "source_id": "digital-system-creative-design-004", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "c8376bba2fc01ef4a5be7ec6a1dfb64705aeadf27b91fbaac71c083b3690cb2d", + "text_excerpt": "23\n\ndef main(args_opt):\n\n24\n\ncontext.set_context(mode=context.GRAPH_MODE, device_target=\"Ascend\", device_\n\n25\n\nif args_opt.distribute:\n\n26\n\ndevice_num = args_opt.device_num\n\n27\n\ncontext.reset_auto_parallel_context()\n\n28\n\ncontext.set_auto_pa", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:025", + "course_id": "digital_system_creative_design", + "query": "定义训练网络主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-004:p4:c03", + "exists": true, + "source_id": "digital-system-creative-design-004", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "7291f742de4deb614e2276bdddd2b9ee63e803514eb5e69e86779e76154812e7", + "text_excerpt": "ckpoint_cb = ModelCheckpoint(prefix=\"yolov3\", directory=cfg.ckpt_dir, config\n\n53\n\n54\n\nif args_opt.pre_trained:\n\n55\n\nif args_opt.pre_trained_epoch_size <= 0:\n\n56\n\nraise KeyError(\"pre_trained_epoch_size must be greater than 0.\")\n\n57\n\nparam_di", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:026", + "course_id": "digital_system_creative_design", + "query": "我想先复习定义训练网络,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-004:p5:c01", + "exists": true, + "source_id": "digital-system-creative-design-004", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "87b484253e841b65533347791a97e1b9c276648703ab57ce7e051a9b49dcf71d", + "text_excerpt": "68\n\ncallback = [LossMonitor(10*dataset_size), ckpoint_cb]\n\n69\n\nmodel = Model(net)\n\n70\n\ndataset_sink_mode = cfg.dataset_sink_mode\n\n71\n\nprint(\"Start train YOLOv3, the first epoch will be slower because of the gra\n\n72\n\nmodel.train(args_opt.epo", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:027", + "course_id": "digital_system_creative_design", + "query": "复习yolov3 train时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-004:p5:c02", + "exists": true, + "source_id": "digital-system-creative-design-004", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "ef792413fd72c449d9e17fc20e6c55c8ba00dd89e289ad0429ab320de158c6ea", + "text_excerpt": "2\n\n#初始化超参数\n\n3\n\ncfg = edict({\n\n4\n\n\"distribute\": False,\n\n5\n\n\"device_id\": 0,\n\n6\n\n\"device_num\": 1,\n\n7\n\n\"dataset_sink_mode\": True,\n\n8\n\n9\n\n\"lr\": 0.001,\n\n10\n\n\"epoch_size\": 60,\n\n11\n\n\"batch_size\": 32,\n\n12\n\n\"loss_scale\" : 1024,\n\n13\n\n14\n\n\"pre_trained\"", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:028", + "course_id": "digital_system_creative_design", + "query": "\"train url\": 's3://yyq-2/DATA/code/yolov3/yolov3 out/'里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-004:p5:c03", + "exists": true, + "source_id": "digital-system-creative-design-004", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "1640e2738907e1951abd2ed6877867b1ce3780d2cd3312f5a8bfba70db27955b", + "text_excerpt": "23\n\n})\n\n24\n\n#设置模型和数据集路径\n\n25\n\nif os.path.exists(cfg.ckpt_dir):\n\n26\n\nshutil.rmtree(cfg.ckpt_dir)\n\n27\n\ndata_path = './data/'\n\n28\n\nif not os.path.exists(data_path):\n\n29\n\nmox.file.copy_parallel(src_url=cfg.data_url, dst_url=data_path)\n\n30\n\n31\n\nm", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:029", + "course_id": "digital_system_creative_design", + "query": "学习调用data to mindrecord byte image将图片数据集转为mingrecord格式,创建mindrecord文件时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-004:p5:c04", + "exists": true, + "source_id": "digital-system-creative-design-004", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "aaf5b0c7e146c8be8d307f64002296607387b655ea3b6161b66c6957ead2adb8", + "text_excerpt": "35\n\nprefix = \"yolo.mindrecord\"\n\n36\n\ncfg.mindrecord_file = os.path.join(mindrecord_dir_train, prefix)\n\n37\n\nif os.path.exists(mindrecord_dir_train+'/'+prefix):#!!!!", + "flags": [] + } + ] + }, + { + "legacy_id": "digital_system_creative_design:030", + "course_id": "digital_system_creative_design", + "query": "考试会怎么考调用data to mindrecord byte image将图片数据集转为mingrecord格式,创建mindrecord文件?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "digital-system-creative-design-004:p6:c01", + "exists": true, + "source_id": "digital-system-creative-design-004", + "source_title": "Mindspore口罩检测(yolov3)", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "edaf461dd4eb7860811c2e77e9b0515c98f7ac88eca1203a9796ee825112a87c", + "text_excerpt": "38\n\nprint('The mindrecord file had exists!')\n\n39\n\nelse:\n\n40\n\nimage_dir = os.path.join(data_path, \"train\") #!!!!\n\n41\n\nif not os.path.exists(mindrecord_dir_train):\n\n42\n\nos.makedirs(mindrecord_dir_train)\n\n43\n\nprint(\"Create Mindrecord.\")\n\n44\n\nd", + "flags": [] + } + ] + }, + { + "legacy_id": "discrete_mathematics:001", + "course_id": "discrete_mathematics", + "query": "华南理工大学2021-2022学年第一学期期末试卷主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-002:p1:c01", + "exists": true, + "source_id": "discrete-mathematics-002", + "source_title": "华南理工大学《离散数学》2021-2022学年第一学期期末试卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "8b49bb3f64b2f1ba621e38438be102cd77dc13d996b7ee3028627ace9ef13873", + "text_excerpt": "![page-001.jpg](assets/discrete-mathematics-002/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "discrete_mathematics:002", + "course_id": "discrete_mathematics", + "query": "我想先复习华南理工大学2021-2022学年第一学期期末试卷,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-002:p2:c01", + "exists": true, + "source_id": "discrete-mathematics-002", + "source_title": "华南理工大学《离散数学》2021-2022学年第一学期期末试卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "aeae7adc3e20463203284ecdb90b65913958df998b0a00b4eac508253f03c202", + "text_excerpt": "![page-002.jpg](assets/discrete-mathematics-002/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "discrete_mathematics:003", + "course_id": "discrete_mathematics", + "query": "复习华南理工大学2021-2022学年第一学期期末试卷时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-002:p3:c01", + "exists": true, + "source_id": "discrete-mathematics-002", + "source_title": "华南理工大学《离散数学》2021-2022学年第一学期期末试卷", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "2f0d2e612187109c8c326a8293179b6df53177b17d4884d68bbb7bf0de9f0d9c", + "text_excerpt": "![page-003.jpg](assets/discrete-mathematics-002/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "discrete_mathematics:004", + "course_id": "discrete_mathematics", + "query": "华南理工大学2021-2022学年第一学期期末试卷里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-002:p4:c01", + "exists": true, + "source_id": "discrete-mathematics-002", + "source_title": "华南理工大学《离散数学》2021-2022学年第一学期期末试卷", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "58b9aea61aea2feb7e5068a0629142f6212d79a8b05de29d0e47dfa49d4020d1", + "text_excerpt": "![page-004.jpg](assets/discrete-mathematics-002/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "discrete_mathematics:005", + "course_id": "discrete_mathematics", + "query": "学习华南理工大学2021-2022学年第一学期期末试卷时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-002:p5:c01", + "exists": true, + "source_id": "discrete-mathematics-002", + "source_title": "华南理工大学《离散数学》2021-2022学年第一学期期末试卷", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "49558278f6ded0642679501c6e62829b6acf5fbaf8d4ab5c4de4e3a9f10e12c8", + "text_excerpt": "![page-005.jpg](assets/discrete-mathematics-002/page-005.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "discrete_mathematics:006", + "course_id": "discrete_mathematics", + "query": "考试会怎么考试卷 中文?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p1:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "1b8a406b0ad477cad1600ef929b5c5b6b76e1133d8a6a8a9d9f89b43331e783c", + "text_excerpt": "![image](assets/discrete-mathematics-003/image-001.jpeg)\n\n![image](assets/discrete-mathematics-003/image-002.png)\n\n![image](assets/discrete-mathematics-003/image-003.png)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "discrete_mathematics:007", + "course_id": "discrete_mathematics", + "query": "试卷 中文主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p2:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "1d14a53084f8eecf44e912ffbe13e90bb52807d4af6d4035de36b71c6b25e90d", + "text_excerpt": "![image](assets/discrete-mathematics-003/image-004.jpeg)\n\n![image](assets/discrete-mathematics-003/image-005.png)\n\n![image](assets/discrete-mathematics-003/image-006.png)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "discrete_mathematics:008", + "course_id": "discrete_mathematics", + "query": "我想先复习试卷 中文,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p3:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "35bf5c286a60bc4b35aa7c247bf8732fccbdab3a43c68f5206c3f0d510afef11", + "text_excerpt": "… … … … … … … … … … … … … … … … 密… … … … … … … … … … … … … … … … … … 封… … … … … … … … … … … … … … … 线… … … … … … … … … … … … … …\n\n姓名 学号\n 学院 专业 座位号\n\n诚信应考,考试作弊将带来严重后果!\n\n华南理工大学期末考试\n\n《离散数学》试卷", + "flags": [] + } + ] + }, + { + "legacy_id": "discrete_mathematics:009", + "course_id": "discrete_mathematics", + "query": "复习试卷 中文时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p3:q-discrete-mathematics-003-q1:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "53f264542c46e1b8d98fae918ff8183ba51d4a807504c8ae4a02cf9a90936e56", + "text_excerpt": "2. 所有答案请直接答在试卷上;", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "discrete_mathematics:010", + "course_id": "discrete_mathematics", + "query": "试卷 中文里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p3:q-discrete-mathematics-003-q2:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "b95b5395b120816414b5a2d99df26cedef15871d659a4e91b12f4532c73915f3", + "text_excerpt": "3.考试形式:闭卷;", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "discrete_mathematics:011", + "course_id": "discrete_mathematics", + "query": "学习试卷 中文时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p3:q-discrete-mathematics-003-q3:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "6e1d72766d3530fd5de56bd739ca262747a7e67f3df475ead7d0565511ea2eb3", + "text_excerpt": "4. 本试卷共 五 大题,满分100 分,\n考试时间120 分钟。\n题 号\n一\n二\n三\n四\n五\n总分\n得 分\n评卷人", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "discrete_mathematics:012", + "course_id": "discrete_mathematics", + "query": "考试会怎么考试卷 中文?,对应第4题", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p3:q-discrete-mathematics-003-q4:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "b7c1f5bcf79ff9a325b86fa82d0ed115bb60eda73c1b000908e171e94d63a0f6", + "text_excerpt": "一、填空题(本大题共12 小题,每小题2 分,共24 分)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "discrete_mathematics:013", + "course_id": "discrete_mathematics", + "query": "求合式公式xP(x)→xQ(x,y)的前束范式________________。怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p3:q-discrete-mathematics-003-q5:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "faba8ab15ccbcdce4b95160dea374cdc9fd1a4f992b99c04b99d25f3865bfabb", + "text_excerpt": "1.求合式公式xP(x)→xQ(x,y)的前束范式________________。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "discrete_mathematics:014", + "course_id": "discrete_mathematics", + "query": "做设集合A={a, b, {a,b}, }, B = {{a,b}, },求B-A=_____________. _____________ ________ ( 密 封 线 内 不 答 题 )时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p3:q-discrete-mathematics-003-q6:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "7fa8a8cbee5db5f7f2c18cd35cd90a0419cd32dd060da9f7c506d581be9b61af", + "text_excerpt": "2.设集合A={a, b, {a,b}, }, B = {{a,b}, },求B-A=_____________.\n\n_____________ ________\n\n( 密 封 线 内 不 答 题 )", + "flags": [] + } + ] + }, + { + "legacy_id": "discrete_mathematics:015", + "course_id": "discrete_mathematics", + "query": "设p 与q 的真值为0, ,r s 的真值为1 则命题 ( ( ( ))) ( ) s q r p r p       的 真值是__________.的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p3:q-discrete-mathematics-003-q7:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "2314811d3503b2be5426f062576a21f0db269d89329fdcd70145d29cfce5977e", + "text_excerpt": "3.设p 与q 的真值为0, ,r s 的真值为1 则命题\n(\n(\n(\n)))\n(\n)\ns\nq\nr\np\nr\np\n\n\n\n\n\n\n的\n\n真值是__________.", + "flags": [] + } + ] + }, + { + "legacy_id": "discrete_mathematics:016", + "course_id": "discrete_mathematics", + "query": "能把设R 是在正整数集合Z 上如下定义的二元关系   , ( , ) ( 10) R x y x y Z x y        , 则它一共有 个有序对,且有自反性、对称性、传递性、反自反 性和反对称性的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p3:q-discrete-mathematics-003-q8:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "7bf26bb1e45216c50afec00c763082a96b38a3939f38e1bd9de9ae6b183da63a", + "text_excerpt": "4.设R 是在正整数集合Z 上如下定义的二元关系\n\n\n\n,\n( ,\n)\n(\n10)\nR\nx y\nx y\nZ\nx\ny\n\n\n\n\n\n\n\n,\n\n则它一共有 个有序对,且有自反性、对称性、传递性、反自反\n\n性和反对称性各性质中的 性质。", + "flags": [] + } + ] + }, + { + "legacy_id": "discrete_mathematics:017", + "course_id": "discrete_mathematics", + "query": "做公式x(P(x)→Q(x,y))→S(x)中的自由变元为________________,约束变元为 ________________。时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p3:q-discrete-mathematics-003-q9:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "b23ea7925bca5e40a447d97ea86b8d87364513afdfddcde6b23a4c196157e0e8", + "text_excerpt": "5.公式x(P(x)→Q(x,y))→S(x)中的自由变元为________________,约束变元为\n\n________________。", + "flags": [] + } + ] + }, + { + "legacy_id": "discrete_mathematics:018", + "course_id": "discrete_mathematics", + "query": "这类题一般怎么考?能用设有命题T(x): x 是火车,C(x): x 是汽车,Q(x, y): x 跑得比y 快,那么命题 “有的汽车比一些火车跑得快”的逻辑表达式是______________________.举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p3:q-discrete-mathematics-003-q10:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "22a8b2a29a9110bcfb86f7f33d340fbe13a256f929f64fe1a1c723c8d74c37f7", + "text_excerpt": "6.设有命题T(x): x 是火车,C(x): x 是汽车,Q(x, y): x 跑得比y 快,那么命题\n\n“有的汽车比一些火车跑得快”的逻辑表达式是______________________.", + "flags": [] + } + ] + }, + { + "legacy_id": "discrete_mathematics:019", + "course_id": "discrete_mathematics", + "query": "设G 是n 阶m 条边的无向图,若G 连通且m=__________则G 是无向树.怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p3:q-discrete-mathematics-003-q11:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "9df8e65a20774e4a43ef4ae0c9fa47f679aa6f25612fbb6a8ecaa9ae6dbf3f39", + "text_excerpt": "7.设G 是n 阶m 条边的无向图,若G 连通且m=__________则G 是无向树.", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "discrete_mathematics:020", + "course_id": "discrete_mathematics", + "query": "做设X={1,2,3},f:X→X,g:X→X,f={<1, 2>,<2,3>,<3,1>}, g={<1,2>,<2,3>,<3,3>},则f-1 g=________________,gf=时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p3:q-discrete-mathematics-003-q12:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "2e0fbf41dfdd1d0f2fec39f4e21cb213d7dfd014704241129d5df9af645b50fb", + "text_excerpt": "8.设X={1,2,3},f:X→X,g:X→X,f={<1, 2>,<2,3>,<3,1>},\n\ng={<1,2>,<2,3>,<3,3>},则f-1 g=________________,gf=________________。", + "flags": [] + } + ] + }, + { + "legacy_id": "discrete_mathematics:021", + "course_id": "discrete_mathematics", + "query": "不能再分解的命题称为________________,至少包含一个联结词的命题称为 试卷A 第 1 页 共 6 页的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p3:q-discrete-mathematics-003-q13:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "617e351b70b05d552cd2bcfd0bc96b33375dceebea10e17bae50dd2808a1797a", + "text_excerpt": "9. 不能再分解的命题称为________________,至少包含一个联结词的命题称为\n\n《离散数学》试卷A 第 1 页 共 6 页", + "flags": [] + } + ] + }, + { + "legacy_id": "discrete_mathematics:022", + "course_id": "discrete_mathematics", + "query": "能把.的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p4:q-discrete-mathematics-003-q13:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "fe3867f13436a8d16db9bba3d3407810eceb03cec40d118490e67b974361ce4a", + "text_excerpt": "________________.", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "discrete_mathematics:023", + "course_id": "discrete_mathematics", + "query": "做连通无向图G 含有欧拉回路的充分必要条件是 . 11.设集合A={,{a}},则A 的幂集P = , |P |=_____________________________。时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p4:q-discrete-mathematics-003-q14:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "ae2af47dbc5c14ec023dfdd75c9c2a1f293a6ed2c5c9ffcf58e1419b2ace5f52", + "text_excerpt": "10. 连通无向图G 含有欧拉回路的充分必要条件是 .\n11.设集合A={,{a}},则A 的幂集P(A)= ,\n |P(A)|=_____________________________。", + "flags": [] + } + ] + }, + { + "legacy_id": "discrete_mathematics:024", + "course_id": "discrete_mathematics", + "query": "这类题一般怎么考?能用设G = , G’ = 为两个图(同为无向图或有向图), 若E’ Í E 且 _______________, 则称G’是G 的子图, 若E’ Í E 且_______________, 则称举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p4:q-discrete-mathematics-003-q15:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "16e7aeb86347ce39547a3d93d77b7e55a40324b7862e34484e7e665d1ce03130", + "text_excerpt": "12. 设G = , G’ = 为两个图(同为无向图或有向图), 若E’ Í E 且\n_______________, 则称G’是G 的子图, 若E’ Í E 且_______________, 则称G’\n是G 的生成子图。", + "flags": [] + } + ] + }, + { + "legacy_id": "discrete_mathematics:025", + "course_id": "discrete_mathematics", + "query": "单选题 (本大题共12 小题,每小题,共怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p4:q-discrete-mathematics-003-q16:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "5cd96c2952922432771c7bb98ab0d57e15e8ced8f1154c48cde24b95024711ad", + "text_excerpt": "二、单选题 (本大题共12 小题,每小题2 分,共26 分)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "discrete_mathematics:026", + "course_id": "discrete_mathematics", + "query": "做下列命题公式为重言式的是 b时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p4:q-discrete-mathematics-003-q17:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "ea937d4965fcc9d04c6428a20b6853275964f95670e1d978620a5e421da4d38d", + "text_excerpt": "1.下列命题公式为重言式的是( b )\n\nA. (p∨┐p)→q. B.p→ (p∨q) C.q∧┐q D.( p→p)→q", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "discrete_mathematics:027", + "course_id": "discrete_mathematics", + "query": "下列语句中为命题的是( d)的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p4:q-discrete-mathematics-003-q18:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "f70937091200909ce6d87e7777755cedb774db509c9b0126f923f14c828baf41", + "text_excerpt": "2.下列语句中为命题的是( d)\n\nA.你好吗?\n\nB.人有6 指.\n\nC.我所说的是假的.\n\nD.明天是晴天.\n\n3. 设D=为有向图,V={a, b, c, d, e, f}, E={, , , ,\n\n}是( c )\n\nA.强连通图\nB.单向连通图\n\nC.弱连通图\nD.不连通图", + "flags": [] + } + ] + }, + { + "legacy_id": "discrete_mathematics:028", + "course_id": "discrete_mathematics", + "query": "能把集合A={a,b,c}上的下列关系矩阵中符合偏序关系条件的是( d )             1 0 1 0 0 1 1 0 0 0 1 1 1 1 0 1         的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p4:q-discrete-mathematics-003-q19:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "2927c98a9071c8f3fb4f51ea53b3486c74055200ede771714a10c950dee4913f", + "text_excerpt": "4.集合A={a,b,c}上的下列关系矩阵中符合偏序关系条件的是( d )\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n1\n0\n1\n0\n0\n1 1\n0\n0\n0\n1 1\n1 1\n0\n1\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n1\n0\n1\n0\n1\n0\n1\n0\n1\n\n1\n0\n1\n1 1\n0\n0\n0\n1\n\n1 1 1\n0\n1\n0\n0\n1 1\n\nA.\n\nB.\n\nC.\n\nD.", + "flags": [] + } + ] + }, + { + "legacy_id": "discrete_mathematics:029", + "course_id": "discrete_mathematics", + "query": "做设A={1,2,3},A 上二元关系S={<1,1>,<1,2>,<3,2>,<3,3>},则S 是 b时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p4:q-discrete-mathematics-003-q20:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "02b4e54f038761424808c68e644c0070fc4c786998a50db6c6dbda9620d0ffee", + "text_excerpt": "5.设A={1,2,3},A 上二元关系S={<1,1>,<1,2>,<3,2>,<3,3>},则S 是\n\n( b )\n\nA.自反关系 B.传递关系C.对称关系 D. 反自反关系\n\n6. 设A={a,b,c,d},A 上的等价关系R={, , , }∪IA,则对\n\n应于R 的A 的划分是( d )\n\nA.{{a},{b, c},{d}}\nB.{{a, b},{c}, {d}}\n\nC.{{a},{b},{c},{d}}\nD", + "flags": [] + } + ] + }, + { + "legacy_id": "discrete_mathematics:030", + "course_id": "discrete_mathematics", + "query": "这类题一般怎么考?能用以下非负整数列可简单图化为一个欧拉图的是( d )举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "discrete-mathematics-003:p5:q-discrete-mathematics-003-q21:c01", + "exists": true, + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "7d2bf2cda769f8a07e75a050d96c521f526225ef49260edf24501dcc6253eeae", + "text_excerpt": "7. 以下非负整数列可简单图化为一个欧拉图的是( d )\n\nA. {2, 2, 2, 2, 0} B. {4, 2, 6, 2, 2}\n\nC. {2, 2, 3, 4, 1} D. {4, 2, 2, 4, 2}", + "flags": [] + } + ] + }, + { + "legacy_id": "electrical_engineering:001", + "course_id": "electrical_engineering", + "query": "2021年复习资料主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-001:p1:c01", + "exists": true, + "source_id": "electrical-engineering-001", + "source_title": "2021年电工学复习资料", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "f4d867d1e3568d079f29814a803319925b893c5265a984826be7567d569b26a5", + "text_excerpt": "![page-001.jpg](assets/electrical-engineering-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:002", + "course_id": "electrical_engineering", + "query": "我想先复习2021年复习资料,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-001:p2:c01", + "exists": true, + "source_id": "electrical-engineering-001", + "source_title": "2021年电工学复习资料", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "1e0ca37607bae212ea9c410124407be13178ae6334ee4f1faf27c3e0511814fa", + "text_excerpt": "![page-002.jpg](assets/electrical-engineering-001/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:003", + "course_id": "electrical_engineering", + "query": "复习2021年复习资料时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-001:p3:c01", + "exists": true, + "source_id": "electrical-engineering-001", + "source_title": "2021年电工学复习资料", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "4350dce8d7ef0c5100e48f7f0f874e4b0bcf951c022bb55afbef1f70cf073774", + "text_excerpt": "![page-003.jpg](assets/electrical-engineering-001/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:004", + "course_id": "electrical_engineering", + "query": "2021年复习资料里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-001:p4:c01", + "exists": true, + "source_id": "electrical-engineering-001", + "source_title": "2021年电工学复习资料", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "1f6028fe180f2721cae82ebdfe2f851df4c08f168056d757cb084f33aa424d11", + "text_excerpt": "![page-004.jpg](assets/electrical-engineering-001/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:005", + "course_id": "electrical_engineering", + "query": "学习2021年复习资料时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-001:p5:c01", + "exists": true, + "source_id": "electrical-engineering-001", + "source_title": "2021年电工学复习资料", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "1345aeb786fd6bd1cbf824194b990f1f137db62f7c111f6b9bc8c05c16d2cffb", + "text_excerpt": "![page-005.jpg](assets/electrical-engineering-001/page-005.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:006", + "course_id": "electrical_engineering", + "query": "考试会怎么考2021年复习资料?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-001:p6:c01", + "exists": true, + "source_id": "electrical-engineering-001", + "source_title": "2021年电工学复习资料", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "13e9ab9c554922b2405c784e727616a8be5963fe2ad0f6f1885dfc39fd56a05f", + "text_excerpt": "![page-006.jpg](assets/electrical-engineering-001/page-006.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:007", + "course_id": "electrical_engineering", + "query": "2021年复习资料主要讲什么?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-001:p7:c01", + "exists": true, + "source_id": "electrical-engineering-001", + "source_title": "2021年电工学复习资料", + "locator_type": "page", + "locator_start": 7, + "text_sha256": "86915ba7fc5caea74f3d2cbbea22792ebc6e71e702e64a4fc0bdea4f6d3488f1", + "text_excerpt": "![page-007.jpg](assets/electrical-engineering-001/page-007.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:008", + "course_id": "electrical_engineering", + "query": "我想先复习第七版下册,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p1:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "208bf787bb33a77aee4a0405bf57622bba772308d5d0e63bdc863e5cb79630d8", + "text_excerpt": "![page-001.jpg](assets/electrical-engineering-002/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:009", + "course_id": "electrical_engineering", + "query": "复习第七版下册时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p2:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "e42fe8eba2577250592c59987aa808259658e11f953a5a6103ac873f5d129464", + "text_excerpt": "![page-002.jpg](assets/electrical-engineering-002/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:010", + "course_id": "electrical_engineering", + "query": "第七版下册里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p3:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "657c784bf5b52459d7ddc53df4f671299da352f3588b4f3e2a80eb1169c7159f", + "text_excerpt": "![page-003.jpg](assets/electrical-engineering-002/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:011", + "course_id": "electrical_engineering", + "query": "学习第七版下册时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p4:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "07f1d7a34fa918287c0ba0d76bd6a91249e9dff7f9f83222ac24570e08b215ac", + "text_excerpt": "![page-004.jpg](assets/electrical-engineering-002/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:012", + "course_id": "electrical_engineering", + "query": "考试会怎么考第七版下册?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p5:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "c3d751cd8817f99e64767690c4c65b2ab41e5af29d342f2033162be66c8a1157", + "text_excerpt": "![page-005.jpg](assets/electrical-engineering-002/page-005.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:013", + "course_id": "electrical_engineering", + "query": "第七版下册主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p6:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "abb75ff7fdfa602906f4ed31aea7c0b30e8a6cd8aebad55cc39a3bb564af2ca2", + "text_excerpt": "![page-006.jpg](assets/electrical-engineering-002/page-006.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:014", + "course_id": "electrical_engineering", + "query": "我想先复习第七版下册,应该从哪里开始?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p7:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 7, + "text_sha256": "ceacd12f4e16cd37f66b4763d49a879b29c42fb54f65877a777a464c6e89dfe5", + "text_excerpt": "![page-007.jpg](assets/electrical-engineering-002/page-007.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:015", + "course_id": "electrical_engineering", + "query": "复习第七版下册时哪些内容最重要?,见第8页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p8:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 8, + "text_sha256": "90b5300df0b4299b32339fd848a682e528f29d8852657621d9ff094cc396784f", + "text_excerpt": "![page-008.jpg](assets/electrical-engineering-002/page-008.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:016", + "course_id": "electrical_engineering", + "query": "第七版下册里的方法或结论怎么理解?,见第9页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p9:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 9, + "text_sha256": "ad2aaa933e6610e06af184fc6e1dd168a2bb43f19f5fd5b804d614848dbc7ac4", + "text_excerpt": "![page-009.jpg](assets/electrical-engineering-002/page-009.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:017", + "course_id": "electrical_engineering", + "query": "学习第七版下册时哪些概念容易混淆?,见第10页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p10:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 10, + "text_sha256": "41f2281a9756a1049bf48e4c152fde5f2b93ad76df31fc2daddbe2dffd6bb613", + "text_excerpt": "![page-010.jpg](assets/electrical-engineering-002/page-010.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:018", + "course_id": "electrical_engineering", + "query": "考试会怎么考第七版下册?,见第11页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p11:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 11, + "text_sha256": "f2c8dd7ea8af726025fa895d5396f18b529ef0599249a14f9d58b8aded1f7ae3", + "text_excerpt": "![page-011.jpg](assets/electrical-engineering-002/page-011.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:019", + "course_id": "electrical_engineering", + "query": "第七版下册主要讲什么?,见第12页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p12:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 12, + "text_sha256": "e65d01bb7ebec3dd4546660f9c8d27e263f255503f2668e1d48a477f7ab9497f", + "text_excerpt": "![page-012.jpg](assets/electrical-engineering-002/page-012.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:020", + "course_id": "electrical_engineering", + "query": "我想先复习第七版下册,应该从哪里开始?,见第13页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p13:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 13, + "text_sha256": "cc60789e5eedcf6ee982af587f9af2a1c93e029f6324da60ab439c74f8cae505", + "text_excerpt": "![page-013.jpg](assets/electrical-engineering-002/page-013.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:021", + "course_id": "electrical_engineering", + "query": "复习第七版下册时哪些内容最重要?,见第14页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p14:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 14, + "text_sha256": "2a08c4b38e58bd3c416f8345b498817a94dbabda7cacca3c27bcf855d5942ff7", + "text_excerpt": "![page-014.jpg](assets/electrical-engineering-002/page-014.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:022", + "course_id": "electrical_engineering", + "query": "第七版下册里的方法或结论怎么理解?,见第15页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p15:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 15, + "text_sha256": "5569b28bd9195533670e9192fb0c0f93bb397fac090bf4c0331ef03ba7a720cb", + "text_excerpt": "![page-015.jpg](assets/electrical-engineering-002/page-015.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:023", + "course_id": "electrical_engineering", + "query": "学习第七版下册时哪些概念容易混淆?,见第16页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p16:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 16, + "text_sha256": "8aaa8b9177dcf90d6fed61e6d6fb602ccf5205673d86be8129d852701d919889", + "text_excerpt": "![page-016.jpg](assets/electrical-engineering-002/page-016.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:024", + "course_id": "electrical_engineering", + "query": "考试会怎么考第七版下册?,见第17页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p17:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 17, + "text_sha256": "385b082f0cc909c1ec4bdb3f7c7e05c4652d8c6c25f4029f79932958bca48de6", + "text_excerpt": "![page-017.jpg](assets/electrical-engineering-002/page-017.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:025", + "course_id": "electrical_engineering", + "query": "第七版下册主要讲什么?,见第18页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p18:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 18, + "text_sha256": "1eb0bd52927c7794abe89096d63b0ab2c766242aa9214929bac562e931a34ef0", + "text_excerpt": "![page-018.jpg](assets/electrical-engineering-002/page-018.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:026", + "course_id": "electrical_engineering", + "query": "我想先复习第七版下册,应该从哪里开始?,见第19页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p19:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 19, + "text_sha256": "0ed1cc7fe6cdc99ee0a6b8e9f28b5f2dfc6d637bad78eec4ae8d0514b3a5ec8e", + "text_excerpt": "![page-019.jpg](assets/electrical-engineering-002/page-019.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:027", + "course_id": "electrical_engineering", + "query": "复习第七版下册时哪些内容最重要?,见第20页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p20:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 20, + "text_sha256": "5a311d640c88ffd2c4cc094b6cf590d286a3e92f85ff20ba4d55f79a78baf7b5", + "text_excerpt": "![page-020.jpg](assets/electrical-engineering-002/page-020.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:028", + "course_id": "electrical_engineering", + "query": "第七版下册里的方法或结论怎么理解?,见第21页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p21:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 21, + "text_sha256": "2c651cf45b63f091955359b9104f72ebcac848bfad616284573341c5721ad90f", + "text_excerpt": "![page-021.jpg](assets/electrical-engineering-002/page-021.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:029", + "course_id": "electrical_engineering", + "query": "学习第七版下册时哪些概念容易混淆?,见第22页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p22:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 22, + "text_sha256": "aaa68f1ca9e2cc598133b9fc7d87518079b4c27c405a476fdd7198e4b6776303", + "text_excerpt": "![page-022.jpg](assets/electrical-engineering-002/page-022.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering:030", + "course_id": "electrical_engineering", + "query": "考试会怎么考第七版下册?,见第23页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-002:p23:c01", + "exists": true, + "source_id": "electrical-engineering-002", + "source_title": "第七版下册", + "locator_type": "page", + "locator_start": 23, + "text_sha256": "959f9eea57169ef0c0b3e4f7712e21fab961da3a0c9335167006ef66900c5139", + "text_excerpt": "![page-023.jpg](assets/electrical-engineering-002/page-023.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:001", + "course_id": "electrical_engineering_lab", + "query": "实验主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-001:p1:c01", + "exists": true, + "source_id": "electrical-engineering-lab-001", + "source_title": "实验", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "af61b127afca1a35dae2f1459ca51daf864b02420c6acac09b061d75a80163be", + "text_excerpt": "![page-001.jpg](assets/electrical-engineering-lab-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:002", + "course_id": "electrical_engineering_lab", + "query": "我想先复习实验,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-001:p2:c01", + "exists": true, + "source_id": "electrical-engineering-lab-001", + "source_title": "实验", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "ce1959070353ea3af203ddcfb4026f425eb14bbcc6990f5ee000ce1a3b94f24b", + "text_excerpt": "![page-002.jpg](assets/electrical-engineering-lab-001/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:003", + "course_id": "electrical_engineering_lab", + "query": "复习实验时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-001:p3:c01", + "exists": true, + "source_id": "electrical-engineering-lab-001", + "source_title": "实验", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "148366cbd214ae6605ce1f8fe5f5d0281abbf7b8e22a2ee278fdc680ac331c50", + "text_excerpt": "![page-003.jpg](assets/electrical-engineering-lab-001/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:004", + "course_id": "electrical_engineering_lab", + "query": "实验里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-001:p4:c01", + "exists": true, + "source_id": "electrical-engineering-lab-001", + "source_title": "实验", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "d4aeb49311aafd28e0de4e5cd95501aa70498df5199c073f0cf1d86e494b7beb", + "text_excerpt": "![page-004.jpg](assets/electrical-engineering-lab-001/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:005", + "course_id": "electrical_engineering_lab", + "query": "学习这张图片时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-002:h-微信图片_20250301151417:c01", + "exists": true, + "source_id": "electrical-engineering-lab-002", + "source_title": "微信图片_20250301151417", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ddd268ef3f8d225acea8134b44a2e621fad6037fb821abe47e94a695279ccb9f", + "text_excerpt": "![page-001.png](assets/electrical-engineering-lab-002/page-001.png)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:006", + "course_id": "electrical_engineering_lab", + "query": "考试会怎么考自选实验?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-003:p1:c01", + "exists": true, + "source_id": "electrical-engineering-lab-003", + "source_title": "自选实验", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "2e5b64d14eb921871ed10c131177c17151f7fae09839c7cd6e8e899b4e842a3d", + "text_excerpt": "![page-001.jpg](assets/electrical-engineering-lab-003/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:007", + "course_id": "electrical_engineering_lab", + "query": "自选实验主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-003:p2:c01", + "exists": true, + "source_id": "electrical-engineering-lab-003", + "source_title": "自选实验", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "dae5d1883674a7744db334ac5fbb7ac83dc802941542dbe6f2f8f4bbce84aeec", + "text_excerpt": "![page-002.jpg](assets/electrical-engineering-lab-003/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:008", + "course_id": "electrical_engineering_lab", + "query": "我想先复习自选实验,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-003:p3:c01", + "exists": true, + "source_id": "electrical-engineering-lab-003", + "source_title": "自选实验", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "1bb7cdc9c84dde983f54fecf37ef6d38f724d181cbacd8f0318a2711e24758cd", + "text_excerpt": "![page-003.jpg](assets/electrical-engineering-lab-003/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:009", + "course_id": "electrical_engineering_lab", + "query": "复习自选实验时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-003:p4:c01", + "exists": true, + "source_id": "electrical-engineering-lab-003", + "source_title": "自选实验", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "68a4742328b35b03f800acba86b5dbe6786c462061f82d2ed6d78dbec366c128", + "text_excerpt": "![page-004.jpg](assets/electrical-engineering-lab-003/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:010", + "course_id": "electrical_engineering_lab", + "query": "实验7里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-004:p1:c01", + "exists": true, + "source_id": "electrical-engineering-lab-004", + "source_title": "实验7,", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "5b3652f226756a7aaed7843ec194e118f6eff9dbf9bd297894d41a38c643a46d", + "text_excerpt": "![page-001.jpg](assets/electrical-engineering-lab-004/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:011", + "course_id": "electrical_engineering_lab", + "query": "学习实验7时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-004:p2:c01", + "exists": true, + "source_id": "electrical-engineering-lab-004", + "source_title": "实验7,", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "14472acbe4d8ffd083cb9e25249e486d6db2ac0617c884a33e6987105606a900", + "text_excerpt": "![page-002.jpg](assets/electrical-engineering-lab-004/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:012", + "course_id": "electrical_engineering_lab", + "query": "考试会怎么考实验7?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-004:p3:c01", + "exists": true, + "source_id": "electrical-engineering-lab-004", + "source_title": "实验7,", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "c62e768e1cbc3143235fb286226a7eed8bd200bf2aa130b26a6b5abdd263718c", + "text_excerpt": "![page-003.jpg](assets/electrical-engineering-lab-004/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:013", + "course_id": "electrical_engineering_lab", + "query": "实验7主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-004:p4:c01", + "exists": true, + "source_id": "electrical-engineering-lab-004", + "source_title": "实验7,", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "d38879ed2d2398955b74122b14b93a50a99fc1e8a8cca58cb74dc393250f9073", + "text_excerpt": "![page-004.jpg](assets/electrical-engineering-lab-004/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:014", + "course_id": "electrical_engineering_lab", + "query": "我想先复习实验7,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-004:p5:c01", + "exists": true, + "source_id": "electrical-engineering-lab-004", + "source_title": "实验7,", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "5dcacbf8ddc74b44bda49fb8226e21501b47e7584abc8b3bb35fd4120fc5e73c", + "text_excerpt": "![page-005.jpg](assets/electrical-engineering-lab-004/page-005.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:015", + "course_id": "electrical_engineering_lab", + "query": "复习实验5时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-005:p1:c01", + "exists": true, + "source_id": "electrical-engineering-lab-005", + "source_title": "实验5,", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "621a24694e68b854951157e9464fd0e3eca5629e66c34d056117723a9e163c03", + "text_excerpt": "![page-001.jpg](assets/electrical-engineering-lab-005/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:016", + "course_id": "electrical_engineering_lab", + "query": "实验5里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-005:p2:c01", + "exists": true, + "source_id": "electrical-engineering-lab-005", + "source_title": "实验5,", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "0d9a7fa747752823c29af401c3015d1c8189b6f031c205151be7aefe8b67215a", + "text_excerpt": "![page-002.jpg](assets/electrical-engineering-lab-005/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:017", + "course_id": "electrical_engineering_lab", + "query": "学习实验5时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-005:p3:c01", + "exists": true, + "source_id": "electrical-engineering-lab-005", + "source_title": "实验5,", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "7a965f310c62613247fdb5210801334653556acf28a83c2bbbc3bd26058fd5c6", + "text_excerpt": "![page-003.jpg](assets/electrical-engineering-lab-005/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:018", + "course_id": "electrical_engineering_lab", + "query": "考试会怎么考实验5?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-005:p4:c01", + "exists": true, + "source_id": "electrical-engineering-lab-005", + "source_title": "实验5,", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "42025b32b278604c20c3afcad46fca07b93cb3eef28e5f39419d41e872ba723e", + "text_excerpt": "![page-004.jpg](assets/electrical-engineering-lab-005/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:019", + "course_id": "electrical_engineering_lab", + "query": "实验5主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-005:p5:c01", + "exists": true, + "source_id": "electrical-engineering-lab-005", + "source_title": "实验5,", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "bd46e2c3f0918f172fd96a9866b9af0d3d60d7a045a8ee9b9d395a522f340ae5", + "text_excerpt": "![page-005.jpg](assets/electrical-engineering-lab-005/page-005.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:020", + "course_id": "electrical_engineering_lab", + "query": "我想先复习实验5,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-005:p6:c01", + "exists": true, + "source_id": "electrical-engineering-lab-005", + "source_title": "实验5,", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "c4c9591798f9cce1140291282f1af9d261f05e9adb95ed3b77856788f1c661e1", + "text_excerpt": "![page-006.jpg](assets/electrical-engineering-lab-005/page-006.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:021", + "course_id": "electrical_engineering_lab", + "query": "复习实验20时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-006:p1:c01", + "exists": true, + "source_id": "electrical-engineering-lab-006", + "source_title": "实验20,", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "46178f3e5e6df87cfcfdc5192c4c81d913c95ba8fe70564a82599d60c5f223fe", + "text_excerpt": "![page-001.jpg](assets/electrical-engineering-lab-006/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:022", + "course_id": "electrical_engineering_lab", + "query": "实验20里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-006:p2:c01", + "exists": true, + "source_id": "electrical-engineering-lab-006", + "source_title": "实验20,", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "ec64abed4de5f398ccd1d4e73b7993572b0c065a3cc4526b92b8b0a37bb8b16c", + "text_excerpt": "![page-002.jpg](assets/electrical-engineering-lab-006/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:023", + "course_id": "electrical_engineering_lab", + "query": "学习实验20时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-006:p3:c01", + "exists": true, + "source_id": "electrical-engineering-lab-006", + "source_title": "实验20,", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "9ad2e6a04f32d9382264c6524a094ea434f2099b7c8ccac6e3a7a7b21468d77a", + "text_excerpt": "![page-003.jpg](assets/electrical-engineering-lab-006/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:024", + "course_id": "electrical_engineering_lab", + "query": "考试会怎么考实验20?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-006:p4:c01", + "exists": true, + "source_id": "electrical-engineering-lab-006", + "source_title": "实验20,", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "53f74abd2faa01432878ed44eebe30b9e2a8facbb54fe0e59a16712ad005f8a8", + "text_excerpt": "![page-004.jpg](assets/electrical-engineering-lab-006/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:025", + "course_id": "electrical_engineering_lab", + "query": "实验20主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-006:p5:c01", + "exists": true, + "source_id": "electrical-engineering-lab-006", + "source_title": "实验20,", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "bfc48e2412323db45c6233df3667fbae0a3436b43236887d8eb84d00fdc008c9", + "text_excerpt": "![page-005.jpg](assets/electrical-engineering-lab-006/page-005.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:026", + "course_id": "electrical_engineering_lab", + "query": "我想先复习实验1,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-007:p1:c01", + "exists": true, + "source_id": "electrical-engineering-lab-007", + "source_title": "实验1,", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "b66ffe0c38c05348c8da3c80bb8bfc70dbf6b88e6802d933a5c9fa014c522d3f", + "text_excerpt": "![page-001.jpg](assets/electrical-engineering-lab-007/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:027", + "course_id": "electrical_engineering_lab", + "query": "复习实验1时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-007:p2:c01", + "exists": true, + "source_id": "electrical-engineering-lab-007", + "source_title": "实验1,", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "138c1b2ab5e2ea33ab2f76dd08bde66aa113dde977096af0517d1f70dd78b63d", + "text_excerpt": "![page-002.jpg](assets/electrical-engineering-lab-007/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:028", + "course_id": "electrical_engineering_lab", + "query": "实验1里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-007:p3:c01", + "exists": true, + "source_id": "electrical-engineering-lab-007", + "source_title": "实验1,", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "b2dd2069ef0f3c79ec95fa1e046ea87a17cd60fb60e9937282e0dce9891eae38", + "text_excerpt": "![page-003.jpg](assets/electrical-engineering-lab-007/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:029", + "course_id": "electrical_engineering_lab", + "query": "学习实验1时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-007:p4:c01", + "exists": true, + "source_id": "electrical-engineering-lab-007", + "source_title": "实验1,", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "1442249c56103d4d53287c9f5bdb8a31c163285b6780651455328bd309d8634d", + "text_excerpt": "![page-004.jpg](assets/electrical-engineering-lab-007/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "electrical_engineering_lab:030", + "course_id": "electrical_engineering_lab", + "query": "考试会怎么考实验1?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "electrical-engineering-lab-007:p5:c01", + "exists": true, + "source_id": "electrical-engineering-lab-007", + "source_title": "实验1,", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "c8d65d2b30627e15ef50f2a73847ec0704f249527bac313b5035fe3377a9dfd3", + "text_excerpt": "![page-005.jpg](assets/electrical-engineering-lab-007/page-005.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "embedded_systems:001", + "course_id": "embedded_systems", + "query": "第10章 DMA方式主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-001:s1:c01", + "exists": true, + "source_id": "embedded-systems-001", + "source_title": "ch10DMA", + "locator_type": "slide", + "locator_start": 1, + "text_sha256": "72e07509629ac8a7e836853a1c7e6c55a1ca68c88a12aa2c56ea0f727e8df82a", + "text_excerpt": "- 嵌入式微控制器原理及设计\n- —基于STM32及Proteus仿真开发\n- 配套PPT", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "embedded_systems:002", + "course_id": "embedded_systems", + "query": "我想先复习第10章 DMA方式,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-001:s2:c01", + "exists": true, + "source_id": "embedded-systems-001", + "source_title": "ch10DMA", + "locator_type": "slide", + "locator_start": 2, + "text_sha256": "6281506db080e014a1dcb8cd6dbf96ca169d49ff2a167343b364b01f66a1a7a5", + "text_excerpt": "![image](assets/embedded-systems-001/image-001.jpg)\n![image](assets/embedded-systems-001/image-002.png)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "embedded_systems:003", + "course_id": "embedded_systems", + "query": "复习第10章 DMA方式时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-001:s3:c01", + "exists": true, + "source_id": "embedded-systems-001", + "source_title": "ch10DMA", + "locator_type": "slide", + "locator_start": 3, + "text_sha256": "4572f7382e130156f32b401a157ffe43391a756304a80d06fe837e37b173036f", + "text_excerpt": "- 第10章 DMA\n- 10.1 DMA概述\n- 10.2 DMA应用实例", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "embedded_systems:004", + "course_id": "embedded_systems", + "query": "第10章 DMA方式里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-001:s4:c01", + "exists": true, + "source_id": "embedded-systems-001", + "source_title": "ch10DMA", + "locator_type": "slide", + "locator_start": 4, + "text_sha256": "f9c4016e6620a9d978e39dc162f65ef66728863b276ea0eebcc77640e94cc204", + "text_excerpt": "- 10.1 DMA概述\n- DMA(Direct Memory Access,直接存储器存取),是一种可以大大减轻CPU工作量的数据存取方式,因而被广泛地使用。早在8086的应用中就已经有Intel的这种典型的DMA控制器,而STM32的DMA则是以的类似外设的形式添加到Cortex内核之外的。\n- DMA的作用就是实现数据的直接传输,而去掉了传统数据传输需要CPU寄存器参与的环节,主要涉及四种情况的数据传输:外设到内存、内存到外设、内存到内存、外设到外设。", + "flags": [] + } + ] + }, + { + "legacy_id": "embedded_systems:005", + "course_id": "embedded_systems", + "query": "学习第10章 DMA方式时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-001:s5:c01", + "exists": true, + "source_id": "embedded-systems-001", + "source_title": "ch10DMA", + "locator_type": "slide", + "locator_start": 5, + "text_sha256": "59ec695c56d87c1b9b59026a5ec517009b03db82b1b6d17aeb5deb1366915711", + "text_excerpt": "- STM32芯片DMA的主要特性:\n- 10.1.1 STM32芯片DMA特性\n- (1)12个独立的可配置的通道(请求),DMA1有7个通道,DMA2有5个通道。\n- (2)每个通道都直接连接专用的硬件DMA请求,每个通道都同样支持软件触发。这些功能通过软件来配置。\n- (3)优先权可以通过软件编程设置(共有4级:很高、高、中等和低),假如在相等优先权时由硬件决定(请求0优先于请求1,其余类推)。\n- (4)独立的源和目标数据区的传输宽度(字节、半字、全字),模拟打包和拆", + "flags": [] + } + ] + }, + { + "legacy_id": "embedded_systems:006", + "course_id": "embedded_systems", + "query": "考试会怎么考第10章 DMA方式?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-001:s6:c01", + "exists": true, + "source_id": "embedded-systems-001", + "source_title": "ch10DMA", + "locator_type": "slide", + "locator_start": 6, + "text_sha256": "ea758946fbebb1f7451a608a60c9882be1cb3343064ec3815e90ecf8ed1b8243", + "text_excerpt": "![image](assets/embedded-systems-001/image-003.png)\n- DMA1控制器结构,有7个通道", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "embedded_systems:007", + "course_id": "embedded_systems", + "query": "第10章 DMA方式主要讲什么?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-001:s7:c01", + "exists": true, + "source_id": "embedded-systems-001", + "source_title": "ch10DMA", + "locator_type": "slide", + "locator_start": 7, + "text_sha256": "68af1830ea39364d7ab192646197beb9ea99a1d1148b638b793fc132fb2ae116", + "text_excerpt": "![image](assets/embedded-systems-001/image-004.png)\n- DMA2控制器结构,有5个通道", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "embedded_systems:008", + "course_id": "embedded_systems", + "query": "我想先复习第10章 DMA方式,应该从哪里开始?,见第8页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-001:s8:c01", + "exists": true, + "source_id": "embedded-systems-001", + "source_title": "ch10DMA", + "locator_type": "slide", + "locator_start": 8, + "text_sha256": "aada30ef7960213cb3e34487cfdd5d267caa645899aed2da178a43199c6934b1", + "text_excerpt": "- 10.1.2 STM32的DMA主要寄存器\n- DMA主要寄存器功能\n![image](assets/embedded-systems-001/image-005.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "embedded_systems:009", + "course_id": "embedded_systems", + "query": "复习第10章 DMA方式时哪些内容最重要?,见第9页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-001:s9:c01", + "exists": true, + "source_id": "embedded-systems-001", + "source_title": "ch10DMA", + "locator_type": "slide", + "locator_start": 9, + "text_sha256": "5e22f5da8b0fd8904c98df1a6befbf33afdfdc1abc57463333f374922e8673fc", + "text_excerpt": "- 10.2 DMA应用实例\n- 10.2.1 ADC数据采集DMA方式\n- 【例10.1】 以DMA方式对ADC的数据进行采集,利用DMA把数据从外设转移到内存。使用STM32CubeMX初始化ADC数据采集DMA模式。\n![image](assets/embedded-systems-001/image-006.png)\n- 配置内容:ADC采集连接DMA1的通道1;DMA方向是外设到内存;优先级高;DMA模式是Circular,DMA在配置为Circular模式时循环进", + "flags": [] + } + ] + }, + { + "legacy_id": "embedded_systems:010", + "course_id": "embedded_systems", + "query": "第10章 DMA方式里的方法或结论怎么理解?,见第10页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-001:s10:c01", + "exists": true, + "source_id": "embedded-systems-001", + "source_title": "ch10DMA", + "locator_type": "slide", + "locator_start": 10, + "text_sha256": "3a0990e05cbd04701d4ee47b5fb36bbe3fe6eaa70bd265fa43fcd163713f54d1", + "text_excerpt": "- 生成的代码如下:\n- 主程序相关DMA的主要内容如下:\n![image](assets/embedded-systems-001/image-007.png)\n![image](assets/embedded-systems-001/image-008.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "embedded_systems:011", + "course_id": "embedded_systems", + "query": "学习第10章 DMA方式时哪些概念容易混淆?,见第11页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-001:s11:c01", + "exists": true, + "source_id": "embedded-systems-001", + "source_title": "ch10DMA", + "locator_type": "slide", + "locator_start": 11, + "text_sha256": "3ef74668562f5a3c1b814dcffabe34cdc64ddc74469fab8c45cf229adef59b3f", + "text_excerpt": "- 10.2.2 串口发送DMA方式\n- 【例10.2】 通过实例对STM32的DMA进行讲解,以DMA方式使用串口发送数据,串口发送电路和前面的串行通信实例一样。此过程利用DMA把数据从内存转移到外设,这个过程是不需要内核干预的,所以在串口发送数据时,内核同时还可以进行其他操作。\n- 使用STM32CubeMX初始化串行通信DMA模式:\n![image](assets/embedded-systems-001/image-009.png)\n- 配置内容:串口发送USART1", + "flags": [] + } + ] + }, + { + "legacy_id": "embedded_systems:012", + "course_id": "embedded_systems", + "query": "考试会怎么考第10章 DMA方式?,见第12页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-001:s12:c01", + "exists": true, + "source_id": "embedded-systems-001", + "source_title": "ch10DMA", + "locator_type": "slide", + "locator_start": 12, + "text_sha256": "4dc2d6e5b181339b615a449066e05b2576e609b40031fb7eeaabf804cc0a22bb", + "text_excerpt": "- 生成的代码如下:\n- 在stm32f1xx_it.c程序中产生出相应DAM函数,如下:\n- 主程序相关DMA的主要内容如下\n![image](assets/embedded-systems-001/image-010.png)\n![image](assets/embedded-systems-001/image-011.png)\n![image](assets/embedded-systems-001/image-012.png)", + "flags": [] + } + ] + }, + { + "legacy_id": "embedded_systems:013", + "course_id": "embedded_systems", + "query": "第10章 DMA方式主要讲什么?,见第13页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-001:s13:c01", + "exists": true, + "source_id": "embedded-systems-001", + "source_title": "ch10DMA", + "locator_type": "slide", + "locator_start": 13, + "text_sha256": "7420d0a02bb65bca426f62c25b2d0b355b741197391dffd117a1d851c5929ee4", + "text_excerpt": "- 谢谢!", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "embedded_systems:014", + "course_id": "embedded_systems", + "query": "我想先复习第11章 其他接口,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-002:s1:c01", + "exists": true, + "source_id": "embedded-systems-002", + "source_title": "ch11其他接口", + "locator_type": "slide", + "locator_start": 1, + "text_sha256": "72e07509629ac8a7e836853a1c7e6c55a1ca68c88a12aa2c56ea0f727e8df82a", + "text_excerpt": "- 嵌入式微控制器原理及设计\n- —基于STM32及Proteus仿真开发\n- 配套PPT", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "embedded_systems:015", + "course_id": "embedded_systems", + "query": "复习第11章 其他接口时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-002:s2:c01", + "exists": true, + "source_id": "embedded-systems-002", + "source_title": "ch11其他接口", + "locator_type": "slide", + "locator_start": 2, + "text_sha256": "07811f4548ba44bdea7253440ea088de4b76c69009718eec19680510d09a62ce", + "text_excerpt": "![image](assets/embedded-systems-002/image-001.jpg)\n![image](assets/embedded-systems-002/image-002.png)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "embedded_systems:016", + "course_id": "embedded_systems", + "query": "第11章 其他接口里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-002:s3:c01", + "exists": true, + "source_id": "embedded-systems-002", + "source_title": "ch11其他接口", + "locator_type": "slide", + "locator_start": 3, + "text_sha256": "7cace5d18139deeecd9a08bf45641c68cca8dc1f24641892f6f00ace0cdf3d63", + "text_excerpt": "- 11.1 I2C总线\n- 11.2 CAN总线\n- 11.3 USB全速设备接口(USB)\n- 第11章 其他接口", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "embedded_systems:017", + "course_id": "embedded_systems", + "query": "学习第11章 其他接口时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-002:s4:c01", + "exists": true, + "source_id": "embedded-systems-002", + "source_title": "ch11其他接口", + "locator_type": "slide", + "locator_start": 4, + "text_sha256": "cab1725872378d5791ef3dd9cf74e34125dbcc2c7a40586f36d52787a3a49c25", + "text_excerpt": "- 11.1 I2C总线\n- I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线SDA(串行数据线)和SCL(串行时钟线)。它只需要两根线即可在连接于总线上的器件之间传送信息。SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线,接口电路为开漏输出.需通过上拉电阻接电源VCC。当总线空闲时.两根线都是高电平,连接总线的外同器件都是CMOS器件,输出级也是开漏电路.在总线上消耗的电流很小,因此,总线上扩展的器件数量主要由电容负载来决定,因为每个器件的总", + "flags": [] + } + ] + }, + { + "legacy_id": "embedded_systems:018", + "course_id": "embedded_systems", + "query": "考试会怎么考第11章 其他接口?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-002:s5:c01", + "exists": true, + "source_id": "embedded-systems-002", + "source_title": "ch11其他接口", + "locator_type": "slide", + "locator_start": 5, + "text_sha256": "fe2e06d0422f4f923692ced880fc9dbe98893000ab27587c4327f83c75e35c6d", + "text_excerpt": "- 数据的有效性:\n- 在传输数据的时候,SDA线必须在时钟的高电平周期保持稳定,SDA的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变 。\n- 起始和停止条件:\n- SCL 线是高电平时,SDA 线从高电平向低电平切换,这个情况表示起始条件;\n- SCL 线是高电平时,SDA 线由低电平向高电平切换,这个情况表示停止条件。\n- 字节格式:\n- 发送到SDA 线上的每个字节必须为8 位,每次传输可以发送的字节数量不受限制。每个字节后必须处理一个响应位。\n- 应答响", + "flags": [] + } + ] + }, + { + "legacy_id": "embedded_systems:019", + "course_id": "embedded_systems", + "query": "第11章 其他接口主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-002:s6:c01", + "exists": true, + "source_id": "embedded-systems-002", + "source_title": "ch11其他接口", + "locator_type": "slide", + "locator_start": 6, + "text_sha256": "f2491ebd315e1b44bded05933322070028c3f505cc07c6238327c159bbe4e9fa", + "text_excerpt": "- 寻址方式(7位地址方式):\n- 第一个字节的头7 位组成了从机地址,最低位(LSB)是第8 位,它决定了传输普通的和带重复开始条件的7位地址格式方向。第一个字节的最低位是\n- “0”,表示主机会写信息到被选中的从机;\n- “1”表示主机会向从机读信息。\n- 当发送了一个地址后,系统中的每个器件都在起始条件后将头7 位与它自己的地址比较,如果一样,器件会判定它被主机寻址,至于是从机接收器还是从机发送器,都由R/W 位决定。\n- 仲裁:\n- I2C是所主机总线,每个设备都可以", + "flags": [] + } + ] + }, + { + "legacy_id": "embedded_systems:020", + "course_id": "embedded_systems", + "query": "我想先复习第11章 其他接口,应该从哪里开始?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-002:s7:c01", + "exists": true, + "source_id": "embedded-systems-002", + "source_title": "ch11其他接口", + "locator_type": "slide", + "locator_start": 7, + "text_sha256": "430aaafa9012bf746ae54eee7fafb5489728b67278ad4d3613f32b061851befc", + "text_excerpt": "- 11.1.2 STM32芯片I2C总线\n- STM32芯片至少有一个I2C接口,提供多主机功能,可以实现所有I2C总线的时序、协议、仲裁和定时功能,支持标准和快速传输两种模式,同时与SMBus 2.0兼容。其中,STM32F103R6芯片有2路I2C总线。\n![image](assets/embedded-systems-002/image-004.png)\n- I2C接口引脚\n- 此接口可以下述4种模式中的一种运行:从发送器模式、从接收器模式、主发送器模式和主接收器模式", + "flags": [] + } + ] + }, + { + "legacy_id": "embedded_systems:021", + "course_id": "embedded_systems", + "query": "复习第11章 其他接口时哪些内容最重要?,见第8页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-002:s8:c01", + "exists": true, + "source_id": "embedded-systems-002", + "source_title": "ch11其他接口", + "locator_type": "slide", + "locator_start": 8, + "text_sha256": "7d26b733e2bdd862756f78109b838004a4676a49524f628bdceea9460b64b63f", + "text_excerpt": "- 主模式时,I2C接口启动数据传输并产生时钟信号。串行数据传输总是以起始条件开始并以停止条件结束下,起始条件和停止条件都是在主模式下由软件控制产生。\n- 从模式时,I2C接口能识别它自己的地址(7位或10位)和广播呼叫地址,软件能够控制开启或禁止广播呼叫地址的识别。\n- 数据和地址按8位/字节进行传输,高位在前。跟在起始条件后的1或2个字节是地址(7位模式为1个字节,10位模式为2个字节)。地址只在主模式发送,在1个字节传输的8个时钟后的第9个时钟期间,接收器必须回送1个应", + "flags": [] + } + ] + }, + { + "legacy_id": "embedded_systems:022", + "course_id": "embedded_systems", + "query": "第11章 其他接口里的方法或结论怎么理解?,见第9页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-002:s9:c01", + "exists": true, + "source_id": "embedded-systems-002", + "source_title": "ch11其他接口", + "locator_type": "slide", + "locator_start": 9, + "text_sha256": "b5089ed52bdf721e8147762491e2b9b7608f586be96a6f7810ae5277fe484af5", + "text_excerpt": "- I2C接口的功能框图如图\n![image](assets/embedded-systems-002/image-006.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "embedded_systems:023", + "course_id": "embedded_systems", + "query": "学习第11章 其他接口时哪些概念容易混淆?,见第10页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-002:s10:c01", + "exists": true, + "source_id": "embedded-systems-002", + "source_title": "ch11其他接口", + "locator_type": "slide", + "locator_start": 10, + "text_sha256": "1997157a0263331bbde41227fa42d99332d9410c1fe03829c215b78aa2571a4a", + "text_excerpt": "- 1. I2C从模式\n- 默认情况下,I2C接口总是工作在从模式。为了产生正确的时序,必须在I2C_CR2寄存器中设定该模块的输入时钟。输入时钟的频率必须至少是:标准模式下为:2MHz;快速模式下为:4MHz。\n- 一旦检测到起始条件,在SDA线上接收到的地址被送到移位寄存器。然后与芯片自己的地址OAR1和OAR2(当ENDUAL=1时)或者广播呼叫地址(若ENGC=1)相比较:(1)头段或地址不匹配:I2C接口将其忽略并等待另1个起始条件;(2)头段匹配(仅10位模式):", + "flags": [] + } + ] + }, + { + "legacy_id": "embedded_systems:024", + "course_id": "embedded_systems", + "query": "考试会怎么考第11章 其他接口?,见第11页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-002:s11:c01", + "exists": true, + "source_id": "embedded-systems-002", + "source_title": "ch11其他接口", + "locator_type": "slide", + "locator_start": 11, + "text_sha256": "5f3bc20258ab4e83fcbbbd64c0a9a58c34098145645adb84222da352377933e1", + "text_excerpt": "- (1)从发送器\n- 在接收到地址和清除ADDR位后,从发送器将字节从DR寄存器经由内部移位寄存器发送到SDA线上。从设备保持SCL为低电平,直到ADDR位被清除并且待发送数据已写入DR寄存器。\n- (2)从接收器\n- 在接收到地址并清除ADDR后,从接收器将通过内部移位寄存器从SDA线接收到的字节存进DR寄存器。I2C接口在接收到每个字节后都执行下列操作:如果设置了ACK位,则产生一个应答脉冲;硬件设置RxNE=1,如果设置了ITEVFEN和ITBUFEN位,则产生一个中", + "flags": [] + } + ] + }, + { + "legacy_id": "embedded_systems:025", + "course_id": "embedded_systems", + "query": "第11章 其他接口主要讲什么?,见第12页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-002:s12:c01", + "exists": true, + "source_id": "embedded-systems-002", + "source_title": "ch11其他接口", + "locator_type": "slide", + "locator_start": 12, + "text_sha256": "175ae5e4ca83f0a8b93ec04825b3778f290cd3cefd65ffaddcadf20620ef9fae", + "text_excerpt": "- 2. I2C主模式\n- 在主模式时,I2C接口启动数据传输并产生时钟信号。串行数据传输总是以起始条件开始并以停止条件结束。当通过START位在总线上产生了起始条件,设备就进入了主模式。\n- 主模式的操作顺序:(1)在I2C_CR2寄存器中设定该模块的输入时钟以产生正确的时序;(2)配置时钟控制寄存器;(3)配置上升时间寄存器;(4)编程I2C_CR1寄存器启动外设;(5)置I2C_CR1寄存器中的START位为1,产生起始条件。\n- (1)起始条件\n- 当BUSY=0时,", + "flags": [] + } + ] + }, + { + "legacy_id": "embedded_systems:026", + "course_id": "embedded_systems", + "query": "我想先复习第11章 其他接口,应该从哪里开始?,见第13页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-002:s13:c01", + "exists": true, + "source_id": "embedded-systems-002", + "source_title": "ch11其他接口", + "locator_type": "slide", + "locator_start": 13, + "text_sha256": "8730b5371ac84fa5a60eec86527b11fb8f5affea8be962237a0be105c7accf1d", + "text_excerpt": "- (3)主发送器\n- 在发送了地址和清除了ADDR位后,主设备通过内部移位寄存器将字节从DR寄存器发送到SDA线上。主设备等待,直到TxE被清除,当收到应答脉冲时:TxE位被硬件置位,如果TxE被置位并且在上一次数据发送结束之前没有写新的数据字节到DR寄存器,则BTF被硬件置位,在清除BTF之前I2C接口将保持SCL为低电平;读出I2C_SR1之后,再写入I2C_DR寄存器将清除BTF位。\n- 关闭通信:在DR寄存器中写入最后一个字节后,通过设置STOP位产生一个停止条件,", + "flags": [] + } + ] + }, + { + "legacy_id": "embedded_systems:027", + "course_id": "embedded_systems", + "query": "复习第11章 其他接口时哪些内容最重要?,见第14页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-002:s14:c01", + "exists": true, + "source_id": "embedded-systems-002", + "source_title": "ch11其他接口", + "locator_type": "slide", + "locator_start": 14, + "text_sha256": "ff75e400ed10886dff197b0339c32b43ac56fa53abeec10d4c4dbde763576184", + "text_excerpt": "- 11.1.3 I2C总线应用实例\n- 由于I2C硬件接口通信对时钟准确度要求较高,不易于用仿真平台来实现。因此本实例采用模拟I2C硬件接口的方式进行实现。\n- 【例11.1】利用PB6和PB7引脚模拟I2C_SCK和I2C_SDA信号引脚,利用I2C协议向EEPROM芯片24C02写入数据,然后通过I2C总线协议读取写入的数据,并在数码管上显示出来。", + "flags": [] + } + ] + }, + { + "legacy_id": "embedded_systems:028", + "course_id": "embedded_systems", + "query": "第11章 其他接口里的方法或结论怎么理解?,见第15页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-002:s15:c01", + "exists": true, + "source_id": "embedded-systems-002", + "source_title": "ch11其他接口", + "locator_type": "slide", + "locator_start": 15, + "text_sha256": "a8f2091d44e3b8094e99e95e76bffd0dd1ac043e62aad4cb65b001f9a84382ae", + "text_excerpt": "![image](assets/embedded-systems-002/image-007.png)\n![image](assets/embedded-systems-002/image-008.png)\n![image](assets/embedded-systems-002/image-009.png)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "embedded_systems:029", + "course_id": "embedded_systems", + "query": "学习第11章 其他接口时哪些概念容易混淆?,见第16页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-002:s16:c01", + "exists": true, + "source_id": "embedded-systems-002", + "source_title": "ch11其他接口", + "locator_type": "slide", + "locator_start": 16, + "text_sha256": "9cdf7f6d7a97aa7c6ba5909d413dd382e6cee9d653819868f52a31e6e0730afc", + "text_excerpt": "- 11.2 CAN总线\n- CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的", + "flags": [] + } + ] + }, + { + "legacy_id": "embedded_systems:030", + "course_id": "embedded_systems", + "query": "考试会怎么考第11章 其他接口?,见第17页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "embedded-systems-002:s17:c01", + "exists": true, + "source_id": "embedded-systems-002", + "source_title": "ch11其他接口", + "locator_type": "slide", + "locator_start": 17, + "text_sha256": "e0e32dd6c38094a34a316d9c3c59a1f803cd756d3ecde7429332cdb2731b837a", + "text_excerpt": "- 控制器局域网络(CAN)是一个多主串行通信协议,该协议能够有效地支持实时控制,有着极高的安全性以及高达1Mbit/S的比特率。CAN协议支持四种不同的帧类型:\n- 数据帧:它负责把数据从一个发射节点传送到接收节点。对于标准帧,最大数据帧长度为108位;对于扩展帧为128位。\n- 远程帧:目的节点可以通过发送一个远程帧向源节点请求数据,该远程帧带有一个匹配所请求的数据帧标识的标识符。\n- 错误帧:任何节点一旦检测到总线错误便会产生一个错误帧。\n- 超载帧:超载帧在前面的和后", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:001", + "course_id": "engineering_math_analysis_1", + "query": "工数1~3章知识点及对应真题主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s1:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 1, + "text_sha256": "1a45571c0fd217cc7cf9bb58489debdcf1c8363e0867b9eb2280c2f6bd69f0ef", + "text_excerpt": "- 集合与函数\n![image](assets/engineering-mathematical-analysis-1-002/image-001.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:002", + "course_id": "engineering_math_analysis_1", + "query": "我想先复习工数1~3章知识点及对应真题,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s2:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 2, + "text_sha256": "a8efb104c4e4053d5b9e0a9a92cc05619c43dbda8953ac486b37f171a3914d31", + "text_excerpt": "- 极限与连续\n![image](assets/engineering-mathematical-analysis-1-002/image-002.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:003", + "course_id": "engineering_math_analysis_1", + "query": "复习工数1~3章知识点及对应真题时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s3:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 3, + "text_sha256": "906f8b93b7985b600d670ed58276d468d463f54aaae1fb82dc67d45b87b90d8f", + "text_excerpt": "- 极限与连续\n![image](assets/engineering-mathematical-analysis-1-002/image-003.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:004", + "course_id": "engineering_math_analysis_1", + "query": "工数1~3章知识点及对应真题里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s4:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 4, + "text_sha256": "7c39efb33a240bde1d3b526c774813e1fbfbd082a01eb5639397679275d1eedd", + "text_excerpt": "- 极限与连续\n![image](assets/engineering-mathematical-analysis-1-002/image-004.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:005", + "course_id": "engineering_math_analysis_1", + "query": "学习工数1~3章知识点及对应真题时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s5:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 5, + "text_sha256": "241dd7c712131aefa4f8ca1f9db72e46aaab01486f505da1e2f9287516e3a456", + "text_excerpt": "- 极限与连续\n![image](assets/engineering-mathematical-analysis-1-002/image-005.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:006", + "course_id": "engineering_math_analysis_1", + "query": "考试会怎么考工数1~3章知识点及对应真题?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s6:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 6, + "text_sha256": "ad98874a79095f01cbeb0622ac5a5a8ebb5ff91251e40fd9274daaed3522b223", + "text_excerpt": "- 极限与连续\n![image](assets/engineering-mathematical-analysis-1-002/image-006.png)\n![image](assets/engineering-mathematical-analysis-1-002/image-007.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:007", + "course_id": "engineering_math_analysis_1", + "query": "工数1~3章知识点及对应真题主要讲什么?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s7:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 7, + "text_sha256": "1f2bc0d1ca5f02867636fde3dcc748964e91b7b6ebb1c6ba96f875e0e731100c", + "text_excerpt": "- 极限与连续\n![image](assets/engineering-mathematical-analysis-1-002/image-008.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:008", + "course_id": "engineering_math_analysis_1", + "query": "我想先复习工数1~3章知识点及对应真题,应该从哪里开始?,见第8页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s8:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 8, + "text_sha256": "b1552056e9b3d821adbd7b0143b2027995f3d706ec6e617d418560681f663e92", + "text_excerpt": "- 极限与连续\n![image](assets/engineering-mathematical-analysis-1-002/image-009.png)\n![image](assets/engineering-mathematical-analysis-1-002/image-010.png)\n![image](assets/engineering-mathematical-analysis-1-002/image-011.png)\n![image](assets/eng", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:009", + "course_id": "engineering_math_analysis_1", + "query": "复习工数1~3章知识点及对应真题时哪些内容最重要?,见第9页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s9:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 9, + "text_sha256": "08d14c63c482520e23895079a3aaa449a0f6de38ae3adfcdac37805e6603930f", + "text_excerpt": "- 极限与连续\n![image](assets/engineering-mathematical-analysis-1-002/image-013.png)\n![image](assets/engineering-mathematical-analysis-1-002/image-014.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:010", + "course_id": "engineering_math_analysis_1", + "query": "工数1~3章知识点及对应真题里的方法或结论怎么理解?,见第10页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s10:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 10, + "text_sha256": "9fdc00bdd9c22a12c8ea7fa10d35c69bd838552a159964ff443f955e3b7ea640", + "text_excerpt": "- 极限与连续\n![image](assets/engineering-mathematical-analysis-1-002/image-015.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:011", + "course_id": "engineering_math_analysis_1", + "query": "学习工数1~3章知识点及对应真题时哪些概念容易混淆?,见第11页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s11:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 11, + "text_sha256": "52e82caf1a11883c1d0102ab50b4589dd9fa3a1c9542755edf9a276689808ede", + "text_excerpt": "- 一元函数微分学\n![image](assets/engineering-mathematical-analysis-1-002/image-016.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:012", + "course_id": "engineering_math_analysis_1", + "query": "考试会怎么考工数1~3章知识点及对应真题?,见第12页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s12:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 12, + "text_sha256": "1275bca3b3293d368fd9cc9147048cd414d62fa27ac8a564b29d9ed8b2c642a1", + "text_excerpt": "- 一元函数微分学\n![image](assets/engineering-mathematical-analysis-1-002/image-017.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:013", + "course_id": "engineering_math_analysis_1", + "query": "工数1~3章知识点及对应真题主要讲什么?,见第13页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s13:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 13, + "text_sha256": "136d3f95eec34593fa336f431b154edc2c46aa7906cfc1de91dab7529cbd3eab", + "text_excerpt": "- 一元函数微分学\n![image](assets/engineering-mathematical-analysis-1-002/image-018.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:014", + "course_id": "engineering_math_analysis_1", + "query": "我想先复习工数1~3章知识点及对应真题,应该从哪里开始?,见第14页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s14:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 14, + "text_sha256": "8a50292efabe80eb4b7270eafbb9edb9b6a53b54023c1b5785db82b238cc7ef9", + "text_excerpt": "- 一元函数微分学\n![image](assets/engineering-mathematical-analysis-1-002/image-019.png)\n![image](assets/engineering-mathematical-analysis-1-002/image-020.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:015", + "course_id": "engineering_math_analysis_1", + "query": "复习工数1~3章知识点及对应真题时哪些内容最重要?,见第15页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s15:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 15, + "text_sha256": "291a09156cc811be93bb8b63cfb1db071ceff87e20214c5835144b91a0f07f70", + "text_excerpt": "- 一元函数微分学\n![image](assets/engineering-mathematical-analysis-1-002/image-021.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:016", + "course_id": "engineering_math_analysis_1", + "query": "工数1~3章知识点及对应真题里的方法或结论怎么理解?,见第16页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s16:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 16, + "text_sha256": "7227d2df21223a47a4734e696864d24578ee352dfbe093221ecb0619f94b0dde", + "text_excerpt": "- 一元函数微分学\n![image](assets/engineering-mathematical-analysis-1-002/image-022.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:017", + "course_id": "engineering_math_analysis_1", + "query": "学习工数1~3章知识点及对应真题时哪些概念容易混淆?,见第17页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s17:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 17, + "text_sha256": "e26ef9ef4a50189488443d818bd3e3cad38b0ce771d166b6c480f244226f95aa", + "text_excerpt": "- 一元函数微分学\n![image](assets/engineering-mathematical-analysis-1-002/image-023.png)\n![image](assets/engineering-mathematical-analysis-1-002/image-024.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:018", + "course_id": "engineering_math_analysis_1", + "query": "考试会怎么考工数1~3章知识点及对应真题?,见第18页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s18:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 18, + "text_sha256": "8b37f02cfd778fcdd852b1ce4f7cb6ce6c5ec2ba8d013dfd819d16b49d863380", + "text_excerpt": "- 一元函数微分学\n![image](assets/engineering-mathematical-analysis-1-002/image-025.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:019", + "course_id": "engineering_math_analysis_1", + "query": "工数1~3章知识点及对应真题主要讲什么?,见第19页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s19:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 19, + "text_sha256": "e4fbc2952f9694f72126b983266156b7f98ab11263155d685882a7c1bbb6e6bb", + "text_excerpt": "- 泰勒公式     微分研究之巅    常用于函数性质研究\n![image](assets/engineering-mathematical-analysis-1-002/image-026.png)\n![image](assets/engineering-mathematical-analysis-1-002/image-027.png)\n![image](assets/engineering-mathematical-analysis-1-002/image-028.p", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:020", + "course_id": "engineering_math_analysis_1", + "query": "我想先复习工数1~3章知识点及对应真题,应该从哪里开始?,见第20页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s20:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 20, + "text_sha256": "ac6e708352daec6a6095a09394ef837073d788ffeae7c7fd525f97ade78cea46", + "text_excerpt": "- 一元函数微分学\n- 一般步骤:求定义域-求一阶导数-求二阶导数-令一、二阶导数为0-列表-答题\n![image](assets/engineering-mathematical-analysis-1-002/image-031.png)\n![image](assets/engineering-mathematical-analysis-1-002/image-032.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:021", + "course_id": "engineering_math_analysis_1", + "query": "复习工数1~3章知识点及对应真题时哪些内容最重要?,见第21页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s21:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 21, + "text_sha256": "86b61e481b8ea78107289f8353a0902b554ce5a8fcd77bb0b0efaed412c4d19a", + "text_excerpt": "- 一元函数微分学\n- 一般步骤:列关系式-求导-求极值点-“又 根 据 实 际 意 义 , 所 求 的 最 值 存 在 ”\n![image](assets/engineering-mathematical-analysis-1-002/image-033.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:022", + "course_id": "engineering_math_analysis_1", + "query": "工数1~3章知识点及对应真题里的方法或结论怎么理解?,见第22页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s22:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 22, + "text_sha256": "c856edc18314967e708adbd2cc0c2b69f4862e7caea49bc412d6fd65fa7bfcf7", + "text_excerpt": "- 真题感悟", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:023", + "course_id": "engineering_math_analysis_1", + "query": "学习工数1~3章知识点及对应真题时哪些概念容易混淆?,见第23页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-002:s23:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-002", + "source_title": "工数1~3章知识点及对应真题", + "locator_type": "slide", + "locator_start": 23, + "text_sha256": "897cf1b42e249d1021ac5f0787b078009a09a3caf63fb302877ec39e009e469d", + "text_excerpt": "- 集合与函数\n![image](assets/engineering-mathematical-analysis-1-002/image-034.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:024", + "course_id": "engineering_math_analysis_1", + "query": "考试会怎么考学业互助辅学课堂?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-003:s1:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-003", + "source_title": "工数上期末", + "locator_type": "slide", + "locator_start": 1, + "text_sha256": "f625fe3a6a5cd003a732849829b51318af33befec13668b60cde4e7aa92cefb3", + "text_excerpt": "——工科数学分析\n\n- PPT模板下载:www.1ppt.com/moban/ 行业PPT模板:www.1ppt.com/hangye/ 节日PPT模板:www.1ppt.com/jieri/ PPT素材下载:www.1ppt.com/sucai/ PPT背景图片:www.1ppt.com/beijing/ PPT图表下载:www.1ppt.com/tubiao/ 优秀PPT下载:www.1ppt.com/xiazai/ PPT教程: www.1ppt.com/powerpo", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:025", + "course_id": "engineering_math_analysis_1", + "query": "学业互助辅学课堂主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-003:s2:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-003", + "source_title": "工数上期末", + "locator_type": "slide", + "locator_start": 2, + "text_sha256": "87b13c17047247240febb432e1508ff030eccc79f644e72e73c9be9da17b8fce", + "text_excerpt": "- 目录\n- 一、工数期末考的特点\n- 二、常见的试卷结构\n- 三、存在的试卷结构\n- 四、备考建议\n- CONTENT", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:026", + "course_id": "engineering_math_analysis_1", + "query": "我想先复习期末,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-003:s3:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-003", + "source_title": "工数上期末", + "locator_type": "slide", + "locator_start": 3, + "text_sha256": "cb16656183e425bf20be1eda7e7eada94f0bd936dd785a0bdc03ea420ef8914a", + "text_excerpt": "- 工数期末考的特点\n- 明确工数期末考的特点", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:027", + "course_id": "engineering_math_analysis_1", + "query": "复习期末时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-003:s4:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-003", + "source_title": "工数上期末", + "locator_type": "slide", + "locator_start": 4, + "text_sha256": "c4f613edecd18ef684aff3af8e1a4804c24a5d58032888f1fb30edff8d2b4bd8", + "text_excerpt": "- 工数期末考\n- 真题同源\n- 工数真题同源,类题频繁\n- 知识重点相同\n- 不同年份的工数试卷的知识重点是相同的,通过真题,明确重点,进而在工数考场上无往不利\n- 工数期末\n![image](assets/engineering-mathematical-analysis-1-003/image-002.png)\n- 20-21A一、2\n![image](assets/engineering-mathematical-analysis-1-003/image-003.pn", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:028", + "course_id": "engineering_math_analysis_1", + "query": "期末里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-003:s5:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-003", + "source_title": "工数上期末", + "locator_type": "slide", + "locator_start": 5, + "text_sha256": "c8d0fb9bd1c5a3a409194e0c262058034d278b87022f93fab0a6858c400ef5b0", + "text_excerpt": "- 常见的试卷结构\n- 一、常见试卷结构的分值分布\n- 二、常考题型知识点和技巧总结", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:029", + "course_id": "engineering_math_analysis_1", + "query": "学习期末时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-003:s6:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-003", + "source_title": "工数上期末", + "locator_type": "slide", + "locator_start": 6, + "text_sha256": "d0b3dbc84aa2eabbc4776aa3976e22f5221a1321d291fea0f02b5e30ea281131", + "text_excerpt": "- 常见试卷结构分值分布\n![image](assets/engineering-mathematical-analysis-1-003/image-006.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_1:030", + "course_id": "engineering_math_analysis_1", + "query": "考试会怎么考期末?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-1-003:s7:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-1-003", + "source_title": "工数上期末", + "locator_type": "slide", + "locator_start": 7, + "text_sha256": "b0966f6a8e818631ab136ef564fa46e8fd920629b56d6c0bba0144dbbd7339c2", + "text_excerpt": "- 常考题型知识点及技巧总结", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:001", + "course_id": "engineering_math_analysis_2", + "query": "工科数分第14讲主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p1:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "08ec0ed9bf57b482296618cb459b4ab5af870b6de039c787add9c7c6092b9d55", + "text_excerpt": "工科数学分析下\n\n李茂生\n\n2024/4/12\n\n李茂生\n工科数学分析下–第14讲\n2024/4/12\n1 / 25", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:002", + "course_id": "engineering_math_analysis_2", + "query": "我想先复习工科数分第14讲,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p2:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "3452c0776f6f58383b10d957c0ff67d7196c543f49978a0e8b988d3b950c89ad", + "text_excerpt": "重积分的应用\n\n重积分在几何上的应用\n\n重积分在物理上的应用\n\n李茂生\n工科数学分析下–第14讲\n2024/4/12\n2 / 25", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:003", + "course_id": "engineering_math_analysis_2", + "query": "复习工科数分第14讲时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p3:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "68f147419429a0c17caa4164e2ba4ced21de61414d7137c898383817f1f8e18a", + "text_excerpt": "重积分在几何上的应用\n\n求平面区域的面积S\n设有平面区域D,则其面积为\n\nZZ\n\n1dxdy.\n\nS =\n\nD\n\n求空间区域的体积V\n设有空间区域⌦,则其体积为\n\nZZZ\n\n1dxdydz.\n\nV =\n\n⌦\n\n李茂生\n工科数学分析下–第14讲\n2024/4/12\n3 / 25", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:004", + "course_id": "engineering_math_analysis_2", + "query": "工科数分第14讲里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p4:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "259edb3a7b50c864d63bf1cb3650a9ae655236493a6455009670029a808641ba", + "text_excerpt": "重积分在物理上的应用\n\n物体的质心\n\n设有一质点组,每个质点的位置为(xi, yi, zi)(i = 1, · · · , n),对应的质量\n为mi(i = 1, · · · , n), 则该质点组的质心坐标(¯x, ¯y, ¯z)为\n\nn\nX\n\nn\nX\n\nn\nX\n\nmixi\n\nmiyi\n\nmizi\n\ni=1\n\ni=1\n\ni=1\n\n¯x =\n\nM\n, ¯y =\n\nM\n, ¯z =\n\nM\n,\n\nn\nX\n\nmi为质点组的总质量.\n\n其中M =\n\ni=1\n\n李茂生\n工科数学分析下–", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:005", + "course_id": "engineering_math_analysis_2", + "query": "学习工科数分第14讲时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p5:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "567e98bc4b19cb02c7adda18b5fc6701560d7e3372eef239f22755c62edab1b1", + "text_excerpt": "重积分在物理上的应用\n\n物体的质心\n\n问题\n\n设有一物体,占有R3中的闭区域⌦,在点(x, y, z)的密度为⇢(x, y, z),并\n设⇢(x, y, z)在⌦上连续,求该物体的质心坐标(¯x, ¯y, ¯z).\n\nRRR\n\nRRR\n\nRRR\n\nx⇢(x, y, z)dV\n\ny⇢(x, y, z)dV\n\nz⇢(x, y, z)dV\n\n⌦\n\n⌦\n\n⌦\n\n¯x =\n\nM\n, ¯y =\n\nM\n, ¯z =\n\nM\n,\n\nZZZ\n\n⇢(x, y, z)dV 为该物体的总质量.\n\n其中", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:006", + "course_id": "engineering_math_analysis_2", + "query": "考试会怎么考工科数分第14讲?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p6:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "8c246b93811907278398b8ff6eaf34c1afcd258cc2f7df668af1978dd32ceedd", + "text_excerpt": "例\n\np\n\nx2 + y2 z H}上分布着密度\n为⇢(x, y, z) = 1 + x2 + y2的质量,求该物体的质心.\n\n假设在⌦= {(x, y, z)|\n\n李茂生\n工科数学分析下–第14讲\n2024/4/12\n6 / 25", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:007", + "course_id": "engineering_math_analysis_2", + "query": "工科数分第14讲主要讲什么?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p7:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 7, + "text_sha256": "76285c9a3a53c0a55502b9f6e51bb6513da999d7e9717e6baa65ebdcf8d5dcf3", + "text_excerpt": "例\n\n设曲面S在球坐标系下的方程为\n\nr = a(1 + cos ') (a > 0)\n\n令⌦为曲面S所围成的有界区域,求⌦在直角坐标系下的形心.\n\n李茂生\n工科数学分析下–第14讲\n2024/4/12\n7 / 25", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:008", + "course_id": "engineering_math_analysis_2", + "query": "我想先复习工科数分第14讲,应该从哪里开始?,见第8页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p8:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 8, + "text_sha256": "5c40a6476d51cd5b777e8c647b007f7b39e6db6c89d60a3f3ab95c96d0e1fe36", + "text_excerpt": "重积分在物理上的应用\n\n物体的转动惯量\n\n问题\n\n设有一物体,占有R3中的闭区域⌦,在点(x, y, z)的密度为⇢(x, y, z),并\n设⇢(x, y, z)在⌦上连续,求该物体的绕x, y, z轴的转动惯量.\n\nZZZ\n\n(y2 + z2)⇢(x, y, z)dV ,\n\nIx =\n\nZZZ\n\n⌦\n\n(z2 + x2)⇢(x, y, z)dV ,\n\nIy =\n\nZZZ\n\n⌦\n\n(x2 + y2)⇢(x, y, z)dV .\n\nIz =\n\n⌦\n\n李茂生\n工科数学分析下–第1", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:009", + "course_id": "engineering_math_analysis_2", + "query": "复习工科数分第14讲时哪些内容最重要?,见第9页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p9:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 9, + "text_sha256": "3251d28c37c70259749988d98202863870ebbde8394579c6cbcfebdbcbf003ac", + "text_excerpt": "例\n\n求半径为a的均匀半圆薄片对于其半径的转动惯量.\n\n李茂生\n工科数学分析下–第14讲\n2024/4/12\n9 / 25", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:010", + "course_id": "engineering_math_analysis_2", + "query": "工科数分第14讲里的方法或结论怎么理解?,见第10页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p10:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 10, + "text_sha256": "fe8c6d84b4020605a282c212a1c93cf47397e2a4b9928c097bf2452af3819da1", + "text_excerpt": "重积分在物理上的应用\n\n物体对质点的引力\n\n万有引力定律:质量分别为M, m,距离为R的两个质点的引力大小为\n\nF = G Mm\n\nR2 , 其中G为引力常数.\n\n注意到力是一个矢量有方向,它的方向与两质点连线对应的向量(设\n为~R)共线. 因此,\n\n~R\n\n= ±G Mm~R\n\n~F = ±G Mm\n\n|~R|3 .\n\nR2\n\n|~R|\n\n问题\n\n设有一物体,占有R3中的闭区域⌦,在点(x, y, z)的密度为⇢(x, y, z),并\n设⇢(x, y, z)在⌦上连续. 在", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:011", + "course_id": "engineering_math_analysis_2", + "query": "学习工科数分第14讲时哪些概念容易混淆?,见第11页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p11:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 11, + "text_sha256": "1de8f8103f6cfddf2894111581d9efc8eec7556dff990785f5a120efaef1118c", + "text_excerpt": "重积分在物理上的应用\n\n物体对质点的引力\n\n微元法. 在⌦内取出有代表性的一小块体积微元dV , 在dV 内任取一\n点(x, y, z). 体积微元dV 的质量为\n\ndM = ⇢(x, y, z)dV .\n\n令r = (x −x0, y −y0, z −z0)为由P指向dV 的向量. 由万有引力定律知,\ndV 对质点P的引力为\n\nd~F = (dFx, dFy, dFz) = G ⇢(x, y, z)dV\n\n|r|3\nr.\n\n因此,有\n\nRRR\n\n⇢(x, y, z)(x −", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:012", + "course_id": "engineering_math_analysis_2", + "query": "考试会怎么考工科数分第14讲?,见第12页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p12:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 12, + "text_sha256": "93233ee0f2af7b8890b0eba3882e81b9841ea9e0308c9f9bdead90c86638ba69", + "text_excerpt": "例\n\n设有面密度为常量,半径为R的均匀圆的薄片x2 + y2 R2, z = 0, 求它\n对位点M0(0, 0, a) (a > 0) 处的单位质量质点的引力.\n\n李茂生\n工科数学分析下–第14讲\n2024/4/12\n12 / 25", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:013", + "course_id": "engineering_math_analysis_2", + "query": "工科数分第14讲主要讲什么?,见第13页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p13:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 13, + "text_sha256": "0b3b87aa31bf708f775ad43b726d539f4c7ba34b1240f8a4a8db7e57208d1389", + "text_excerpt": "例\n\n设有一均匀的球顶椎体,球心在原点,半径为R,椎体的顶点在原点,\n轴为z轴,锥面与z轴交角为↵(0 ↵⇡\n\n2 ). 求此球顶椎体对于在其顶点\n的一单位质量的质点的引力.\n\n李茂生\n工科数学分析下–第14讲\n2024/4/12\n13 / 25", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:014", + "course_id": "engineering_math_analysis_2", + "query": "我想先复习工科数分第14讲,应该从哪里开始?,见第14页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p14:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 14, + "text_sha256": "47c355a7ea81bc2c44ae00bd1aac6ceca37594245c831d0f7fdf783773c69d52", + "text_excerpt": "教学要求\n\n1 理解二重积分、三重积分的概念,了解重积分的性质.\n\n2 掌握二重积分的计算法(直角坐标、极坐标),掌握三重积分的计算\n法(直角坐标、柱面坐标、球面坐标).\n\n3 会用重积分求一些几何量与物理量.\n\n李茂生\n工科数学分析下–第14讲\n2024/4/12\n14 / 25", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:015", + "course_id": "engineering_math_analysis_2", + "query": "复习工科数分第14讲时哪些内容最重要?,见第15页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p15:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 15, + "text_sha256": "e7d6b0a2409b2ed8ce6cae38b591757ed845f9344fda1b8bb13bb15555c6076b", + "text_excerpt": "综合练习\n\n例\n\n交换下述累次积分的顺序\n\nZ p\n\nZ p1−y\n\nZ 0\n\n1−y2 f (x, y)dx)dy +\nZ 1\n\n1−y2\n\nf (x, y)dx)dy.\n\nI 二\n\n(\n\n0\n(\n\n−p\n\n−p1−y\n\n−1\n\n八y\nxE n y\n\nI liliiifcx.gldy dx\nxnrgxai.in\n\n上河\n\n成\n\n李茂生\n工科数学分析下–第14讲\n2024/4/12\n15 / 25", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:016", + "course_id": "engineering_math_analysis_2", + "query": "工科数分第14讲里的方法或结论怎么理解?,见第16页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p16:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 16, + "text_sha256": "be72b8bad7d0e328a8c088acfbe3ad72c358ec79d380c2221628bcb1c9d6999d", + "text_excerpt": "综合练习\n\n例\n\n设f (x)在[0, a] (a > 0)上连续,证明:\n\n2\nZ a\n\nZ a\n\nZ a\n\n0\nf (x)dx]2.\n\n0\nf (x)dx\n\nf (y)dy = [\n\nx\n\nR a\n\n0 f (x)dx\nR a\n\nRR\n\nx f (y)dy =\n\n0xya\nf (x)f (y)dxdy, 利用积分变元记\n\n证明: 因\n\nRR\n\nRR\n\n0xya\nf (x)f (y)dxdy =\n\n0yxa\nf (x)f (y)dxdy. 于是有,\n\n号的", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:017", + "course_id": "engineering_math_analysis_2", + "query": "学习工科数分第14讲时哪些概念容易混淆?,见第17页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p17:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 17, + "text_sha256": "280c6c633a8f7d1e34878cf57b8bed037002131871b31c87f95758f4b6e61227", + "text_excerpt": "综合练习\n\n例\n\n⇣R b\n\n⌘2\n\nR b\n\na f 2(x)dx.\n\na f (x)dx\n\n设f (x)在[a, b] 上连续,证明:\n\n(b −a)\n\nRR\n\n[f (x) −f (y)]2dxdy ≥0. 等\n\n证明:设D = {(x, y)|a x, y b}, 则有\n\nD\n\nRR\n\nRR\n\nRR\n\nf (x)2dxdy +\n\nf (y)2dxdy ≥2\n\nf (x)f (y)dxdy. 由x, y位置\n\n价地有\n\nD\n\nD\n\nD\n\nRR\n\nRR\n\nf (x)", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:018", + "course_id": "engineering_math_analysis_2", + "query": "考试会怎么考工科数分第14讲?,见第18页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p18:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 18, + "text_sha256": "12dbdfcb79be00133246dd3e1b408622856263bace2fe3cd652ef613943f0f76", + "text_excerpt": "综合练习\n\n例\n\nRR\n\ny\nx+y dxdy, 其中\n\n计算二重积分\n\ne\n\nD\n\nD = {(x, y)|x + y 1, x ≥0, y ≥0}.\n\n解:做变换u = x + y, v = y, 可算得雅可比行列式@(x,y)\n\n@(u,v) = 1. 区域D在\n该变换下变为\n\nD0 := {(u, v)|v u 1, v ≥0}.\n\nv\nu ,因此我们必须先对v积分后对u积分,\nRR\n\n由于被积函数为e\n\nRR\n\ny\nx+y dxdy\n=\n\nv\nu dudv\n\n", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:019", + "course_id": "engineering_math_analysis_2", + "query": "工科数分第14讲主要讲什么?,见第19页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p19:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 19, + "text_sha256": "4e56b5419ffeff7a0377d22274f2c99707cfe7853eb2d32be31c1c10699a97d4", + "text_excerpt": "综合练习\n\n例\n\nRRR\n\n(ax + by + cz)dxdydz, 其中\n\n计算积分I =\n\n⌦\n\n⌦:= {(x, y, z) | x2 + y2 + z2 2z}.\n\n解:由于区域⌦关于平面x = 0和y = 0对称,ax和by分别关于x和y是奇\n函数. 由对称性知,\n\nRRR\n\nRRR\n\naxdxdydz =\n\nbydxdydz = 0. 故\n\n⌦\n\n⌦\n\nZZZ\n\nZZZ\n\nczdxdydz =\n\n[c(z −1) + c]dxdydz.\n\nI =\n\n⌦\n\n⌦\n", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:020", + "course_id": "engineering_math_analysis_2", + "query": "我想先复习工科数分第14讲,应该从哪里开始?,见第20页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p20:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 20, + "text_sha256": "e598bbf4a2109580482ecc3c2355f0286f7ff204ea1a62cabdc48988ccdd8a8e", + "text_excerpt": "综合练习\n\n例\n\n求由下述方程定义得两个球体\n\nx2 + y2 + z2 1, x2 + y2 + (z −2)2 4\n\n相交部分的体积.\n\n''x2 + y2 + z2 1, x2 + y2 + (z −2)2 4} 两球相\n交部分投影到xOy平面(此时1 −z2 = 4 −(z −2)2, 即z = 1\n\n解:记⌦= {(x, y, z)\n\n4)\n为D := {(x, y)|x2 + y2 3\n\n4}.\n\nR p\n\nRRR\n\nRR\n\n1−x2−y2\n\n⌦dxdy", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:021", + "course_id": "engineering_math_analysis_2", + "query": "复习工科数分第14讲时哪些内容最重要?,见第21页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p21:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 21, + "text_sha256": "833eaf8a4928dcebf916d9cf2725f6d0bb4c22d2c2ce6177b58444a3c786d99a", + "text_excerpt": "综合练习\n\n例\n\nRRR\n\nf (x2 + y2 + z2)dxdydz, 其中f 可微,\n\n令F(t) =\n\n⌦t\n\n⌦t := {(x, y, z) | x2 + y2 + z2 t2}.\n\n求F 0(t).\n\n解:作标准的球坐标变换得\n\nZ 2⇡\n\nZ ⇡\n\nZ t\n\n0\nf (r2)r2 sin 'dr\n\n0\nd✓\n\n0\nd'\n\nF(t)\n=\n\nZ 2⇡\n\nZ ⇡\n\nZ t\n\nZ t\n\n0\nf (r2)r2dr] = 4⇡\n\n0\nf (r2)r2dr.\n\n0\nd✓]", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:022", + "course_id": "engineering_math_analysis_2", + "query": "工科数分第14讲里的方法或结论怎么理解?,见第22页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p22:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 22, + "text_sha256": "1c771e5b41b9a9f7c929b976f78b53220c6bc2eed15c65f03946f8f8e7ab5a96", + "text_excerpt": "综合练习\n\n例\n\n8t 6= 0, ⌦t = {(x, y, z) | x2 + y2 + z2 t2}, 设f (x)在x = 0处可导,\n且f (0) = 0, 求极限\n\nZZZ\n\np\n\n1\nt4\n\nx2 + y2 + z2)dxdydz.\n\nlim\nt!0\n\nf (\n\n⌦t\n\np\n\nRRR\n\nx2 + y2 + z2)dxdydz. 类似上题,可得\n\n解:令G(t) =\n\nf (\n\n⌦t\n\nR t\n\n0 f (r)r2dr. 由lim\nt!0 G(t) = 0, f ", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:023", + "course_id": "engineering_math_analysis_2", + "query": "学习工科数分第14讲时哪些概念容易混淆?,见第23页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p23:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 23, + "text_sha256": "363a3938d3eba561b335d8b26a47e6a4120350178b30c4503a084800751d6500", + "text_excerpt": "综合练习\n\n例\n\n求由z = x2 + y2, 2z = x2 + y2, x + y = 1, x + y = −1, x −y = 1,\nx −y = −1所围成立体的形心坐标.\n\n解:记所围立体为⌦,则⌦关于平面x = 0和y = 0对称,易得¯x = ¯y = 0.\n不妨设该立体的密度为1,则\n\nZZZ\n\nZ 1\n\nZ 1−x\n\nZ x2+y2\n\n2\ndz = 1\n\ndxdydz = 4\n\n0\ndx\n\n0\ndy\n\nM =\n\n3.\n\nx2+y2\n\n⌦\n\nZZZ\n\nZ 1", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:024", + "course_id": "engineering_math_analysis_2", + "query": "考试会怎么考工科数分第14讲?,见第24页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p24:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 24, + "text_sha256": "423b2ab2a2e460f5643650868ba8959042163dc145af5a606202f76c7b090258", + "text_excerpt": "作业:2024年4月18日交\n\n习题8.5 (A)\n\nI 1. (4)\n\nI 6.\n总习题(8)\n\nI 5.\n\nI 9.\n\nI 10.\n\nI 12.\n\n李茂生\n工科数学分析下–第14讲\n2024/4/12\n24 / 25", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:025", + "course_id": "engineering_math_analysis_2", + "query": "工科数分第14讲主要讲什么?,见第25页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-002:p25:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-002", + "source_title": "工科数分第14讲", + "locator_type": "page", + "locator_start": 25, + "text_sha256": "fb75146e56fcdf77fac65ee270a563e7a22ae2ced22c5e5a33664e83781a76a1", + "text_excerpt": "谢谢大家!\n\n李茂生\n工科数学分析下–第14讲\n2024/4/12\n25 / 25", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:026", + "course_id": "engineering_math_analysis_2", + "query": "我想先复习工科数分第1讲,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-003:p1:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-003", + "source_title": "工科数分第1讲", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "afdfde75ce6677e7715ce85e4718105756e217ec1abae022e426e9415e126721", + "text_excerpt": "工科数学分析下\n\n李茂生\n\n2024/2/29\n\n李茂生\n工科数学分析下–第1讲\n2024/2/29\n1 / 24", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:027", + "course_id": "engineering_math_analysis_2", + "query": "复习工科数分第1讲时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-003:p2:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-003", + "source_title": "工科数分第1讲", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "7dbc19ddfa0b7deaf6c9589a2ca58f03424416ca30e0066e4ab5cf12432d4113", + "text_excerpt": "主讲老师联系方式\n\n电话:13521759982\n\nqq群:714567030 工程数学分析下2023计算机类\n\n办公室:五山校区4号楼4225\n\nemail: lims21@scut.edu.cn\n\n李茂生\n工科数学分析下–第1讲\n2024/2/29\n2 / 24", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:028", + "course_id": "engineering_math_analysis_2", + "query": "工科数分第1讲里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-003:p3:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-003", + "source_title": "工科数分第1讲", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "02328c8914376ef14941ad214a867ee54de4da76de90ae5d14ec5b4d97550a19", + "text_excerpt": "期末总评与平时成绩\n\n期末总评= 期末70%+平时成绩30%(作业10%,考勤5%,小测15%)\n\n作业要求:\n\n杜绝抄作业,若有发现,平时作业均作0分处理\n\n要抄题,解答时要写“解”或“证明”\n\n每周四上课前交前一周布置的作业\n\n李茂生\n工科数学分析下–第1讲\n2024/2/29\n3 / 24", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:029", + "course_id": "engineering_math_analysis_2", + "query": "学习工科数分第1讲时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-003:p4:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-003", + "source_title": "工科数分第1讲", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "8f8c99a8c2f26e6414c227dec3bc524377dc4f5ffc7cfeb053d5df8d19dd4aef", + "text_excerpt": "教材与推荐的习题辅导书\n\n1 李大华林益汤燕斌王德荣编, 工科数学分析下册第三版\n\n2 吉米多维奇著数学分析习题集高等教育出版社(1986)\n\n3 华苏扈志明莫骄编,微积分学习指导——典型例题精解. 科学出\n版社(2004)\n\n4 方企勤林渠源著,数学分析习题课教材北京大学出版社(1990)\n\n李茂生\n工科数学分析下–第1讲\n2024/2/29\n4 / 24", + "flags": [] + } + ] + }, + { + "legacy_id": "engineering_math_analysis_2:030", + "course_id": "engineering_math_analysis_2", + "query": "考试会怎么考工科数分第1讲?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "engineering-mathematical-analysis-2-003:p5:c01", + "exists": true, + "source_id": "engineering-mathematical-analysis-2-003", + "source_title": "工科数分第1讲", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "5def577b3061b058062c8d489848a0a44cf9553c9ac4678e5cd2710ace36e79b", + "text_excerpt": "本学期的主要内容\n\n1 微分方程(第五章)\n\n2 多元函数微分学(第七章)\n\n3 重积分(第八章)\n\n4 曲线积分与曲面积分(第九章)\n\n5 无穷级数(第十章)\n\n本课程将按照第七、八、九、十、五章这个顺序讲\n\n李茂生\n工科数学分析下–第1讲\n2024/2/29\n5 / 24", + "flags": [] + } + ] + }, + { + "legacy_id": "english:001", + "course_id": "english", + "query": "2023级学术第一学期考试大纲主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-004:h-2023级学术英语第一学期考试大纲:c01", + "exists": true, + "source_id": "english-004", + "source_title": "2023级学术英语第一学期考试大纲", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "d913ffb40d75270b0b9b0f493aafb3036087e4b3085c92c3f00f6f1a99942826", + "text_excerpt": "**试卷结构:**\n\n**Part** **I** **Listening (20%)** *(2***10**=**20* *points)*\n\n分值:20分(10个小题,每题2分,单项选择题)\n\n2篇学术讲座片段,每个播放两遍,每个讲座结束后提5个问题。\n\n小题数:10 分值: 20% 时间:约30 min.\n\n试题来源:《新时代大学学术英语视听说教程》(上册1-5单元)里面的viewing视频1个+《新时代大学学术英语综合教程》(上册1-", + "flags": [] + } + ] + }, + { + "legacy_id": "english:002", + "course_id": "english", + "query": "我想先复习议论文写作个人总结,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-005:p1:c01", + "exists": true, + "source_id": "english-005", + "source_title": "英语议论文写作个人总结", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "96af000c85a675af4f58f4688e40c13ceedd6b6a7545c0f54e8d9288e59540d0", + "text_excerpt": "开头段:通过一个有趣的事实、统计数据、引言或者问题来吸引读者的注意。Nowadays,提\n供与主题相关的必要背景信息,帮助读者理解讨论的内容.Practically(实际上),明确表达你的\n主要观点或论点,通常是一句话\n主体段:介绍优点等。\n驳斥段:Just As a popular saying goes,every coin has two sides,讨论议题is no exception,and in\nanother word,it still has negativ", + "flags": [] + } + ] + }, + { + "legacy_id": "english:003", + "course_id": "english", + "query": "复习SUMMARY时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-006:h-英语summary:c01", + "exists": true, + "source_id": "english-006", + "source_title": "英语SUMMARY", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "10bc6f072e58b7544ba9101d7e13fc237d59686524961f2b0173e22a802bba6c", + "text_excerpt": "Unit 7,text A\n\nThe passage illustrates that children need physical education more than before .And it can be divided into three parts.\n\nIn the first part,the passage says about nowadays most students’ attitudes to PE are negative. It also ", + "flags": [] + } + ] + }, + { + "legacy_id": "english:004", + "course_id": "english", + "query": "SUMMARY里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-006:h-英语summary:c02", + "exists": true, + "source_id": "english-006", + "source_title": "英语SUMMARY", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "d2ca9597a894f3b852bad9a5e3ddd2d220ca9fe9a136a5d4828ace4e07a6775c", + "text_excerpt": "In the last part ,the author thinks that someone who thinks doing exercises is just a waste of time should change their mind.Because today we can live unhealthily easier than any other time before. So if we don’t do exercises to live more h", + "flags": [] + } + ] + }, + { + "legacy_id": "english:005", + "course_id": "english", + "query": "学习作文竞赛时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-007:h-英语作文竞赛:c01", + "exists": true, + "source_id": "english-007", + "source_title": "英语作文竞赛", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6fa9fa0f2aa7e7f02ed67cec1d40b6e77f5a0cdba343455301818cf8ba001bef", + "text_excerpt": "In today's fast-paced society, the concepts of involution \"neijuan\"and lying flat \"tangping\"have become prominent buzzwords, reflecting nowadays' challenges and different responses to excessive competition and pressure. The unstoppable purs", + "flags": [] + } + ] + }, + { + "legacy_id": "english:006", + "course_id": "english", + "query": "考试会怎么考作文竞赛?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-007:h-英语作文竞赛:c02", + "exists": true, + "source_id": "english-007", + "source_title": "英语作文竞赛", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cc32763c07b3dfb288e00b6993bbbb6e3156d3f4c5201cfec8331d42cb05e2d5", + "text_excerpt": "On one hand, the concept of involution captures the idea of recessive competition, where individuals feel tired to others' ambitions ,which pushes them constantly to struggle forward.At the same time , they also don't want to be surpassed b", + "flags": [] + } + ] + }, + { + "legacy_id": "english:007", + "course_id": "english", + "query": "作文竞赛主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-007:h-英语作文竞赛:c03", + "exists": true, + "source_id": "english-007", + "source_title": "英语作文竞赛", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a6e2c59d676b338173e2b2940386497c24f3bee66302ce1e0cf74a54c21a71c8", + "text_excerpt": "However, while the lying flat concept may provide people mental relaxation temporarily, it can't be a permanent way to deal with the dilemma. On the contrary, it also raises concerns about disengagement and a lack of ambition. Simply giving", + "flags": [] + } + ] + }, + { + "legacy_id": "english:008", + "course_id": "english", + "query": "我想先复习作文竞赛,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-007:h-英语作文竞赛:c04", + "exists": true, + "source_id": "english-007", + "source_title": "英语作文竞赛", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5c8f670eb110f41adb316947ea2fed1689d2dc7f97952f71d681fc5d81d89e61", + "text_excerpt": "At the same time, it is crucial to prioritize mental health, and cultivate a sense of fulfillment beyond external expectation. Finding meaning and satisfaction when pursuing your goals, is key to leading a reasonable and scientific involuti", + "flags": [] + } + ] + }, + { + "legacy_id": "english:009", + "course_id": "english", + "query": "复习复习时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-008:h-英语复习:c01", + "exists": true, + "source_id": "english-008", + "source_title": "英语复习", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "af8f5c3edc1533bb025b0dbbbd546f337e0fb4980e99da46603efcdb251ceda1", + "text_excerpt": "Acknowledges the\n\nAggregate demand\n\nAllocation and\n\nAppendix ,\n\nArbitrary power\n\nAnalogous to\n\nTo(adjacent)\n\nAttain standard\n\nBias against\n\nBulk(in)\n\nCite further\n\nWith(Coincide)\n\nConfine to\n\nComprehensive healthcare\n\nOf(comprises)\n\nCommodi", + "flags": [] + } + ] + }, + { + "legacy_id": "english:010", + "course_id": "english", + "query": "复习里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-008:h-英语复习:c02", + "exists": true, + "source_id": "english-008", + "source_title": "英语复习", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5396ba85d99c41014d463f3361e9e7bd36224d3e49b9344e4d0ef7f32c44bfc2", + "text_excerpt": "Virtually impossible\n\nWidespread desire\n\nWhereby Britons", + "flags": [] + } + ] + }, + { + "legacy_id": "english:011", + "course_id": "english", + "query": "学习2023级学术第一学期考试大纲时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-004:h-2023级学术英语第一学期考试大纲:c01", + "exists": true, + "source_id": "english-004", + "source_title": "2023级学术英语第一学期考试大纲", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "d913ffb40d75270b0b9b0f493aafb3036087e4b3085c92c3f00f6f1a99942826", + "text_excerpt": "**试卷结构:**\n\n**Part** **I** **Listening (20%)** *(2***10**=**20* *points)*\n\n分值:20分(10个小题,每题2分,单项选择题)\n\n2篇学术讲座片段,每个播放两遍,每个讲座结束后提5个问题。\n\n小题数:10 分值: 20% 时间:约30 min.\n\n试题来源:《新时代大学学术英语视听说教程》(上册1-5单元)里面的viewing视频1个+《新时代大学学术英语综合教程》(上册1-", + "flags": [] + } + ] + }, + { + "legacy_id": "english:012", + "course_id": "english", + "query": "考试会怎么考议论文写作个人总结?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-005:p1:c01", + "exists": true, + "source_id": "english-005", + "source_title": "英语议论文写作个人总结", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "96af000c85a675af4f58f4688e40c13ceedd6b6a7545c0f54e8d9288e59540d0", + "text_excerpt": "开头段:通过一个有趣的事实、统计数据、引言或者问题来吸引读者的注意。Nowadays,提\n供与主题相关的必要背景信息,帮助读者理解讨论的内容.Practically(实际上),明确表达你的\n主要观点或论点,通常是一句话\n主体段:介绍优点等。\n驳斥段:Just As a popular saying goes,every coin has two sides,讨论议题is no exception,and in\nanother word,it still has negativ", + "flags": [] + } + ] + }, + { + "legacy_id": "english:013", + "course_id": "english", + "query": "SUMMARY主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-006:h-英语summary:c01", + "exists": true, + "source_id": "english-006", + "source_title": "英语SUMMARY", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "10bc6f072e58b7544ba9101d7e13fc237d59686524961f2b0173e22a802bba6c", + "text_excerpt": "Unit 7,text A\n\nThe passage illustrates that children need physical education more than before .And it can be divided into three parts.\n\nIn the first part,the passage says about nowadays most students’ attitudes to PE are negative. It also ", + "flags": [] + } + ] + }, + { + "legacy_id": "english:014", + "course_id": "english", + "query": "我想先复习SUMMARY,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-006:h-英语summary:c02", + "exists": true, + "source_id": "english-006", + "source_title": "英语SUMMARY", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "d2ca9597a894f3b852bad9a5e3ddd2d220ca9fe9a136a5d4828ace4e07a6775c", + "text_excerpt": "In the last part ,the author thinks that someone who thinks doing exercises is just a waste of time should change their mind.Because today we can live unhealthily easier than any other time before. So if we don’t do exercises to live more h", + "flags": [] + } + ] + }, + { + "legacy_id": "english:015", + "course_id": "english", + "query": "复习作文竞赛时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-007:h-英语作文竞赛:c01", + "exists": true, + "source_id": "english-007", + "source_title": "英语作文竞赛", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6fa9fa0f2aa7e7f02ed67cec1d40b6e77f5a0cdba343455301818cf8ba001bef", + "text_excerpt": "In today's fast-paced society, the concepts of involution \"neijuan\"and lying flat \"tangping\"have become prominent buzzwords, reflecting nowadays' challenges and different responses to excessive competition and pressure. The unstoppable purs", + "flags": [] + } + ] + }, + { + "legacy_id": "english:016", + "course_id": "english", + "query": "作文竞赛里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-007:h-英语作文竞赛:c02", + "exists": true, + "source_id": "english-007", + "source_title": "英语作文竞赛", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cc32763c07b3dfb288e00b6993bbbb6e3156d3f4c5201cfec8331d42cb05e2d5", + "text_excerpt": "On one hand, the concept of involution captures the idea of recessive competition, where individuals feel tired to others' ambitions ,which pushes them constantly to struggle forward.At the same time , they also don't want to be surpassed b", + "flags": [] + } + ] + }, + { + "legacy_id": "english:017", + "course_id": "english", + "query": "学习作文竞赛时哪些概念容易混淆?,第17条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-007:h-英语作文竞赛:c03", + "exists": true, + "source_id": "english-007", + "source_title": "英语作文竞赛", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a6e2c59d676b338173e2b2940386497c24f3bee66302ce1e0cf74a54c21a71c8", + "text_excerpt": "However, while the lying flat concept may provide people mental relaxation temporarily, it can't be a permanent way to deal with the dilemma. On the contrary, it also raises concerns about disengagement and a lack of ambition. Simply giving", + "flags": [] + } + ] + }, + { + "legacy_id": "english:018", + "course_id": "english", + "query": "考试会怎么考作文竞赛?,第18条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-007:h-英语作文竞赛:c04", + "exists": true, + "source_id": "english-007", + "source_title": "英语作文竞赛", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5c8f670eb110f41adb316947ea2fed1689d2dc7f97952f71d681fc5d81d89e61", + "text_excerpt": "At the same time, it is crucial to prioritize mental health, and cultivate a sense of fulfillment beyond external expectation. Finding meaning and satisfaction when pursuing your goals, is key to leading a reasonable and scientific involuti", + "flags": [] + } + ] + }, + { + "legacy_id": "english:019", + "course_id": "english", + "query": "复习主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-008:h-英语复习:c01", + "exists": true, + "source_id": "english-008", + "source_title": "英语复习", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "af8f5c3edc1533bb025b0dbbbd546f337e0fb4980e99da46603efcdb251ceda1", + "text_excerpt": "Acknowledges the\n\nAggregate demand\n\nAllocation and\n\nAppendix ,\n\nArbitrary power\n\nAnalogous to\n\nTo(adjacent)\n\nAttain standard\n\nBias against\n\nBulk(in)\n\nCite further\n\nWith(Coincide)\n\nConfine to\n\nComprehensive healthcare\n\nOf(comprises)\n\nCommodi", + "flags": [] + } + ] + }, + { + "legacy_id": "english:020", + "course_id": "english", + "query": "我想先复习复习,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-008:h-英语复习:c02", + "exists": true, + "source_id": "english-008", + "source_title": "英语复习", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5396ba85d99c41014d463f3361e9e7bd36224d3e49b9344e4d0ef7f32c44bfc2", + "text_excerpt": "Virtually impossible\n\nWidespread desire\n\nWhereby Britons", + "flags": [] + } + ] + }, + { + "legacy_id": "english:021", + "course_id": "english", + "query": "复习2023级学术第一学期考试大纲时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-004:h-2023级学术英语第一学期考试大纲:c01", + "exists": true, + "source_id": "english-004", + "source_title": "2023级学术英语第一学期考试大纲", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "d913ffb40d75270b0b9b0f493aafb3036087e4b3085c92c3f00f6f1a99942826", + "text_excerpt": "**试卷结构:**\n\n**Part** **I** **Listening (20%)** *(2***10**=**20* *points)*\n\n分值:20分(10个小题,每题2分,单项选择题)\n\n2篇学术讲座片段,每个播放两遍,每个讲座结束后提5个问题。\n\n小题数:10 分值: 20% 时间:约30 min.\n\n试题来源:《新时代大学学术英语视听说教程》(上册1-5单元)里面的viewing视频1个+《新时代大学学术英语综合教程》(上册1-", + "flags": [] + } + ] + }, + { + "legacy_id": "english:022", + "course_id": "english", + "query": "议论文写作个人总结里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-005:p1:c01", + "exists": true, + "source_id": "english-005", + "source_title": "英语议论文写作个人总结", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "96af000c85a675af4f58f4688e40c13ceedd6b6a7545c0f54e8d9288e59540d0", + "text_excerpt": "开头段:通过一个有趣的事实、统计数据、引言或者问题来吸引读者的注意。Nowadays,提\n供与主题相关的必要背景信息,帮助读者理解讨论的内容.Practically(实际上),明确表达你的\n主要观点或论点,通常是一句话\n主体段:介绍优点等。\n驳斥段:Just As a popular saying goes,every coin has two sides,讨论议题is no exception,and in\nanother word,it still has negativ", + "flags": [] + } + ] + }, + { + "legacy_id": "english:023", + "course_id": "english", + "query": "学习SUMMARY时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-006:h-英语summary:c01", + "exists": true, + "source_id": "english-006", + "source_title": "英语SUMMARY", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "10bc6f072e58b7544ba9101d7e13fc237d59686524961f2b0173e22a802bba6c", + "text_excerpt": "Unit 7,text A\n\nThe passage illustrates that children need physical education more than before .And it can be divided into three parts.\n\nIn the first part,the passage says about nowadays most students’ attitudes to PE are negative. It also ", + "flags": [] + } + ] + }, + { + "legacy_id": "english:024", + "course_id": "english", + "query": "考试会怎么考SUMMARY?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-006:h-英语summary:c02", + "exists": true, + "source_id": "english-006", + "source_title": "英语SUMMARY", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "d2ca9597a894f3b852bad9a5e3ddd2d220ca9fe9a136a5d4828ace4e07a6775c", + "text_excerpt": "In the last part ,the author thinks that someone who thinks doing exercises is just a waste of time should change their mind.Because today we can live unhealthily easier than any other time before. So if we don’t do exercises to live more h", + "flags": [] + } + ] + }, + { + "legacy_id": "english:025", + "course_id": "english", + "query": "作文竞赛主要讲什么?,第25条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-007:h-英语作文竞赛:c01", + "exists": true, + "source_id": "english-007", + "source_title": "英语作文竞赛", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6fa9fa0f2aa7e7f02ed67cec1d40b6e77f5a0cdba343455301818cf8ba001bef", + "text_excerpt": "In today's fast-paced society, the concepts of involution \"neijuan\"and lying flat \"tangping\"have become prominent buzzwords, reflecting nowadays' challenges and different responses to excessive competition and pressure. The unstoppable purs", + "flags": [] + } + ] + }, + { + "legacy_id": "english:026", + "course_id": "english", + "query": "我想先复习作文竞赛,应该从哪里开始?,第26条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-007:h-英语作文竞赛:c02", + "exists": true, + "source_id": "english-007", + "source_title": "英语作文竞赛", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cc32763c07b3dfb288e00b6993bbbb6e3156d3f4c5201cfec8331d42cb05e2d5", + "text_excerpt": "On one hand, the concept of involution captures the idea of recessive competition, where individuals feel tired to others' ambitions ,which pushes them constantly to struggle forward.At the same time , they also don't want to be surpassed b", + "flags": [] + } + ] + }, + { + "legacy_id": "english:027", + "course_id": "english", + "query": "复习作文竞赛时哪些内容最重要?,第27条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-007:h-英语作文竞赛:c03", + "exists": true, + "source_id": "english-007", + "source_title": "英语作文竞赛", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a6e2c59d676b338173e2b2940386497c24f3bee66302ce1e0cf74a54c21a71c8", + "text_excerpt": "However, while the lying flat concept may provide people mental relaxation temporarily, it can't be a permanent way to deal with the dilemma. On the contrary, it also raises concerns about disengagement and a lack of ambition. Simply giving", + "flags": [] + } + ] + }, + { + "legacy_id": "english:028", + "course_id": "english", + "query": "作文竞赛里的方法或结论怎么理解?,第28条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-007:h-英语作文竞赛:c04", + "exists": true, + "source_id": "english-007", + "source_title": "英语作文竞赛", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5c8f670eb110f41adb316947ea2fed1689d2dc7f97952f71d681fc5d81d89e61", + "text_excerpt": "At the same time, it is crucial to prioritize mental health, and cultivate a sense of fulfillment beyond external expectation. Finding meaning and satisfaction when pursuing your goals, is key to leading a reasonable and scientific involuti", + "flags": [] + } + ] + }, + { + "legacy_id": "english:029", + "course_id": "english", + "query": "学习复习时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-008:h-英语复习:c01", + "exists": true, + "source_id": "english-008", + "source_title": "英语复习", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "af8f5c3edc1533bb025b0dbbbd546f337e0fb4980e99da46603efcdb251ceda1", + "text_excerpt": "Acknowledges the\n\nAggregate demand\n\nAllocation and\n\nAppendix ,\n\nArbitrary power\n\nAnalogous to\n\nTo(adjacent)\n\nAttain standard\n\nBias against\n\nBulk(in)\n\nCite further\n\nWith(Coincide)\n\nConfine to\n\nComprehensive healthcare\n\nOf(comprises)\n\nCommodi", + "flags": [] + } + ] + }, + { + "legacy_id": "english:030", + "course_id": "english", + "query": "考试会怎么考复习?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "english-008:h-英语复习:c02", + "exists": true, + "source_id": "english-008", + "source_title": "英语复习", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5396ba85d99c41014d463f3361e9e7bd36224d3e49b9344e4d0ef7f32c44bfc2", + "text_excerpt": "Virtually impossible\n\nWidespread desire\n\nWhereby Britons", + "flags": [] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:001", + "course_id": "ideology_morality_and_rule_of_law", + "query": "2023级试卷赖怡芳老师主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:h-思政2023级试卷赖怡芳老师:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "49be5e71939a4cfc50f6d21dc9778f7d1a8394c7957ad6f97cd7a363e1932faf", + "text_excerpt": "- **名词解释(共3题,每小题5分,共15分)**", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:002", + "course_id": "ideology_morality_and_rule_of_law", + "query": "做信念题时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q1:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6e1b54d86ffaa0efe4a06c5dd55c0636f8f7d55c62741a0573c76f7b610a7e6d", + "text_excerpt": "1. 信念(P45)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:003", + "course_id": "ideology_morality_and_rule_of_law", + "query": "道德的含义和作用的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q2:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "01bffa7a178097126d3da803670c2aeeeba1ef542ebb6ac0a8881ca63a1bb8a9", + "text_excerpt": "1. 道德(P138)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:004", + "course_id": "ideology_morality_and_rule_of_law", + "query": "能把法律适用案例中的责任分析的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q3:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5feb9c77ae535a1d522f6e23e59932dc5f6eaf7f2eafdc5d416a02f4408411f0", + "text_excerpt": "1. 法律适用(P197)\n- **案例分析题(共2题,每小题15分,共30分)**(老师上课讲的)\n\n1.12岁的小明在母亲陪同下去公园玩耍,遇到在妻子陪同下的间歇性精神病人李强。小明戏弄李强,导致李强精神受到刺激而精神病发并殴打小明,小明受伤被送院治疗,支付了一笔医疗费。请问:小明的医疗费应当由谁来承担,请说明理由。\n\n2.张某拾得王某的母羊一只。张某拾得母羊后在自家小院里精心喂养母羊,不久后母羊产下一只小羊。王某知道后要求张某退还母羊和小羊。张某拒不退还。请问:王某是否", + "flags": [] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:005", + "course_id": "ideology_morality_and_rule_of_law", + "query": "做人生观的主要内容时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q4:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "08dd7b6f91b2a28b912acc5b146976c3987c0c7231b38a1a81748da896373c92", + "text_excerpt": "1. 人生观的主要内容(P17)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:006", + "course_id": "ideology_morality_and_rule_of_law", + "query": "这类题一般怎么考?能用个人和社会的辩证关系举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q5:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0a0246575cbd2977027161dcadf1febe1035277f3f786070035fc0ea9f6a2ed9", + "text_excerpt": "1. 道德的功能(P142)\n- **论述题(共1题,每题25分,共25分)**\n\n马克思主义认为,个人与社会是辩证统一的。请运用“人的本质”原理,结合自身实际,谈谈人生的自我价值和社会价值的关系。(P14.P19)", + "flags": [] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:007", + "course_id": "ideology_morality_and_rule_of_law", + "query": "道德的含义和作用怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-002:h-思政题目2024级回忆:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-002", + "source_title": "思政题目2024级回忆", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "05fa0082242fcc889387a2b79c44a17ac4eb3b31d3913fff13fe16ae38197cec", + "text_excerpt": "名词解释:世界观,社会公德,国家安全\n\n答案:P20,P167,P94\n\n辨析题:\n\n1、分析以下观点:“人生就在于满足感官的需求和快乐”\n\n2、19岁小明往游戏里充值了2万元,小明的父亲可以向游戏公司要回这2万元吗\n\n分析题:\n1. 爱国主义的基本内涵\n\n答案:P79\n1. 社会主义核心价值观和社会主义核心价值体系之间的关系\n\n答案:P110\n\n材料题:\n\n材料内容:来广州打工后成为广东省高级人民法院一名保安的许霆,来到广州市天河区黄埔大道某银行的ATM取款机取款。结果取出", + "flags": [] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:008", + "course_id": "ideology_morality_and_rule_of_law", + "query": "我想先复习2023级试卷赖怡芳老师,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:h-思政2023级试卷赖怡芳老师:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "49be5e71939a4cfc50f6d21dc9778f7d1a8394c7957ad6f97cd7a363e1932faf", + "text_excerpt": "- **名词解释(共3题,每小题5分,共15分)**", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:009", + "course_id": "ideology_morality_and_rule_of_law", + "query": "信念题的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q1:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6e1b54d86ffaa0efe4a06c5dd55c0636f8f7d55c62741a0573c76f7b610a7e6d", + "text_excerpt": "1. 信念(P45)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:010", + "course_id": "ideology_morality_and_rule_of_law", + "query": "能把道德的含义和作用的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q2:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "01bffa7a178097126d3da803670c2aeeeba1ef542ebb6ac0a8881ca63a1bb8a9", + "text_excerpt": "1. 道德(P138)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:011", + "course_id": "ideology_morality_and_rule_of_law", + "query": "做法律适用案例中的责任分析时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q3:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5feb9c77ae535a1d522f6e23e59932dc5f6eaf7f2eafdc5d416a02f4408411f0", + "text_excerpt": "1. 法律适用(P197)\n- **案例分析题(共2题,每小题15分,共30分)**(老师上课讲的)\n\n1.12岁的小明在母亲陪同下去公园玩耍,遇到在妻子陪同下的间歇性精神病人李强。小明戏弄李强,导致李强精神受到刺激而精神病发并殴打小明,小明受伤被送院治疗,支付了一笔医疗费。请问:小明的医疗费应当由谁来承担,请说明理由。\n\n2.张某拾得王某的母羊一只。张某拾得母羊后在自家小院里精心喂养母羊,不久后母羊产下一只小羊。王某知道后要求张某退还母羊和小羊。张某拒不退还。请问:王某是否", + "flags": [] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:012", + "course_id": "ideology_morality_and_rule_of_law", + "query": "这类题一般怎么考?能用人生观的主要内容举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q4:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "08dd7b6f91b2a28b912acc5b146976c3987c0c7231b38a1a81748da896373c92", + "text_excerpt": "1. 人生观的主要内容(P17)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:013", + "course_id": "ideology_morality_and_rule_of_law", + "query": "个人和社会的辩证关系怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q5:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0a0246575cbd2977027161dcadf1febe1035277f3f786070035fc0ea9f6a2ed9", + "text_excerpt": "1. 道德的功能(P142)\n- **论述题(共1题,每题25分,共25分)**\n\n马克思主义认为,个人与社会是辩证统一的。请运用“人的本质”原理,结合自身实际,谈谈人生的自我价值和社会价值的关系。(P14.P19)", + "flags": [] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:014", + "course_id": "ideology_morality_and_rule_of_law", + "query": "做道德的含义和作用时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-002:h-思政题目2024级回忆:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-002", + "source_title": "思政题目2024级回忆", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "05fa0082242fcc889387a2b79c44a17ac4eb3b31d3913fff13fe16ae38197cec", + "text_excerpt": "名词解释:世界观,社会公德,国家安全\n\n答案:P20,P167,P94\n\n辨析题:\n\n1、分析以下观点:“人生就在于满足感官的需求和快乐”\n\n2、19岁小明往游戏里充值了2万元,小明的父亲可以向游戏公司要回这2万元吗\n\n分析题:\n1. 爱国主义的基本内涵\n\n答案:P79\n1. 社会主义核心价值观和社会主义核心价值体系之间的关系\n\n答案:P110\n\n材料题:\n\n材料内容:来广州打工后成为广东省高级人民法院一名保安的许霆,来到广州市天河区黄埔大道某银行的ATM取款机取款。结果取出", + "flags": [] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:015", + "course_id": "ideology_morality_and_rule_of_law", + "query": "复习2023级试卷赖怡芳老师时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:h-思政2023级试卷赖怡芳老师:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "49be5e71939a4cfc50f6d21dc9778f7d1a8394c7957ad6f97cd7a363e1932faf", + "text_excerpt": "- **名词解释(共3题,每小题5分,共15分)**", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:016", + "course_id": "ideology_morality_and_rule_of_law", + "query": "能把信念题的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q1:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6e1b54d86ffaa0efe4a06c5dd55c0636f8f7d55c62741a0573c76f7b610a7e6d", + "text_excerpt": "1. 信念(P45)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:017", + "course_id": "ideology_morality_and_rule_of_law", + "query": "做道德的含义和作用时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q2:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "01bffa7a178097126d3da803670c2aeeeba1ef542ebb6ac0a8881ca63a1bb8a9", + "text_excerpt": "1. 道德(P138)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:018", + "course_id": "ideology_morality_and_rule_of_law", + "query": "这类题一般怎么考?能用法律适用案例中的责任分析举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q3:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5feb9c77ae535a1d522f6e23e59932dc5f6eaf7f2eafdc5d416a02f4408411f0", + "text_excerpt": "1. 法律适用(P197)\n- **案例分析题(共2题,每小题15分,共30分)**(老师上课讲的)\n\n1.12岁的小明在母亲陪同下去公园玩耍,遇到在妻子陪同下的间歇性精神病人李强。小明戏弄李强,导致李强精神受到刺激而精神病发并殴打小明,小明受伤被送院治疗,支付了一笔医疗费。请问:小明的医疗费应当由谁来承担,请说明理由。\n\n2.张某拾得王某的母羊一只。张某拾得母羊后在自家小院里精心喂养母羊,不久后母羊产下一只小羊。王某知道后要求张某退还母羊和小羊。张某拒不退还。请问:王某是否", + "flags": [] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:019", + "course_id": "ideology_morality_and_rule_of_law", + "query": "人生观的主要内容怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q4:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "08dd7b6f91b2a28b912acc5b146976c3987c0c7231b38a1a81748da896373c92", + "text_excerpt": "1. 人生观的主要内容(P17)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:020", + "course_id": "ideology_morality_and_rule_of_law", + "query": "做个人和社会的辩证关系时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q5:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0a0246575cbd2977027161dcadf1febe1035277f3f786070035fc0ea9f6a2ed9", + "text_excerpt": "1. 道德的功能(P142)\n- **论述题(共1题,每题25分,共25分)**\n\n马克思主义认为,个人与社会是辩证统一的。请运用“人的本质”原理,结合自身实际,谈谈人生的自我价值和社会价值的关系。(P14.P19)", + "flags": [] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:021", + "course_id": "ideology_morality_and_rule_of_law", + "query": "道德的含义和作用的答案怎么判断?,第21条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-002:h-思政题目2024级回忆:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-002", + "source_title": "思政题目2024级回忆", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "05fa0082242fcc889387a2b79c44a17ac4eb3b31d3913fff13fe16ae38197cec", + "text_excerpt": "名词解释:世界观,社会公德,国家安全\n\n答案:P20,P167,P94\n\n辨析题:\n\n1、分析以下观点:“人生就在于满足感官的需求和快乐”\n\n2、19岁小明往游戏里充值了2万元,小明的父亲可以向游戏公司要回这2万元吗\n\n分析题:\n1. 爱国主义的基本内涵\n\n答案:P79\n1. 社会主义核心价值观和社会主义核心价值体系之间的关系\n\n答案:P110\n\n材料题:\n\n材料内容:来广州打工后成为广东省高级人民法院一名保安的许霆,来到广州市天河区黄埔大道某银行的ATM取款机取款。结果取出", + "flags": [] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:022", + "course_id": "ideology_morality_and_rule_of_law", + "query": "2023级试卷赖怡芳老师里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:h-思政2023级试卷赖怡芳老师:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "49be5e71939a4cfc50f6d21dc9778f7d1a8394c7957ad6f97cd7a363e1932faf", + "text_excerpt": "- **名词解释(共3题,每小题5分,共15分)**", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:023", + "course_id": "ideology_morality_and_rule_of_law", + "query": "做信念题时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q1:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6e1b54d86ffaa0efe4a06c5dd55c0636f8f7d55c62741a0573c76f7b610a7e6d", + "text_excerpt": "1. 信念(P45)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:024", + "course_id": "ideology_morality_and_rule_of_law", + "query": "这类题一般怎么考?能用道德的含义和作用举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q2:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "01bffa7a178097126d3da803670c2aeeeba1ef542ebb6ac0a8881ca63a1bb8a9", + "text_excerpt": "1. 道德(P138)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:025", + "course_id": "ideology_morality_and_rule_of_law", + "query": "法律适用案例中的责任分析怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q3:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5feb9c77ae535a1d522f6e23e59932dc5f6eaf7f2eafdc5d416a02f4408411f0", + "text_excerpt": "1. 法律适用(P197)\n- **案例分析题(共2题,每小题15分,共30分)**(老师上课讲的)\n\n1.12岁的小明在母亲陪同下去公园玩耍,遇到在妻子陪同下的间歇性精神病人李强。小明戏弄李强,导致李强精神受到刺激而精神病发并殴打小明,小明受伤被送院治疗,支付了一笔医疗费。请问:小明的医疗费应当由谁来承担,请说明理由。\n\n2.张某拾得王某的母羊一只。张某拾得母羊后在自家小院里精心喂养母羊,不久后母羊产下一只小羊。王某知道后要求张某退还母羊和小羊。张某拒不退还。请问:王某是否", + "flags": [] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:026", + "course_id": "ideology_morality_and_rule_of_law", + "query": "做人生观的主要内容时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q4:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "08dd7b6f91b2a28b912acc5b146976c3987c0c7231b38a1a81748da896373c92", + "text_excerpt": "1. 人生观的主要内容(P17)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:027", + "course_id": "ideology_morality_and_rule_of_law", + "query": "个人和社会的辩证关系的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q5:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0a0246575cbd2977027161dcadf1febe1035277f3f786070035fc0ea9f6a2ed9", + "text_excerpt": "1. 道德的功能(P142)\n- **论述题(共1题,每题25分,共25分)**\n\n马克思主义认为,个人与社会是辩证统一的。请运用“人的本质”原理,结合自身实际,谈谈人生的自我价值和社会价值的关系。(P14.P19)", + "flags": [] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:028", + "course_id": "ideology_morality_and_rule_of_law", + "query": "能把道德的含义和作用的解题步骤写出来吗?,第28条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-002:h-思政题目2024级回忆:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-002", + "source_title": "思政题目2024级回忆", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "05fa0082242fcc889387a2b79c44a17ac4eb3b31d3913fff13fe16ae38197cec", + "text_excerpt": "名词解释:世界观,社会公德,国家安全\n\n答案:P20,P167,P94\n\n辨析题:\n\n1、分析以下观点:“人生就在于满足感官的需求和快乐”\n\n2、19岁小明往游戏里充值了2万元,小明的父亲可以向游戏公司要回这2万元吗\n\n分析题:\n1. 爱国主义的基本内涵\n\n答案:P79\n1. 社会主义核心价值观和社会主义核心价值体系之间的关系\n\n答案:P110\n\n材料题:\n\n材料内容:来广州打工后成为广东省高级人民法院一名保安的许霆,来到广州市天河区黄埔大道某银行的ATM取款机取款。结果取出", + "flags": [] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:029", + "course_id": "ideology_morality_and_rule_of_law", + "query": "学习2023级试卷赖怡芳老师时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:h-思政2023级试卷赖怡芳老师:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "49be5e71939a4cfc50f6d21dc9778f7d1a8394c7957ad6f97cd7a363e1932faf", + "text_excerpt": "- **名词解释(共3题,每小题5分,共15分)**", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "ideology_morality_and_rule_of_law:030", + "course_id": "ideology_morality_and_rule_of_law", + "query": "这类题一般怎么考?能用信念题举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q1:c01", + "exists": true, + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6e1b54d86ffaa0efe4a06c5dd55c0636f8f7d55c62741a0573c76f7b610a7e6d", + "text_excerpt": "1. 信念(P45)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "information_security_intro:001", + "course_id": "information_security_intro", + "query": "2021-2022-1学期B卷主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-002:p1:c01", + "exists": true, + "source_id": "information-security-intro-002", + "source_title": "2021-2022-1学期《信息安全导论》B卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "155808e7c70db04d25e008c9fe90281bf0c4228a0d16efac0d4ca9bfd830cff9", + "text_excerpt": "![page-001.jpg](assets/information-security-intro-002/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_intro:002", + "course_id": "information_security_intro", + "query": "我想先复习2021-2022-1学期B卷,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-002:p2:c01", + "exists": true, + "source_id": "information-security-intro-002", + "source_title": "2021-2022-1学期《信息安全导论》B卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "42a66675ced4c306b6f3a5a22526b9085e31587d88a7c6a3e51afca64e100949", + "text_excerpt": "![page-002.jpg](assets/information-security-intro-002/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_intro:003", + "course_id": "information_security_intro", + "query": "复习2021-2022-1学期B卷时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-002:p3:c01", + "exists": true, + "source_id": "information-security-intro-002", + "source_title": "2021-2022-1学期《信息安全导论》B卷", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "e1ad3c96c4dd85ebdbd7c8f8e5b27568a7bbc6fdf128208296321f76ffff6de7", + "text_excerpt": "![page-003.jpg](assets/information-security-intro-002/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_intro:004", + "course_id": "information_security_intro", + "query": "2021-2022-1学期B卷里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-002:p4:c01", + "exists": true, + "source_id": "information-security-intro-002", + "source_title": "2021-2022-1学期《信息安全导论》B卷", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "64794b608c24a81138f7b97b9c6cd1c2124f2551bad5030ceba44ed45cf18892", + "text_excerpt": "![page-004.jpg](assets/information-security-intro-002/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_intro:005", + "course_id": "information_security_intro", + "query": "学习复习提纲 v1时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c01", + "exists": true, + "source_id": "information-security-intro-003", + "source_title": "《信安导论》复习提纲 v1 (精简版)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cfc988858d12a92d7c6c8239b0f6ba9962c72bdc22811b63009d217e9e54bc3a", + "text_excerpt": "复习提纲\n\n第一章\n\n1.1\n- 信息安全的ISO定义、信息安全的目的(p1)。\n- 信息安全的几个要素的涵义,具体包括:机密性、完整性、可用性、可控性、不可否认性。(p2)\n- 信息保障的三要素:人、技术和管理。(p2)\n- 信息保障的四个方面:保护、检测、反应和恢复。(p2)\n\n1.2\n- 信息安全威胁的基本类型:信息泄露、伪造、完整性破坏、业务否决或拒绝服务、未经授权访问(p3~4)\n\n1.3\n- 社会工程学攻击的概念 (教材p9)\n\n1.4\n- 信息安全的三个基本目标", + "flags": [] + } + ] + }, + { + "legacy_id": "information_security_intro:006", + "course_id": "information_security_intro", + "query": "考试会怎么考复习提纲 v1?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c02", + "exists": true, + "source_id": "information-security-intro-003", + "source_title": "《信安导论》复习提纲 v1 (精简版)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "dd66a6cc5737ebf4659d10057e6768a7d1f12b55732632f91014ceffafd20dbb", + "text_excerpt": "2.4 公开密钥密码\n- 公钥密码提出的标志:1976年的Diffie-Hellman密钥交换算法(p33)\n- 公开密钥密码与对称密钥密码的不同:不是基于代替和置换,而是基于数学函数;非对称/双密钥; 六要素;支持不可抵赖性(不可否认性)(p32)\n- 公开密钥密码与对称密钥密码相比,其优缺点:\n - 优点:解决了密钥分发到的难题,密钥管理简单容易,便于实现数字签名。\n - 缺点:计算开销大、加密和解密速度慢、要求密钥位数更多、密文长度往往大于明文长度。\n- 公钥密码通", + "flags": [] + } + ] + }, + { + "legacy_id": "information_security_intro:007", + "course_id": "information_security_intro", + "query": "复习提纲 v1主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c03", + "exists": true, + "source_id": "information-security-intro-003", + "source_title": "《信安导论》复习提纲 v1 (精简版)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6ac93338c0434ffec37700b42b806b56f22ed7d8c16dcaa37662d148bd798f16", + "text_excerpt": "4.2 认证协议\n- 基于挑战-应答方式的认证协议基本原理(p58)\n- Needham-Schroeder认证协议:理解认证过程;\n- Kerberos认证协议:基于对称密钥系统为C/S应用提供的第三方认证服务;由AS和TGS构成;理解其认证过程(三阶段、六步骤)。(p59)\n- Windows系统安全认证:主域控制器的作用、交互过程不在网络上传递口令及其散列值(哈希值)。\n- Needham-Schroeder公钥认证协议:协议交互过程;(p62)\n- 公钥交换存在的问题", + "flags": [] + } + ] + }, + { + "legacy_id": "information_security_intro:008", + "course_id": "information_security_intro", + "query": "我想先复习复习提纲 v1,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c04", + "exists": true, + "source_id": "information-security-intro-003", + "source_title": "《信安导论》复习提纲 v1 (精简版)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "be995ebae127cb90cf3359d48b2c313e2a47e916d72494c09fb099a0dc702e4d", + "text_excerpt": "6.2\n- 计算机病毒根据工作原理和传播方式划分为三类(p82)\n- CIH病毒属于传统病毒,其主要由三个模块构成,包括: …(p82-83)\n- CIH病毒的攻击对象:PE格式的exe文件(p83)\n- CIH病毒发作的方式:启动模块驻留内存,传染模块和破坏模块均为条件触发。(p83)\n- CIH病毒的主要传播方式是文件复制(p83)\n- CIH病毒的查杀方式:手工检测、杀毒软件。(p83)\n- 蠕虫病毒的特征:传染性、网络传播、利用漏洞…\n- 尼姆达(Nimda)是典型", + "flags": [] + } + ] + }, + { + "legacy_id": "information_security_intro:009", + "course_id": "information_security_intro", + "query": "复习2021-2022-1学期B卷时哪些内容最重要?,见第1页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-002:p1:c01", + "exists": true, + "source_id": "information-security-intro-002", + "source_title": "2021-2022-1学期《信息安全导论》B卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "155808e7c70db04d25e008c9fe90281bf0c4228a0d16efac0d4ca9bfd830cff9", + "text_excerpt": "![page-001.jpg](assets/information-security-intro-002/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_intro:010", + "course_id": "information_security_intro", + "query": "2021-2022-1学期B卷里的方法或结论怎么理解?,见第2页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-002:p2:c01", + "exists": true, + "source_id": "information-security-intro-002", + "source_title": "2021-2022-1学期《信息安全导论》B卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "42a66675ced4c306b6f3a5a22526b9085e31587d88a7c6a3e51afca64e100949", + "text_excerpt": "![page-002.jpg](assets/information-security-intro-002/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_intro:011", + "course_id": "information_security_intro", + "query": "学习2021-2022-1学期B卷时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-002:p3:c01", + "exists": true, + "source_id": "information-security-intro-002", + "source_title": "2021-2022-1学期《信息安全导论》B卷", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "e1ad3c96c4dd85ebdbd7c8f8e5b27568a7bbc6fdf128208296321f76ffff6de7", + "text_excerpt": "![page-003.jpg](assets/information-security-intro-002/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_intro:012", + "course_id": "information_security_intro", + "query": "考试会怎么考2021-2022-1学期B卷?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-002:p4:c01", + "exists": true, + "source_id": "information-security-intro-002", + "source_title": "2021-2022-1学期《信息安全导论》B卷", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "64794b608c24a81138f7b97b9c6cd1c2124f2551bad5030ceba44ed45cf18892", + "text_excerpt": "![page-004.jpg](assets/information-security-intro-002/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_intro:013", + "course_id": "information_security_intro", + "query": "复习提纲 v1主要讲什么?,第13条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c01", + "exists": true, + "source_id": "information-security-intro-003", + "source_title": "《信安导论》复习提纲 v1 (精简版)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cfc988858d12a92d7c6c8239b0f6ba9962c72bdc22811b63009d217e9e54bc3a", + "text_excerpt": "复习提纲\n\n第一章\n\n1.1\n- 信息安全的ISO定义、信息安全的目的(p1)。\n- 信息安全的几个要素的涵义,具体包括:机密性、完整性、可用性、可控性、不可否认性。(p2)\n- 信息保障的三要素:人、技术和管理。(p2)\n- 信息保障的四个方面:保护、检测、反应和恢复。(p2)\n\n1.2\n- 信息安全威胁的基本类型:信息泄露、伪造、完整性破坏、业务否决或拒绝服务、未经授权访问(p3~4)\n\n1.3\n- 社会工程学攻击的概念 (教材p9)\n\n1.4\n- 信息安全的三个基本目标", + "flags": [] + } + ] + }, + { + "legacy_id": "information_security_intro:014", + "course_id": "information_security_intro", + "query": "我想先复习复习提纲 v1,应该从哪里开始?,第14条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c02", + "exists": true, + "source_id": "information-security-intro-003", + "source_title": "《信安导论》复习提纲 v1 (精简版)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "dd66a6cc5737ebf4659d10057e6768a7d1f12b55732632f91014ceffafd20dbb", + "text_excerpt": "2.4 公开密钥密码\n- 公钥密码提出的标志:1976年的Diffie-Hellman密钥交换算法(p33)\n- 公开密钥密码与对称密钥密码的不同:不是基于代替和置换,而是基于数学函数;非对称/双密钥; 六要素;支持不可抵赖性(不可否认性)(p32)\n- 公开密钥密码与对称密钥密码相比,其优缺点:\n - 优点:解决了密钥分发到的难题,密钥管理简单容易,便于实现数字签名。\n - 缺点:计算开销大、加密和解密速度慢、要求密钥位数更多、密文长度往往大于明文长度。\n- 公钥密码通", + "flags": [] + } + ] + }, + { + "legacy_id": "information_security_intro:015", + "course_id": "information_security_intro", + "query": "复习复习提纲 v1时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c03", + "exists": true, + "source_id": "information-security-intro-003", + "source_title": "《信安导论》复习提纲 v1 (精简版)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6ac93338c0434ffec37700b42b806b56f22ed7d8c16dcaa37662d148bd798f16", + "text_excerpt": "4.2 认证协议\n- 基于挑战-应答方式的认证协议基本原理(p58)\n- Needham-Schroeder认证协议:理解认证过程;\n- Kerberos认证协议:基于对称密钥系统为C/S应用提供的第三方认证服务;由AS和TGS构成;理解其认证过程(三阶段、六步骤)。(p59)\n- Windows系统安全认证:主域控制器的作用、交互过程不在网络上传递口令及其散列值(哈希值)。\n- Needham-Schroeder公钥认证协议:协议交互过程;(p62)\n- 公钥交换存在的问题", + "flags": [] + } + ] + }, + { + "legacy_id": "information_security_intro:016", + "course_id": "information_security_intro", + "query": "复习提纲 v1里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c04", + "exists": true, + "source_id": "information-security-intro-003", + "source_title": "《信安导论》复习提纲 v1 (精简版)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "be995ebae127cb90cf3359d48b2c313e2a47e916d72494c09fb099a0dc702e4d", + "text_excerpt": "6.2\n- 计算机病毒根据工作原理和传播方式划分为三类(p82)\n- CIH病毒属于传统病毒,其主要由三个模块构成,包括: …(p82-83)\n- CIH病毒的攻击对象:PE格式的exe文件(p83)\n- CIH病毒发作的方式:启动模块驻留内存,传染模块和破坏模块均为条件触发。(p83)\n- CIH病毒的主要传播方式是文件复制(p83)\n- CIH病毒的查杀方式:手工检测、杀毒软件。(p83)\n- 蠕虫病毒的特征:传染性、网络传播、利用漏洞…\n- 尼姆达(Nimda)是典型", + "flags": [] + } + ] + }, + { + "legacy_id": "information_security_intro:017", + "course_id": "information_security_intro", + "query": "学习2021-2022-1学期B卷时哪些概念容易混淆?,见第1页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-002:p1:c01", + "exists": true, + "source_id": "information-security-intro-002", + "source_title": "2021-2022-1学期《信息安全导论》B卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "155808e7c70db04d25e008c9fe90281bf0c4228a0d16efac0d4ca9bfd830cff9", + "text_excerpt": "![page-001.jpg](assets/information-security-intro-002/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_intro:018", + "course_id": "information_security_intro", + "query": "考试会怎么考2021-2022-1学期B卷?,见第2页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-002:p2:c01", + "exists": true, + "source_id": "information-security-intro-002", + "source_title": "2021-2022-1学期《信息安全导论》B卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "42a66675ced4c306b6f3a5a22526b9085e31587d88a7c6a3e51afca64e100949", + "text_excerpt": "![page-002.jpg](assets/information-security-intro-002/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_intro:019", + "course_id": "information_security_intro", + "query": "2021-2022-1学期B卷主要讲什么?,见第3页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-002:p3:c01", + "exists": true, + "source_id": "information-security-intro-002", + "source_title": "2021-2022-1学期《信息安全导论》B卷", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "e1ad3c96c4dd85ebdbd7c8f8e5b27568a7bbc6fdf128208296321f76ffff6de7", + "text_excerpt": "![page-003.jpg](assets/information-security-intro-002/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_intro:020", + "course_id": "information_security_intro", + "query": "我想先复习2021-2022-1学期B卷,应该从哪里开始?,见第4页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-002:p4:c01", + "exists": true, + "source_id": "information-security-intro-002", + "source_title": "2021-2022-1学期《信息安全导论》B卷", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "64794b608c24a81138f7b97b9c6cd1c2124f2551bad5030ceba44ed45cf18892", + "text_excerpt": "![page-004.jpg](assets/information-security-intro-002/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_intro:021", + "course_id": "information_security_intro", + "query": "复习复习提纲 v1时哪些内容最重要?,第21条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c01", + "exists": true, + "source_id": "information-security-intro-003", + "source_title": "《信安导论》复习提纲 v1 (精简版)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cfc988858d12a92d7c6c8239b0f6ba9962c72bdc22811b63009d217e9e54bc3a", + "text_excerpt": "复习提纲\n\n第一章\n\n1.1\n- 信息安全的ISO定义、信息安全的目的(p1)。\n- 信息安全的几个要素的涵义,具体包括:机密性、完整性、可用性、可控性、不可否认性。(p2)\n- 信息保障的三要素:人、技术和管理。(p2)\n- 信息保障的四个方面:保护、检测、反应和恢复。(p2)\n\n1.2\n- 信息安全威胁的基本类型:信息泄露、伪造、完整性破坏、业务否决或拒绝服务、未经授权访问(p3~4)\n\n1.3\n- 社会工程学攻击的概念 (教材p9)\n\n1.4\n- 信息安全的三个基本目标", + "flags": [] + } + ] + }, + { + "legacy_id": "information_security_intro:022", + "course_id": "information_security_intro", + "query": "复习提纲 v1里的方法或结论怎么理解?,第22条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c02", + "exists": true, + "source_id": "information-security-intro-003", + "source_title": "《信安导论》复习提纲 v1 (精简版)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "dd66a6cc5737ebf4659d10057e6768a7d1f12b55732632f91014ceffafd20dbb", + "text_excerpt": "2.4 公开密钥密码\n- 公钥密码提出的标志:1976年的Diffie-Hellman密钥交换算法(p33)\n- 公开密钥密码与对称密钥密码的不同:不是基于代替和置换,而是基于数学函数;非对称/双密钥; 六要素;支持不可抵赖性(不可否认性)(p32)\n- 公开密钥密码与对称密钥密码相比,其优缺点:\n - 优点:解决了密钥分发到的难题,密钥管理简单容易,便于实现数字签名。\n - 缺点:计算开销大、加密和解密速度慢、要求密钥位数更多、密文长度往往大于明文长度。\n- 公钥密码通", + "flags": [] + } + ] + }, + { + "legacy_id": "information_security_intro:023", + "course_id": "information_security_intro", + "query": "学习复习提纲 v1时哪些概念容易混淆?,第23条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c03", + "exists": true, + "source_id": "information-security-intro-003", + "source_title": "《信安导论》复习提纲 v1 (精简版)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6ac93338c0434ffec37700b42b806b56f22ed7d8c16dcaa37662d148bd798f16", + "text_excerpt": "4.2 认证协议\n- 基于挑战-应答方式的认证协议基本原理(p58)\n- Needham-Schroeder认证协议:理解认证过程;\n- Kerberos认证协议:基于对称密钥系统为C/S应用提供的第三方认证服务;由AS和TGS构成;理解其认证过程(三阶段、六步骤)。(p59)\n- Windows系统安全认证:主域控制器的作用、交互过程不在网络上传递口令及其散列值(哈希值)。\n- Needham-Schroeder公钥认证协议:协议交互过程;(p62)\n- 公钥交换存在的问题", + "flags": [] + } + ] + }, + { + "legacy_id": "information_security_intro:024", + "course_id": "information_security_intro", + "query": "考试会怎么考复习提纲 v1?,第24条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c04", + "exists": true, + "source_id": "information-security-intro-003", + "source_title": "《信安导论》复习提纲 v1 (精简版)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "be995ebae127cb90cf3359d48b2c313e2a47e916d72494c09fb099a0dc702e4d", + "text_excerpt": "6.2\n- 计算机病毒根据工作原理和传播方式划分为三类(p82)\n- CIH病毒属于传统病毒,其主要由三个模块构成,包括: …(p82-83)\n- CIH病毒的攻击对象:PE格式的exe文件(p83)\n- CIH病毒发作的方式:启动模块驻留内存,传染模块和破坏模块均为条件触发。(p83)\n- CIH病毒的主要传播方式是文件复制(p83)\n- CIH病毒的查杀方式:手工检测、杀毒软件。(p83)\n- 蠕虫病毒的特征:传染性、网络传播、利用漏洞…\n- 尼姆达(Nimda)是典型", + "flags": [] + } + ] + }, + { + "legacy_id": "information_security_intro:025", + "course_id": "information_security_intro", + "query": "2021-2022-1学期B卷主要讲什么?,见第1页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-002:p1:c01", + "exists": true, + "source_id": "information-security-intro-002", + "source_title": "2021-2022-1学期《信息安全导论》B卷", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "155808e7c70db04d25e008c9fe90281bf0c4228a0d16efac0d4ca9bfd830cff9", + "text_excerpt": "![page-001.jpg](assets/information-security-intro-002/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_intro:026", + "course_id": "information_security_intro", + "query": "我想先复习2021-2022-1学期B卷,应该从哪里开始?,见第2页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-002:p2:c01", + "exists": true, + "source_id": "information-security-intro-002", + "source_title": "2021-2022-1学期《信息安全导论》B卷", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "42a66675ced4c306b6f3a5a22526b9085e31587d88a7c6a3e51afca64e100949", + "text_excerpt": "![page-002.jpg](assets/information-security-intro-002/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_intro:027", + "course_id": "information_security_intro", + "query": "复习2021-2022-1学期B卷时哪些内容最重要?,见第3页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-002:p3:c01", + "exists": true, + "source_id": "information-security-intro-002", + "source_title": "2021-2022-1学期《信息安全导论》B卷", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "e1ad3c96c4dd85ebdbd7c8f8e5b27568a7bbc6fdf128208296321f76ffff6de7", + "text_excerpt": "![page-003.jpg](assets/information-security-intro-002/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_intro:028", + "course_id": "information_security_intro", + "query": "2021-2022-1学期B卷里的方法或结论怎么理解?,见第4页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-002:p4:c01", + "exists": true, + "source_id": "information-security-intro-002", + "source_title": "2021-2022-1学期《信息安全导论》B卷", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "64794b608c24a81138f7b97b9c6cd1c2124f2551bad5030ceba44ed45cf18892", + "text_excerpt": "![page-004.jpg](assets/information-security-intro-002/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_intro:029", + "course_id": "information_security_intro", + "query": "学习复习提纲 v1时哪些概念容易混淆?,第29条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c01", + "exists": true, + "source_id": "information-security-intro-003", + "source_title": "《信安导论》复习提纲 v1 (精简版)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cfc988858d12a92d7c6c8239b0f6ba9962c72bdc22811b63009d217e9e54bc3a", + "text_excerpt": "复习提纲\n\n第一章\n\n1.1\n- 信息安全的ISO定义、信息安全的目的(p1)。\n- 信息安全的几个要素的涵义,具体包括:机密性、完整性、可用性、可控性、不可否认性。(p2)\n- 信息保障的三要素:人、技术和管理。(p2)\n- 信息保障的四个方面:保护、检测、反应和恢复。(p2)\n\n1.2\n- 信息安全威胁的基本类型:信息泄露、伪造、完整性破坏、业务否决或拒绝服务、未经授权访问(p3~4)\n\n1.3\n- 社会工程学攻击的概念 (教材p9)\n\n1.4\n- 信息安全的三个基本目标", + "flags": [] + } + ] + }, + { + "legacy_id": "information_security_intro:030", + "course_id": "information_security_intro", + "query": "考试会怎么考复习提纲 v1?,第30条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c02", + "exists": true, + "source_id": "information-security-intro-003", + "source_title": "《信安导论》复习提纲 v1 (精简版)", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "dd66a6cc5737ebf4659d10057e6768a7d1f12b55732632f91014ceffafd20dbb", + "text_excerpt": "2.4 公开密钥密码\n- 公钥密码提出的标志:1976年的Diffie-Hellman密钥交换算法(p33)\n- 公开密钥密码与对称密钥密码的不同:不是基于代替和置换,而是基于数学函数;非对称/双密钥; 六要素;支持不可抵赖性(不可否认性)(p32)\n- 公开密钥密码与对称密钥密码相比,其优缺点:\n - 优点:解决了密钥分发到的难题,密钥管理简单容易,便于实现数字签名。\n - 缺点:计算开销大、加密和解密速度慢、要求密钥位数更多、密文长度往往大于明文长度。\n- 公钥密码通", + "flags": [] + } + ] + }, + { + "legacy_id": "information_security_mathematics:001", + "course_id": "information_security_mathematics", + "query": "05信安A主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-001:p1:c01", + "exists": true, + "source_id": "information-security-mathematics-001", + "source_title": "05信安A", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "8d3197abf42c52ddd25cc2eda5fa361be7b404ecd752b117b72260a4d7895e6c", + "text_excerpt": "![page-001.jpg](assets/information-security-mathematics-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:002", + "course_id": "information_security_mathematics", + "query": "我想先复习05信安A,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-001:p2:c01", + "exists": true, + "source_id": "information-security-mathematics-001", + "source_title": "05信安A", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "e08e5221282ae5828f2f52bc1117314ab23fcea6577e194eb520810ec126a006", + "text_excerpt": "![page-002.jpg](assets/information-security-mathematics-001/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:003", + "course_id": "information_security_mathematics", + "query": "复习05信安A时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-001:p3:c01", + "exists": true, + "source_id": "information-security-mathematics-001", + "source_title": "05信安A", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "68cd8a72b9dc080c50277da1f93850eac8b30334cea07e9635465b09e80c704d", + "text_excerpt": "![page-003.jpg](assets/information-security-mathematics-001/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:004", + "course_id": "information_security_mathematics", + "query": "05信安A里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-001:p4:c01", + "exists": true, + "source_id": "information-security-mathematics-001", + "source_title": "05信安A", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "23ccff4b81fa023d567955fc4a6adf63b2baad930fb942babf942c6c3e0cd317", + "text_excerpt": "![page-004.jpg](assets/information-security-mathematics-001/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:005", + "course_id": "information_security_mathematics", + "query": "学习05信安A时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-001:p5:c01", + "exists": true, + "source_id": "information-security-mathematics-001", + "source_title": "05信安A", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "854d938783dc4748d05daccbaf55dc4e4aee7177b143b652cc2c06bab5e01234", + "text_excerpt": "![page-005.jpg](assets/information-security-mathematics-001/page-005.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:006", + "course_id": "information_security_mathematics", + "query": "考试会怎么考05信安A?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-001:p6:c01", + "exists": true, + "source_id": "information-security-mathematics-001", + "source_title": "05信安A", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "aae66a66bf61a1f9d00aa96d4bd2b927a0c9a283e4317a5ee97eb15e824990e6", + "text_excerpt": "![page-006.jpg](assets/information-security-mathematics-001/page-006.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:007", + "course_id": "information_security_mathematics", + "query": "06信安A主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-002:p1:c01", + "exists": true, + "source_id": "information-security-mathematics-002", + "source_title": "06信安A", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "ec5682edfa7b46d4c1e4e44273147b46016a528f9621cc5999478841fba204f1", + "text_excerpt": "![page-001.jpg](assets/information-security-mathematics-002/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:008", + "course_id": "information_security_mathematics", + "query": "我想先复习06信安A,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-002:p2:c01", + "exists": true, + "source_id": "information-security-mathematics-002", + "source_title": "06信安A", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "69a2948453210f81904f5b0f47ae9eb3b0d28cf42b678af6b9657ac7489683d1", + "text_excerpt": "![page-002.jpg](assets/information-security-mathematics-002/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:009", + "course_id": "information_security_mathematics", + "query": "复习06信安A时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-002:p3:c01", + "exists": true, + "source_id": "information-security-mathematics-002", + "source_title": "06信安A", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "9ced02540275e9db69480ccef3459bddd064c76f6212853941c4d49362454c53", + "text_excerpt": "![page-003.jpg](assets/information-security-mathematics-002/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:010", + "course_id": "information_security_mathematics", + "query": "06信安A里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-002:p4:c01", + "exists": true, + "source_id": "information-security-mathematics-002", + "source_title": "06信安A", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "7f5c362695723e7c4cefa9bdb81fdaf59e63d574739841f043bee1c58cea36d6", + "text_excerpt": "![page-004.jpg](assets/information-security-mathematics-002/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:011", + "course_id": "information_security_mathematics", + "query": "学习06信安A时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-002:p5:c01", + "exists": true, + "source_id": "information-security-mathematics-002", + "source_title": "06信安A", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "777e673e329a5f9d4e06ca032872a139f8699f727be3e2a23e89842fddc7d447", + "text_excerpt": "![page-005.jpg](assets/information-security-mathematics-002/page-005.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:012", + "course_id": "information_security_mathematics", + "query": "考试会怎么考06信安A?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-002:p6:c01", + "exists": true, + "source_id": "information-security-mathematics-002", + "source_title": "06信安A", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "de573ed97bd203ee9dc61a13003dde92b3bb327ca5406616c447d222da47f40b", + "text_excerpt": "![page-006.jpg](assets/information-security-mathematics-002/page-006.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:013", + "course_id": "information_security_mathematics", + "query": "06信安A主要讲什么?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-002:p7:c01", + "exists": true, + "source_id": "information-security-mathematics-002", + "source_title": "06信安A", + "locator_type": "page", + "locator_start": 7, + "text_sha256": "2eca28882aa882570c3dea36b7b66efb9d29f0ce367584943fc70694dfa0744e", + "text_excerpt": "![page-007.jpg](assets/information-security-mathematics-002/page-007.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:014", + "course_id": "information_security_mathematics", + "query": "我想先复习06信安B,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-003:p1:c01", + "exists": true, + "source_id": "information-security-mathematics-003", + "source_title": "06信安B", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "a50583a1068d86c4d65424cca6d9348091457bed4c80cf31cb4bc41afde2762b", + "text_excerpt": "![page-001.jpg](assets/information-security-mathematics-003/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:015", + "course_id": "information_security_mathematics", + "query": "复习06信安B时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-003:p2:c01", + "exists": true, + "source_id": "information-security-mathematics-003", + "source_title": "06信安B", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "bae82400d90193dc1cfd30ced032ff23e0edfc1ddd919854ddeb448094d156e9", + "text_excerpt": "![page-002.jpg](assets/information-security-mathematics-003/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:016", + "course_id": "information_security_mathematics", + "query": "06信安B里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-003:p3:c01", + "exists": true, + "source_id": "information-security-mathematics-003", + "source_title": "06信安B", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "d9e77a3d296850cf9d45d1cab2101cb1fdcb38ad535d73a928af43650f748204", + "text_excerpt": "![page-003.jpg](assets/information-security-mathematics-003/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:017", + "course_id": "information_security_mathematics", + "query": "学习06信安B时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-003:p4:c01", + "exists": true, + "source_id": "information-security-mathematics-003", + "source_title": "06信安B", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "4ecae073ce88076177f04bcc808a537169bc89653be32e2c3f58a95fe97bf67d", + "text_excerpt": "![page-004.jpg](assets/information-security-mathematics-003/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:018", + "course_id": "information_security_mathematics", + "query": "考试会怎么考06信安B?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-003:p5:c01", + "exists": true, + "source_id": "information-security-mathematics-003", + "source_title": "06信安B", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "d8baacc93fca9d05396f164864415beef7cbae5df328ae0ddd8d761eefbfb68b", + "text_excerpt": "![page-005.jpg](assets/information-security-mathematics-003/page-005.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:019", + "course_id": "information_security_mathematics", + "query": "06信安B主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-003:p6:c01", + "exists": true, + "source_id": "information-security-mathematics-003", + "source_title": "06信安B", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "def30717c3920c9831f106ac20af6da415dc6d0a00e1866f52b82f2b980d8c03", + "text_excerpt": "![page-006.jpg](assets/information-security-mathematics-003/page-006.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:020", + "course_id": "information_security_mathematics", + "query": "我想先复习07信安A,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-004:p1:c01", + "exists": true, + "source_id": "information-security-mathematics-004", + "source_title": "07信安A", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "ea1d7536b4592e90241e6e3d065b2f161917416c0c9a4e46bf998e7ff2b197fc", + "text_excerpt": "![page-001.jpg](assets/information-security-mathematics-004/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:021", + "course_id": "information_security_mathematics", + "query": "复习07信安A时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-004:p2:c01", + "exists": true, + "source_id": "information-security-mathematics-004", + "source_title": "07信安A", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "d2307751b86e3f53f99a147c66dbacb9b9ae0d97e2923c28966bdfbedaa5df49", + "text_excerpt": "![page-002.jpg](assets/information-security-mathematics-004/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:022", + "course_id": "information_security_mathematics", + "query": "07信安A里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-004:p3:c01", + "exists": true, + "source_id": "information-security-mathematics-004", + "source_title": "07信安A", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "988e9da8bf5d6686350dfe7a8bac4ec83e65ffc7b5501360a1f691cd1f00b8c1", + "text_excerpt": "![page-003.jpg](assets/information-security-mathematics-004/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:023", + "course_id": "information_security_mathematics", + "query": "学习07信安A时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-004:p4:c01", + "exists": true, + "source_id": "information-security-mathematics-004", + "source_title": "07信安A", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "77fe6600274de60507b1ca7646fc8aa4d0d1ec28764976d0a48588a01bcce09f", + "text_excerpt": "![page-004.jpg](assets/information-security-mathematics-004/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:024", + "course_id": "information_security_mathematics", + "query": "考试会怎么考07信安A?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-004:p5:c01", + "exists": true, + "source_id": "information-security-mathematics-004", + "source_title": "07信安A", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "54110f54753a0faca4e202185a19638632ae8af2c838177e2059827fc01e5cc3", + "text_excerpt": "![page-005.jpg](assets/information-security-mathematics-004/page-005.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:025", + "course_id": "information_security_mathematics", + "query": "07信安A主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-004:p6:c01", + "exists": true, + "source_id": "information-security-mathematics-004", + "source_title": "07信安A", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "1d78a7032e92749c3d03284303c186d3102f627a91c82f06cc903c5614d94640", + "text_excerpt": "![page-006.jpg](assets/information-security-mathematics-004/page-006.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:026", + "course_id": "information_security_mathematics", + "query": "我想先复习07信安B,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-005:p1:c01", + "exists": true, + "source_id": "information-security-mathematics-005", + "source_title": "07信安B", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "0fc72ad38cea1c58feaec58bc54ad2b95811982258813c3e918698fe4227dd10", + "text_excerpt": "![page-001.jpg](assets/information-security-mathematics-005/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:027", + "course_id": "information_security_mathematics", + "query": "复习07信安B时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-005:p2:c01", + "exists": true, + "source_id": "information-security-mathematics-005", + "source_title": "07信安B", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "c40108fd6011da1a43eb51edef0c1942d0a536ca8af1909382da5a51c39d631c", + "text_excerpt": "![page-002.jpg](assets/information-security-mathematics-005/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:028", + "course_id": "information_security_mathematics", + "query": "07信安B里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-005:p3:c01", + "exists": true, + "source_id": "information-security-mathematics-005", + "source_title": "07信安B", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "99a851d38398d7c65528977f9431aef0d42b18ecd7468e453c0837f7df284ef0", + "text_excerpt": "![page-003.jpg](assets/information-security-mathematics-005/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:029", + "course_id": "information_security_mathematics", + "query": "学习07信安B时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-005:p4:c01", + "exists": true, + "source_id": "information-security-mathematics-005", + "source_title": "07信安B", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "906c2807c41ac90b7833f5dd1158d48677d7e1f74799538d571f96d9db0953d1", + "text_excerpt": "![page-004.jpg](assets/information-security-mathematics-005/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "information_security_mathematics:030", + "course_id": "information_security_mathematics", + "query": "考试会怎么考07信安B?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "information-security-mathematics-005:p5:c01", + "exists": true, + "source_id": "information-security-mathematics-005", + "source_title": "07信安B", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "6c36653dbd442a13b6091d58fd991bd235d3bd72ea1d451be020c0b7ade91fa1", + "text_excerpt": "![page-005.jpg](assets/information-security-mathematics-005/page-005.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:001", + "course_id": "intelligent_algorithms", + "query": "CVRP主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-001:h-cvrp:c01", + "exists": true, + "source_id": "intelligent-algorithms-001", + "source_title": "CVRP", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "29e775cae7baaf44126b894798d6c239dd87aab51b4c7652e43552e19579c69f", + "text_excerpt": "```cpp\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nusing namespace std;\n\nstruct Node {\n int x, y;\n};\n\nvector 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-002:p1:c01", + "exists": true, + "source_id": "intelligent-algorithms-002", + "source_title": "CVRP", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "ceb33f074ea10298a26935acb4214dc87f3f0e7658801c2590611f30e05fe7f4", + "text_excerpt": "智能算法及应用\n\n带容量约束的车辆路径问题求解", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:003", + "course_id": "intelligent_algorithms", + "query": "复习CVRP时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-002:p2:c01", + "exists": true, + "source_id": "intelligent-algorithms-002", + "source_title": "CVRP", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "dd53eb3062f6ca83703e2e595818f6f73217e81533b31468c6eefc73913b05f8", + "text_excerpt": "带容量约束的车辆路径问题(CVRP)\n\nCVRP(Capacitated Vehicle Routing Problem)是经典车辆路\n径问题,要求在以下限制条件下为多个客户点设计最优路线:\n\n• 容量约束:每辆车有最大载重量(或体积),客户需求总\n和不能超过车辆容量。\n\n• 单一服务:每个客户仅由一辆车访问一次。\n\n• 中心仓库:所有车辆从同一仓库出发并返回。\n\n• 核心目标:通常为最小化总行驶距离或使用的车辆数,以\n降低运输成本。", + "flags": [] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:004", + "course_id": "intelligent_algorithms", + "query": "CVRP里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-002:p3:c01", + "exists": true, + "source_id": "intelligent-algorithms-002", + "source_title": "CVRP", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "584c105043ab322de26099d1fc9cd1ca6bf5bc815e0dd9090624464d411c74c6", + "text_excerpt": "带容量约束的车辆路径问题(CVRP)\n\n参数与符号说明:\n\n![image](assets/intelligent-algorithms-002/image-001.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:005", + "course_id": "intelligent_algorithms", + "query": "学习CVRP时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-002:p4:c01", + "exists": true, + "source_id": "intelligent-algorithms-002", + "source_title": "CVRP", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "9577c757522cee070ab038b711af78ecdb362f8aa65fe52e05752ea9f4948681", + "text_excerpt": "带容量约束的车辆路径问题(CVRP)\n\n决策变量:\n\n目标函数:最小化所有车辆的总行驶距离。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:006", + "course_id": "intelligent_algorithms", + "query": "考试会怎么考CVRP?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-002:p5:c01", + "exists": true, + "source_id": "intelligent-algorithms-002", + "source_title": "CVRP", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "ca361369dc688ac6cdf65dedebf2e88392e2783a99c3e1448fab024bca307c70", + "text_excerpt": "带容量约束的车辆路径问题(CVRP)\n\n约束条件:\n\n![image](assets/intelligent-algorithms-002/image-002.png)\n\n![image](assets/intelligent-algorithms-002/image-003.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:007", + "course_id": "intelligent_algorithms", + "query": "CVRP主要讲什么?,见第6页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-002:p6:c01", + "exists": true, + "source_id": "intelligent-algorithms-002", + "source_title": "CVRP", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "0cbe573c9963efa6d224e946ebfc8580b82e0d60fdd8467bf8284756a57d03e6", + "text_excerpt": "CVRPLIB\n\nCVRPLIB - All Instances\n测试Set A (Augerat, 1995),共27个实例,问题规模32~80\n\n![image](assets/intelligent-algorithms-002/image-004.png)\n\n![image](assets/intelligent-algorithms-002/image-005.png)", + "flags": [] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:008", + "course_id": "intelligent_algorithms", + "query": "我想先复习CVRP,应该从哪里开始?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-002:p7:c01", + "exists": true, + "source_id": "intelligent-algorithms-002", + "source_title": "CVRP", + "locator_type": "page", + "locator_start": 7, + "text_sha256": "042775c2be9d858a48c828837f4ddac948befd890fc83eb9515df9f3390c0e3e", + "text_excerpt": "测试规则\n\n•\n算法不限,算法参数设置不限,也可自行设计新算法或者\n改进算法\n•\n对所有问题应使用一套算法/参数,不可针对不同的问题\n进行手动微调(自适应调整是可以的)\n\n•\n需自行编写算法代码,不可调相关算法库,编程语言用\nC++\n\n•请务必保证测试过程满足上述要求\n•否则将只给及格分", + "flags": [] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:009", + "course_id": "intelligent_algorithms", + "query": "复习CVRP时哪些内容最重要?,见第8页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-002:p8:c01", + "exists": true, + "source_id": "intelligent-algorithms-002", + "source_title": "CVRP", + "locator_type": "page", + "locator_start": 8, + "text_sha256": "6917fc6de151438a007762965f61e097b3dfbfae4d606e3db9a19b6fccd550d9", + "text_excerpt": "测试规则\n\n•\n算法的计算限制:\n最多50000次目标值的评估(MaxFEs=50000)\n\n任何完整性解的成本计算均记为1次评估,包含:\n\n✓初始种群生成\n✓交叉/变异后的子代\n✓局部搜索过程生成的每个候选解\n……\n\n•\n示例1:采用纯遗传算法求解,种群规模50,迭代次数1000,总\n评估次数为50*1000=50000,符合要求。\n•\n示例2:采用遗传算法+局部搜索算法求解,种群规模50,迭代次\n数1000,不符合要求。局部搜索时的成本计算需要纳入,如局部\n搜索消耗了20", + "flags": [] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:010", + "course_id": "intelligent_algorithms", + "query": "CVRP里的方法或结论怎么理解?,见第9页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-002:p9:c01", + "exists": true, + "source_id": "intelligent-algorithms-002", + "source_title": "CVRP", + "locator_type": "page", + "locator_start": 9, + "text_sha256": "cabddb056df277fb876b37bf3e6ef3dd587ce4a62edace7b5b8ecaaa3782915c", + "text_excerpt": "测试规则\n\n•\n求解完成后,对每个实例报道相对百分比误差\n(Optimality Gap):\n\n•\n对每个实例运行25次得到统计值,按要求填入结果模版。\n\n•请务必保证测试过程满足上述要求\n•否则将只给及格分", + "flags": [] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:011", + "course_id": "intelligent_algorithms", + "query": "学习CVRP时哪些概念容易混淆?,见第10页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-002:p10:c01", + "exists": true, + "source_id": "intelligent-algorithms-002", + "source_title": "CVRP", + "locator_type": "page", + "locator_start": 10, + "text_sha256": "8c2b3fc83d177acca6847d3364a3ca91fb26867c3e767b45481eddf1f1827cd4", + "text_excerpt": "测试规则\n\n•\n排名规则:\n\na) 对每个实例的计算结果排一次序,首先对比误差的平均值,\n\n平均值一样时才对比最优值;\n\nb) 求出各小组算法在各个实例上的平均排名,排名最小者为\n\n冠军,其次为亚军,……", + "flags": [] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:012", + "course_id": "intelligent_algorithms", + "query": "考试会怎么考CVRP?,见第11页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-002:p11:c01", + "exists": true, + "source_id": "intelligent-algorithms-002", + "source_title": "CVRP", + "locator_type": "page", + "locator_start": 11, + "text_sha256": "91e4999b19692deb2bf8a9f6573feb0fc380b254f88d4cb812c0f9468aad029c", + "text_excerpt": "提交规则\n\n•\n5-6人一组,提交.zip压缩包,包含\n\na) 1-3页文档(PDF格式、不要超页),包含两部分内容:\n\n- 小组成员介绍,包括姓名、学号、分工和小组自评分\n(要求组内平均分为90,且最高分-最低分不小于8分)\n- 算法介绍,应包括算法流程、伪代码、参数设置等内容\n\nb) 按模版填写的实验结果数据(Excel格式)\n\nc) 相关代码文件夹", + "flags": [] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:013", + "course_id": "intelligent_algorithms", + "query": "CVRP主要讲什么?,见第12页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-002:p12:c01", + "exists": true, + "source_id": "intelligent-algorithms-002", + "source_title": "CVRP", + "locator_type": "page", + "locator_start": 12, + "text_sha256": "39537c0573f9db42074c8b67767ec26874d3e41669988b0bd629ceaf6c16d28b", + "text_excerpt": "提交规则\n\n•\n提交地址:\nhttps://send2me.cn/aloCSDXN/R4yUxAwcEAPlKQ\n\n•\n截止时间:2025-04-13 20:00:00(No Extension!!)", + "flags": [] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:014", + "course_id": "intelligent_algorithms", + "query": "我想先复习竞赛小组汇报文档,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-003:h-智能算法竞赛小组汇报文档:c01", + "exists": true, + "source_id": "intelligent-algorithms-003", + "source_title": "智能算法竞赛小组汇报文档", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "91cc72070f869648751e4de00df1e18b64feb661c0c988d25436f0357ebd8829", + "text_excerpt": "智能算法竞赛小组汇报文档\n\n一、小组成员信息\n\n| 姓名 | 学号 | 分工 | 小组自评分 |\n|---|---|---|---|\n| 于博宇 | 202330453151 | 负责组员阶段分工,初始资源的收集及文档的编辑工作 | 88 |\n| 邹明序 | 202330452511 | 负责主要算法的编写调试工作 | 98 |\n| 莫文轩 | 202330451361 | 负责初始代码的收集及文档的初步编写工作 | 88 |\n| 韦文坚 | 202392453164 | 负", + "flags": [] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:015", + "course_id": "intelligent_algorithms", + "query": "复习竞赛小组汇报文档时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-003:h-智能算法竞赛小组汇报文档:c02", + "exists": true, + "source_id": "intelligent-algorithms-003", + "source_title": "智能算法竞赛小组汇报文档", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "b74072933f565d5a0792048148f86ade4c7f40e7a1c0925c793c565847e24213", + "text_excerpt": "***// 多周期运行框架***\n\n**for (int run = 0; run < 25; ++run) {**\n\n**initialize_pheromone_matrix();** ***// 信息素矩阵初始***\n\n***// 迭代优化过程***\n\n**for (int iter = 0; iter < 300; ++iter) {**\n\n**vector ant_solutions;**\n\n***// 蚂蚁群体并行路径构建***\n\n**", + "flags": [] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:016", + "course_id": "intelligent_algorithms", + "query": "竞赛小组汇报文档里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-004:p1:c01", + "exists": true, + "source_id": "intelligent-algorithms-004", + "source_title": "智能算法竞赛小组汇报文档", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "f5acc8f11ee6cf94e35445cd0eca475165c89c67b532d3f9069d9a2279116a20", + "text_excerpt": "智能算法竞赛小组汇报文档\n\n一、小组成员信息\n\n姓名\n学号\n分工\n小组自评分\n\n于博宇\n202330453151\n负责组员阶段分工,初始资源的收\n\n88\n\n集及文档的编辑工作\n\n邹明序\n202330452511\n负责主要算法的编写调试工作\n98\n\n莫文轩\n202330451361\n负责初始代码的收集及文档的初\n\n88\n\n步编写工作\n\n韦文坚\n202392453164\n负责了主要算法的后续优化工作\n88\n\n吴宇瀚\n202330451861\n负责最终代码的数据集运行工作\n88\n二", + "flags": [] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:017", + "course_id": "intelligent_algorithms", + "query": "学习竞赛小组汇报文档时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-004:p2:c01", + "exists": true, + "source_id": "intelligent-algorithms-004", + "source_title": "智能算法竞赛小组汇报文档", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "eeb666bb846670f4f0b0120475a567e1c9cd61b06d94d9c9efd5cf2f236628e1", + "text_excerpt": "其中挥发系数ρ∈(0,1)控制信息素的衰减速度,防止陈旧信息干扰搜索过程。随后对本\n\n次迭代最优路径进行信息素增强:\n\n其中Q 为信息素强度常数,Lbest​\n为当前最优路径长度。这种设计使得优质路径能够\n\n获得更多信息素沉积,引导后续蚂蚁向优化方向搜索,同时避免陷入局部最优。\n\n伪代码\n\nvoid main_aco_process() {\n\n// 多周期运行框架\n\nfor (int run = 0; run < 25; ++run) {\n\ninitialize_pherom", + "flags": [] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:018", + "course_id": "intelligent_algorithms", + "query": "考试会怎么考竞赛小组汇报文档?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-004:p3:c01", + "exists": true, + "source_id": "intelligent-algorithms-004", + "source_title": "智能算法竞赛小组汇报文档", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "c5c38c3f6168947e2e7bd1fc3713e44051a9fd35a35fced38f8f6e19cae1c086", + "text_excerpt": "1.\n​​信息素因子​\n​(α=1.0):控制历史信息的影响力,较低的值可增强算法\n探索新路径的能力\n2.\n​​启发式因子​\n​(β=5.0):强调距离信息的作用,引导蚂蚁优先选择邻近节\n点\n3.\n​​挥发系数​\n​(ρ=0.3):平衡信息素更新速度,防止算法早熟收敛\n4.\n​​信息素强度​\n​(Q=50.0):与路径长度反比的增强系数,确保长路径不会\n获得过量信息素\n5.\n​​蚂蚁数量​\n​(50 只):通过群体并行搜索扩大解空间覆盖率\n6.\n​​迭代次数​\n​(300 次", + "flags": [] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:019", + "course_id": "intelligent_algorithms", + "query": "0. 绪论pr主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-005:p1:c01", + "exists": true, + "source_id": "intelligent-algorithms-005", + "source_title": "0. 绪论pr", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "efafed59fac8272f57414387720b1be1475db094b87a8e6c263fc56df9830547", + "text_excerpt": "![page-001.jpg](assets/intelligent-algorithms-005/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:020", + "course_id": "intelligent_algorithms", + "query": "我想先复习0. 绪论pr,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-005:p2:c01", + "exists": true, + "source_id": "intelligent-algorithms-005", + "source_title": "0. 绪论pr", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "3e5e6aa2b4b0264fdee3fe932cabd63d517691462236613703b2a7d10a358221", + "text_excerpt": "![page-002.jpg](assets/intelligent-algorithms-005/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:021", + "course_id": "intelligent_algorithms", + "query": "复习0. 绪论pr时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-005:p3:c01", + "exists": true, + "source_id": "intelligent-algorithms-005", + "source_title": "0. 绪论pr", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "2385c034d2011ae15e564e8ff63e4e9a1571ca803b29653b0389b90f27036811", + "text_excerpt": "![page-003.jpg](assets/intelligent-algorithms-005/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:022", + "course_id": "intelligent_algorithms", + "query": "0. 绪论pr里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-005:p4:c01", + "exists": true, + "source_id": "intelligent-algorithms-005", + "source_title": "0. 绪论pr", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "51def0fcfb435fe629ed9b961f5f3cd44712b3845af31100c62b172d8d9c60b1", + "text_excerpt": "![page-004.jpg](assets/intelligent-algorithms-005/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:023", + "course_id": "intelligent_algorithms", + "query": "学习0. 绪论pr时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-005:p5:c01", + "exists": true, + "source_id": "intelligent-algorithms-005", + "source_title": "0. 绪论pr", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "baa6462afb38546ad1a99f9b4a62986694212838fb7db42ca6095a67bc39689b", + "text_excerpt": "![page-005.jpg](assets/intelligent-algorithms-005/page-005.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:024", + "course_id": "intelligent_algorithms", + "query": "考试会怎么考0. 绪论pr?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-005:p6:c01", + "exists": true, + "source_id": "intelligent-algorithms-005", + "source_title": "0. 绪论pr", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "f117ecd9c2685b92ab9306a154e3ced515f625235cd9cb33c42c761380ab3336", + "text_excerpt": "![page-006.jpg](assets/intelligent-algorithms-005/page-006.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:025", + "course_id": "intelligent_algorithms", + "query": "0. 绪论pr主要讲什么?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-005:p7:c01", + "exists": true, + "source_id": "intelligent-algorithms-005", + "source_title": "0. 绪论pr", + "locator_type": "page", + "locator_start": 7, + "text_sha256": "3ac91f3d4294af8f6e70570542a70310f939bb66f97fc655e2d84427611f02cd", + "text_excerpt": "![page-007.jpg](assets/intelligent-algorithms-005/page-007.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:026", + "course_id": "intelligent_algorithms", + "query": "我想先复习0. 绪论pr,应该从哪里开始?,见第8页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-005:p8:c01", + "exists": true, + "source_id": "intelligent-algorithms-005", + "source_title": "0. 绪论pr", + "locator_type": "page", + "locator_start": 8, + "text_sha256": "7a9056416151cb21acdc424f7cebd43467a0b5d14fbcb55e1aecf4b1661ae1ab", + "text_excerpt": "![page-008.jpg](assets/intelligent-algorithms-005/page-008.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:027", + "course_id": "intelligent_algorithms", + "query": "复习0. 绪论pr时哪些内容最重要?,见第9页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-005:p9:c01", + "exists": true, + "source_id": "intelligent-algorithms-005", + "source_title": "0. 绪论pr", + "locator_type": "page", + "locator_start": 9, + "text_sha256": "5d055e6506bbd5a73918db3a99d3cf750e68ca80a88a5abae1db057d9d14663e", + "text_excerpt": "![page-009.jpg](assets/intelligent-algorithms-005/page-009.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:028", + "course_id": "intelligent_algorithms", + "query": "0. 绪论pr里的方法或结论怎么理解?,见第10页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-005:p10:c01", + "exists": true, + "source_id": "intelligent-algorithms-005", + "source_title": "0. 绪论pr", + "locator_type": "page", + "locator_start": 10, + "text_sha256": "f7bb6b3067a0e400af0ba36abf3e94493983f9e8909636e81f812ebcf7362fe8", + "text_excerpt": "![page-010.jpg](assets/intelligent-algorithms-005/page-010.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:029", + "course_id": "intelligent_algorithms", + "query": "学习0. 绪论pr时哪些概念容易混淆?,见第11页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-005:p11:c01", + "exists": true, + "source_id": "intelligent-algorithms-005", + "source_title": "0. 绪论pr", + "locator_type": "page", + "locator_start": 11, + "text_sha256": "f28ca992e00e259f484e1657764089e0522f9f6977e7ca8863e99e41b08c61de", + "text_excerpt": "![page-011.jpg](assets/intelligent-algorithms-005/page-011.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "intelligent_algorithms:030", + "course_id": "intelligent_algorithms", + "query": "考试会怎么考0. 绪论pr?,见第12页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "intelligent-algorithms-005:p12:c01", + "exists": true, + "source_id": "intelligent-algorithms-005", + "source_title": "0. 绪论pr", + "locator_type": "page", + "locator_start": 12, + "text_sha256": "b60cc94995d905db42f113e16ccbe230e5277519e34d3841eee430117287804d", + "text_excerpt": "![page-012.jpg](assets/intelligent-algorithms-005/page-012.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:001", + "course_id": "linear_algebra", + "query": "2016-2017年度期末卷A主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-006:p1:c01", + "exists": true, + "source_id": "linear-algebra-006", + "source_title": "2016-2017年度线性代数期末卷A", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "1cc4085a821dc0eed4856d727ebe17a6cd4ef5fa911377928b06e765e7e7c3e7", + "text_excerpt": "![page-001.jpg](assets/linear-algebra-006/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:002", + "course_id": "linear_algebra", + "query": "我想先复习2016-2017年度期末卷A,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-006:p2:c01", + "exists": true, + "source_id": "linear-algebra-006", + "source_title": "2016-2017年度线性代数期末卷A", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "5c64b5335f619b84f17537b8896339e4458acdb73b0cf9d6f902b3816054845e", + "text_excerpt": "![page-002.jpg](assets/linear-algebra-006/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:003", + "course_id": "linear_algebra", + "query": "复习2016-2017年度期末卷A答案时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-007:p1:c01", + "exists": true, + "source_id": "linear-algebra-007", + "source_title": "2016-2017年度线性代数期末卷A答案", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "fc3c881c8491828729a261ba178ec62019cf9689c60cf2cba8b3d0d763bfaf46", + "text_excerpt": "![page-001.jpg](assets/linear-algebra-007/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:004", + "course_id": "linear_algebra", + "query": "2016-2017年度期末卷A答案里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-007:p2:c01", + "exists": true, + "source_id": "linear-algebra-007", + "source_title": "2016-2017年度线性代数期末卷A答案", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "4b489f91da76a3aafc46dcac6a36f99072211f80f68fd5bfa6796e8cd583d277", + "text_excerpt": "![page-002.jpg](assets/linear-algebra-007/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:005", + "course_id": "linear_algebra", + "query": "学习2016-2017年度期末卷A答案时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-007:p3:c01", + "exists": true, + "source_id": "linear-algebra-007", + "source_title": "2016-2017年度线性代数期末卷A答案", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "235b724729e051ab6af3ee08de121bb74d1e123ac798f109a9fde3233c2e7b02", + "text_excerpt": "![page-003.jpg](assets/linear-algebra-007/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:006", + "course_id": "linear_algebra", + "query": "考试会怎么考2016-2017年度期末卷A答案?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-007:p4:c01", + "exists": true, + "source_id": "linear-algebra-007", + "source_title": "2016-2017年度线性代数期末卷A答案", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "2f64f087decb15651bba16a83b1eb515ca3855caa90c60323a4567da21fd1f31", + "text_excerpt": "![page-004.jpg](assets/linear-algebra-007/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:007", + "course_id": "linear_algebra", + "query": "2016-2017年度期末卷A答案主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-007:p5:c01", + "exists": true, + "source_id": "linear-algebra-007", + "source_title": "2016-2017年度线性代数期末卷A答案", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "11f2c52ede4772a334ec3f8805916c71661ce3608da0bb283292480a510a248c", + "text_excerpt": "![page-005.jpg](assets/linear-algebra-007/page-005.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:008", + "course_id": "linear_algebra", + "query": "我想先复习2017-2018年度期末卷A,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-008:p1:c01", + "exists": true, + "source_id": "linear-algebra-008", + "source_title": "2017-2018年度线性代数期末卷A", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "6fd75ad58e6f5e1f8b39a1d2690a1a364b0093f4503b361447e1ee2ce2e85f2f", + "text_excerpt": "![page-001.jpg](assets/linear-algebra-008/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:009", + "course_id": "linear_algebra", + "query": "复习2017-2018年度期末卷A时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-008:p2:c01", + "exists": true, + "source_id": "linear-algebra-008", + "source_title": "2017-2018年度线性代数期末卷A", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "e228eee45daa1115421cdb3da499434821f873e2c3c6e041f0ae197d87549f7d", + "text_excerpt": "![page-002.jpg](assets/linear-algebra-008/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:010", + "course_id": "linear_algebra", + "query": "2017-2018年度期末卷A里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-008:p3:c01", + "exists": true, + "source_id": "linear-algebra-008", + "source_title": "2017-2018年度线性代数期末卷A", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "13748139d915535d42a42e59a49b16121911cb49e91a967910b9b686c9b73371", + "text_excerpt": "![page-003.jpg](assets/linear-algebra-008/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:011", + "course_id": "linear_algebra", + "query": "学习2017-2018年度期末卷A答案时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-009:p1:c01", + "exists": true, + "source_id": "linear-algebra-009", + "source_title": "2017-2018年度线性代数期末卷A答案", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "4c519f2c9dd25cebfc5c210ca74114b426104cf690bbef4e5670ca3a5e867e0c", + "text_excerpt": "![page-001.jpg](assets/linear-algebra-009/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:012", + "course_id": "linear_algebra", + "query": "考试会怎么考2017-2018年度期末卷A答案?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-009:p2:c01", + "exists": true, + "source_id": "linear-algebra-009", + "source_title": "2017-2018年度线性代数期末卷A答案", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "f3b1a21fd1e5fbbbd7e5afebd34ecc01c3ac551f136f329d0a76b6fcda32cee7", + "text_excerpt": "![page-002.jpg](assets/linear-algebra-009/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:013", + "course_id": "linear_algebra", + "query": "2017-2018年度期末卷A答案主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-009:p3:c01", + "exists": true, + "source_id": "linear-algebra-009", + "source_title": "2017-2018年度线性代数期末卷A答案", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "080fdda7923513b508acc97ea7b6f6b462c822e0e4abbb2308fd312dd968879c", + "text_excerpt": "![page-003.jpg](assets/linear-algebra-009/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:014", + "course_id": "linear_algebra", + "query": "我想先复习2017-2018年度期末卷A答案,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-009:p4:c01", + "exists": true, + "source_id": "linear-algebra-009", + "source_title": "2017-2018年度线性代数期末卷A答案", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "fdc533981558db859c9d5b8a8db2e786605ce2c412adf65622b20b7dbb2946d6", + "text_excerpt": "![page-004.jpg](assets/linear-algebra-009/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:015", + "course_id": "linear_algebra", + "query": "复习2018-2019年度期末卷B时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-010:p1:c01", + "exists": true, + "source_id": "linear-algebra-010", + "source_title": "2018-2019年度线性代数期末卷B", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "14105ad7fead9b998a1360636fb14d4740ef3d366c45768566db4759c3055db4", + "text_excerpt": "![page-001.jpg](assets/linear-algebra-010/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:016", + "course_id": "linear_algebra", + "query": "2018-2019年度期末卷B里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-010:p2:c01", + "exists": true, + "source_id": "linear-algebra-010", + "source_title": "2018-2019年度线性代数期末卷B", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "effddb7c3987c9c1c4819a7a85fe372cc9550bce348d68cfb3d5c8371db3269c", + "text_excerpt": "![page-002.jpg](assets/linear-algebra-010/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:017", + "course_id": "linear_algebra", + "query": "学习2018-2019年度期末卷B答案时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-011:p1:c01", + "exists": true, + "source_id": "linear-algebra-011", + "source_title": "2018-2019年度线性代数期末卷B答案", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "9bc4060e49b0109b2cc8198515ae494001d27120fb0f063d7bb7d9bdbd02a869", + "text_excerpt": "![page-001.jpg](assets/linear-algebra-011/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:018", + "course_id": "linear_algebra", + "query": "考试会怎么考2018-2019年度期末卷B答案?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-011:p2:c01", + "exists": true, + "source_id": "linear-algebra-011", + "source_title": "2018-2019年度线性代数期末卷B答案", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "a8f7aaf421e0255202ed539629f069abac2cf042ac1f7a261600a3452f8e98b0", + "text_excerpt": "![page-002.jpg](assets/linear-algebra-011/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:019", + "course_id": "linear_algebra", + "query": "2018-2019年度期末卷B答案主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-011:p3:c01", + "exists": true, + "source_id": "linear-algebra-011", + "source_title": "2018-2019年度线性代数期末卷B答案", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "528812a8e7c552b24d37b04325f018d5b8d1f96cbe61c3519da00114d2b27200", + "text_excerpt": "![page-003.jpg](assets/linear-algebra-011/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:020", + "course_id": "linear_algebra", + "query": "我想先复习2019-2020年度期末卷A,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-012:p1:c01", + "exists": true, + "source_id": "linear-algebra-012", + "source_title": "2019-2020年度线性代数期末卷A", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "43b7f2c09d1adb471ec791be27c66c8033d2f471240ef2c993a9f4e9f2b4bb77", + "text_excerpt": "2019-2020-1 学期《线性代数与解析几何》A", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:021", + "course_id": "linear_algebra", + "query": "行列式代数余子式怎么计算的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-012:p1:q-linear-algebra-012-q1:c01", + "exists": true, + "source_id": "linear-algebra-012", + "source_title": "2019-2020年度线性代数期末卷A", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "3ffe8992e547748770dff5f20ba72029d98843790ceed91861df12dd89ef946f", + "text_excerpt": "一、填空题:共6 题,每题3 分,共18 分。\n\n1\n2\n3\n4\n\nD\n\n\n\n2\n1\n4\n1\n\n1.\n\n,\nij\nD\ni\nA\n的第行第j列元素的代数余子式为\n.\n\n设行列式\n\n3\n1\n2\n2\n\n\n\n1\n3\n1\n4\n\n则3A14+A24+6A34+2A44 =\n\n\n\n\n\n\n\n\n\n\n\n\n1\n0\n0\n\n,则\n1\nA A\n\n6\n2\n0\n12\n6\n3\nA", + "flags": [] + } + ] + }, + { + "legacy_id": "linear_algebra:022", + "course_id": "linear_algebra", + "query": "2019-2020年度期末卷A里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-012:p1:q-linear-algebra-012-q2:c01", + "exists": true, + "source_id": "linear-algebra-012", + "source_title": "2019-2020年度线性代数期末卷A", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "0c874ae7830fb9790597a933ec30953ca2058f038b3268b16579d8940841c11c", + "text_excerpt": "2. 设", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:023", + "course_id": "linear_algebra", + "query": "做这个向量组的秩怎么求时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-012:p1:q-linear-algebra-012-q3:c01", + "exists": true, + "source_id": "linear-algebra-012", + "source_title": "2019-2020年度线性代数期末卷A", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "21d1c4d1b4c74d4ef9e2adc616820abf986ffc27b13a208017353e6f4e6400d6", + "text_excerpt": "3. 已知向量组\n\n\n\n\n\n\n1\n2\n3\n1,2, 1\n1, 1,2\n1,5, 4\n\n\n\n\n\n\n\n\n\n,\n,\n,\n\n向量组的秩是___ ____.", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:024", + "course_id": "linear_algebra", + "query": "这类题一般怎么考?能用在空间直角坐标系中,yoz 面上的曲线 2 4 y z  绕z 坐标轴旋转形成的旋转面的 方程是举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-012:p1:q-linear-algebra-012-q4:c01", + "exists": true, + "source_id": "linear-algebra-012", + "source_title": "2019-2020年度线性代数期末卷A", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "23df9f11dd5efb0888599b01795755f5c4c5a912278ee10dc361b08c5d84df36", + "text_excerpt": "4. 在空间直角坐标系中,yoz 面上的曲线\n2\n4\ny\nz\n\n绕z 坐标轴旋转形成的旋转面的\n\n方程是", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:025", + "course_id": "linear_algebra", + "query": "二次型的秩和正负惯性指数怎么判断怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-012:p1:q-linear-algebra-012-q5:c01", + "exists": true, + "source_id": "linear-algebra-012", + "source_title": "2019-2020年度线性代数期末卷A", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "67687f4560edae1e11196c0bd9d663ff0363083c292ce02e4ca35fa2d4ced6a1", + "text_excerpt": "5. 二次型\n\n\n\n2\n2\n2\n1\n2\n3\n1\n2\n3\n1\n2\n1 3\n,\n,\n2\n4\n\n\n\n\n\n的秩、正惯性指数、负惯性指数\n\nf x x x\nx\nx\nx\nx x\nx x\n\n依次是", + "flags": [] + } + ] + }, + { + "legacy_id": "linear_algebra:026", + "course_id": "linear_algebra", + "query": "做设4 阶方阵A 满足条件 5 0 E A   , 2 T A A E   , 0 A  ,其中E 是4 阶单位矩阵. 则A 的伴随矩阵 A 的一个特征值是 .时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-012:p1:q-linear-algebra-012-q6:c01", + "exists": true, + "source_id": "linear-algebra-012", + "source_title": "2019-2020年度线性代数期末卷A", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "018274eb379e0a8c47cef37d6c61231d505ebd983e29d9f622115d5646e5f6da", + "text_excerpt": "6. 设4 阶方阵A 满足条件 5\n0\nE\nA\n\n\n,\n2\nT\nA A\nE\n\n\n,\n0\nA \n,其中E 是4 阶单位矩阵.\n\n则A 的伴随矩阵\n*\nA 的一个特征值是\n .", + "flags": [] + } + ] + }, + { + "legacy_id": "linear_algebra:027", + "course_id": "linear_algebra", + "query": "复习2019-2020年度期末卷A时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-012:p1:q-linear-algebra-012-q7:c01", + "exists": true, + "source_id": "linear-algebra-012", + "source_title": "2019-2020年度线性代数期末卷A", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "658e51afb62e7f886c65bf20a244ea1711c47d042bef342cff31cf842372e92e", + "text_excerpt": "二、选择题:共6 题,每题3 分,共18 分。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:028", + "course_id": "linear_algebra", + "query": "能把设A,B 都是n 阶对称矩阵,则下面结论中不正确的是( ).的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-012:p1:q-linear-algebra-012-q8:c01", + "exists": true, + "source_id": "linear-algebra-012", + "source_title": "2019-2020年度线性代数期末卷A", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "3adb1ede94f1ed1ade83799efa5759a8e11f3ea48cc7b238e20cc078a7a34c39", + "text_excerpt": "1. 设A,B 都是n 阶对称矩阵,则下面结论中不正确的是( ).\n\nA. A+B 也是对称矩阵 B.\n\n\nm\nm\nA\nB\nm\n\n其中是正整数也是对称矩阵\n\nC.\nT\nT\nBA\nAB\n\n也是对称矩阵\nD. AB 也是对称矩阵\n\n1\n1\n1\n1\n\nD\n\n\n\n\n1\n2\n4\n8", + "flags": [] + } + ] + }, + { + "legacy_id": "linear_algebra:029", + "course_id": "linear_algebra", + "query": "做行列式 的值是( ) 1 5 25 125   1 3 9 27时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-012:p1:q-linear-algebra-012-q9:c01", + "exists": true, + "source_id": "linear-algebra-012", + "source_title": "2019-2020年度线性代数期末卷A", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "0963926e3f3761728972037e6dab3d3324933ad5b575fc4a7249ff7c35fd4774", + "text_excerpt": "2. 行列式\n\n的值是( )\n\n1\n5\n25\n125\n\n\n\n\n1\n3\n9\n27\n\nA. 34992 B. 2688\nC. -34992 D. 81", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "linear_algebra:030", + "course_id": "linear_algebra", + "query": "这类题一般怎么考?能用  则 3. A m n B n m   设是 矩阵, 是 矩阵举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "linear-algebra-012:p2:q-linear-algebra-012-q9:c01", + "exists": true, + "source_id": "linear-algebra-012", + "source_title": "2019-2020年度线性代数期末卷A", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "a8a67df2bb95ee8479f1e64c4ee75fb197c76fc4a8d4f6aca06642cbf6df8b14", + "text_excerpt": "\n\n则\n\n3.\nA\nm n\nB\nn m\n\n\n设是\n矩阵, 是\n矩阵,\n\nA.\n0\nm\nn\nAB\n\n\n当\n时,必有行列式\n B.\n0\nm\nn\nAB\n\n\n当\n时,必有行列式\n\nC.\n0\nm\nn\nAB\n\n\n当\n时,必有行列式\n D.\n0\nm\nn\nAB\n\n\n当\n时,必有行列式", + "flags": [] + } + ] + }, + { + "legacy_id": "machine_learning:001", + "course_id": "machine_learning", + "query": "这张图片主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-001:h-微信图片_20260607143233:c01", + "exists": true, + "source_id": "machine-learning-001", + "source_title": "微信图片_20260607143233", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "38df306908c5ff91f3f8aab1f812de028f092cd5ef741ebe608221fbecf15991", + "text_excerpt": "![page-001.jpg](assets/machine-learning-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:002", + "course_id": "machine_learning", + "query": "我想先复习这张图片,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-002:h-微信图片_20260607143237:c01", + "exists": true, + "source_id": "machine-learning-002", + "source_title": "微信图片_20260607143237", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "074c5347b48b12fb8e4b33568e931469c08d64900ac43c93769dde42c9c71a0f", + "text_excerpt": "![page-001.jpg](assets/machine-learning-002/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:003", + "course_id": "machine_learning", + "query": "复习这张图片时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-003:h-微信图片_20260607143241:c01", + "exists": true, + "source_id": "machine-learning-003", + "source_title": "微信图片_20260607143241", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "025349626961a3ef4f8d619894248a5fa61cb53853236846b3d20eaaebf00fa5", + "text_excerpt": "![page-001.jpg](assets/machine-learning-003/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:004", + "course_id": "machine_learning", + "query": "这张图片里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-004:h-微信图片_20260607143244:c01", + "exists": true, + "source_id": "machine-learning-004", + "source_title": "微信图片_20260607143244", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6e4c7b3b2d28423aa61604bcd0274775683a667c6a0878e2e121f3581353e6ff", + "text_excerpt": "![page-001.jpg](assets/machine-learning-004/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:005", + "course_id": "machine_learning", + "query": "学习这张图片时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-005:h-微信图片_20260607143246:c01", + "exists": true, + "source_id": "machine-learning-005", + "source_title": "微信图片_20260607143246", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "3efd30a0fcd23be86fd895067cc034fe2c8fba8b18c17c7db4123fa9c5ca4cbe", + "text_excerpt": "![page-001.jpg](assets/machine-learning-005/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:006", + "course_id": "machine_learning", + "query": "考试会怎么考这张图片?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-006:h-微信图片_20260607143249:c01", + "exists": true, + "source_id": "machine-learning-006", + "source_title": "微信图片_20260607143249", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "1b9d77781fedd5cc614c63751322a8df5e835f73920facc61b6092e6ae7a3c65", + "text_excerpt": "![page-001.jpg](assets/machine-learning-006/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:007", + "course_id": "machine_learning", + "query": "这张图片主要讲什么?,第7条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-007:h-微信图片_20260607143251:c01", + "exists": true, + "source_id": "machine-learning-007", + "source_title": "微信图片_20260607143251", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "23769541da9bf70da946adcd32381f740bb83df38e843a4e6bd340398adb55a1", + "text_excerpt": "![page-001.jpg](assets/machine-learning-007/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:008", + "course_id": "machine_learning", + "query": "我想先复习这张图片,应该从哪里开始?,第8条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-008:h-微信图片_20260607143254:c01", + "exists": true, + "source_id": "machine-learning-008", + "source_title": "微信图片_20260607143254", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "d705bc354ccc375747351bbe8c2e7a86a93a2659ea4a1ca12f64d023c91a6048", + "text_excerpt": "![page-001.jpg](assets/machine-learning-008/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:009", + "course_id": "machine_learning", + "query": "复习这张图片时哪些内容最重要?,第9条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-009:h-微信图片_20260607143256:c01", + "exists": true, + "source_id": "machine-learning-009", + "source_title": "微信图片_20260607143256", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fd301c7342b300f522eb4c7e7b9b803df6faa92e9e771f26bd6853747624ed5b", + "text_excerpt": "![page-001.jpg](assets/machine-learning-009/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:010", + "course_id": "machine_learning", + "query": "这张图片里的方法或结论怎么理解?,第10条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-010:h-微信图片_20260607143258:c01", + "exists": true, + "source_id": "machine-learning-010", + "source_title": "微信图片_20260607143258", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "f867103866f5ac1fe874a6ef782101a7e3622846b7c90f1bc8fbbb983cdfe174", + "text_excerpt": "![page-001.jpg](assets/machine-learning-010/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:011", + "course_id": "machine_learning", + "query": "学习这张图片时哪些概念容易混淆?,第11条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-011:h-微信图片_20260607143301:c01", + "exists": true, + "source_id": "machine-learning-011", + "source_title": "微信图片_20260607143301", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "e97c18f07f798dac46db7812b9a2402cb4a34e09687b4c43506e7dcb0a82b18a", + "text_excerpt": "![page-001.jpg](assets/machine-learning-011/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:012", + "course_id": "machine_learning", + "query": "考试会怎么考这张图片?,第12条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-012:h-微信图片_20260607143303:c01", + "exists": true, + "source_id": "machine-learning-012", + "source_title": "微信图片_20260607143303", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "b1c5f88cae242d0f64e2bf62cca83642acfe576c765f10e2ff0109d528b558bf", + "text_excerpt": "![page-001.jpg](assets/machine-learning-012/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:013", + "course_id": "machine_learning", + "query": "这张图片主要讲什么?,第13条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-013:h-微信图片_20260607143306:c01", + "exists": true, + "source_id": "machine-learning-013", + "source_title": "微信图片_20260607143306", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "7dee94082a44b5ff17d4761f3e7670c3e0d8e57ca06b8dc12e912f34bdda224c", + "text_excerpt": "![page-001.jpg](assets/machine-learning-013/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:014", + "course_id": "machine_learning", + "query": "我想先复习这张图片 18,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-014:h-微信图片_20260607131054_18:c01", + "exists": true, + "source_id": "machine-learning-014", + "source_title": "微信图片_20260607131054_18", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "04f7cab39d0003e5d58fb9555c6825c580a4bfb12718878ca4aeb5364323e8c7", + "text_excerpt": "![page-001.jpg](assets/machine-learning-014/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:015", + "course_id": "machine_learning", + "query": "复习这张图片 19时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-015:h-微信图片_20260607131057_19:c01", + "exists": true, + "source_id": "machine-learning-015", + "source_title": "微信图片_20260607131057_19", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "29e8a91f9c400e454afbeda2f76bb76d03031b47a677dedea85992a7923a25dc", + "text_excerpt": "![page-001.jpg](assets/machine-learning-015/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:016", + "course_id": "machine_learning", + "query": "这张图片 20里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-016:h-微信图片_20260607131059_20:c01", + "exists": true, + "source_id": "machine-learning-016", + "source_title": "微信图片_20260607131059_20", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "bc9a8d84fe435ce8bd75ea816f04a20fab9f34ef5ad8a4fe4eb9f8707cd6e143", + "text_excerpt": "![page-001.jpg](assets/machine-learning-016/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:017", + "course_id": "machine_learning", + "query": "学习这张图片 21时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-017:h-微信图片_20260607131101_21:c01", + "exists": true, + "source_id": "machine-learning-017", + "source_title": "微信图片_20260607131101_21", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5d6004d1ffae33c229659486d4ad9023f661dc4f235d1b356866536a6efb48ff", + "text_excerpt": "![page-001.jpg](assets/machine-learning-017/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:018", + "course_id": "machine_learning", + "query": "考试会怎么考这张图片?,第18条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-001:h-微信图片_20260607143233:c01", + "exists": true, + "source_id": "machine-learning-001", + "source_title": "微信图片_20260607143233", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "38df306908c5ff91f3f8aab1f812de028f092cd5ef741ebe608221fbecf15991", + "text_excerpt": "![page-001.jpg](assets/machine-learning-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:019", + "course_id": "machine_learning", + "query": "这张图片主要讲什么?,第19条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-002:h-微信图片_20260607143237:c01", + "exists": true, + "source_id": "machine-learning-002", + "source_title": "微信图片_20260607143237", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "074c5347b48b12fb8e4b33568e931469c08d64900ac43c93769dde42c9c71a0f", + "text_excerpt": "![page-001.jpg](assets/machine-learning-002/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:020", + "course_id": "machine_learning", + "query": "我想先复习这张图片,应该从哪里开始?,第20条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-003:h-微信图片_20260607143241:c01", + "exists": true, + "source_id": "machine-learning-003", + "source_title": "微信图片_20260607143241", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "025349626961a3ef4f8d619894248a5fa61cb53853236846b3d20eaaebf00fa5", + "text_excerpt": "![page-001.jpg](assets/machine-learning-003/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:021", + "course_id": "machine_learning", + "query": "复习这张图片时哪些内容最重要?,第21条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-004:h-微信图片_20260607143244:c01", + "exists": true, + "source_id": "machine-learning-004", + "source_title": "微信图片_20260607143244", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6e4c7b3b2d28423aa61604bcd0274775683a667c6a0878e2e121f3581353e6ff", + "text_excerpt": "![page-001.jpg](assets/machine-learning-004/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:022", + "course_id": "machine_learning", + "query": "这张图片里的方法或结论怎么理解?,第22条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-005:h-微信图片_20260607143246:c01", + "exists": true, + "source_id": "machine-learning-005", + "source_title": "微信图片_20260607143246", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "3efd30a0fcd23be86fd895067cc034fe2c8fba8b18c17c7db4123fa9c5ca4cbe", + "text_excerpt": "![page-001.jpg](assets/machine-learning-005/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:023", + "course_id": "machine_learning", + "query": "学习这张图片时哪些概念容易混淆?,第23条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-006:h-微信图片_20260607143249:c01", + "exists": true, + "source_id": "machine-learning-006", + "source_title": "微信图片_20260607143249", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "1b9d77781fedd5cc614c63751322a8df5e835f73920facc61b6092e6ae7a3c65", + "text_excerpt": "![page-001.jpg](assets/machine-learning-006/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:024", + "course_id": "machine_learning", + "query": "考试会怎么考这张图片?,第24条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-007:h-微信图片_20260607143251:c01", + "exists": true, + "source_id": "machine-learning-007", + "source_title": "微信图片_20260607143251", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "23769541da9bf70da946adcd32381f740bb83df38e843a4e6bd340398adb55a1", + "text_excerpt": "![page-001.jpg](assets/machine-learning-007/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:025", + "course_id": "machine_learning", + "query": "这张图片主要讲什么?,第25条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-008:h-微信图片_20260607143254:c01", + "exists": true, + "source_id": "machine-learning-008", + "source_title": "微信图片_20260607143254", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "d705bc354ccc375747351bbe8c2e7a86a93a2659ea4a1ca12f64d023c91a6048", + "text_excerpt": "![page-001.jpg](assets/machine-learning-008/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:026", + "course_id": "machine_learning", + "query": "我想先复习这张图片,应该从哪里开始?,第26条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-009:h-微信图片_20260607143256:c01", + "exists": true, + "source_id": "machine-learning-009", + "source_title": "微信图片_20260607143256", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fd301c7342b300f522eb4c7e7b9b803df6faa92e9e771f26bd6853747624ed5b", + "text_excerpt": "![page-001.jpg](assets/machine-learning-009/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:027", + "course_id": "machine_learning", + "query": "复习这张图片时哪些内容最重要?,第27条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-010:h-微信图片_20260607143258:c01", + "exists": true, + "source_id": "machine-learning-010", + "source_title": "微信图片_20260607143258", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "f867103866f5ac1fe874a6ef782101a7e3622846b7c90f1bc8fbbb983cdfe174", + "text_excerpt": "![page-001.jpg](assets/machine-learning-010/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:028", + "course_id": "machine_learning", + "query": "这张图片里的方法或结论怎么理解?,第28条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-011:h-微信图片_20260607143301:c01", + "exists": true, + "source_id": "machine-learning-011", + "source_title": "微信图片_20260607143301", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "e97c18f07f798dac46db7812b9a2402cb4a34e09687b4c43506e7dcb0a82b18a", + "text_excerpt": "![page-001.jpg](assets/machine-learning-011/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:029", + "course_id": "machine_learning", + "query": "学习这张图片时哪些概念容易混淆?,第29条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-012:h-微信图片_20260607143303:c01", + "exists": true, + "source_id": "machine-learning-012", + "source_title": "微信图片_20260607143303", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "b1c5f88cae242d0f64e2bf62cca83642acfe576c765f10e2ff0109d528b558bf", + "text_excerpt": "![page-001.jpg](assets/machine-learning-012/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "machine_learning:030", + "course_id": "machine_learning", + "query": "考试会怎么考这张图片?,第30条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "machine-learning-013:h-微信图片_20260607143306:c01", + "exists": true, + "source_id": "machine-learning-013", + "source_title": "微信图片_20260607143306", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "7dee94082a44b5ff17d4761f3e7670c3e0d8e57ca06b8dc12e912f34bdda224c", + "text_excerpt": "![page-001.jpg](assets/machine-learning-013/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:001", + "course_id": "mao_zedong_thought_overview", + "query": "党的自我革命历史沿革及当代价值主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s1:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 1, + "text_sha256": "f5459b659ffb3f1c0b0130e10e15a7a9f141bdd3cf055490c47bba1d6b322775", + "text_excerpt": "- 党的自我革命历史沿革及当代价值\n- 2025年3月24日", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:002", + "course_id": "mao_zedong_thought_overview", + "query": "我想先复习党的自我革命历史沿革及当代价值,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s2:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 2, + "text_sha256": "ea96d034d2bba29c9f87ab3ccff2030bd38a0283bcf9d5db00421eb5f64de500", + "text_excerpt": "- 小组分工\n- 1921-1949 刘诗琪 徐健睿\n- 1949-1978 龙韬 黄烁韩\n- 1978-2002 沈人文 李勇涛 曾浩锋\n- 2002至今 张俊杰 王锦铨 袁纪宸\n- PPT串联(总编) 柯谱\n- 演讲&PPT统一 于博宇", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:003", + "course_id": "mao_zedong_thought_overview", + "query": "复习党的自我革命历史沿革及当代价值时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s3:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 3, + "text_sha256": "c00769f2264c829b5b6e67c0d741317a2610219734af3ca9441dde6dc3ac5dcc", + "text_excerpt": "- 目录\n- 第一阶段:建党初期(1921-1949)\n- 第二阶段:党的政权巩固与曲折探索 (1949-1976)\n- 第三阶段:改革开放初期与市场经济建设时期(1978-2002)\n- 第四阶段:全面建设小康社会与跨入新时代( 2002-至今)", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:004", + "course_id": "mao_zedong_thought_overview", + "query": "党的自我革命历史沿革及当代价值里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s4:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 4, + "text_sha256": "3f6a94ed6f5a868b683b1b186342b3fb4976bf0dce9dd1597e5195cab9ec6d7f", + "text_excerpt": "- 建党初期(1921-1949)\n- 1、向农村革命的转变( 1921-1927 )\n- 2、古田会议与遵义会议( 1927-1937 )\n- 3、从整风到建国( 1937-1949 )", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:005", + "course_id": "mao_zedong_thought_overview", + "query": "学习党的自我革命历史沿革及当代价值时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s5:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 5, + "text_sha256": "29cf6054d3f73bab5e5662cd057bb392ffef834600a6b2a5b94d142c6219baad", + "text_excerpt": "- 1921-1927年:向农村革命的转变\n![image](assets/mao-zedong-thought-overview-001/image-001.png)\n![image](assets/mao-zedong-thought-overview-001/image-002.png)\n![image](assets/mao-zedong-thought-overview-001/image-003.png)\n- 历史背景\n- 国共合作初期与城市工人运动的结合、 19", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:006", + "course_id": "mao_zedong_thought_overview", + "query": "考试会怎么考党的自我革命历史沿革及当代价值?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s6:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 6, + "text_sha256": "0f624a504d2afec2f94c26630e44c800d57ecc78783a58ba9d6bbdaa35b1c940", + "text_excerpt": "![image](assets/mao-zedong-thought-overview-001/image-004.png)\n![image](assets/mao-zedong-thought-overview-001/image-005.png)\n![image](assets/mao-zedong-thought-overview-001/image-006.png)\n- 主要事件:“八七会议”召开\n- 1.对大革命失败的总结与策略转向的决策\n- (1)清算右倾错误与确", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:007", + "course_id": "mao_zedong_thought_overview", + "query": "党的自我革命历史沿革及当代价值主要讲什么?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s7:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 7, + "text_sha256": "85a0a96b0e508a3c998933846e0a73aff852d379ada99484ad0d2ce7672cd765", + "text_excerpt": "- 1927-1937年:古田会议与遵义会议\n![image](assets/mao-zedong-thought-overview-001/image-008.png)\n![image](assets/mao-zedong-thought-overview-001/image-009.png)\n![image](assets/mao-zedong-thought-overview-001/image-010.png)\n- 01\n- 02\n- 03\n- 古田会议历史背景\n- ", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:008", + "course_id": "mao_zedong_thought_overview", + "query": "我想先复习党的自我革命历史沿革及当代价值,应该从哪里开始?,见第8页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s8:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 8, + "text_sha256": "8d8df57f3576ce420d81602569bd6164b0b466a0637e5c60bc56b352c4f75330", + "text_excerpt": "- 1927-1937年:古田会议与遵义会议\n![image](assets/mao-zedong-thought-overview-001/image-012.png)\n![image](assets/mao-zedong-thought-overview-001/image-013.png)\n![image](assets/mao-zedong-thought-overview-001/image-014.png)\n- 遵义会议历史背景\n- (1)博古、李德的错误指挥\n-", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:009", + "course_id": "mao_zedong_thought_overview", + "query": "复习党的自我革命历史沿革及当代价值时哪些内容最重要?,见第9页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s9:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 9, + "text_sha256": "6c9d588cf29d69f6e2e8254174ad6871b781a60cb853ec55f1d322e6fda84da4", + "text_excerpt": "- 1937-1949年:从整风到建国\n![image](assets/mao-zedong-thought-overview-001/image-016.png)\n![image](assets/mao-zedong-thought-overview-001/image-017.png)\n![image](assets/mao-zedong-thought-overview-001/image-018.png)\n- 历史背景\n- 抗日战争,延安时期,官僚主义,派系斗争,意识", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:010", + "course_id": "mao_zedong_thought_overview", + "query": "党的自我革命历史沿革及当代价值里的方法或结论怎么理解?,见第10页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s10:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 10, + "text_sha256": "0b7f7f65a4b4eff7e87227d0a905529eaff92b1adb662a5f489896499179d74d", + "text_excerpt": "- 建党初期阶段总结\n- 1921年至1949年,中共在革命过程中展现了强大的自我革命能力。从早期战略调整,如农村包围城市的革命道路,到党内整顿与领导层调整,如古田会议、遵义会议和整风运动,再到1949年七届二中全会的执政准备,党始终通过不断反思和调整,确保自身的生存与发展。\n- 这一传统不仅帮助党在革命时期战胜困难,也奠定了长期执政的思想与组织基础。自我革命的精神使党始终保持活力,与人民紧密联系,并能适应时代变化。这一经验对于今天党的建设仍具有重要意义,确保党在现代化治理中", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:011", + "course_id": "mao_zedong_thought_overview", + "query": "学习党的自我革命历史沿革及当代价值时哪些概念容易混淆?,见第11页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s11:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 11, + "text_sha256": "577c0910fc38b17851ea015868639ed6f4a4f16b6a4b513eac0a09c682157521", + "text_excerpt": "- 党的政权巩固与曲折探索 (1949-1976)\n- 1、政权巩固与制度奠基(1949-1956)\n- 2、建设探索与政策调整(1957-1965)\n- 3、曲折探索与历史转折(1965-1976)", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:012", + "course_id": "mao_zedong_thought_overview", + "query": "考试会怎么考党的自我革命历史沿革及当代价值?,见第12页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s12:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 12, + "text_sha256": "0996a8eb8c49f94c9735c8569a71b4492095f3d28b8f966356e1f7a4103d0971", + "text_excerpt": "- 一、政权巩固与制度奠基\n- (1949-1956)\n- 国内国际形势\n- 国内:1949年中华人民共和国的建立标志着中国历史上旧有封建社会和半殖民地化状态的彻底终结,开始进入社会主义建设的新时期。长期战争后百废待兴,人民渴望和平稳定,政权急需巩固。\n- 国际:冷战格局初现,两大阵营对峙,中国面临外部压力与机遇。\n![image](assets/mao-zedong-thought-overview-001/image-019.jpg)", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:013", + "course_id": "mao_zedong_thought_overview", + "query": "党的自我革命历史沿革及当代价值主要讲什么?,见第13页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s13:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 13, + "text_sha256": "a019677ac3768d51a5568fc6f855eeb3c7a012d37056ffc7869c6844087b4218", + "text_excerpt": "- 1949年10月1日开国大典,毛泽东宣告新中国成立,确立国家主权。\n1949年12月毛泽东访苏,1950年中苏签订友好同盟互助条约。\n中国长期争取联合国合法席位,体现国际影响力与主权诉求。\n- 1、新中国成立与外交突破(1949-1950)\n- 1950年土地改革法实施,3亿农民获得土地,消灭封建土地制度。1953- 1956年进行三大改造,对农业、手工业、资本主义工商业进行社会主义改造。\n1953年开始执行第一个五年计划,建立计划经济体制。\n- 2、土地改革与社会主义改", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:014", + "course_id": "mao_zedong_thought_overview", + "query": "我想先复习党的自我革命历史沿革及当代价值,应该从哪里开始?,见第14页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s14:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 14, + "text_sha256": "770c37b52c83ef33f2ae9595dd4252c91ec79eccd159b9a098385fa35a9fc90c", + "text_excerpt": "- 历史意义 1949-1956\n- 奠定国家基础\n- 新中国的成立和抗美援朝的胜利,巩固了中共领导的政权,使国家摆脱了长期的战乱与不安定局面,为后续的国家建设提供了稳定的政治环境。\n土地改革解放农村生产力,为农业发展与工业化奠定基础,奠定经济基础。\n社会主义改造确立公有制经济主导地位,社会主义经济制度基本建立,奠定制度基础。\n- 新政权建立推动社会各领域变革,从经济到文化,从城市到农村,社会面貌焕然一新。中国确立了以工农联盟为基础的政治体系,并开始建设以公有制为主体的社会", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:015", + "course_id": "mao_zedong_thought_overview", + "query": "复习党的自我革命历史沿革及当代价值时哪些内容最重要?,见第15页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s15:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 15, + "text_sha256": "fe2889c3e1a2e1dce85acb2cd71bf60bfa304969a5e6adf9670877f358bc170b", + "text_excerpt": "- 二、建设探索与政策调整(1957-1965)\n- 国内国际形势\n- 国内:在经过初期的政治稳定和改革后,1950年代末期的中国面临着一些新的问题。经济发展速度未能达到预期,许多社会矛盾和生产力问题浮现,政治局势也受到一定影响。特别是“大跃进”运动的失败,导致了社会经济的严重倒退,农民生活困苦,资源浪费严重,国家政治环境逐渐发生变化。。\n- 国际:在国际上,冷战格局逐渐加剧,世界两大阵营(西方以美国为首,东方以苏联为首)之间的对抗依旧激烈。中国的外交关系也面临挑战,尤其是在", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:016", + "course_id": "mao_zedong_thought_overview", + "query": "党的自我革命历史沿革及当代价值里的方法或结论怎么理解?,见第16页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s16:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 16, + "text_sha256": "15be41a2d82411892db0c94f436a4f93fa3e709d84436b1207b2916cd7924b14", + "text_excerpt": "- 工业化加速与“大跃进”(1958-1960)\n- 国民经济调整(1961-1965)\n- 大跃进是中国政府提出的一个宏大的经济和社会改革计划,旨在通过集体化生产、发展重工业、提高农业生产来实现迅速的经济增长。然而,由于过度理想化的目标和急功近利的政策,导致了农业大规模的生产失败,人民公社体系崩溃,造成严重的粮食短缺和大规模饥荒,经济发展停滞,甚至出现倒退。\n- 由于大跃进的失败和其带来的巨大经济损失,政府对经济进行了大规模调整和修复。通过实行一些实际的经济政策,转向以恢复", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:017", + "course_id": "mao_zedong_thought_overview", + "query": "学习党的自我革命历史沿革及当代价值时哪些概念容易混淆?,见第17页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s17:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 17, + "text_sha256": "5f329dafe7dc183a0f9f7716b9a153008123a705791bbd6cad50bee2bdc34462", + "text_excerpt": "- 反右运动(1957)\n- 在1957年,毛泽东发起了反右运动,旨在清除党内外的“右派”分子。许多知识分子和社会人士因提出批评和意见被视为“右派”而遭到迫害。反右运动加剧了社会的不信任和恐惧氛围,限制了言论自由,产生了对知识分子的压制,进一步影响了国家的思想文化环境。\n- 与苏联的关系恶化(1959-1960)\n- 由于在社会主义建设、经济发展模式和国际政治立场上存在分歧,中国与苏联的关系逐渐恶化。1959年,苏联停止向中国提供技术援助和经济支持,这加剧了中国的独立性,尤其", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:018", + "course_id": "mao_zedong_thought_overview", + "query": "考试会怎么考党的自我革命历史沿革及当代价值?,见第18页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s18:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 18, + "text_sha256": "b7501fb10f82816c7084212ea0d926c578256ad2ef8a6f2f22b2c2b640d85168", + "text_excerpt": "- 历史意义\n- 01\n- 02\n- “大跃进”虽有失误,但在探索独立工业体系方面积累经验,推动工业化进程。经济调整使国民经济恢复增长,工业与农业协调发展,为后续经济发展奠定基础。\n- 这一时期的中国尝试了一些不同的政治经济政策,从大跃进到调整后的经济恢复,显示了中国在探索适合自己国情的社会主义道路中不断摸索。虽然很多政策遭遇失败,但这种探索使得中国逐步找到了更符合国情的发展模式,尤其是在1960年代的经济复苏过程中。\n- 中苏关系的破裂标志着中国走上了一条更加独立的外交路线", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:019", + "course_id": "mao_zedong_thought_overview", + "query": "党的自我革命历史沿革及当代价值主要讲什么?,见第19页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s19:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 19, + "text_sha256": "67da567a540636160c5b1888892088b095c228c2f20abcae64f81c940499b1fe", + "text_excerpt": "- 三、曲折探索与历史转折(1965-1976)\n- 国内:\n- 经济困境:1965年国民经济调整初见成效,但“三五计划”(1966-1970)转向以备战为中心的三线建设,大量资源投入中西部军工项目,民生领域投资被压缩。\n- 政治分歧:毛泽东对刘少奇、邓小平等主张的“物质刺激”“利润挂帅”提出批评,认为存在“资本主义复辟”风险,提出“阶级斗争必须年年讲、月月讲、天天讲”(1962年八届十中全会)\n- 国际:\n- 中苏对抗:1969年珍宝岛冲突后,苏联在中苏边境陈兵百万,威胁使", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:020", + "course_id": "mao_zedong_thought_overview", + "query": "我想先复习党的自我革命历史沿革及当代价值,应该从哪里开始?,见第20页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s20:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 20, + "text_sha256": "2020cddd9748c776ebe85c278888b88783ee99d0e747c56f888aef15f773d80e", + "text_excerpt": "- 主要事件\n- 1966年5月中央政治局扩大会议通过《五一六通知》,成立“中央文革小组”,取代中央书记处职能。\n- 红卫兵“破四旧”(旧思想、文化、风俗、习惯)导致全国文物古迹大规模损毁(如曲阜孔庙、少林寺藏经阁)。\n- 1967年上海“一月风暴”引发全国夺权,各级政权瘫痪,1967-1968年工业总产值下降13.8%。\n- ​1969年中共九大:林彪被确立为毛泽东接班人,\"无产阶级专政下继续革命\"理论写入党章。\n- ​**\"清理阶级队伍\"运动**:以清查\"叛徒\"\"特务\"为", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:021", + "course_id": "mao_zedong_thought_overview", + "query": "复习党的自我革命历史沿革及当代价值时哪些内容最重要?,见第21页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s21:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 21, + "text_sha256": "0fa492e3879ab815ccf42808a2a24cec7211cda9d0661dc754fae60f0bcc1cba", + "text_excerpt": "- 主要事件\n- 纠\"左\"与反复(1971-1976)​\n- 1972年周恩来纠\"左\":推动批判极左思潮,部分恢复经济秩序。\n- ​1973年邓小平复出:主持国务院工作,试行整顿,但1976年再遭批判。\n- ​1974年\"批林批孔\"运动:江青集团借批判孔子影射周恩来。\n- ​1976年四五运动:民众借悼念周恩来反对\"四人帮\",为文革终结铺垫。\n- ​1976年10月:粉碎\"四人帮\",文革正式结束。\n![image](assets/mao-zedong-thought-over", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:022", + "course_id": "mao_zedong_thought_overview", + "query": "党的自我革命历史沿革及当代价值里的方法或结论怎么理解?,见第22页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s22:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 22, + "text_sha256": "253a5a7e9f5244311f87c8763785e130b2d3a7812750b79841364bf73da3d997", + "text_excerpt": "- 历史影响&启示\n- ​​影响\n- 党的民主集中制遭到严重破坏,法治缺失导致大规模冤假错案(如刘少奇案)。\n- 暴露了个人崇拜和权力高度集中的体制弊端,为改革开放后党内民主建设提供反面教材。\n- 国民经济损失约5000亿元,工业化进程受阻,科技教育断层(如十年停招大学生)。\n- 社会道德体系崩溃,人际关系极端化,留下深重精神创伤。\n- 启示\n- “文革”被定义为党史中的重大挫折,其彻底否定彰显了中国共产党正视错误、自我革新的政治勇气,成为坚持和发展中国特色社会主义的重要历史", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:023", + "course_id": "mao_zedong_thought_overview", + "query": "学习党的自我革命历史沿革及当代价值时哪些概念容易混淆?,见第23页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s23:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 23, + "text_sha256": "7b849648972275d26a407ca5a55f33be88fd99fadbfd6439588fd80ea793f4f2", + "text_excerpt": "- 1949-1976年党的自我革命实践,是中国共产党在探索社会主义建设道路中不可或缺的组成部分。其正反两方面的经验为新时代提供了重要启示:自我革命必须坚持党的领导与人民立场相统一、思想建党与制度治党相融合、问题导向与系统思维相结合。这些历史积淀,构成了习近平新时代中国特色社会主义思想中关于党的建设理论的重要历史渊源,也彰显了中国共产党始终以刀刃向内的勇气推动事业发展的政治品格。。\n- 这一时期的历史证明:党具有“刀刃向内”的政治勇气。文革教训直接推动1982年宪法确立法治原", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:024", + "course_id": "mao_zedong_thought_overview", + "query": "考试会怎么考党的自我革命历史沿革及当代价值?,见第24页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s24:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 24, + "text_sha256": "fe971e13c912e83ea66723b6ab7773d759f3ce88d445bfe11f6f1a92f4665826", + "text_excerpt": "- 1、真理标准问题大讨论( 1978 )\n- 2、恢复党的纪律检查机关( 1978-1982 )\n- 3、恢复党的纪律检查机关( 1982-1992 )\n- 4、建立社会主义市场经济体制( 1992-2002 )\n- 改革开放初期与市场经济建设时期(1978-2002)", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:025", + "course_id": "mao_zedong_thought_overview", + "query": "党的自我革命历史沿革及当代价值主要讲什么?,见第25页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s25:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 25, + "text_sha256": "37e75c61281a656f033876bb93b87859dceccba4ba52751bd20b88cedb16feb2", + "text_excerpt": "![image](assets/mao-zedong-thought-overview-001/image-030.png)\n- 真理标准问题大讨论\n- ——冲破思想桎梏,开启改革开放新篇章\n- 01\n- 《光明日报》发表特约评论员文章《实践是检验真理的唯一标准》,文章明确提出,社会实践是检验真理的唯一标准,马克思主义理论也应在实践中不断发展引发了一场关于真理标准问题的全国性大讨论这场讨论冲破了“两个凡是”的束缚,重新确定了马克思主义的思想线路,为党的十一届三中全会的召开奠定", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:026", + "course_id": "mao_zedong_thought_overview", + "query": "我想先复习党的自我革命历史沿革及当代价值,应该从哪里开始?,见第26页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s26:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 26, + "text_sha256": "786605f8dc13e61237bb8d9504f67a3c8f547be7bb79f4bd6fc213da795dd886", + "text_excerpt": "![image](assets/mao-zedong-thought-overview-001/image-033.png)\n- 恢复党的纪律检查机关:加强党内监督,维护党的团结统一\n- “文化大革命”对党内监督的破坏\n- 01\n- “文化大革命”期间,党的纪律检查机关被撤销,党内监督严重缺失,导致党内生活不正常,党的团结统一受到破坏。这一时期,党的组织体系遭到严重冲击,许多党员干部遭受不公正对待,党的正常工作无法开展。\n- 党内监督缺失的后果\n- 02\n- 由于缺乏有效的监", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:027", + "course_id": "mao_zedong_thought_overview", + "query": "复习党的自我革命历史沿革及当代价值时哪些内容最重要?,见第27页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s27:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 27, + "text_sha256": "24d78c26f9ee07abcbed157bc181674febb978326463ca352bb27db6154de227", + "text_excerpt": "- 恢复过程与举措\n- 01\n- 中央纪律检查委员会的恢复\n- 1978年12月,党的十一届三中全会决定恢复中央纪律检查委员会,并选举陈云为第一书记。这一决定标志着党内监督体系开始逐步恢复,为后续的纪律检查工作奠定了基础。\n- 02\n- 各级纪律检查机关的建立\n- 在中央纪律检查委员会的推动下,各级纪律检查机关相继恢复建立。这些机构的设立,使党内监督工作逐步走上正轨,形成了从中央到地方的完整监督网络。\n- 03\n- 制度建设与完善\n- 恢复后的纪律检查机关在实践中不断总结经验", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:028", + "course_id": "mao_zedong_thought_overview", + "query": "党的自我革命历史沿革及当代价值里的方法或结论怎么理解?,见第28页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s28:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 28, + "text_sha256": "fd7063aab55d2299853634a302a3c3e8eca6aa587908674e98c013d355a6f862", + "text_excerpt": "- 成效与影响\n- 维护党的纪律\n- 恢复党的纪律检查机关后,党纪党规得到了有效维护。通过严肃查处违纪行为,教育和警示了广大党员干部,使党的纪律成为不可触碰的红线,保障了党的纯洁性和先进性。\n- 保障政策执行\n- 维护党的团结统一\n- 纪律检查机关的监督作用,确保了党的路线方针政策在各级党组织和党员干部中得到不折不扣的贯彻执行。有力地推动了改革开放和社会主义现代化建设的顺利进行,为国家的发展提供了坚实的纪律保障。\n- 恢复纪律检查机关,有效解决了党内存在的矛盾和问题,维护了党", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:029", + "course_id": "mao_zedong_thought_overview", + "query": "学习党的自我革命历史沿革及当代价值时哪些概念容易混淆?,见第29页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s29:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 29, + "text_sha256": "de101da0eae16f6e6b8d202a679399a05d5ae97bfe9fa935f650a8d48639c29c", + "text_excerpt": "- 恢复党的纪律检查机关:加强党内监督,维护党的团结统一\n- 整党运动分批进行,从中央到地方逐步展开。各级党组织按照统一部署,认真组织党员干部参与整党运动,确保整党工作取得实效。\n- 整党运动的实施步骤\n- 1983年10月,党的十二届二中全会通过《中共中央关于整党的决定》,决定用三年时间对党的作风和组织进行一次全面整顿。这一决定为整党运动明确了方向和目标。\n- 整党决定的通过\n- 整党运动以统一思想、整顿作风、加强纪律、纯洁组织为基本任务。通过学习教育、自查自纠、民主评议等", + "flags": [] + } + ] + }, + { + "legacy_id": "mao_zedong_thought_overview:030", + "course_id": "mao_zedong_thought_overview", + "query": "考试会怎么考党的自我革命历史沿革及当代价值?,见第30页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "mao-zedong-thought-overview-001:s30:c01", + "exists": true, + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "locator_type": "slide", + "locator_start": 30, + "text_sha256": "e9495e9dcb972aabb4ef028edec161b6259a70bf1da0290c4e46d7c8b64b9757", + "text_excerpt": "- 成效与意义\n![image](assets/mao-zedong-thought-overview-001/image-036.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:001", + "course_id": "marxist_basic_principles", + "query": "演讲观点主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-001:h-演讲观点:c01", + "exists": true, + "source_id": "marxist-basic-principles-001", + "source_title": "演讲观点", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a2bbfb031b579f96e60c8b3737033dc8039db8935582869345825c695aa3f2ec", + "text_excerpt": "三个引述关系:\n\n理论必须适应于实际\n\n过去\n\n现在\n\n不远的将来\n\n1,3,5,6:生产力的进步\n\n2,4,7,8:生产关系的重塑\n\n我们思考一下,金融 量子 生物科技 社会政策 如果只从生产力生产关系角度去思考,会不会难以解释其跳脱性呢?\n\n这个环,只是从各个大方向选取了部分,究竟是如何联系的呢?\n\n我认为\n\n生产力与生产关系的互动并非简单线性,而是通过社会结构(文化、教育、阶层等)形成多层次、多向度的动态网络。其中,社会结构既是生产关系变革的结果,也是新生产关系形成的条", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:002", + "course_id": "marxist_basic_principles", + "query": "我想先复习科技发展与社会变革:生产力与生产关系视角,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s1:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 1, + "text_sha256": "8add5c8b184613fb87a40ccdd6ee2a2981d6f8ca9adee6d29ce5aad2ac07046c", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-001.jpg)\n- 科技发展与社会变革:生产力与生产关系视角\n- 汇报:于博宇\n- 资料收集:于淑怡 杨浩然\n- PPT制作:姚泽文", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:003", + "course_id": "marxist_basic_principles", + "query": "复习科技发展与社会变革:生产力与生产关系视角时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s2:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 2, + "text_sha256": "f290b3515b923cc3b6d0a1d64dfe884868844a41a0b3a21a1ecace0bb204caf6", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-002.jpg)\n- content\n- 目录\n- 01\n- 引言:科技发展与人类社会的变革\n- 02\n- 教材理论解析\n- 03\n- 典型案例分析:自动驾驶引发的社会变革\n- 04\n- 总结与展望", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:004", + "course_id": "marxist_basic_principles", + "query": "科技发展与社会变革:生产力与生产关系视角里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s3:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 3, + "text_sha256": "159bbd62f9cfe95321c8eb0687d7499e10700e479ee6db5a340bed41312c8b3c", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-003.jpg)\n- 引言:科技发展与人类社会的变革\n- 01", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:005", + "course_id": "marxist_basic_principles", + "query": "学习科技发展与社会变革:生产力与生产关系视角时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s4:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 4, + "text_sha256": "2b8a9d46459e88cd109dadfff7d9286618e225bf5da7419051037f459bfb08f2", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-004.jpg)\n- 经典引述\n![image](assets/marxist-basic-principles-002/image-005.png)\n- 马克思的洞见\n- 马克思在《哲学的贫困》(1847年)中提出:“手推磨产生的是封建主的社会,蒸汽磨产生的是工业资本家的社会。”(原文:“The windmill gives you society with the feu", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:006", + "course_id": "marxist_basic_principles", + "query": "考试会怎么考科技发展与社会变革:生产力与生产关系视角?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s5:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 5, + "text_sha256": "e025b1ce3be3099741ccdbaeab52dc09a80098942a5bd6817fbeeeef36bbaf93", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-008.jpg)\n- 当代科技图景\n![image](assets/marxist-basic-principles-002/image-009.png)\n- 产业规模突破\n- 人工智能产业规模已突破5000亿美元,对全球经济产生深远影响。\n- 全球经济重塑\n- 随着AI技术的发展,全球经济格局正在被重新塑造,新兴市场不断涌现。\n- 量子计算进展\n- IBM推出的1121量子", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:007", + "course_id": "marxist_basic_principles", + "query": "科技发展与社会变革:生产力与生产关系视角主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s6:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 6, + "text_sha256": "08d034522805fac7f360861785a59fc78c7275ae3a48d3f7e72df26e9359b233", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-010.jpg)\n- 教材理论解析:生产力与生产关系矛盾运动规律原理\n- 02", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:008", + "course_id": "marxist_basic_principles", + "query": "我想先复习科技发展与社会变革:生产力与生产关系视角,应该从哪里开始?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s7:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 7, + "text_sha256": "79c9f82cc57faab27b20696c5e37ea43224e1015017710954319b25000055458", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-011.jpg)\n- 生产力与生产关系\n- 生产力:人类改造自然、获取物质资料的能力,包括劳动者、劳动工具、劳动对象三要素,现代还包括科学技术、管理等要素。\n- 生产关系:人们在生产过程中结成的经济关系,包括生产资料所有制、生产中的地位和相互关系、产品分配方式。\n![image](assets/marxist-basic-principles-002/image-012.jp", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:009", + "course_id": "marxist_basic_principles", + "query": "复习科技发展与社会变革:生产力与生产关系视角时哪些内容最重要?,见第8页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s8:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 8, + "text_sha256": "8e819095407d94feea9dae1f9b32b21bfb24de9fa38312b8fde6365b15d46575", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-014.jpg)\n- 几个重要阶段的生产力和生产关系\n![image](assets/marxist-basic-principles-002/image-015.png)\n- 农业革命\n- 生产工具:从石器、木器 → 青铜器、铁器。\n- 农业技术:\n- 轮作制(如欧洲“三圃制”)减少土地休耕,提升产量。\n- 水利工程(如灌溉系统)支持稳定农业生产。\n- 劳动对象:从采集野生", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:010", + "course_id": "marxist_basic_principles", + "query": "科技发展与社会变革:生产力与生产关系视角里的方法或结论怎么理解?,见第9页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s9:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 9, + "text_sha256": "8f2fbf500646b82db12d13a4ab85e1c692c5627e21549ca774bbe7acbb358922", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-017.jpg)\n- 几个重要阶段的生产力和生产关系\n![image](assets/marxist-basic-principles-002/image-018.png)\n- 工业革命\n- 1.生产力飞跃\n- 核心发明:蒸汽机(瓦特改良,18世纪末)→ 取代人力、畜力,成为主要动力源。\n- 机械化生产:纺织机(如珍妮机)、蒸汽机车、炼钢技术(贝塞麦转炉)大幅提升效率。\n- ", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:011", + "course_id": "marxist_basic_principles", + "query": "学习科技发展与社会变革:生产力与生产关系视角时哪些概念容易混淆?,见第10页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s10:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 10, + "text_sha256": "1ad817ab4ec36f673b0bec42fa35183df6398fc3eda1af9382c4361ceadc61b1", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-020.jpg)\n- 几个重要阶段的生产力和生产关系\n![image](assets/marxist-basic-principles-002/image-021.png)\n- 信息革命\n- 1.生产力变革(技术飞跃)\n- 核心技术突破:\n- 计算机(1940s) → 实现数据自动化处理\n- 互联网(1990s) → 全球实时信息连接\n- 人工智能/大数据(21世纪) → 机", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:012", + "course_id": "marxist_basic_principles", + "query": "考试会怎么考科技发展与社会变革:生产力与生产关系视角?,见第11页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s11:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 11, + "text_sha256": "5a637a4405105e54ea3c63ec6de0ff21eed5325a486c99f2638348015cc0eb05", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-023.jpg)\n- 生产力与生产关系矛盾辩证关系\n- 人类社会发展进程中,要变革旧的生产关系既能通过阶级斗争,也能吸取先进因素革新落后生产关系来适应先进生产力发展。从原始社会到社会主义社会的发展来看,革新生产关系的阶级力量源于生产力的发展趋势,决定生产关系的产生、变革的方向与形式。不同时期,生产力每前进一步,就会形成前一阶级与后一阶级的连接点,构成人类发展的连续性。但特定质", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:013", + "course_id": "marxist_basic_principles", + "query": "科技发展与社会变革:生产力与生产关系视角主要讲什么?,见第12页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s12:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 12, + "text_sha256": "2b1a5bcd89089dbbebed0d59069614cad8a517ef66f4a7a2737e05d7ab6157bf", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-025.jpg)\n- 生产力与生产关系矛盾辩证关系\n- 这一规律揭示了社会发展的根本动力机制。历史唯物主义认为,生产力(如生产工具、技术水平)的进步会与现存的生产关系(如所有制形式、分配方式)产生矛盾,当矛盾积累到一定程度时,就会引发社会变革。这一过程不是线性的,而是通过矛盾-调整-新矛盾的形式不断推动社会向前发展。对马克思主义政党而言,把握这一规律具有重要的现实意义。在政策", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:014", + "course_id": "marxist_basic_principles", + "query": "我想先复习科技发展与社会变革:生产力与生产关系视角,应该从哪里开始?,见第13页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s13:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 13, + "text_sha256": "de36398aaecc03c1bcc422d59dadd0e8f5155e0d30100f979dbb69a745d03173", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-027.jpg)\n- 典型案例分析:自动驾驶引发的社会变革\n- 03", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:015", + "course_id": "marxist_basic_principles", + "query": "复习科技发展与社会变革:生产力与生产关系视角时哪些内容最重要?,见第14页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s14:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 14, + "text_sha256": "61a400ffe6e7b2e18963136e2191dc26796a5c3f098630eb4697cd9cbbfff183", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-028.jpg)\n- 技术突破\n- Waymo里程新高\n- 截至2023年,Waymo自动驾驶测试里程已突破2000万英里,彰显技术成熟度提升。\n- L4级商用扩展\n- L4级自动驾驶技术在20个城市实现商用落地,标志着自动驾驶进入实用阶段。\n- 技术创新趋势\n- 自动驾驶技术持续迭代,推动智能交通系统革新,预示着未来出行方式的根本性转变。\n![image](assets/m", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:016", + "course_id": "marxist_basic_principles", + "query": "科技发展与社会变革:生产力与生产关系视角里的方法或结论怎么理解?,见第15页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s15:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 15, + "text_sha256": "1e2e932a1075a514cef73dbd7d86039ad32617d88758d2cbacedc8b3e40899d2", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-030.jpg)\n- 生产关系重构\n![image](assets/marxist-basic-principles-002/image-031.png)\n- 自动驾驶技术影响\n- 职业结构调整\n- 预计2030年全球司机岗位减少500万\n- 就业市场面临重大转型\n- 法律与责任\n- 特斯拉事故凸显算法责任问题\n- 法律需明确自动驾驶系统与人类驾驶员的责任边界\n- 政策法规\n", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:017", + "course_id": "marxist_basic_principles", + "query": "学习科技发展与社会变革:生产力与生产关系视角时哪些概念容易混淆?,见第16页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s16:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 16, + "text_sha256": "040709c21029ed9ee7e5cb826bc9e1f7275b1ce619fb088467971fbde14307bc", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-032.jpg)\n- 生产关系重构\n- 1.技术飞跃:新生产力对旧秩序的冲击\n- 生产力维度:\n- 传感器/算法替代人类驾驶(L5级自动驾驶效率提升300%)\n- 车联网实现万亿级数据交换(每秒处理8TB道路信息)\n- 矛盾显现:\n- 现有交通法规基于人类驾驶逻辑(如“方向盘后必须有人”),保险体系仍要求“驾驶员责任认定”。\n- 案例:2023年加州自动驾驶测试车因法律滞后被", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:018", + "course_id": "marxist_basic_principles", + "query": "考试会怎么考科技发展与社会变革:生产力与生产关系视角?,见第17页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s17:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 17, + "text_sha256": "6207aa3675e9d6296a1d484db9dec4088cf8b3fe1e8deafff355f437eabeccca", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-033.jpg)\n- 启示\n- 自动驾驶的普及像一面镜子,照出了技术进步与社会规则之间的深刻裂痕。当汽车不再需要人类驾驶时,我们突然发现:工厂能三个月造出自动驾驶卡车,但社会需要三十年才能消化被淘汰的三百万司机;算法每秒处理百万条道路数据,但法律还在争论事故责任该由车主还是程序员承担;科技公司掌握着每辆车的行驶轨迹,但普通人对自己产生的数据毫无话语权。这不仅是机器替代人的问题", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:019", + "course_id": "marxist_basic_principles", + "query": "科技发展与社会变革:生产力与生产关系视角主要讲什么?,见第18页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s18:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 18, + "text_sha256": "705633fd4ea80c09c305ef560923367460d7f204a68125b74fb8d4b6b8aad43e", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-034.jpg)\n- 总结与展望\n- 04", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:020", + "course_id": "marxist_basic_principles", + "query": "我想先复习科技发展与社会变革:生产力与生产关系视角,应该从哪里开始?,见第19页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s19:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 19, + "text_sha256": "48911e6f7ed80bcec72e887726fa2cb0ba19f6c8d508963328994f7e21f32145", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-035.jpg)\n- 总结\n- 从马克思主义哲学的“生产力与生产关系矛盾运动规律”来看,科学技术作为生产力的核心要素,是推动生产力发展的关键力量。它通过变革生产力要素,推动生产力的发展,进而引发生产关系的变革。同时,生产关系的性质和形式也会影响科学技术的发展方向和速度。科学技术的进步不仅推动了生产力的发展,还引发了社会形态的变革。从农业社会到工业社会,再到信息社会,每一次变革", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:021", + "course_id": "marxist_basic_principles", + "query": "复习科技发展与社会变革:生产力与生产关系视角时哪些内容最重要?,见第20页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s20:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 20, + "text_sha256": "491eecd56ad64870c60fb234030be55a38c0e88e8233b4bd8311e437a1aef552", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-037.jpg)\n- 展望\n- 社会制度的变革始终滞后于生产力的发展。这一点在所有历史阶段中都得到了验证。然而,这并不意味着生产关系永远被动适应生产力。社会制度的调整也在一定程度上反作用于科技的发展,使其以更加可持续的方式推动人类进步。例如,当资本主义在早期工业化阶段过度剥削工人时,社会保障体系的建立不仅稳定了社会秩序,也为后续的科技创新提供了更稳固的社会基础。如今,在人工智", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:022", + "course_id": "marxist_basic_principles", + "query": "科技发展与社会变革:生产力与生产关系视角里的方法或结论怎么理解?,见第21页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s21:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 21, + "text_sha256": "a2d882720599923bfd0d25f7712eb7d97cfec710d943b8aa71fd8feb8efa4d0a", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-039.jpg)\n- 展望\n- 科技的发展并不天然带来社会进步,关键在于如何调整生产关系以匹配生产力的变革。这一点在AI时代尤为重要。人工智能的快速发展已经改变了人类与劳动的关系,越来越多的传统岗位被AI取代,如何重新分配财富、如何确保人类不被边缘化,将决定科技是否能真正为全人类服务。如果生产关系的调整无法跟上生产力的发展,科技的红利将主要被少数资本掌控,社会贫富分化加剧,甚", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:023", + "course_id": "marxist_basic_principles", + "query": "学习科技发展与社会变革:生产力与生产关系视角时哪些概念容易混淆?,见第22页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s22:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 22, + "text_sha256": "f603ce73b8c7eff5f566618312812609cd40e1aabef783b558a1f8167341559c", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-041.jpg)\n- THANKS", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:024", + "course_id": "marxist_basic_principles", + "query": "考试会怎么考演讲观点?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-001:h-演讲观点:c01", + "exists": true, + "source_id": "marxist-basic-principles-001", + "source_title": "演讲观点", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a2bbfb031b579f96e60c8b3737033dc8039db8935582869345825c695aa3f2ec", + "text_excerpt": "三个引述关系:\n\n理论必须适应于实际\n\n过去\n\n现在\n\n不远的将来\n\n1,3,5,6:生产力的进步\n\n2,4,7,8:生产关系的重塑\n\n我们思考一下,金融 量子 生物科技 社会政策 如果只从生产力生产关系角度去思考,会不会难以解释其跳脱性呢?\n\n这个环,只是从各个大方向选取了部分,究竟是如何联系的呢?\n\n我认为\n\n生产力与生产关系的互动并非简单线性,而是通过社会结构(文化、教育、阶层等)形成多层次、多向度的动态网络。其中,社会结构既是生产关系变革的结果,也是新生产关系形成的条", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:025", + "course_id": "marxist_basic_principles", + "query": "科技发展与社会变革:生产力与生产关系视角主要讲什么?,见第1页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s1:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 1, + "text_sha256": "8add5c8b184613fb87a40ccdd6ee2a2981d6f8ca9adee6d29ce5aad2ac07046c", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-001.jpg)\n- 科技发展与社会变革:生产力与生产关系视角\n- 汇报:于博宇\n- 资料收集:于淑怡 杨浩然\n- PPT制作:姚泽文", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:026", + "course_id": "marxist_basic_principles", + "query": "我想先复习科技发展与社会变革:生产力与生产关系视角,应该从哪里开始?,见第2页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s2:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 2, + "text_sha256": "f290b3515b923cc3b6d0a1d64dfe884868844a41a0b3a21a1ecace0bb204caf6", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-002.jpg)\n- content\n- 目录\n- 01\n- 引言:科技发展与人类社会的变革\n- 02\n- 教材理论解析\n- 03\n- 典型案例分析:自动驾驶引发的社会变革\n- 04\n- 总结与展望", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:027", + "course_id": "marxist_basic_principles", + "query": "复习科技发展与社会变革:生产力与生产关系视角时哪些内容最重要?,见第3页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s3:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 3, + "text_sha256": "159bbd62f9cfe95321c8eb0687d7499e10700e479ee6db5a340bed41312c8b3c", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-003.jpg)\n- 引言:科技发展与人类社会的变革\n- 01", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:028", + "course_id": "marxist_basic_principles", + "query": "科技发展与社会变革:生产力与生产关系视角里的方法或结论怎么理解?,见第4页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s4:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 4, + "text_sha256": "2b8a9d46459e88cd109dadfff7d9286618e225bf5da7419051037f459bfb08f2", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-004.jpg)\n- 经典引述\n![image](assets/marxist-basic-principles-002/image-005.png)\n- 马克思的洞见\n- 马克思在《哲学的贫困》(1847年)中提出:“手推磨产生的是封建主的社会,蒸汽磨产生的是工业资本家的社会。”(原文:“The windmill gives you society with the feu", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:029", + "course_id": "marxist_basic_principles", + "query": "学习科技发展与社会变革:生产力与生产关系视角时哪些概念容易混淆?,见第5页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s5:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 5, + "text_sha256": "e025b1ce3be3099741ccdbaeab52dc09a80098942a5bd6817fbeeeef36bbaf93", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-008.jpg)\n- 当代科技图景\n![image](assets/marxist-basic-principles-002/image-009.png)\n- 产业规模突破\n- 人工智能产业规模已突破5000亿美元,对全球经济产生深远影响。\n- 全球经济重塑\n- 随着AI技术的发展,全球经济格局正在被重新塑造,新兴市场不断涌现。\n- 量子计算进展\n- IBM推出的1121量子", + "flags": [] + } + ] + }, + { + "legacy_id": "marxist_basic_principles:030", + "course_id": "marxist_basic_principles", + "query": "考试会怎么考科技发展与社会变革:生产力与生产关系视角?,见第6页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "marxist-basic-principles-002:s6:c01", + "exists": true, + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "locator_type": "slide", + "locator_start": 6, + "text_sha256": "08d034522805fac7f360861785a59fc78c7275ae3a48d3f7e72df26e9359b233", + "text_excerpt": "![image](assets/marxist-basic-principles-002/image-010.jpg)\n- 教材理论解析:生产力与生产关系矛盾运动规律原理\n- 02", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "mathematical_modeling:001", + "course_id": "mathematical_modeling", + "query": "数模大全主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p1:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "901e1dd667e1f55a1fa151b060a001521bc124b9680171822bbddb3c676eecf4", + "text_excerpt": "目录\n第一章 线性规划\n第二章 整数规划\n第三章 非线性规划\n第四章 动态规划\n第五章 图与网络模型及方法\n第六章 排队论模型\n第七章 对策论\n第八章 层次分析法\n第九章 插值与拟合\n第十章 数据的统计描述和分析\n第十一章 方差分析\n第十二章 回归分析\n第十三章 微分方程建模\n第十四章 稳定状态模型\n第十五章 常微分方程的解法\n第十六章 差分方程模型\n第十七章 马氏链模", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:002", + "course_id": "mathematical_modeling", + "query": "我想先复习数模大全,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p2:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "ac4def71fbfcbbfdf478bc053a10df3462c396d7bfdda947d96ff5a8e4064b99", + "text_excerpt": "第一章 线性规划\n§1 线性规划\n\n在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济\n效益的问题。此类问题构成了运筹学的一个重要分支—数学规划,而线性规划(Linear\nProgramming 简记LP)则是数学规划的一个重要分支。自从1947 年G. B. Dantzig 提出\n求解线性规划的单纯形方法以来,线性规划在理论上趋向成熟,在实用中日益广泛与深\n入。特别是在计算机能处理成千上万个约束条件和决策变量的线性规划问题之后,线性\n规划的适用领域", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:003", + "course_id": "mathematical_modeling", + "query": "复习数模大全时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p3:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "f685252b0d36ee36a9df54bf532f3ac99ae3231de356604f7f258ac220ea68dc", + "text_excerpt": "例如线性规划\n\nT\n≥\ns.t.\nmax\n\nb\nAx\nx\nc\nx\n\n的Matlab 标准型为\n\nT\n−\n≤\n−\n−\ns.t.\nmin\n\nb\nAx\nx\nc\nx\n\n1.3 线性规划问题的解的概念\n一般线性规划问题的(数学)标准型为\n\nn\n\n∑\n\n=\n=\n\n1\nmax\n (3)\n\nj\nj x\nc\nz\n\nj\n\n⎧\n\nn\n\n=\n=\n∑\n\nm\ni\nb\nx\na\n\n,\n,2,1\n\nL\n\n⎪⎨\n\ni\nj\nij\n\n", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:004", + "course_id": "mathematical_modeling", + "query": "数模大全里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p4:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "74e3ac8da39f36a3c7af429323cc358373358f717a20b7a0fa3506f629ef7a65", + "text_excerpt": "(3)若线性规划存在有限最优解,则必可找到具有最优目标函数值的可行域R 的\n“顶点”。\n\n上述论断可以推广到一般的线性规划问题,区别只在于空间的维数。在一般的n 维\n\nn\n\n空间中,满足一线性等式∑\n\n=\n\ni\ni\nb\nx\na\n\n1\n的点集被称为一个超平面,而满足一线性不等式\n\n=\n\ni\n\nn\n\nn\n\n∑\n\n1\n(或∑\n\n≤\n\n≥\n\ni\ni\nb\nx\na\n\n1\n)的点集被称为一个半空间(其中\n)\n,\n,\n(\n1\nn\na\na L\n为一n 维行\n\ni\ni\nb\nx\na\n\n=\n\n=\n\n", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:005", + "course_id": "mathematical_modeling", + "query": "学习数模大全时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p4:c02", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "c73dd9938460dca7b9986e6d374f7ce8ca10ad52d2f53f5cffba5e1f82739e64", + "text_excerpt": "s.t.\n7\n3\n2\n1\n=\n+\n+\nx\nx\nx\n\n10\n5\n2\n3\n2\n1\n≥\n+\n−\nx\nx\nx\n\n12\n3\n3\n2\n1\n≤\n+\n+\nx\nx\nx\n\n0\n,\n,\n3\n2\n1\n≥\nx\nx\nx\n\n-3-", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "mathematical_modeling:006", + "course_id": "mathematical_modeling", + "query": "考试会怎么考数模大全?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p5:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "52be516e283913f9b17f1df6f1bc50c29503d2f185ee18ceeb2d3ccebe68bd00", + "text_excerpt": "解 (i)编写M 文件\nc=[2;3;-5];\na=[-2,5,-1;1,3,1]; b=[-10;12];\naeq=[1,1,1];\nbeq=7;\nx=linprog(-c,a,b,aeq,beq,zeros(3,1))\nvalue=c'*x\n\n(ii)将M文件存盘,并命名为example1.m。\n(iii)在Matlab指令窗运行example1即可得所求结果。\n例3 求解线性规划问题\n\n3\n2\n1\n3\n2\nmin\nx\nx\nx\nz\n+\n+\n=\n\n≥\n+\n+\n\n⎧\n\nx\nx", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:007", + "course_id": "mathematical_modeling", + "query": "数模大全主要讲什么?,见第6页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p6:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "3d84a3c9b4efcac84e9851578c5168cffe6f584871f483afade4c35c0bbc60c5", + "text_excerpt": "0\nmin\nx\n\n0\n0\n1\n1\n,\n,\n t.\ns.\nx\ny\nx\nx\ny\nx\nn\nn\n≤\n−\n≤\n−\nL\n\n此即我们通常的线性规划问题。\n§2 运输问题(产销平衡)\n\n例6 某商品有m 个产地、n 个销地,各产地的产量分别为\nm\na\na\n,\n,\n1 L\n,各销地的\n\n需求量分别为\nnb\nb\n,\n,\n1 L\n。若该商品由i 产地运到j 销地的单位运价为\nijc ,问应该如何调\n\n运才能使总运费最省?\n\n解:引入变量\nijx ,其取值为由i 产地运往j 销地的该商品数量,数", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:008", + "course_id": "mathematical_modeling", + "query": "我想先复习数模大全,应该从哪里开始?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p7:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 7, + "text_sha256": "c239f0726e93982ed76ce151962523f8d16ccf9a65008aef796bc7057ebdf8ab", + "text_excerpt": "n\n\n∑\n\n=\n\n1\n1\n\nijx\n\n=\n\ni\n\n1\n 0或\n=\nijx\n\n上述指派问题的可行解可以用一个矩阵表示,其每行每列均有且只有一个元素为\n1,其余元素均为0;可以用\nn\n,\n,1 L\n中的一个置换表示。\n问题中的变量只能取0 或1,从而是一个0-1 规划问题。一般的0-1 规划问题求解\n极为困难。但指派问题并不难解,其约束方程组的系数矩阵十分特殊(被称为全单位模\n矩阵,其各阶非零子式均为\n1\n±\n),其非负可行解的分量只能取0 或1,故约束\n1\n0或\n=\nijx\n\n", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:009", + "course_id": "mathematical_modeling", + "query": "复习数模大全时哪些内容最重要?,见第8页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p8:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 8, + "text_sha256": "366ddbbd41f0f24e719ca1fc19e2c4262dc0ae9fb1e48434c93c4d390c17736c", + "text_excerpt": "⎡\n\n⎤\n\n6\n10\n7\n10\n4\n10\n6\n6\n14\n15\n12\n14\n12\n17\n7\n6\n6\n6\n9\n8\n9\n7\n9\n7\n12\n\n⎢\n⎢\n⎢\n⎢\n⎢\n⎢\n\n⎥\n⎥\n⎥\n⎥\n⎥\n⎥\n\n=\n\nC\n\n⎣\n\n⎦\n\n解:先作等价变换如下\n\n−\n−\n\n⎡\n\n⎤\n\n⎡\n\n⎤\n\n6\n7\n\n6\n6\n6\n9\n8\n9\n7\n9\n7\n12\n\n0\n*\n0\n0\n3\n2\n2\n0\n2\n*\n0\n5\n\n⎢\n⎢\n⎢\n⎢\n⎢\n⎢\n\n⎥\n⎥\n⎥\n⎥\n⎥\n⎥\n\n⎢\n⎢\n⎢\n⎢\n⎢\n⎢\n\n⎥\n⎥\n⎥\n⎥\n⎥\n⎥\n\n→\n", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:010", + "course_id": "mathematical_modeling", + "query": "数模大全里的方法或结论怎么理解?,见第9页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p9:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 9, + "text_sha256": "6857697971fd25b033de124f4fc9b293c0486fa87d094d5886347600f46dd240", + "text_excerpt": "称(P)为原始问题,(D)为它的对偶问题。\n\n不太严谨地说,对偶问题可被看作是原始问题的“行列转置”:\n(1) 原始问题中的第j 列系数与其对偶问题中的第j 行的系数相同;\n(2) 原始目标函数的各个系数行与其对偶问题右侧的各常数列相同;\n(3) 原始问题右侧的各常数列与其对偶目标函数的各个系数行相同;\n(4) 在这一对问题中,不等式方向和优化方向相反。\n考虑线性规划:\n\n0\n,\ns.t.\nmin\n≥\n=\nx\nb\nAx\nx\ncT\n把其中的等式约束变成不等式约束,可得\n\n⎤\n⎢", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:011", + "course_id": "mathematical_modeling", + "query": "学习数模大全时哪些概念容易混淆?,见第10页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p10:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 10, + "text_sha256": "b803f73f74dd13241f21e4510bbb8a4ec587ac78578fc046215e4122182dcfe8", + "text_excerpt": "3\n3\n2\n5\n4\n3\n2\n1\n≥\n+\n+\n+\n−\nx\nx\nx\nx\nx\n\n5,\n,2,1\n,0\nL\n=\n≥\nj\nx j\n\n已知其对偶问题的最优解为\n5\n;\n5\n3\n,\n5\n4\n*\n2\n*\n1\n=\n=\n=\nz\ny\ny\n。试用对偶理论找出原问题的最优\n\n解。\n\n解 先写出它的对偶问题\n2\n1\n3\n4\nmax\ny\ny\nz\n+\n=\n\n2\n2\n2\n1\n≤\n+\ny\ny\n ①\n\n3\n2\n1\n≤\n−y\ny\n ", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:012", + "course_id": "mathematical_modeling", + "query": "考试会怎么考数模大全?,见第10页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p10:c02", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 10, + "text_sha256": "53233cf06b8409fd49ec0bfeb3d8d7c8b1a201d90cc3ea5620d9932f7371e0ee", + "text_excerpt": "作一个时期的投资。这n 种资产在这一时期内购买\nis 的平均收益率为ir ,风险损失率为\n\niq ,投资越分散,总的风险越少,总体风险可用投资的\nis 中最大的一个风险来度量。\n\n-9-", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:013", + "course_id": "mathematical_modeling", + "query": "数模大全主要讲什么?,见第11页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p11:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 11, + "text_sha256": "4c798442fa236453685a771f265254bd4aaf736bb5c5a34e522c6a130a2b343d", + "text_excerpt": "购买\nis 时要付交易费,(费率\nip ),当购买额不超过给定值\niu 时,交易费按购买\niu\n\n计算。另外,假定同期银行存款利率是0r ,既无交易费又无风险。(\n%\n5\n0 =\nr\n)\n\n已知\n4\n=\nn\n时相关数据如表1。\n\n表1\n\nis\nir (%)\niq\nip (%)\niu (元)\n\n1s\n28\n2.5\n1\n103\n\n2s\n21\n1.5\n2\n198\n\n3s\n23\n5.5\n4.5\n52\n\n4s\n25\n2.6\n6.5\n40\n试给该公司设计一种投资组合方案,即用给定资金M ", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:014", + "course_id": "mathematical_modeling", + "query": "我想先复习数模大全,应该从哪里开始?,见第12页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p12:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 12, + "text_sha256": "8a28ac716a60e0bb6c2b9e32e4eafe1b17552f752edf29bdfc683d6946b4d434", + "text_excerpt": "目标函数为\n\n⎧\n−\n∑\n\nn\n\n)\n(\nmax\n\nx\np\nr\n\n⎪⎨\n\ni\ni\ni\n\n=\n\ni\n\n0\n\n⎪⎩\n\n}\nmax{\nmin\n\nx\nq\n\ni\ni\n\n约束条件为\n\n⎧\n\nn\n\n=\n+\n∑\n\n)\n1(\n\nM\nx\np\n\n⎪⎨\n\ni\ni\n\n=\n\n0\nL\n\ni\n\n⎪⎩\n\n=\n≥\n\nn\ni\nx\n\n,\n,1,0\n,0\n\ni\n\n4. 模型简化\na) 在实际投资中,投资者承受风险的程度不一样,若给定风险一个界限a ,使最\n\nx\nq\ni\ni\n≤\n,可找到相应的投资方案。这样把多目标规划", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:015", + "course_id": "mathematical_modeling", + "query": "复习数模大全时哪些内容最重要?,见第13页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p13:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 13, + "text_sha256": "e5e2b1ace0345fe2be1480f717f1fad34873c3c413597deeea20e8a7db676b4d", + "text_excerpt": "=\n+\n+\n+\n+\n\n⎧\n\nx\nx\nx\nx\nx\n\n1\n065\n.1\n045\n.1\n02\n.1\n01\n.1\n\n4\n3\n2\n1\n0\n\n⎪⎪\n⎪\n⎪\n\n≤\n\n025\n.0\n\na\nx\n\n1\n\n≤\n\n015\n.0\n\na\nx\n\n2\n\n⎨\n\ns.t.\n\n≤\n\n055\n.0\n\na\nx\n\n⎪⎪\n⎪\n⎪\n\n3\n\n≤\n\n026\n.0\n\na\nx\n\n4\n\n=\n≥\n\nL\ni\nx\n\n)\n4,\n,1,0\n(\n0\n\n⎩\n\ni\n\n由于a 是任意给定的风险度,到底怎样没有一个准则,不同的投资者有不同的风险\n度。我", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:016", + "course_id": "mathematical_modeling", + "query": "数模大全里的方法或结论怎么理解?,见第14页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p14:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 14, + "text_sha256": "010d985ff26e022814edb6f2401b28061b9079fb45d01ed1e6ef47eeb8ff8ce7", + "text_excerpt": "n\n\n∑\n\n=\n=\n\n1\n|\n|\nmax\n\nj\nj\nx\nc\nz\n\nj\n\n⎧\n=\n=\n∑\n\nn\n\n1\n)\n,\n,2,1\n(\nst.\n\nm\ni\nb\nx\na\n\nL\n\n⎪⎨\n\ni\nj\nij\n\n=\n\nj\n\n⎪⎩\n\nx\n\n取值无约束\nj\n\n3.线性回归是一种常用的数理统计方法,这个方法要求对图上的一系列点\n)\n,\n(,\n),\n,\n(\n),\n,\n(\n2\n2\n1\n1\nn\nn y\nx\ny\nx\ny\nx\nL\n选配一条合适的直线拟合。方法通常是先定直线方程为\nbx\na\ny\n+\n=\n,然后按某种准则求", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:017", + "course_id": "mathematical_modeling", + "query": "学习数模大全时哪些概念容易混淆?,见第15页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p15:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 15, + "text_sha256": "04e84a535225c3c2bfa9e33007bf8e0ff60f1d1cc83e2d2ad2bcb1ba9ef4ba42", + "text_excerpt": "6.某战略轰炸机群奉命摧毁敌人军事目标。已知该目标有四个要害部位,只要摧\n毁其中之一即可达到目的。为完成此项任务的汽油消耗量限制为48000 升、重型炸弹\n48 枚、轻型炸弹32 枚。飞机携带重型炸弹时每升汽油可飞行2 千米,带轻型炸弹时每\n升汽油可飞行3 千米。又知每架飞机每次只能装载一枚炸弹,每出发轰炸一次除来回路\n程汽油消耗(空载时每升汽油可飞行4 千米)外,起飞和降落每次各消耗100 升。有关\n数据如表4 所示。\n\n表4\n\n摧毁可能性\n要害部位\n离机场距离\n\n(千米)", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:018", + "course_id": "mathematical_modeling", + "query": "考试会怎么考数模大全?,见第15页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p15:c02", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 15, + "text_sha256": "a991b69fa070cf97713aff9efc1ddd52df80c9be6e3a1771d2f1d19d6680b8a6", + "text_excerpt": "货物1 18 480 3100\n货物2 15 650 3800\n货物3 23 580 3500\n货物4 12 390 ", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:019", + "course_id": "mathematical_modeling", + "query": "数模大全主要讲什么?,见第16页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p16:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 16, + "text_sha256": "7ac62d38093cea6c7de67587c3a32403fe8c218f449e491287efbf7010939106", + "text_excerpt": "假设:\n\n(1)每种货物可以无限细分;\n(2)每种货物可以分布在一个或者多个货舱内;\n(3)不同的货物可以放在同一个货舱内,并且可以保证不留空隙。\n问应如何装运,使货机飞行利润最大?\n\n-15-", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:020", + "course_id": "mathematical_modeling", + "query": "我想先复习数模大全,应该从哪里开始?,见第17页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p17:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 17, + "text_sha256": "4a1bf6bc81a86dc4bf0e34dedc5ac7d24ce09b404312ba0aa04893149c62ba45", + "text_excerpt": "第二章 整数规划\n§1 概论\n\n1.1 定义\n规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中,\n变量限制为整数,则称为整数线性规划。目前所流行的求解整数规划的方法,往往只适\n用于整数线性规划。目前还没有一种方法能有效地求解一切整数规划。\n\n1.2 整数规划的分类\n如不加特殊说明,一般指整数线性规划。对于整数线性规划模型大致可分为两类:\n1o 变量全限制为整数时,称纯(完全)整数规划。\n2o 变量部分限制为整数的,称混合整数规划。\n1.2 ", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:021", + "course_id": "mathematical_modeling", + "query": "复习数模大全时哪些内容最重要?,见第18页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p18:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 18, + "text_sha256": "c1ac67eb301d9555cc6271fcaf4423f8c775c46b05b92b39db96eea9b9c04e25", + "text_excerpt": "这样,许多子集可不予考虑,这称剪枝。这就是分枝定界法的主要思路。\n\n分枝定界法可用于解纯整数或混合的整数规划问题。在本世纪六十年代初由Land\nDoig 和Dakin 等人提出的。由于这方法灵活且便于用计算机求解,所以现在它已是解\n整数规划的重要方法。目前已成功地应用于求解生产进度问题、旅行推销员问题、工厂\n选址问题、背包问题及分配问题等。\n\n设有最大化的整数规划问题A ,与它相应的线性规划为问题B ,从解问题B 开始,\n\n若其最优解不符合A 的整数条件,那么B 的最优目标函", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:022", + "course_id": "mathematical_modeling", + "query": "数模大全里的方法或结论怎么理解?,见第18页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p18:c02", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 18, + "text_sha256": "954231411b507efbc3fe105422b1e717213aaccbb25565835fc2e5563ef1586f", + "text_excerpt": "再定界:\n349\n0\n* ≤\n≤z\n。\n(iii)对问题\n1\nB 再进行分枝得问题\n11\nB 和\n12\nB\n,它们的最优解为\n\n-17-", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:023", + "course_id": "mathematical_modeling", + "query": "学习数模大全时哪些概念容易混淆?,见第19页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p19:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 19, + "text_sha256": "45dd90a377500b5d674761d40bb8796c2027eef183d4de234dc16c6ff7f8bf51", + "text_excerpt": "340\n,2\n,4\n:\n11\n2\n1\n11\n=\n=\n=\nz\nx\nx\nB\n\n327.14\n,\n00\n.3\nx\n1.43,\n:\n12\n2\n1\n12\n=\n=\n=\nz\nx\nB\n\n再定界:\n341\n340\n* ≤\n≤z\n,并将\n12\nB\n剪枝。\n\n(iv)对问题\n2\nB 再进行分枝得问题\n21\nB\n和\n22\nB\n,它们的最优解为\n08\n3\n,\n00\n.1\nx\n5.44,\n:\n22\n2\n1\n21\n=\n=\n=\nz\nx\nB\n\n22\nB\n无可行解。\n\n将\n22\n21,B\nB\n剪枝。\n于是可以断", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:024", + "course_id": "mathematical_modeling", + "query": "考试会怎么考数模大全?,见第20页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p20:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 20, + "text_sha256": "4ad5041afa4ef917f30b20d1a513fd020203a3e15a7016ba6ebe091a091ad3c4", + "text_excerpt": "所代替,是和一般整数规划的约束条件形式一致的。在实际问题中,如果引入\n1\n0 −\n变\n量,就可以把有各种情况需要分别讨论的线性规划问题统一在一个问题中讨论了。我们\n先介绍引入\n1\n0 −\n变量的实际问题,再研究解法。\n3.1 引入\n1\n0 −\n变量的实际问题\n 3.1.1 投资场所的选定——相互排斥的计划\n 例4 某公司拟在市东、西、南三区建立门市部。拟议中有7 个位置(点)\n\n)\n7,\n,2,1\n(\nL\n=\ni\nAi\n可供选择。规定\n\n在东区。由\n3\n2\n1", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:025", + "course_id": "mathematical_modeling", + "query": "数模大全主要讲什么?,见第21页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p21:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 21, + "text_sha256": "404256be1954ea033d046519dd46676fa413a538e757a045f687511435842013", + "text_excerpt": "如果有m 个互相排斥的约束条件:\n\nm\ni\nb\nx\na\nx\na\ni\nn\nin\ni\n,\n,2,1\n1\n1\nL\nL\n=\n≤\n+\n+\n\n为了保证这m 个约束条件只有一个起作用,我们引入m 个\n1\n0 −\n变量\n)\n,\n,2,1\n(\nm\ni\nyi\nL\n=\n\n和一个充分大的常数M ,而下面这一组\n1\n+\nm\n个约束条件\nm\ni\nM\ny\nb\nx\na\nx\na\ni\ni\nn\nin\ni\n,\n,2,1\n1\n1\nL\nL\n=\n+\n≤\n+\n+\n (1)\n1\n", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:026", + "course_id": "mathematical_modeling", + "query": "我想先复习数模大全,应该从哪里开始?,见第21页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p21:c02", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 21, + "text_sha256": "8ec4f2043b678bc9cf77f29ed889c67ff33537321e7dc72b54f976610c5c0d8a", + "text_excerpt": "其中ε 是一个充分小的正常数,M 是个充分大的正常数。(4)式说明,当\n0\n>\njx\n时\njy\n\n必须为1;当\n0\n=\njx\n时只有\njy 为0 时才有意义,所以(4)式完全可以代替(3)式。\n\n3.2\n1\n0 −型整数规划解法之一(过滤隐枚举法)\n解\n1\n0 −型整数规划最容易想到的方法,和一般整数规划的情形一样,就是穷举法,\n即检查变量取值为0 或1 的每一种组合,比较目标函数值以求得最优解,这就需要检查\n\n变量取值的\nn\n2 个组合。对于变量个数n 较大(例如\n100\n", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:027", + "course_id": "mathematical_modeling", + "query": "复习数模大全时哪些内容最重要?,见第22页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p22:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 22, + "text_sha256": "10c516def38903445b11f57015d7aa38eb52a9f4cf17fc09ff291c7b54bd69a9", + "text_excerpt": "有些问题隐枚举法并不适用,所以有时穷举法还是必要的。\n\n下面举例说明一种解\n1\n0 −型整数规划的隐枚举法。\n 例6\n3\n2\n1\n5\n2\n3\nMax\nx\nx\nx\nz\n+\n−\n=\n\n≤\n−\n+\n\n⎧\n\nx\nx\nx\n\n2\n2\n\n3\n2\n1\n\n⎪⎪\n⎪\n\n≤\n+\n+\n\nx\nx\nx\n\n4\n4\n\n3\n2\n1\n\n≤\n+\n\nx\nx\n\n3\n\n⎨\n\n2\n1\n\n⎪\n⎪\n⎪\n\n≤\n+\n\n6\n4\n\nx\nx\n\n3\n2\n\n=\n\n或\nx\nx\nx\n\n1\n0\n,\n,\n\n⎩\n\n3\n2\n1\n\n求解思路及改进措施:", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:028", + "course_id": "mathematical_modeling", + "query": "数模大全里的方法或结论怎么理解?,见第22页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p22:c02", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 22, + "text_sha256": "333e05636ae4b25a622bc23d23a14b21966d17da0781189a1c74629ea55bb5f0", + "text_excerpt": "下面就分析随机取样采集\n6\n10 个点计算时,应用概率理论来估计一下可信度。\n不失一般性,假定一个整数规划的最优点不是孤立的奇点。\n\n假设目标函数落在高值区的概率分别为0.01,0.00001,则当计算\n6\n10 个点后,有\n\n-21-", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:029", + "course_id": "mathematical_modeling", + "query": "学习数模大全时哪些概念容易混淆?,见第23页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p23:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 23, + "text_sha256": "1e7bc1e9f82b7de6190fe4593983800f651473dbb69d522b7dff930b3c2103b0", + "text_excerpt": "任一个点能落在高值区的概率分别为\n\n多位)\n100\n(\n99\n99\n.0\n99\n.0\n1\n1000000\nL\n≈\n−\n,\n999954602\n.0\n99999\n.0\n1\n1000000 ≈\n−\n。\n解 (i)首先编写M 文件mente.m 定义目标函数f 和约束向量函数g,程序如下:\nfunction [f,g]=mengte(x);\nf=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)-8*x(1)-2*x(2)-3*x(3)-...\nx(4)", + "flags": [] + } + ] + }, + { + "legacy_id": "mathematical_modeling:030", + "course_id": "mathematical_modeling", + "query": "考试会怎么考数模大全?,见第24页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mathematical-modeling-001:p24:c01", + "exists": true, + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "locator_type": "page", + "locator_start": 24, + "text_sha256": "f9ab9f9695a400cc788ff2c7f4d42173313cccabec8afdd8cbb3fd8532366873", + "text_excerpt": "0 0 1 1 5;\nb=400,800,200,200;\nenddata\nmax=@sum(col:c1*x^2+c2*x);\n@for(row(i):@sum(col(j):a(i,j)*x(j)) 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-002:p1:c01", + "exists": true, + "source_id": "mobile-application-development-002", + "source_title": "Android 应用开发课程大作业及报告要求2026春季", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "144e2014fef48a421eb56c00bb406b01a36075e1f5ec6d51755ad5e3f1f6f983", + "text_excerpt": "移动应用开发(Android )课程大作业及报告要求\n\n教师:张晶\n\n一、设计要求\n\n1、大作业以小组为单位进行开发,可单人成组。\n\n2、大作业开发主题可从如下几项目中选择:\n\n1) (有基础代码,基础功能完成难度较小,高分不易)从本课程的五个项目 GeoQuiz /NewsApp /\n\nSunflower /CriminalIntent /HandwrittenRecognition 中选择一个作为大作业的基础进行开发。\n\n要求从零开始实现,并对项目的功能或界面做改造。例如", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:002", + "course_id": "mobile_application_development", + "query": "我想先复习Android 应用开发课程大作业及报告要求2026春季,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-002:p2:c01", + "exists": true, + "source_id": "mobile-application-development-002", + "source_title": "Android 应用开发课程大作业及报告要求2026春季", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "da634f11130676fbac556240eea640191b802b5e13948ab8a85e75fe1d921bf6", + "text_excerpt": "三、项目设计报告内容要求:\n\n1、请下载大作业报告模板 doc 文件,按模板格式撰写报告\n\n2、请说明 app 的功能、架构、主要界面、所采用的技术、设计和实现中的亮点\n\n3、使用截屏展示运行效果;\n\n4、对 app 的优缺点进行分析及改进思路的展望;\n\n5、报告最后一部分请说明组内每位同学在大作业设计过程中的工作内容;\n\n6、其它任何想解释的内容。\n\n四、大作业及报告的成绩评定:\n\n1、APP 能正常运行,可得到 45 分;\n\n2、如使用 ROOM 和 Repository", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:003", + "course_id": "mobile_application_development", + "query": "复习课程设计要求及报告模板时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-003:h-课程设计要求及报告模板:c01", + "exists": true, + "source_id": "mobile-application-development-003", + "source_title": "课程设计要求及报告模板", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a8a454b7b6ff0040553a82565e4e6f517bac67151ac5c952f738e97509a24e9c", + "text_excerpt": "**移动应用开发(Android** **)课程大作业及报告要求**\n\n教师:张晶\n\n一、目的\n\n本课程培养综合性 Android 手机移动应用设计和开发能力以及小组成员的协作开发能力。\n\n二、设计要求\n\n1 、大作业以小组为单位进行开发,可单人成组。\n\n2 、大作业开发主题可从如下几项目中选择:\n\n1) (有基础代码,基础功能完成难度较小 ,高分不易)从本课程的五个项目 GeoQuiz /NewsApp / Sunflower /CriminalIntent /Handwri", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:004", + "course_id": "mobile_application_development", + "query": "课程设计要求及报告模板里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-003:h-课程设计要求及报告模板:c02", + "exists": true, + "source_id": "mobile-application-development-003", + "source_title": "课程设计要求及报告模板", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "b6a9b9ab66af00a6dd59c5d38ed6a7755eb7dee719b9fdd1a6743fc7ce7c3913", + "text_excerpt": "四、项目设计报告内容要求:\n\n1、请下载大作业报告模板 doc 文件,按模板格式撰写报告\n\n2、请说明 app 的功能、架构、主要界面、所采用的技术、设计和实现中的亮点\n\n3、使用截屏展示运行效果;\n\n4、对 app 的优缺点进行分析及改进思路的展望;\n\n5、报告最后一部分请说明组内每位同学在大作业设计过程中的工作内容;\n\n6、其它任何想解释的内容。\n\n五、大作业及报告的成绩评定:\n\n1 、APP 能正常运行,可得到 45 分;\n\n2、如使用 ROOM 和 Re", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:005", + "course_id": "mobile_application_development", + "query": "学习课程设计要求及报告模板时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-003:h-课程设计要求及报告模板:c03", + "exists": true, + "source_id": "mobile-application-development-003", + "source_title": "课程设计要求及报告模板", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "3da60a1639c87fd6c7d70f00f9ac39505b542f55d155073b9b56ea3c918e37b4", + "text_excerpt": "**课程设计报告格式说明:**\n1. 请按照以上内容的要求撰写;正文部分两端对齐,首行缩进2字符;左右缩进0字符;行距按上文要求,段前、段后为0行。\n1. 所有的图须有图号和图名,放在图的下方,居中对齐。如:图1 模拟计费系统用例图。\n1. 所有的表格须有表号和表名,放在表的上方,居中对齐。如:表1 计费功能测试数据和预期结果。\n1. 所有公式编号,用括号括起来写在右边行末,其间不加虚线。\n1. 图纸要求:图面整洁,布局合理,线条粗细均匀,圆弧连接光滑,尺寸标注规范,文字", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:006", + "course_id": "mobile_application_development", + "query": "考试会怎么考考试会怎么考考试会怎么考考试会怎么考考试会怎么考考试会怎么考第6个知识点??????", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-004:h-移动应用开发:c01", + "exists": true, + "source_id": "mobile-application-development-004", + "source_title": "移动应用开发", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "64ac74768f058698990ea7956a60dd84b52e9070984af57021bb255cd3ebefa1", + "text_excerpt": "华南理工大学\n\n《移动应用开发 - Android》课程实验报告\n\n实验题目:\n\n指导教师:\n\n| 实验概述 |\n|---|\n| 【实验目的及要求】
本次任务综合性较强,且需要阅读文献,难度较大。
实验目的:
熟悉Service的使用;
熟悉第三方SDK的使用;
综合性APP的设计与开发。
实验要求:
鼓励使用AI工具完成代码开发,或者使用AI工具辅助编程。鼓励讨论及小组合作。
鼓励参考开源代码,但不允许直接将下载的开源代码作为", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:007", + "course_id": "mobile_application_development", + "query": "实验3案例主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-005:p1:c01", + "exists": true, + "source_id": "mobile-application-development-005", + "source_title": "实验3案例", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "eb39df1f5a240649ea3bafdcb2126b3091640cdcdbbb4de354c6d1fa6627b219", + "text_excerpt": "华南理工大学\n《移动应用开发 - Android》课程实验3案例\u0001\n\n1. NewsAPP 新闻列表应用\n一个简易版的新闻应用,要求兼容手机和平板用于展示新闻。在平板和手机上展示\n的效果分别如下图所示。\n本案例的示例代码简单,只涉及列表显示、详情显示。数据库操作部分需自行设计\n并实现。\n\n![image](assets/mobile-application-development-005/image-001.png)\n\n![image](assets/mobile-appli", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:008", + "course_id": "mobile_application_development", + "query": "我想先复习实验3案例,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-005:p2:c01", + "exists": true, + "source_id": "mobile-application-development-005", + "source_title": "实验3案例", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "d42965237113efdabd8788bc7ac56eb89912dcbff87314f7c5907216cb064a6b", + "text_excerpt": "2. CriminalIntent APP\n\n功能:用于“办公室吐槽”的随手记,记录队友们一些令人厌烦的行为,比如:把脏\n盘子放在休息室里、打印完文件后不加纸就离开公用打印机等等。\nCriminalIntent APP 中记录的内容包括行为名称(标题)、日期、详情和照片等。\n用户还可以从其联系方法中识别出这人是谁,并通过电子邮件或其他方式通知。\nCriminalIntent APP 的用户界面是如下图所示的列表:主屏幕显示所有记录,用户\n可以添加新的行为,也可以选中某现有的行", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:009", + "course_id": "mobile_application_development", + "query": "复习实验3案例时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-005:p3:c01", + "exists": true, + "source_id": "mobile-application-development-005", + "source_title": "实验3案例", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "0f2d1cc952f4ef785dd816aee39ccce3f0779fedbe4d17452a4a910d020d914f", + "text_excerpt": "3. Sunflower APP\n功能:展示花园的植物\n用户界面的主屏幕显示所有植物,用户可以选中某植物,查看其详细信息。也可以\n选中植物,放入自己的花园。\n本案例的示例代码涉及数据库、⽹络数据获取、第三⽅API等内容,易错。有兴趣\n的同学可参考,本实验中只需要实现列表显示、详情显示、数据库操作部分。\n\n![image](assets/mobile-application-development-005/image-004.png)", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:010", + "course_id": "mobile_application_development", + "query": "第10个知识点里的方法或结论怎么理解?里的方法或结论怎么理解?里的方法或结论怎么理解?里的方法或结论怎么理解?里的方法或结论怎么理解?里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-006:h-移动应用开发:c01", + "exists": true, + "source_id": "mobile-application-development-006", + "source_title": "移动应用开发", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "50732e4780e4d579951be9154149771375f832dcc29a0320ef6eeb77ba268b10", + "text_excerpt": "华南理工大学\n\n《移动应用开发 - Android》课程实验报告\n\n实验题目:\n\n指导教师:\n\n| 实验概述 |\n|---|\n| 【实验目的及要求】
任务:
要求:
【实验环境】
操作系统:Windows XP 或 其它 |\n| 实验内容 |\n| 1. APP的功能设计及其实现技术:
2. Screenshots: |\n| 小结(此栏目阐述对实验所开发的APP 在应用方面的反馈,回顾总结在开发过程中遇到的问题和经验,但不限于此) |\n| |", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:011", + "course_id": "mobile_application_development", + "query": "学习GeoQuiz V时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-007:p1:c01", + "exists": true, + "source_id": "mobile-application-development-007", + "source_title": "GeoQuiz V", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "66a1a86580458d44a29b9677f8cf216baa52c00af1ad99c7615fee6acd8590e6", + "text_excerpt": "GeoQuiz\n\nGeoQuiz consists of one Activity (MainActivity) and a layout(activity_main.xml):\n\nMainActivity will manage the user interface, or UI, shown in Figure 1.1.\n\nA layout defines a set of UI objects and the objects’ positions on the scre", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:012", + "course_id": "mobile_application_development", + "query": "考试会怎么考GeoQuiz V?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-007:p2:c01", + "exists": true, + "source_id": "mobile-application-development-007", + "source_title": "GeoQuiz V", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "aa08f57bad6bb18df506b61cb3c15815d9846fdbf93db63e2d8006eff321f954", + "text_excerpt": "2.\nClick Finish. Android Studio will create and open your new project.\n\n3.\nClick the tab for the layout file, activity_main.xml -> Open the file. ->\nUse the Design or Code tab.\n\nBy convention, a layout file is named based on the activity it", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:013", + "course_id": "mobile_application_development", + "query": "GeoQuiz V主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-007:p2:c02", + "exists": true, + "source_id": "mobile-application-development-007", + "source_title": "GeoQuiz V", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "e7fd8be0b7ab7039b8344c885465d66cd6c59a51ee628e480e36ab15f975648c", + "text_excerpt": "Edit the text contents of activity_main.xml to define these widgets in your\nlayout XML. Each element has a set of XML attributes. Each attribute is an\ninstruction about how the widget should be configured.\n\nWIDGET ATTRIBUTES\n\nandroid:layout", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:014", + "course_id": "mobile_application_development", + "query": "我想先复习GeoQuiz V,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-007:p3:c01", + "exists": true, + "source_id": "mobile-application-development-007", + "source_title": "GeoQuiz V", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "63fac2546e1a13b24f2dce0a0646e8dd23e406195744be101621d215340bac7c", + "text_excerpt": "Every project includes a default strings file named res/values/strings.xml.\n\nOpen res/values/strings.xml. The template has already added one string\nresource for you. Add the three new strings that your layout requires.\n\n\n 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-007:p3:c02", + "exists": true, + "source_id": "mobile-application-development-007", + "source_title": "GeoQuiz V", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "0230f5e91fe9b3e3aa61aabce14a9a1de1276339f5c5d7bebf1ed180d141ea4b", + "text_excerpt": "In addition to previewing, you can also build your layouts using the palette\nthat contains all of the built-in widgets in the layout editor. You can drag\nthese widgets from the palette and drop them into your view. The\ngraphical editor espe", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:016", + "course_id": "mobile_application_development", + "query": "GeoQuiz V里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-007:p4:c01", + "exists": true, + "source_id": "mobile-application-development-007", + "source_title": "GeoQuiz V", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "6cf4ab7eab730f75033093932e03f714dfb47b768182e0d17131c12d2da5528c", + "text_excerpt": "layout/. Your strings file, which contains string resources, lives in res/\nvalues/.\n\nNot every widget needs a resource ID. In GeoQuiz, you will only interact\nwith the two buttons in code, so only they need resource IDs.\n\nNotice that there i", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:017", + "course_id": "mobile_application_development", + "query": "学习GeoQuiz V时哪些概念容易混淆?,见第4页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-007:p4:c02", + "exists": true, + "source_id": "mobile-application-development-007", + "source_title": "GeoQuiz V", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "6c1ccc17f553559d974248f03af10b9aa6610e40710a28a524461d39f47fb583", + "text_excerpt": "You are going to have a press of each button trigger a pop-up message\ncalled a toast. A toast is a short message that informs the user of something\nbut does not require any input or action. You are going to make toasts that\nannounce whether", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:018", + "course_id": "mobile_application_development", + "query": "考试会怎么考GeoQuiz V?,见第5页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-007:p5:c01", + "exists": true, + "source_id": "mobile-application-development-007", + "source_title": "GeoQuiz V", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "f79ddfc868cb78ee79a25bd14e0e6b76b112ae41a8c77db0510adc8dac3483ec", + "text_excerpt": "Next, update your click listeners to create and show a toast.\n\noverride fun onCreate(savedInstanceState: Bundle?) { ...\ntrueButton.setOnClickListener { view: View ->\n// Do something in response to the click here\nToast.makeText( this, R.stri", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:019", + "course_id": "mobile_application_development", + "query": "GeoQuiz V主要讲什么?,见第5页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-007:p5:c02", + "exists": true, + "source_id": "mobile-application-development-007", + "source_title": "GeoQuiz V", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "979cfd71780a03616e54719e11370fbcbea6f8a094f4e5426511e9dc9b03ff7f", + "text_excerpt": "Once you have an AVD, you can run GeoQuiz on it. From the Android\nStudio toolbar, click the run button. Android Studio will start your virtual\ndevice, install the application package on it, and run the app.", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:020", + "course_id": "mobile_application_development", + "query": "我想先复习Exp 1 1 2026,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-008:p1:c01", + "exists": true, + "source_id": "mobile-application-development-008", + "source_title": "Exp_1_1_2026", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "1bd7fbf85a2f90fb833c523ff7706f29f052efe7a157554f33361f46b015ed17", + "text_excerpt": "移动应⽤开发(Android)\n\n实验1-1\n\nzhjing@scut.edu.cn\n教案及提交作业:lms.scutnc.cn\n\n![image](assets/mobile-application-development-008/image-001.jpeg)\n\n![image](assets/mobile-application-development-008/image-002.png)", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:021", + "course_id": "mobile_application_development", + "query": "复习Exp 1 1 2026时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-008:p2:c01", + "exists": true, + "source_id": "mobile-application-development-008", + "source_title": "Exp_1_1_2026", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "980c1264228e8dfc4e605c0aa2fcd448b820fb44fe10b68469b876a3986d8afb", + "text_excerpt": "⽬标\n\n• 1. 创建 Android 开发环境\n\n• 2. 了解并熟悉启动 Activity\n\n• 3. 了解基本的 UI 元素使⽤\n\n![image](assets/mobile-application-development-008/image-003.jpeg)", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:022", + "course_id": "mobile_application_development", + "query": "Exp 1 1 2026里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-008:p3:c01", + "exists": true, + "source_id": "mobile-application-development-008", + "source_title": "Exp_1_1_2026", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "2c5bde4af6eda6d77d59bb8320b5441b6c9236dc2dba20860663f067afc00d66", + "text_excerpt": "任务\n\n• 1. 创建 Android 开发环境\n\n• 运⾏第1个 HelloWorld App (不⽤写⼊实验报告)\n\n• 在模拟器或者真机上运⾏,确定开发环境安装正常\n\n• 2. 三选一实验:\n\n• 实现案例 GeoQuiz App,增加⾳乐播放功能,运⾏\n\n• 实现本教案中的 “WriteNumberGame” ,运⾏\n\n• 运⾏ Android 某官⽅案例,并分析其结构\n\n![image](assets/mobile-application-development", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:023", + "course_id": "mobile_application_development", + "query": "学习Exp 1 1 2026时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-008:p4:c01", + "exists": true, + "source_id": "mobile-application-development-008", + "source_title": "Exp_1_1_2026", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "3f62cc9aff13c5aa615737f24be357c4a9ee28aef92c3612ec4dd4642891db24", + "text_excerpt": "1. Android 开发环境\n\n![image](assets/mobile-application-development-008/image-005.jpeg)\n\n![image](assets/mobile-application-development-008/image-006.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "mobile_application_development:024", + "course_id": "mobile_application_development", + "query": "考试会怎么考Exp 1 1 2026?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-008:p5:c01", + "exists": true, + "source_id": "mobile-application-development-008", + "source_title": "Exp_1_1_2026", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "4f63ec7d708c6c24f8950dbc8abfb8c32e2c3eec14cd6fddef15a0c762434fef", + "text_excerpt": "Android 开发环境\n\ndeveloper.android.com\n\n• 1. JDK, Android SDK\n\n• java —version\n\n• 2. IDE: Android Studio\n\n• developer.android.google.cn\n\n• 3. 创建并运⾏ HelloWorld App\n\n![image](assets/mobile-application-development-008/image-007.jpeg)", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:025", + "course_id": "mobile_application_development", + "query": "Exp 1 1 2026主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-008:p6:c01", + "exists": true, + "source_id": "mobile-application-development-008", + "source_title": "Exp_1_1_2026", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "1a99b6e339f9c918f4a947945515a7fbd777dfc37a6de0921ee6a24389ddb58d", + "text_excerpt": "Project WriteNumberGame\n\n![image](assets/mobile-application-development-008/image-008.jpeg)\n\n![image](assets/mobile-application-development-008/image-009.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "mobile_application_development:026", + "course_id": "mobile_application_development", + "query": "我想先复习Exp 1 1 2026,应该从哪里开始?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-008:p7:c01", + "exists": true, + "source_id": "mobile-application-development-008", + "source_title": "Exp_1_1_2026", + "locator_type": "page", + "locator_start": 7, + "text_sha256": "67c30c8bb748a75ff5febcc80e2037f92ee263f4edc5f8c120a42aa4cb872470", + "text_excerpt": "Project WriteNumberGame\n\n•\n步骤 1: 使⽤ Empty Activity 模板创\n\n建 WriteNumberGame 项⽬\n\n•\n步骤 2:设计启动界⾯\n\n•\n5秒后,跳转到主界⾯\n\n来⾃<>\n\n![image](assets/mobile-application-development-008/image-010.jpeg)\n\n![image](assets/mobile-application-develop", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:027", + "course_id": "mobile_application_development", + "query": "复习Exp 1 1 2026时哪些内容最重要?,见第8页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-008:p8:c01", + "exists": true, + "source_id": "mobile-application-development-008", + "source_title": "Exp_1_1_2026", + "locator_type": "page", + "locator_start": 8, + "text_sha256": "7a56562d21d0585538d4f680cfcb8ea7b3d82f059172744abf10804432f5fd99", + "text_excerpt": "步骤 2: Launch to the Start Activity\n\n• 1. 导⼊必需资源(resources).\n\n• 2. 修改 layout.\n\n• 3. 使 activity 全屏.\n\n![image](assets/mobile-application-development-008/image-013.jpeg)\n\n![image](assets/mobile-application-development-008/image-014.png)", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:028", + "course_id": "mobile_application_development", + "query": "Exp 1 1 2026里的方法或结论怎么理解?,见第9页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-008:p9:c01", + "exists": true, + "source_id": "mobile-application-development-008", + "source_title": "Exp_1_1_2026", + "locator_type": "page", + "locator_start": 9, + "text_sha256": "f6d90184958781c79d9f1c354ff442db3bf600e2742a788caa3eaba1e1275c28", + "text_excerpt": "1. 导⼊资源(resources)\n\n• 如果有较多图⽚,则创建新⽬录:\n(resource directory)\n\n• copy+paste\n\n![image](assets/mobile-application-development-008/image-015.jpeg)\n\n![image](assets/mobile-application-development-008/image-016.png)", + "flags": [] + } + ] + }, + { + "legacy_id": "mobile_application_development:029", + "course_id": "mobile_application_development", + "query": "学习Exp 1 1 2026时哪些概念容易混淆?,见第10页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-008:p10:c01", + "exists": true, + "source_id": "mobile-application-development-008", + "source_title": "Exp_1_1_2026", + "locator_type": "page", + "locator_start": 10, + "text_sha256": "fb385fc8c2e7f7ae98411e55e3cc5cc578569a13c1ec99bf0b2f8c1bb3c6423d", + "text_excerpt": "1. 导⼊资源(resources)\n\n• drawable ⽬录⾥的⽂件:\n\n• xml\n\n• png\n\n• jpg…\n\nplay_btn.xml,⽂件中的btn_play*.png 在⽬录res/mipmap下\n\n\n\n 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "mobile-application-development-008:p11:c01", + "exists": true, + "source_id": "mobile-application-development-008", + "source_title": "Exp_1_1_2026", + "locator_type": "page", + "locator_start": 11, + "text_sha256": "9a22198c121ffec04b1218d779d9992441b733ddddc93612d1a062a2380e5657", + "text_excerpt": "2. 修改 layout\n\n• activity_main.xml\n\n• background etc.\n\n• 在模拟器上运⾏项⽬\n\n• LinearLayout\n\n![image](assets/mobile-application-development-008/image-019.jpeg)\n\n![image](assets/mobile-application-development-008/image-020.png)", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:001", + "course_id": "network_application_architecture", + "query": "复习指南主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p1:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "93278d77e1061b8a62d3fbbe8d851dfada4c0932cb74678ce9a91179ce8a9df5", + "text_excerpt": "《网络应用开发》复习指南\n\n考试安排\n\n日期:2026年1月12日(星期一)\n\n时间:9:00 ~ 11:00\n\n地点:A1-201, A1-202\n\n期末试卷的说明\n\n四道大题\n\n单项选择题 (10道单选)\n\n填空题 (5个)\n\n简答题 (4~5道)\n\n编程题\n\n注意事项\n\n试卷分为试题卷(4页)和答题卷(6页);\n\n请把答案写在答题卷上,试卷上的答题无效;\n\n考试前公布座位号,因此一定要在试题卷以及答题卷的相应位置填写自己的姓名,学号,专业班级,座位号。\n\n试题特点\n\n侧", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:002", + "course_id": "network_application_architecture", + "query": "我想先复习复习指南,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p2:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "97de09e1eefb656f292d0aed700b31dcd9210c3235419c2b29cb4687e5aabb3d", + "text_excerpt": "Servlet 的生命周期\n\nFilter 过滤器\n\nListener 监听器\n\nJSP\n\nJSP 基本概念\n\nJSP 的语法\n\nJSP 的执行过程\n\n与Servlet 的区别\n\nJSP 指令\n\nJSP 的内置对象\n\nJSP 动作\n\nJSP 隐含对象\n\ninclude 与forward\n\nEL 和 JSTL\n\nJavaBean 的基本概念\n\nEL 的基本概念,标识符,保留字,变量,常量,运算符\n\nJSTL 的基本概念,标签\n\nJDBC\n\nJDBC 的基本概念\n\nJDBC 的常", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:003", + "course_id": "network_application_architecture", + "query": "复习复习指南时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p1:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "93278d77e1061b8a62d3fbbe8d851dfada4c0932cb74678ce9a91179ce8a9df5", + "text_excerpt": "《网络应用开发》复习指南\n\n考试安排\n\n日期:2026年1月12日(星期一)\n\n时间:9:00 ~ 11:00\n\n地点:A1-201, A1-202\n\n期末试卷的说明\n\n四道大题\n\n单项选择题 (10道单选)\n\n填空题 (5个)\n\n简答题 (4~5道)\n\n编程题\n\n注意事项\n\n试卷分为试题卷(4页)和答题卷(6页);\n\n请把答案写在答题卷上,试卷上的答题无效;\n\n考试前公布座位号,因此一定要在试题卷以及答题卷的相应位置填写自己的姓名,学号,专业班级,座位号。\n\n试题特点\n\n侧", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:004", + "course_id": "network_application_architecture", + "query": "复习指南里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p2:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "97de09e1eefb656f292d0aed700b31dcd9210c3235419c2b29cb4687e5aabb3d", + "text_excerpt": "Servlet 的生命周期\n\nFilter 过滤器\n\nListener 监听器\n\nJSP\n\nJSP 基本概念\n\nJSP 的语法\n\nJSP 的执行过程\n\n与Servlet 的区别\n\nJSP 指令\n\nJSP 的内置对象\n\nJSP 动作\n\nJSP 隐含对象\n\ninclude 与forward\n\nEL 和 JSTL\n\nJavaBean 的基本概念\n\nEL 的基本概念,标识符,保留字,变量,常量,运算符\n\nJSTL 的基本概念,标签\n\nJDBC\n\nJDBC 的基本概念\n\nJDBC 的常", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:005", + "course_id": "network_application_architecture", + "query": "学习复习指南时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p1:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "93278d77e1061b8a62d3fbbe8d851dfada4c0932cb74678ce9a91179ce8a9df5", + "text_excerpt": "《网络应用开发》复习指南\n\n考试安排\n\n日期:2026年1月12日(星期一)\n\n时间:9:00 ~ 11:00\n\n地点:A1-201, A1-202\n\n期末试卷的说明\n\n四道大题\n\n单项选择题 (10道单选)\n\n填空题 (5个)\n\n简答题 (4~5道)\n\n编程题\n\n注意事项\n\n试卷分为试题卷(4页)和答题卷(6页);\n\n请把答案写在答题卷上,试卷上的答题无效;\n\n考试前公布座位号,因此一定要在试题卷以及答题卷的相应位置填写自己的姓名,学号,专业班级,座位号。\n\n试题特点\n\n侧", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:006", + "course_id": "network_application_architecture", + "query": "考试会怎么考复习指南?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p2:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "97de09e1eefb656f292d0aed700b31dcd9210c3235419c2b29cb4687e5aabb3d", + "text_excerpt": "Servlet 的生命周期\n\nFilter 过滤器\n\nListener 监听器\n\nJSP\n\nJSP 基本概念\n\nJSP 的语法\n\nJSP 的执行过程\n\n与Servlet 的区别\n\nJSP 指令\n\nJSP 的内置对象\n\nJSP 动作\n\nJSP 隐含对象\n\ninclude 与forward\n\nEL 和 JSTL\n\nJavaBean 的基本概念\n\nEL 的基本概念,标识符,保留字,变量,常量,运算符\n\nJSTL 的基本概念,标签\n\nJDBC\n\nJDBC 的基本概念\n\nJDBC 的常", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:007", + "course_id": "network_application_architecture", + "query": "复习指南主要讲什么?,见第1页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p1:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "93278d77e1061b8a62d3fbbe8d851dfada4c0932cb74678ce9a91179ce8a9df5", + "text_excerpt": "《网络应用开发》复习指南\n\n考试安排\n\n日期:2026年1月12日(星期一)\n\n时间:9:00 ~ 11:00\n\n地点:A1-201, A1-202\n\n期末试卷的说明\n\n四道大题\n\n单项选择题 (10道单选)\n\n填空题 (5个)\n\n简答题 (4~5道)\n\n编程题\n\n注意事项\n\n试卷分为试题卷(4页)和答题卷(6页);\n\n请把答案写在答题卷上,试卷上的答题无效;\n\n考试前公布座位号,因此一定要在试题卷以及答题卷的相应位置填写自己的姓名,学号,专业班级,座位号。\n\n试题特点\n\n侧", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:008", + "course_id": "network_application_architecture", + "query": "我想先复习复习指南,应该从哪里开始?,见第2页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p2:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "97de09e1eefb656f292d0aed700b31dcd9210c3235419c2b29cb4687e5aabb3d", + "text_excerpt": "Servlet 的生命周期\n\nFilter 过滤器\n\nListener 监听器\n\nJSP\n\nJSP 基本概念\n\nJSP 的语法\n\nJSP 的执行过程\n\n与Servlet 的区别\n\nJSP 指令\n\nJSP 的内置对象\n\nJSP 动作\n\nJSP 隐含对象\n\ninclude 与forward\n\nEL 和 JSTL\n\nJavaBean 的基本概念\n\nEL 的基本概念,标识符,保留字,变量,常量,运算符\n\nJSTL 的基本概念,标签\n\nJDBC\n\nJDBC 的基本概念\n\nJDBC 的常", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:009", + "course_id": "network_application_architecture", + "query": "复习复习指南时哪些内容最重要?,见第1页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p1:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "93278d77e1061b8a62d3fbbe8d851dfada4c0932cb74678ce9a91179ce8a9df5", + "text_excerpt": "《网络应用开发》复习指南\n\n考试安排\n\n日期:2026年1月12日(星期一)\n\n时间:9:00 ~ 11:00\n\n地点:A1-201, A1-202\n\n期末试卷的说明\n\n四道大题\n\n单项选择题 (10道单选)\n\n填空题 (5个)\n\n简答题 (4~5道)\n\n编程题\n\n注意事项\n\n试卷分为试题卷(4页)和答题卷(6页);\n\n请把答案写在答题卷上,试卷上的答题无效;\n\n考试前公布座位号,因此一定要在试题卷以及答题卷的相应位置填写自己的姓名,学号,专业班级,座位号。\n\n试题特点\n\n侧", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:010", + "course_id": "network_application_architecture", + "query": "复习指南里的方法或结论怎么理解?,见第2页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p2:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "97de09e1eefb656f292d0aed700b31dcd9210c3235419c2b29cb4687e5aabb3d", + "text_excerpt": "Servlet 的生命周期\n\nFilter 过滤器\n\nListener 监听器\n\nJSP\n\nJSP 基本概念\n\nJSP 的语法\n\nJSP 的执行过程\n\n与Servlet 的区别\n\nJSP 指令\n\nJSP 的内置对象\n\nJSP 动作\n\nJSP 隐含对象\n\ninclude 与forward\n\nEL 和 JSTL\n\nJavaBean 的基本概念\n\nEL 的基本概念,标识符,保留字,变量,常量,运算符\n\nJSTL 的基本概念,标签\n\nJDBC\n\nJDBC 的基本概念\n\nJDBC 的常", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:011", + "course_id": "network_application_architecture", + "query": "学习复习指南时哪些概念容易混淆?,见第1页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p1:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "93278d77e1061b8a62d3fbbe8d851dfada4c0932cb74678ce9a91179ce8a9df5", + "text_excerpt": "《网络应用开发》复习指南\n\n考试安排\n\n日期:2026年1月12日(星期一)\n\n时间:9:00 ~ 11:00\n\n地点:A1-201, A1-202\n\n期末试卷的说明\n\n四道大题\n\n单项选择题 (10道单选)\n\n填空题 (5个)\n\n简答题 (4~5道)\n\n编程题\n\n注意事项\n\n试卷分为试题卷(4页)和答题卷(6页);\n\n请把答案写在答题卷上,试卷上的答题无效;\n\n考试前公布座位号,因此一定要在试题卷以及答题卷的相应位置填写自己的姓名,学号,专业班级,座位号。\n\n试题特点\n\n侧", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:012", + "course_id": "network_application_architecture", + "query": "考试会怎么考复习指南?,见第2页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p2:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "97de09e1eefb656f292d0aed700b31dcd9210c3235419c2b29cb4687e5aabb3d", + "text_excerpt": "Servlet 的生命周期\n\nFilter 过滤器\n\nListener 监听器\n\nJSP\n\nJSP 基本概念\n\nJSP 的语法\n\nJSP 的执行过程\n\n与Servlet 的区别\n\nJSP 指令\n\nJSP 的内置对象\n\nJSP 动作\n\nJSP 隐含对象\n\ninclude 与forward\n\nEL 和 JSTL\n\nJavaBean 的基本概念\n\nEL 的基本概念,标识符,保留字,变量,常量,运算符\n\nJSTL 的基本概念,标签\n\nJDBC\n\nJDBC 的基本概念\n\nJDBC 的常", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:013", + "course_id": "network_application_architecture", + "query": "复习指南主要讲什么?,第13条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p1:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "93278d77e1061b8a62d3fbbe8d851dfada4c0932cb74678ce9a91179ce8a9df5", + "text_excerpt": "《网络应用开发》复习指南\n\n考试安排\n\n日期:2026年1月12日(星期一)\n\n时间:9:00 ~ 11:00\n\n地点:A1-201, A1-202\n\n期末试卷的说明\n\n四道大题\n\n单项选择题 (10道单选)\n\n填空题 (5个)\n\n简答题 (4~5道)\n\n编程题\n\n注意事项\n\n试卷分为试题卷(4页)和答题卷(6页);\n\n请把答案写在答题卷上,试卷上的答题无效;\n\n考试前公布座位号,因此一定要在试题卷以及答题卷的相应位置填写自己的姓名,学号,专业班级,座位号。\n\n试题特点\n\n侧", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:014", + "course_id": "network_application_architecture", + "query": "我想先复习复习指南,应该从哪里开始?,第14条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p2:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "97de09e1eefb656f292d0aed700b31dcd9210c3235419c2b29cb4687e5aabb3d", + "text_excerpt": "Servlet 的生命周期\n\nFilter 过滤器\n\nListener 监听器\n\nJSP\n\nJSP 基本概念\n\nJSP 的语法\n\nJSP 的执行过程\n\n与Servlet 的区别\n\nJSP 指令\n\nJSP 的内置对象\n\nJSP 动作\n\nJSP 隐含对象\n\ninclude 与forward\n\nEL 和 JSTL\n\nJavaBean 的基本概念\n\nEL 的基本概念,标识符,保留字,变量,常量,运算符\n\nJSTL 的基本概念,标签\n\nJDBC\n\nJDBC 的基本概念\n\nJDBC 的常", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:015", + "course_id": "network_application_architecture", + "query": "复习复习指南时哪些内容最重要?,第15条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p1:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "93278d77e1061b8a62d3fbbe8d851dfada4c0932cb74678ce9a91179ce8a9df5", + "text_excerpt": "《网络应用开发》复习指南\n\n考试安排\n\n日期:2026年1月12日(星期一)\n\n时间:9:00 ~ 11:00\n\n地点:A1-201, A1-202\n\n期末试卷的说明\n\n四道大题\n\n单项选择题 (10道单选)\n\n填空题 (5个)\n\n简答题 (4~5道)\n\n编程题\n\n注意事项\n\n试卷分为试题卷(4页)和答题卷(6页);\n\n请把答案写在答题卷上,试卷上的答题无效;\n\n考试前公布座位号,因此一定要在试题卷以及答题卷的相应位置填写自己的姓名,学号,专业班级,座位号。\n\n试题特点\n\n侧", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:016", + "course_id": "network_application_architecture", + "query": "复习指南里的方法或结论怎么理解?,第16条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p2:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "97de09e1eefb656f292d0aed700b31dcd9210c3235419c2b29cb4687e5aabb3d", + "text_excerpt": "Servlet 的生命周期\n\nFilter 过滤器\n\nListener 监听器\n\nJSP\n\nJSP 基本概念\n\nJSP 的语法\n\nJSP 的执行过程\n\n与Servlet 的区别\n\nJSP 指令\n\nJSP 的内置对象\n\nJSP 动作\n\nJSP 隐含对象\n\ninclude 与forward\n\nEL 和 JSTL\n\nJavaBean 的基本概念\n\nEL 的基本概念,标识符,保留字,变量,常量,运算符\n\nJSTL 的基本概念,标签\n\nJDBC\n\nJDBC 的基本概念\n\nJDBC 的常", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:017", + "course_id": "network_application_architecture", + "query": "学习复习指南时哪些概念容易混淆?,第17条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p1:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "93278d77e1061b8a62d3fbbe8d851dfada4c0932cb74678ce9a91179ce8a9df5", + "text_excerpt": "《网络应用开发》复习指南\n\n考试安排\n\n日期:2026年1月12日(星期一)\n\n时间:9:00 ~ 11:00\n\n地点:A1-201, A1-202\n\n期末试卷的说明\n\n四道大题\n\n单项选择题 (10道单选)\n\n填空题 (5个)\n\n简答题 (4~5道)\n\n编程题\n\n注意事项\n\n试卷分为试题卷(4页)和答题卷(6页);\n\n请把答案写在答题卷上,试卷上的答题无效;\n\n考试前公布座位号,因此一定要在试题卷以及答题卷的相应位置填写自己的姓名,学号,专业班级,座位号。\n\n试题特点\n\n侧", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:018", + "course_id": "network_application_architecture", + "query": "考试会怎么考复习指南?,第18条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p2:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "97de09e1eefb656f292d0aed700b31dcd9210c3235419c2b29cb4687e5aabb3d", + "text_excerpt": "Servlet 的生命周期\n\nFilter 过滤器\n\nListener 监听器\n\nJSP\n\nJSP 基本概念\n\nJSP 的语法\n\nJSP 的执行过程\n\n与Servlet 的区别\n\nJSP 指令\n\nJSP 的内置对象\n\nJSP 动作\n\nJSP 隐含对象\n\ninclude 与forward\n\nEL 和 JSTL\n\nJavaBean 的基本概念\n\nEL 的基本概念,标识符,保留字,变量,常量,运算符\n\nJSTL 的基本概念,标签\n\nJDBC\n\nJDBC 的基本概念\n\nJDBC 的常", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:019", + "course_id": "network_application_architecture", + "query": "复习指南主要讲什么?,第19条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p1:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "93278d77e1061b8a62d3fbbe8d851dfada4c0932cb74678ce9a91179ce8a9df5", + "text_excerpt": "《网络应用开发》复习指南\n\n考试安排\n\n日期:2026年1月12日(星期一)\n\n时间:9:00 ~ 11:00\n\n地点:A1-201, A1-202\n\n期末试卷的说明\n\n四道大题\n\n单项选择题 (10道单选)\n\n填空题 (5个)\n\n简答题 (4~5道)\n\n编程题\n\n注意事项\n\n试卷分为试题卷(4页)和答题卷(6页);\n\n请把答案写在答题卷上,试卷上的答题无效;\n\n考试前公布座位号,因此一定要在试题卷以及答题卷的相应位置填写自己的姓名,学号,专业班级,座位号。\n\n试题特点\n\n侧", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:020", + "course_id": "network_application_architecture", + "query": "我想先复习复习指南,应该从哪里开始?,第20条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p2:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "97de09e1eefb656f292d0aed700b31dcd9210c3235419c2b29cb4687e5aabb3d", + "text_excerpt": "Servlet 的生命周期\n\nFilter 过滤器\n\nListener 监听器\n\nJSP\n\nJSP 基本概念\n\nJSP 的语法\n\nJSP 的执行过程\n\n与Servlet 的区别\n\nJSP 指令\n\nJSP 的内置对象\n\nJSP 动作\n\nJSP 隐含对象\n\ninclude 与forward\n\nEL 和 JSTL\n\nJavaBean 的基本概念\n\nEL 的基本概念,标识符,保留字,变量,常量,运算符\n\nJSTL 的基本概念,标签\n\nJDBC\n\nJDBC 的基本概念\n\nJDBC 的常", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:021", + "course_id": "network_application_architecture", + "query": "复习复习指南时哪些内容最重要?,第21条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p1:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "93278d77e1061b8a62d3fbbe8d851dfada4c0932cb74678ce9a91179ce8a9df5", + "text_excerpt": "《网络应用开发》复习指南\n\n考试安排\n\n日期:2026年1月12日(星期一)\n\n时间:9:00 ~ 11:00\n\n地点:A1-201, A1-202\n\n期末试卷的说明\n\n四道大题\n\n单项选择题 (10道单选)\n\n填空题 (5个)\n\n简答题 (4~5道)\n\n编程题\n\n注意事项\n\n试卷分为试题卷(4页)和答题卷(6页);\n\n请把答案写在答题卷上,试卷上的答题无效;\n\n考试前公布座位号,因此一定要在试题卷以及答题卷的相应位置填写自己的姓名,学号,专业班级,座位号。\n\n试题特点\n\n侧", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:022", + "course_id": "network_application_architecture", + "query": "复习指南里的方法或结论怎么理解?,第22条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p2:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "97de09e1eefb656f292d0aed700b31dcd9210c3235419c2b29cb4687e5aabb3d", + "text_excerpt": "Servlet 的生命周期\n\nFilter 过滤器\n\nListener 监听器\n\nJSP\n\nJSP 基本概念\n\nJSP 的语法\n\nJSP 的执行过程\n\n与Servlet 的区别\n\nJSP 指令\n\nJSP 的内置对象\n\nJSP 动作\n\nJSP 隐含对象\n\ninclude 与forward\n\nEL 和 JSTL\n\nJavaBean 的基本概念\n\nEL 的基本概念,标识符,保留字,变量,常量,运算符\n\nJSTL 的基本概念,标签\n\nJDBC\n\nJDBC 的基本概念\n\nJDBC 的常", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:023", + "course_id": "network_application_architecture", + "query": "学习复习指南时哪些概念容易混淆?,第23条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p1:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "93278d77e1061b8a62d3fbbe8d851dfada4c0932cb74678ce9a91179ce8a9df5", + "text_excerpt": "《网络应用开发》复习指南\n\n考试安排\n\n日期:2026年1月12日(星期一)\n\n时间:9:00 ~ 11:00\n\n地点:A1-201, A1-202\n\n期末试卷的说明\n\n四道大题\n\n单项选择题 (10道单选)\n\n填空题 (5个)\n\n简答题 (4~5道)\n\n编程题\n\n注意事项\n\n试卷分为试题卷(4页)和答题卷(6页);\n\n请把答案写在答题卷上,试卷上的答题无效;\n\n考试前公布座位号,因此一定要在试题卷以及答题卷的相应位置填写自己的姓名,学号,专业班级,座位号。\n\n试题特点\n\n侧", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:024", + "course_id": "network_application_architecture", + "query": "考试会怎么考复习指南?,第24条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p2:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "97de09e1eefb656f292d0aed700b31dcd9210c3235419c2b29cb4687e5aabb3d", + "text_excerpt": "Servlet 的生命周期\n\nFilter 过滤器\n\nListener 监听器\n\nJSP\n\nJSP 基本概念\n\nJSP 的语法\n\nJSP 的执行过程\n\n与Servlet 的区别\n\nJSP 指令\n\nJSP 的内置对象\n\nJSP 动作\n\nJSP 隐含对象\n\ninclude 与forward\n\nEL 和 JSTL\n\nJavaBean 的基本概念\n\nEL 的基本概念,标识符,保留字,变量,常量,运算符\n\nJSTL 的基本概念,标签\n\nJDBC\n\nJDBC 的基本概念\n\nJDBC 的常", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:025", + "course_id": "network_application_architecture", + "query": "复习指南主要讲什么?,第25条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p1:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "93278d77e1061b8a62d3fbbe8d851dfada4c0932cb74678ce9a91179ce8a9df5", + "text_excerpt": "《网络应用开发》复习指南\n\n考试安排\n\n日期:2026年1月12日(星期一)\n\n时间:9:00 ~ 11:00\n\n地点:A1-201, A1-202\n\n期末试卷的说明\n\n四道大题\n\n单项选择题 (10道单选)\n\n填空题 (5个)\n\n简答题 (4~5道)\n\n编程题\n\n注意事项\n\n试卷分为试题卷(4页)和答题卷(6页);\n\n请把答案写在答题卷上,试卷上的答题无效;\n\n考试前公布座位号,因此一定要在试题卷以及答题卷的相应位置填写自己的姓名,学号,专业班级,座位号。\n\n试题特点\n\n侧", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:026", + "course_id": "network_application_architecture", + "query": "我想先复习复习指南,应该从哪里开始?,第26条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p2:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "97de09e1eefb656f292d0aed700b31dcd9210c3235419c2b29cb4687e5aabb3d", + "text_excerpt": "Servlet 的生命周期\n\nFilter 过滤器\n\nListener 监听器\n\nJSP\n\nJSP 基本概念\n\nJSP 的语法\n\nJSP 的执行过程\n\n与Servlet 的区别\n\nJSP 指令\n\nJSP 的内置对象\n\nJSP 动作\n\nJSP 隐含对象\n\ninclude 与forward\n\nEL 和 JSTL\n\nJavaBean 的基本概念\n\nEL 的基本概念,标识符,保留字,变量,常量,运算符\n\nJSTL 的基本概念,标签\n\nJDBC\n\nJDBC 的基本概念\n\nJDBC 的常", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:027", + "course_id": "network_application_architecture", + "query": "复习复习指南时哪些内容最重要?,第27条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p1:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "93278d77e1061b8a62d3fbbe8d851dfada4c0932cb74678ce9a91179ce8a9df5", + "text_excerpt": "《网络应用开发》复习指南\n\n考试安排\n\n日期:2026年1月12日(星期一)\n\n时间:9:00 ~ 11:00\n\n地点:A1-201, A1-202\n\n期末试卷的说明\n\n四道大题\n\n单项选择题 (10道单选)\n\n填空题 (5个)\n\n简答题 (4~5道)\n\n编程题\n\n注意事项\n\n试卷分为试题卷(4页)和答题卷(6页);\n\n请把答案写在答题卷上,试卷上的答题无效;\n\n考试前公布座位号,因此一定要在试题卷以及答题卷的相应位置填写自己的姓名,学号,专业班级,座位号。\n\n试题特点\n\n侧", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:028", + "course_id": "network_application_architecture", + "query": "复习指南里的方法或结论怎么理解?,第28条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p2:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "97de09e1eefb656f292d0aed700b31dcd9210c3235419c2b29cb4687e5aabb3d", + "text_excerpt": "Servlet 的生命周期\n\nFilter 过滤器\n\nListener 监听器\n\nJSP\n\nJSP 基本概念\n\nJSP 的语法\n\nJSP 的执行过程\n\n与Servlet 的区别\n\nJSP 指令\n\nJSP 的内置对象\n\nJSP 动作\n\nJSP 隐含对象\n\ninclude 与forward\n\nEL 和 JSTL\n\nJavaBean 的基本概念\n\nEL 的基本概念,标识符,保留字,变量,常量,运算符\n\nJSTL 的基本概念,标签\n\nJDBC\n\nJDBC 的基本概念\n\nJDBC 的常", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:029", + "course_id": "network_application_architecture", + "query": "学习复习指南时哪些概念容易混淆?,第29条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p1:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "93278d77e1061b8a62d3fbbe8d851dfada4c0932cb74678ce9a91179ce8a9df5", + "text_excerpt": "《网络应用开发》复习指南\n\n考试安排\n\n日期:2026年1月12日(星期一)\n\n时间:9:00 ~ 11:00\n\n地点:A1-201, A1-202\n\n期末试卷的说明\n\n四道大题\n\n单项选择题 (10道单选)\n\n填空题 (5个)\n\n简答题 (4~5道)\n\n编程题\n\n注意事项\n\n试卷分为试题卷(4页)和答题卷(6页);\n\n请把答案写在答题卷上,试卷上的答题无效;\n\n考试前公布座位号,因此一定要在试题卷以及答题卷的相应位置填写自己的姓名,学号,专业班级,座位号。\n\n试题特点\n\n侧", + "flags": [] + } + ] + }, + { + "legacy_id": "network_application_architecture:030", + "course_id": "network_application_architecture", + "query": "考试会怎么考复习指南?,第30条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-application-architecture-001:p2:c01", + "exists": true, + "source_id": "network-application-architecture-001", + "source_title": "《网络应用开发》复习指南", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "97de09e1eefb656f292d0aed700b31dcd9210c3235419c2b29cb4687e5aabb3d", + "text_excerpt": "Servlet 的生命周期\n\nFilter 过滤器\n\nListener 监听器\n\nJSP\n\nJSP 基本概念\n\nJSP 的语法\n\nJSP 的执行过程\n\n与Servlet 的区别\n\nJSP 指令\n\nJSP 的内置对象\n\nJSP 动作\n\nJSP 隐含对象\n\ninclude 与forward\n\nEL 和 JSTL\n\nJavaBean 的基本概念\n\nEL 的基本概念,标识符,保留字,变量,常量,运算符\n\nJSTL 的基本概念,标签\n\nJDBC\n\nJDBC 的基本概念\n\nJDBC 的常", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:001", + "course_id": "network_management", + "query": "题型主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "network-management-001:h-网络管理考试~题型:c01", + "exists": true, + "source_id": "network-management-001", + "source_title": "README", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cc2baaf23a9c64113a94dd03a42856f5c13eac3c3d4cabbad4dadb2b22e68bbc", + "text_excerpt": "- 选择题: 20%\n- 简答题: 40%\n- 综合题: 60%", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "network_management:002", + "course_id": "network_management", + "query": "我想先复习复习题涉及知识点,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-001:h-网络管理考试~复习题涉及知识点:c01", + "exists": true, + "source_id": "network-management-001", + "source_title": "README", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "de96d66ffd7c00c13d3e039896a97b95a8d8e5448534bd0df55a6f064e59267b", + "text_excerpt": "复习题中重点知识点可以看下面的笔记, [复习笔记](\"https://www.yuque.com/g/u62833645/euqwww/ymhu1uigduhg94kt/collaborator/join?token=AxH8lgbfqCsqNsvW&source=doc_collaborator# 《网络管理考点知识梳理》\")\n\n复习的时候以ppt为主,整理考点知识点进行背诵。", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:003", + "course_id": "network_management", + "query": "复习选择题 10 * 2时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-001:h-网络管理考试~考试题目-2026回忆版~选择题-10-2:c01", + "exists": true, + "source_id": "network-management-001", + "source_title": "README", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "801d9afc20a230eb51cfeeb241c7db3e2e83d86edd69822aa481dc42547c5cfb", + "text_excerpt": "涉及\n1. IPv6各种技术使用什么拓展头实现\n2. 主动测量和被动测量的原理和优缺点\n3. iFIT随流检测的作用\n4. NETCONF和SNMP的区别\n5. SNMPv1,v2,v3提供的PDU类型有哪些\n6. NETCONF工作原理\n\n> 选择题的知识比较零碎,也比较广,涉及几乎所有章节,需要将知识点对应的ppt看一遍,对一些内容要有印象。", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:004", + "course_id": "network_management", + "query": "简答题 4*10里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-001:h-网络管理考试~考试题目-2026回忆版~简答题-4-10:c01", + "exists": true, + "source_id": "network-management-001", + "source_title": "README", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "7f30c6ea6c958559995bbce36a5643b4ce13cf66d6f736c10ac5b785778736c0", + "text_excerpt": "1. 简述网络管理系统的5大功能以及其作用\n2. 简述RMOS的原理,比较RMOS和SNMP,RMOS有什么优势原理是什么\n3. VXLAN的原理是什么,解决了哪些问题\n4. SNMPv1的5种PDU类型是什么,功能是什么\n> 这是2026年考的,老师应该是从复习题中随机抽4个", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:005", + "course_id": "network_management", + "query": "学习综合题时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-001:h-网络管理考试~考试题目-2026回忆版~综合题-5-8:c01", + "exists": true, + "source_id": "network-management-001", + "source_title": "README", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "9bc8b59a29f2cbf700dc312c62e3f25309a2031bb9c0b2cb297db888cff4c9ab", + "text_excerpt": "可以说考的是你有没有做实验\n\n1. 给定拓扑图,对图中的PC和路由器进行ipv6地址规划(一般与实验网络拓扑一致)\n2. 写出所有路由器的配置命令(思科或者华为路由器风格),并配置动态路由协议(OSPF/RIP) \n3. PC11能够ping通R1,但是ping不通PC22,请给出你故障分析的流程,并给出可能的原因。\n4. 解决问题后你会如何结合SNMP,NETCONF特", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:006", + "course_id": "network_management", + "query": "考试会怎么考复习题-2026?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-002:p1:c01", + "exists": true, + "source_id": "network-management-002", + "source_title": "复习题-2026", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "09ada6ac5238f9e03d8f7ab256555b82fb5c3001d9c1091a666dfd9c991c4980", + "text_excerpt": "1. 网络管理系统的5 大功能\n\n2. SNMP 网络管理模型的四大组成要素,各个要素的功能。\n\n3. 数据中心网络Spine-Leaf 网络架构,VXLAN、EVPN 的基本原理及应用\n\n4. 描述关于信息表示的通信系统模型,抽象语法ASN.1 和传输语法的概念、原\n\n理及作用\n\n5. SNMP v1、v2c 协议提供的操作、PDU、安全机制,SNMP v1 与v2c 的区别。\n\n6. SNMPv3 的SNMP 引擎和安全模型,SNMPv3 与SNMPv2c、SNMP v1", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:007", + "course_id": "network_management", + "query": "这张图主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "network-management-003:h-1781600428002:c01", + "exists": true, + "source_id": "network-management-003", + "source_title": "1781600428002", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "734c0e63358c8e1911d63633f92c22d54bd64e23b72661484dd90257cec1f9b1", + "text_excerpt": "![page-001.png](assets/network-management-003/page-001.png)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "network_management:008", + "course_id": "network_management", + "query": "我想先复习这张图,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "network-management-004:h-1781600842993:c01", + "exists": true, + "source_id": "network-management-004", + "source_title": "1781600842993", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "36f3bda00f7bbb6a957b4b63fda2628b9b06ab26cc7951ea7a3e1bfe1eb20ea9", + "text_excerpt": "![page-001.png](assets/network-management-004/page-001.png)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "network_management:009", + "course_id": "network_management", + "query": "复习实验大纲-2026时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-005:h-实验大纲-2026:c01", + "exists": true, + "source_id": "network-management-005", + "source_title": "实验大纲-2026", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "00a06f739509f434690a952c4e9c9fdfafa0c176c6e9abe352c5954b3a736660", + "text_excerpt": "**实验一** **IPv6网络、MIB信息库和SNMP报文信息解析**\n\n【实验目的及要求】\n\n实验目的:\n1. 学习构建IPv6网络管理环境\n1. 学习使用MIB Browser工具进行查看设备信息\n 1. MIB Browser的使用\n 1. MIB II 信息库\n 1. 通过SNMP 获得的信息分析设备状态\n1. 学习通过编程的方法和使用SNMP协议,获取MIB信息库信息\n\n(3)学习使用抓包程序查看和了解SNMP的交互过程\n 1. 了解", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:010", + "course_id": "network_management", + "query": "实验大纲-2026里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-005:h-实验大纲-2026:c02", + "exists": true, + "source_id": "network-management-005", + "source_title": "实验大纲-2026", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "41fefe7545f5d70b5eb473ad707e8c4d9be6c20ce15e68c0eb510b35f3eea7f4", + "text_excerpt": "\n\n
IfDescrIfSpeed (Mbps)ifAdminStatuifOper
tatus
ifInOctetsifOutO
tets
接口状态利用率
", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:011", + "course_id": "network_management", + "query": "学习实验大纲-2026时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-005:h-实验大纲-2026:c03", + "exists": true, + "source_id": "network-management-005", + "source_title": "实验大纲-2026", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ad319b8703bd58a4fc069c382d0d5d6882cbb9577e73c5490b84743de3216c17", + "text_excerpt": "(7)用抓包程序抓包,MIB Browser使用表格方式浏览ifTable,请问表格方式主要使用了什么SNMP操作来完成数据的读取? 表格方式与GetNext的读取方式相同吗?\n\n(8)用抓包程序抓包,MIB Browser 使用Get操作读取sysName,其PDU的字段有哪些?\n\n(9)用抓包程序抓包,MIB Browser 切换成SNMPv2c,使用GetBulk操作读取sysName,其PDU的字段有哪些?\n\n(10) GET、GETNEX和SET报文分别由哪", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:012", + "course_id": "network_management", + "query": "考试会怎么考实验大纲-2026?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-005:h-实验大纲-2026:c04", + "exists": true, + "source_id": "network-management-005", + "source_title": "实验大纲-2026", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "88ff571e6bad4747e08a09f23feddd59dae7a5ee5ce7cbd4faecf0f84427b71d", + "text_excerpt": "2.2.3 请问www.scut.edu.cn的IP地址和主机名分别是什么?并写出你使用的命令。\n\n2.3. 使用netstat命令监控主机网络使用情况\n\n2.3.1 监测你所在主机所有已建立的有效连接。写出你使用的命令。\n\n2.3.2 监测你所在主机使用TCP协议所开放的端口。写出你使用的命令。\n\n2.3.3 察看你所在主机的网络统计信息,列出TCP Statistics for IPv4和总体统计信息。并写出你使用的命令。\n\n**3.简单网络管理系统开发**\n\n", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:013", + "course_id": "network_management", + "query": "实验大纲-2026主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-005:h-实验大纲-2026:c05", + "exists": true, + "source_id": "network-management-005", + "source_title": "实验大纲-2026", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "594b3bb58cf9efdf5f9aec441e4e55bb2f615b76e582354364277064f8dcf0ba", + "text_excerpt": "| **实验概述** |\n|---|\n| 【实验目的及要求】
1 实验目的:
2 实验要求:
【实验环境】
PC机,WINDOWS操作系统,Linux操作系统,路由器,交换机 |\n| **实验内容** |\n| 【实验过程】
实验步骤:
二、实验数据:
三、实验主要过程: |\n| **小结** |\n| |\n| **指导教师评语及成绩** |\n| 评语:
成绩: 指导教师签名:
批阅日期: |", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:014", + "course_id": "network_management", + "query": "我想先复习题型,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "network-management-001:h-网络管理考试~题型:c01", + "exists": true, + "source_id": "network-management-001", + "source_title": "README", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cc2baaf23a9c64113a94dd03a42856f5c13eac3c3d4cabbad4dadb2b22e68bbc", + "text_excerpt": "- 选择题: 20%\n- 简答题: 40%\n- 综合题: 60%", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "network_management:015", + "course_id": "network_management", + "query": "复习复习题涉及知识点时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-001:h-网络管理考试~复习题涉及知识点:c01", + "exists": true, + "source_id": "network-management-001", + "source_title": "README", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "de96d66ffd7c00c13d3e039896a97b95a8d8e5448534bd0df55a6f064e59267b", + "text_excerpt": "复习题中重点知识点可以看下面的笔记, [复习笔记](\"https://www.yuque.com/g/u62833645/euqwww/ymhu1uigduhg94kt/collaborator/join?token=AxH8lgbfqCsqNsvW&source=doc_collaborator# 《网络管理考点知识梳理》\")\n\n复习的时候以ppt为主,整理考点知识点进行背诵。", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:016", + "course_id": "network_management", + "query": "选择题 10 * 2里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-001:h-网络管理考试~考试题目-2026回忆版~选择题-10-2:c01", + "exists": true, + "source_id": "network-management-001", + "source_title": "README", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "801d9afc20a230eb51cfeeb241c7db3e2e83d86edd69822aa481dc42547c5cfb", + "text_excerpt": "涉及\n1. IPv6各种技术使用什么拓展头实现\n2. 主动测量和被动测量的原理和优缺点\n3. iFIT随流检测的作用\n4. NETCONF和SNMP的区别\n5. SNMPv1,v2,v3提供的PDU类型有哪些\n6. NETCONF工作原理\n\n> 选择题的知识比较零碎,也比较广,涉及几乎所有章节,需要将知识点对应的ppt看一遍,对一些内容要有印象。", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:017", + "course_id": "network_management", + "query": "学习简答题 4*10时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-001:h-网络管理考试~考试题目-2026回忆版~简答题-4-10:c01", + "exists": true, + "source_id": "network-management-001", + "source_title": "README", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "7f30c6ea6c958559995bbce36a5643b4ce13cf66d6f736c10ac5b785778736c0", + "text_excerpt": "1. 简述网络管理系统的5大功能以及其作用\n2. 简述RMOS的原理,比较RMOS和SNMP,RMOS有什么优势原理是什么\n3. VXLAN的原理是什么,解决了哪些问题\n4. SNMPv1的5种PDU类型是什么,功能是什么\n> 这是2026年考的,老师应该是从复习题中随机抽4个", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:018", + "course_id": "network_management", + "query": "考试会怎么考综合题?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-001:h-网络管理考试~考试题目-2026回忆版~综合题-5-8:c01", + "exists": true, + "source_id": "network-management-001", + "source_title": "README", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "9bc8b59a29f2cbf700dc312c62e3f25309a2031bb9c0b2cb297db888cff4c9ab", + "text_excerpt": "可以说考的是你有没有做实验\n\n1. 给定拓扑图,对图中的PC和路由器进行ipv6地址规划(一般与实验网络拓扑一致)\n2. 写出所有路由器的配置命令(思科或者华为路由器风格),并配置动态路由协议(OSPF/RIP) \n3. PC11能够ping通R1,但是ping不通PC22,请给出你故障分析的流程,并给出可能的原因。\n4. 解决问题后你会如何结合SNMP,NETCONF特", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:019", + "course_id": "network_management", + "query": "复习题-2026主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-002:p1:c01", + "exists": true, + "source_id": "network-management-002", + "source_title": "复习题-2026", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "09ada6ac5238f9e03d8f7ab256555b82fb5c3001d9c1091a666dfd9c991c4980", + "text_excerpt": "1. 网络管理系统的5 大功能\n\n2. SNMP 网络管理模型的四大组成要素,各个要素的功能。\n\n3. 数据中心网络Spine-Leaf 网络架构,VXLAN、EVPN 的基本原理及应用\n\n4. 描述关于信息表示的通信系统模型,抽象语法ASN.1 和传输语法的概念、原\n\n理及作用\n\n5. SNMP v1、v2c 协议提供的操作、PDU、安全机制,SNMP v1 与v2c 的区别。\n\n6. SNMPv3 的SNMP 引擎和安全模型,SNMPv3 与SNMPv2c、SNMP v1", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:020", + "course_id": "network_management", + "query": "我想先复习这张图,应该从哪里开始?,第20条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "network-management-003:h-1781600428002:c01", + "exists": true, + "source_id": "network-management-003", + "source_title": "1781600428002", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "734c0e63358c8e1911d63633f92c22d54bd64e23b72661484dd90257cec1f9b1", + "text_excerpt": "![page-001.png](assets/network-management-003/page-001.png)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "network_management:021", + "course_id": "network_management", + "query": "复习这张图时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "network-management-004:h-1781600842993:c01", + "exists": true, + "source_id": "network-management-004", + "source_title": "1781600842993", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "36f3bda00f7bbb6a957b4b63fda2628b9b06ab26cc7951ea7a3e1bfe1eb20ea9", + "text_excerpt": "![page-001.png](assets/network-management-004/page-001.png)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "network_management:022", + "course_id": "network_management", + "query": "实验大纲-2026里的方法或结论怎么理解?,第22条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-005:h-实验大纲-2026:c01", + "exists": true, + "source_id": "network-management-005", + "source_title": "实验大纲-2026", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "00a06f739509f434690a952c4e9c9fdfafa0c176c6e9abe352c5954b3a736660", + "text_excerpt": "**实验一** **IPv6网络、MIB信息库和SNMP报文信息解析**\n\n【实验目的及要求】\n\n实验目的:\n1. 学习构建IPv6网络管理环境\n1. 学习使用MIB Browser工具进行查看设备信息\n 1. MIB Browser的使用\n 1. MIB II 信息库\n 1. 通过SNMP 获得的信息分析设备状态\n1. 学习通过编程的方法和使用SNMP协议,获取MIB信息库信息\n\n(3)学习使用抓包程序查看和了解SNMP的交互过程\n 1. 了解", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:023", + "course_id": "network_management", + "query": "学习实验大纲-2026时哪些概念容易混淆?,第23条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-005:h-实验大纲-2026:c02", + "exists": true, + "source_id": "network-management-005", + "source_title": "实验大纲-2026", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "41fefe7545f5d70b5eb473ad707e8c4d9be6c20ce15e68c0eb510b35f3eea7f4", + "text_excerpt": "\n\n
IfDescrIfSpeed (Mbps)ifAdminStatuifOper
tatus
ifInOctetsifOutO
tets
接口状态利用率
", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:024", + "course_id": "network_management", + "query": "考试会怎么考实验大纲-2026?,第24条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-005:h-实验大纲-2026:c03", + "exists": true, + "source_id": "network-management-005", + "source_title": "实验大纲-2026", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ad319b8703bd58a4fc069c382d0d5d6882cbb9577e73c5490b84743de3216c17", + "text_excerpt": "(7)用抓包程序抓包,MIB Browser使用表格方式浏览ifTable,请问表格方式主要使用了什么SNMP操作来完成数据的读取? 表格方式与GetNext的读取方式相同吗?\n\n(8)用抓包程序抓包,MIB Browser 使用Get操作读取sysName,其PDU的字段有哪些?\n\n(9)用抓包程序抓包,MIB Browser 切换成SNMPv2c,使用GetBulk操作读取sysName,其PDU的字段有哪些?\n\n(10) GET、GETNEX和SET报文分别由哪", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:025", + "course_id": "network_management", + "query": "实验大纲-2026主要讲什么?,第25条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-005:h-实验大纲-2026:c04", + "exists": true, + "source_id": "network-management-005", + "source_title": "实验大纲-2026", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "88ff571e6bad4747e08a09f23feddd59dae7a5ee5ce7cbd4faecf0f84427b71d", + "text_excerpt": "2.2.3 请问www.scut.edu.cn的IP地址和主机名分别是什么?并写出你使用的命令。\n\n2.3. 使用netstat命令监控主机网络使用情况\n\n2.3.1 监测你所在主机所有已建立的有效连接。写出你使用的命令。\n\n2.3.2 监测你所在主机使用TCP协议所开放的端口。写出你使用的命令。\n\n2.3.3 察看你所在主机的网络统计信息,列出TCP Statistics for IPv4和总体统计信息。并写出你使用的命令。\n\n**3.简单网络管理系统开发**\n\n", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:026", + "course_id": "network_management", + "query": "我想先复习实验大纲-2026,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-005:h-实验大纲-2026:c05", + "exists": true, + "source_id": "network-management-005", + "source_title": "实验大纲-2026", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "594b3bb58cf9efdf5f9aec441e4e55bb2f615b76e582354364277064f8dcf0ba", + "text_excerpt": "| **实验概述** |\n|---|\n| 【实验目的及要求】
1 实验目的:
2 实验要求:
【实验环境】
PC机,WINDOWS操作系统,Linux操作系统,路由器,交换机 |\n| **实验内容** |\n| 【实验过程】
实验步骤:
二、实验数据:
三、实验主要过程: |\n| **小结** |\n| |\n| **指导教师评语及成绩** |\n| 评语:
成绩: 指导教师签名:
批阅日期: |", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:027", + "course_id": "network_management", + "query": "复习题型时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "network-management-001:h-网络管理考试~题型:c01", + "exists": true, + "source_id": "network-management-001", + "source_title": "README", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cc2baaf23a9c64113a94dd03a42856f5c13eac3c3d4cabbad4dadb2b22e68bbc", + "text_excerpt": "- 选择题: 20%\n- 简答题: 40%\n- 综合题: 60%", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "network_management:028", + "course_id": "network_management", + "query": "复习题涉及知识点里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-001:h-网络管理考试~复习题涉及知识点:c01", + "exists": true, + "source_id": "network-management-001", + "source_title": "README", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "de96d66ffd7c00c13d3e039896a97b95a8d8e5448534bd0df55a6f064e59267b", + "text_excerpt": "复习题中重点知识点可以看下面的笔记, [复习笔记](\"https://www.yuque.com/g/u62833645/euqwww/ymhu1uigduhg94kt/collaborator/join?token=AxH8lgbfqCsqNsvW&source=doc_collaborator# 《网络管理考点知识梳理》\")\n\n复习的时候以ppt为主,整理考点知识点进行背诵。", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:029", + "course_id": "network_management", + "query": "学习选择题 10 * 2时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-001:h-网络管理考试~考试题目-2026回忆版~选择题-10-2:c01", + "exists": true, + "source_id": "network-management-001", + "source_title": "README", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "801d9afc20a230eb51cfeeb241c7db3e2e83d86edd69822aa481dc42547c5cfb", + "text_excerpt": "涉及\n1. IPv6各种技术使用什么拓展头实现\n2. 主动测量和被动测量的原理和优缺点\n3. iFIT随流检测的作用\n4. NETCONF和SNMP的区别\n5. SNMPv1,v2,v3提供的PDU类型有哪些\n6. NETCONF工作原理\n\n> 选择题的知识比较零碎,也比较广,涉及几乎所有章节,需要将知识点对应的ppt看一遍,对一些内容要有印象。", + "flags": [] + } + ] + }, + { + "legacy_id": "network_management:030", + "course_id": "network_management", + "query": "考试会怎么考简答题 4*10?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "network-management-001:h-网络管理考试~考试题目-2026回忆版~简答题-4-10:c01", + "exists": true, + "source_id": "network-management-001", + "source_title": "README", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "7f30c6ea6c958559995bbce36a5643b4ce13cf66d6f736c10ac5b785778736c0", + "text_excerpt": "1. 简述网络管理系统的5大功能以及其作用\n2. 简述RMOS的原理,比较RMOS和SNMP,RMOS有什么优势原理是什么\n3. VXLAN的原理是什么,解决了哪些问题\n4. SNMPv1的5种PDU类型是什么,功能是什么\n> 这是2026年考的,老师应该是从复习题中随机抽4个", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:001", + "course_id": "next_generation_network_architecture", + "query": "天地一体化网络研究报告主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s1:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 1, + "text_sha256": "89160667fdee837179dd8bbcc3d697404769e7e653797d92180d7f0b9143f201", + "text_excerpt": "- 组长:于博宇\n- 组员:张晨,徐健睿,于智远,金嘉敏\n- Groups‘ Study of New Tech", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:002", + "course_id": "next_generation_network_architecture", + "query": "我想先复习天地一体化网络研究报告,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s2:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 2, + "text_sha256": "4fc8a98a170ef2312ce18fae9fe6defe5bd31944a9237cf366362a1c1f6da0cf", + "text_excerpt": "![image](assets/next-generation-network-architecture-001/image-001.png)\n- 1\n- 天地一体化网络产生背景(于博宇)\n- 4\n- 该架构主要应用场景(于智远)\n- 2\n- 天地一体化网络目前发展(徐健睿)\n- 3\n- 架构基本概念与核心技术(于博宇)\n- 5\n- 该架构面临的问题挑战及发展方向(张晨)\n- 目录:", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:003", + "course_id": "next_generation_network_architecture", + "query": "复习天地一体化网络研究报告时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s3:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 3, + "text_sha256": "eb264e05a35680f99ce1c6e7292d19921707ef7f3258fdf216f892d27d29abd0", + "text_excerpt": "![image](assets/next-generation-network-architecture-001/image-002.png)\n- Part 1:(于博宇)\n- 天地一体化网络背景\n- 天地一体化网络主要是在全球进入全新信息时代,数据传输、处理和应用需求日益增长的背景下,为了解决传统的地面网络逐渐暴露出全球覆盖不足、灾难应对能力有限、信息传输延迟和容量限制等弊端而产生的一种全新架构。", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:004", + "course_id": "next_generation_network_architecture", + "query": "天地一体化网络研究报告里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s4:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 4, + "text_sha256": "f2d3360a6ef2c92e53f1e5d42e00a233277a374f880c82435b828e8656bd082b", + "text_excerpt": "![image](assets/next-generation-network-architecture-001/image-003.jpg)\n- 全球覆盖不足\n- 传统的通信网络主要基于地面基站,很难覆盖偏远地区、海洋以及低人口密度区域。", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:005", + "course_id": "next_generation_network_architecture", + "query": "学习天地一体化网络研究报告时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s5:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 5, + "text_sha256": "0ce520487cf1f1b3c8bc6c216e63a0f27097dccf1190b9ec91e484a6953c820c", + "text_excerpt": "![image](assets/next-generation-network-architecture-001/image-004.jpg)\n- 灾难应对能力有限\n- 地面网络设施易受自然灾害(如地震、洪水)或人为破坏(如战争)影响,一旦发生重大灾害,影响救灾和信息传递。", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:006", + "course_id": "next_generation_network_architecture", + "query": "考试会怎么考天地一体化网络研究报告?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s6:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 6, + "text_sha256": "3eed8e523fbb8a6969b1a2f70bb56c1510eb6f357794633366c46fb503cef576", + "text_excerpt": "![image](assets/next-generation-network-architecture-001/image-005.jpg)\n- 3.信息传输延迟、容量限制\n- 随着物联网的发展,对数据的需求越来越高。传统网络在延迟和容量方面存在局限,难以满足未来的发展需求。\n- 由左图我们也能看出这个架构在未来信息时代的重要支撑作用", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:007", + "course_id": "next_generation_network_architecture", + "query": "天地一体化网络研究报告主要讲什么?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s7:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 7, + "text_sha256": "d5725cfa255fdaaf54e5f9197d556684d18428b75c23f5d177b62b71a42cd53a", + "text_excerpt": "![image](assets/next-generation-network-architecture-001/image-006.png)\n![image](assets/next-generation-network-architecture-001/image-007.jpg)\n![image](assets/next-generation-network-architecture-001/image-008.jpg)\n![image](assets/next-gen", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:008", + "course_id": "next_generation_network_architecture", + "query": "我想先复习天地一体化网络研究报告,应该从哪里开始?,见第8页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s8:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 8, + "text_sha256": "41676d1bbe01cf5a253b6161d29e5ea474eec77202257e31ee75d46b484517b5", + "text_excerpt": "![image](assets/next-generation-network-architecture-001/image-011.png)\n![image](assets/next-generation-network-architecture-001/image-012.jpg)\n- 天地一体化网络目前发展及实际案例\n- 边缘计算:天地一体化网络在边缘计算领域的作用主要体现在提供更广泛的网络覆盖、低延迟的数据传输、强大的计算和存储能力,以及更加安全和可靠的通信支持。这些", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:009", + "course_id": "next_generation_network_architecture", + "query": "复习天地一体化网络研究报告时哪些内容最重要?,见第9页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s9:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 9, + "text_sha256": "e09d73543103385a9ec3ec9d2722cf1da1a833ecb6fbceda1c0310ed339a6c80", + "text_excerpt": "![image](assets/next-generation-network-architecture-001/image-013.png)\n- 天地一体化网络目前发展及实际案例\n- 物联网大规模应用:天地一体化网络在物联网大规模应用中发挥着关键作用,通过整合多种网络资源,实现更广泛的覆盖、大规模连接、低延迟通信和强大的安全保障,推动物联网技术的发展和应用。\n- 主要体现在:提供更广泛的覆盖范围、支持大规模连接、实现低延迟的通信、有强大的安全保障。发展案例有智慧城市、农业物", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:010", + "course_id": "next_generation_network_architecture", + "query": "天地一体化网络研究报告里的方法或结论怎么理解?,见第10页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s10:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 10, + "text_sha256": "44de0a7308298a45a6b5362c041b2cf8da9d40a23a2b3612c5153906e29ed526", + "text_excerpt": "![image](assets/next-generation-network-architecture-001/image-015.jpg)\n![image](assets/next-generation-network-architecture-001/image-016.jpg)\n- 天地一体化网络目前发展及实际案例\n- 区块链技术应用:天地一体化网络提高数据的安全性、建立信任、实现智能合约和促进数据共享,从而推动区块链技术在物联网领域的应用和发展。通过不断的技术创新和", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:011", + "course_id": "next_generation_network_architecture", + "query": "学习天地一体化网络研究报告时哪些概念容易混淆?,见第11页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s11:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 11, + "text_sha256": "595199f84cfc17a436987bd1bdf152a9e8cd5f20020b9cd62654697d7fa0f3b5", + "text_excerpt": "![image](assets/next-generation-network-architecture-001/image-017.jpg)\n- Part 3:(于博宇)\n- 基本概念与核心技术\n- 基本概念:天地一体化网络是综合利用天基(卫星)地基(信号塔)及海基(信号船及信号浮标平台)等多种通信手段,实现全球范围内高效、可靠和无缝通信覆盖的先进网络概念。", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:012", + "course_id": "next_generation_network_architecture", + "query": "考试会怎么考天地一体化网络研究报告?,见第12页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s12:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 12, + "text_sha256": "e4bc7454b0fa97f958fe22cc20b999e4987e24b579928a0d1e2cf57508b7f183", + "text_excerpt": "- 动态网络管理技术:以高效的网络管理和优化技术来实现资源动态分配、实时优化及快捷排障。\n- 核心技术\n![image](assets/next-generation-network-architecture-001/image-018.jpg)", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:013", + "course_id": "next_generation_network_architecture", + "query": "天地一体化网络研究报告主要讲什么?,见第13页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s13:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 13, + "text_sha256": "df3e0b59e7c8ab8b9ac6a8df60d3b1a422f14d156514be2bb2796d5a7f7603f9", + "text_excerpt": "- 空间信息网络技术:卫星网及连系(互相&其他基站)通信的设计,能够确保信息的高速、稳定传输。\n- 核心技术\n![image](assets/next-generation-network-architecture-001/image-019.png)", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:014", + "course_id": "next_generation_network_architecture", + "query": "我想先复习天地一体化网络研究报告,应该从哪里开始?,见第14页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s14:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 14, + "text_sha256": "efe02c7bcbd71bfb01b65eda75e2b08367d3ec3a66b794952fdf85c67a3087a6", + "text_excerpt": "- 卫星技术:天地一体化网络的重要组成部分,包括低轨(LEO)、中轨(MEO)、高轨(GEO)能够实现全球范围内的信息传递。\n- 核心技术\n![image](assets/next-generation-network-architecture-001/image-020.jpg)", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:015", + "course_id": "next_generation_network_architecture", + "query": "复习天地一体化网络研究报告时哪些内容最重要?,见第15页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s15:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 15, + "text_sha256": "1695841e3a563fe8dba998a112415528a8fc9ce4f4b398ed393c387eb24ce93a", + "text_excerpt": "- 核心技术\n- 异构网络融合技术:天地一体化网络需要整合不同类型的网络(如卫星网络、地面移动网络、互联网等),这就要求有强大的网络融合技术,包括网络接入技术、协议转换技术等,以实现网络间的无缝连接和互操作性。 深入理解\n![image](assets/next-generation-network-architecture-001/image-021.jpg)", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:016", + "course_id": "next_generation_network_architecture", + "query": "Part 4: 于智远里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s16:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 16, + "text_sha256": "11226595a8dbb1597ad32bcc95cb4e5125998ead30d3c5ce58ab252e734be015", + "text_excerpt": "架构主要应用场景\n\n- 天地一体化网络的应用场景主要集中在需要覆盖范围广泛、稳定性要求高的场合,通过整合地面网络与卫星网络资源,实现更加全面和可靠的通信服务。\n![image](assets/next-generation-network-architecture-001/image-022.png)", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:017", + "course_id": "next_generation_network_architecture", + "query": "学习天地一体化架构主要应用场景时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s17:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 17, + "text_sha256": "43e22274adae74b9be59dc743b08457248152b842f4a389e93829a39d545fb70", + "text_excerpt": "- 1、空天地一体化网络中的边缘计算\n- 目前, 在空天地一体化网络中MEC服务器可以部署在地面基站、低轨卫星(LEO)以及信关站;最终实现最小化用户感知时延、最小化能量消耗、最大化能量效率等目标;从而实现连接基站侧MEC服务器、连接LEO星上MEC服务器(包括选星策略)、连接网关站MEC服务器。\n![image](assets/next-generation-network-architecture-001/image-023.png)", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:018", + "course_id": "next_generation_network_architecture", + "query": "考试会怎么考天地一体化架构主要应用场景?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s18:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 18, + "text_sha256": "106d785cbff47727c0ce003862828cceb5283440980df3814dd0902c173be17b", + "text_excerpt": "- 2、空天地一体化内容分发网络\n- 相比于传统以连接为中心的网络,以信息为中心的网络(ICN)采用发布和订阅的模式,可以实现更有效的内容感知路由策略。ICN两个重要的特点是网内缓存以及命名路由。在无线侧,基于无线边缘缓存的内容共享技术被提出,其通过用户对流行内容的偏好程度进行分析,将流行程度高的内容提前缓存在距离请求用户更近的边缘无线节点。当终端用户发起请求时,若请求的内容已经提前存在于边缘缓存节点,可以直接从边缘缓存的无线节点获取而无须通过核心网获取内容。因此,系统可以减", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:019", + "course_id": "next_generation_network_architecture", + "query": "Part 5:(张晨主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s19:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 19, + "text_sha256": "9184ffc3cc846eb504c6285c92fc53c9016af513c55b25ca01c547fa0dfccdf7", + "text_excerpt": "面临的挑战\n及发展方向\n\n![image](assets/next-generation-network-architecture-001/image-024.jpg)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:020", + "course_id": "next_generation_network_architecture", + "query": "我想先复习Part 5:(张晨,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s20:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 20, + "text_sha256": "5aa5b0ae61493648a7215b6a89f04632f41a6ea16e85631c4e1e3a0c2ef33c78", + "text_excerpt": "- 不同于传统的网络系统,天地一体化网络强调空天地协同运作,这对系统的安全性和稳定性造成更大挑战,也对国际深度交流与合作提出更高要求。\n![image](assets/next-generation-network-architecture-001/image-025.png)\n![image](assets/next-generation-network-architecture-001/image-026.png)\n![image](assets/next-generat", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:021", + "course_id": "next_generation_network_architecture", + "query": "复习Part 5:(张晨时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s21:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 21, + "text_sha256": "52008b05615ebfd6d530362a845091cbe4c9139ea87206cab2b70b7c91afae21", + "text_excerpt": "![image](assets/next-generation-network-architecture-001/image-028.jpg)\n- 1. 异构网络融合:在物理层面上实现连接的同时还需要在网络层、传输层等多个层次上实现协议和标准的统一,以保证数据的无缝传输和处理。\n- 2. 动态网络拓扑管理:卫星等空间网络元素的高速运动导致网络拓扑结构频繁变化,需要开发动态适应的网络管理和路由算法,以保持网络的稳定性和高效性。\n- 网络集成与通信稳定性问题", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:022", + "course_id": "next_generation_network_architecture", + "query": "Part 5:(张晨里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s22:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 22, + "text_sha256": "a5de57374071206f82e4af71c85ed399b8515d7336d31e0e26e50f24f2959278", + "text_excerpt": "- 3. 信号延迟:由于空间网络节点与地面之间的巨大距离,信号传输会有明显的延迟,对实时通信和控制造成困难,甚至会造成数分钟延迟。\n![image](assets/next-generation-network-architecture-001/image-029.jpg)", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:023", + "course_id": "next_generation_network_architecture", + "query": "学习Part 5:(张晨时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s23:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 23, + "text_sha256": "5aa921209c96bb54a548c9ea7b1c58d23b0e883878bd17191153e932f27e9315", + "text_excerpt": "- 4. 信号衰减与干扰:空间通信信号在传输过程中会受到衰减和各种干扰,需要开发高效的信号处理和增强技术,以提高通信的可靠性和质量。\n![image](assets/next-generation-network-architecture-001/image-030.jpg)\n![image](assets/next-generation-network-architecture-001/image-031.png)\n- 参考文献:\n- 苏昭阳等.面向低轨卫星的星地通信模型综", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:024", + "course_id": "next_generation_network_architecture", + "query": "考试会怎么考网络安全问题?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s24:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 24, + "text_sha256": "b7f1d3495027dc26ab058f78b6c7d5433ff607ddfc69eb3872c4335e4494eabc", + "text_excerpt": "- 1. 复杂的安全威胁:天地一体化网络面临通信信号的拦截、网络设施的物理攻击、以及针对网络协议和软件的网络攻击等多重威胁,需要构建多层次的网络安全防护体系以保障数据传输的安全和稳定。\n- 2. 数据保护:为防止敏感信息泄露,需要强大的加密技术和访问控制机制,但同时需保证加密措施不会对网络性能产生过大影响。\n![image](assets/next-generation-network-architecture-001/image-032.jpg)\n- 参考文献:\n- 蒋长林", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:025", + "course_id": "next_generation_network_architecture", + "query": "国际合作与空间环境问题主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s25:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 25, + "text_sha256": "07d1cee9dc48d3c46c8a50d7709240d4f581730a766caee983e135c98d456380", + "text_excerpt": "- 1. 频谱资源紧张:各类无线通信服务的快速发展消耗了大量频谱资源,导致频谱资源越发紧张。\n- 2. 空间碎片管理:空间碎片的增多需要国际合作来监控和管理,以确保空间环境的长期可持续性。\n![image](assets/next-generation-network-architecture-001/image-033.jpg)", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:026", + "course_id": "next_generation_network_architecture", + "query": "我想先复习国际合作与空间环境问题,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s26:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 26, + "text_sha256": "df5bd22d30c1a7d231d517286cb73dd7f8797f2e3b797ea57cc2bba6de8df21e", + "text_excerpt": "- 3. 国际合作机制缺乏:天地一体化网络涉及多国利益,需要国家间的密切合作。但目前缺乏有效的国际合作机制来协调不同国家的利益和活动,导致资源分配不均、重复建设和技术标准不一致等问题。现有的国际空间法律框架和协议未能充分涵盖天地一体化网络的所有方面,特别是针对新兴技术和应用的规范尚不完善。\n![image](assets/next-generation-network-architecture-001/image-034.png)\n![image](assets/next-g", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:027", + "course_id": "next_generation_network_architecture", + "query": "复习国际合作与空间环境问题时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s27:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 27, + "text_sha256": "2b61728e03dc7782f7546a5cc973798a9b0605457f5a25edb7ff327813d2a26b", + "text_excerpt": "![image](assets/next-generation-network-architecture-001/image-036.png)\n- 未来发展方向\n- 1. 技术创新与集成:通过技术创新解决网络集成难题,提高网络的可操作性和兼容性。如向天地一体化网络引入6G等新技术将推动自动驾驶、远程医疗、智能电网等领域的发展,并改善全球互联互通、提升遥感监测能力、发展精准农业等,驱动网络技术的进步和应用扩展。", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:028", + "course_id": "next_generation_network_architecture", + "query": "国际合作与空间环境问题里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s28:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 28, + "text_sha256": "dd0721f3f8d8b6f56fdf2dd1766030a6658334a1899f6af7ab72d95d3a2dd401", + "text_excerpt": "- 2. 天地一体融合通信网络:未来将向网络、业务、终端、资源、管理等方面全面深度融合,实现地海空天全域覆盖的融合通信网络。通过推进各类异构网络智能接入集成,建设数字基础设施,为数字经济发展打下坚实基础。\n![image](assets/next-generation-network-architecture-001/image-037.jpg)\n- 3. 可持续发展和环境保护:加强国际间的沟通和合作,建立统一的天地一体化网络建设和运营标准,共同应对各类挑战。推进低轨道卫星技", + "flags": [] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:029", + "course_id": "next_generation_network_architecture", + "query": "学习谢谢观看!时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s29:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 29, + "text_sha256": "f7e97703454c3a77227caaa97349f0478803338e4fa4a5ec2c053a8b31de6805", + "text_excerpt": "- Thanks for watching !", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "next_generation_network_architecture:030", + "course_id": "next_generation_network_architecture", + "query": "考试会怎么考谢谢观看!?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "next-generation-network-architecture-001:s30:c01", + "exists": true, + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "locator_type": "slide", + "locator_start": 30, + "text_sha256": "0756ba03c860ca411de9c221848e7de2547f93903c4eb93d66ed787cd650b2e2", + "text_excerpt": "- 个人理解该技术即寻找最佳算法减少信号传递过程中的能耗\n- 右侧图片--高颖.硕士学位论文;《面向太赫兹通信的空地异构融合网络》.河北工程大学23.6-P4\n- 返回\n![image](assets/next-generation-network-architecture-001/image-038.png)", + "flags": [] + } + ] + }, + { + "legacy_id": "operating_systems:001", + "course_id": "operating_systems", + "query": "OS Review主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-os-review:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "8ac32a693452dac53f4e19b28f1ec4bfaf0a05ab5756095a0c107493a7c102eb", + "text_excerpt": "《操作系统复习题100》", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:002", + "course_id": "operating_systems", + "query": "我想先复习① 知识点,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-1-题-用户态与内核态~1-知识点:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "e49c2ab6637ee268215075eea8322e2c3ba3336cbd79fd87718d33dccb6ddfb5", + "text_excerpt": "⽤户态(User Mode)权限受限;内核态(Kernel Mode)具有完全硬件访问权。两者通过中断/系统调\n⽤切换。", + "flags": [] + } + ] + }, + { + "legacy_id": "operating_systems:003", + "course_id": "operating_systems", + "query": "复习② 测试题型时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-1-题-用户态与内核态~1-知识点~2-测试题型:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "c921f36159b61d83a36b530dc91be96a934d571654488fce359ecfa0f919b04e", + "text_excerpt": "**简答题**:⽤户态与内核态的区别是什么?如何实现切换?", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:004", + "course_id": "operating_systems", + "query": "③ 参考答案与解析里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-1-题-用户态与内核态~1-知识点~3-参考答案与解析:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "92ed21a6883a4ff5fd2e9fd11130ec5c80fa0d6617e0428e185f1cf9d7fe4bb1", + "text_excerpt": "**答案:**\n* 内核态可执⾏特权指令,⽤户态不能。\n* 系统调⽤、中断、异常触发⽤户态→内核态切换;返回指令触发内核态→⽤户态。\n**解析:**\n切换依赖 CPU 中 `CPL`(Current Privilege Level)和中断⻔描述符(IDT)。OS 使⽤ `int n`、\n`syscall`、`sysenter` 进⼊内核态。\n---", + "flags": [] + } + ] + }, + { + "legacy_id": "operating_systems:005", + "course_id": "operating_systems", + "query": "学习① 知识点时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-2-题-进程与线程~1-知识点:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0bb2d725754f8111ad2b1ad48962a912c948863449509cb7501090219bea98c5", + "text_excerpt": "进程是资源分配的最⼩单位;线程是 CPU 调度的最⼩单位。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:006", + "course_id": "operating_systems", + "query": "考试会怎么考② 测试题型?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-2-题-进程与线程~1-知识点~2-测试题型:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0797e28928e4ec7592ab63b18fa838cfe9a472756c719762bb4d4b7ba3ab0e89", + "text_excerpt": "**选择题**:下列属于线程共享的是?\nA. PCB\nB. 堆\nC. 寄存器\nD. 独⽴地址空间", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:007", + "course_id": "operating_systems", + "query": "③ 参考答案与解析主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-2-题-进程与线程~1-知识点~3-参考答案与解析:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "28977268261daf4450bd84234f7eba134f2ce523db1d63499daa2508fe9384e8", + "text_excerpt": "**答案:B**\n**解析:**\n线程共享:代码段、数据段、堆、打开的⽂件描述符。\n线程私有:栈、寄存器、线程局部存储。\n---", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:008", + "course_id": "operating_systems", + "query": "我想先复习① 知识点,应该从哪里开始?,第8条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-3-题-进程状态~1-知识点:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "3a5a79d7a4bb5eb178bc9f80a7fafa6f7e28cfeff138b9c056543bf926ed5d00", + "text_excerpt": "三态:就绪、运⾏、阻塞;五态多“新建”和“终⽌”。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:009", + "course_id": "operating_systems", + "query": "复习② 测试题型时哪些内容最重要?,第9条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-3-题-进程状态~1-知识点~2-测试题型:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "bf4748ad5f9675545763b3e6009186762657a795ff9208d386d68ac288318659", + "text_excerpt": "**名词解释**:阻塞态是什么?", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:010", + "course_id": "operating_systems", + "query": "③ 参考答案与解析里的方法或结论怎么理解?,第10条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-3-题-进程状态~1-知识点~3-参考答案与解析:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5336ab8f059361da3581c29f29954ef467ab4034c063c52ad32335ce9fc7e9d0", + "text_excerpt": "**答案:**\n阻塞态指进程因等待 I/O 或资源⽽暂停执⾏,不占⽤ CPU。\n---", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:011", + "course_id": "operating_systems", + "query": "学习① 知识点时哪些概念容易混淆?,第11条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-4-题-pcb-process-control-block~1-知识点:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "9757ac295fa747003a2f0186a923102fdc8a9c521e31a5a76532ae92b43e3624", + "text_excerpt": "PCB 保存进程状态、寄存器、内存映射等核⼼管理信息。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:012", + "course_id": "operating_systems", + "query": "考试会怎么考② 测试题型?,第12条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-4-题-pcb-process-control-block~1-知识点~2-测试题型:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "f7f9792716791d9052a54782df377b72c0b26c314b81469632849ae22416f513", + "text_excerpt": "**选择题**:PCB 不包含以下哪项?\nA. 寄存器状态\nB. ⻚表指针\nC. 程序计数器\nD. 程序源代码", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:013", + "course_id": "operating_systems", + "query": "③ 参考答案与解析主要讲什么?,第13条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-4-题-pcb-process-control-block~1-知识点~3-参考答案与解析:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "4f26cb7d22a0948c8384ba3ef69480feb4a05357432357bba75005b2fc407de3", + "text_excerpt": "**答案:D**\n---", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:014", + "course_id": "operating_systems", + "query": "我想先复习① 知识点,应该从哪里开始?,第14条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-5-题-上下文切换~1-知识点:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "4c3c89b7ca6cec817f15a51b294adc77b3eb3f54daffcbbef5fb0d15c0485a88", + "text_excerpt": "上下⽂切换保存当前线程/进程的 CPU 环境并恢复另⼀个。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:015", + "course_id": "operating_systems", + "query": "复习② 测试题型时哪些内容最重要?,第15条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-5-题-上下文切换~1-知识点~2-测试题型:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "753ed25e77371ec17393421aeb8fcfb5ada3b72b754947267f40fb6c3af52353", + "text_excerpt": "**简答题**:上下⽂切换为什么开销⼤?", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:016", + "course_id": "operating_systems", + "query": "③ 参考答案与解析里的方法或结论怎么理解?,第16条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-5-题-上下文切换~1-知识点~3-参考答案与解析:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ea712a6e5da297134ddc80acfd914d24d86e8559e6b75bd63949d3ad3fc023da", + "text_excerpt": "**答案:**\n涉及:寄存器保存恢复 + TLB 刷新 + 内核态切换 + 调度器运⾏。\nTLB 刷新是关键开销。\n---", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:017", + "course_id": "operating_systems", + "query": "学习① 知识点时哪些概念容易混淆?,第17条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-6-题-系统调用机制~1-知识点:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5b1685f97eecb0f74a9f2e35c88aace14c0e1660c63bcea50adba6c841942a98", + "text_excerpt": "系统调⽤是 OS 为应⽤提供的唯⼀安全服务接⼝。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:018", + "course_id": "operating_systems", + "query": "考试会怎么考② 测试题型?,第18条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-6-题-系统调用机制~1-知识点~2-测试题型:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "b0b64fcc781a18baad8bcd1ba67cea699b44b35b2ba8524617e52b68c8b6438c", + "text_excerpt": "**选择题**:系统调⽤进⼊内核态使⽤:\nA. 中断\nB. 特权指令\nC. 内核线程\nD. ⽤户库", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:019", + "course_id": "operating_systems", + "query": "③ 参考答案与解析主要讲什么?,第19条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-6-题-系统调用机制~1-知识点~3-参考答案与解析:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "49335333b44b193e24827ebfdaa90de062f5453ecb23141ffdabb0ee557c9dbb", + "text_excerpt": "**答案:A**\n---", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:020", + "course_id": "operating_systems", + "query": "我想先复习① 知识点,应该从哪里开始?,第20条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-7-题-中断-interrupt~1-知识点:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "250207f099d8ab38c45a2dd432ddfd759a5e260c7ea43a4b7b3c48db733338f7", + "text_excerpt": "中断⽤于异步事件处理,如 I/O 完成。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:021", + "course_id": "operating_systems", + "query": "复习② 测试题型时哪些内容最重要?,第21条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-7-题-中断-interrupt~1-知识点~2-测试题型:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "333d2857d223c4cbda291c72da752eed4387ddf5f62c6dc47438d1b8dcd743d1", + "text_excerpt": "**判断题**:中断⼀定由硬件触发。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:022", + "course_id": "operating_systems", + "query": "③ 参考答案与解析里的方法或结论怎么理解?,第22条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-7-题-中断-interrupt~1-知识点~3-参考答案与解析:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "caf95350dd54c8c8b330b76d25ed0f1344c61784431c99c8dd9afc7ab07da675", + "text_excerpt": "**答案:错**\n软件中断(int n)也存在。\n---", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:023", + "course_id": "operating_systems", + "query": "学习① 知识点时哪些概念容易混淆?,第23条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-8-题-cpu-调度-fcfs~1-知识点:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "af8871dc489fbbe8b98db8e34f2366e983b75496abb99ff4310c0346ad5bd7b0", + "text_excerpt": "FCFS 按到达顺序调度,易导致“协⽅差问题”。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:024", + "course_id": "operating_systems", + "query": "考试会怎么考② 测试题型?,第24条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-8-题-cpu-调度-fcfs~1-知识点~2-测试题型:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "43770b262e9a9236a8403b7ce58935c749968c549039e227c3a2cc399e7c7fca", + "text_excerpt": "**选择题**:FCFS 最⼤问题是?\nA. ⽆法处理⻓作业\nB. 饥饿\nC. 平均等待时间过⼤\nD. 需要预知 CPU 时间", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:025", + "course_id": "operating_systems", + "query": "③ 参考答案与解析主要讲什么?,第25条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-8-题-cpu-调度-fcfs~1-知识点~3-参考答案与解析:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a8524f8d10bc537bd84ad8fb4d47af7a421fb376cc96bf3648a960992b174468", + "text_excerpt": "**答案:C**\n---", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:026", + "course_id": "operating_systems", + "query": "我想先复习① 知识点,应该从哪里开始?,第26条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-9-题-sjf-shortest-job-first~1-知识点:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "056e741075ad21fc2f8449422fb390fa033012588e1b8d6d05e852eaa95083f0", + "text_excerpt": "最优调度但不可预测未来 CPU 时间。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:027", + "course_id": "operating_systems", + "query": "复习② 测试题型时哪些内容最重要?,第27条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-9-题-sjf-shortest-job-first~1-知识点~2-测试题型:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "79014e98bc5944cf89ae3cae4cbe7050fc2945d8462ae22bb10649d3a9184683", + "text_excerpt": "**判断题**:SJF 不会产⽣饥饿。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:028", + "course_id": "operating_systems", + "query": "③ 参考答案与解析里的方法或结论怎么理解?,第28条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-9-题-sjf-shortest-job-first~1-知识点~3-参考答案与解析:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "79aa1b63a0f93304263829a95c350588c7028d430063a1028b47a43da7467ef4", + "text_excerpt": "**答案:错**\n⻓作业可能永远得不到执⾏。\n---", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:029", + "course_id": "operating_systems", + "query": "学习① 知识点时哪些概念容易混淆?,第29条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-10-题-rr-round-robin~1-知识点:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "708bf9c93b66ca8f6670c0826f87a895e24f0345d734915ae3679dd739835197", + "text_excerpt": "⽤于交互式系统,依赖时间⽚⻓度。", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "operating_systems:030", + "course_id": "operating_systems", + "query": "考试会怎么考② 测试题型?,第30条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "operating-systems-001:h-第-10-题-rr-round-robin~1-知识点~2-测试题型:c01", + "exists": true, + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "dc17c3568647aeb584e8b5940af730affedf61f8ced4e483841f2895ed15d237", + "text_excerpt": "**选择题**:时间⽚越短,RR 的代价是?\nA. 周转变差\nB. 上下⽂切换更频繁\nC. 响应更慢\nD. 吞吐量降低", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "probability_theory:001", + "course_id": "probability_theory", + "query": "2020—2021学年第二学期A卷答案主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:h-2020-2021学年第二学期-概率论与数理统计-a卷答案:c01", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "97c6f3da2891c71ab924c512b23f6773c8cb182ff6e592ddcb7ab3f321352514", + "text_excerpt": "**诚信应考,考试作弊将带来严重后果!**\n\n**华南理工大学本科生期末考试**\n\n**2020-2021-2学期《概率论与数理统计》试卷A**\n\n**注意事项:1.** **所有答案请答在答题卡上,答在试卷上无效;**\n\n**2.** **选择题请用2B铅笔涂黑;**\n\n**3.考试形式:闭卷;**\n\n**4. 本试卷共七道大题,满分100分,考试时间120分钟**。\n\n| **题 号** | **一** | **二** | **三** | **四** | **五** | ", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:002", + "course_id": "probability_theory", + "query": "做t分布关于零点对称时概率怎么换算时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q1:c01", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "93b6fd41cedb296a7f568ba7c46f278b07ff5914867e9950f52117c03c20b49f", + "text_excerpt": "1. B\n\n2. 设*T*服从自由度为*n*的*t*分布,若$P\\{T>\\lambda\\}=\\alpha$,则$P\\{T<-\\lambda\\}=$( ).\n\n(A) $alpha$ (B)$\\frac{\\alpha}{3}$ (C) $\\frac{\\alpha}{2}$ (D) $\\frac{\\alpha}{4}$", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:003", + "course_id": "probability_theory", + "query": "复习2020—2021学年第二学期A卷答案时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q2:c01", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "db9fd92b740716d2d93e9f77ea96a442ee076c3f8e20077652d4db0e106c41b1", + "text_excerpt": "2. C", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "probability_theory:004", + "course_id": "probability_theory", + "query": "能把怎样判断一个估计量是否无偏的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q3:c01", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "94e1f1df8f65c4d145580d91c7879da4239e1d046daff70b274508ba5964b389", + "text_excerpt": "3. 从总体中抽取简单随机样本$X_1,X_2,...,X_n$,易证估计量\n\n$$\n\\mu_1=\\frac{1}{2}X_1+\\frac{1}{3}X_2+\\frac{1}{6}X_3,\\quad\\mu_2=\\frac{1}{2}X_1+\\frac{1}{4}X_2+\\frac{1}{4}X_3\n$$\n\n$$\n\\mu_3=\\frac{1}{3}X_1+\\frac{1}{3}X_2+\\frac{1}{3}X_3,\\quad\\mu_4=\\frac{1}{5}X_1+\\frac{", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:005", + "course_id": "probability_theory", + "query": "做切比雪夫不等式怎么用时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q4:c01", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "9df86d0ba2f7eaaf83f340a2b21b7f36c126769154d705bff3b25ac9ac9d3d1f", + "text_excerpt": "4. C\n\n**解** 因为 $E(X+Y)=EX+EY=0$\n\n$$\nD(X+Y)=DX+DY+2cov(X,Y)\n$$\n\n![formula-object](assets/probability-theory-010/image-035.png)\n\n$$\n=1+4-2\\times0.5\\times2=3\n$$\n\n根据切比雪夫不等式\n\n$$\nP\\{X-EX\\leq\\varepsilon\\}\\leq\\frac{DX}{\\varepsilon", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:006", + "course_id": "probability_theory", + "query": "这类题一般怎么考?能用$$ \\mathrm {又} ABC\\mathrm {\\subset }AC\\mathrm {,得}\\mathrm {}P\\mathrm {(}ABC\\mathrm {)=0}\\mathrm {,}\\mathrm {代入举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q4:c02", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "82ab82fd410c86b5c1340a195d09eb5655921043299700bcda598f3577dca393", + "text_excerpt": "$$\n\\mathrm {又} ABC\\mathrm {\\subset }AC\\mathrm {,得}\\mathrm {}P\\mathrm {(}ABC\\mathrm {)=0}\\mathrm {,}\\mathrm {代入得}\\mathrm {}P\\left ( {AB\\hat {C}}\\right )\\mathrm {=}\\frac {\\mathrm {1}} {\\mathrm {2}}\\mathrm {,故}P\\left ( {AB\\middle ∣ \\hat {C}}\\r", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:007", + "course_id": "probability_theory", + "query": "2020—2021学年第二学期A卷答案主要讲什么?,对应第4题", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q4:c03", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "32fcf7aee7ee2f1456ea6fbfc62ee8484c6680d2baa6d27dd332725f4913dd60", + "text_excerpt": "6. B 解$\\mathrm {:}$ 从形式上,该统计量只能服从 $t$ 分布。故选 $B$ 。 证明如下: 由正态分布的性质可知, $\\frac {{X}_{\\mathrm {1}}\\mathrm {-}{X}_{\\mathrm {2}}} {\\sqrt {\\mathrm {2}}\\sigma }$ 与$\\frac {{X}_{\\mathrm {3}}\\mathrm {+}{X}_{\\mathrm {4}}\\mathrm {-2}} {\\sqrt {\\mathrm", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:008", + "course_id": "probability_theory", + "query": "我想先复习2020—2021学年第二学期A卷答案,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q5:c01", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ee8b1d536a23284d35a1ffa98579ef40fb87b5e17415e65c4f480b7e78465dc7", + "text_excerpt": "7. A\n\n因为 $X$ 服从参数为 1 的泊松分布,所以其概率布为\n\n$$\nE\\mathrm {(}X\\mathrm {)=}D\\mathrm {(}X\\mathrm {)=1}\\mathrm {}\n$$\n\n$P\\mathrm {\\{}X\\mathrm {=}k\\mathrm {\\} =}\\frac {\\mathrm {1}} {k\\mathrm {!}}{e}^{\\mathrm {-1}}\\mathrm {(}k\\mathrm {=0,1,2,\\cdots )}$ ", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:009", + "course_id": "probability_theory", + "query": "A $$ \\begin {matrix} E\\left ( {T}\\right )\\mathrm {=}E\\left ( {\\hat {X}\\mathrm {-}{S}^{\\mathrm {2}}}\\right )\\ma的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q6:c01", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6e32e27af6aecc565ee16cdcff32cb59bbba363d1a3e691c1ce630c35c2dd26a", + "text_excerpt": "8. A\n\n$$\n\\begin {matrix} E\\left ( {T}\\right )\\mathrm {=}E\\left ( {\\hat {X}\\mathrm {-}{S}^{\\mathrm {2}}}\\right )\\mathrm {=}E\\left ( {\\hat {X}}\\right )\\mathrm {-}E\\left ( {{S}^{\\mathrm {2}}}\\right )\\mathrm {=}np\\mathrm {-}np\\left ( {\\mathrm {", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:010", + "course_id": "probability_theory", + "query": "能把联合分布函数的值怎么求的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q7:c01", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a6b07adf0d0b12a1ffeddcc6170e235a90b6cac51788f4f7b301346c378a7080", + "text_excerpt": "9. 设二维离散型随机变量X、Y的联合分布律如下,则联合分布函数值$F(0,3)=$**( ).**\n\n| *Y*
*X* | 0 | 2 | 4 |\n|---|---|---|---|\n| 0 | $\\frac{1}{6}$ | $\\frac{1}{9}$ | $\\frac{1}{18}$ |\n| 1 | $\\frac{1}{3}$ | 0 | $\\frac{1}{3}$ |\n\n(A) $\\frac{1}{3}$ (B)$\\frac{5}{18}$ ", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:011", + "course_id": "probability_theory", + "query": "做B 10.设 ${F}_{\\mathrm {1}}\\mathrm {(}x\\mathrm {),}{F}_{\\mathrm {2}}\\mathrm {(}x\\mathrm {)}$ 为两个分布函数, 其相应的概率密度 $时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q8:c01", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "d98d849373f80b69d5e318b007f1a7253b18917009189c4147bd7d90d2306b77", + "text_excerpt": "9. B\n\n10.设 ${F}_{\\mathrm {1}}\\mathrm {(}x\\mathrm {),}{F}_{\\mathrm {2}}\\mathrm {(}x\\mathrm {)}$ 为两个分布函数, 其相应的概率密度 ${f}_{\\mathrm {1}}\\mathrm {(}x\\mathrm {)}$, ${f}_{\\mathrm {2}}\\mathrm {(}x\\mathrm {)}$ 是连续函数, 则必为概率密度的是( $\\left {\\mathrm {", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:012", + "course_id": "probability_theory", + "query": "这类题一般怎么考?能用D 由分布函数和概率密度的性质可得 ${F}_{\\mathrm {1}}^{\\mathrm {'}}\\mathrm {(}x\\mathrm {)=}{f}_{\\mathrm {1}}\\mathrm {(}x\\mathrm举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q9:c01", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "aff0fa88ba98d76857db3b0594d492b1b3f33a0ae143f806758ab994d15a0825", + "text_excerpt": "10. D\n\n由分布函数和概率密度的性质可得\n\n${F}_{\\mathrm {1}}^{\\mathrm {'}}\\mathrm {(}x\\mathrm {)=}{f}_{\\mathrm {1}}\\mathrm {(}x\\mathrm {),}{ F}_{\\mathrm {2}}^{\\mathrm {'}}\\mathrm {(}x\\mathrm {)=}{f}_{\\mathrm {2}}\\mathrm {(}x\\mathrm {)}$,\n\n${f}_{\\mathrm {1}}\\", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:013", + "course_id": "probability_theory", + "query": "所以 ${f}_{\\mathrm {1}}\\mathrm {(}x\\mathrm {)}{F}_{2}\\mathrm {(}x\\mathrm {)+}{f}_{\\mathrm {2}}\\mathrm {(}x\\mathr怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q9:c02", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ecbc2da4c61870b6a0e4400e8f4bb00f9a39cb726cf4eea4573d19b59b1d37b5", + "text_excerpt": "所以 ${f}_{\\mathrm {1}}\\mathrm {(}x\\mathrm {)}{F}_{2}\\mathrm {(}x\\mathrm {)+}{f}_{\\mathrm {2}}\\mathrm {(}x\\mathrm {)}{F}_{\\mathrm {1}}\\mathrm {(}x\\mathrm {)}$ 是概率密度,即正确选项为D$\\mathrm {.}$\n\n11. 设二维随机变量 $\\mathrm {(}X\\mathrm {,}Y\\mathrm {)}$ 服从正态", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:014", + "course_id": "probability_theory", + "query": "做$$ E\\left ( {X{Y}^{\\mathrm {2}}}\\right )\\mathrm {=}E\\left ( {X}\\right )E\\left ( {{Y}^{\\mathrm {2}}}\\right )=E\\时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q9:c03", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a7547108c6820a0714e7c10c6d97a77ab3dc92a37183a42fd39e7cb263310ad4", + "text_excerpt": "$$\nE\\left ( {X{Y}^{\\mathrm {2}}}\\right )\\mathrm {=}E\\left ( {X}\\right )E\\left ( {{Y}^{\\mathrm {2}}}\\right )=E\\mathrm {(}X\\mathrm {)}\\left \\{ {D\\mathrm {(}Y\\mathrm {)+[}E\\mathrm {(}Y\\mathrm {)}{\\mathrm {]}}^{\\mathrm {2}}}\\right \\}\\mathrm {=}", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:015", + "course_id": "probability_theory", + "query": "D 因为 $X$ 与 $Y$ 的相关系数 ${\\rho }_{XY}\\mathrm {=1}$, 所以 $Y$与 $X$ 正相关, 即存在常数 $a\\mathrm {,}b$, 使得 $Y\\mathrm {=}aX\\ma的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q10:c01", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "4fba2211f406b8e4a7061622b3fd3f58263435ae60c8574aed3ebdac804dbe21", + "text_excerpt": "12. D\n\n因为 $X$ 与 $Y$ 的相关系数 ${\\rho }_{XY}\\mathrm {=1}$, 所以 $Y$与 $X$ 正相关, 即存在常数 $a\\mathrm {,}b$, 使得 $Y\\mathrm {=}aX\\mathrm {+}b\\mathrm {(}a\\mathrm {>0)}$, 且 $P\\mathrm {\\{}Y\\mathrm {=}aX\\mathrm {+}b\\mathrm {\\} =1}$, 排除(A)、(C) $\\mathrm {.", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:016", + "course_id": "probability_theory", + "query": "能把(1) 乙在第一次投篮时投中的概率; (2) 甲在第二次投篮时投中的概率。的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q11:c01", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "97fe3d69cfb947bd6d12131da58e3ad168123cabcb17c1c9efc8779220a087de", + "text_excerpt": "(1) 乙在第一次投篮时投中的概率; (2) 甲在第二次投篮时投中的概率。\n\n解:令$A_1$表示事件“乙在第一次投篮时投中”,\n\n令$B_i$表示事件“甲在第*i*次投篮时投中”,$i=1,2$", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:017", + "course_id": "probability_theory", + "query": "做1$P =P P(A|B)+P(\\overline{B})P(A|\\overline{B})$ $=0.7\\times0.5+0.3\\times0.6=0.53$时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q12:c01", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "d0d2c4cb09b3c30f204edd0b249ff198add7d83b2052c726140e16524ba86094", + "text_excerpt": "(1)$P(A)=P(B)P(A|B)+P(\\overline{B})P(A|\\overline{B})$\n\n$=0.7\\times0.5+0.3\\times0.6=0.53$ (5分)", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:018", + "course_id": "probability_theory", + "query": "这类题一般怎么考?能用2$P =0.53,=>P(A^c)=0.47$ $$ P(B_2)=P(A_)P(B_2|A_)+P(^(A_))P(B_2^(A_)) $$ $=0.53\\times0.4+0.47\\times0.7=0.541举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q13:c01", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "206d382df2266b19696ac4e7674bcab5a596023992777a9466f4752fc4fc0783", + "text_excerpt": "(2)$P(A)=0.53,=>P(A^c)=0.47$\n\n$$\nP(B_2)=P(A_)P(B_2|A_)+P(^(A_))P(B_2^(A_))\n$$\n\n$=0.53\\times0.4+0.47\\times0.7=0.541$ (5分)\n\n**三、(10分)** 有一批建筑房屋用的木柱,其中80%的长度不超过3m,现从这批木柱中随机地取出100根,问其中至少有30根超过3m的概率是多少?\n\n附:![formula-object](assets/probabili", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:019", + "course_id": "probability_theory", + "query": "(1) 求$\\mu$ 的置信度为0.95的置信区间怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q14:c01", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "509887ebcf71bd483a8c9bc2288f97a543a7e8c519c1f4e4d74bfb5b3f7ab636", + "text_excerpt": "(1) 求$\\mu$ 的置信度为0.95的置信区间;(保留四位小数)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "probability_theory:020", + "course_id": "probability_theory", + "query": "做(2) 检验假设${H}_{0}: {\\sigma }^{2}=0.1$ 显著性水平为0.05。时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q15:c01", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "13405f1c31d2fa5e0964eecfb2b45730cf6cf99538cc7ca726dfa6e0c2bebe5c", + "text_excerpt": "(2) 检验假设${H}_{0}: {\\sigma }^{2}=0.1$(显著性水平为0.05)。\n\n附: $t_{0.975}(16)=2.1199,t_{0.975}(15)=2.1315,t_{0.95}(16)=1.7459,t_{0.95}(15)=1.7531$\n\n$$\n\\chi_{0.975}^{2}(15)=27.488,\\quad\\chi_{0.975}^{2}(16)=28.845,\\quad\\chi_{0.025}^{2}(15)=6.262,\\qua", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:021", + "course_id": "probability_theory", + "query": "(2) ${H}_{0}: {\\sigma }^{2}=0.1$ $$ \\chi^2=\\frac{(n-1)S^2}{\\sigma_0^2}\\sim\\chi^2(n-1) $$ $$ X_{0.975}^2(15)=27的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q16:c01", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0254b188b7a0e9051da459f40242f64b4df667e3003fd5cdedb21b66170ffa30", + "text_excerpt": "(2) ${H}_{0}: {\\sigma }^{2}=0.1$\n\n$$\n\\chi^2=\\frac{(n-1)S^2}{\\sigma_0^2}\\sim\\chi^2(n-1)\n$$\n\n$$\nX_{0.975}^2(15)=27.488,X_{0.025}^2(15)=6.262\n$$\n\n$$\n\\chi^2=\\frac{15\\times0.16}{0.1}=24\n$$\n\n因为$X_{0.025}^2(15) 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q16:c02", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "272598e3311ea108dcf354b45434b4cd50c94bbfa4e6c97b68d69649069bb221", + "text_excerpt": "解 (1) ${F}_{Y}\\mathrm {(}y\\mathrm {)=}P\\mathrm {\\{}Y\\mathrm {\\le }y\\mathrm {\\} }$ 由 $Y$ 的概率分布知,当 $y\\mathrm {<1}$ 时, ${F}_{Y}\\mathrm {(}y\\mathrm {)=0}$; (1分) 当 $y\\mathrm {\\ge 2}$ 时, ${F}_{Y}\\mathrm {(}y\\mathrm {)=1}$; (1", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:023", + "course_id": "probability_theory", + "query": "做解 令$3-4\\hat{\\theta}=2$,解得 的矩估计$\\hat{\\theta}_M=\\frac{1}{4}$. 对于给定的样本值,似然函数为 令 ,解得 .因 不合题意,所以 的最大似然估计为$\\hat{\\the时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q16:c03", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "c4c95a7111601f00b9b7c078db34d7e193490c160ccf6c274158e73a648d39f0", + "text_excerpt": "**解** ![image](assets/probability-theory-010/image-102.png)\n\n![image](assets/probability-theory-010/image-103.png)\n\n令$3-4\\hat{\\theta}=2$,解得![image](assets/probability-theory-010/image-105.png)的矩估计$\\hat{\\theta}_M=\\frac{1}{4}$. (5", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:024", + "course_id": "probability_theory", + "query": "这类题一般怎么考?能用且 $P\\left \\{ {{X}^{\\mathrm {2}}\\mathrm {=}{Y}^{\\mathrm {2}}}\\right \\}\\mathrm {=1.}$ 1. 求二维随机向量$\\mathrm {(}X\\ma举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q16:c04", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ef67a93b81ea013ea92f2af524bed3a5c95e391147c89a0ac5ec3eb969ab4202", + "text_excerpt": "且 $P\\left \\{ {{X}^{\\mathrm {2}}\\mathrm {=}{Y}^{\\mathrm {2}}}\\right \\}\\mathrm {=1.}$\n1. 求二维随机向量$\\mathrm {(}X\\mathrm {,}Y\\mathrm {)}$ 的概率分布. (2) 求 $Z\\mathrm {=}XY$ 的数学期望E(*Z*). (3) 求 $X$ 与*Y* 的相关系数$\\rho_{XY}$.\n\n解: (1) 由 $P\\left \\{ {{X", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:025", + "course_id": "probability_theory", + "query": "$$ P\\mathrm {\\{}Y\\mathrm {=-1\\} =}P\\mathrm {\\{}X\\mathrm {=0,}Y\\mathrm {=-1\\} +}P\\mathrm {\\{}X\\mathrm {=1,}Y\\ma怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q16:c05", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "7ecda7410e586f97ac8418dbceedcdfa27c4e4fc9b7259f715c96dbe083177ac", + "text_excerpt": "$$\nP\\mathrm {\\{}Y\\mathrm {=-1\\} =}P\\mathrm {\\{}X\\mathrm {=0,}Y\\mathrm {=-1\\} +}P\\mathrm {\\{}X\\mathrm {=1,}Y\\mathrm {=-1\\} }\\mathrm {}\n$$\n\n$$\n\\mathrm {\\therefore }P\\mathrm {\\{}X\\mathrm {=1,}Y\\mathrm {=-1\\} =}\\frac {\\mathrm {1}} {\\mathrm {3}}", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:026", + "course_id": "probability_theory", + "query": "做(2) 因为 $Z\\mathrm {=}XY$ 的可能取值为 $\\mathrm {-1, 0, 1}$. $$ \\begin {matrix} P\\left \\{ {Z\\mathrm {=-1}}\\right \\}\\ma时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q17:c01", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5007b04e6526230ca0a7ee8d08f0ccb5be40b61e168b70c4c86be1682402256c", + "text_excerpt": "(2) 因为 $Z\\mathrm {=}XY$ 的可能取值为 $\\mathrm {-1, 0, 1}$.\n\n$$\n\\begin {matrix} P\\left \\{ {Z\\mathrm {=-1}}\\right \\}\\mathrm {=}P\\left \\{ {XY\\mathrm {=-1}}\\right \\}\\mathrm {=}P\\left \\{ {X\\mathrm {=1,}Y\\mathrm {=-1}}\\right \\}\\mathrm {=}\\frac {\\mat", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:027", + "course_id": "probability_theory", + "query": "$$ \\begin {matrix} \\left ( {3}\\right ) E\\mathrm {(}X\\mathrm {)=0\\cdot }\\frac {\\mathrm {1}} {\\mathrm {3}}\\mathr的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "probability-theory-010:q-probability-theory-010-q17:c02", + "exists": true, + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "73eba05e65aec556c5428f425ef8b7c26850b3add7b33421b71daae862cf396d", + "text_excerpt": "$$\n\\begin {matrix} \\left ( {3}\\right ) E\\mathrm {(}X\\mathrm {)=0\\cdot }\\frac {\\mathrm {1}} {\\mathrm {3}}\\mathrm {+1\\cdot }\\frac {\\mathrm {2}} {\\mathrm {3}}\\mathrm {=}\\frac {\\mathrm {2}} {\\mathrm {3}} \\\\ E\\mathrm {(}Y\\mathrm {)=(-1)\\cdot }\\f", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:028", + "course_id": "probability_theory", + "query": "2014春B卷无答案里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "probability-theory-011:h-2014春b卷无答案:c01", + "exists": true, + "source_id": "probability-theory-011", + "source_title": "2014春B卷无答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "1bd9e256eced47a9ed699e37abfe07146600581f26a0bc1c1dc57712ea0cd0e1", + "text_excerpt": "**诚信应考,考试作弊将带来严重后果!**\n\n**华南理工大学本科生期末考试**\n\n**《概率论与数理统计》B卷**\n\n**注意事项:1.** **开考前请将密封线内各项信息填写清楚;**\n\n**2.** **所有答案请直接答在试卷上;**\n\n**3.考试形式:闭卷;**\n\n**4.** **本试卷共八大题,满分100分,**\t**考试时间120分钟**。\n\n| **题 号** | **一** | **二** | **三** | **四** | **五** | **六** |", + "flags": [] + } + ] + }, + { + "legacy_id": "probability_theory:029", + "course_id": "probability_theory", + "query": "做(1)头两位数码都是8的概率时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "probability-theory-011:q-probability-theory-011-q1:c01", + "exists": true, + "source_id": "probability-theory-011", + "source_title": "2014春B卷无答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "860bec1e3113d8de4b5afc5c51aad98f575add43b60ea04d95114d42b988fc5c", + "text_excerpt": "(1)头两位数码都是8的概率;", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "probability_theory:030", + "course_id": "probability_theory", + "query": "这类题一般怎么考?能用(2)头两位数码至少有一个不超过8的概率举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "probability-theory-011:q-probability-theory-011-q2:c01", + "exists": true, + "source_id": "probability-theory-011", + "source_title": "2014春B卷无答案", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6523f01d00fb18f5d5078e1ea45c599dc7153a46cde84bbd954667e04a5fb2cf", + "text_excerpt": "(2)头两位数码至少有一个不超过8的概率;", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "signals_and_communication:001", + "course_id": "signals_and_communication", + "query": "实验手册-v2-2025主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c01", + "exists": true, + "source_id": "signals-and-communication-001", + "source_title": "信号处理与通信基础-实验手册-v2-2025", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a56294103f8d6c72d3453e74bbfd1520dcdff00f9acea43b5a43e60b60a43263", + "text_excerpt": "信号处理与通信基础实验手册\n\n(v2版本)\n\n目录\n\n实验一 用MATLAB演示采样频率对波形混叠的影响\t1\n\n实验二 PCM编码与解码仿真\t6\n\n实验三 用MATLAB验证单位脉冲序列的时移特性\t12\n\n实验四 线性分组码的差错控制系统仿真\t21\n\n附录1 SIMULINK操作示例\t29\n\n实验一 用MATLAB演示采样频率对波形混叠的影响\n\n**一、实验目的**\n\n直观理解奈奎斯特采样定理:采样频率≥2×信号频率。\n\n观察欠采样导致的频率混叠(alias)现象。\n\n学会", + "flags": [] + } + ] + }, + { + "legacy_id": "signals_and_communication:002", + "course_id": "signals_and_communication", + "query": "我想先复习实验手册-v2-2025,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c02", + "exists": true, + "source_id": "signals-and-communication-001", + "source_title": "信号处理与通信基础-实验手册-v2-2025", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a87f9da4266f94450259f00e1a070d21722f98eb352966b31c3127f819308ed3", + "text_excerpt": "title('Fs = 120 Hz,出现混叠');\n\nxlabel('时间 (s)'); ylabel('幅度');\n\n观察:\n\n• 上图红点正好落在80 Hz波形上,波形形状保持。\n\n• 下图蓝点形成的包络频率明显低于80 Hz,约为40 Hz,这就是混叠。\n\n思考:如果Fs取160Hz,会发生什么?\n\n实验二 PCM编码与解码仿真\n- **实验目的**\n\n通过MATLAB simulink仿真实验,加深对PCM编码原理的理解。\n- **实验要求**\n1. 独立完成实验内", + "flags": [] + } + ] + }, + { + "legacy_id": "signals_and_communication:003", + "course_id": "signals_and_communication", + "query": "复习实验手册-v2-2025时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c03", + "exists": true, + "source_id": "signals-and-communication-001", + "source_title": "信号处理与通信基础-实验手册-v2-2025", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0cbceccece8a4ea7e8fe531a2f71d166c06fd9188539eb8f7a202408e7e6b883", + "text_excerpt": "根据语音信号的统计结果:在信号动态方位$\\mathrm {\\ge 40dB}$的情况下信噪比不硬低于26dB。因此用8位量化器,量化间隔为$\\mathrm {125}\\mathrm {\\mu }\\mathrm {s}$。\n 1. 编码器\n\n编码器是将量化后信号变成适合信道传输的信号。\n 1. 解码器\n\n将从信道接手到的信息进行解码\n\nA律解压:\n\n对解码后的信号量化值进行扩展,得到重建信号\n\n零阶保持器(Zero-Order Hold):\n\n零阶保持完成将重建信号转换为连", + "flags": [] + } + ] + }, + { + "legacy_id": "signals_and_communication:004", + "course_id": "signals_and_communication", + "query": "实验手册-v2-2025里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c04", + "exists": true, + "source_id": "signals-and-communication-001", + "source_title": "信号处理与通信基础-实验手册-v2-2025", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "85e8220560cd0a8e98af5a34ed21034c64b808e6332f6cc94542563c5ad82ed6", + "text_excerpt": "• δ[n-15] (k=15)\n\n用 stem 图显示四条序列,要求:\n\n• 纵轴范围统一为[-0.1, 1.1],便于比较。\n\n• 用不同颜色区分,并在图中标注“脉冲位置 n=k”。\n\n记录观察结果,回答:\n\n• 脉冲出现的位置与k值的关系;\n\n• 如果将δ[n-8]改为δ[n+2](k=-2),图形将如何变化?\n\n三、实验原理\n\n离散时间单位脉冲定义为\n\nδ[n] = 1, n = 0\n\nδ[n] = 0, n ≠ 0\n\n时移k个采样点后:\n\nδ[n-k] = 1, n", + "flags": [] + } + ] + }, + { + "legacy_id": "signals_and_communication:005", + "course_id": "signals_and_communication", + "query": "学习实验手册-v2-2025时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c05", + "exists": true, + "source_id": "signals-and-communication-001", + "source_title": "信号处理与通信基础-实验手册-v2-2025", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "41b5e83b6bd50c217663d28ffd340c8d7f74f8fa7d0ab963df8dbe16fc750383", + "text_excerpt": "k = -2; % 负时移\n\ndelta_neg = double(n == k);\n\nstem(n, delta_neg, 'k-d', 'LineWidth', 1.5); xlim([-3 N]);\n\ntitle('\\delta[n+2] 的波形(k=-2,左移)');\n\n即可看到脉冲出现在 n=-2,序列整体左移 2 位。\n\n实验四 线性分组码的差错控制系统仿真\n- **实验目的**\n\n理解差错控制系统的基本原理,通过MATLAB Si", + "flags": [] + } + ] + }, + { + "legacy_id": "signals_and_communication:006", + "course_id": "signals_and_communication", + "query": "考试会怎么考实验手册-v2-2025?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c06", + "exists": true, + "source_id": "signals-and-communication-001", + "source_title": "信号处理与通信基础-实验手册-v2-2025", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "2e703a67f5981dd3b61b7cff97e44e72573c795021249def7024366e63d0f91b", + "text_excerpt": "![image](assets/signals-and-communication-001/image-011.png)\n\n图6 二进制线性解码器参数\n\n![image](assets/signals-and-communication-001/image-012.png)\n\n图7 误差率计算模块参数\n\n![image](assets/signals-and-communication-001/image-013.png)\n\n图8 Simulink输出模块参数\n1. **线性", + "flags": [] + } + ] + }, + { + "legacy_id": "signals_and_communication:007", + "course_id": "signals_and_communication", + "query": "实验手册-v2-2025主要讲什么?,第7条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c07", + "exists": true, + "source_id": "signals-and-communication-001", + "source_title": "信号处理与通信基础-实验手册-v2-2025", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "47ee7b176a0fd75769819411b173ce815e2e1aa66cdfe4938abbb0b2e3a6e477", + "text_excerpt": "如下图所示,通过搜索框可以快速地找到所需要的组件,右键点击将组建添加到模型当中。\n\n![image](assets/signals-and-communication-001/image-021.png)\n\n通过双击模型当中的组件来设置组件的参数,如下图所示。\n\n![image](assets/signals-and-communication-001/image-022.png)\n\n模型构建完成后,保存模型为.slx文件如下图所示。若为需要编写代码的实验(实验四),则需要创", + "flags": [] + } + ] + }, + { + "legacy_id": "signals_and_communication:008", + "course_id": "signals_and_communication", + "query": "我想先复习实验报告模板,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-002:h-实验报告模板:c01", + "exists": true, + "source_id": "signals-and-communication-002", + "source_title": "实验报告模板", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "381d5fe515144703dc55137eb5cda3e16df00f74aa6bb85806d843058cbb784e", + "text_excerpt": "华南理工大学\n\n《信号处理与通信基础》课程实验报告\n\n实验题目:\n\n姓名: 学号:\n\n班级: 组别:\n\n合作者:\n\n指导教师:\n\n| **实验概述** |\n|---|\n| 【实验目的及要求】
1 实验目的:
2 实验要求:
【实验环境】
PC机,WINDOWS操作系统,Linux操作系统,路由器,交换机 |\n| **实验内容** |\n| 【实验过程】
实验步骤:
二、", + "flags": [] + } + ] + }, + { + "legacy_id": "signals_and_communication:009", + "course_id": "signals_and_communication", + "query": "复习习题讲解-通信部分-2025F时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-003:p1:c01", + "exists": true, + "source_id": "signals-and-communication-003", + "source_title": "习题讲解-通信部分-2025F", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "308a4a340b73a7b55fa92f0223ebc049f246c4c7616e13f7a701e23df873febe", + "text_excerpt": "![page-001.jpg](assets/signals-and-communication-003/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "signals_and_communication:010", + "course_id": "signals_and_communication", + "query": "习题讲解-通信部分-2025F里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-003:p2:c01", + "exists": true, + "source_id": "signals-and-communication-003", + "source_title": "习题讲解-通信部分-2025F", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "c287548c119bd22bfb4856ccc76295a92de2629f2a56a323964ec99d023c537c", + "text_excerpt": "![page-002.jpg](assets/signals-and-communication-003/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "signals_and_communication:011", + "course_id": "signals_and_communication", + "query": "学习习题讲解-通信部分-2025F时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-003:p3:c01", + "exists": true, + "source_id": "signals-and-communication-003", + "source_title": "习题讲解-通信部分-2025F", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "c93222865eb4130d25188b1ac2b26b84e771fcac7c50fd36ad0de930cc2a3f88", + "text_excerpt": "![page-003.jpg](assets/signals-and-communication-003/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "signals_and_communication:012", + "course_id": "signals_and_communication", + "query": "考试会怎么考习题讲解-通信部分-2025F?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-003:p4:c01", + "exists": true, + "source_id": "signals-and-communication-003", + "source_title": "习题讲解-通信部分-2025F", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "e9b7676456457a16c095875115ce76380a3f7fe22d65f1f0cd9a15555a0cf027", + "text_excerpt": "![page-004.jpg](assets/signals-and-communication-003/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "signals_and_communication:013", + "course_id": "signals_and_communication", + "query": "习题讲解-通信部分-2025F主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-003:p5:c01", + "exists": true, + "source_id": "signals-and-communication-003", + "source_title": "习题讲解-通信部分-2025F", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "53abb3dbd9fb0aa7a22922269e5f528c33c023238edb33984e45746bfa1106d2", + "text_excerpt": "![page-005.jpg](assets/signals-and-communication-003/page-005.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "signals_and_communication:014", + "course_id": "signals_and_communication", + "query": "我想先复习习题讲解-通信部分-2025F,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-003:p6:c01", + "exists": true, + "source_id": "signals-and-communication-003", + "source_title": "习题讲解-通信部分-2025F", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "dc93b2588f6654bb713655ed6010128e2d61500c2c0a656497d1051239edb575", + "text_excerpt": "![page-006.jpg](assets/signals-and-communication-003/page-006.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "signals_and_communication:015", + "course_id": "signals_and_communication", + "query": "复习习题讲解-通信部分-2025F时哪些内容最重要?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-003:p7:c01", + "exists": true, + "source_id": "signals-and-communication-003", + "source_title": "习题讲解-通信部分-2025F", + "locator_type": "page", + "locator_start": 7, + "text_sha256": "ce82393e6ec97cc7c0ce110f0749bb696f37cf052c41debaaa4a0ceb434d34fe", + "text_excerpt": "![page-007.jpg](assets/signals-and-communication-003/page-007.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "signals_and_communication:016", + "course_id": "signals_and_communication", + "query": "习题讲解-通信部分-2025F里的方法或结论怎么理解?,见第8页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-003:p8:c01", + "exists": true, + "source_id": "signals-and-communication-003", + "source_title": "习题讲解-通信部分-2025F", + "locator_type": "page", + "locator_start": 8, + "text_sha256": "a4a3817918deabf8e14250d81a6630952e721ebe2abd3c7c75197f9b3358f998", + "text_excerpt": "![page-008.jpg](assets/signals-and-communication-003/page-008.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "signals_and_communication:017", + "course_id": "signals_and_communication", + "query": "学习习题讲解-通信部分-2025F时哪些概念容易混淆?,见第9页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-003:p9:c01", + "exists": true, + "source_id": "signals-and-communication-003", + "source_title": "习题讲解-通信部分-2025F", + "locator_type": "page", + "locator_start": 9, + "text_sha256": "20c0351f6099bc946cad291e1093fc6729301984277538c1d7f6ff8dd2998cb6", + "text_excerpt": "![page-009.jpg](assets/signals-and-communication-003/page-009.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "signals_and_communication:018", + "course_id": "signals_and_communication", + "query": "考试会怎么考习题讲解-通信部分-2025F?,见第10页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-003:p10:c01", + "exists": true, + "source_id": "signals-and-communication-003", + "source_title": "习题讲解-通信部分-2025F", + "locator_type": "page", + "locator_start": 10, + "text_sha256": "48271092573606d127956d6fa12144584c8ed4624d6ed7117020971ec0954301", + "text_excerpt": "![page-010.jpg](assets/signals-and-communication-003/page-010.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "signals_and_communication:019", + "course_id": "signals_and_communication", + "query": "习题讲解-通信部分-2025F主要讲什么?,见第11页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-003:p11:c01", + "exists": true, + "source_id": "signals-and-communication-003", + "source_title": "习题讲解-通信部分-2025F", + "locator_type": "page", + "locator_start": 11, + "text_sha256": "612b55625dcee5ea3bc1acc2d2dae40cef112900bcc3c56b15553736dd6873ce", + "text_excerpt": "![page-011.jpg](assets/signals-and-communication-003/page-011.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "signals_and_communication:020", + "course_id": "signals_and_communication", + "query": "我想先复习习题讲解-通信部分-2025F,应该从哪里开始?,见第12页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-003:p12:c01", + "exists": true, + "source_id": "signals-and-communication-003", + "source_title": "习题讲解-通信部分-2025F", + "locator_type": "page", + "locator_start": 12, + "text_sha256": "f19ed82798192e81d9e87989f356d06a85d06c571b01968d980ff3c73b8689a4", + "text_excerpt": "![page-012.jpg](assets/signals-and-communication-003/page-012.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "signals_and_communication:021", + "course_id": "signals_and_communication", + "query": "复习习题讲解-通信部分-2025F时哪些内容最重要?,见第13页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-003:p13:c01", + "exists": true, + "source_id": "signals-and-communication-003", + "source_title": "习题讲解-通信部分-2025F", + "locator_type": "page", + "locator_start": 13, + "text_sha256": "7dd540eefe1b1b83c9c8dcd217b45dac300790ff724fab149ff618d295b7a702", + "text_excerpt": "![page-013.jpg](assets/signals-and-communication-003/page-013.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "signals_and_communication:022", + "course_id": "signals_and_communication", + "query": "习题讲解-通信部分-2025F里的方法或结论怎么理解?,见第14页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-003:p14:c01", + "exists": true, + "source_id": "signals-and-communication-003", + "source_title": "习题讲解-通信部分-2025F", + "locator_type": "page", + "locator_start": 14, + "text_sha256": "c2ba9ea165e6cdc8609d7a44372f673a096c267d99a50bd7e7592e44405b289b", + "text_excerpt": "![page-014.jpg](assets/signals-and-communication-003/page-014.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "signals_and_communication:023", + "course_id": "signals_and_communication", + "query": "学习习题讲解-通信部分-2025F时哪些概念容易混淆?,见第15页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-003:p15:c01", + "exists": true, + "source_id": "signals-and-communication-003", + "source_title": "习题讲解-通信部分-2025F", + "locator_type": "page", + "locator_start": 15, + "text_sha256": "811d9d3f50218427b4cdc41debf1b366e40b6b601208fdb55b4a870b23dd7c24", + "text_excerpt": "![page-015.jpg](assets/signals-and-communication-003/page-015.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "signals_and_communication:024", + "course_id": "signals_and_communication", + "query": "考试会怎么考习题讲解-通信部分-2025F?,见第16页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-003:p16:c01", + "exists": true, + "source_id": "signals-and-communication-003", + "source_title": "习题讲解-通信部分-2025F", + "locator_type": "page", + "locator_start": 16, + "text_sha256": "ddddb080505320e67215c702120d7a12f55c23ccee6ba4231e518c5c986baadc", + "text_excerpt": "![page-016.jpg](assets/signals-and-communication-003/page-016.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "signals_and_communication:025", + "course_id": "signals_and_communication", + "query": "信息论基础 第4章作业主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-004:s1:c01", + "exists": true, + "source_id": "signals-and-communication-004", + "source_title": "信息论基础-作业-2025F", + "locator_type": "slide", + "locator_start": 1, + "text_sha256": "d63dbc0ba978fbf988709d07767dd2a9bb426fe375005aabff99186e5771cbdb", + "text_excerpt": "- 总分: 100\n- *此封面页请勿删除,删除后将无法上传至试卷库,添加菜单栏任意题型即可制作试卷。本提示将在上传时自动隐藏。", + "flags": [] + } + ] + }, + { + "legacy_id": "signals_and_communication:026", + "course_id": "signals_and_communication", + "query": "我想先复习信息论基础 第4章作业,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-004:s2:c01", + "exists": true, + "source_id": "signals-and-communication-004", + "source_title": "信息论基础-作业-2025F", + "locator_type": "slide", + "locator_start": 2, + "text_sha256": "ec504ab7af6b28ea49b8da5e1088d9444bfd4915e796e17f735a315b1a8009ca", + "text_excerpt": "- 第4章习题:4.1,4.2,4.11,4.17,4.29\n- 主观题\n- 100分\n![image](assets/signals-and-communication-004/image-001.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "signals_and_communication:027", + "course_id": "signals_and_communication", + "query": "复习信息论基础 第4章作业时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-004:s3:c01", + "exists": true, + "source_id": "signals-and-communication-004", + "source_title": "信息论基础-作业-2025F", + "locator_type": "slide", + "locator_start": 3, + "text_sha256": "bed2092f8d2efa2ade69da42e33df9b602745736e0b80fd524ce592b99249f27", + "text_excerpt": "![image](assets/signals-and-communication-004/image-002.png)\n![image](assets/signals-and-communication-004/image-003.png)\n![image](assets/signals-and-communication-004/image-004.png)\n![image](assets/signals-and-communication-004/image-005.p", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "signals_and_communication:028", + "course_id": "signals_and_communication", + "query": "通信基础-信息论基础1-2025F里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-005:p1:c01", + "exists": true, + "source_id": "signals-and-communication-005", + "source_title": "通信基础-信息论基础1-2025F", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "b326201bdeccf9eb7c03b2e3ddde619f63b08a4409a876d0d60560929277a5d3", + "text_excerpt": "信号处理与通信基础\n\n信息论基础(I)\n\n胡金龙\nJLHu@scut.edu.cn\n华南理工大学 计算机科学与工程学院", + "flags": [] + } + ] + }, + { + "legacy_id": "signals_and_communication:029", + "course_id": "signals_and_communication", + "query": "学习通信基础-信息论基础1-2025F时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-005:p2:c01", + "exists": true, + "source_id": "signals-and-communication-005", + "source_title": "通信基础-信息论基础1-2025F", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "9f6505e80efcf4866d3703b29d7b97462d79933c481b46169e1215fa3e9954f8", + "text_excerpt": "传统通信的形式(1)\n\n引言\n\n如何传递信息?\n\n2\n\n![image](assets/signals-and-communication-005/image-001.jpeg)\n\n![image](assets/signals-and-communication-005/image-002.jpeg)\n\n![image](assets/signals-and-communication-005/image-003.jpeg)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "signals_and_communication:030", + "course_id": "signals_and_communication", + "query": "考试会怎么考通信基础-信息论基础1-2025F?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "signals-and-communication-005:p3:c01", + "exists": true, + "source_id": "signals-and-communication-005", + "source_title": "通信基础-信息论基础1-2025F", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "45b82e425b1ddea89c1050f03d4a2f2d40ee63175d6c574e644de439c0874b42", + "text_excerpt": "海\n军\n旗\n语\n\n古\n代\n烽\n火\n边\n防\n\n传统通信的形式(2)\n\n![image](assets/signals-and-communication-005/image-004.jpeg)\n\n![image](assets/signals-and-communication-005/image-005.jpeg)\n\n![image](assets/signals-and-communication-005/image-006.jpeg)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "software_engineering:001", + "course_id": "software_engineering", + "query": "华南理工大学复习提纲主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "software-engineering-001:p1:c01", + "exists": true, + "source_id": "software-engineering-001", + "source_title": "华南理工大学软件工程复习提纲", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "82b0c5fc280abfea7cbe22e133633b5df8f62ad3520a20dc663bbb211264f101", + "text_excerpt": "![page-001.jpg](assets/software-engineering-001/page-001.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "software_engineering:002", + "course_id": "software_engineering", + "query": "我想先复习华南理工大学复习提纲,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "software-engineering-001:p2:c01", + "exists": true, + "source_id": "software-engineering-001", + "source_title": "华南理工大学软件工程复习提纲", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "e11206d3d410295cfff62f19900fc5d25fe5184a66355cc9721954344300563d", + "text_excerpt": "![page-002.jpg](assets/software-engineering-001/page-002.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "software_engineering:003", + "course_id": "software_engineering", + "query": "复习华南理工大学复习提纲时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "software-engineering-001:p3:c01", + "exists": true, + "source_id": "software-engineering-001", + "source_title": "华南理工大学软件工程复习提纲", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "15a19d457e641222e6dfc9d1a0de29403c1677e8c07a709d1ff652cdfd77f512", + "text_excerpt": "![page-003.jpg](assets/software-engineering-001/page-003.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "software_engineering:004", + "course_id": "software_engineering", + "query": "华南理工大学复习提纲里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "software-engineering-001:p4:c01", + "exists": true, + "source_id": "software-engineering-001", + "source_title": "华南理工大学软件工程复习提纲", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "d4499a60d52d1199a2256041e7480a333a4ef964e26a253718e82ce9f644006d", + "text_excerpt": "![page-004.jpg](assets/software-engineering-001/page-004.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "software_engineering:005", + "course_id": "software_engineering", + "query": "学习华南理工大学复习提纲时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "software-engineering-001:p5:c01", + "exists": true, + "source_id": "software-engineering-001", + "source_title": "华南理工大学软件工程复习提纲", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "009af1147bd4d2b64627bb7ea637a7f229e1eb44a5ac4725f5b3abf7ace2b12d", + "text_excerpt": "![page-005.jpg](assets/software-engineering-001/page-005.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "software_engineering:006", + "course_id": "software_engineering", + "query": "考试会怎么考华南理工大学复习提纲?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "software-engineering-001:p6:c01", + "exists": true, + "source_id": "software-engineering-001", + "source_title": "华南理工大学软件工程复习提纲", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "eabd840541ab3a5b4f3d7c8ab550b52a1af45e58882040e63c5ddee8e134ef72", + "text_excerpt": "![page-006.jpg](assets/software-engineering-001/page-006.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "software_engineering:007", + "course_id": "software_engineering", + "query": "华南理工大学复习提纲主要讲什么?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "software-engineering-001:p7:c01", + "exists": true, + "source_id": "software-engineering-001", + "source_title": "华南理工大学软件工程复习提纲", + "locator_type": "page", + "locator_start": 7, + "text_sha256": "7a12191695b628217073e1749d434d0625e61f9636416aa5ffc507c3f9bfe0ba", + "text_excerpt": "![page-007.jpg](assets/software-engineering-001/page-007.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "software_engineering:008", + "course_id": "software_engineering", + "query": "我想先复习华南理工大学复习提纲,应该从哪里开始?,见第8页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "software-engineering-001:p8:c01", + "exists": true, + "source_id": "software-engineering-001", + "source_title": "华南理工大学软件工程复习提纲", + "locator_type": "page", + "locator_start": 8, + "text_sha256": "6fe9a1f91145d5d5785c62cf2c9c91f8506dbe5640bbc50ff08b5894734ecd8f", + "text_excerpt": "![page-008.jpg](assets/software-engineering-001/page-008.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "software_engineering:009", + "course_id": "software_engineering", + "query": "复习华南理工大学复习提纲时哪些内容最重要?,见第9页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "software-engineering-001:p9:c01", + "exists": true, + "source_id": "software-engineering-001", + "source_title": "华南理工大学软件工程复习提纲", + "locator_type": "page", + "locator_start": 9, + "text_sha256": "37ff80438a716c806d4b0ee48a74091dc98fa72f7d508ea704c4cb642d125ac2", + "text_excerpt": "![page-009.jpg](assets/software-engineering-001/page-009.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "software_engineering:010", + "course_id": "software_engineering", + "query": "华南理工大学复习提纲里的方法或结论怎么理解?,见第10页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "software-engineering-001:p10:c01", + "exists": true, + "source_id": "software-engineering-001", + "source_title": "华南理工大学软件工程复习提纲", + "locator_type": "page", + "locator_start": 10, + "text_sha256": "1b1901c8925f5067e3538c450693b484d5fa685c6172d0624fa5b9f19c4f4c79", + "text_excerpt": "![page-010.jpg](assets/software-engineering-001/page-010.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "software_engineering:011", + "course_id": "software_engineering", + "query": "学习华南理工大学复习提纲时哪些概念容易混淆?,见第11页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "software-engineering-001:p11:c01", + "exists": true, + "source_id": "software-engineering-001", + "source_title": "华南理工大学软件工程复习提纲", + "locator_type": "page", + "locator_start": 11, + "text_sha256": "6e00b13c35bbec35db085a287de72db63896774ff8e940523a01eef3a530e137", + "text_excerpt": "![page-011.jpg](assets/software-engineering-001/page-011.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "software_engineering:012", + "course_id": "software_engineering", + "query": "考试会怎么考华南理工大学复习提纲?,见第12页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "software-engineering-001:p12:c01", + "exists": true, + "source_id": "software-engineering-001", + "source_title": "华南理工大学软件工程复习提纲", + "locator_type": "page", + "locator_start": 12, + "text_sha256": "50463f916ebc095423ff7ce9cc1f67feb51e45e71be1bed3f3fdae7c9da3e840", + "text_excerpt": "![page-012.jpg](assets/software-engineering-001/page-012.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "software_engineering:013", + "course_id": "software_engineering", + "query": "华南理工大学复习提纲主要讲什么?,见第13页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "software-engineering-001:p13:c01", + "exists": true, + "source_id": "software-engineering-001", + "source_title": "华南理工大学软件工程复习提纲", + "locator_type": "page", + "locator_start": 13, + "text_sha256": "0d42e88f8c6a8705f0580ca1e58088947630601a7ec2a65d6e2d7c9dcaa9c2b8", + "text_excerpt": "![page-013.jpg](assets/software-engineering-001/page-013.jpg)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "software_engineering:014", + "course_id": "software_engineering", + "query": "我想先复习课程总结,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-engineering-002:p1:c01", + "exists": true, + "source_id": "software-engineering-002", + "source_title": "软件工程-课程总结", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "9904073bdd34f82ced225ebeefeedf334266e485b8d3d6163a2a1fb2f8e9be1b", + "text_excerpt": "软件工程 课程总结\n\n• 华南理工大学 计算机科学与工程学院\n• 苏锦钿 (17311126764)\n• 2023年8月27日\n\n1", + "flags": [] + } + ] + }, + { + "legacy_id": "software_engineering:015", + "course_id": "software_engineering", + "query": "复习课程总结时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-engineering-002:p2:c01", + "exists": true, + "source_id": "software-engineering-002", + "source_title": "软件工程-课程总结", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "f39200565950cc6c4b9ae8cbfbb5fb15c7f1c2fe4c82f20e920383a5d07eb6dc", + "text_excerpt": "1. 软件工程概述\n\n• 1.什么是软件?是一系列按照特定顺序组织的计算机数据和指令的集\n\n合,包括程序、数据和文档。\n\n• 2.什么是软件危机,其内容主要是指什么?\n\n• 3.什么是软件工程?PP.24\n\n• 4.软件工程的目标(PP.41 )及其组成部分。方法、工具和过程。\n\n• 5.软件开发方法的定义。\n\n• 6.好的软件的一些主要衡量指标。例如McCall 的质量模型。\n\n2", + "flags": [] + } + ] + }, + { + "legacy_id": "software_engineering:016", + "course_id": "software_engineering", + "query": "课程总结里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-engineering-002:p3:c01", + "exists": true, + "source_id": "software-engineering-002", + "source_title": "软件工程-课程总结", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "5184cf055209b688560b2a67023d121f20a83f07a214cc9b54504aff13888ce1", + "text_excerpt": "2.什么是软件危机,其内容主要是指什么?\n\n软件的发展速度远远滞后于硬件的发展速度,不能满足社会日益增长的软\n件需求。软件开发周期长、成本高、质量差、维护困难。\n\n3\n\n![image](assets/software-engineering-002/image-001.png)", + "flags": [] + } + ] + }, + { + "legacy_id": "software_engineering:017", + "course_id": "software_engineering", + "query": "学习课程总结时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "software-engineering-002:p4:c01", + "exists": true, + "source_id": "software-engineering-002", + "source_title": "软件工程-课程总结", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "763cb043b7a451439620795a0bed6d3605b6318562ae6b3a4bec5f501d212dcc", + "text_excerpt": "2.什么是软件危机,其内容主要是指什么?\n\n4\n\n![image](assets/software-engineering-002/image-002.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "software_engineering:018", + "course_id": "software_engineering", + "query": "考试会怎么考课程总结?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "software-engineering-002:p5:c01", + "exists": true, + "source_id": "software-engineering-002", + "source_title": "软件工程-课程总结", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "6243dc616e163a7d8046a871e72fbcae5fd4bcf6fb00d3d764d3a3b7c1a11c85", + "text_excerpt": "3.什么是软件工程?PP.24\n\n5\n\n![image](assets/software-engineering-002/image-003.png)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "software_engineering:019", + "course_id": "software_engineering", + "query": "课程总结主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "software-engineering-002:p6:c01", + "exists": true, + "source_id": "software-engineering-002", + "source_title": "软件工程-课程总结", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "7ef4a6250bec8f0e3b97b5a298742dff1aa37b4660a44f7ecf73eb24728e5f7a", + "text_excerpt": "4. 软件工程的目标\n\n6\n\n![image](assets/software-engineering-002/image-004.png)\n\n![image](assets/software-engineering-002/image-005.jpeg)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "software_engineering:020", + "course_id": "software_engineering", + "query": "我想先复习课程总结,应该从哪里开始?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-engineering-002:p7:c01", + "exists": true, + "source_id": "software-engineering-002", + "source_title": "软件工程-课程总结", + "locator_type": "page", + "locator_start": 7, + "text_sha256": "a1c99ac328a03e99e6c0dbe1e8dc9caec57dd3e568d0ed4d4d42f8b5aa083015", + "text_excerpt": "5.软件开发方法的定义。\n\n软件开发方法是一种使用早已定义好的技术集及符号表\n示习惯来组织软件生产的过程。一般有8类。\n包括:结构化的方法 、 Jackson方法、 面向对象开发\n方法、原型等等。\n\n7", + "flags": [] + } + ] + }, + { + "legacy_id": "software_engineering:021", + "course_id": "software_engineering", + "query": "复习课程总结时哪些内容最重要?,见第8页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "software-engineering-002:p8:c01", + "exists": true, + "source_id": "software-engineering-002", + "source_title": "软件工程-课程总结", + "locator_type": "page", + "locator_start": 8, + "text_sha256": "900ba4cedf3eccb31c8f2b8590190d2a1a2c5254b09f6faadbd41c780083a012", + "text_excerpt": "6.好的软件的一些主要衡量指标。例如McCall 的质量模型。\n\n8\n\n![image](assets/software-engineering-002/image-006.jpeg)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "software_engineering:022", + "course_id": "software_engineering", + "query": "课程总结里的方法或结论怎么理解?,见第9页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-engineering-002:p9:c01", + "exists": true, + "source_id": "software-engineering-002", + "source_title": "软件工程-课程总结", + "locator_type": "page", + "locator_start": 9, + "text_sha256": "9702324b56664b714e12a3b2556711a8106b1bf063b1ce9650c10766b8313771", + "text_excerpt": "2. 过程和生命周期建模\n\n• 1.什么是软件生命周期?主要分为哪些阶段?各个阶段的主要任务及\n\n产生的主要制品?区分软件工程和软件过程。\n\n• 2.可行性研究及需求分析的定义。\n\n• 3.典型的软件开发过程模型的特点(优缺点、文档评审和里程碑等)\n\n及要求,特别是原型法、瀑布模型、螺旋模型、增量和迭代等。\n\n• 4. 原型法的特点以及分类:探索型原型、实验型原型和演化型。\n\n• 5.敏捷开发方法和极限编程的特点,基本原则有哪些。\n\n• 6. CMM/CMMI及其层次划分。\n", + "flags": [] + } + ] + }, + { + "legacy_id": "software_engineering:023", + "course_id": "software_engineering", + "query": "学习课程总结时哪些概念容易混淆?,见第10页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-engineering-002:p10:c01", + "exists": true, + "source_id": "software-engineering-002", + "source_title": "软件工程-课程总结", + "locator_type": "page", + "locator_start": 10, + "text_sha256": "db2bdab9dff99a2c573c52c5ed6cd8b7f0f1c734f8da40464922ed1d3ecc0e82", + "text_excerpt": "1.什么是软件生命周期?主要分为哪些阶段?各个阶段的主要任务及产生的主要制\n\n品?区分软件工程和软件过程。\n\n10\n\n![image](assets/software-engineering-002/image-007.png)\n\n![image](assets/software-engineering-002/image-008.png)", + "flags": [] + } + ] + }, + { + "legacy_id": "software_engineering:024", + "course_id": "software_engineering", + "query": "考试会怎么考课程总结?,见第11页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-engineering-002:p11:c01", + "exists": true, + "source_id": "software-engineering-002", + "source_title": "软件工程-课程总结", + "locator_type": "page", + "locator_start": 11, + "text_sha256": "6c0199f7e809bd9fa33b625e65b4d7497e606f8be942c6b81f59454131109bd9", + "text_excerpt": "1.什么是软件生命周期?主要分为哪些阶段?各个阶段的主要任务及产生的主要制\n\n品?区分软件工程和软件过程。\n\n11\n\n![image](assets/software-engineering-002/image-009.jpeg)\n\n![image](assets/software-engineering-002/image-010.jpeg)", + "flags": [] + } + ] + }, + { + "legacy_id": "software_engineering:025", + "course_id": "software_engineering", + "query": "课程总结主要讲什么?,见第12页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-engineering-002:p12:c01", + "exists": true, + "source_id": "software-engineering-002", + "source_title": "软件工程-课程总结", + "locator_type": "page", + "locator_start": 12, + "text_sha256": "5dbc48c8dc16640350ef8b2fdbea37b8b3aa24ae0524287a9540175550e394c3", + "text_excerpt": "1.什么是软件生命周期?主要分为哪些阶段?各个阶段的主要任务及产生的主要制\n\n品?区分软件工程和软件过程。\n\n12\n\n![image](assets/software-engineering-002/image-011.jpeg)\n\n![image](assets/software-engineering-002/image-012.jpeg)", + "flags": [] + } + ] + }, + { + "legacy_id": "software_engineering:026", + "course_id": "software_engineering", + "query": "我想先复习课程总结,应该从哪里开始?,见第13页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-engineering-002:p13:c01", + "exists": true, + "source_id": "software-engineering-002", + "source_title": "软件工程-课程总结", + "locator_type": "page", + "locator_start": 13, + "text_sha256": "67db11bb844c4b34f0a237d3bcce1afeece6d9bc29aff270d20542d77ec0d135", + "text_excerpt": "1.什么是软件生命周期?主要分为哪些阶段?各个阶段的主要任务及产生的主要制\n\n品?区分软件工程和软件过程。\n\n软件的诞生及其生命周期是一个过程,我们总体\n上称这个过程为软件过程,是指在软件开发的整\n个过程以及开发完成后的维护中的所有活动工作。\n\n13\n\n![image](assets/software-engineering-002/image-013.png)", + "flags": [] + } + ] + }, + { + "legacy_id": "software_engineering:027", + "course_id": "software_engineering", + "query": "复习课程总结时哪些内容最重要?,见第14页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "software-engineering-002:p14:c01", + "exists": true, + "source_id": "software-engineering-002", + "source_title": "软件工程-课程总结", + "locator_type": "page", + "locator_start": 14, + "text_sha256": "2e1e2cd9290ef98f82276e27dd605da0ef4684e9ec09bc8ddbcfff55fedc8667", + "text_excerpt": "2.可行性研究及需求分析的定义。\n\n14\n\n![image](assets/software-engineering-002/image-014.jpeg)\n\n![image](assets/software-engineering-002/image-015.jpeg)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "software_engineering:028", + "course_id": "software_engineering", + "query": "课程总结里的方法或结论怎么理解?,见第15页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-engineering-002:p15:c01", + "exists": true, + "source_id": "software-engineering-002", + "source_title": "软件工程-课程总结", + "locator_type": "page", + "locator_start": 15, + "text_sha256": "3510e780253bd18c241825cb3d15a8d8bb1daf2e00972a6d5e559b9077791344", + "text_excerpt": "3.典型的软件开发过程模型的特点(优缺点、文档评审和里程碑等)及要求,特别\n\n是原型法、瀑布模型、螺旋模型、增量和迭代等。\n\n瀑布模型\n\n15\n\n![image](assets/software-engineering-002/image-016.png)\n\n![image](assets/software-engineering-002/image-017.png)\n\n![image](assets/software-engineering-002/image-018.pn", + "flags": [] + } + ] + }, + { + "legacy_id": "software_engineering:029", + "course_id": "software_engineering", + "query": "学习课程总结时哪些概念容易混淆?,见第16页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-engineering-002:p16:c01", + "exists": true, + "source_id": "software-engineering-002", + "source_title": "软件工程-课程总结", + "locator_type": "page", + "locator_start": 16, + "text_sha256": "0bb875428329b222f1fa4a1a366121c3c69e974c5c374e99be4604d369d01ffc", + "text_excerpt": "3.典型的软件开发过程模型的特点(优缺点、文档评审和里程碑等)及要求,特别\n\n是原型法、瀑布模型、螺旋模型、增量和迭代等。\n\n16\n\n![image](assets/software-engineering-002/image-019.png)\n\n![image](assets/software-engineering-002/image-020.png)\n\n![image](assets/software-engineering-002/image-021.png)\n\n![", + "flags": [] + } + ] + }, + { + "legacy_id": "software_engineering:030", + "course_id": "software_engineering", + "query": "考试会怎么考课程总结?,见第17页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-engineering-002:p17:c01", + "exists": true, + "source_id": "software-engineering-002", + "source_title": "软件工程-课程总结", + "locator_type": "page", + "locator_start": 17, + "text_sha256": "3dd58ba039e6b0e347f5a7e780079d721bdc4e233e0f385a59a67052fcb2e20e", + "text_excerpt": "3.典型的软件开发过程模型的特点(优缺点、文档评审和里程碑等)及要求,特别\n\n是原型法、瀑布模型、螺旋模型、增量和迭代等。\n\n17\n\n![image](assets/software-engineering-002/image-023.jpeg)", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:001", + "course_id": "software_testing", + "query": "Ch0 Course Overview主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "software-testing-001:p1:c01", + "exists": true, + "source_id": "software-testing-001", + "source_title": "Ch0 Course_Overview", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "1ae84236caacee6046603880545ab4752752c88226da3cb671d141d339fe5db3", + "text_excerpt": "Software Testing and Maintenance\n\nSpring, 2026", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "software_testing:002", + "course_id": "software_testing", + "query": "我想先复习Ch0 Course Overview,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-001:p2:c01", + "exists": true, + "source_id": "software-testing-001", + "source_title": "Ch0 Course_Overview", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "732132424c883dc63861342e6aeee127a9f01f6aa161b230741a54f93600a3d8", + "text_excerpt": "INTRODUCTION\n\nSoftware Testing is a critical element of developing\nquality software systems\n\nIt is a systematic approach to judge quality and discover\nbugs\n\nThis course presents the theory and practice of software\n\ntesting and Maintenance", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:003", + "course_id": "software_testing", + "query": "复习Ch0 Course Overview时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-001:p3:c01", + "exists": true, + "source_id": "software-testing-001", + "source_title": "Ch0 Course_Overview", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "2f8804902075fcd6733bdb497f4988033be4b778643bff79cde450a0bc7aca6b", + "text_excerpt": "INTRODUCTION\n\nTopics covered include:\n\nBlack-box and white-box testing, and related test\ncase generation\n\nTesting team and testing documentation\n Tools for software testing\n Performance testing basics\n Testing in the Software Pr", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:004", + "course_id": "software_testing", + "query": "Ch0 Course Overview里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-001:p4:c01", + "exists": true, + "source_id": "software-testing-001", + "source_title": "Ch0 Course_Overview", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "d743db8a80a98e814af6b8a1189e6ad13e53d569b0c0c5442c110d5e8394971c", + "text_excerpt": "COURSE OBJECTIVES\n\nUnderstand the concepts and theory related to software testing and quality\n\nassurance\n\nUnderstand the relationship between black-box and white-box testing, and\n\nknow how to apply as appropriate\n\nUnderstand different testi", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:005", + "course_id": "software_testing", + "query": "学习Ch0 Course Overview时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-001:p5:c01", + "exists": true, + "source_id": "software-testing-001", + "source_title": "Ch0 Course_Overview", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "e00db5ab9b58bdd7a914658728c14d609cd85623fbbbf9c8c734aeaf99f39c46", + "text_excerpt": "GRADING\n\nDaily performance (40%)\n\nFinal Exam (60%)\n\nPenalties for Cheating\n\nIf you cheat in this class, you will fail the class.\n\n![image](assets/software-testing-001/image-001.jpeg)", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:006", + "course_id": "software_testing", + "query": "考试会怎么考Ch0 Course Overview?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-001:p6:c01", + "exists": true, + "source_id": "software-testing-001", + "source_title": "Ch0 Course_Overview", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "504c8bb1dbf12ed9593fd1d335df3ee4024aee7dd00a7a843b47fc777980498d", + "text_excerpt": "TEXTBOOK\n\nSoftware Testing Principles and Practice\n\nSecond Edition, English language\nS. Brown, J. Timoney, T. Lysaght andD. Ye\n\nChina Machine Press, 2019\n\nThe book is developed over ten years and reflects the\nexperience in industry and lec", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:007", + "course_id": "software_testing", + "query": "Ch0 Course Overview主要讲什么?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-001:p7:c01", + "exists": true, + "source_id": "software-testing-001", + "source_title": "Ch0 Course_Overview", + "locator_type": "page", + "locator_start": 7, + "text_sha256": "d8dd8c21e557a6d769648b898451189d82032c498a494b2c815895eaa49227be", + "text_excerpt": "CONTENTS\n\nSoftware Testing Principles and Practice\n\n1. Introduction to Software Testing (Chapter 1)\n2. Testing in the software Process (Chapter 9)\n3. Black-Box Testing (Chapter 2&3)\n4. White-Box Testing ", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:008", + "course_id": "software_testing", + "query": "我想先复习Ch0 Course Overview,应该从哪里开始?,见第8页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-001:p8:c01", + "exists": true, + "source_id": "software-testing-001", + "source_title": "Ch0 Course_Overview", + "locator_type": "page", + "locator_start": 8, + "text_sha256": "0ef3fb41fc713d23c732c1be228adf224169fb8499a5a19648683b2d3af7af27", + "text_excerpt": "REFERENCES\n\nIntroduction to Software Testing\nSecond Edition, Paul Ammann&Jeff Offutt\n\nSoftware Testing\nSecond Edition, Ron Patton\n\nHow Google Test Software\n\nJames,Whittaker Jason,Arbon Jeff,Carollo\nPosts and Telecommunications Press, 2016", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:009", + "course_id": "software_testing", + "query": "复习Ch0 Course Overview时哪些内容最重要?,见第9页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-001:p9:c01", + "exists": true, + "source_id": "software-testing-001", + "source_title": "Ch0 Course_Overview", + "locator_type": "page", + "locator_start": 9, + "text_sha256": "46f519a0de90cdc7cb639f0842e9ae86be4b3ec9893f9b97cc61fb48e2403fd6", + "text_excerpt": "References Book\n\n软件测试方法和技术\n(第4版)\n作者:朱少民\n出版社:清华大学出版社\n出版时间:2022年11月\n\n9\n\n![image](assets/software-testing-001/image-007.jpeg)", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:010", + "course_id": "software_testing", + "query": "Ch1-1 Introduction里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-002:p1:c01", + "exists": true, + "source_id": "software-testing-002", + "source_title": "Ch1-1 Introduction", + "locator_type": "page", + "locator_start": 1, + "text_sha256": "d77157b8e9d8dd55fb4ee860234054bc11f692c0ec9adaeb9515984b7fd46824", + "text_excerpt": "Introduction to Software Testing\n\nSpring, 2026\n\n1", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:011", + "course_id": "software_testing", + "query": "学习Ch1-1 Introduction时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-002:p2:c01", + "exists": true, + "source_id": "software-testing-002", + "source_title": "Ch1-1 Introduction", + "locator_type": "page", + "locator_start": 2, + "text_sha256": "c1e12f32fc715582482fbab5f5adf02f950697f8d0be092930f46b1726bec864", + "text_excerpt": "Contents\n\nWhy do we test software?\n\n1.1 What is software?\n 1.2 What is bug?\n 1.3 Fault, Error and Failure\n 1.4 Adverse Effects of Faulty Software\n\nThe theory of Testing\n\n2.1 Verification and Validation\n 2.2 Goals of Testing Softwa", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:012", + "course_id": "software_testing", + "query": "考试会怎么考Ch1-1 Introduction?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-002:p3:c01", + "exists": true, + "source_id": "software-testing-002", + "source_title": "Ch1-1 Introduction", + "locator_type": "page", + "locator_start": 3, + "text_sha256": "2b7173737798d10364ccb16e4ae686b78c1000e767a2396df5bdad0b63e6c19a", + "text_excerpt": "Contents\n\nWhy do we test software?\n\n1.1 What is software?\n 1.2 What is bug?\n 1.3 Fault, Error and Failure\n 1.4 Adverse Effects of Faulty Software\n\n3", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:013", + "course_id": "software_testing", + "query": "Ch1-1 Introduction主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-002:p4:c01", + "exists": true, + "source_id": "software-testing-002", + "source_title": "Ch1-1 Introduction", + "locator_type": "page", + "locator_start": 4, + "text_sha256": "fae24a9f04660d65696f6d80b648cd6c369f38b04f0bcb874fa8fb31a29c3f62", + "text_excerpt": "1.1 What is Software ?\n\nA software system usually consists of a number of :\n\nInstructions within separate programs that when executed give some\n\ndesired function\n Data structures that enable the programs to adequately manipulate\n\ninformati", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:014", + "course_id": "software_testing", + "query": "我想先复习Ch1-1 Introduction,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-002:p5:c01", + "exists": true, + "source_id": "software-testing-002", + "source_title": "Ch1-1 Introduction", + "locator_type": "page", + "locator_start": 5, + "text_sha256": "1df460b54830242577468d4afb2951e9833fc8b08ab52d4bf1dec2cc8d1738c2", + "text_excerpt": "Early Days of Software\n\nComputer-based systems were developed using hardware-oriented\n\nmanagement\n\nProject managers focused on hardware\n Project managers applied the controls, methods, and tools that we\n\nrecognize as hardware engineering\n\n", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:015", + "course_id": "software_testing", + "query": "复习Ch1-1 Introduction时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-002:p6:c01", + "exists": true, + "source_id": "software-testing-002", + "source_title": "Ch1-1 Introduction", + "locator_type": "page", + "locator_start": 6, + "text_sha256": "39b2d4042cebe679ff2d416e3cd27b46682b6aecaedd66e914c6720f4a9f5c48", + "text_excerpt": "The Crisis in Software Engineering\n\nIn the 1970’s there were a number of problems with software:\n\nProjects were running over-budget\n Projects were running over-time\n The Software products were of low quality\n The Software products often ", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:016", + "course_id": "software_testing", + "query": "Ch1-1 Introduction里的方法或结论怎么理解?,见第7页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-002:p7:c01", + "exists": true, + "source_id": "software-testing-002", + "source_title": "Ch1-1 Introduction", + "locator_type": "page", + "locator_start": 7, + "text_sha256": "32006497c774f9679608084099a0c8345887b286dc418269d433ef1bed2450e2", + "text_excerpt": "Software Engineering\n\nThe actual term Software Engineering was first proposed as far back as 1968\n\nat a conference held to discuss “software crisis”\n\nIndividual approaches to program development did not scale up to large and complex\n\nsoftwa", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:017", + "course_id": "software_testing", + "query": "学习Ch1-1 Introduction时哪些概念容易混淆?,见第8页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-002:p8:c01", + "exists": true, + "source_id": "software-testing-002", + "source_title": "Ch1-1 Introduction", + "locator_type": "page", + "locator_start": 8, + "text_sha256": "1fdde13fd28f4b1c9b1f48ed492aeebac6aad03e57882df86546032fbe938641", + "text_excerpt": "Software in the 21st Century\n\nSoftware defines behavior\n\nServers, Storage, Network routers, Switching networks, other Infrastructure\n Today’s software market :\n\nmuch bigger\n more competitive\n more users\n Embedded Control Applications\n\nA", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:018", + "course_id": "software_testing", + "query": "考试会怎么考Ch1-1 Introduction?,见第9页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-002:p9:c01", + "exists": true, + "source_id": "software-testing-002", + "source_title": "Ch1-1 Introduction", + "locator_type": "page", + "locator_start": 9, + "text_sha256": "fec9fba67337e3aa241965a9edd2013142a8c822010d0652e981aa74cf47861b", + "text_excerpt": "Software is a Skin that Surrounds Our Civilization\n\nG\n,' .\n\nQuote due to Dr. Mark Harman\n\n9", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:019", + "course_id": "software_testing", + "query": "Ch1-1 Introduction主要讲什么?,见第10页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-002:p10:c01", + "exists": true, + "source_id": "software-testing-002", + "source_title": "Ch1-1 Introduction", + "locator_type": "page", + "locator_start": 10, + "text_sha256": "4dbe8e8eebfce66d754aba0bf95543b809d9184243983d16fa616c2a9eb84dbc", + "text_excerpt": "Software in the 21st Century\n\nMore safety critical, real-time software\n\nEmbedded software is ubiquitous … check your pockets\n Enterprise applications means bigger programs, more users\n Paradoxically, free software increases our expect", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:020", + "course_id": "software_testing", + "query": "我想先复习Ch1-1 Introduction,应该从哪里开始?,见第11页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-002:p11:c01", + "exists": true, + "source_id": "software-testing-002", + "source_title": "Ch1-1 Introduction", + "locator_type": "page", + "locator_start": 11, + "text_sha256": "f66f35f7ae3ae170a80db1788c687d6474a9a529a53323184544110fe22cf6bf", + "text_excerpt": "Quality and Software\n\nThere are risks associated with Software Development\n\nModern programs are complex and have ten thousands of lines of code\n The customer’s requirements can be vague, lacking in exactness\n Deadlines and budgets put p", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:021", + "course_id": "software_testing", + "query": "复习Ch1-1 Introduction时哪些内容最重要?,见第12页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-002:p12:c01", + "exists": true, + "source_id": "software-testing-002", + "source_title": "Ch1-1 Introduction", + "locator_type": "page", + "locator_start": 12, + "text_sha256": "e346de68b4beda9a7ac8df47f0dbaa8ca73c73c6fd883fce014f2fb6f24366d8", + "text_excerpt": "ISO 9126-1 Software Engineering – Product Quality\n\nThe quality model was structured around six main attributes and its\n\nsubcharacteristics\n\nQuality can be measured using a mix of objective and subjective metrics\n\nprovide consistent terminol", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:022", + "course_id": "software_testing", + "query": "Ch1-1 Introduction里的方法或结论怎么理解?,见第13页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "software-testing-002:p13:c01", + "exists": true, + "source_id": "software-testing-002", + "source_title": "Ch1-1 Introduction", + "locator_type": "page", + "locator_start": 13, + "text_sha256": "aa828b18f461936a786f536c10069e0139e9f7dd27acb258b6c9945de691f9af", + "text_excerpt": "ISO 9126-1 Product Quality – Six Attributes\n\n13\n\n![image](assets/software-testing-002/image-001.jpeg)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "software_testing:023", + "course_id": "software_testing", + "query": "学习Ch1-1 Introduction时哪些概念容易混淆?,见第14页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-002:p14:c01", + "exists": true, + "source_id": "software-testing-002", + "source_title": "Ch1-1 Introduction", + "locator_type": "page", + "locator_start": 14, + "text_sha256": "c7cd9dc4f6658a49d73ca4180ef3e204d1323a6c999f9eea097a7d995de8867b", + "text_excerpt": "ISO 9126-1 Product Quality – Detailed description\n\n14\n\n![image](assets/software-testing-002/image-002.jpeg)", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:024", + "course_id": "software_testing", + "query": "考试会怎么考Ch1-1 Introduction?,见第15页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-002:p15:c01", + "exists": true, + "source_id": "software-testing-002", + "source_title": "Ch1-1 Introduction", + "locator_type": "page", + "locator_start": 15, + "text_sha256": "4a1cd3336b53efcd16b6f116fc7752d09563498b1f9ec347e25545ab363d571f", + "text_excerpt": "Contents\n\nWhy do we test software?\n\n1.1 What is software?\n 1.2 What is bug?\n 1.3 Fault, Error and Failure\n 1.4 Adverse Effects of Faulty Software\n\n15", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:025", + "course_id": "software_testing", + "query": "Ch1-1 Introduction主要讲什么?,见第16页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-002:p16:c01", + "exists": true, + "source_id": "software-testing-002", + "source_title": "Ch1-1 Introduction", + "locator_type": "page", + "locator_start": 16, + "text_sha256": "c03e59f216b557364ab2c45aab9508f8fbb50c17e71e0f9aeab9a5ae2597e63e", + "text_excerpt": "1.2 What is Bug ?\n\nWhat is your understanding for Bug?\n\nDefect\n Fault\n Problem\n Error\n Incident\n\nFailure\n\nInconsistency\n Product\n\nAnomaly\n Product\n\nIncidence\n\nAnomaly\n Variance\n\nFeature :-)\n\nThe term Bug is used informally\n\n16", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:026", + "course_id": "software_testing", + "query": "我想先复习Ch1-1 Introduction,应该从哪里开始?,见第17页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-002:p17:c01", + "exists": true, + "source_id": "software-testing-002", + "source_title": "Ch1-1 Introduction", + "locator_type": "page", + "locator_start": 17, + "text_sha256": "6b8efb02c251f0d436c0866d9ecdccc6a681c5b2070c4d0d3697a5deb5dc7968", + "text_excerpt": "Where is Bug from ?\n\nIn 1947 Grace Hopper was operating a room-sized computer\n\ncalled the Mark II in Harvard University .\n\nmechanical relays\n glowing vacuum tubes\n technicians program the computer by reconfiguring it\n Technicians had ", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:027", + "course_id": "software_testing", + "query": "复习Ch1-1 Introduction时哪些内容最重要?,见第18页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-002:p18:c01", + "exists": true, + "source_id": "software-testing-002", + "source_title": "Ch1-1 Introduction", + "locator_type": "page", + "locator_start": 18, + "text_sha256": "58d4cd0249b77b041d89e975f1e82a0b3bd2d489bd48c3040101efb6b605f59b", + "text_excerpt": "Where is Bug from ?\n\nGrace Hopper\n\nDistinguished Mathematician and computer scientist\n Rear Admiral in the U.S. Navy\n ” The first Lady of Software ”\n\nPrograming Accomplishments\n\nDiscovered the first Bug\n\nCreated the biggest Bug - Y2K\n", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:028", + "course_id": "software_testing", + "query": "Ch1-1 Introduction里的方法或结论怎么理解?,见第19页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-002:p19:c01", + "exists": true, + "source_id": "software-testing-002", + "source_title": "Ch1-1 Introduction", + "locator_type": "page", + "locator_start": 19, + "text_sha256": "44716289520c0e0a3ea30801eaec38530294f854d6690fce7de3df503f8d2af3", + "text_excerpt": "Where is Bug from ?\n\nGrace Hopper\n\nEncouraging young people to learn how to program\n The Grace Hopper Celebration (GHC )\n\nThe world’s largest conference of women in technology\n\nQuotes\n\n“People have an enormous tendency to resist change. Th", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:029", + "course_id": "software_testing", + "query": "学习Ch1-1 Introduction时哪些概念容易混淆?,见第20页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-002:p20:c01", + "exists": true, + "source_id": "software-testing-002", + "source_title": "Ch1-1 Introduction", + "locator_type": "page", + "locator_start": 20, + "text_sha256": "b8263df50c36e97fa3ae234cf9df3ec3d0e06f1c342f71a741e764056649f69b", + "text_excerpt": "Contents\n\nWhy do we test software?\n\n1.1 What is software?\n 1.2 What is bug?\n 1.3 Fault, Error and Failure\n 1.4 Adverse Effects of Faulty Software\n\n20", + "flags": [] + } + ] + }, + { + "legacy_id": "software_testing:030", + "course_id": "software_testing", + "query": "考试会怎么考Ch1-1 Introduction?,见第21页", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "software-testing-002:p21:c01", + "exists": true, + "source_id": "software-testing-002", + "source_title": "Ch1-1 Introduction", + "locator_type": "page", + "locator_start": 21, + "text_sha256": "c595cb7132f9a51a4979329372da812f83d67dabb5861e660f3b6660037fca2b", + "text_excerpt": "1.3 Fault, Error and Failure\n\nUse Terms that have precise, defined, and unambiguous meanings\n\nSoftware Fault : A static defect in the software\n\nSoftware Failure : External, incorrect behavior with respect to the requirements\nor other descri", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:001", + "course_id": "swarm_intelligence", + "query": "大作业题目-2024下学期主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c01", + "exists": true, + "source_id": "swarm-intelligence-001", + "source_title": "群体智能大作业题目-2024下学期", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "9a4a7615eeec600c87ebcd3fae84a120a6389fe603ce65f3dd335b81ae843b27", + "text_excerpt": "**本 科 生 课 程 论 文**\n\n**(2024-2025学年第一学期)**\n\n**群体智能课程论文报告**\n\n**本科生:于博宇**\n\n**提交日期:25年1月17日 本科生签名:于博宇**\n\n\n\n
**学 号****202330453151****学 院****计算机科学与工程学院**
**班 级*", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:002", + "course_id": "swarm_intelligence", + "query": "我想先复习大作业题目-2024下学期,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c02", + "exists": true, + "source_id": "swarm-intelligence-001", + "source_title": "群体智能大作业题目-2024下学期", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "9a7ac176117ceedd6ef837e351ea6f43570328de04c8e8e6df945881345be9b9", + "text_excerpt": "随着城市化进程的加快和机动车保有量的持续增长,传统的交通管理策略已难以满足日益增长的交通需求。交通拥堵不仅影响人们的出行效率,还会带来环境污染、能源浪费等一系列问题。2020年2月,国家发展改革委等十一部委联合印发的《智能汽车创新发展战略》为我国智能汽车发展指明了方向,标志着汽车产业正在从传统的机械产品向智能化产品转变。在此背景下,自动驾驶技术的发展为解决交通问题提供了新的思路。然而,目前自动驾驶的研究主要集中在单车智能层面,这种方式存在感知范围有限、决策信息不完整等局限性。", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:003", + "course_id": "swarm_intelligence", + "query": "复习大作业题目-2024下学期时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c03", + "exists": true, + "source_id": "swarm-intelligence-001", + "source_title": "群体智能大作业题目-2024下学期", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "8372d4eb28e8711dbebdd7fdc56f943da01a606eed09830da9d0f51a0a1dd800", + "text_excerpt": "在具体的算法实现过程中,我们首先将每个交通信号灯构建为一个独立的智能体,其状态空间经过精心设计,包含了丰富的局部交通信息:各个进口道的车辆排队长度、车辆的平均等待时间、当前的信号相位状态,以及来自邻近路口的交通状态信息。为了更好地理解交通流的动态演变规律,系统还维护了一个包含历史信息的状态序列,这些时序信息对于预测交通流的变化趋势和做出更合理的控制决策至关重要。在动作空间的设计上,我们采用了离散的信号控制方案,包括信号相位的切换决策、绿灯时长的动态调整等,这些动作直接映射到实", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:004", + "course_id": "swarm_intelligence", + "query": "大作业题目-2024下学期里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c04", + "exists": true, + "source_id": "swarm-intelligence-001", + "source_title": "群体智能大作业题目-2024下学期", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6770a23c2e5f081719fd1e94a9b4fdc17c6c863ead7b1767bbc2a6e6e25c6c1b", + "text_excerpt": "在我们提出的交通优化方案中,重路由技术作为第二个核心组成部分,通过智能化的路径调整策略来优化整体交通流量。这项技术的实现始于系统的初始化配置,我们首先为系统设定了两个关键的判断参数:临界密度和阻塞密度,这些参数将作为触发路由调整的重要指标。同时,系统会为每一辆进入路网的车辆分配唯一的识别标识,并记录它们的出发地和目的地信息,这些信息构成了基础的O-D矩阵。在此基础上,系统使用Dijkstra算法预先计算了所有可能的路径组合,不仅包括最短路径,还包含了多个可选的替代路径,这些路", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:005", + "course_id": "swarm_intelligence", + "query": "学习大作业题目-2024下学期时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c05", + "exists": true, + "source_id": "swarm-intelligence-001", + "source_title": "群体智能大作业题目-2024下学期", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "042f564cec6e21a3117b270f41a204a2edacc3a7f35a53d6d5999b6714a50346", + "text_excerpt": "MTC策略是一种基于最大通行量原则的交通信号控制方法,其核心思想是通过贪心算法在每个决策时刻选择能够让最多车辆通行的信号相位。在具体实现过程中,系统首先会检查当前时间与上一次相位变更时间之间的间隔是否达到预设的最小相位持续时间,这个设置是为了避免信号切换过于频繁而导致的交通混乱。当满足最小时间间隔要求后,系统会遍历该路口所有可能的信号相位,对于每一个相位,都会获取其对应的可用道路链接信息,并通过这些信息确定具体的道路ID。基于这些道路ID,系统会统计每个方向上等待通行的车辆数", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:006", + "course_id": "swarm_intelligence", + "query": "考试会怎么考大作业题目-2024下学期?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c06", + "exists": true, + "source_id": "swarm-intelligence-001", + "source_title": "群体智能大作业题目-2024下学期", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fd74278c09c0b1032f5974713377a8626da14468ddfe83d21671bf7e2bed9ec8", + "text_excerpt": "性能对比分析: 济南和杭州两个场景的最终性能改善幅度分别达到了约23%和21%。考虑到这两个城市具有不同的路网结构和交通特征,算法能够在不同场景下都取得相近的改善比例,这说明该方法具有良好的泛化能力和适应性。相比传统的固定时间配时方案和简单的自适应控制方法,这种改善幅度是显著的。\n\n算法稳定性分析: 从训练后期的曲线表现来看,所有指标都呈现出平稳的特征,波动幅度较小。这种稳定性对于实际部署来说是极其重要的,因为它意味着算法在长期运行中能够维持稳定的控制效果。特别是在杭州这样的", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:007", + "course_id": "swarm_intelligence", + "query": "大作业题目-2024下学期主要讲什么?,第7条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c07", + "exists": true, + "source_id": "swarm-intelligence-001", + "source_title": "群体智能大作业题目-2024下学期", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "925070eade1fbe2980a673723354630d2b8ba40a96e9cbb836d53a173023384e", + "text_excerpt": "尽管算法能在150轮左右达到收敛,但初始训练过程仍需要较大的计算资源和时间成本。特别是在大规模路网中,训练时间可能会进一步增加。此外,方法的效果很大程度上依赖于交通检测设备的覆盖范围和数据质量。在实际部署中,传感器的精度和可靠性可能会影响控制效果。当前的实验主要在仿真环境中进行,对于现实世界中的突发事件、极端天气等异常情况的应对能力还需要进一步验证。另外,算法涉及多个超参数的设置,如奖励函数的权重、重路由的触发阈值等,这些参数的调整需要专业经验,增加了部署难度。这里我们使用的", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:008", + "course_id": "swarm_intelligence", + "query": "我想先复习大作业题目-2024下学期,应该从哪里开始?,第8条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c08", + "exists": true, + "source_id": "swarm-intelligence-001", + "source_title": "群体智能大作业题目-2024下学期", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5065a97dda1b2c11e6b9ad5f8fff71ce404078c54cd3fa9692c3136d2e3b03af", + "text_excerpt": "在**代码编写阶段**,我的队友编程能力很强,只交给我MTC部分的策略设计与实现,也让我体会到团队协作的重要性,在编写了 MTC 策略的核心代码(包括信号相位的遍历、车辆通行数的计算、调用时间的调整等)时为了提高代码的可读性和可维护性,我对代码进行了模块化设计,将 MTC 策略的核心逻辑封装成独立的函数,便于后续的扩展和优化。完成基本要求后我想到了**优化**的方案,针对**MTC内部**,使用了多线程并行计算,将每个交叉口的 MTC 策略计算任务分配给不同的线程,针对**M", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:009", + "course_id": "swarm_intelligence", + "query": "复习大作业题目-2024下学期时哪些内容最重要?,第9条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c09", + "exists": true, + "source_id": "swarm-intelligence-001", + "source_title": "群体智能大作业题目-2024下学期", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "964575e1e1020d027b420bd180aa2faeec0ba1b32b397b5b8febc6c2733b2d0e", + "text_excerpt": "![image](assets/swarm-intelligence-001/image-008.png)\n\n4:主干main函数\n\n![image](assets/swarm-intelligence-001/image-009.png)\n\n实验分析:\n\n我测试的是PSO优化算法针对离散组合优化,其中数据集我去GitHub上面找到了许多.tsp,但考虑到自身电脑算力以及实验时间,故最后采用最少的kroA100来作为测试数据。\n\n在测试过程中,我采用的是最基础的PSO算法,未", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:010", + "course_id": "swarm_intelligence", + "query": "大作业题目-2024下学期里的方法或结论怎么理解?,第10条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c10", + "exists": true, + "source_id": "swarm-intelligence-001", + "source_title": "群体智能大作业题目-2024下学期", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "b2cde10eb59693e7d18ef9d72ca011ef5ca844a398d0aece4ceedab5e1991544", + "text_excerpt": "![image](assets/swarm-intelligence-001/image-010.png)\n\n这样我们就可以不用担心数据被弹飞了...\n\n这是我的实验数据:\n\n| 注释 | 测试结果 | 测试耗时(s) | |\n|---|---|---|---|\n| 1 | 29748 | 30.0098 | |\n| 2 | 35120.3 | 31.4691 | |\n| 3 | 35905.2 | 29.9894 | |\n| 4 | 39474 | 28.996 |", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:011", + "course_id": "swarm_intelligence", + "query": "学习大作业题目-2024下学期时哪些概念容易混淆?,第11条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c11", + "exists": true, + "source_id": "swarm-intelligence-001", + "source_title": "群体智能大作业题目-2024下学期", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "b371e349224eabef7804e1d5fc3351d0e5f065ce7dd8af68dc931bcf77ab0435", + "text_excerpt": "粒子群优化算法因其简单性和高效性而受到广泛关注。然而,标准PSO算法在解决某些复杂优化问题时存在局限性。本文旨在综述当前的改进策略,并探讨它们如何提高PSO算法的性能。\n\n正文:\n\n我将对粒子群优化算法中拓扑改进策略进行文献阅读,因为在各个学科我们都陆续接触了拓扑使得我对这个方面不太陌生。下面我将会给出我阅读的相关文献。\n\n我通过在IEEE网上查询《A distance-based neighborhood particle swarm optimization for co", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:012", + "course_id": "swarm_intelligence", + "query": "考试会怎么考大作业题目-2024下学期?,第12条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c12", + "exists": true, + "source_id": "swarm-intelligence-001", + "source_title": "群体智能大作业题目-2024下学期", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cd61642aa5dd0d0ca70511fe72736c0f361135fa4c70e63846287a0865136ef1", + "text_excerpt": "**《群体智能》** **实 验 报 告(二)**\n\n**(2024-2025** **学年第一学期)**\n\n**学生姓名:** **于博宇**\n\n一、算法小实践\n\n我选择的是DQN(Deep Q-Network)算法进行编程实现玩2048的训练,并基于GYM平台进行实验。以下是实验报告的概要:\n\n1. 算法复述\n\nDQN是一种结合了深度学习和强化学习的算法,用于解决具有高维观测空间的强化学习问题。DQN通过使用深度神经网络来近似Q函数,从而避免了传统Q-learning算法", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:013", + "course_id": "swarm_intelligence", + "query": "大作业题目-2024下学期主要讲什么?,第13条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c13", + "exists": true, + "source_id": "swarm-intelligence-001", + "source_title": "群体智能大作业题目-2024下学期", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "215eb77cc7d454d8963c96f7f882d5c970474d7b35c38691dc8ec6df215ff095", + "text_excerpt": "最后是有时传值一直在报错,软件包我也不太清楚在anaconda下载、在终端pip install和在python软件包搜寻下载到底有什么区别......\n\n但总而总之这个项目虽然过程很苦,在梳理掉所有的error终于跑得动的时候成就感溢出了。\n\n言归正传,根据上面的excel图表我们可以看出训练初期依旧和大多数一样,总可以很快的找到更高的奖赏,但是在后面我们可以看出应该是接近真实最大奖赏,趋于平缓,耗时更多。\n\n二、文献研读\n\n多智能体强化学习与大语言模型Agent的探讨\n\n", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:014", + "course_id": "swarm_intelligence", + "query": "我想先复习大作业题目-2024下学期,应该从哪里开始?,第14条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c14", + "exists": true, + "source_id": "swarm-intelligence-001", + "source_title": "群体智能大作业题目-2024下学期", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "7c1a03f9dd165e25e974ee716c30745b045b110766a034737098694ea3f00577", + "text_excerpt": "Reinforced Inter-Agent Learning\n\n独立Q学习:在这种变体中,每个智能体学习自己的神经网络,将其他智能体视为环境的一部分。这种方法允许智能体独立地学习,但在执行时仍然是分散的,每个智能体根据自己的观测选择行动。\n\n参数共享:另一种变体中,所有智能体共享一个全局的神经网络。尽管如此,由于每个智能体接收到的观测不同,它们的行为也会有所不同。这种方法减少了需要学习的参数数量,从而加快了学习速度。\n\nRIAL 的关键特点是在执行时智能体是分散的,但在学习", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:015", + "course_id": "swarm_intelligence", + "query": "复习大作业题目-2024下学期时哪些内容最重要?,第15条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c15", + "exists": true, + "source_id": "swarm-intelligence-001", + "source_title": "群体智能大作业题目-2024下学期", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "bb05a14c566f076fb7f85923883edc03ab31cc1eebb057d3f54d4d6f77d90f0f", + "text_excerpt": "这个就更有意思了,我们可以把其他智能体的影响看作是噪音,然后在训练过程中,我们把全局的奖励信号过滤一下,分给每个智能体。这样,每个智能体都能得到自己的“小奖励”,帮助他们更好地协作,一起把任务完成得更好。\n\n2. 大语言模型Agent的定义与协作需求\n\n大语言模型Agent的定义:\n\n大语言模型Agent是指基于大型语言模型(LLM)构建的智能代理,它们能够理解和生成自然语言,进行决策制定,并与环境交互。根据文献,大模型Agent的**架构包括Profile模块、Memory", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:016", + "course_id": "swarm_intelligence", + "query": "关于中强化学习的研究结果里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c01", + "exists": true, + "source_id": "swarm-intelligence-002", + "source_title": "关于群体智能中强化学习的研究结果", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "d1f2a1c932b1c23d625179c6d9e7be1271de0db0e849fee71dce6284a41d14ae", + "text_excerpt": "一、算法小实践\n\n我选择的是DQN(Deep Q-Network)算法进行编程实现玩2048的训练,并基于GYM平台进行实验。以下是实验报告的概要:\n\n1. 算法复述\n\nDQN是一种结合了深度学习和强化学习的算法,用于解决具有高维观测空间的强化学习问题。DQN通过使用深度神经网络来近似Q函数,从而避免了传统Q-learning算法中的维度灾难。DQN算法的核心是利用经验回放和目标网络来提高学习的稳定性和效率。\n1. 关键代码截图\n\n①:引入相关软件包及相关参数解析(1-30 ", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:017", + "course_id": "swarm_intelligence", + "query": "学习关于中强化学习的研究结果时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c02", + "exists": true, + "source_id": "swarm-intelligence-002", + "source_title": "关于群体智能中强化学习的研究结果", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "215eb77cc7d454d8963c96f7f882d5c970474d7b35c38691dc8ec6df215ff095", + "text_excerpt": "最后是有时传值一直在报错,软件包我也不太清楚在anaconda下载、在终端pip install和在python软件包搜寻下载到底有什么区别......\n\n但总而总之这个项目虽然过程很苦,在梳理掉所有的error终于跑得动的时候成就感溢出了。\n\n言归正传,根据上面的excel图表我们可以看出训练初期依旧和大多数一样,总可以很快的找到更高的奖赏,但是在后面我们可以看出应该是接近真实最大奖赏,趋于平缓,耗时更多。\n\n二、文献研读\n\n多智能体强化学习与大语言模型Agent的探讨\n\n", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:018", + "course_id": "swarm_intelligence", + "query": "考试会怎么考关于中强化学习的研究结果?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c03", + "exists": true, + "source_id": "swarm-intelligence-002", + "source_title": "关于群体智能中强化学习的研究结果", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "7c1a03f9dd165e25e974ee716c30745b045b110766a034737098694ea3f00577", + "text_excerpt": "Reinforced Inter-Agent Learning\n\n独立Q学习:在这种变体中,每个智能体学习自己的神经网络,将其他智能体视为环境的一部分。这种方法允许智能体独立地学习,但在执行时仍然是分散的,每个智能体根据自己的观测选择行动。\n\n参数共享:另一种变体中,所有智能体共享一个全局的神经网络。尽管如此,由于每个智能体接收到的观测不同,它们的行为也会有所不同。这种方法减少了需要学习的参数数量,从而加快了学习速度。\n\nRIAL 的关键特点是在执行时智能体是分散的,但在学习", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:019", + "course_id": "swarm_intelligence", + "query": "关于中强化学习的研究结果主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c04", + "exists": true, + "source_id": "swarm-intelligence-002", + "source_title": "关于群体智能中强化学习的研究结果", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "bb05a14c566f076fb7f85923883edc03ab31cc1eebb057d3f54d4d6f77d90f0f", + "text_excerpt": "这个就更有意思了,我们可以把其他智能体的影响看作是噪音,然后在训练过程中,我们把全局的奖励信号过滤一下,分给每个智能体。这样,每个智能体都能得到自己的“小奖励”,帮助他们更好地协作,一起把任务完成得更好。\n\n2. 大语言模型Agent的定义与协作需求\n\n大语言模型Agent的定义:\n\n大语言模型Agent是指基于大型语言模型(LLM)构建的智能代理,它们能够理解和生成自然语言,进行决策制定,并与环境交互。根据文献,大模型Agent的**架构包括Profile模块、Memory", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:020", + "course_id": "swarm_intelligence", + "query": "我想先复习rewards,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-003:h-rewards:c01", + "exists": true, + "source_id": "swarm-intelligence-003", + "source_title": "rewards", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0691400025342033de846e67f92e74c4f7384b0573566bb98906db05a7c59db1", + "text_excerpt": "```text\nEpisode: 0, Reward: -96.0\nEpisode: 1, Reward: -84.0\nEpisode: 2, Reward: -92.0\nEpisode: 3, Reward: -88.0\nEpisode: 4, Reward: -72.0\nEpisode: 5, Reward: -76.0\nEpisode: 6, Reward: -36.0\nEpisode: 7, Reward: -8.0\nEpisode: 8, Reward: -100.", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:021", + "course_id": "swarm_intelligence", + "query": "复习实验报告时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-004:h-群体智能实验报告:c01", + "exists": true, + "source_id": "swarm-intelligence-004", + "source_title": "群体智能实验报告", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "e5c5d81cb6b81e0bd3d1bce3e62fe7f55f9a59d6e6f2cddaf0c82b016a5c6ebb", + "text_excerpt": "**《群体智能》 实 验 报 告**\n\n**(2024-2025** **学年第一学期)**\n\n**学生姓名: 于博宇**", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "swarm_intelligence:022", + "course_id": "swarm_intelligence", + "query": "算法复述里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-004:h-群体智能实验报告~算法复述:c01", + "exists": true, + "source_id": "swarm-intelligence-004", + "source_title": "群体智能实验报告", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ccf75dd22536a9447845171147fa502f7a59b1e9b8c5d3938b1f1f6b6a879214", + "text_excerpt": "粒子群优化算法(全称:Particle Swarm Optimization)是一种模拟自然界生物活动的随机搜索算法。课上提到PSO算法在1995由美国Eberhart等人提出。在PSO中,每个“粒子”代表解空间中的一个候选解,通过模拟自然界生物的社会合作和信息共享机制进行搜索。粒子在多维解空间中移动,每个粒子都有一个由其位置向量表示的当前位置和一个速度向量控制其飞行方向和距离。粒子的行为受到个体认知和社会认知的影响,个体认知反映了粒子根据自己历史上找到的最优位置(个体最优p", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:023", + "course_id": "swarm_intelligence", + "query": "学习关键代码截图时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-004:h-群体智能实验报告~算法复述~关键代码截图:c01", + "exists": true, + "source_id": "swarm-intelligence-004", + "source_title": "群体智能实验报告", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "b1bbd0f6e2d7716f7480a7b7267d8ec8febcc61eeded47b864f5d89112850563", + "text_excerpt": "1:距离计算三函数\n\n![image](assets/swarm-intelligence-004/image-001.png)\n\n2:更新城市以及速度信息函数\n\n![image](assets/swarm-intelligence-004/image-002.png)\n\n3:打开文件kroA100.tsp函数(文件接口)\n\n![image](assets/swarm-intelligence-004/image-003.png)\n\n4:主干main函数\n\n![image](", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:024", + "course_id": "swarm_intelligence", + "query": "考试会怎么考实验分析?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-004:h-群体智能实验报告~算法复述~实验分析:c01", + "exists": true, + "source_id": "swarm-intelligence-004", + "source_title": "群体智能实验报告", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "b081b932efafbfb14723ede384b3ef72324664c138dfe818a9d02c6303520b47", + "text_excerpt": "我测试的是PSO优化算法针对离散组合优化,其中数据集我去GitHub上面找到了许多.tsp,但考虑到自身电脑算力以及实验时间,故最后采用最少的kroA100来作为测试数据。\n\n在测试过程中,我采用的是最基础的PSO算法,未经过各种进化改造,所以在保证代码正确性基础上,我只需要调试粒子数量、惯性因子、迭代次数、学习因子c1(后面我会习惯把它叫做社会)以及学习因子c2(我会称为自我)。\n\n一开始我采用的分别是50个粒子,惯性因子0.7,迭代1000次,社会1.5,自我1.5**(", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:025", + "course_id": "swarm_intelligence", + "query": "实验分析主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-004:h-群体智能实验报告~算法复述~实验分析:c02", + "exists": true, + "source_id": "swarm-intelligence-004", + "source_title": "群体智能实验报告", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "9cf4d57e2619933f57d03ca3549ee5d4911ca6c3b95b156f34970b8085aef2bb", + "text_excerpt": "| 注释 | 测试结果 | 测试耗时(s) | |\n|---|---|---|---|\n| 1 | 29748 | 30.0098 | |\n| 2 | 35120.3 | 31.4691 | |\n| 3 | 35905.2 | 29.9894 | |\n| 4 | 39474 | 28.996 | |\n| 5 | 32101.8 | 29.5845 | |\n| 6 | 35332.4 | 29.8871 | |\n| 7 | 37289.8 | 28.4701 | ", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:026", + "course_id": "swarm_intelligence", + "query": "我想先复习分析与见解,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-004:h-群体智能实验报告~算法复述~分析与见解:c01", + "exists": true, + "source_id": "swarm-intelligence-004", + "source_title": "群体智能实验报告", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6f2e3146967dc17c0b86d51d761733f52863261b7e0eb081e261cbd2a3290d4a", + "text_excerpt": "我认为,从图表中我们不难看出,前期遍历中粒子的位置和速度在解空间中随机分布(初始很大)、快速下降,显示出算法的全局搜索能力,并逐渐稳定:随着迭代次数的增加,粒子逐渐靠近最优解,适应度改进的速度会逐渐减慢,迭代图的趋势会趋于平缓,这表明算法正在细化其搜索并逼近最优解,迭代图最终会显示出收敛行为,即适应度值停止改进或改进非常小,表明算法已经找到了问题的最优解或非常接近最优解。\n\n个人见解:这张图象可以看出收敛的很出色,但是同时也给我一些思考,是不是有早熟收敛的嫌疑呢?毕竟在某些情", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:027", + "course_id": "swarm_intelligence", + "query": "复习引言时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-004:h-群体智能实验报告~粒子群优化算法的改进策略研究~引言:c01", + "exists": true, + "source_id": "swarm-intelligence-004", + "source_title": "群体智能实验报告", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0973ddb1f3004c00419f0266a723c9292f98d28013b57684c126bc4652ab249e", + "text_excerpt": "粒子群优化算法因其简单性和高效性而受到广泛关注。然而,标准PSO算法在解决某些复杂优化问题时存在局限性。本文旨在综述当前的改进策略,并探讨它们如何提高PSO算法的性能。", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:028", + "course_id": "swarm_intelligence", + "query": "正文里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-004:h-群体智能实验报告~粒子群优化算法的改进策略研究~正文:c01", + "exists": true, + "source_id": "swarm-intelligence-004", + "source_title": "群体智能实验报告", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "3c06148a87aec553761aa7435a71389cc47651c6c88206193cd56f495936e125", + "text_excerpt": "我将对粒子群优化算法中拓扑改进策略进行文献阅读,因为在各个学科我们都陆续接触了拓扑使得我对这个方面不太陌生。下面我将会给出我阅读的相关文献。\n\n我通过在IEEE网上查询《A distance-based neighborhood particle swarm optimization for continuous optimization problems》J. J. Liang, P. N. Suganthan, and A. K. Qin Proceedings of t", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:029", + "course_id": "swarm_intelligence", + "query": "学习pso results时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-005:h-pso_results:c01", + "exists": true, + "source_id": "swarm-intelligence-005", + "source_title": "pso_results", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "3f49d817ae29f4aca14070aa5029737c68739797437a553c8696cf4fe69efa7d", + "text_excerpt": "```text\n5.55358e+62\n138289\n138289\n125350\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117753\n117", + "flags": [] + } + ] + }, + { + "legacy_id": "swarm_intelligence:030", + "course_id": "swarm_intelligence", + "query": "考试会怎么考考试会怎么考考试会怎么考考试会怎么考考试会怎么考考试会怎么考第30个知识点??????", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "replacement_character_in_source" + ], + "evidence": [ + { + "chunk_id": "swarm-intelligence-006:h-群体智能:c01", + "exists": true, + "source_id": "swarm-intelligence-006", + "source_title": "群体智能", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "f4e360cd67dc8fe4f8fe0a61620579b15bcc7d280886ee55ab41cd230b5da4e1", + "text_excerpt": "```cpp\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include\n#include \n#include \n#include 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-大学物理期末总复习:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "7574af608f4c6d34a5e4e992fa380341b976e87bf5b41cdad11e28706bf94ac6", + "text_excerpt": "> 适用范围:质点运动学、质点动力学、三大守恒定律、刚体力学、机械振动、机械波、光的干涉、光的衍射、光的偏振、气体动理论、热力学第一定律、热力学第二定律。 \n> 所有重要公式均采用独立数学块,便于在 Obsidian 中渲染。\n\n---", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:002", + "course_id": "university_physics_3_1", + "query": "我想先复习0. 期末复习总览,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-0.-期末复习总览:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a79aac2b01a14aa8a76ece912b32a4faefae65014df95f5d05479e92a1becf84", + "text_excerpt": "根据期末复习资料,计算题重点集中在四类:\n\n1. **质点平动与刚体转动综合**\n2. **根据波形图写振动方程、波动方程**\n3. **光栅衍射:光栅常数、缺级、最大级次、谱线重叠**\n4. **热力学:等值过程、绝热过程、循环过程**\n\n> 建议优先掌握上面四类计算题,再复习选择题和填空题中的概念辨析。\n\n---", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:003", + "course_id": "university_physics_3_1", + "query": "复习1.1 位置、位移与路程时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-1.-质点运动学~1.1-位置-位移与路程:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fa9f3a1224159f382f7814fde11e8190c235e5d753d6a11dc0c2a0e57299a789", + "text_excerpt": "位置矢量:\n\n$$\n\\vec r=x\\vec i+y\\vec j+z\\vec k\n$$\n\n位移:\n\n$$\n\\Delta \\vec r=\\vec r_2-\\vec r_1\n$$\n\n路程是实际运动轨迹的长度,记为:\n\n$$\ns\n$$\n\n注意:\n\n- 位移是矢量;\n- 路程是标量;\n- 路程一般不等于位移的大小。", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:004", + "course_id": "university_physics_3_1", + "query": "1.2 速度与速率里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-1.-质点运动学~1.2-速度与速率:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "bd25a97e13eed509eafc9e6aced2dfcd7fdec2f3a6d0d94ba0ee09632567a68f", + "text_excerpt": "平均速度:\n\n$$\n\\bar{\\vec v}=\\frac{\\Delta \\vec r}{\\Delta t}\n$$\n\n瞬时速度:\n\n$$\n\\vec v=\\frac{d\\vec r}{dt}\n$$\n\n速率:\n\n$$\nv=\\frac{ds}{dt}=|\\vec v|\n$$\n\n> 一般情况下:\n>\n> $$\n> \\frac{d|\\vec r|}{dt}\\neq \\left|\\frac{d\\vec r}{dt}\\right|\n> $$", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:005", + "course_id": "university_physics_3_1", + "query": "学习1.3 加速度时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-1.-质点运动学~1.3-加速度:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a3c2fa444e5208e6aa223f8e285ed7f677bb19d9cd17fd3b01c8930e10471d0d", + "text_excerpt": "平均加速度:\n\n$$\n\\bar{\\vec a}=\\frac{\\Delta \\vec v}{\\Delta t}\n$$\n\n瞬时加速度:\n\n$$\n\\vec a=\\frac{d\\vec v}{dt}=\\frac{d^2\\vec r}{dt^2}\n$$\n\n曲线运动中:\n\n$$\n\\vec a=a_\\tau \\vec e_\\tau+a_n\\vec e_n\n$$\n\n切向加速度:\n\n$$\na_\\tau=\\frac{dv}{dt}\n$$\n\n法向加速度:\n\n$$\na_n=\\frac{v^2}{R}", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:006", + "course_id": "university_physics_3_1", + "query": "考试会怎么考1.4 圆周运动?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-1.-质点运动学~1.4-圆周运动:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "da90a4581bfc2ed214c07ceaa031e1bf86e23d3488a9cefe44060d6ee7a338fd", + "text_excerpt": "角速度:\n\n$$\n\\omega=\\frac{d\\theta}{dt}\n$$\n\n角加速度:\n\n$$\n\\alpha=\\frac{d\\omega}{dt}\n$$\n\n线速度:\n\n$$\nv=\\omega R\n$$\n\n切向加速度:\n\n$$\na_\\tau=\\alpha R\n$$\n\n法向加速度:\n\n$$\na_n=\\frac{v^2}{R}=\\omega^2R\n$$\n\n> “向心力”不是一种新的力,而是所有实际力在法向方向上的合力:\n>\n> $$\n> \\sum F_n=m\\frac{v^2}{", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:007", + "course_id": "university_physics_3_1", + "query": "2.1 牛顿第二定律主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-2.-质点动力学~2.1-牛顿第二定律:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a576706a240505470ea77c2fac65fbe6b399310e2c29cc655b5bfcf5c255a230", + "text_excerpt": "矢量形式:\n\n$$\n\\sum \\vec F=m\\vec a\n$$\n\n分量形式:\n\n$$\n\\sum F_x=ma_x\n$$\n\n$$\n\\sum F_y=ma_y\n$$\n\n$$\n\\sum F_z=ma_z\n$$\n\n标准步骤:\n\n1. 选研究对象;\n2. 画受力图;\n3. 建立坐标系;\n4. 分解各个力;\n5. 列牛顿第二定律;\n6. 补充运动学或几何约束。", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:008", + "course_id": "university_physics_3_1", + "query": "我想先复习2.2 常见力,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-2.-质点动力学~2.2-常见力:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "4d5bbda6868b9dddee468a3642a808f5379478118abb1698f08f79e4c2970a2c", + "text_excerpt": "重力:\n\n$$\n\\vec G=m\\vec g\n$$\n\n弹簧弹力:\n\n$$\nF=-kx\n$$\n\n滑动摩擦力:\n\n$$\nf_k=\\mu_kN\n$$\n\n静摩擦力:\n\n$$\n0\\leq f_s\\leq \\mu_sN\n$$\n\n最大静摩擦力:\n\n$$\nf_{s,\\max}=\\mu_sN\n$$\n\n> 静摩擦力不一定等于 $\\mu_sN$,只有在即将相对滑动时才取最大值。\n\n---", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:009", + "course_id": "university_physics_3_1", + "query": "复习3.1 动量与冲量时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-3.-冲量-动量与能量~3.1-动量与冲量:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "4bc6bc429cfa1b2020187072102fc9dd7dddf13f3e1b02dab634eda94555eab5", + "text_excerpt": "动量:\n\n$$\n\\vec p=m\\vec v\n$$\n\n冲量:\n\n$$\n\\vec I=\\int_{t_1}^{t_2}\\vec F\\,dt\n$$\n\n恒力冲量:\n\n$$\n\\vec I=\\vec F\\Delta t\n$$\n\n动量定理:\n\n$$\n\\vec I=\\Delta \\vec p\n$$\n\n即:\n\n$$\n\\int_{t_1}^{t_2}\\vec F\\,dt=m\\vec v_2-m\\vec v_1\n$$", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:010", + "course_id": "university_physics_3_1", + "query": "3.2 动量守恒里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-3.-冲量-动量与能量~3.2-动量守恒:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "f0a4854d5c79eb26c2214094fe8a278569f705026711a0413fbec7eb3333fe97", + "text_excerpt": "若系统所受合外力为零,或外力冲量可忽略,则:\n\n$$\n\\vec P_1=\\vec P_2\n$$\n\n即:\n\n$$\n\\sum_i m_i\\vec v_{i1}=\\sum_i m_i\\vec v_{i2}\n$$\n\n> 动量可以分方向守恒。某一方向外力冲量为零,该方向动量守恒。", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:011", + "course_id": "university_physics_3_1", + "query": "学习3.3 功时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-3.-冲量-动量与能量~3.3-功:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a7221cd8b7626fab2ed06c36f2f93e91010ad0b62c419e6edb065a8cf6e9f82d", + "text_excerpt": "恒力做功:\n\n$$\nA=\\vec F\\cdot \\vec s=Fs\\cos\\theta\n$$\n\n变力做功:\n\n$$\nA=\\int \\vec F\\cdot d\\vec r\n$$\n\n沿 $x$ 轴:\n\n$$\nA=\\int_{x_1}^{x_2}F_x\\,dx\n$$", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:012", + "course_id": "university_physics_3_1", + "query": "考试会怎么考3.4 动能定理?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-3.-冲量-动量与能量~3.4-动能定理:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a9b4fbc7c97290087860977290c85a8d59bc43af77774a3f4141da51a12a8156", + "text_excerpt": "动能:\n\n$$\nE_k=\\frac{1}{2}mv^2\n$$\n\n动能定理:\n\n$$\nA_{\\text{合}}=\\Delta E_k\n$$\n\n即:\n\n$$\nA_{\\text{合}}=\\frac{1}{2}mv_2^2-\\frac{1}{2}mv_1^2\n$$", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:013", + "course_id": "university_physics_3_1", + "query": "3.5 势能与机械能主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-3.-冲量-动量与能量~3.5-势能与机械能:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "daa0bbe8203b93290708d6e345f007e83b55d7a3b204fbd9b1da763d56289f9e", + "text_excerpt": "重力势能:\n\n$$\nE_{p,g}=mgh\n$$\n\n弹性势能:\n\n$$\nE_{p,s}=\\frac{1}{2}kx^2\n$$\n\n保守力做功:\n\n$$\nA_{\\text{保}}=-\\Delta E_p\n$$\n\n机械能:\n\n$$\nE=E_k+E_p\n$$\n\n只有保守力做功时:\n\n$$\nE_{k1}+E_{p1}=E_{k2}+E_{p2}\n$$\n\n有非保守力做功时:\n\n$$\nA_{\\text{非保}}=\\Delta(E_k+E_p)\n$$\n\n> 物体到达最远位置时:\n>\n> $$", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:014", + "course_id": "university_physics_3_1", + "query": "我想先复习4.1 线量与角量,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-4.-刚体力学~4.1-线量与角量:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "86bc001fc856d3fbe7fdf535c87a85f6ec4d15a38833c1ec8d59691bc923af63", + "text_excerpt": "角速度:\n\n$$\n\\omega=\\frac{d\\theta}{dt}\n$$\n\n角加速度:\n\n$$\n\\alpha=\\frac{d\\omega}{dt}\n$$\n\n线速度:\n\n$$\n\\vec v=\\vec\\omega\\times\\vec r\n$$\n\n大小:\n\n$$\nv=\\omega r\n$$\n\n切向加速度:\n\n$$\na_\\tau=\\alpha r\n$$\n\n法向加速度:\n\n$$\na_n=\\omega^2r\n$$", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:015", + "course_id": "university_physics_3_1", + "query": "复习4.2 力矩时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-4.-刚体力学~4.2-力矩:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "7a9ecd4750b92f46605b61787529ff523627fc95b2cf367c97294e0d412d55b1", + "text_excerpt": "力矩:\n\n$$\n\\vec M=\\vec r\\times \\vec F\n$$\n\n大小:\n\n$$\nM=rF\\sin\\theta\n$$\n\n也可以写成:\n\n$$\nM=Fd\n$$\n\n其中 $d$ 是力臂。", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:016", + "course_id": "university_physics_3_1", + "query": "4.3 转动惯量里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-4.-刚体力学~4.3-转动惯量:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "af85e5fe229acffd4cc55884d876d8a28c10c1d15f547ae82248813c56c272b3", + "text_excerpt": "离散质点系:\n\n$$\nJ=\\sum_i m_ir_i^2\n$$\n\n连续刚体:\n\n$$\nJ=\\int r^2\\,dm\n$$\n\n常见结果:\n\n质点:\n\n$$\nJ=mr^2\n$$\n\n细杆绕中心垂直轴:\n\n$$\nJ=\\frac{1}{12}Ml^2\n$$\n\n细杆绕端点垂直轴:\n\n$$\nJ=\\frac{1}{3}Ml^2\n$$\n\n圆盘绕中心轴:\n\n$$\nJ=\\frac{1}{2}MR^2\n$$\n\n圆环绕中心轴:\n\n$$\nJ=MR^2\n$$", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:017", + "course_id": "university_physics_3_1", + "query": "学习4.4 刚体定轴转动定律时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-4.-刚体力学~4.4-刚体定轴转动定律:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6cf6c0bc47c3b792b834cfe15188a3f8aabceca0d1e0b72e963a6fea5baba5a9", + "text_excerpt": "$$\n\\sum M=J\\alpha\n$$\n\n它对应质点平动中的:\n\n$$\n\\sum F=ma\n$$", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "university_physics_3_1:018", + "course_id": "university_physics_3_1", + "query": "考试会怎么考4.5 角动量?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-4.-刚体力学~4.5-角动量:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5030e7912fc699ca23d7ed5313b96626324f2417ff058f0163a1a368a89e6e7d", + "text_excerpt": "质点对固定点的角动量:\n\n$$\n\\vec L=\\vec r\\times\\vec p\n$$\n\n大小:\n\n$$\nL=rmv\\sin\\theta\n$$\n\n刚体定轴转动角动量:\n\n$$\nL=J\\omega\n$$", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:019", + "course_id": "university_physics_3_1", + "query": "4.6 角动量定理与守恒主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-4.-刚体力学~4.6-角动量定理与守恒:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ff4b9c27ea28cd3cfd79ba9610f500bd76009bdc37a8570954514b216856ed46", + "text_excerpt": "角动量定理:\n\n$$\n\\int_{t_1}^{t_2}M_{\\text{外}}\\,dt=L_2-L_1\n$$\n\n微分形式:\n\n$$\nM_{\\text{外}}=\\frac{dL}{dt}\n$$\n\n若对所选转轴的合外力矩为零:\n\n$$\nL_1=L_2\n$$", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:020", + "course_id": "university_physics_3_1", + "query": "我想先复习4.7 转动功与转动动能,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-4.-刚体力学~4.7-转动功与转动动能:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "7a5e24b25d1026822e3ef30699485a009ecf9cc5f5f30d50a6c9650c6f7daa7a", + "text_excerpt": "力矩做功:\n\n$$\nA=\\int_{\\theta_1}^{\\theta_2}M\\,d\\theta\n$$\n\n转动动能:\n\n$$\nE_{k,\\text{转}}=\\frac{1}{2}J\\omega^2\n$$\n\n转动动能定理:\n\n$$\n\\int_{\\theta_1}^{\\theta_2}M\\,d\\theta\n=\n\\frac{1}{2}J\\omega_2^2-\\frac{1}{2}J\\omega_1^2\n$$", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:021", + "course_id": "university_physics_3_1", + "query": "复习阶段一:碰撞时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-4.-刚体力学~4.8-子弹击杆类题目~阶段一-碰撞:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "e55b9f2f4c6302a6d4ba1c247f04ab8896644710b804d166d9d83bfc09d5e7bc", + "text_excerpt": "对转轴使用角动量守恒:\n\n$$\nL_{\\text{碰前}}=L_{\\text{碰后}}\n$$\n\n若子弹质量为 $m$,速度为 $v$,击中距轴 $l$ 的位置并留在杆上:\n\n$$\nmvl=\\left(J_{\\text{杆}}+ml^2\\right)\\omega_0\n$$\n\n所以:\n\n$$\n\\omega_0=\n\\frac{mvl}{J_{\\text{杆}}+ml^2}\n$$\n\n> 碰撞阶段通常机械能不守恒。", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:022", + "course_id": "university_physics_3_1", + "query": "阶段二:受阻力矩减速里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-4.-刚体力学~4.8-子弹击杆类题目~阶段二-受阻力矩减速:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0c165273505f6d0ceba24270e7728d523ab18b7226a27327eff012f5ef7b0886", + "text_excerpt": "方法一:\n\n$$\n-M_r=J_{\\text{总}}\\alpha\n$$\n\n再用:\n\n$$\n\\omega^2-\\omega_0^2=2\\alpha\\theta\n$$\n\n方法二:\n\n$$\n-M_r\\theta\n=\n0-\\frac{1}{2}J_{\\text{总}}\\omega_0^2\n$$", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:023", + "course_id": "university_physics_3_1", + "query": "学习4.9 滑轮综合题时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-4.-刚体力学~4.9-滑轮综合题:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "530f307f794fa7cdc9ca96aa2433772eaf9de4035354ec61907fe687d94f9aff", + "text_excerpt": "对物块:\n\n$$\n\\sum F=ma\n$$\n\n对滑轮:\n\n$$\n(T_2-T_1)R=J\\alpha\n$$\n\n无滑动条件:\n\n$$\na=\\alpha R\n$$\n\n> 有质量滑轮两侧拉力通常不相等:\n>\n> $$\n> T_1\\neq T_2\n> $$\n\n---", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:024", + "course_id": "university_physics_3_1", + "query": "考试会怎么考5.1 简谐振动判据?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-5.-机械振动~5.1-简谐振动判据:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "21ef7786a761962c0a5e85b227f1914e010f9152644ab31d204c8444f8ac0083", + "text_excerpt": "回复力:\n\n$$\nF=-kx\n$$\n\n加速度:\n\n$$\na=-\\omega^2x\n$$\n\n动力学方程:\n\n$$\n\\frac{d^2x}{dt^2}+\\omega^2x=0\n$$\n\n运动方程:\n\n$$\nx=A\\cos(\\omega t+\\varphi)\n$$", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:025", + "course_id": "university_physics_3_1", + "query": "5.2 周期、频率与圆频率主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-5.-机械振动~5.2-周期-频率与圆频率:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "2aa5459de50f90d044fb9bca5f12884dc71d33c2c9086ebdbc78ffa0911c8a15", + "text_excerpt": "$$\nT=\\frac{2\\pi}{\\omega}\n$$\n\n$$\n\\nu=\\frac{1}{T}\n$$\n\n$$\n\\omega=2\\pi\\nu\n$$\n\n弹簧振子:\n\n$$\n\\omega=\\sqrt{\\frac{k}{m}}\n$$\n\n$$\nT=2\\pi\\sqrt{\\frac{m}{k}}\n$$", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:026", + "course_id": "university_physics_3_1", + "query": "我想先复习5.3 速度与加速度,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-5.-机械振动~5.3-速度与加速度:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "921531b1d93ab3c654a0c09a13fc99638ff0329c1ab80a598ea3db0d1224366b", + "text_excerpt": "位移:\n\n$$\nx=A\\cos(\\omega t+\\varphi)\n$$\n\n速度:\n\n$$\nv=-A\\omega\\sin(\\omega t+\\varphi)\n$$\n\n加速度:\n\n$$\na=-A\\omega^2\\cos(\\omega t+\\varphi)\n$$\n\n因此:\n\n$$\na=-\\omega^2x\n$$\n\n最大速度:\n\n$$\nv_{\\max}=A\\omega\n$$\n\n最大加速度:\n\n$$\na_{\\max}=A\\omega^2\n$$", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:027", + "course_id": "university_physics_3_1", + "query": "复习5.4 根据初始条件求初相时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-5.-机械振动~5.4-根据初始条件求初相:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "c1e1a639322f152bd3bb9c3b54167ea74a6325607bce7d53f965fc955927b7a6", + "text_excerpt": "在 $t=0$ 时:\n\n$$\nx_0=A\\cos\\varphi\n$$\n\n$$\nv_0=-A\\omega\\sin\\varphi\n$$\n\n所以:\n\n$$\n\\cos\\varphi=\\frac{x_0}{A}\n$$\n\n$$\n\\sin\\varphi=-\\frac{v_0}{A\\omega}\n$$\n\n必须结合 $x_0$ 和 $v_0$ 的正负判断象限。", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:028", + "course_id": "university_physics_3_1", + "query": "5.5 简谐振动能量里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-5.-机械振动~5.5-简谐振动能量:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "76dcd6e82d7895c49651d07ee93765a7cb254abc999ff184d94a1e35ec5124d2", + "text_excerpt": "总机械能:\n\n$$\nE=\\frac{1}{2}kA^2\n$$\n\n也可写为:\n\n$$\nE=\\frac{1}{2}m\\omega^2A^2\n$$\n\n势能:\n\n$$\nE_p=\\frac{1}{2}kx^2\n$$\n\n动能:\n\n$$\nE_k=\\frac{1}{2}m\\omega^2(A^2-x^2)\n$$\n\n结论:\n\n- 平衡位置:速度最大,动能最大;\n- 端点:速度为零,势能最大;\n- 总机械能不变。", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:029", + "course_id": "university_physics_3_1", + "query": "学习5.6 同方向同频率振动合成时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-5.-机械振动~5.6-同方向同频率振动合成:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "2f4975f1be35071c377f2c294e5081157ca8975c2cb36afa265c02893f1a34a2", + "text_excerpt": "$$\nx_1=A_1\\cos(\\omega t+\\varphi_1)\n$$\n\n$$\nx_2=A_2\\cos(\\omega t+\\varphi_2)\n$$\n\n合振动:\n\n$$\nx=A\\cos(\\omega t+\\varphi)\n$$\n\n合振幅:\n\n$$\nA=\n\\sqrt{\nA_1^2+A_2^2+\n2A_1A_2\\cos(\\varphi_2-\\varphi_1)\n}\n$$\n\n同相:\n\n$$\nA=A_1+A_2\n$$\n\n反相:\n\n$$\nA=|A_1-A_2|\n$$\n\n相位差为 $", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_1:030", + "course_id": "university_physics_3_1", + "query": "考试会怎么考6.1 基本关系?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-1-002:h-6.-机械波~6.1-基本关系:c01", + "exists": true, + "source_id": "university-physics-3-1-002", + "source_title": "大物上-速通指南", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "9bf836642ee4b92184aef44a1213602519cfc6d2df0264473fdd024a7c64a6f5", + "text_excerpt": "$$\nu=\\lambda\\nu\n$$\n\n$$\nu=\\frac{\\lambda}{T}\n$$\n\n$$\n\\omega=2\\pi\\nu=\\frac{2\\pi}{T}\n$$\n\n$$\nk=\\frac{2\\pi}{\\lambda}\n$$\n\n> 波传播的是振动状态和能量,介质质点并不随波整体向前运动。", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:001", + "course_id": "university_physics_3_2", + "query": "2023级期末复习纲要4学分主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-001:h-2023级大学物理iii-二-期末复习纲要4学分:c01", + "exists": true, + "source_id": "university-physics-3-2-001", + "source_title": "2023级大学物理III(二)期末复习纲要4学分", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "47997efe6db275c65e5b907ab4d95766707bb020f32aa7c6b64280937cf32b61", + "text_excerpt": "2023级大学物理III(二)复习纲要(4学分)\n\n大学物理(下)根据大纲对各知识点的要求以及总结历年考试的经验,现列出期末复习的纲要如下:\n\n1. 计算题可能覆盖范围\n\na. 静电场; b. 稳恒磁场; c. 感应电动势; d.狭义相对论; e. 量子论\n\n2. 大学物理(下)重要知识点\n\n(一)静电学 电场强度、电势、静电场力及其做功、静电感应、真空及有电介质时的高斯定理、电通量、有电介质时的电场与电位移、电容、电场能量\n\n(二)磁学", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:002", + "course_id": "university_physics_3_2", + "query": "我想先复习2012 2A卷试卷规范模版,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:h-2012大学物理-2-a卷试卷规范模版:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a3d0120450f13f7388069310d15b56be36384f8c1ae3aee86d2d99b1dd715427", + "text_excerpt": "**诚信应考,考试作弊将带来严重后果!**\n\n**华南理工大学期末考试**\n\n**《2012级大学物理(II)期末试卷A卷》试卷**\n\n**注意事项:1.** **考前请将密封线内各项信息填写清楚;**\n\n**2.** **所有答案请直接答在答题纸上;**\n\n**3.考试形式:闭卷;**\n\n**4.** **本试卷共25题,满分100分,**\t**考试时间120分钟。**\n\n**考试时间:2014年1月13日9:00-----11:00**", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:003", + "course_id": "university_physics_3_2", + "query": "复习2012 2A卷试卷规范模版时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q1:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "222fcf0abd006c84753afbc3ffa9fb4b6224a2889c39a963ce635e542fbf08b5", + "text_excerpt": "一、选择题(共30分)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "university_physics_3_2:004", + "course_id": "university_physics_3_2", + "query": "能把同心带电球面外的电场强度的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q2:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "c85c9afe69d147e86e2e4eed04a18ebe4de550c769f51a7ae3b8d081b4ed2d70", + "text_excerpt": "1.(本题3分)\n\n如图所示,两个同心均匀带电球面,内球面半径为$R_1$、带有电荷$Q_1$,外球面半径为$R_2$、带有电荷$Q_2$,则在外球面外面、距离球心为$r$处的$P$点的场强大小$E$为:\n\n(A) $\\frac {{Q}_{1}+{Q}_{2}} {4{\\pi \\varepsilon }_{0}{r}^{2}}$.\n\n(B)$\\frac {{Q}_{1}} {4{\\pi \\varepsilon }_{0}{\\left ( {r-{R}_{1}}\\right", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:005", + "course_id": "university_physics_3_2", + "query": "做带电金属球壳内的电场和电势时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q3:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "9488f7e0810547e97544579407ca4724ce9a11ad358fee1d10ea9db9a225719d", + "text_excerpt": "2.(本题3分)\n\n如图所示,一带负电荷的金属球,外面同心地罩一不带电的金属球壳,则在球壳中一点$P$处的场强大小与电势(设无穷远处为电势零点)分别为:\n\n(A) *E* = 0,*U* > 0. (B) *E* = 0,*U* < 0.\n\n(C) *E* = 0,*U* = 0. (D) *E* > 0,*U* < 0.\n\n[ ]", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:006", + "course_id": "university_physics_3_2", + "query": "这类题一般怎么考?能用带电粒子进入匀强磁场后的运动举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q4:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0b70a589745a5de9d3ddb58890af2eef8c1cf984f56f817f9a1c044b88a1fef7", + "text_excerpt": "3.(本题3分)\n\n![formula-object](assets/university-physics-3-2-002/image-009.png)如图,一个电荷为+*q*、质量为*m*的质点,以速度$v$沿*x*轴射入磁感强度为*B*的均匀磁场中,磁场方向垂直纸面向里,其范围从*x* = 0延伸到无限远,如果质点在*x* = 0和*y* = 0处进入磁场,则它将以速度$-V$从磁场中某一点出来,这点坐标是*x* = 0 和\n\n(A) $y=+\\frac{", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:007", + "course_id": "university_physics_3_2", + "query": "正方形线圈中心的磁感强度怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q5:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "25ee6f375c248d8dfe09d2bc9d5b2601c933c7f6cd9f9effbfb804f9835646c6", + "text_excerpt": "4.(本题3分)\n\n边长为*l*的正方形线圈,分别用图示两种方式通以电流*I* (其中*ab*、*cd*与正方形共面),在这两种情况下,线圈在其中心产生的磁感强度的大小分别为\n\n(A) ${B}_{1}=0$,${B}_{2}=0$.\n\n(B) ${B}_{1}=0$,${B}_{2}=\\frac {2\\sqrt {2}{\\mu }_{0}I} {\\pi l}$.\n\n(C) ${B}_{1}=\\frac {2\\sqrt {2}{\\mu }_{0}I} {\\", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:008", + "course_id": "university_physics_3_2", + "query": "做安培定律判断电流方向时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q6:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "83f17c2966f3c4901e8f6409ef63c971e251c837aa4f2622cac8fd8f5b25e5ec", + "text_excerpt": "5.(本题3分)\n\n如图,流出纸面的电流为2*I*,流进纸面的电流为*I*,则下述各式中哪一个是正确的?\n\n(A) $\\oint _{{L}_{1}} Hdl=2I$. (B) $\\oint _{{L}_{2}} Hdl=I$\n\n(C) $\\oint _{{L}_{3}} Hdl=-I$. (D) $\\oint _{{L}_{4}} Hdl=-I$.\n\n[ ]", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:009", + "course_id": "university_physics_3_2", + "query": "两个线圈的互感和磁通的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q7:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "f5aa6ae88ed5bfc006f43b317b15d028ea60b7920d174cc8552a1ae03d9b17b1", + "text_excerpt": "6.(本题3分)\n\n有两个线圈,线圈1对线圈2的互感系数为*M*21,而线圈2对线圈1的互感系数为*M*12.若它们分别流过*i*1和*i*2的变化电流且$\\left | {\\frac {{di}_{1}} {dt}}\\right |>\\left | {\\frac {{di}_{2}} {dt}}\\right |$,并设由*i*2变化在线圈1中产生的互感电动势为$E_{12}$,由*i*1变化在线圈2中产生的互感电动势为$E_{21}$,判断下述哪个论断正确.\n\n(A) *", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:010", + "course_id": "university_physics_3_2", + "query": "能把平板电容器充电时的安培环路的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q8:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "d0e69f7890fbc7bfe21d87be0739ab7dddc89a955148f27eae4f566ee1f820c6", + "text_excerpt": "7.(本题3分)\n\n如图,平板电容器(忽略边缘效应)充电时,沿环路*L*1的磁场强度$H$的环流与沿环路*L*2的磁场强度$H$的环流两者,必有:\n\n(A) $\\oint _{{L}_{1}} Hd{l}^{'}>$$\\oint _{{L}_{2}} Hd{l}^{'}$.\n\n(B) $\\oint _{{L}_{1}} Hd{l}^{'}=$$\\oint _{{L}_{2}} Hd{l}^{'}$.\n\n(C) $\\oint _{{L}_{1}} Hd{l}^", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:011", + "course_id": "university_physics_3_2", + "query": "做相对论速度下薄板面积时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q9:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5c8f907059854bb336570d48090c9cf1823b64391d3c4331acf5241ce1c6bf46", + "text_excerpt": "8.(本题3分)\n\n边长为$a$的正方形薄板静止于惯性系*K*的![formula-object](assets/university-physics-3-2-002/image-023.png)平面内,且两边分别与$x$,$y$轴平行.今有惯性系*K*'以$0.8c$($c$为真空中光速)的速度相对于*K*系沿$x$轴作匀速直线运动,则从*K*'系测得薄板的面积为\n\n(A) $0.6a^2$. (B) $0.8a^2$. (C) *$a^2$*. (D", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:012", + "course_id": "university_physics_3_2", + "query": "这类题一般怎么考?能用光电效应中的入射光波长举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q10:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "983332dbe318471585085913aea4e5cde5ea6194f278f21143e55c446adc430b", + "text_excerpt": "9.(本题3分)\n\n已知一单色光照射在钠表面上,测得光电子的最大动能是1.2 eV,而钠的红限波长是540nm,那么入射光的波长是\n\n(A) 535nm. (B) 500nm.\n\n(C) 435nm. (D) 355nm. [ ]\n\n(普朗克常量*h* =6.63×10-34 J·s,1 eV =1.60×10-19 J)", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:013", + "course_id": "university_physics_3_2", + "query": "康普顿散射中电子获得的能量怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q11:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0e67ec9da8353445c8549d8a41728c399381e6bbadd0ce8d3c492121d1ae1355", + "text_excerpt": "10.(本题3分)\n\n在康普顿散射中,如果设反冲电子的速度为光速的60%,则因散射使电子获得的能量是其静止能量的\n\n(A) 2倍. (B) 1.5倍.\n\n(C) 0.5倍. (D) 0.25倍. [ ]", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:014", + "course_id": "university_physics_3_2", + "query": "我想先复习2012 2A卷试卷规范模版,应该从哪里开始?,对应第12题", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q12:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "965e582534e53360a8b20dbd2930044e72f57a6a6548125605b4c844256ed3b2", + "text_excerpt": "二、填空题(**共**30分)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "university_physics_3_2:015", + "course_id": "university_physics_3_2", + "query": "两根带电直线场强为零的位置的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q13:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "692180768d3005d4ec2e608636b8d34369956aacf22e770b164879438cfb846a", + "text_excerpt": "11.(本题3分)\n\n两根相互平行的“无限长”均匀带正电直线1、2,相距为*d*,其电荷线密度分别为+**1和+**2如图所示,则场强等于零的点与直线1\n\n的距离*a*为_____________ .", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:016", + "course_id": "university_physics_3_2", + "query": "能把由电势求电场强度的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q14:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ed55b3ac0d2abc04dfe099eec7341356df049cdd0c8c63aafa7881dbf8132fff", + "text_excerpt": "12.(本题3分)\n\n已知某静电场的电势分布为*U*=8*x*+12*x*2*y*-20*y*2 (SI),则该静电场在点(1,1,0)处电场强度$E$=___________$i$ +____________$j$ +_____________$k$ (SI).", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:017", + "course_id": "university_physics_3_2", + "query": "做电场力沿路径做功时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q15:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "3790fda42c9d8c13409afbd95ab90e43c9d38de6a8c94d49b51187f994a01144", + "text_excerpt": "13.(本题3分)\n\n![formula-object](assets/university-physics-3-2-002/image-033.png)图示*BCD*是以*O*点为圆心,以*R*为半径的半圆弧,在*A*点有一电荷为+*q*的点电荷,*O*点有一电荷为-*q*的点电荷.线段$\\overline {BA}=R$.现将一单位正电荷从*B*点沿半圆弧轨道*BCD*移到*D*点,则电场力所作的\n\n功为______________________ .", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:018", + "course_id": "university_physics_3_2", + "query": "这类题一般怎么考?能用介质插入电容器后的储能举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q16:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "b1d1cfd68d04b6e9c22c4d679502ac22e3f8cf39803fcd0a6f9e47e0da5e3ffe", + "text_excerpt": "14.(本题3分)\n\n一空气电容器充电后切断电源,电容器储能*W*0,若此时在极板间灌入相对介电常量为$E_r$的煤油,则电容器储能变为*W*0的_______________________ 倍.如果灌煤油时电容器一直与电源相连接,则电容器储能将是*W*0的____________倍.", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:019", + "course_id": "university_physics_3_2", + "query": "同心线圈转动时磁力矩做功怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q17:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "e6598f21791d7b1724cd2f07a563ee26a4ede8ae6bb6b4bca4adb30e7d571e62", + "text_excerpt": "15.(本题3分)\n\n两个在同一平面内的同心圆线圈,大圆半径为*R*,通有电流*I*1,小圆半径为*r*,通有电流*I*2,电流方向如图,且*r*<<*R*.那么小线圈从图示位置转到两线圈平面相互垂直位置的过程中,磁力矩所作的功为__________________.", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:020", + "course_id": "university_physics_3_2", + "query": "做磁通量和磁力矩的关系时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q18:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a0fe85b484347ec85670e2e60d8c88466570500564dcc586021a14bb876efc79", + "text_excerpt": "16.(本题3分)\n\n将一个通过电流为*I*的闭合回路置于均匀磁场中,回路所围面积的法线方向与磁场方向的夹角为**.若均匀磁场通过此回路的磁通量为**,则回路所受磁力矩\n\n的大小为____________________________________________.", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:021", + "course_id": "university_physics_3_2", + "query": "螺线管储存的磁能比的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q19:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ba244b5c5af76acd4104ab9cb86d2c345117d2b24353fc7b22588b8d76370c7f", + "text_excerpt": "17.(本题3分)\n\n真空中两只长直螺线管1和2,长度相等,单层密绕匝数相同,直径之比*d*1 / *d*2 =1/4.当它们通以相同电流时,两螺线管贮存的磁能之比为*W*1 / *W*2=___________.", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:022", + "course_id": "university_physics_3_2", + "query": "能把μ子寿命的时间膨胀的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q20:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5b919f7b91778c6805aab30cb430c996b462e90123b16083faf0f1a2cc11a72b", + "text_excerpt": "18.(本题3分)\n\n子是一种基本粒子,在相对于子静止的坐标系中测得其寿命为**0 =3×10-6 s.如果子相对于地球的速度为$v=$**0. 8*****c*** **(***c*为真空中光速),则在地球坐标系中测出的子的寿命**=____________________秒.", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:023", + "course_id": "university_physics_3_2", + "query": "做电子的德布罗意波长时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q21:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6cda2256b97f9a357b823fba319191378a2d92e58524f7701bd74600a94ff306", + "text_excerpt": "19.(本题3分)\n\n静止质量为*m**e*的电子,经电势差为*U*的静电场加速后,若不考虑相对论效应,电子的德布罗意波长**=________________________________.", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:024", + "course_id": "university_physics_3_2", + "query": "这类题一般怎么考?能用量子态能容纳的电子数举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q22:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "e6d678979bb7f69483377310ea4506216ec2c897863d5407726e0845546a559a", + "text_excerpt": "20.(本题3分)\n\n在主量子数$n=3$,自旋磁量子数${m}_{s}=\\frac {1} {2}$的量子态中,能够填充的最大电子数是____________________.", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:025", + "course_id": "university_physics_3_2", + "query": "计算题 共怎么做?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q23:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ee5bdeba37f0b8cd72528c78bc6f4713d9fabfc61c3a85356886631e965ad5d2", + "text_excerpt": "三、计算题(共40分)", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "university_physics_3_2:026", + "course_id": "university_physics_3_2", + "query": "做带电细杆对点电荷的电场力时应该先从哪里入手?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q24:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "77b86d40a19ad46cef339133ecde8dbad888cd4121ab428871644f4267cc2c63", + "text_excerpt": "21.(本题10分)\n\n$q_0dl\\lambda$ 在真空中一长为*l*的细杆上均匀分布着电荷,其电荷线密度为**.在杆的延长线上,距杆的一端距离*d*的一点上,有一点电荷*q*0,如图所示.试求该点电荷所受的电场力.", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:027", + "course_id": "university_physics_3_2", + "query": "带电圆盘轴线上电场的答案怎么判断?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q25:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "d9db337bf3534377dbaf34c886836368d602bca78fdf79792b3a2e7485b3088c", + "text_excerpt": "22.(本题10分)\n\n如图,一半径为*R*的带电塑料圆盘,其中半径为*r*的阴影部分均匀带正电荷,面电荷密度为+**,其余部分均匀带负电荷,面电荷密度为-***。*当圆盘以角速度**旋转时,测得圆盘中心*O*点的磁感强度为零,问*R*与*r*满足什么关系?", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:028", + "course_id": "university_physics_3_2", + "query": "能把电子加速所需的功的解题步骤写出来吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q26:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "98c0a57bfef4fda82aa60e5fd54bd73c93b6af4f7eccc1ebc99a313955a9028e", + "text_excerpt": "23.(本题5分)\n\n要使电子的速度从*v*1 =1.2×108 m/s增加到*v*2 =2.4×108 m/s必须对它作多少功?\n\n(电子静止质量*m**e* =9.11×10-31 kg)", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:029", + "course_id": "university_physics_3_2", + "query": "做线圈离开直导线时的感应电动势时哪些概念最容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q27:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "c81e151aba022ac0e2d555d594ae0c3d8b6d01b31fcfcc8b874becb813a783e4", + "text_excerpt": "24.(本题10分)\n\n![formula-object](assets/university-physics-3-2-002/image-037.png)如图所示,有一根长直导线,载有直流电流*I*,近旁有一个两条对边与它平行并与它共面的矩形线圈,以匀速度$v$沿垂直于导线的方向离开导线.设*t* =0时,线圈位于图示位置,求", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_3_2:030", + "course_id": "university_physics_3_2", + "query": "这类题一般怎么考?能用(1) 在任意时刻t通过矩形线圈的磁通量.举例说明吗?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "university-physics-3-2-002:q-university-physics-3-2-002-q28:c01", + "exists": true, + "source_id": "university-physics-3-2-002", + "source_title": "2012大学物理(2)A卷试卷规范模版", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cb20475d0366cf6f4a4aa1e648d6b6ec4c613d49e2fa5ff3db614caaf667c2b7", + "text_excerpt": "(1) 在任意时刻*t*通过矩形线圈的磁通量**.", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:001", + "course_id": "university_physics_lab_1", + "query": "人体脉搏波测量主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-001:h-人体脉搏波测量:c01", + "exists": true, + "source_id": "university-physics-lab-1-001", + "source_title": "人体脉搏波测量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0b492dcd74e448891625298c34549483f3b075a9a9c0876e8060b7c7c0780768", + "text_excerpt": "**人体脉搏波信号的检测及数字示波器的应用**\n\n目前心脏运动生理信号的探测主要包括心电信号(Electrocardiography,ECG)和光电容积信号(Photoplethysmography,PPG)探测技术。ECG描记是一种以时间为单位记录心脏的电生理活动。其利用在人体皮肤表面贴上的电极,可以侦测到心脏的电位变化,即得到心电图。随着心脏跳动压力波沿动脉血管进行传递,这压力会稍微改变血管的直径,PPG技术就是利用这一原理借助光电手段在活体组织中检测血液容积变化,它是一", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:002", + "course_id": "university_physics_lab_1", + "query": "我想先复习人体脉搏波测量,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-001:h-人体脉搏波测量:c02", + "exists": true, + "source_id": "university-physics-lab-1-001", + "source_title": "人体脉搏波测量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "150907ff7ed23d0bce01ebfddfe2e2e6549820dff83f0f2a310667c471e1fe40", + "text_excerpt": "执行按键区有AUTO(自动设置)、RUN/STOP(运行/停止)、Single 和Default四个按键。按下AUTO 按键,示波器将根据输入的信号,自动设置和调整垂直、水平及触发方式等各项控制值,使波形显示达到最佳观察状态,如需要还可进行手动调整。RUN/STOP键为运行/停止波形采样按键,按一下停止采样,再按一下,恢复波形采样状态。注意:应用自动设置功能时,要求被测信号的频率大于或等于50Hz,占空比大于1%。垂直控制区如图3。垂直位置![image](assets/u", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:003", + "course_id": "university_physics_lab_1", + "query": "复习人体脉搏波测量时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-001:h-人体脉搏波测量:c03", + "exists": true, + "source_id": "university-physics-lab-1-001", + "source_title": "人体脉搏波测量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fe5259a031482072ed46290b32622344dce614851982fea9dba0713763e469ad", + "text_excerpt": "触发控制区如图5,主要用于触发系统的设置。转动![image](assets/university-physics-lab-1-001/image-006.png)触发电平设置旋钮,屏幕上会出现一条上下移动的水平黑色触发线及触发标志,且左下角和上状态栏最右端触发电平的数值也随之发生变化。按下![image](assets/university-physics-lab-1-001/image-007.png)旋钮触发电平快速恢复到零点。按MENU键可调出触发功能菜单,改变触发设", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:004", + "course_id": "university_physics_lab_1", + "query": "人体脉搏波测量里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-001:h-人体脉搏波测量:c04", + "exists": true, + "source_id": "university-physics-lab-1-001", + "source_title": "人体脉搏波测量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "735fef06b2307bb8ccf4b77224befb181637bd2273ff9192d46648aec46b48df", + "text_excerpt": "实验使用的数字示波器型号为固纬GDS-1102B型数字示波器(参照数字示波器操作简介部分)。数字示波器操作上仍然类同模拟示波器,显示和测量实际上是以模拟示波器的内容为基础加以改进和扩展的。观测波形依然是以“TIME/DIV”旋钮来调节显示多少个波形,同样调节电平“LEVEL”旋钮使波形稳定。但是原来模拟示波器只能标示在操作面板“TIME/DIV ”旋钮上的挡位示值,现在可随着调节对应显示在屏幕的下方,在屏幕上还有与之对应的采样率显示。Y轴每格电压选择“VOLTS/DIV”等也", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:005", + "course_id": "university_physics_lab_1", + "query": "学习人体脉搏波测量时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-001:h-人体脉搏波测量:c05", + "exists": true, + "source_id": "university-physics-lab-1-001", + "source_title": "人体脉搏波测量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "893c303b6e68b140dda92febc459250ca722734646bcc966d576d2cb3356a87e", + "text_excerpt": "当我们把光转换成电信号时,正是由于动脉对光的吸收有变化而其他组织对光的吸收基本不变,得到的信号就可以分为直流DC信号和交流AC信号。提取其中的AC信号,就能反应出血液流动的特点。\n\nPPG测量电路如图9所示,其包含光发射驱动系统中的LED,以及测量光电二极管返回信号的电路。目标是通过消耗的一定LED电流量 (存在一定的电流传输比),测量尽可能高的光电流。光电二极管的输入接收信号透过转导放大器 (TIA) 而放大、滤波,然后通过一个ADC进行数据采集。\n\n由图9 AMB", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:006", + "course_id": "university_physics_lab_1", + "query": "考试会怎么考人体脉搏波测量?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-001:h-人体脉搏波测量:c06", + "exists": true, + "source_id": "university-physics-lab-1-001", + "source_title": "人体脉搏波测量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "4c397ab6c42c4f89b24a3379c7806d6553a9ad0a21aabebe0a654ae2c989c018", + "text_excerpt": "![image](assets/university-physics-lab-1-001/image-009.jpeg) Vpp=2V、2000Hz三角波:\n\n![image](assets/university-physics-lab-1-001/image-010.jpeg) Vpp=3V、3000Hz脉冲方波:\n\n![image](assets/university-physics-lab-1-001/image-011.jpeg)自动测量:函数信号发生器分别输出\n\nV", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:007", + "course_id": "university_physics_lab_1", + "query": "人体脉搏波测量主要讲什么?,第7条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-001:h-人体脉搏波测量:c07", + "exists": true, + "source_id": "university-physics-lab-1-001", + "source_title": "人体脉搏波测量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "e181586fcc6af9c59ba74b01eff43df901bb75f7306447ea1aaf6bc9048e831b", + "text_excerpt": "**![image](assets/university-physics-lab-1-001/image-015.jpeg)![image](assets/university-physics-lab-1-001/image-016.jpeg)![image](assets/university-physics-lab-1-001/image-017.jpeg)![image](assets/university-physics-lab-1-001/image-018.jpe", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:008", + "course_id": "university_physics_lab_1", + "query": "我想先复习光的等厚干涉测量,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-002:h-光的等厚干涉测量:c01", + "exists": true, + "source_id": "university-physics-lab-1-002", + "source_title": "光的等厚干涉测量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "f39557da0b467fe994a968e9a2ad75ad5bec3dcdb1e58661e04c2ab7531c584b", + "text_excerpt": "**实验3.3** **光的等厚干涉测量**\n\n**引言:**当频率相同、振动方向相同、相位差恒定的两束光相遇时会产生干涉现象。光的干涉现象证实了光具有波动性。光的干涉现象应用广泛,如精确地测量长度、光弹性研究、全息照相技术、检验表面粗糙度、研究零件内应力的分布等。\n\n**一、实验目的**\n\n(1)观察光的等厚干涉现象。\n\n(2)利用牛顿环测量平凸透镜的曲率半径R。\n\n(3)学习使用读数显微镜。\n\n**二、实验仪器**\n\n读数显微镜、牛顿环、钠光灯、劈尖。\n\n![image]", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:009", + "course_id": "university_physics_lab_1", + "query": "复习光的等厚干涉测量时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-002:h-光的等厚干涉测量:c02", + "exists": true, + "source_id": "university-physics-lab-1-002", + "source_title": "光的等厚干涉测量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0d734dea4f36b5052fb78e24531ce2be4a801df92c2282209559cefd2793589c", + "text_excerpt": "假设用暗环进行测量,测出第m级和第n级的暗环半径rm和rn,由数学关系可求得${r}_{m}^{2}-{r}_{n}^{2}=(m-n)R\\lambda$。若用环的直径表示,则为$R=\\frac {{D}_{m}^{2}-{D}_{n}^{2}} {4\\left ( {m-n}\\right )\\lambda }$。用明环讨论结论相同。\n1. 劈尖\n\n劈尖实验通常使用单色光源,上有两个非常细小的狭缝,光线通过这两个狭缝后会形成干涉图样。利用空气劈尖测量薄膜厚度的原理:将需要测量", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:010", + "course_id": "university_physics_lab_1", + "query": "光的等厚干涉测量里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-002:h-光的等厚干涉测量:c03", + "exists": true, + "source_id": "university-physics-lab-1-002", + "source_title": "光的等厚干涉测量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "778ae5fd0a837624a85330c1d0a53b4c7ecaed003139e36ddb0207d1dcc349a5", + "text_excerpt": "\n\n\n
暗环级数m暗环位置xiDm
(mm)
暗环级数n暗环位置xiDn
(mm)
Dm-Dn/m2
30 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-002:h-光的等厚干涉测量:c04", + "exists": true, + "source_id": "university-physics-lab-1-002", + "source_title": "光的等厚干涉测量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "d1120c164bd011149235a7dcb6de6c003da382ff93b9ebcae9fa788a46a1bda2", + "text_excerpt": "\n\n
**次数****位置**
**Xi/mm**
**位置X(i+20)/mm****L/mm****S/mm****Ave.S/mm**
**1****12.025****16.045****4.020****0.201****0", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:012", + "course_id": "university_physics_lab_1", + "query": "考试会怎么考分光计的调整与使用?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-003:h-分光计的调整与使用:c01", + "exists": true, + "source_id": "university-physics-lab-1-003", + "source_title": "分光计的调整与使用", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cfc67aa12c225c35e1f134439a970a5f229a981f482cea7d41f5260524929977", + "text_excerpt": "分光计的调整与使用\n- **实验目的**\n1. 了解分光计的构造、作用和工作原理。\n1. 掌握分光计的调整和使用方法。\n\n(3)用分光计测棱镜的折射率。\n- **实验仪器**\n\n分光计、三棱镜、反射镜、汞灯\n- **实验原理**\n\n**1.测角原理**\n\n测量光线之间的夹角,实质是测定平行光束的方位角。如图1所示,A、B分别为平行光束和在望远镜焦平面上的会聚像点。焦平面上的每一个点,都与从一定方向入射的平行光束相对应。如果望远镜的光轴绕垂直于光束1和2的转轴转动,光轴由于平行", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:013", + "course_id": "university_physics_lab_1", + "query": "分光计的调整与使用主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-003:h-分光计的调整与使用:c02", + "exists": true, + "source_id": "university-physics-lab-1-003", + "source_title": "分光计的调整与使用", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "25ccee4e26ffe5b849cfe910d2dea1c6889892817acc94c4d3ec1992736526cc", + "text_excerpt": "①调节目镜使能清晰地看到分划板的准线。接上小灯泡电源,打开开关,观察视场下半区是否有绿色光区。若有,则缓慢地转动目镜调焦手轮直到能够清晰地看到准线和绿色光区中的绿色“十”字。\n\n②用自准法调节望远镜使其适合接收平行光。将载物台上三条120°等分线分别与载物台下三个调节螺钉对齐,再将双面反射镜按图3所示的位置放置在载物台上,松开载物台锁紧螺钉,升降载物台使反射镜的中心望远镜轴线等高;松开游标盘止动螺钉,微微转动游标盘(连同载物台)使反射镜面正对望远镜,并适当微调望远镜倾斜度调节", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:014", + "course_id": "university_physics_lab_1", + "query": "我想先复习分光计的调整与使用,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-003:h-分光计的调整与使用:c03", + "exists": true, + "source_id": "university-physics-lab-1-003", + "source_title": "分光计的调整与使用", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "6b1413693449838f630fcfc69b7f4c90ed9c8548c33e765000c1b432213e1ba5", + "text_excerpt": "④调载物台法线平行于分光计旋转主轴。将反射镜按图4所示位置放置,转动游标盘使反射镜的一个面正对望远镜。此时,不管在视场中能否看到反射回来的亮“十”字,均只调载物台倾斜度调节螺钉a使反射回来的亮“十”字位于准线上的上交叉点。 ![image](assets/university-physics-lab-1-003/image-019.jpeg)图4\n\n⑤调节平行光管使光管发出平行光,并使平行光管与望远镜共轴。移动", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:015", + "course_id": "university_physics_lab_1", + "query": "复习分光计的调整与使用时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-003:h-分光计的调整与使用:c04", + "exists": true, + "source_id": "university-physics-lab-1-003", + "source_title": "分光计的调整与使用", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "1fa00ccdb4d5ee02deeb45fc8ac047b6a1e57aaec581931e9ad86dfe64cd650e", + "text_excerpt": "\n\n\n
测量序数折射光线位置读数入射光线位置读数$\\theta_0$$n$
$alpha_1$(左)$alpha_1'$(右)$alpha_2$(左)$alpha_2'$(右)
130°", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:016", + "course_id": "university_physics_lab_1", + "query": "奥式黏度计测定液体动力黏度里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-004:h-奥式黏度计测定液体动力黏度:c01", + "exists": true, + "source_id": "university-physics-lab-1-004", + "source_title": "奥式黏度计测定液体动力黏度", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "b9a7ceb804f4832642890eefc37c8449254e01c76a8cb0b1903b9775f143af63", + "text_excerpt": "实验报告\n\n实验名称:液体动力黏度的测量\n- 实验目的\n1. 掌握奥式黏度计测定液体动力黏度的方法。\n1. 熟练运用秒表测量时间、量杯量取液体、温度计测量温度的基本操作。\n1. 了解实验方法中比较法的优点。\n1. 进一步理解液体粘滞性的意义。\n- 实验仪器\n\n奥式黏度计、温度计、比重计、秒表、酒精、蒸馏水、移液管、吸球、玻璃缸、支架、胶管。\n- 简要原理\n\n本实验利用比较法,借助奥式黏度计测量酒精的黏度。由泊肃叶定理可推导得待测流体的黏度\n\nη1=ρ1*t1*η2/ρ2*t2", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:017", + "course_id": "university_physics_lab_1", + "query": "学习实验报告模板&实验报告评分标准时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-005:h-实验报告模板-实验报告评分标准:c01", + "exists": true, + "source_id": "university-physics-lab-1-005", + "source_title": "实验报告模板&实验报告评分标准", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "7775d9c2e074eb33d6b70df2ce5ed5896ebb8b179c5088849d133e904e5422b1", + "text_excerpt": "实验名称:\n\n实验日期 2024年 3 月 11 日第3周 星期 一 下午 指导老师 陈明东\n- 实验目的\n- 实验仪器\n\n说明:包括实验中用到的所有设备和配件及其他物品\n- 实验原理\n\n说明:此部分内容由文字,公式,图形,三部分组成。需将实验的理论依据介绍清楚,除文字外,应包括简单的公式推导,原理图及装置图,公式及图形需标识清楚。可参考书上内容及虚拟实验平台上的内容。\n- 实验内容及操作步骤\n\n说明:此内容主要为实验的具体操作步骤。\n- ", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:018", + "course_id": "university_physics_lab_1", + "query": "考试会怎么考用惠斯登电桥测电阻?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c01", + "exists": true, + "source_id": "university-physics-lab-1-006", + "source_title": "用惠斯登电桥测电阻", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "58a4035404138bae3878ebc7f98b52881d7f9bbc3b7207f634131b066376f9cc", + "text_excerpt": "用惠斯登电桥测电阻\n- **实验目的**\n\n(1)了解惠斯登电桥的原理和特点\n\n(2)学会使用惠斯登电桥测电阻。\n- **实验仪器**\n\nFQJ型非平衡电桥、平衡指示仪(检流计)、电阻箱、待测电阻、直流稳压电源。\n- **实验原理**\n\n**1. 惠斯登电桥的线路原理**\n\n把待测电阻${\\mathrm {R}}_{\\mathrm {X}}$与另外3个可变电阻${\\mathrm {R}}_{\\mathrm {1}}\\mathrm {、}{\\mathrm {R}}_{\\math", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:019", + "course_id": "university_physics_lab_1", + "query": "用惠斯登电桥测电阻主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c02", + "exists": true, + "source_id": "university-physics-lab-1-006", + "source_title": "用惠斯登电桥测电阻", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "dd7a2f98a0d3dc78ee76bbdb53caa07351c0cd18d2df1dfe6997f5535b125a00", + "text_excerpt": "公式(3.7-1)是在电桥平衡条件下的结果,而电桥是否平衡,实际上是看检流计有无偏转来判断的。而检流计的灵敏度总是有限的。如我们实验所用的检流计,指针偏转1格所对应的电流大约为${\\mathrm {10}}^{\\mathrm {-6}}$A,当通过它的电流比${\\mathrm {10}}^{\\mathrm {-7}}$A还要小时,指针的偏转小于0. 1格,我们就很难察觉出来(数字检流计小于${\\mathrm {10}}^{\\mathrm {-8}}$A)。假设电桥在$\\fra", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:020", + "course_id": "university_physics_lab_1", + "query": "我想先复习用惠斯登电桥测电阻,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c03", + "exists": true, + "source_id": "university-physics-lab-1-006", + "source_title": "用惠斯登电桥测电阻", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0bf759fc6b93bbf7a5823ee14a89e5f107f46a8b1d0aae6a6dd8106e9b767504", + "text_excerpt": "$$\nS=\\frac{SU}{(R_1+R_2+R_0+R)+(2+\\frac{R_2}{R_1}+\\frac{R_3}{R_0})R_C}\n$$\n\n式中,${S}_{\\mathrm {1}}\\mathrm {=}\\frac {\\mathrm {∆}n} {\\mathrm {∆}{I}_{G}}$为检流计灵敏度,U为电源电压。\n\n可以证明,由于桥臂电阻所处位置的对称性,改变任一桥臂电阻得到的电桥灵敏度是相同的。在实验中,通常${R}_{\\mathrm {0}}$是可变的,因此", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:021", + "course_id": "university_physics_lab_1", + "query": "复习用惠斯登电桥测电阻时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c04", + "exists": true, + "source_id": "university-physics-lab-1-006", + "source_title": "用惠斯登电桥测电阻", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "83cf2332e3de40eaca9208bd5f4ca8dc1b650de93842f04cc811d8873232bc7c", + "text_excerpt": "②量程倍率设置:电桥的量程倍率可视被测电阻的大小自行设置。方法是:通过面标上的连线${\\mathrm {R}}_{\\mathrm {a}}$和${\\mathrm {R}}_{\\mathrm {b}}$与${\\mathrm {R}}_{\\mathrm {1}}\\mathrm {、}{\\mathrm {R}}_{\\mathrm {2}}$两组接口来实现, 如“x1”倍率,由图3.7-2所示${\\mathrm {R}}_{\\mathrm {a}}$排空,${\\mathrm {R}}", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:022", + "course_id": "university_physics_lab_1", + "query": "用惠斯登电桥测电阻里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c05", + "exists": true, + "source_id": "university-physics-lab-1-006", + "source_title": "用惠斯登电桥测电阻", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "90e709684758a75ee1d07d3bc7c55b895c9e1db53405660e58b3b0e817dbe2d7", + "text_excerpt": "④按图3.7-3所示接上被测电阻,${R}_{\\mathrm {3}}$测量盘打到等于被测电阻的标称值除以倍率的商的数字,旋下G、B按钮,调节${R}_{\\mathrm {3}}$使电桥平衡(电流表示值为0),则被测电阻阻值${R}_{X}\\mathrm {=}{R}_{\\mathrm {1}}\\mathrm {∙}\\frac {{R}_{\\mathrm {1}}} {{R}_{\\mathrm {2}}}\\mathrm {=}k\\mathrm {∙}{R}_{\\mathrm ", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:023", + "course_id": "university_physics_lab_1", + "query": "学习用惠斯登电桥测电阻时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c06", + "exists": true, + "source_id": "university-physics-lab-1-006", + "source_title": "用惠斯登电桥测电阻", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5c28c995777eaaeef913a60b658bcaa9adad530f9ba0863abb840f0c75a5ad49", + "text_excerpt": "\n\n\n\n\n
待测电阻Rx1Rx2Rx3Rx4
电阻标称值(Ω)512201.5k22k
比率K0.010.1110
准确度等级α 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c07", + "exists": true, + "source_id": "university-physics-lab-1-006", + "source_title": "用惠斯登电桥测电阻", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "204989069e485c78f80038041490a6bb97b90585bda513496197034d2df70d72", + "text_excerpt": "
Rx=KR3±σR(Ω)51.2630±0.07220.400±0.21559.00±0.822260±8
\n\n- **结论及分析**\n\n**思考题**\n\n1.使电桥测量误差增大的主要因素是什么?如何提高电桥的灵敏度?\n\n用惠斯通电桥测量纯电阻时,电源电压不太稳定,不会加大测量误差,但电源电压太低,会使测量回路的电流减小,降低灵敏度,会使误差加大;用惠斯", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:025", + "course_id": "university_physics_lab_1", + "query": "实验三、超声波探测及复摆测量重力加速度主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c01", + "exists": true, + "source_id": "university-physics-lab-1-007", + "source_title": "超声波在介质的传播", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "9f669e92ff1830968758d1fd27f976308defdfe099e6f9bc12e158be240830a5", + "text_excerpt": "超声波是一种弹性波, 能够在弹性介质中传播,而所有物质都可视为弹性介质,因此超声波对所有介质都是“透明”的。一般情况下,超声在液体和固体中传播的距离比气体中的传播距离要远得多;例如在海洋探测中,可以用超声波来探测数千米的目标。这也是超声被广泛应用于探测的主要原因之一。\n\n利用超声波进行探测的另一个原因是超声探头发射的能量具有较强的指向性。指向性是指超声波探头发射声束扩散角的大小。扩散角越小,则指向性越好,对目标定位的准确性越高。在固体材料的尺寸测量、无损检测、超声诊断、潜艇", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:026", + "course_id": "university_physics_lab_1", + "query": "我想先复习实验三、超声波探测及复摆测量重力加速度,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c02", + "exists": true, + "source_id": "university-physics-lab-1-007", + "source_title": "超声波在介质的传播", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ebffc64b839a4784c1b4181edaedbc32acec4c7fc1e681c58e92c8d055468b8b", + "text_excerpt": "![image](assets/university-physics-lab-1-007/image-004.jpeg)\n1. 自绘数据记录表格并记录测量数据和处理数据。\n\n![image](assets/university-physics-lab-1-007/image-005.png)\n\n得到速度约为6322.4m/s\n\nD缺陷约里桌面2.968cm\n\n**六、分析与思考**\n1. 在利用斜探头探测中,如果能够得到与被测材料同材质的试块,并且已知该试块中两个不同深度的横", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:027", + "course_id": "university_physics_lab_1", + "query": "复习实验三、超声波探测及复摆测量重力加速度时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c03", + "exists": true, + "source_id": "university-physics-lab-1-007", + "source_title": "超声波在介质的传播", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "f6124bc442620c797fdd42aabe3c19b1a3e6f33d28d03c56e0c1dc4c059dd28c", + "text_excerpt": "**(5)将光电门与计时计数器相连,将计时计数器面板“单次/双次”切换开关调至“双次”模式,打开计时计数器电源。**\n\n**2.测定转动惯量和重力加速度**\n\n**(1)在主界面将计时计数器的记录周期数设置为10个周期。**\n\n**(2)将当前刃口顶端与小孔的接触点位置(刻度约29.0cm,以实际读到的值为准)记入表1,摆动摆杆,注意摆杆摆动角度应小于5°,观察摆杆摆动状态,待摆杆基本没有前后方向的扭动后,按下计时计数器的“开始/暂停”按钮,开始计时计数,完成十个周期的记录后", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:028", + "course_id": "university_physics_lab_1", + "query": "非平衡电桥电压输出特性研究里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c01", + "exists": true, + "source_id": "university-physics-lab-1-008", + "source_title": "非平衡电桥电压输出特性研究", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ca147797da30c25a8e9fa7d40dfc9175169906ea74d872643dc0a3f0758d553c", + "text_excerpt": "非平衡电桥电压输出特性研究\n- **实验目的**\n\n(1)了解非平衡电桥的工作原理;\n\n(2)研究非平衡电桥电压输出特性。\n- **实验仪器**\n\nFQJ型非平衡电桥、电桥接线板、电阻箱、稳压电源、电压表等。\n- **实验原理**\n1. **单臂输入时电桥电压输出特性**\n\n图4.17-1是由四个桥臂电阻、直流电源和电压表组成的非平衡电桥电路。当电桥平衡时,R1:R3=R2:R4,电路中A、B两点之间电位差UAB=0.若此时使一个桥臂电阻(如R4)增加很小的电阻△R,即R4=", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:029", + "course_id": "university_physics_lab_1", + "query": "学习非平衡电桥电压输出特性研究时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c02", + "exists": true, + "source_id": "university-physics-lab-1-008", + "source_title": "非平衡电桥电压输出特性研究", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cb5f9d18f682771701c1c3a0608d5bfae6e09ccb61c34b90290652d851bb5567", + "text_excerpt": "![formula-object](assets/university-physics-lab-1-008/image-008.png) (4.17-11)\n\n也就是说,由于某种原因使电阻R4的值发生变化时,可以通过非平衡电桥测出电桥在非平衡状态下的输出电压,再由式(4.17-11)求得R4从初始状态至某一瞬间的电阻变化量,从而得到R4的某一瞬时值。\n- **内容步骤**\n\n**1、用非平衡电桥电压输出形式测电阻**\n\n①通过预习熟悉各种形式", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_1:030", + "course_id": "university_physics_lab_1", + "query": "考试会怎么考非平衡电桥电压输出特性研究?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c03", + "exists": true, + "source_id": "university-physics-lab-1-008", + "source_title": "非平衡电桥电压输出特性研究", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "1a3a49c0c1c23a4994accef56920bd1482b30a4f2c9eff761ac91172f449b5bb", + "text_excerpt": "| 温度/°C | 非平衡电压UAB/mV | 铜电阻变化量△R/Ω | 铜电阻R/Ω |\n|---|---|---|---|\n| 26.6°C | 0 | 0 | 65.25 |\n| 31.6°C | 2.2 | 0.441692 | 65.6917 |\n| 36.6°C | 4.1 | 0.823154 | 66.0732 |\n| 41.6°C | 6.3 | 1.26485 | 66.5148 |\n| 46.6°C | 8.1 | 1.62623 | 66.8762 |", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:001", + "course_id": "university_physics_lab_2", + "query": "3.2 数字示波器主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-001:h-3.2-数字示波器:c01", + "exists": true, + "source_id": "university-physics-lab-2-001", + "source_title": "3.2 数字示波器", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "5efb5d2a6b5eabfb8a59fb431c2c62cb703b56d236525822a77141e93be5a363", + "text_excerpt": "3.2数字示波器\n\n一、实验目的\n\n(1)了解和掌握数字示波器的基本作用和使用方法。\n\n(2)学习使用函数信号发生器。\n\n二、实验仪器\n\nGDS-1102B型数字示波器、SP33520A型函数信号发生器等。\n\n三、实验原理\n\n数字示波器实际上是计算机技术的一种应用。不管什么型号和类型的数字示波器,其系统的硬件部分为一块高速的数据采集电路板。这块电路板能实现双通道数据输人和处理,如书图3.2-8所示。\n\n从功能上可将硬件系统分为信号前端放大模块(可变增益放大器)、高速模数转换模", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:002", + "course_id": "university_physics_lab_2", + "query": "我想先复习3.2 数字示波器,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-001:h-3.2-数字示波器:c02", + "exists": true, + "source_id": "university-physics-lab-2-001", + "source_title": "3.2 数字示波器", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "7ccd92b4de9dc86672e760481d5fa58d6f7c9a9ffbabca92ba340bc227b0e84c", + "text_excerpt": "④设有自动设置功能。信号输人后,按下面板上的“AUTOSET”(自动设置)键,示波器可以自动设置y轴、x轴和触发条件,显示输入信号的波形。如果进行其他操作,自动设置功能将自动取消。按下“AUTOSET”键的时间不小于1s时,可以进行其他面板功能的设置。\n\n四、实验内容与主要步骤\n\n1.熟悉GDS-1102B型数字示波器及波形显示\n\n①熟悉数字示波器的基本操作,了解数字示波器的菜单操作方法;熟悉SP33520A型函数信号发生器的使用方法(见附录)。\n\n②连接信号发生器与示波器,", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:003", + "course_id": "university_physics_lab_2", + "query": "复习3.2 数字示波器时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-001:h-3.2-数字示波器:c03", + "exists": true, + "source_id": "university-physics-lab-2-001", + "source_title": "3.2 数字示波器", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "f3da302cd5c754380ef746cc73cbfae69e79bac4fa7a63244cbc0ca6c39d732d", + "text_excerpt": "![image](assets/university-physics-lab-2-001/image-002.jpeg)![image](assets/university-physics-lab-2-001/image-003.jpeg)\n\n![image](assets/university-physics-lab-2-001/image-004.jpeg)\n\n六、实验感想\n\n在使用过程中,“Autoset”、“Measure”和“Cursor”按键较常使用。示波器上手简", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:004", + "course_id": "university_physics_lab_2", + "query": "3.3 共振法测量材料的杨氏模量里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c01", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "37a14bf9dc3a45e1cca28f7b040e862712a6ab579d0441f01cec7a300549a2ba", + "text_excerpt": "实验 **3.3** 共振法测量材料的杨氏模量\n\n杨氏模量是固体材料的重要力学性质,它反映了固体材料抵抗外力产生拉伸(或压缩)形变的能力,\n\n是选择机械构件材料的依据之一。杨氏模量的测量方法有多种,如拉伸法、弯曲法、共振法等等。拉伸法\n\n常用于形变大、常温下的测量。但该方法使用的载荷较大,加载速度慢,有弛豫过程,不能真实地反映材\n\n料内部结构的变化,且不适用于脆性材料,和材料在不同温度时的杨氏模量的测量。共振法不仅克服了拉\n\n伸法的上述缺陷,而且更具有实用价值。它不仅适用于", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:005", + "course_id": "university_physics_lab_2", + "query": "学习3.3 共振法测量材料的杨氏模量时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c02", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a31a1bb514ee9fd7ece19a2f60cb78efcb85476b6704d5ab2740171f480b4878", + "text_excerpt": "可以看出,上式两边分别是 *x* 和 *t* 的函数,只有都等于一个任意常数时才有可能使等式成立。设这个\n\n常数为 *K*4,得\n\n\n\n", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:006", + "course_id": "university_physics_lab_2", + "query": "考试会怎么考3.3 共振法测量材料的杨氏模量?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c03", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "be00312fcad82fcb1448b88dbff6e6a4747509b26b4a993da5e7e724715fd48d", + "text_excerpt": "出,试样棒在作基频共振时存在两个节点,它们的位置距离其中一个端面分别为 0.224*L* 和 0.776*L* 处。理\n\n论上悬挂点应取在节点处,此时试样棒的共振频率才是共振基频。\n\n在实验上,由于悬丝对试样棒振动的阻尼,所检测到的共振频率大小是随悬挂点的位置而变化的。由\n\n于压电换能器所拾取的是悬挂点的加速度共\n\n| 振信号,而不是振幅共振信号,并且所检测到
的共振频率随悬挂点到节点的距离增大而增
大。若要直接测量试样棒的基频共振频率,只
有将悬丝", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:007", + "course_id": "university_physics_lab_2", + "query": "3.3 共振法测量材料的杨氏模量主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c04", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ceeccffc5e1474fcd4f3d07cd3c3a23799e7130b74b6b6b6af4cb33c4c2d7242", + "text_excerpt": "个节点位置(0.224*L* 和 0.776*L*),并在试样棒上标明。两个节点位置将作为试样棒悬挂点位置坐标的坐标\n\n
4
*d X*
4
*K X*
0
4
*d x*
\n\n\n
0.224*L*10\t300.224*L*
\n\n-30\t-10*O*2020*O*-10-30\n\n图 3.3-4 悬挂坐标标示\n\n原点 O。在试样棒上标定测量共振频率时各悬挂点的位置(图 3.3-4)。\n\n", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:008", + "course_id": "university_physics_lab_2", + "query": "我想先复习3.3 共振法测量材料的杨氏模量,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c05", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "8186935f10e2225f9c11a16f1ad35ce4f8699c6b8704762e327d3484a36f7dc1", + "text_excerpt": "\n\n
悬挂点位置
(mm)
252015105-5-10-15-20-25




*f*
(Hz)
1 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c06", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a2796bdb90751cef838a6aa4afa2d0cbb6d3b36baedb9679b4ac05783181c509", + "text_excerpt": "要的、不可缺少的色散元件,它能将光源发出的光按波长分列为谱线并按有序排列。衍射光栅由大量等宽、等间距、平行排列的狭缝构成。一般可以分为两类:用透射光工作的透射光栅和用反射光工作的反射光栅。 \t 本实验要求:理解光栅衍射的原理,研究衍射光栅的特性;掌握用衍射光栅精确测量波长的原理和方法;进一步熟悉分光计的工作原理和分光计的调节、使用方法。 一、实验目的\n\n1、 进一步掌握分光计的构造、使用和调节方法。 2、 了解光栅特性,并利用光栅衍射法测量光波波长、角色散率和分辨本领。\n", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:010", + "course_id": "university_physics_lab_2", + "query": "3.3 共振法测量材料的杨氏模量里的方法或结论怎么理解?,第10条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c07", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "79942b63c76c95a8f68d542773fd5e01be99a8a005761a682c38eb9dd6347aa6", + "text_excerpt": "\n
射,各缝的衍射光在叠加处又会产生干涉,干涉结果决定于光程差。因为光栅各狭缝间距相等,所以相邻狭缝沿 *θ* 方向衍射光束的光程差都是 *d* sin*θ*(图 4.1-1)。*θ* 是衍射光束与光栅法线的夹角,称为衍射角。 \t 在光栅后面放置一个会聚透镜,使透镜光轴平行于光栅法线(4.1-2),透镜将会使图 4.1-2 所示平面上衍射角为 *θ* 的光都会聚在焦平面上的 P 点,由多光束干涉原理,在 *θ* 满足下式时将产生干", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:011", + "course_id": "university_physics_lab_2", + "query": "学习3.3 共振法测量材料的杨氏模量时哪些概念容易混淆?,第11条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c08", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "4c92009d370ecc8d700c0a5bd65a1a18b1037b1e6c10b9dd5b60557ee11b190b", + "text_excerpt": "\n\n\n\n
波长的谱线,说明衍射光栅有色散作用。由于衍射现象,使光谱线扩展为较宽的亮条纹,因而限制了光栅的分辨能力,根据理论推导,光栅的色散能力可以用角色散 D 表征。
*D* *d*()
*d*4.1-2
\n\n上式表示单位波长间隔", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:012", + "course_id": "university_physics_lab_2", + "query": "考试会怎么考3.3 共振法测量材料的杨氏模量?,第12条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c09", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "ca98131514ab3e87dac7b5035084c28aea830294c0d4f82c44b4762dbca723d5", + "text_excerpt": "图 4.1-4 图 4.1-5 图 4.1-6\n\n具体方法:使平行光管正对光源,调节平行光管产生平行光,并调节狭缝宽度至 1 mm~2mm,转动望\n\n远镜使分划板的叉丝对准狭缝中央,见图 4.1-4。固定望远镜,将光栅置于载物台上(如图 4.1-5),根据目测尽可能做到使光栅平面垂直平分“1”、“2”连线,而“3”", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:013", + "course_id": "university_physics_lab_2", + "query": "3.3 共振法测量材料的杨氏模量主要讲什么?,第13条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c10", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "30a07051b1c3e886f4206f74af1c0ab1951845a70d4be583c9314c4bed7358fd", + "text_excerpt": "\n\n\n
0+1+2
紫光<", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:014", + "course_id": "university_physics_lab_2", + "query": "我想先复习3.3 共振法测量材料的杨氏模量,应该从哪里开始?,第14条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c11", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "e5ed10ac31c4c5c7c8c37bb48f655dadc7fd9286b5fa9a4fcc1b139237185eb1", + "text_excerpt": "\n\n\n\n<", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:015", + "course_id": "university_physics_lab_2", + "query": "复习3.3 共振法测量材料的杨氏模量时哪些内容最重要?,第15条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c12", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "2e93b8790fa43d0a398c3309fe2d3e246e490a0ec2bc0b14b5ad917d70b1c2a6", + "text_excerpt": "
黄光 1黄光 2紫光
衍射角波长 衍射角波长衍射角波长 
-2
\n\n
 1
*n*

1
其中衍射角 *k*左-0左+ 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c13", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "7880f89f949cf3b5ff51e5cb49e17b2c1bcdfd3229bb17d47af9748eeb2eab9c", + "text_excerpt": "实验 **4.4 PN** 结正向电压温度特性研究\n\n常用的温度传感器有热电偶、测温电阻器和热敏电阻等,这些温度传感器有各自的优点,但也有它的\n\n不足之处。如热电偶适用温度范围宽,但灵敏度低、线性差且需要参考温度;热敏电阻的灵敏度高、热响应快、体积小,缺点是线性较差,这对于仪表的校准和调节很不方便;测温电阻如铂电阻有精度高、线性好的优点,但是灵敏度低且价格较贵;而 PN 结温度传感器具有灵敏度高、线性好、热响应快和体积小轻![image](assets/univers", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:017", + "course_id": "university_physics_lab_2", + "query": "学习3.3 共振法测量材料的杨氏模量时哪些概念容易混淆?,第17条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c14", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "9041235bac6c1c8a29846eb0cdecbae89d3e82939a67971bc3e4f8ae54a379e0", + "text_excerpt": "结有关的参量、载流子的电荷量,当 PN 结制好后,两者均为常数。 ,*k I* 分别为玻尔兹曼常数、正向电流,*F* 实验中正向电流 \t*F**I* 采用恒流源。即*V**F**V**F*(0)与温度*t* 成正比,比例系数*S*=*k*ln(*C I**F*) /*q* 称为温度传\n\n感器的灵敏度系数。因此通过测量不同温度下的*V**F**V**F*(0)值,即可得到 PN 结作为温度传感器的灵敏度系\n\n\n
数 *S* ", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:018", + "course_id": "university_physics_lab_2", + "query": "考试会怎么考3.3 共振法测量材料的杨氏模量?,第18条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c15", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "47b317cdea7457bf339693f30a81e111f42565eedce3305da31db117da95c8f9", + "text_excerpt": "![image](assets/university-physics-lab-2-002/image-023.png)\n\n图 4.4-3 PN 结正向特性综合实验仪与 PN 结的连接示意图\n\n实验前,将 DH-SJ 型温度传感器实验装置上的“加热电流”开关置“关”位置,将“风扇电流”开关\n\n置“关”位置,接上加热电源线。插好 Pt100 温度传感器和 PN 结温度传感器,两者连接均为直插式。PN\n\n结引出线分别插入 PN 结正向特性综合试验仪上的+V、-V 和+", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:019", + "course_id": "university_physics_lab_2", + "query": "3.3 共振法测量材料的杨氏模量主要讲什么?,第19条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c16", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "eab5a8d54480ea83c5187b73cf52b8593f76416c468e48b6dc35baa8193a443b", + "text_excerpt": "\n\n\n
(1)以公式*I* *A*exp(*BV**F*)的正向电流 IF 和正向压降 *V**F* 为变量,根据表 4.4-1 测得的数据,以 *V**F*
为 x 轴数据,*I**F* 为 y 轴数据,用 Excel 拟合参数 A、B,再由 A=*Is*,估算出反向饱和电流", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:020", + "course_id": "university_physics_lab_2", + "query": "我想先复习3.3 共振法测量材料的杨氏模量,应该从哪里开始?,第20条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c17", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "102f69621257e82fe29091f3c169a93a282d580e5ae34401810dd79f3b10d78e", + "text_excerpt": "拆除信号线时,动作要轻,否则可能拉断引线影响实验。\n\n3、插上电源线,打开电源开关,预热几分钟,待温度传感器实验装置所示温度值稳定之后,此时显\n\n示即为室温 TR,可记录下起始温度 TR。\n\n4、“加热电流”开关置“开”位置,根据需要的温度,转动“加热电流调节”电位器,选择合适的加热电流\n\n大小。目标温度高,加热电流适当大点,目标温度低,加热电流要小一点。\n\n5、将 PN 结温度传感器插入温度传感器实验装置的加热炉孔中。\n\n6、PN 结管上的有两组线共 4 个插", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:021", + "course_id": "university_physics_lab_2", + "query": "复习3.3 共振法测量材料的杨氏模量时哪些内容最重要?,第21条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c18", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "816f0cf6811a6db88a08602a22012c545a61dcc9e8c43a29ed70938ff8eff548", + "text_excerpt": "理想气体的比热容比(又称绝热指数)是热力学理论及工程技术应用中的一个常用而且重要的物理量,\n\n对气体比热容比的准确测量也是物理学基本测量之一。目前气体比热容比的常用测量方法有绝热膨胀法、\n\n振动法、声速法、传感器法等,各方法都有自己的优缺点,其中绝热膨胀法是最常用的方法之一。本实验\n\n正是采用绝热膨胀法来测定空气的比热容比。\n\n一 实验目的\n\n1. 观测热力学过程中气体状态的变化情况及基本物理规律。\n\n2. 用绝热膨胀法测定空气的比热容比。\n\n二 实验仪器与装置\n\n| 如图 ", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:022", + "course_id": "university_physics_lab_2", + "query": "3.3 共振法测量材料的杨氏模量里的方法或结论怎么理解?,第22条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c19", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "bf77c4b712f94e41fdcdc08ca248d68f798e0e6ea1f7c0fc1af240518a48e733", + "text_excerpt": "\n\n\n<", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:023", + "course_id": "university_physics_lab_2", + "query": "学习3.3 共振法测量材料的杨氏模量时哪些概念容易混淆?,第23条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c20", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "9cbc20f1eae67cd8b1df845d3921f32f9e5256b3501d8edac6f53e4e390a7a59", + "text_excerpt": "| (*P*1 *P*0 | )1 |  | (*T*0*T*1 | ) | (3.10-2) |\n|---|---|---|---|---|---|\n\n从状态 *II* 到状态 *III* 是等容吸热过程,满足的理想气体状态方程为\n\n
0-100KPa。*C**P*![image](assets/university-physics-lab-2-002/image-031.png)与定容
三 实验原理
理想气体的比热容比 γ 定义为气体的定压比热容
\n\n
*P* *P*2*T*1( 3.10-3)
将(3.10-3) 式代入(3.10-2) 式, 消去<", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:024", + "course_id": "university_physics_lab_2", + "query": "考试会怎么考3.3 共振法测量材料的杨氏模量?,第24条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c21", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "a0534b1f5916cd2add355464cb75ab285d171a70ff4d192baf86d9320f2279db", + "text_excerpt": "\n\n\n
干燥空气是以氮气和氧气为主要成份的气体,![image](assets/university-physics-lab-2-002/image-037.png)在温
度不太低、压强不太高的条件下, 可以近似认为是双
原子理想气体, 其比热容比的理论值近似为的 正 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c22", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "155ff303df0d2252fefca639a9f1d4356aa979e0137143143871dc821dc5794e", + "text_excerpt": "| 7 当贮气瓶内空气的温度上升至室温*T* 且压强稳定时记下贮气瓶内气体的压强0 | 2*P* ,同时触摸平台上的停止 |\n|---|---|\n\n按钮,停止记录瓶内空气的温度和压强。\n\n8 查看所记录的数据,选择合适数据输入对应输入框中,触摸计算按钮即可算出所测空气的比热容比。将\n\n对应的实验数据记录在表 3.10-1 内。\n\n9 重复以上步骤,进行多次测量,求 的平均值和误差。\n\n表 3.10-1 实验数据记录表\n\n\n
x", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:026", + "course_id": "university_physics_lab_2", + "query": "我想先复习3.3 共振法测量材料的杨氏模量,应该从哪里开始?,第26条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c23", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "38dd592393b1f0a9500af0f53f470c968c94af6e33922b7e5f3403c9df27e174", + "text_excerpt": "3 试着画出实验过程中的*P* *V*曲线图。 ![image](assets/university-physics-lab-2-002/image-040.png)\n\n实验 **3.3** 共振法测量材料的杨氏模量\n\n杨氏模量是固体材料的重要力学性质,它反映了固体材料抵抗外力产生拉伸(或压缩)形变的能力,\n\n是选择机械构件材料的依据之一。杨氏模量的测量方法有多种,如拉伸法、弯曲法、共振法等等。拉伸法\n\n常用于形变大、常温下的测量。但该方法使用的载荷较大,加载速度慢,", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:027", + "course_id": "university_physics_lab_2", + "query": "复习3.3 共振法测量材料的杨氏模量时哪些内容最重要?,第27条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c24", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "48a803d4daeeb82963559d62389d277329c18548886a9a5ec17a31a9e2ff6fba", + "text_excerpt": "\n\n\n
14
*d X*
*s*12
*d T*
(3.3-2)
4
*X d x*
*EJ T dt*2
\n\n可以看出,上式两边分别是 *x* 和 ", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:028", + "course_id": "university_physics_lab_2", + "query": "3.3 共振法测量材料的杨氏模量里的方法或结论怎么理解?,第28条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c25", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "20208f9d8d3a5a87d67f08a4fbfad797b3cc44bad446823290070d712c8f7fcb", + "text_excerpt": "增大,此时仪器读出的频率就是试样棒在该悬挂条件下的共振频率。\n\n![image](assets/university-physics-lab-2-002/image-044.png)\n\n图 3.3-2\n\n棒的横振动节点与振动级次有关。图 3.3-2 给出了 *n* = 1、2、3、4 时的振动波形。从 *n* = 1 的图可以看\n\n出,试样棒在作基频共振时存在两个节点,它们的位置距离其中一个端面分别为 0.224*L* 和 0.776*L* 处。理\n\n论上", + "flags": [] + } + ] + }, + { + "legacy_id": "university_physics_lab_2:029", + "course_id": "university_physics_lab_2", + "query": "学习3.3 共振法测量材料的杨氏模量时哪些概念容易混淆?,第29条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c26", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "e8f5326606e6e1a7d963fcad13a9b408620b971ed9e24c9547b6af2b54b03533", + "text_excerpt": "五、实验过程与步骤\n\n(1)熟悉动态杨氏模量测试仪的结构及使用方法(图 3.3-3)。把实验仪器连接好,通电预热10分钟。\n\n(2)测定试样的长度 *L*、直径 *d* 和质量 *m*,每个物理量各测 5 次,数据记录于表 3.3-1。计算试样棒的两\n\n个节点位置(0.224*L* 和 0.776*L*),并在试样棒上标明。两个节点位置将作为试样棒悬挂点位置坐标的坐标\n\n\n 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c27", + "exists": true, + "source_id": "university-physics-lab-2-002", + "source_title": "3.3 共振法测量材料的杨氏模量", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "0aaed11446ee7bbe1a1cefb5aeac6baf7b8594270d9be4caab15500bbbd42db1", + "text_excerpt": "![image](assets/university-physics-lab-2-002/image-048.png)=\n\n表 3.3-2 共振频率的测量\n\n
0.224*L*10\t30
\n\n 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-001:s1:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-001", + "source_title": "Lecture 0 Introduction", + "locator_type": "slide", + "locator_start": 1, + "text_sha256": "7316d70473dc135ef2e9c96d97742b5460f3456342886eae23c605be22aa365e", + "text_excerpt": "- Web Programming\n- School of Computer Science and Engineering,\n- South China University of Technology", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:002", + "course_id": "web_frontend_fundamentals", + "query": "我想先复习课程概要,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-001:s2:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-001", + "source_title": "Lecture 0 Introduction", + "locator_type": "slide", + "locator_start": 2, + "text_sha256": "b770aae57aec25a7759b3e9e868476301294795ef28c8898d66593e61a63c4b8", + "text_excerpt": "- 课程资料\n - 相应的开发工具dreamweaver等及本课程相关的课件、参考资料与网站\n- 课程考核方式\n - 上课出勤情况 20%\n - 课上练习与实验情况 20%\n - 大作业 : 60%\n - 颜老师: xiaoyyan@scut.edu.cn, 13711795218\n- 刘捷老师: seliujie@scut.edu.cn, 13760786615\n- 实验报告和大作业交给刘老师", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:003", + "course_id": "web_frontend_fundamentals", + "query": "复习课程概要时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "image_only_not_text_answer_evidence" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-001:s3:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-001", + "source_title": "Lecture 0 Introduction", + "locator_type": "slide", + "locator_start": 3, + "text_sha256": "5dde6f8be5815dcafa344d04b669c2ced4528e4ad69a58813e9e4a43ab75f960", + "text_excerpt": "![image](assets/web-frontend-fundamentals-001/image-001.png)", + "flags": [ + "image_only_not_text_answer_evidence" + ] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:004", + "course_id": "web_frontend_fundamentals", + "query": "课程概要里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-001:s4:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-001", + "source_title": "Lecture 0 Introduction", + "locator_type": "slide", + "locator_start": 4, + "text_sha256": "8f44786616b7ec48e9fa6eb0c11f45e33d5c7d5c6fc8336192fe30eb5e10a8cc", + "text_excerpt": "- 上课时间:\n- 试验时间安排\n- QQ群号:, 大家加入,上课资料在群里提供,\n- 实验时打卡也要用到\n\n| 周次 | 星期 | 节次 | 教室 |\n|---|---|---|---|\n| 1-16 | 三 | 3-4 | A2203 |\n| | | | |", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:005", + "course_id": "web_frontend_fundamentals", + "query": "学习课程概要时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-001:s7:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-001", + "source_title": "Lecture 0 Introduction", + "locator_type": "slide", + "locator_start": 7, + "text_sha256": "d71581f4c37936d51addb11527f91e8b4730ee0658f6ec9745831789009f80ad", + "text_excerpt": "- 大作业\n- 未定,确定后再告诉大家\n- 大作业评分标准:完成内容质量及所要求用的数量", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:006", + "course_id": "web_frontend_fundamentals", + "query": "考试会怎么考本课程主要包含的内容?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-001:s8:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-001", + "source_title": "Lecture 0 Introduction", + "locator_type": "slide", + "locator_start": 8, + "text_sha256": "d3468d7c0cd2c3674dcb32d44fb7188248868bd3b4a8bb93787194f75e83aba9", + "text_excerpt": "- 因特网与万维网简介\n- HTML与CSS\n- 网页区域和 CSS 盒子模型\n- PHP服务端编程\n- JavaScript和DOM\n- Cookie与Session\n- Web安全基础\n- HTML5\n- XML\n- Mashup\n- …….", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:007", + "course_id": "web_frontend_fundamentals", + "query": "本课程主要包含的内容主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-001:s9:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-001", + "source_title": "Lecture 0 Introduction", + "locator_type": "slide", + "locator_start": 9, + "text_sha256": "a87d37a0a9200f9ce58f5d8fbe6b396b0882f89d0fe378e057f622da268eb253", + "text_excerpt": "![image](assets/web-frontend-fundamentals-001/image-002.png)\n- 谢谢!", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:008", + "course_id": "web_frontend_fundamentals", + "query": "我想先复习第1讲 因特网与万维网,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s1:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 1, + "text_sha256": "7316d70473dc135ef2e9c96d97742b5460f3456342886eae23c605be22aa365e", + "text_excerpt": "- Web Programming\n- School of Computer Science and Engineering,\n- South China University of Technology", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:009", + "course_id": "web_frontend_fundamentals", + "query": "复习概要时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s2:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 2, + "text_sha256": "5f6f764a37619aee3d072dc628af6e8b6c41e45162ded6ea363bbc9048b68632", + "text_excerpt": "- August 23, 2026\n- 因特网\n- 万维网 (WWW)\n- Web 2.0", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:010", + "course_id": "web_frontend_fundamentals", + "query": "因特网是什么?里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s3:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 3, + "text_sha256": "6b33d2465b710d39d890628be7efa69d590cf65697032d36ebcf4abb2f1f36a5", + "text_excerpt": "- August 23, 2026\n- 某个中国官员\n - “因特网就是英国特务的网”\n- 某个美国参议员\n - “信息管道的集合” (解释)\n- 到底有多少个因特网 ? Google 是不是其中之一呢?\n![image](assets/web-frontend-fundamentals-002/image-001.jpg)\n![image](assets/web-frontend-fundamentals-002/image-002.png)\n![image](asse", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:011", + "course_id": "web_frontend_fundamentals", + "query": "学习因特网时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s4:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 4, + "text_sha256": "fc7624240c2873dc4e5845c0fd4a1eeadd0a5e5dcbc09248886d896d45765902", + "text_excerpt": "- 维基百科: http://en.wikipedia.org/wiki/Internet\n- 通过互联网协议集(TCP/IP)连接起来的电脑网络\n- 因特网与万维网 (WWW)的区别?\n- WWW = HTML* + HTTP(S) (World Wide Web)\n- * 包括CSS, JavaScript, 和其它浏览器允许的内容\n- August 23, 2026\n![image](assets/web-frontend-fundamentals-002/image-", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:012", + "course_id": "web_frontend_fundamentals", + "query": "考试会怎么考简史?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s5:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 5, + "text_sha256": "d83fb6edf17545260de8736e701cf8fd9035c85415ce24a27c071f5ed3d70f1d", + "text_excerpt": "- 起源于美国国防部门内部网络, 被称为 ARPANET (1960s-70s)\n- 最初的服务: 电子邮件, 文件传输\n- 在80年代后期向商业领域开放\n- Tim Berners-Lee在1989-91创建WWW\n- 流行web浏览器发布: Netscape 1994, IE 1995\n- 1995年: Amazon.com开放; 1996年二月: Google\n- 1986年经过北京计算机应用技术协会的努力,中国首次接入因特网:中国学术网\n- 第一个电子邮件, 由CAT", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:013", + "course_id": "web_frontend_fundamentals", + "query": "谁能够关掉因特网?主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s6:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 6, + "text_sha256": "f45bc11c04c8a36548c606af47b62e873bad801880153e44bc29f19309ef2a99", + "text_excerpt": "- August 23, 2026\n![image](assets/web-frontend-fundamentals-002/image-005.png)\n![image](assets/web-frontend-fundamentals-002/image-006.png)\n![image](assets/web-frontend-fundamentals-002/image-007.png)\n![image](assets/web-frontend-fundamenta", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:014", + "course_id": "web_frontend_fundamentals", + "query": "我想先复习因特网的关键点,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s7:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 7, + "text_sha256": "d0685bd1ccef0a679d15f9c493b6766d000a4939b6a9fb1a16660e7725064e6a", + "text_excerpt": "- 因特网是为信息自由而存在的\n- 互联网 Vs. 因特网\n- 子网络能够独立存在\n- 计算机能够动态加入与离开网络\n- 建立于开放标准之上; 每个人都能建立一个新的设备\n- 缺乏中心控制(大部分)\n- 任何人都能借助简单的软件使用它\n- August 23, 2026", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:015", + "course_id": "web_frontend_fundamentals", + "query": "复习人员和组织时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s8:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 8, + "text_sha256": "b2f16a1f441ff6ca3bd62418c5a7560c8dc9ce10388b9c9b866547b179fc09c2", + "text_excerpt": "- 因特网工程任务推动小组(IETF): 互联网协议标准\n- 互联网名称与数字地址分配机构(ICANN): 决定顶级域名\n- 万维网联盟(W3C): Web标准\n- August 23, 2026\n![image](assets/web-frontend-fundamentals-002/image-010.png)\n![image](assets/web-frontend-fundamentals-002/image-011.png)\n![image](assets/web", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:016", + "course_id": "web_frontend_fundamentals", + "query": "分层架构里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s9:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 9, + "text_sha256": "56a24c5529cf73cb9e38277eb6c6ddcb0bdf03b1faf9fe29e0561c0a2c01d757", + "text_excerpt": "- 物理层: 设备, 例如同轴电缆, 光纤,调制解调器\n- 数据链路层: 基础硬件协议 (以太网, Wi-Fi, DSL, ATM, PPP)\n- 网络/因特网层: 基础软件协议 (IP)\n- 运输层: 保证网络层的可靠性 (TCP, UDP)\n- 应用层: 为各种应用程序实现通信(HTTP, POP3/IMAP, SSH, FTP)\n- August 23, 2026\n![image](assets/web-frontend-fundamentals-002/image-0", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:017", + "course_id": "web_frontend_fundamentals", + "query": "学习因特网协议时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s10:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 10, + "text_sha256": "c428fffdcb86940bc352650bac006ffb395451796fcb725c11da5c78a3a17118", + "text_excerpt": "- IP 是通信系统的基础, 用来把所有数据(包)在互联网上进行传送\n- 每一个设备有一个32-bit 的IP地址, 它包含四个8-bit 数字 (0-255)\n- 找出你的互联网IP地址: whatismyip.com\n- 找出你的本地IP地址:\n - 在终端中, 键入: ipconfig (Windows) 或者 ifconfig (Mac/Linux)\n- IP v4 vs. IP v6 (32-b vs. 128-b)\n- August 23, 2026\n![ima", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:018", + "course_id": "web_frontend_fundamentals", + "query": "考试会怎么考传输控制协议?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s11:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 11, + "text_sha256": "2da0a563f63d6a2c11620be9ca67d7d3f1da3ae847c47f8485ad6d4a5c27aeb7", + "text_excerpt": "- 在IP之上添加多个有保证的信息传递机制\n- 多路复用: 多个程序使用同个IP地址\n - 端口: 一个给定了的, 属于每个程序或服务的数字\n - 80: Web浏览器(443 用于安全浏览)\n - 25: email\n - 22: ssh\n - 21: ftp\n - 更多常见的端口\n- 某些程序 (QQ, 游戏, 流媒体程序) 使用更简单的UDP 协议代替TCP\n- 找出正在使用的端口:\n - 在终端中, 使用netstat (Windows) 命令\n - ", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:019", + "course_id": "web_frontend_fundamentals", + "query": "概要主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s12:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 12, + "text_sha256": "def2738d31fc7d9e0b7bec57522de46dc3fce04ac1ee12b3df99353b1aadacaa", + "text_excerpt": "- August 23, 2026\n- 因特网\n- 环球网 (WWW)\n- Web 2.0", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:020", + "course_id": "web_frontend_fundamentals", + "query": "我想先复习Web服务器 与 浏览器,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s13:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 13, + "text_sha256": "f735813c58e4276410faa7df4287af28f7a9d585915f76d585840192fc1699bd", + "text_excerpt": "- Web 服务器: 监听Web页面请求的软件\n - Apache\n - 微软因特网信息服务器(IIS) (Windows的一部分)\n- Web 浏览器: 从Web服务器获取/显示文档\n - Microsoft Internet Explorer (IE)\n - Mozilla Firefox\n - Apple Safari\n - Google Chrome\n - Opera\n- August 23, 2026\n![image](assets/web-front", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:021", + "course_id": "web_frontend_fundamentals", + "query": "复习域名解析系统时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s14:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 14, + "text_sha256": "0c68c14710811635abac3e3a5a102c349867a6ed9f026d434adeadeb757e0250", + "text_excerpt": "- 把给定的名称映射为IP地址的一系列服务器\n - 例子: www.scut.edu.cn  202.38.193.188\n - 使用Windows命令nslookup 找出IP地址\n - 非英语域名 DN ccTLD Fast Track\n- 大部分系统拥有一个本地缓存文件:host\n - Windows: C:\\Windows\\system32\\drivers\\etc\\hosts\n - Mac: /private/etc/hosts\n - Linux: /e", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:022", + "course_id": "web_frontend_fundamentals", + "query": "统一资源定位符里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s15:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 15, + "text_sha256": "7fc85df26064854bb070d2ce84adb2672d175eaff87eb2bb35e81a2d0ffd72fa", + "text_excerpt": "- 标识一个文档在网站的位置\n- 一个基本的URL: http://www.scut.edu.cn:8080 /cs/ ~~~ ~~~~~~~~~~~~~ ~~~~ ~~~~协议 主机 端口 路径\n- 在浏览器中输入这个 URL 时, 它会:\n - 向DNS服务器询问 www.scut.edu.cn的IP地址\n - 连接该地址上的 80 80端口\n - 从服务器获取 /cs/下的文件\n - 把结果页面显示在屏幕上\n- Au", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:023", + "course_id": "web_frontend_fundamentals", + "query": "学习高级 URL时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s16:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 16, + "text_sha256": "a7b8400d72b82a024c6757c1823a42184d9eef419daf98d83b37e6eedc8594f4", + "text_excerpt": "- 锚点: 跳转到页面的指定部分 http://www.textpad.com/download/index.html#downloads\n - 获取index.html并且跳到标志为downloads的部分\n- 端口: 指定访问服务器的端口(而不是默认的80端口) http://www.scut.edu.cn:8080/cs/ _x000b_\n- 查询字符串: 一组传给Web程序的参数 http://www.google.com/search?q=miserable+fa", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:024", + "course_id": "web_frontend_fundamentals", + "query": "考试会怎么考超文本传输协议?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s17:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 17, + "text_sha256": "c54116d196e14a8353c5164a41e7c18030e983cebeb55f721820a2250a608151", + "text_excerpt": "- 由浏览器发送并由服务器解析的一组命令\n- 部分 HTTP 命令 (浏览器在内部传送):\n - GET  filename : 下载\n - POST filename : 传送一个Web表单\n - PUT  filename : 上传\n - DELETE filename: 移除实体\n - HEAD filename: 只是状态信息, 而不是全部内容\n- 在终端窗口上模拟一个浏览器:\n- August 23, 2026\n- $ telnet www.sysu.ed", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:025", + "course_id": "web_frontend_fundamentals", + "query": "HTTP 错误码主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s18:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 18, + "text_sha256": "457cacb79e7d640f53793f0b678df6a37dddf86fcba41c5d2d2ca0eaff712d85", + "text_excerpt": "- 当某些地方出现问题, Web服务器会返回一个特殊的”错误码”数字给浏览器, 有时会附上一个HTML文档\n- 常见错误码:\n- August 23, 2026\n\n| 数字 | 含义 |\n|---|---|\n| 200 | OK |\n| 301-303 | 页面已经被移除(永久性或者临时性) |\n| 403 | 你不允许访问此页面 |\n| 404 | 找不到页面 |\n| 500 | 服务器内部错误 |\n| 完整列表 | |", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:026", + "course_id": "web_frontend_fundamentals", + "query": "我想先复习互联网媒体类型,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s19:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 19, + "text_sha256": "ad648fc001a6c589a20996ea51f2d9c6efa6e559c77117d5674f9873d5bd3d6e", + "text_excerpt": "- 有时当页面需要包含某些资源(样式表, 图标, 多媒体对象), 我们需要指定它们的数据类型\n- MIME类型列表: 按类型, 按扩展名\n- .html vs. .htm\n- August 23, 2026\n\n| MIME 类型 | 文件扩展名 |\n|---|---|\n| text/html | .html , .htm, shtml, .shtm |\n| text/plain | .txt |\n| image/gif | .gif |\n| image/jpeg | .jp", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:027", + "course_id": "web_frontend_fundamentals", + "query": "复习Web语言/技术时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s20:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 20, + "text_sha256": "ca988fa3809b82c8a3a33a9895d879022d331bd511bd364d5c7f7593967518a4", + "text_excerpt": "- 超文本标记语言 (HTML): 用于编写Web页面\n- 层叠样式表 (CSS): 调整Web页面的样式\n- PHP超文本处理器 (PHP): 在服务器上动态生成页面 – 当然, 有很多其它的语言和脚本能够完成这件事 …\n- JavaScript: 使页面能够进行交互和可编程\n- 异步 JavaScript 与 XML (Ajax): 为Web应用访问数据\n- 可扩展标记语言 (XML): 用于组织数据的元语言\n- 结构化查询语言 (SQL): 与数据库交互\n- 资源描述框", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:028", + "course_id": "web_frontend_fundamentals", + "query": "名词里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s21:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 21, + "text_sha256": "99c2691afc10d2682e4b246626cf5cfa3363dd11db218a2e8d3185a29f18df7d", + "text_excerpt": "- 因特网服务提供商 (ISP)\n - 提供因特网接入服务的企业或者组织\n - 请找出你的ISP的提供商?\n- 网站托管\n - 为消费者提供存放网页的地方,以供Web冲浪者浏览\n - ISP 通常提供网站托管服务以及他们的标准连接包\n- 客户端/服务端 vs. 浏览器/服务器\n- 表现层\n - 通常指企业级应用架构中的最高层\n - 在Web领域中, 它包括网页的代码和生成网页的代码\n- 客户端脚本/编程\n - 编写代码, 使浏览器能够渲染网页并且与用户交互\n- ", + "flags": [] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:029", + "course_id": "web_frontend_fundamentals", + "query": "学习概要时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target", + "short_text_requires_semantic_review" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s22:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 22, + "text_sha256": "def2738d31fc7d9e0b7bec57522de46dc3fce04ac1ee12b3df99353b1aadacaa", + "text_excerpt": "- August 23, 2026\n- 因特网\n- 环球网 (WWW)\n- Web 2.0", + "flags": [ + "short_text_requires_semantic_review" + ] + } + ] + }, + { + "legacy_id": "web_frontend_fundamentals:030", + "course_id": "web_frontend_fundamentals", + "query": "考试会怎么考Web 1.0 vs. Web 2.0?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "web-frontend-fundamentals-002:s23:c01", + "exists": true, + "source_id": "web-frontend-fundamentals-002", + "source_title": "Lecture 1 Internet and WWW(C)", + "locator_type": "slide", + "locator_start": 23, + "text_sha256": "d6d48fb760cefb110effe62fc806813347e9fc0e4189add915e3f4540f0c1a74", + "text_excerpt": "- Web 1.0 关注的是 发布\n - 用户被限制在被动的浏览提供给他们的信息\n- Web 2.0 关注的是 交互\n - 允许用户与其它用户交互或者改变网站内容\n - 信息共享, 互用性, 以用户为中心的设计 和 协作\n - 托管服务, web应用, 社交网站, 视频分享网站, 维基, 博客, mashups 和 folksonomies.\n - 由Tim O‘Reilly命名. 得益于2004年的O’Reilly Media Web 2.0会议\n- August", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:001", + "course_id": "xi_thought_overview", + "query": "人才计划的广东实践主要讲什么?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c01", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "3084f5f894988a48720768d9170a917eac8f9696fad52384161dba240670b3e4", + "text_excerpt": "广东省千百十工程\n\n广东省“千百十工程”人才计划是广东省政府为了吸引和培养高层次人才而实施的一项重要举措。该计划于2009年启动,旨在引进和培养一批千人计划、百人计划和十人计划的高层次人才,以推动广东省经济社会的快速发展。2008年:千百十人才计划工程启动。广东省政府提出了引进和培养千名海外高层次人才、吸引百名国内高层次人才、支持十个团队的目标。2009年:广东省政府出台了相关政策文件,明确了千百十人才计划工程的具体内容和实施办法。政府开始组织选拔和引进高层次人才,并提供相应", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:002", + "course_id": "xi_thought_overview", + "query": "我想先复习人才计划的广东实践,应该从哪里开始?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c02", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fb9cb713093e48a905bdd44bdadde4ff0208aaf03761526ec4c433e55ba06ff9", + "text_excerpt": "综上所述,千百十人才计划工程是中国广东省政府为了吸引和培养高层次人才而实施的一项重要举措。该计划的实施与国内外背景密切相关,反映了中国政府和广东省政府在高层次人才引进和培养方面的重视和努力。\n\n二、该案例的具体内容:\n\n广东省“千百十工程”人才计划主要分为三个层次:\n\n1.首先是千人计划,该计划的引进对象是国内外知名高校、科研机构、企业等领域内有突出贡献和影响力的专家学者和技术骨干。千人计划是千百十工程中的核心项目,旨在引进世界一流的领军人才。千人计划的引进对象通常是在其所在", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:003", + "course_id": "xi_thought_overview", + "query": "复习人才计划的广东实践时哪些内容最重要?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c03", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "57191b42f90a83404b938e608eb400c0e8bc972749917b46e091f090e266c347", + "text_excerpt": "理论方面1.人才理论:千百十人才计划工程体现了中国政府对人才的高度重视和管理。该计划的实施,旨在吸引国内外高层次人才,以推动中国的经济发展和科技创新。这反映了中国政府对人才的战略性思考和实践,对人才的引进、培养和使用进行了系统性的规划和管理。\n\n2.创新理论:千百十人才计划工程也体现了创新理论的重要性。高层次人才是科技创新的核心力量,他们能够带来前沿的科技知识、技术和经验,推动产业的升级和转型。千百十人才计划工程通过引进和培养高层次人才,促进了广东省的科技创新和产业发展,推动", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:004", + "course_id": "xi_thought_overview", + "query": "人才计划的广东实践里的方法或结论怎么理解?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c04", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "bd83e8020cbaab93d766926b6b764d305c016a8f499251a553104cdde5ce2213", + "text_excerpt": "2. 坚持全面深化改革,促进人的全面发展。新时代要求我们不断推进全面深化改革,从制度层面落实以人民为中心的发展思想,为人民的全面发展提供制度保障。\n\n3. 加强社会建设,提高人民生活水平。保障和改善民生是中国特色社会主义的重要方面,要通过加强社会建设、推进精准扶贫、提高就业和教育水平等措施,不断提高人民群众的生活水平。\n\n4. 推进民族团结和宗教工作。中国是一个多民族、多宗教的国家,要坚持走共建共享共治的发展道路,加强民族团结和宗教工作,促进各民族、各宗教相互了解、尊重、和谐", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:005", + "course_id": "xi_thought_overview", + "query": "学习人才计划的广东实践时哪些概念容易混淆?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c05", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cf17088f9a4b7dfa7587f6f6f634bb9146029b569d6c3260c3493f77dfef0e21", + "text_excerpt": "5. 建设人才强国。党提出了建设人才强国的目标,要求以创新驱动发展为核心,全面加强人才队伍建设,努力培养造就一大批具有国际竞争力的高层次、高技能人才,为实现中华民族伟大复兴提供有力人才支撑。\n\n以人民为中与创新驱动开放包容共享共赢的新时代思想,是中国特色社会主义发展的重要指引,为我们实现科技强国、经济强国、文化强国、生态文明建设、人民幸福美好生活等目标提供了理论支撑和实践指引。\n\n党对人才工作的领导体现了党执政兴国的战略目标和责任担当,将人才视为国家发展的重要资源和核心力量,", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:006", + "course_id": "xi_thought_overview", + "query": "考试会怎么考人才计划的广东实践?", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c01", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "3084f5f894988a48720768d9170a917eac8f9696fad52384161dba240670b3e4", + "text_excerpt": "广东省千百十工程\n\n广东省“千百十工程”人才计划是广东省政府为了吸引和培养高层次人才而实施的一项重要举措。该计划于2009年启动,旨在引进和培养一批千人计划、百人计划和十人计划的高层次人才,以推动广东省经济社会的快速发展。2008年:千百十人才计划工程启动。广东省政府提出了引进和培养千名海外高层次人才、吸引百名国内高层次人才、支持十个团队的目标。2009年:广东省政府出台了相关政策文件,明确了千百十人才计划工程的具体内容和实施办法。政府开始组织选拔和引进高层次人才,并提供相应", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:007", + "course_id": "xi_thought_overview", + "query": "人才计划的广东实践主要讲什么?,第7条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c02", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fb9cb713093e48a905bdd44bdadde4ff0208aaf03761526ec4c433e55ba06ff9", + "text_excerpt": "综上所述,千百十人才计划工程是中国广东省政府为了吸引和培养高层次人才而实施的一项重要举措。该计划的实施与国内外背景密切相关,反映了中国政府和广东省政府在高层次人才引进和培养方面的重视和努力。\n\n二、该案例的具体内容:\n\n广东省“千百十工程”人才计划主要分为三个层次:\n\n1.首先是千人计划,该计划的引进对象是国内外知名高校、科研机构、企业等领域内有突出贡献和影响力的专家学者和技术骨干。千人计划是千百十工程中的核心项目,旨在引进世界一流的领军人才。千人计划的引进对象通常是在其所在", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:008", + "course_id": "xi_thought_overview", + "query": "我想先复习人才计划的广东实践,应该从哪里开始?,第8条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c03", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "57191b42f90a83404b938e608eb400c0e8bc972749917b46e091f090e266c347", + "text_excerpt": "理论方面1.人才理论:千百十人才计划工程体现了中国政府对人才的高度重视和管理。该计划的实施,旨在吸引国内外高层次人才,以推动中国的经济发展和科技创新。这反映了中国政府对人才的战略性思考和实践,对人才的引进、培养和使用进行了系统性的规划和管理。\n\n2.创新理论:千百十人才计划工程也体现了创新理论的重要性。高层次人才是科技创新的核心力量,他们能够带来前沿的科技知识、技术和经验,推动产业的升级和转型。千百十人才计划工程通过引进和培养高层次人才,促进了广东省的科技创新和产业发展,推动", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:009", + "course_id": "xi_thought_overview", + "query": "复习人才计划的广东实践时哪些内容最重要?,第9条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c04", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "bd83e8020cbaab93d766926b6b764d305c016a8f499251a553104cdde5ce2213", + "text_excerpt": "2. 坚持全面深化改革,促进人的全面发展。新时代要求我们不断推进全面深化改革,从制度层面落实以人民为中心的发展思想,为人民的全面发展提供制度保障。\n\n3. 加强社会建设,提高人民生活水平。保障和改善民生是中国特色社会主义的重要方面,要通过加强社会建设、推进精准扶贫、提高就业和教育水平等措施,不断提高人民群众的生活水平。\n\n4. 推进民族团结和宗教工作。中国是一个多民族、多宗教的国家,要坚持走共建共享共治的发展道路,加强民族团结和宗教工作,促进各民族、各宗教相互了解、尊重、和谐", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:010", + "course_id": "xi_thought_overview", + "query": "人才计划的广东实践里的方法或结论怎么理解?,第10条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c05", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cf17088f9a4b7dfa7587f6f6f634bb9146029b569d6c3260c3493f77dfef0e21", + "text_excerpt": "5. 建设人才强国。党提出了建设人才强国的目标,要求以创新驱动发展为核心,全面加强人才队伍建设,努力培养造就一大批具有国际竞争力的高层次、高技能人才,为实现中华民族伟大复兴提供有力人才支撑。\n\n以人民为中与创新驱动开放包容共享共赢的新时代思想,是中国特色社会主义发展的重要指引,为我们实现科技强国、经济强国、文化强国、生态文明建设、人民幸福美好生活等目标提供了理论支撑和实践指引。\n\n党对人才工作的领导体现了党执政兴国的战略目标和责任担当,将人才视为国家发展的重要资源和核心力量,", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:011", + "course_id": "xi_thought_overview", + "query": "学习人才计划的广东实践时哪些概念容易混淆?,第11条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c01", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "3084f5f894988a48720768d9170a917eac8f9696fad52384161dba240670b3e4", + "text_excerpt": "广东省千百十工程\n\n广东省“千百十工程”人才计划是广东省政府为了吸引和培养高层次人才而实施的一项重要举措。该计划于2009年启动,旨在引进和培养一批千人计划、百人计划和十人计划的高层次人才,以推动广东省经济社会的快速发展。2008年:千百十人才计划工程启动。广东省政府提出了引进和培养千名海外高层次人才、吸引百名国内高层次人才、支持十个团队的目标。2009年:广东省政府出台了相关政策文件,明确了千百十人才计划工程的具体内容和实施办法。政府开始组织选拔和引进高层次人才,并提供相应", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:012", + "course_id": "xi_thought_overview", + "query": "考试会怎么考人才计划的广东实践?,第12条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c02", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fb9cb713093e48a905bdd44bdadde4ff0208aaf03761526ec4c433e55ba06ff9", + "text_excerpt": "综上所述,千百十人才计划工程是中国广东省政府为了吸引和培养高层次人才而实施的一项重要举措。该计划的实施与国内外背景密切相关,反映了中国政府和广东省政府在高层次人才引进和培养方面的重视和努力。\n\n二、该案例的具体内容:\n\n广东省“千百十工程”人才计划主要分为三个层次:\n\n1.首先是千人计划,该计划的引进对象是国内外知名高校、科研机构、企业等领域内有突出贡献和影响力的专家学者和技术骨干。千人计划是千百十工程中的核心项目,旨在引进世界一流的领军人才。千人计划的引进对象通常是在其所在", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:013", + "course_id": "xi_thought_overview", + "query": "人才计划的广东实践主要讲什么?,第13条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c03", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "57191b42f90a83404b938e608eb400c0e8bc972749917b46e091f090e266c347", + "text_excerpt": "理论方面1.人才理论:千百十人才计划工程体现了中国政府对人才的高度重视和管理。该计划的实施,旨在吸引国内外高层次人才,以推动中国的经济发展和科技创新。这反映了中国政府对人才的战略性思考和实践,对人才的引进、培养和使用进行了系统性的规划和管理。\n\n2.创新理论:千百十人才计划工程也体现了创新理论的重要性。高层次人才是科技创新的核心力量,他们能够带来前沿的科技知识、技术和经验,推动产业的升级和转型。千百十人才计划工程通过引进和培养高层次人才,促进了广东省的科技创新和产业发展,推动", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:014", + "course_id": "xi_thought_overview", + "query": "我想先复习人才计划的广东实践,应该从哪里开始?,第14条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c04", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "bd83e8020cbaab93d766926b6b764d305c016a8f499251a553104cdde5ce2213", + "text_excerpt": "2. 坚持全面深化改革,促进人的全面发展。新时代要求我们不断推进全面深化改革,从制度层面落实以人民为中心的发展思想,为人民的全面发展提供制度保障。\n\n3. 加强社会建设,提高人民生活水平。保障和改善民生是中国特色社会主义的重要方面,要通过加强社会建设、推进精准扶贫、提高就业和教育水平等措施,不断提高人民群众的生活水平。\n\n4. 推进民族团结和宗教工作。中国是一个多民族、多宗教的国家,要坚持走共建共享共治的发展道路,加强民族团结和宗教工作,促进各民族、各宗教相互了解、尊重、和谐", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:015", + "course_id": "xi_thought_overview", + "query": "复习人才计划的广东实践时哪些内容最重要?,第15条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c05", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cf17088f9a4b7dfa7587f6f6f634bb9146029b569d6c3260c3493f77dfef0e21", + "text_excerpt": "5. 建设人才强国。党提出了建设人才强国的目标,要求以创新驱动发展为核心,全面加强人才队伍建设,努力培养造就一大批具有国际竞争力的高层次、高技能人才,为实现中华民族伟大复兴提供有力人才支撑。\n\n以人民为中与创新驱动开放包容共享共赢的新时代思想,是中国特色社会主义发展的重要指引,为我们实现科技强国、经济强国、文化强国、生态文明建设、人民幸福美好生活等目标提供了理论支撑和实践指引。\n\n党对人才工作的领导体现了党执政兴国的战略目标和责任担当,将人才视为国家发展的重要资源和核心力量,", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:016", + "course_id": "xi_thought_overview", + "query": "人才计划的广东实践里的方法或结论怎么理解?,第16条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c01", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "3084f5f894988a48720768d9170a917eac8f9696fad52384161dba240670b3e4", + "text_excerpt": "广东省千百十工程\n\n广东省“千百十工程”人才计划是广东省政府为了吸引和培养高层次人才而实施的一项重要举措。该计划于2009年启动,旨在引进和培养一批千人计划、百人计划和十人计划的高层次人才,以推动广东省经济社会的快速发展。2008年:千百十人才计划工程启动。广东省政府提出了引进和培养千名海外高层次人才、吸引百名国内高层次人才、支持十个团队的目标。2009年:广东省政府出台了相关政策文件,明确了千百十人才计划工程的具体内容和实施办法。政府开始组织选拔和引进高层次人才,并提供相应", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:017", + "course_id": "xi_thought_overview", + "query": "学习人才计划的广东实践时哪些概念容易混淆?,第17条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c02", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fb9cb713093e48a905bdd44bdadde4ff0208aaf03761526ec4c433e55ba06ff9", + "text_excerpt": "综上所述,千百十人才计划工程是中国广东省政府为了吸引和培养高层次人才而实施的一项重要举措。该计划的实施与国内外背景密切相关,反映了中国政府和广东省政府在高层次人才引进和培养方面的重视和努力。\n\n二、该案例的具体内容:\n\n广东省“千百十工程”人才计划主要分为三个层次:\n\n1.首先是千人计划,该计划的引进对象是国内外知名高校、科研机构、企业等领域内有突出贡献和影响力的专家学者和技术骨干。千人计划是千百十工程中的核心项目,旨在引进世界一流的领军人才。千人计划的引进对象通常是在其所在", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:018", + "course_id": "xi_thought_overview", + "query": "考试会怎么考人才计划的广东实践?,第18条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c03", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "57191b42f90a83404b938e608eb400c0e8bc972749917b46e091f090e266c347", + "text_excerpt": "理论方面1.人才理论:千百十人才计划工程体现了中国政府对人才的高度重视和管理。该计划的实施,旨在吸引国内外高层次人才,以推动中国的经济发展和科技创新。这反映了中国政府对人才的战略性思考和实践,对人才的引进、培养和使用进行了系统性的规划和管理。\n\n2.创新理论:千百十人才计划工程也体现了创新理论的重要性。高层次人才是科技创新的核心力量,他们能够带来前沿的科技知识、技术和经验,推动产业的升级和转型。千百十人才计划工程通过引进和培养高层次人才,促进了广东省的科技创新和产业发展,推动", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:019", + "course_id": "xi_thought_overview", + "query": "人才计划的广东实践主要讲什么?,第19条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c04", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "bd83e8020cbaab93d766926b6b764d305c016a8f499251a553104cdde5ce2213", + "text_excerpt": "2. 坚持全面深化改革,促进人的全面发展。新时代要求我们不断推进全面深化改革,从制度层面落实以人民为中心的发展思想,为人民的全面发展提供制度保障。\n\n3. 加强社会建设,提高人民生活水平。保障和改善民生是中国特色社会主义的重要方面,要通过加强社会建设、推进精准扶贫、提高就业和教育水平等措施,不断提高人民群众的生活水平。\n\n4. 推进民族团结和宗教工作。中国是一个多民族、多宗教的国家,要坚持走共建共享共治的发展道路,加强民族团结和宗教工作,促进各民族、各宗教相互了解、尊重、和谐", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:020", + "course_id": "xi_thought_overview", + "query": "我想先复习人才计划的广东实践,应该从哪里开始?,第20条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c05", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cf17088f9a4b7dfa7587f6f6f634bb9146029b569d6c3260c3493f77dfef0e21", + "text_excerpt": "5. 建设人才强国。党提出了建设人才强国的目标,要求以创新驱动发展为核心,全面加强人才队伍建设,努力培养造就一大批具有国际竞争力的高层次、高技能人才,为实现中华民族伟大复兴提供有力人才支撑。\n\n以人民为中与创新驱动开放包容共享共赢的新时代思想,是中国特色社会主义发展的重要指引,为我们实现科技强国、经济强国、文化强国、生态文明建设、人民幸福美好生活等目标提供了理论支撑和实践指引。\n\n党对人才工作的领导体现了党执政兴国的战略目标和责任担当,将人才视为国家发展的重要资源和核心力量,", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:021", + "course_id": "xi_thought_overview", + "query": "复习人才计划的广东实践时哪些内容最重要?,第21条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c01", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "3084f5f894988a48720768d9170a917eac8f9696fad52384161dba240670b3e4", + "text_excerpt": "广东省千百十工程\n\n广东省“千百十工程”人才计划是广东省政府为了吸引和培养高层次人才而实施的一项重要举措。该计划于2009年启动,旨在引进和培养一批千人计划、百人计划和十人计划的高层次人才,以推动广东省经济社会的快速发展。2008年:千百十人才计划工程启动。广东省政府提出了引进和培养千名海外高层次人才、吸引百名国内高层次人才、支持十个团队的目标。2009年:广东省政府出台了相关政策文件,明确了千百十人才计划工程的具体内容和实施办法。政府开始组织选拔和引进高层次人才,并提供相应", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:022", + "course_id": "xi_thought_overview", + "query": "人才计划的广东实践里的方法或结论怎么理解?,第22条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c02", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fb9cb713093e48a905bdd44bdadde4ff0208aaf03761526ec4c433e55ba06ff9", + "text_excerpt": "综上所述,千百十人才计划工程是中国广东省政府为了吸引和培养高层次人才而实施的一项重要举措。该计划的实施与国内外背景密切相关,反映了中国政府和广东省政府在高层次人才引进和培养方面的重视和努力。\n\n二、该案例的具体内容:\n\n广东省“千百十工程”人才计划主要分为三个层次:\n\n1.首先是千人计划,该计划的引进对象是国内外知名高校、科研机构、企业等领域内有突出贡献和影响力的专家学者和技术骨干。千人计划是千百十工程中的核心项目,旨在引进世界一流的领军人才。千人计划的引进对象通常是在其所在", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:023", + "course_id": "xi_thought_overview", + "query": "学习人才计划的广东实践时哪些概念容易混淆?,第23条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c03", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "57191b42f90a83404b938e608eb400c0e8bc972749917b46e091f090e266c347", + "text_excerpt": "理论方面1.人才理论:千百十人才计划工程体现了中国政府对人才的高度重视和管理。该计划的实施,旨在吸引国内外高层次人才,以推动中国的经济发展和科技创新。这反映了中国政府对人才的战略性思考和实践,对人才的引进、培养和使用进行了系统性的规划和管理。\n\n2.创新理论:千百十人才计划工程也体现了创新理论的重要性。高层次人才是科技创新的核心力量,他们能够带来前沿的科技知识、技术和经验,推动产业的升级和转型。千百十人才计划工程通过引进和培养高层次人才,促进了广东省的科技创新和产业发展,推动", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:024", + "course_id": "xi_thought_overview", + "query": "考试会怎么考人才计划的广东实践?,第24条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c04", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "bd83e8020cbaab93d766926b6b764d305c016a8f499251a553104cdde5ce2213", + "text_excerpt": "2. 坚持全面深化改革,促进人的全面发展。新时代要求我们不断推进全面深化改革,从制度层面落实以人民为中心的发展思想,为人民的全面发展提供制度保障。\n\n3. 加强社会建设,提高人民生活水平。保障和改善民生是中国特色社会主义的重要方面,要通过加强社会建设、推进精准扶贫、提高就业和教育水平等措施,不断提高人民群众的生活水平。\n\n4. 推进民族团结和宗教工作。中国是一个多民族、多宗教的国家,要坚持走共建共享共治的发展道路,加强民族团结和宗教工作,促进各民族、各宗教相互了解、尊重、和谐", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:025", + "course_id": "xi_thought_overview", + "query": "人才计划的广东实践主要讲什么?,第25条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c05", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cf17088f9a4b7dfa7587f6f6f634bb9146029b569d6c3260c3493f77dfef0e21", + "text_excerpt": "5. 建设人才强国。党提出了建设人才强国的目标,要求以创新驱动发展为核心,全面加强人才队伍建设,努力培养造就一大批具有国际竞争力的高层次、高技能人才,为实现中华民族伟大复兴提供有力人才支撑。\n\n以人民为中与创新驱动开放包容共享共赢的新时代思想,是中国特色社会主义发展的重要指引,为我们实现科技强国、经济强国、文化强国、生态文明建设、人民幸福美好生活等目标提供了理论支撑和实践指引。\n\n党对人才工作的领导体现了党执政兴国的战略目标和责任担当,将人才视为国家发展的重要资源和核心力量,", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:026", + "course_id": "xi_thought_overview", + "query": "我想先复习人才计划的广东实践,应该从哪里开始?,第26条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c01", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "3084f5f894988a48720768d9170a917eac8f9696fad52384161dba240670b3e4", + "text_excerpt": "广东省千百十工程\n\n广东省“千百十工程”人才计划是广东省政府为了吸引和培养高层次人才而实施的一项重要举措。该计划于2009年启动,旨在引进和培养一批千人计划、百人计划和十人计划的高层次人才,以推动广东省经济社会的快速发展。2008年:千百十人才计划工程启动。广东省政府提出了引进和培养千名海外高层次人才、吸引百名国内高层次人才、支持十个团队的目标。2009年:广东省政府出台了相关政策文件,明确了千百十人才计划工程的具体内容和实施办法。政府开始组织选拔和引进高层次人才,并提供相应", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:027", + "course_id": "xi_thought_overview", + "query": "复习人才计划的广东实践时哪些内容最重要?,第27条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c02", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "fb9cb713093e48a905bdd44bdadde4ff0208aaf03761526ec4c433e55ba06ff9", + "text_excerpt": "综上所述,千百十人才计划工程是中国广东省政府为了吸引和培养高层次人才而实施的一项重要举措。该计划的实施与国内外背景密切相关,反映了中国政府和广东省政府在高层次人才引进和培养方面的重视和努力。\n\n二、该案例的具体内容:\n\n广东省“千百十工程”人才计划主要分为三个层次:\n\n1.首先是千人计划,该计划的引进对象是国内外知名高校、科研机构、企业等领域内有突出贡献和影响力的专家学者和技术骨干。千人计划是千百十工程中的核心项目,旨在引进世界一流的领军人才。千人计划的引进对象通常是在其所在", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:028", + "course_id": "xi_thought_overview", + "query": "人才计划的广东实践里的方法或结论怎么理解?,第28条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c03", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "57191b42f90a83404b938e608eb400c0e8bc972749917b46e091f090e266c347", + "text_excerpt": "理论方面1.人才理论:千百十人才计划工程体现了中国政府对人才的高度重视和管理。该计划的实施,旨在吸引国内外高层次人才,以推动中国的经济发展和科技创新。这反映了中国政府对人才的战略性思考和实践,对人才的引进、培养和使用进行了系统性的规划和管理。\n\n2.创新理论:千百十人才计划工程也体现了创新理论的重要性。高层次人才是科技创新的核心力量,他们能够带来前沿的科技知识、技术和经验,推动产业的升级和转型。千百十人才计划工程通过引进和培养高层次人才,促进了广东省的科技创新和产业发展,推动", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:029", + "course_id": "xi_thought_overview", + "query": "学习人才计划的广东实践时哪些概念容易混淆?,第29条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c04", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "bd83e8020cbaab93d766926b6b764d305c016a8f499251a553104cdde5ce2213", + "text_excerpt": "2. 坚持全面深化改革,促进人的全面发展。新时代要求我们不断推进全面深化改革,从制度层面落实以人民为中心的发展思想,为人民的全面发展提供制度保障。\n\n3. 加强社会建设,提高人民生活水平。保障和改善民生是中国特色社会主义的重要方面,要通过加强社会建设、推进精准扶贫、提高就业和教育水平等措施,不断提高人民群众的生活水平。\n\n4. 推进民族团结和宗教工作。中国是一个多民族、多宗教的国家,要坚持走共建共享共治的发展道路,加强民族团结和宗教工作,促进各民族、各宗教相互了解、尊重、和谐", + "flags": [] + } + ] + }, + { + "legacy_id": "xi_thought_overview:030", + "course_id": "xi_thought_overview", + "query": "考试会怎么考人才计划的广东实践?,第30条", + "original_note": "学生复习提问 -> 真实课程 chunk", + "corpus_version_matches": true, + "disposition": "historical_only_not_certified", + "reasons": [ + "no_per_query_answer_or_relevance_rationale", + "broad_or_template_query_with_specific_chunk_target" + ], + "evidence": [ + { + "chunk_id": "xi-thought-overview-001:h-主题七-人才计划的广东实践:c05", + "exists": true, + "source_id": "xi-thought-overview-001", + "source_title": "主题七:人才计划的广东实践", + "locator_type": "heading", + "locator_start": null, + "text_sha256": "cf17088f9a4b7dfa7587f6f6f634bb9146029b569d6c3260c3493f77dfef0e21", + "text_excerpt": "5. 建设人才强国。党提出了建设人才强国的目标,要求以创新驱动发展为核心,全面加强人才队伍建设,努力培养造就一大批具有国际竞争力的高层次、高技能人才,为实现中华民族伟大复兴提供有力人才支撑。\n\n以人民为中与创新驱动开放包容共享共赢的新时代思想,是中国特色社会主义发展的重要指引,为我们实现科技强国、经济强国、文化强国、生态文明建设、人民幸福美好生活等目标提供了理论支撑和实践指引。\n\n党对人才工作的领导体现了党执政兴国的战略目标和责任担当,将人才视为国家发展的重要资源和核心力量,", + "flags": [] + } + ] + } + ] +} diff --git a/apps/scut-senior/resources/evaluation/reviewed-v2/legacy-scenarios-audit.json b/apps/scut-senior/resources/evaluation/reviewed-v2/legacy-scenarios-audit.json new file mode 100644 index 00000000..581b4d08 --- /dev/null +++ b/apps/scut-senior/resources/evaluation/reviewed-v2/legacy-scenarios-audit.json @@ -0,0 +1,1009 @@ +{ + "reviewer": "Codex", + "review_date": "2026-09-12", + "summary": { + "real_cases": 12, + "sweep_cases": 20 + }, + "entries": [ + { + "file": "scut-real-corpus-cases.json", + "case_id": "course-knowledge-001R", + "disposition": "replace", + "reason": "整卷覆盖任务没有逐知识点预期;单个page引用不能证明整卷概括完整,2019卷部分公式文本损坏。", + "original_case": { + "case_id": "course-knowledge-001R", + "category": "course_knowledge", + "course_id": "linear_algebra", + "workflow_type": "knowledge_qa", + "knowledge_scope": "course_only", + "course_scope": "single", + "allowed_course_ids": [], + "turns": [ + { + "role": "user", + "content": "请根据仓库里的线性代数资料,介绍 2019-2020年度线性代数期末卷A 这份试卷整体考查了哪些内容。" + } + ], + "expected": { + "answer_status": "answered", + "evidence_status": "sufficient", + "required_answer_block_types": [ + "repository" + ], + "requires_citation": true, + "allows_general": false, + "required_locator_types": [ + "page" + ] + } + } + }, + { + "file": "scut-real-corpus-cases.json", + "case_id": "past-paper-question-001R", + "disposition": "replace", + "reason": "第1题矩阵在当前文本中失去二维结构,未提供可复核的题干与答案;不能预设sufficient。", + "original_case": { + "case_id": "past-paper-question-001R", + "category": "past_paper_question", + "course_id": "linear_algebra", + "workflow_type": "problem_tutor", + "knowledge_scope": "course_only", + "course_scope": "single", + "allowed_course_ids": [], + "turns": [ + { + "role": "user", + "content": "讲解 2019-2020年度线性代数期末卷A 的第 1 题。" + } + ], + "expected": { + "answer_status": "answered", + "evidence_status": "sufficient", + "required_answer_block_types": [ + "repository" + ], + "requires_citation": true, + "allows_general": false, + "required_locator_types": [ + "page" + ] + } + } + }, + { + "file": "scut-real-corpus-cases.json", + "case_id": "sparse-general-supplement-001R", + "disposition": "rewrite", + "reason": "对角化是合理场景,但缺具体可核对结论;历史注释根据某模型输出改answered,不能据此确认标签。", + "original_case": { + "case_id": "sparse-general-supplement-001R", + "category": "sparse_general_supplement", + "course_id": "linear_algebra", + "workflow_type": "knowledge_qa", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "turns": [ + { + "role": "user", + "content": "结合仓库的历年卷资料谈谈矩阵对角化在考试中的应用;资料没有覆盖到的部分,请明确标记为通用补充。" + } + ], + "expected": { + "answer_status": "answered", + "evidence_status": "sufficient", + "required_answer_block_types": [ + "repository" + ], + "requires_citation": true, + "allows_general": true + } + } + }, + { + "file": "scut-real-corpus-cases.json", + "case_id": "multi-turn-followup-001R", + "disposition": "replace", + "reason": "沿用未核验的第1题且无答案标准。runner实际只执行user轮,JSON中的assistant占位不是经过确认的历史答案。", + "original_case": { + "case_id": "multi-turn-followup-001R", + "category": "multi_turn_followup", + "course_id": "linear_algebra", + "workflow_type": "knowledge_qa", + "knowledge_scope": "course_only", + "course_scope": "single", + "allowed_course_ids": [], + "turns": [ + { + "role": "user", + "content": "解释 2019-2020年度线性代数期末卷A 的第 1 题。" + }, + { + "role": "assistant", + "content": "已根据仓库资料引用该卷第 1 题作答。" + }, + { + "role": "user", + "content": "再用分步骤的方式把这道题重新讲一遍。" + } + ], + "expected": { + "answer_status": "answered", + "evidence_status": "sufficient", + "required_answer_block_types": [ + "repository" + ], + "requires_citation": true, + "allows_general": false, + "required_locator_types": [ + "page" + ] + } + } + }, + { + "file": "scut-real-corpus-cases.json", + "case_id": "source-marking-001R", + "disposition": "replace", + "reason": "要求比较两道题却仅检查是否有page引用;未断言两个证据都命中,也没有题意及比较结论。", + "original_case": { + "case_id": "source-marking-001R", + "category": "source_marking", + "course_id": "linear_algebra", + "workflow_type": "knowledge_qa", + "knowledge_scope": "course_only", + "course_scope": "single", + "allowed_course_ids": [], + "turns": [ + { + "role": "user", + "content": "讲解 2018-2019年度线性代数期末卷B 的第 1 题。" + }, + { + "role": "assistant", + "content": "已根据仓库资料引用该卷第 1 题作答。" + }, + { + "role": "user", + "content": "再对比 2019-2020年度线性代数期末卷A 第 1 题和它有什么不同。" + } + ], + "expected": { + "answer_status": "answered", + "evidence_status": "sufficient", + "required_answer_block_types": [ + "repository" + ], + "requires_citation": true, + "allows_general": false, + "required_locator_types": [ + "page" + ], + "notes": "source_title 必须来自 manifest.title" + } + } + }, + { + "file": "scut-real-corpus-cases.json", + "case_id": "cross-course-scope-001", + "disposition": "replace", + "reason": "合成对比没有学习问题或比较对象;旧runner无条件跳过所有cross场景,不能据此测跨课程质量。", + "original_case": { + "case_id": "cross-course-scope-001", + "category": "cross_course_scope", + "course_id": null, + "workflow_type": "knowledge_qa", + "knowledge_scope": "course_first", + "course_scope": "cross", + "allowed_course_ids": [ + "linear_algebra", + "probability_theory" + ], + "turns": [ + { + "role": "user", + "content": "只在显式选择的两个课程范围内做合成对比。" + } + ], + "expected": { + "answer_status": "partial", + "evidence_status": "partial", + "required_answer_block_types": [ + "repository" + ], + "requires_citation": true, + "allows_general": true, + "required_locator_types": [ + "page" + ] + } + } + }, + { + "file": "scut-real-corpus-cases.json", + "case_id": "exam-review-fixture-001", + "disposition": "rewrite", + "reason": "合理备考意图,但没有时间、目标和主题覆盖准则;单个引用不能证明复习重点正确。", + "original_case": { + "case_id": "exam-review-fixture-001", + "category": "course_knowledge", + "course_id": "linear_algebra", + "workflow_type": "exam_review", + "knowledge_scope": "course_only", + "course_scope": "single", + "allowed_course_ids": [], + "turns": [ + { + "role": "user", + "content": "请根据仓库资料,按 2019-2020年度线性代数期末卷A 整理考前复习重点。" + } + ], + "expected": { + "answer_status": "answered", + "evidence_status": "sufficient", + "required_answer_block_types": [ + "repository" + ], + "requires_citation": true, + "allows_general": false, + "required_locator_types": [ + "page" + ] + } + } + }, + { + "file": "scut-real-corpus-cases.json", + "case_id": "mistake-review-fixture-001", + "disposition": "replace", + "reason": "未给矩阵与原答案;旧runner注入“用例未提供原答案”仍要求充分作答,没有可判断的具体错因。", + "original_case": { + "case_id": "mistake-review-fixture-001", + "category": "course_knowledge", + "course_id": "linear_algebra", + "workflow_type": "mistake_review", + "knowledge_scope": "course_only", + "course_scope": "single", + "allowed_course_ids": [], + "turns": [ + { + "role": "user", + "content": "复盘我在求秩时的错误答案。" + } + ], + "expected": { + "answer_status": "answered", + "evidence_status": "sufficient", + "required_answer_block_types": [ + "repository" + ], + "requires_citation": true, + "allows_general": false, + "required_locator_types": [ + "page" + ] + } + } + }, + { + "file": "scut-real-corpus-cases.json", + "case_id": "temporary-material-fixture-001", + "disposition": "replace", + "reason": "秩应为最大线性无关行数;原材料“线性无关行的数量”不够精确,并错误地要求外部page引用来证明理解用户文本。", + "original_case": { + "case_id": "temporary-material-fixture-001", + "category": "course_knowledge", + "course_id": "linear_algebra", + "workflow_type": "temporary_material_reading", + "knowledge_scope": "course_only", + "course_scope": "single", + "allowed_course_ids": [], + "turns": [ + { + "role": "user", + "content": "精读这段临时材料:# 秩\n矩阵的秩是线性无关行的数量。" + } + ], + "expected": { + "answer_status": "answered", + "evidence_status": "sufficient", + "required_answer_block_types": [ + "repository" + ], + "requires_citation": true, + "allows_general": false, + "required_locator_types": [ + "page" + ] + } + } + }, + { + "file": "scut-real-corpus-cases.json", + "case_id": "exam-review-with-syllabus-001", + "disposition": "rewrite", + "reason": "矩阵秩、酉空间与单份试卷之间没有逐项支持记录,强设sufficient不能度量大纲覆盖;增加卷名是检索优化,不能替代标注核验。", + "original_case": { + "case_id": "exam-review-with-syllabus-001", + "category": "exam_review_with_syllabus", + "course_id": "linear_algebra", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": "矩阵的秩、酉空间", + "weak_topics": [ + "矩阵的秩" + ], + "turns": [ + { + "role": "user", + "content": "请结合 2019-2020年度线性代数期末卷A 的真题,按我的大纲(矩阵的秩、酉空间)整理考前复习重点。" + } + ], + "expected": { + "answer_status": "answered", + "evidence_status": "sufficient", + "required_answer_block_types": [ + "repository" + ], + "requires_citation": true, + "allows_general": true, + "required_locator_types": [ + "page" + ], + "requires_exam_review_plan": true, + "review_path": "with_syllabus" + } + } + }, + { + "file": "scut-real-corpus-cases.json", + "case_id": "exam-review-past-exam-first-001", + "disposition": "rewrite", + "reason": "无大纲复习合理,但没有代表题、主题覆盖、时间分配的质量准则,只检查计划路径与引用。", + "original_case": { + "case_id": "exam-review-past-exam-first-001", + "category": "exam_review_without_syllabus", + "course_id": "linear_algebra", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": null, + "weak_topics": [ + "初等行变换" + ], + "turns": [ + { + "role": "user", + "content": "没有大纲,按历年题带我复习。" + } + ], + "expected": { + "answer_status": "answered", + "evidence_status": "sufficient", + "required_answer_block_types": [ + "repository" + ], + "requires_citation": true, + "allows_general": true, + "required_locator_types": [ + "page" + ], + "requires_exam_review_plan": true, + "review_path": "without_syllabus" + } + } + }, + { + "file": "scut-real-corpus-cases.json", + "case_id": "insufficient-evidence-001", + "disposition": "replace", + "reason": "合成泛函分析第25题不是自然场景;零词面重叠或候选为空不能证明语义无证据,改成已核查未收录的指定试卷。", + "original_case": { + "case_id": "insufficient-evidence-001", + "workflow_type": "knowledge_qa", + "course_scope": "single", + "course_id": "linear_algebra", + "allowed_course_ids": [], + "turns": [ + { + "role": "user", + "content": "讲解合成语料中'泛函分析'章节的第 25 题。" + } + ], + "expected": { + "answer_status": "insufficient_evidence", + "evidence_status": "insufficient", + "requires_citation": false, + "allows_general": false + }, + "category": "insufficient_evidence", + "knowledge_scope": "course_only" + } + }, + { + "file": "exam-review-sweep.cases.json", + "case_id": "exam-review-sweep-digital_system_creative_design-with_syllabus", + "disposition": "smoke_only", + "reason": "可保留为有/无大纲的流程冒烟;提问/大纲为通用模板,没有课程具体知识目标、参考答案或支持证据,不能认定教学内容正确。", + "original_case": { + "case_id": "exam-review-sweep-digital_system_creative_design-with_syllabus", + "category": "exam_review_with_syllabus", + "course_id": "digital_system_creative_design", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": "本科期末复习大纲(用户自拟):核心概念梳理、重点章节回顾、典型题型练习。", + "weak_topics": [ + "核心概念" + ], + "turns": [ + { + "role": "user", + "content": "请帮我备考这门课的期末考试。" + } + ], + "expected": { + "requires_exam_review_plan": true, + "review_path": "with_syllabus", + "requires_citation": true + } + } + }, + { + "file": "exam-review-sweep.cases.json", + "case_id": "exam-review-sweep-digital_system_creative_design-without_syllabus", + "disposition": "smoke_only", + "reason": "可保留为有/无大纲的流程冒烟;提问/大纲为通用模板,没有课程具体知识目标、参考答案或支持证据,不能认定教学内容正确。", + "original_case": { + "case_id": "exam-review-sweep-digital_system_creative_design-without_syllabus", + "category": "exam_review_without_syllabus", + "course_id": "digital_system_creative_design", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": null, + "weak_topics": [], + "turns": [ + { + "role": "user", + "content": "请帮我备考这门课的期末考试。" + } + ], + "expected": { + "requires_exam_review_plan": true, + "review_path": "without_syllabus", + "requires_citation": true + } + } + }, + { + "file": "exam-review-sweep.cases.json", + "case_id": "exam-review-sweep-computer_networks-with_syllabus", + "disposition": "smoke_only", + "reason": "可保留为有/无大纲的流程冒烟;提问/大纲为通用模板,没有课程具体知识目标、参考答案或支持证据,不能认定教学内容正确。", + "original_case": { + "case_id": "exam-review-sweep-computer_networks-with_syllabus", + "category": "exam_review_with_syllabus", + "course_id": "computer_networks", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": "本科期末复习大纲(用户自拟):核心概念梳理、重点章节回顾、典型题型练习。", + "weak_topics": [ + "核心概念" + ], + "turns": [ + { + "role": "user", + "content": "请帮我备考这门课的期末考试。" + } + ], + "expected": { + "requires_exam_review_plan": true, + "review_path": "with_syllabus", + "requires_citation": true + } + } + }, + { + "file": "exam-review-sweep.cases.json", + "case_id": "exam-review-sweep-computer_networks-without_syllabus", + "disposition": "smoke_only", + "reason": "可保留为有/无大纲的流程冒烟;提问/大纲为通用模板,没有课程具体知识目标、参考答案或支持证据,不能认定教学内容正确。", + "original_case": { + "case_id": "exam-review-sweep-computer_networks-without_syllabus", + "category": "exam_review_without_syllabus", + "course_id": "computer_networks", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": null, + "weak_topics": [], + "turns": [ + { + "role": "user", + "content": "请帮我备考这门课的期末考试。" + } + ], + "expected": { + "requires_exam_review_plan": true, + "review_path": "without_syllabus", + "requires_citation": true + } + } + }, + { + "file": "exam-review-sweep.cases.json", + "case_id": "exam-review-sweep-computer_organization-with_syllabus", + "disposition": "smoke_only", + "reason": "可保留为有/无大纲的流程冒烟;提问/大纲为通用模板,没有课程具体知识目标、参考答案或支持证据,不能认定教学内容正确。", + "original_case": { + "case_id": "exam-review-sweep-computer_organization-with_syllabus", + "category": "exam_review_with_syllabus", + "course_id": "computer_organization", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": "本科期末复习大纲(用户自拟):核心概念梳理、重点章节回顾、典型题型练习。", + "weak_topics": [ + "核心概念" + ], + "turns": [ + { + "role": "user", + "content": "请帮我备考这门课的期末考试。" + } + ], + "expected": { + "requires_exam_review_plan": true, + "review_path": "with_syllabus", + "requires_citation": true + } + } + }, + { + "file": "exam-review-sweep.cases.json", + "case_id": "exam-review-sweep-computer_organization-without_syllabus", + "disposition": "smoke_only", + "reason": "可保留为有/无大纲的流程冒烟;提问/大纲为通用模板,没有课程具体知识目标、参考答案或支持证据,不能认定教学内容正确。", + "original_case": { + "case_id": "exam-review-sweep-computer_organization-without_syllabus", + "category": "exam_review_without_syllabus", + "course_id": "computer_organization", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": null, + "weak_topics": [], + "turns": [ + { + "role": "user", + "content": "请帮我备考这门课的期末考试。" + } + ], + "expected": { + "requires_exam_review_plan": true, + "review_path": "without_syllabus", + "requires_citation": true + } + } + }, + { + "file": "exam-review-sweep.cases.json", + "case_id": "exam-review-sweep-software_testing-with_syllabus", + "disposition": "smoke_only", + "reason": "可保留为有/无大纲的流程冒烟;提问/大纲为通用模板,没有课程具体知识目标、参考答案或支持证据,不能认定教学内容正确。", + "original_case": { + "case_id": "exam-review-sweep-software_testing-with_syllabus", + "category": "exam_review_with_syllabus", + "course_id": "software_testing", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": "本科期末复习大纲(用户自拟):核心概念梳理、重点章节回顾、典型题型练习。", + "weak_topics": [ + "核心概念" + ], + "turns": [ + { + "role": "user", + "content": "请帮我备考这门课的期末考试。" + } + ], + "expected": { + "requires_exam_review_plan": true, + "review_path": "with_syllabus", + "requires_citation": true + } + } + }, + { + "file": "exam-review-sweep.cases.json", + "case_id": "exam-review-sweep-software_testing-without_syllabus", + "disposition": "smoke_only", + "reason": "可保留为有/无大纲的流程冒烟;提问/大纲为通用模板,没有课程具体知识目标、参考答案或支持证据,不能认定教学内容正确。", + "original_case": { + "case_id": "exam-review-sweep-software_testing-without_syllabus", + "category": "exam_review_without_syllabus", + "course_id": "software_testing", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": null, + "weak_topics": [], + "turns": [ + { + "role": "user", + "content": "请帮我备考这门课的期末考试。" + } + ], + "expected": { + "requires_exam_review_plan": true, + "review_path": "without_syllabus", + "requires_citation": true + } + } + }, + { + "file": "exam-review-sweep.cases.json", + "case_id": "exam-review-sweep-artificial_intelligence_intro-with_syllabus", + "disposition": "smoke_only", + "reason": "可保留为有/无大纲的流程冒烟;提问/大纲为通用模板,没有课程具体知识目标、参考答案或支持证据,不能认定教学内容正确。", + "original_case": { + "case_id": "exam-review-sweep-artificial_intelligence_intro-with_syllabus", + "category": "exam_review_with_syllabus", + "course_id": "artificial_intelligence_intro", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": "本科期末复习大纲(用户自拟):核心概念梳理、重点章节回顾、典型题型练习。", + "weak_topics": [ + "核心概念" + ], + "turns": [ + { + "role": "user", + "content": "请帮我备考这门课的期末考试。" + } + ], + "expected": { + "requires_exam_review_plan": true, + "review_path": "with_syllabus", + "requires_citation": true + } + } + }, + { + "file": "exam-review-sweep.cases.json", + "case_id": "exam-review-sweep-artificial_intelligence_intro-without_syllabus", + "disposition": "smoke_only", + "reason": "可保留为有/无大纲的流程冒烟;提问/大纲为通用模板,没有课程具体知识目标、参考答案或支持证据,不能认定教学内容正确。", + "original_case": { + "case_id": "exam-review-sweep-artificial_intelligence_intro-without_syllabus", + "category": "exam_review_without_syllabus", + "course_id": "artificial_intelligence_intro", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": null, + "weak_topics": [], + "turns": [ + { + "role": "user", + "content": "请帮我备考这门课的期末考试。" + } + ], + "expected": { + "requires_exam_review_plan": true, + "review_path": "without_syllabus", + "requires_citation": true + } + } + }, + { + "file": "exam-review-sweep.cases.json", + "case_id": "exam-review-sweep-compiler_principles-with_syllabus", + "disposition": "smoke_only", + "reason": "可保留为有/无大纲的流程冒烟;提问/大纲为通用模板,没有课程具体知识目标、参考答案或支持证据,不能认定教学内容正确。", + "original_case": { + "case_id": "exam-review-sweep-compiler_principles-with_syllabus", + "category": "exam_review_with_syllabus", + "course_id": "compiler_principles", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": "本科期末复习大纲(用户自拟):核心概念梳理、重点章节回顾、典型题型练习。", + "weak_topics": [ + "核心概念" + ], + "turns": [ + { + "role": "user", + "content": "请帮我备考这门课的期末考试。" + } + ], + "expected": { + "requires_exam_review_plan": true, + "review_path": "with_syllabus", + "requires_citation": true + } + } + }, + { + "file": "exam-review-sweep.cases.json", + "case_id": "exam-review-sweep-compiler_principles-without_syllabus", + "disposition": "smoke_only", + "reason": "可保留为有/无大纲的流程冒烟;提问/大纲为通用模板,没有课程具体知识目标、参考答案或支持证据,不能认定教学内容正确。", + "original_case": { + "case_id": "exam-review-sweep-compiler_principles-without_syllabus", + "category": "exam_review_without_syllabus", + "course_id": "compiler_principles", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": null, + "weak_topics": [], + "turns": [ + { + "role": "user", + "content": "请帮我备考这门课的期末考试。" + } + ], + "expected": { + "requires_exam_review_plan": true, + "review_path": "without_syllabus", + "requires_citation": true + } + } + }, + { + "file": "exam-review-sweep.cases.json", + "case_id": "exam-review-sweep-computing_methods-with_syllabus", + "disposition": "smoke_only", + "reason": "可保留为有/无大纲的流程冒烟;提问/大纲为通用模板,没有课程具体知识目标、参考答案或支持证据,不能认定教学内容正确。", + "original_case": { + "case_id": "exam-review-sweep-computing_methods-with_syllabus", + "category": "exam_review_with_syllabus", + "course_id": "computing_methods", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": "本科期末复习大纲(用户自拟):核心概念梳理、重点章节回顾、典型题型练习。", + "weak_topics": [ + "核心概念" + ], + "turns": [ + { + "role": "user", + "content": "请帮我备考这门课的期末考试。" + } + ], + "expected": { + "requires_exam_review_plan": true, + "review_path": "with_syllabus", + "requires_citation": true + } + } + }, + { + "file": "exam-review-sweep.cases.json", + "case_id": "exam-review-sweep-computing_methods-without_syllabus", + "disposition": "smoke_only", + "reason": "可保留为有/无大纲的流程冒烟;提问/大纲为通用模板,没有课程具体知识目标、参考答案或支持证据,不能认定教学内容正确。", + "original_case": { + "case_id": "exam-review-sweep-computing_methods-without_syllabus", + "category": "exam_review_without_syllabus", + "course_id": "computing_methods", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": null, + "weak_topics": [], + "turns": [ + { + "role": "user", + "content": "请帮我备考这门课的期末考试。" + } + ], + "expected": { + "requires_exam_review_plan": true, + "review_path": "without_syllabus", + "requires_citation": true + } + } + }, + { + "file": "exam-review-sweep.cases.json", + "case_id": "exam-review-sweep-mathematical_modeling-with_syllabus", + "disposition": "smoke_only", + "reason": "可保留为有/无大纲的流程冒烟;提问/大纲为通用模板,没有课程具体知识目标、参考答案或支持证据,不能认定教学内容正确。", + "original_case": { + "case_id": "exam-review-sweep-mathematical_modeling-with_syllabus", + "category": "exam_review_with_syllabus", + "course_id": "mathematical_modeling", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": "本科期末复习大纲(用户自拟):核心概念梳理、重点章节回顾、典型题型练习。", + "weak_topics": [ + "核心概念" + ], + "turns": [ + { + "role": "user", + "content": "请帮我备考这门课的期末考试。" + } + ], + "expected": { + "requires_exam_review_plan": true, + "review_path": "with_syllabus", + "requires_citation": true + } + } + }, + { + "file": "exam-review-sweep.cases.json", + "case_id": "exam-review-sweep-mathematical_modeling-without_syllabus", + "disposition": "smoke_only", + "reason": "可保留为有/无大纲的流程冒烟;提问/大纲为通用模板,没有课程具体知识目标、参考答案或支持证据,不能认定教学内容正确。", + "original_case": { + "case_id": "exam-review-sweep-mathematical_modeling-without_syllabus", + "category": "exam_review_without_syllabus", + "course_id": "mathematical_modeling", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": null, + "weak_topics": [], + "turns": [ + { + "role": "user", + "content": "请帮我备考这门课的期末考试。" + } + ], + "expected": { + "requires_exam_review_plan": true, + "review_path": "without_syllabus", + "requires_citation": true + } + } + }, + { + "file": "exam-review-sweep.cases.json", + "case_id": "exam-review-sweep-operating_systems-with_syllabus", + "disposition": "smoke_only", + "reason": "可保留为有/无大纲的流程冒烟;提问/大纲为通用模板,没有课程具体知识目标、参考答案或支持证据,不能认定教学内容正确。", + "original_case": { + "case_id": "exam-review-sweep-operating_systems-with_syllabus", + "category": "exam_review_with_syllabus", + "course_id": "operating_systems", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": "本科期末复习大纲(用户自拟):核心概念梳理、重点章节回顾、典型题型练习。", + "weak_topics": [ + "核心概念" + ], + "turns": [ + { + "role": "user", + "content": "请帮我备考这门课的期末考试。" + } + ], + "expected": { + "requires_exam_review_plan": true, + "review_path": "with_syllabus", + "requires_citation": true + } + } + }, + { + "file": "exam-review-sweep.cases.json", + "case_id": "exam-review-sweep-operating_systems-without_syllabus", + "disposition": "smoke_only", + "reason": "可保留为有/无大纲的流程冒烟;提问/大纲为通用模板,没有课程具体知识目标、参考答案或支持证据,不能认定教学内容正确。", + "original_case": { + "case_id": "exam-review-sweep-operating_systems-without_syllabus", + "category": "exam_review_without_syllabus", + "course_id": "operating_systems", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": null, + "weak_topics": [], + "turns": [ + { + "role": "user", + "content": "请帮我备考这门课的期末考试。" + } + ], + "expected": { + "requires_exam_review_plan": true, + "review_path": "without_syllabus", + "requires_citation": true + } + } + }, + { + "file": "exam-review-sweep.cases.json", + "case_id": "exam-review-sweep-engineering_math_analysis_2-with_syllabus", + "disposition": "smoke_only", + "reason": "可保留为有/无大纲的流程冒烟;提问/大纲为通用模板,没有课程具体知识目标、参考答案或支持证据,不能认定教学内容正确。", + "original_case": { + "case_id": "exam-review-sweep-engineering_math_analysis_2-with_syllabus", + "category": "exam_review_with_syllabus", + "course_id": "engineering_math_analysis_2", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": "本科期末复习大纲(用户自拟):核心概念梳理、重点章节回顾、典型题型练习。", + "weak_topics": [ + "核心概念" + ], + "turns": [ + { + "role": "user", + "content": "请帮我备考这门课的期末考试。" + } + ], + "expected": { + "requires_exam_review_plan": true, + "review_path": "with_syllabus", + "requires_citation": true + } + } + }, + { + "file": "exam-review-sweep.cases.json", + "case_id": "exam-review-sweep-engineering_math_analysis_2-without_syllabus", + "disposition": "smoke_only", + "reason": "可保留为有/无大纲的流程冒烟;提问/大纲为通用模板,没有课程具体知识目标、参考答案或支持证据,不能认定教学内容正确。", + "original_case": { + "case_id": "exam-review-sweep-engineering_math_analysis_2-without_syllabus", + "category": "exam_review_without_syllabus", + "course_id": "engineering_math_analysis_2", + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "course_scope": "single", + "allowed_course_ids": [], + "syllabus": null, + "weak_topics": [], + "turns": [ + { + "role": "user", + "content": "请帮我备考这门课的期末考试。" + } + ], + "expected": { + "requires_exam_review_plan": true, + "review_path": "without_syllabus", + "requires_citation": true + } + } + } + ] +} diff --git a/apps/scut-senior/resources/evaluation/reviewed-v2/retrieval.json b/apps/scut-senior/resources/evaluation/reviewed-v2/retrieval.json new file mode 100644 index 00000000..59d9259c --- /dev/null +++ b/apps/scut-senior/resources/evaluation/reviewed-v2/retrieval.json @@ -0,0 +1,1747 @@ +{ + "schema_version": "reviewed-retrieval-v2", + "corpus_version": "corpus-c1513a68ccd7-b0_2_0-m1200-wworkflow-contract-v1-ooutline-none-v1-ebge-small-zh-v1.5", + "provenance": { + "reviewer": "Codex", + "review_date": "2026-09-12", + "review_method": "Read the identified active-corpus passages, restrict claims to legible content, independently reason through answers; explicit source-error cases use external primary references. These are authored scenarios, not collected student logs or independently double-reviewed labels." + }, + "annotation_scope": "Positive evidence groups are non-exhaustive. Missing labels are unjudged, not irrelevant. Validation is source-disjoint within this suite, not an independent blind test.", + "evidence": { + "linear-algebra-012:p2:q-linear-algebra-012-q10:c01": { + "course_id": "linear_algebra", + "source_id": "linear-algebra-012", + "source_title": "2019-2020年度线性代数期末卷A", + "locator_type": "page", + "locator_start": 2, + "locator_end": 2, + "question_id": "linear-algebra-012-Q10", + "heading_path": [ + "2019-2020年度线性代数期末卷A" + ], + "text": "4. n\nA\n阶矩阵\n\n与对角矩阵相似的充分必要条件是\n\n( )\n\nA. A是对称矩阵\nB. A 有n 个线性无关的特征向量\n\nC. A 有n 个互不相等的特征值 D. A 有n 个互不相等的特征向量\n\n1\n2\n1\n2\n ,\n :\n ,\ns\nt\n\n\n\n\n\n\n\n\n\n\n向量组:\n ,\n ,\n 可由向量组\n ,\n ,\n 线性表示。", + "knowledge_path": "knowledge/linear_algebra/linear-algebra-012.md", + "text_sha256": "220ff4468d67d52ce3039755ebb6c0909644d87bfdad2213251621ba1460f05e", + "knowledge_sha256": "969e32e55369d7dfedea4f4c16370bb8c9f1d326e8a7b67c2d1361eda918eec5" + }, + "probability-theory-010:q-probability-theory-010-q1:c01": { + "course_id": "probability_theory", + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": "probability-theory-010-Q1", + "heading_path": [ + "2020—2021学年第二学期《概率论与数理统计》A卷答案" + ], + "text": "1. B\n\n2. 设*T*服从自由度为*n*的*t*分布,若$P\\{T>\\lambda\\}=\\alpha$,则$P\\{T<-\\lambda\\}=$( ).\n\n(A) $alpha$ (B)$\\frac{\\alpha}{3}$ (C) $\\frac{\\alpha}{2}$ (D) $\\frac{\\alpha}{4}$", + "knowledge_path": "knowledge/probability/probability-theory-010.md", + "text_sha256": "93b6fd41cedb296a7f568ba7c46f278b07ff5914867e9950f52117c03c20b49f", + "knowledge_sha256": "6a92793ba00d6735e0e35c3c0d332db5cf283c735cb66f4058de2496b9605f79" + }, + "probability-theory-010:q-probability-theory-010-q3:c01": { + "course_id": "probability_theory", + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": "probability-theory-010-Q3", + "heading_path": [ + "2020—2021学年第二学期《概率论与数理统计》A卷答案" + ], + "text": "3. 从总体中抽取简单随机样本$X_1,X_2,...,X_n$,易证估计量\n\n$$\n\\mu_1=\\frac{1}{2}X_1+\\frac{1}{3}X_2+\\frac{1}{6}X_3,\\quad\\mu_2=\\frac{1}{2}X_1+\\frac{1}{4}X_2+\\frac{1}{4}X_3\n$$\n\n$$\n\\mu_3=\\frac{1}{3}X_1+\\frac{1}{3}X_2+\\frac{1}{3}X_3,\\quad\\mu_4=\\frac{1}{5}X_1+\\frac{2}{5}X_2+\\frac{2}{5}X_3\n$$\n\n均是总体均值$mu$的无偏估计量,则其中最有效的估计量是( ).\n\n(A)$mu_3$ (B) $mu_1$ (C)$mu_2$ (D)$mu_4$\n\n3. A 有$D_{\\mu_3}\nusing namespace std;\nstruct TreeNode//建立一棵树\n {\n int value;\n TreeNode* left;\n TreeNode* right;\n \n TreeNode(int val) : value(val), left(nullptr), right(nullptr) {}\n};\n\nvoid inOrderRecursive(TreeNode* node)//遍历 {\n if (node != nullptr) {\n inOrderRecursive(node->left);\n cout << node->value << \" \";\n inOrderRecursive(node->right);\n }\n}\n非递归方法:(学习一下)我们可以采用建立一个栈\n#include \n\nvoid inOrderIterative(TreeNode* root) //栈的二叉树中序遍历\n{\n stack s;\n TreeNode* current = root;\n\n while (!s.empty() || current != nullptr) {\n while (current != nullptr) {\n s.push(current);\n current = current->left;\n }\n \n current = s.top();\n s.pop();\n cout << current->value << \" \";\n current = current->right;\n }\n}\n\n我打算用数组建立一个平衡二叉树\n\nTreeNode* insertLevelOrder(int arr[], TreeNode* root, int i, int n) {\n if (i < n) {\n TreeNode* temp = new TreeNode(arr[i]);\n root = temp;\n\n root->left = insertLevelOrder(arr, root->left, 2 * i + 1, n);\n root->right = insertLevelOrder(arr, root->right, 2 * i + 2, n);\n }\n return root;\n}\n时间复杂度测量:(这里是一点不会,用GPT直接帮我全写了)\nWe'll use the chrono library to measure execution time.\ncpp\n#include \n\nint main() {\n int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; // Example dataset\n int n = sizeof(arr) / sizeof(arr[0]);\n TreeNode* root = insertLevelOrder(arr, nullptr, 0, n);\n\n // Measure recursive in-order traversal time\n auto start = chrono::high_resolution_clock::now();\n cout << \"Recursive In-Order Traversal: \";\n inOrderRecursive(root);\n auto end = chrono::high_resolution_clock::now();\n cout << \"\\nTime taken (Recursive): \" \n << chrono::duration_cast(end - start).count() << \" microseconds\\n\";\n\n // Measure non-recursive in-order traversal time\n start = chrono::high_resolution_clock::now();\n cout << \"Non-Recursive In-Order Traversal: \";\n inOrderIterative(root);\n end = chrono::high_resolution_clock::now();\n cout << \"\\nTime taken (Non-Recursive): \" \n << chrono::duration_cast(end - start).count() << \" microseconds\\n\";\n\n return 0;\n}\n\n综合起来整体代码如下:\n#include \n#include \n#include \n\nusing namespace std;\n\nstruct TreeNode {\n int value;\n TreeNode* left;\n TreeNode* right;\n \n TreeNode(int val) : value(val), left(nullptr), right(nullptr) {}\n};\n\nvoid inOrderRecursive(TreeNode* node) {\n if (node != nullptr) {\n inOrderRecursive(node->left);\n cout << node->value << \" \";\n inOrderRecursive(node->right);\n }\n}\n\nvoid inOrderIterative(TreeNode* root) {\n stack s;\n TreeNode* current = root;\n\n while (!s.empty() || current != nullptr) {\n while (current != nullptr) {\n s.push(current);\n current = current->left;\n }\n \n current = s.top();\n s.pop();\n cout << current->value << \" \";\n current = current->right;\n }\n}\n\nTreeNode* insertLevelOrder(int arr[], TreeNode* root, int i, int n) {\n if (i < n) {\n TreeNode* temp = new TreeNode(arr[i]);\n root = temp;\n\n root->left = insertLevelOrder(arr, root->left, 2 * i + 1, n);\n root->right = insertLevelOrder(arr, root->right, 2 * i + 2, n);\n }\n return root;\n}\n\nint main() {\n int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; // Example dataset\n int n = sizeof(arr) / sizeof(arr[0]);\n TreeNode* root = insertLevelOrder(arr, nullptr, 0, n);\n\n // Measure recursive in-order traversal time\n auto start = chrono::high_resolution_clock::now();\n cout << \"Recursive In-Order Traversal: \";\n inOrderRecursive(root);\n auto end = chrono::high_resolution_clock::now();\n cout << \"\\nTime taken (Recursive): \" \n << chrono::duration_cast(end - start).count() << \" microseconds\\n\";\n\n // Measure non-recursive in-order traversal time\n start = chrono::high_resolution_clock::now();\n cout << \"Non-Recursive In-Order Traversal: \";\n inOrderIterative(root);\n end = chrono::high_resolution_clock::now();\n cout << \"\\nTime taken (Non-Recursive): \" \n << chrono::duration_cast(end - start).count() << \" microseconds\\n\";\n\n return 0;\n}\n分析:\n\n递归:好处是代码简单逻辑清晰,坏处是占用栈内存大,可能溢出。\n非递归:好处是占用内存少,毕竟就一个栈,但是肉眼可见代码复杂度很高,逻辑要求不低。\n\n综上所述我认为:递归可以用于少量数据,毕竟十分简单易操作,而栈的方法可以用于冗大复杂结构二叉树计算。\n```", + "knowledge_path": "knowledge/data_structure/data-structure-023.md", + "text_sha256": "7f7c4f22b9774e285e4d2fa975b1e3a7cda1807c71dab4002221b8687bef62f8", + "knowledge_sha256": "e0416075bd589c1820d981092c74c4b15475f09388604bb4a4d30ceba0ee481f" + }, + "database-005:s15:c01": { + "course_id": "database", + "source_id": "database-005", + "source_title": "期末复习总结", + "locator_type": "slide", + "locator_start": 15, + "locator_end": 15, + "question_id": null, + "heading_path": [ + "期末复习总结" + ], + "text": "- 二、掌握关系代数运算中常用关系运算的含义\n- 【考点】\n- 选择、投影、广义投影、笛卡尔积、连接(θ连接、自然连接、外连接)\n- 并、差、交、除、聚集、分组\n- 题目:对表进行垂直方向的分割用的运算是( )\n- A. 交 B. 投影 C. 选择 D. 连接\n- 【答案】B【解析】投影是按属性选列,正对应“垂直分割”。 从关系R中选择若干个属性构成新的关系(以列的角度)\n- 题目:关系代数表达式的优化策略中,首先要做的是( )\n- A. 对文件进行预处理\n- B. 尽早执行选择运算\n- C. 执行笛卡儿积运算\n- D. 投影运算\n- 【答案】B【解析】早期执行选择可减少中间结果大小,提高整体效率。\n- 第二章 关系数据库", + "knowledge_path": "knowledge/database/database-005.md", + "text_sha256": "b598bc724bb16d64637c3697242281432c81b2cdbae5e43138bcba417386801b", + "knowledge_sha256": "f6701e8a9ba22f3fea331ccd0154b306486fb2a8c852645d5227a35577619055" + }, + "database-001:q-database-001-q2:c01": { + "course_id": "database", + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": "database-001-Q2", + "heading_path": [ + "2012《数据库系统概论》A试卷" + ], + "text": "1. 在数据库系统中死锁属于( )\n\nA.系统故障 B.程序故障 C.事务故障 \t\tD.介质故障\n1. 命令SELECT 学号,AVG(成绩) AS ‘平均成绩’ FROM XS_KC GROUP BY 学号 HAVING AVG(成绩)>=85,表示( )。\n\nA.查找XS_KC表中平均成绩在85分以上的学生的学号和平均成绩\n\nB.查找平均成绩在85分以上的学生\n\nC.查找XS_KC表中各科成绩在85分以上的学生\n\nD.查找XS_KC表中各科成绩在85分以上的学生的学号和平均成绩", + "knowledge_path": "knowledge/database/database-001.md", + "text_sha256": "02fac2f63d062a81771cc91ecf4f2595d537123acc62b8db51e3a9034c29499c", + "knowledge_sha256": "b7fca9f7ede4f6ae43a0770f68c803678003f7382d362d143ac1ff2515afebb3" + }, + "database-004:p3:q-database-004-q27:c01": { + "course_id": "database", + "source_id": "database-004", + "source_title": "数据库考试样题", + "locator_type": "page", + "locator_start": 3, + "locator_end": 3, + "question_id": "database-004-Q27", + "heading_path": [ + "数据库考试样题" + ], + "text": "24. SQL 的 SELECT 语句中,“ HAVING 条件表达式”用来筛选满足条件的( )。\n\nA .列 B .行 C .关系 D .分组", + "knowledge_path": "knowledge/database/database-004.md", + "text_sha256": "4e70d02c4ae195b879493f2f5052a058e20658028250ba55f2acdb3d42d46783", + "knowledge_sha256": "cee20f6a1b20bc9f80af371281762c9f8b97d4e4148004b947184d6f3c214f5e" + }, + "database-005:s19:c01": { + "course_id": "database", + "source_id": "database-005", + "source_title": "期末复习总结", + "locator_type": "slide", + "locator_start": 19, + "locator_end": 19, + "question_id": null, + "heading_path": [ + "期末复习总结" + ], + "text": "- 三、掌握SQL中的查询语句(重点,一定考察一道大题12-16分)\n- 【考点】\n- • SELECT语句的基本结构(SELECT-FROM-WHERE-GROUP BY-HAVING-ORDER BY)\n- • 多表连接(内连接、外连接、自然连接)\n- • 分组统计与聚合函数(AVG、COUNT、SUM、MAX、MIN)\n- • 子查询、嵌套查询\n- 题目:SQL 的 SELECT 语句中,“HAVING 条件表达式”用来筛选满足条件的( )\n- A. 列 B. 行 C. 关系 D. 分组\n- 【答案】D【解析】HAVING子句用于对GROUP BY之后的分组结果进行过滤。\n- 题目:SQL中,下列涉及空值的操作,不正确的是 ( )\n- A. AGE IS NULL B. AGE IS NOT NULL C. AGE = NULL D. NOT (AGE IS NULL)\n- 【答案】C【解析】在 SQL 中,NULL 表示“未知”或“空值”,不能使用常规的比较运算符(如 =, !=)对 NULL 进行判断。\n- 第三章 结构化查询语言", + "knowledge_path": "knowledge/database/database-005.md", + "text_sha256": "26a556a54e90de366b832d48baf98114200317b72b492371145655440b5c6877", + "knowledge_sha256": "f6701e8a9ba22f3fea331ccd0154b306486fb2a8c852645d5227a35577619055" + }, + "operating-systems-028:h-os复习指导:c03": { + "course_id": "operating_systems", + "source_id": "operating-systems-028", + "source_title": "OS复习指导", + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "heading_path": [ + "OS复习指导" + ], + "text": "**运行→就绪:**进程用完时间片。\n1. 进程由哪些部分组成,进程控制块的作用:**进程由PCB、程序部分和数据集合组成**;进程控制块是进程组成中**最关键**的部分,PCB是**进程存在的唯一标志**,每个进程有唯一的进程控制块,系统根据PCB对进程实施控制和管理,**PCB**是进程存在的**唯一**标志。\n1. 什么是**进程的同步与互斥:进程的同步**:进程间共同完成一项任务时直接发生相互作用的关系;\n\n**进程的互斥**:两个逻辑上本来完全独立的进程由于竞争同一个物理资源而相互制约。\n1. 多道程序设计概念:多道程序设计是在一台计算机上同时运行两个或更多个程序,多道程序设计具有提高系统资源利用率和增加作业吞吐量的优点;\n1. 什么是临界资源、临界区:\n\n临界资源:一次仅允许一个进程使用的资源;\n\n临界区:每个进程访问临界资源的那段程序。\n1. 什么是**信号量**,PV操作的动作,进程间简单同步与互斥的实现。**信号量**:也叫信号灯,一般有两个成员组成的数据结构,其中一个成员是整型变量,表示信号量的值,另一个指向PCB的指针。信号量的值与相应资源的使用情况有关。\n1. 什么是**死锁**;产生死锁的**必要条件**;死锁预防的基本思想和可行的解决办法;\n1. 要求:\n1. 理解多道程序设计概念及其优点;\n1. **掌握进程的概念**—程序在并发环境中的**执行过程**。\n1. **深入理解进程最基本的属性是动态性和并发性**。\n\n**动态性:**进程是程序的执行过程,它有生有亡,有活动有停顿,可以处于不同的状态。**并发性:**多个进程的实体能存在于同一内存中,在一段时间内都得到运行。\n1. 掌握**进程与程序的主要区别**。\n1. 掌握进程的基本状态:\n\n**运行态:**此时正用CPU;**就绪态:**可运行,单位分到CPU;\n\n**阻塞态:**不能运行,等待某个外部事件发生。\n\n在什么条件下发生状态转换?\n\n**就绪→运行:**被调度程序选中,分配到CPU。\n\n**运行→阻塞:**因缺乏某种条件而放弃对CPU的占用。\n\n**阻塞→就绪:**阻塞态进程所等待的事件发生了。", + "knowledge_path": "knowledge/operating_systems/operating-systems-028.md", + "text_sha256": "70bd50bfb06979e577c1bef618b42c8e3e80e60d9bce1ac9758dfe82027fab28", + "knowledge_sha256": "8a765684642c48613b9474c0d5812c84e969eec1e42b7011075ac09b37729615" + }, + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~3-参考答案与解析:c01": { + "course_id": "operating_systems", + "source_id": "operating-systems-001", + "source_title": "OS Review", + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "heading_path": [ + "**第 20 题:缺⻚异常(Page Fault)**", + "**第 69 题:⽣产者-消费者问题**", + "③ 参考答案与解析" + ], + "text": "```c\nsemaphore empty = N, full = 0;\nmutex = 1;\nProducer:\nP(empty); P(mutex);\n...⽣产...\nV(mutex); V(full);\nConsumer:\nP(full); P(mutex);\n...消费...\nV(mutex); V(empty);\n```", + "knowledge_path": "knowledge/operating_systems/operating-systems-001.md", + "text_sha256": "26c624fad628051aa4e267b0ef796f95e7e224b47ab7b57948877eed011bf24c", + "knowledge_sha256": "cece91eac0e0784ae4ab344caf9408e4349474edf6e64012dff4c22e4204332a" + }, + "operating-systems-005:p1:c01": { + "course_id": "operating_systems", + "source_id": "operating-systems-005", + "source_title": "OS1A", + "locator_type": "page", + "locator_start": 1, + "locator_end": 1, + "question_id": null, + "heading_path": [ + "OS1A" + ], + "text": "选择题\n1.D 2.B\n3.C\n4.B\n5.C\n6.A\n7.C\n8.A\n9.C\n10\nB\n11 C\n12\nD 13\nD 14\nC\n15\nC\n填空题\n1.一次只允许一个进程使用的资源\n进程中访问临界资源的那段程序代码\n2.并发性\n共享性\n虚拟性\n异步性\n3.互斥\n占有\n非剥夺\n循环等待\n4.输入井\n输出井\n5.可供并发进程使用的资源实体数\n正在等待使用临界区的进程数\nSPOOLING 技术\n临界资源\n就绪\n等待\n运行\n\n中断方式、DMA 方式、通道方式\n\n字符流(流式)\n\n.空闲块链、位示图\n\n简答题\n1.答:所谓死锁是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种\n僵持状态时,若无外力作用,它们都无法再向前推进。\n\n产生死锁的原因可归结为如下两点:竞争资源和进程推进顺序非法。\n产生死锁的必要条件:互斥条件、请求和保持条件、不剥夺条件、环路等待条件。\n2.答:所谓虚拟存储器,是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以\n扩充的一种存储器系统。其逻辑容量由内存容量和外存容量之和决定,其运行速度接近于内\n存速度,而每位的成本却又接近于外存。\n\n局部性原理是指程序在执行时将呈现出局部性规律,即在一个较短的时间内,程序的\n执行仅局限于某个部分:\n\n时间局限性:如果程序中的某条指令一旦执行,则不久以后该指令可能再次执行,如\n果某数据被访问过,则不久以后该数据可能再次被访问。\n\n空间局限性:一旦程序访问了某个存储单元,在不久之后,其附近的存储单元将被访\n问,即程序在一段时间内所访问的地址,可能集中在一定的范围之内,其典型便是程序的顺\n序执行。\n3.答:当用户进程请求打印输出时,Spooling 系统同意打印输出,但并不真正把打印机分\n配给该用户进程,而只为它做两件事:1,由输出进程在输出井中为之申请一空闲盘块区,\n并将要打印的数据送入其中;2,输出进程再为用户进程申请一张空白的用户请求打印表,\n并将用户的打印要求填入表中,再将该表挂到请求打印队列之上。如果还有进程要求打印输\n出,系统仍可以接受该请求,同样做上面的工作。如果打印机空闲,输出进程将从请求打印\n队列的队首取出一张请求表,根据表中的要求将要打印的数据从输出井传送到内存缓冲区,\n再由打印机进行打印。打印完毕,输出进程再查看请求打印队列中是否还有等待要打印的请\n求表,若有,再取出一张表,并根据其中的要求进行打印,如此下去,直至请求队列为空位\n置,输出进程才将自己阻塞起来,等待下次再由打印请求时才被唤醒。\n编程题\n1.Begin\nVar\ns,m:semaphore:=1,0;\nInt I,j=0,0;", + "knowledge_path": "knowledge/operating_systems/operating-systems-005.md", + "text_sha256": "bd36c0a5e50a06e3a2dc94da29f63746fea14224851fd4378617dd45a92198aa", + "knowledge_sha256": "5eca31cef12bc26fc6699c5e296015091f70a7e93a39210dcd8c67b204e72da6" + }, + "compiler-principles-001:s27:c01": { + "course_id": "compiler_principles", + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 27, + "locator_end": 27, + "question_id": null, + "heading_path": [ + "复习课 2025", + "G1(S):" + ], + "text": "S → a |  | (T)\nT → T, S | S\n\n- *\n- 消除左递归:按照T,S的顺序消除左递归\n- G’1(S):\n - S → a |  | (T)\n - T → S T’\n - T’ → , S T’ | \n- 无左公共因子", + "knowledge_path": "knowledge/compiler_principles/compiler-principles-001.md", + "text_sha256": "701db1fd2df14991fceba2c16e07099fb3167ca915b6f6a5fb6aea0a7a6faf6f", + "knowledge_sha256": "c404e82b927cc735c893d94adc03a0c9a508b42940fed93160c2e24c770266e0" + }, + "compiler-principles-001:s26:c01": { + "course_id": "compiler_principles", + "source_id": "compiler-principles-001", + "source_title": "复习课 2025", + "locator_type": "slide", + "locator_start": 26, + "locator_end": 26, + "question_id": null, + "heading_path": [ + "复习课 2025", + "考虑下面文法G1(S):" + ], + "text": "S → a |  | (T)\n\t\tT → T, S | S\n(1) 消去G1的左递归。然后,对每个非终结符,写出不带回溯的递归子程序。\n(2) 经改写后的文法是否是LL(1)的?给出它的预测分析表。\n\n- *\n- 思路\n - 消除左递归\n - 提取左公共因子\n - 计算非终结符的FIRST集合和FOLLOW集合\n - 检查LL(1)条件\n - 构造预测分析表或递归子程序", + "knowledge_path": "knowledge/compiler_principles/compiler-principles-001.md", + "text_sha256": "f213f49d4af297af8135dea21c251c73ef95681bdc3818335380c69055e9458b", + "knowledge_sha256": "c404e82b927cc735c893d94adc03a0c9a508b42940fed93160c2e24c770266e0" + }, + "computer-networks-051:h-笔记:c10": { + "course_id": "computer_networks", + "source_id": "computer-networks-051", + "source_title": "笔记", + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "heading_path": [ + "笔记" + ], + "text": "![image](assets/computer-networks-051/image-015.png)\n\n9. 题目\n\n![image](assets/computer-networks-051/image-016.png)\n\n10. 三报文握手建立连接时,服务器发送针对TCP连接请求的确认时,seq可以自己指定\n\n11. TCP报文段的首部格式。\n\n![image](assets/computer-networks-051/image-017.png)\n\n**源端口、目的端口**,很简单,不讲。\n\n**序号和确认号,以及ACK**:**序号**的值指出本TCP报文段数据载荷的第一个字节的序号;![image](assets/computer-networks-051/image-018.png)\n\n**确认号**的值指出**期望**收到对方下一个TCP报文段的数据载荷的第一个字节的序号,同时也是对之前收到的所有数据的确认。(若确认号=n,则表明到序号n-1为止的所有数据都被正确接收,期望收到序号=n的数据)\n\n**ACK = 0/1**,只有=1是确认号字段才有效,否则无效。TCP规定,在连接建立后所有传送的TCP报文段都必须把ACK置1\n\n**数据偏移**有4个bit,表示数据载荷部分的起始处距离TCP报文段的起始处有多远,以4个字节为单位。首部至少20B,则数据偏移至少为0101 (0101*4B = 5*4B = 20B)\n\n**窗口**指出发送本报文段的一方的接收窗口,用于流量控制。\n\n**校验和**:占16比特,检查范围包括TCP报文段的首部和数据载荷两部分,在计算校验和时,要在TCP报文段的前面加上12字节的伪首部\n\n**同步标志位SYN** = 0/1,三次握手建立连接时用来同步序号\n\n**终止标志位FIN** = 0/1,四次挥手用来释放TCP连接\n\n**推送标志位PSH** = 0/1,接收方的TCP收到该标志位为1的报文段会**尽快上交应用进程,**而不必等到接收缓存都填满后再向上交付。\n\n**紧急标志位URG** = 0/1,为1时紧急指针字段有效;取值=0时紧急指针字段无效;\n\n**紧急指针**:占16b,以B为单位,来指明紧急数据的长度。\n\n![image](assets/computer-networks-051/image-019.png)\n\n**选项字段**:\n\n![image](assets/computer-networks-051/image-020.png)\n\n**填充**:由于选项长度可变,因此使用填充来确保报文段首部能被4整除\n\n期末复习查漏补缺:", + "knowledge_path": "knowledge/computer_networks/computer-networks-051.md", + "text_sha256": "2a3de231c73c1736cfbcdd9a801fdcc04b1b7eceb75b24920e2aa0d49fb99b06", + "knowledge_sha256": "5379e65cbcd969cd9afd8f0bba6807c21df99bb7aaf397a5a4936950d3718555" + }, + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四:c01": { + "course_id": "computer_networks", + "source_id": "computer-networks-025", + "source_title": "网络层大题", + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "heading_path": [ + "网络层大题", + "【大题一】综合寻址、子网划分与 ICMP(模型一、二、三)", + "【大题二】NAT 转换与路由查表(模型三、四)" + ], + "text": "【题目背景】\n\n内网主机 A (192.168.1.10) 通过 NAPT 网关(公网 IP 为 202.1.1.1)访问外网服务器 B (8.8.8.8)。\n\n此时网关的 NAT 转换表如下:\n\n| 内网 IP : 端口 | 外网 IP : 端口 |\n\n| :--- | :--- |\n\n| 192.168.1.10 : 5000 | 202.1.1.1 : 8000 |\n\n同时,网关路由器收到一个去往 `8.8.8.8` 的回包,其路由表条目如下:\n\n1. `0.0.0.0/0` 下一跳 `202.1.1.254`\n\n2. `8.0.0.0/8` 下一跳 `202.1.1.5`\n\n**【问题】**\n\n1. **NAT 填表**:当服务器 B 回复 A 时,该回包到达网关(公网侧)时,其首部的**目的 IP** 和**目的端口**各是什么?\n\n2. **NAT 转发**:网关收到回包后,根据转换表,会将包的首部修改为什么?\n\n3. **最长前缀匹配**:当网关需要将请求包发往服务器 `8.8.8.8` 时,根据路由表,它会选择哪一个下一跳地址?为什么?\n\n---", + "knowledge_path": "knowledge/computer_networks/computer-networks-025.md", + "text_sha256": "6d3004aaa4d28259c92b2a80567820eda12c8d4ef926364346095519dfdee689", + "knowledge_sha256": "a6740783ae006fa05a257d03e43db0429c0aa751c6fc55d0c39e9dc786c22689" + }, + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四~大题二-参考答案:c01": { + "course_id": "computer_networks", + "source_id": "computer-networks-025", + "source_title": "网络层大题", + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "heading_path": [ + "网络层大题", + "【大题一】综合寻址、子网划分与 ICMP(模型一、二、三)", + "【大题二】NAT 转换与路由查表(模型三、四)", + "✅ 【大题二:参考答案】" + ], + "text": "1. **回包到达网关时**:\n\n- **目的 IP**:`202.1.1.1`(NAT 网关的公网 IP)。\n\n- **目的端口**:`8000`(转换表分配的外网端口)。\n\n2. **网关还原后**:\n\n- **目的 IP**:`192.168.1.10`。\n\n- **目的端口**:`5000`。\n\n3. **路由选择**:\n\n- 选择**下一跳 `202.1.1.5`**。\n\n- **理由**:根据**最长前缀匹配原则**,`8.8.8.8` 与 `8.0.0.0/8` 匹配(掩码长度 8),而默认路由 `0.0.0.0/0` 掩码长度为 0。8 位比 0 位更精确,故选之。\n\n---", + "knowledge_path": "knowledge/computer_networks/computer-networks-025.md", + "text_sha256": "435ad9c94418d882748de2b4e34866146695c2f24d7783f01aa5079128113825", + "knowledge_sha256": "a6740783ae006fa05a257d03e43db0429c0aa751c6fc55d0c39e9dc786c22689" + }, + "software-testing-040:h-unit~第二章-软件测试方法~一-黑盒测试-重点:c01": { + "course_id": "software_testing", + "source_id": "software-testing-040", + "source_title": "Unit", + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "heading_path": [ + "Unit", + "✅ **第二章:软件测试方法**", + "一、黑盒测试(重点)" + ], + "text": "- **定义**:不考虑内部结构,只关注输入输出。\n- **常用方法**:\n 1. **等价类划分法**\n - 有效等价类 / 无效等价类\n - 划分原则(如取值范围、集合、布尔量、规则等)\n - 设计测试用例的步骤(编号、覆盖有效类、单独覆盖无效类)\n - 实例:三角形判断问题\n 2. **边界值分析法**\n - 一般边界值(4n+1)\n - 健壮边界值(6n+1)\n - 最坏情况边界值(5^n)\n - 健壮最坏情况边界值(7^n)\n - 实例:图片上传大小限制\n 3. **判定表驱动法**\n - 条件桩、动作桩、条件项、动作项\n - 建立步骤:列出条件 → 列出动作 → 填表 → 简化\n - 实例:机器维修优先级判定\n 4. **因果图法**。 \n - 因果关系:恒等、非、或、与\n - 约束关系:E、I、O、R、M\n - 步骤:列出原因结果 → 画因果图 → 转判定表 → 设计用例\n - 实例:第一个字符为#或*,第二个为数字", + "knowledge_path": "knowledge/software_testing/software-testing-040.md", + "text_sha256": "91da956d79d510738a2479198d007c512f074d9094709f45a40eadad3137b83c", + "knowledge_sha256": "49f37d09fd6feb78010a35b03d10591dbdae73fc32b0ede8a1d7cac249b1b44c" + }, + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~题目:c01": { + "course_id": "software_testing", + "source_id": "software-testing-040", + "source_title": "Unit", + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "heading_path": [ + "Unit", + "题目 1:等价类划分 + 边界值分析(综合题)", + "题目" + ], + "text": "某保险系统根据投保人年龄(整数)计算保费,规则如下:\n- 年龄范围:**1 ~ 150**(含边界)\n- **1 ~ 18** 岁:保费 **100** 元\n- **19 ~ 60** 岁:保费 **200** 元\n- **61 ~ 150** 岁:保费 **300** 元\n- 其他(<1 或 >150,或非整数):系统提示 **\"年龄输入非法\"**\n\n请用**等价类划分法**和**边界值分析法**设计测试用例。\n\n---", + "knowledge_path": "knowledge/software_testing/software-testing-040.md", + "text_sha256": "ad253b390a146d16b0f892f766f305a0033bc64caf8a5589bf00edc63f01e679", + "knowledge_sha256": "49f37d09fd6feb78010a35b03d10591dbdae73fc32b0ede8a1d7cac249b1b44c" + }, + "software-testing-045:h-unit~第八章-软件质量度量~三-软件度量方法~2.-覆盖率度量-测试充分性指标:c01": { + "course_id": "software_testing", + "source_id": "software-testing-045", + "source_title": "Unit", + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "heading_path": [ + "Unit", + "✅ **第八章:软件质量度量**", + "三、软件度量方法", + "2. 覆盖率度量(测试充分性指标)" + ], + "text": "| 覆盖类型 | 定义 | 特点 |\n|-----------|------|-------|\n| **函数入口覆盖率** | 被调用过的函数比例 | 最基本 |\n| **调用对覆盖率** | 执行过的调用对比例 | 用于集成测试 |\n| **语句覆盖率** | 至少执行一次的语句比例 | 最弱,忽略分支和条件组合 |\n| **分支覆盖率(判定覆盖)** | 至少执行一次的条件分支比例 | 包容语句覆盖,但忽略复杂条件 |\n| **MC/DC(修正条件/判定覆盖)** | 每个条件独立影响判定结果 | 航空软件标准(DO-178B),能发现ORF、VNF、ENF类错误 |", + "knowledge_path": "knowledge/software_testing/software-testing-045.md", + "text_sha256": "2ea79812668d7e4c9f5cc780cbb8b916fdd1f2a65a4ece7821d20e105a6dc251", + "knowledge_sha256": "8637343b2224588c655bc4fac4f776011637970cae86a07cf2dfe298a503c572" + }, + "artificial-intelligence-intro-017:s27:c01": { + "course_id": "artificial_intelligence_intro", + "source_id": "artificial-intelligence-intro-017", + "source_title": "第6章 机器学习(1)-决策树", + "locator_type": "slide", + "locator_start": 27, + "locator_end": 27, + "question_id": null, + "heading_path": [ + "第6章 机器学习(1)-决策树", + "剪枝处理-预剪枝" + ], + "text": "- 预剪枝的优缺点\n- 优点\n - 降低过拟合风险\n - 显著减少训练时间和测试时间开销\n- 缺点\n - 欠拟合风险:有些分支的当前划分虽然不能提升泛化性能,但在其基础上进行的后续划分却有可能导致性能显著提高。预剪枝基于“贪心”本质禁止这些分支展开,带来了欠拟合风险", + "knowledge_path": "knowledge/artificial_intelligence_intro/artificial-intelligence-intro-017.md", + "text_sha256": "d837520312cd8fbc5c824541a708581a71925c95d378c9028fa42e12b9cde98e", + "knowledge_sha256": "0683870a9390e1c9e1d34d89f728664a2165e97ad8e89bfaced1e00421c85843" + }, + "artificial-intelligence-intro-008:h-第3章-搜索探寻与问题求解:c04": { + "course_id": "artificial_intelligence_intro", + "source_id": "artificial-intelligence-intro-008", + "source_title": "课后题讲解", + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "heading_path": [ + "第3章 搜索探寻与问题求解" + ], + "text": "(2) 用一致启发做**重赋权**(Johnson 技巧):令 c'(n,n') = c(n,n') − h(n) + h(n')。 一致性 ⟺ c'(n,n') ≥ 0。对任一路径 s=n₀→…→n_k,重赋权后总代价电话簿式相消: Σc' = (原代价) − h(s) + h(n_k)。 到同一目标的所有路径,c'-代价与原代价只差常数 −h(s)+h(n_k),故 c' 下的最短路 = 原图最短路。又用 A*(启发 h)时 f(n)=g(n)+h(n)=g'(n)+h(s),扩展顺序与在 c' 图上按 g' 的 Dijkstra 完全一致。因 c'≥0,由 (1) Dijkstra 最优,故一致启发下 A* 最优。∎", + "knowledge_path": "knowledge/artificial_intelligence_intro/artificial-intelligence-intro-008.md", + "text_sha256": "7a22de6faa3a8deda50e92c544f866aaf5a8080ba907b179b5843ef035af09ba", + "knowledge_sha256": "3b319009ef4ac1fc016b38c8ee78e9cc032339afc13bde09c94732eecafce781" + }, + "computer-organization-026:s76:c01": { + "course_id": "computer_organization", + "source_id": "computer-organization-026", + "source_title": "复习课I", + "locator_type": "slide", + "locator_start": 76, + "locator_end": 76, + "question_id": null, + "heading_path": [ + "复习课I", + "二、多体交叉存储器" + ], + "text": "- 3.6.1 cache基本原理\n- 1.cache的功能\n- cache是介于CPU和主存之间的高速缓冲存储器,存取速度比主存快。它能高速地向CPU提供指令和数据,加快程序的执行速度。它是为了解决CPU和主存之间速度不匹配而采用的一项重要技术,基于程序运行中的空间局部性和时间局部性特征。\n- 辅助硬件\n- CPU\n- 主存MS\n- Cache\n- 辅存、主存与Cache的存储层次\n- 辅存\n- cache\n- 重点!", + "knowledge_path": "knowledge/computer_organization/computer-organization-026.md", + "text_sha256": "c07bc6018ec704fee939a4305c20024107d7471200d5dab4db34834d126d12c1", + "knowledge_sha256": "17db2ce6f36e8d53a6ebe79774334899b27ae90081f17dc31296176945b5ddd2" + }, + "web-frontend-fundamentals-014:s32:c01": { + "course_id": "web_frontend_fundamentals", + "source_id": "web-frontend-fundamentals-014", + "source_title": "Lecture 4 Page Sections and the CSS Box Model", + "locator_type": "slide", + "locator_start": 32, + "locator_end": 32, + "question_id": null, + "heading_path": [ + "Lecture 4 Page Sections and the CSS Box Model", + "CSS 外边距属性" + ], + "text": "| 属性 | 描述 |\n|---|---|\n| margin | 设置4个方向上的外边距 |\n| margin-bottom | 仅设置底部外边距 |\n| margin-left | 仅设置左方外边距 |\n| margin-right | 仅设置右方外边距 |\n| margin-top | 仅设置顶部外边距 |\n| 完整外边距属性列表 | |", + "knowledge_path": "knowledge/web_frontend_fundamentals/web-frontend-fundamentals-014.md", + "text_sha256": "5d0e37c4fbd2e6a426c7ebdcf506190c2812d62ff05ee31fa66b25f8fc7c9d5c", + "knowledge_sha256": "4e49b95fc6cc8cfee7b060fc6f5f9180bd98dc2001a18e7ae1bc47bc33d237bb" + }, + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q20:c01": { + "course_id": "discrete_mathematics", + "source_id": "discrete-mathematics-003", + "source_title": "离散数学试卷(中文)", + "locator_type": "page", + "locator_start": 4, + "locator_end": 4, + "question_id": "discrete-mathematics-003-Q20", + "heading_path": [ + "离散数学试卷(中文)" + ], + "text": "5.设A={1,2,3},A 上二元关系S={<1,1>,<1,2>,<3,2>,<3,3>},则S 是\n\n( b )\n\nA.自反关系 B.传递关系C.对称关系 D. 反自反关系\n\n6. 设A={a,b,c,d},A 上的等价关系R={, , , }∪IA,则对\n\n应于R 的A 的划分是( d )\n\nA.{{a},{b, c},{d}}\nB.{{a, b},{c}, {d}}\n\nC.{{a},{b},{c},{d}}\nD.{{a, b}, {c,d}}\n\n《离散数学》试卷A 第 2 页 共 6 页", + "knowledge_path": "knowledge/discrete_mathematics/discrete-mathematics-003.md", + "text_sha256": "02b4e54f038761424808c68e644c0070fc4c786998a50db6c6dbda9620d0ffee", + "knowledge_sha256": "05b9c09b22b768c1595b88aa6febc59e05e7ff481e6d764332d246973f753e91" + }, + "electrical-engineering-009:h-电路与电子技术-复习大纲:c01": { + "course_id": "electrical_engineering", + "source_id": "electrical-engineering-009", + "source_title": "电路与电子技术 复习大纲", + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "heading_path": [ + "电路与电子技术 复习大纲" + ], + "text": "**电路与电子技术 复习大纲**\n\n**一、电路原理**\n\n1.电路的基本概念与基本定律\n\n要求:了解电路模型的概念;理解电压、电流参考方向的概念,掌握功率平衡的概念与功率的计算;理解电阻、电容、电感、独立电源和受控电源等电路元件的工作特性;掌握电位的概念与计算;掌握基尔霍夫定律。\n\n重点:电压、电流的参考方向设定;功率计算,负载、电源的判断;电阻、电感与电容的电压-电流关系,储能公式的计算;电压源和电流源的电压-电流关系;基尔霍夫定律;电位的计算。\n\n2. 电路的基本定律和分析方法\n\n要求:了解支路电流法,了解实际电源的两种模型的等效变换,掌握用叠加原理和戴维南定理分析电路的方法,掌握结点电压法。了解受控源模型。\n\n重点:电阻串并联化简;电源的等效变换;叠加原理;戴维南定理;结点电压法。\n\n3. 电路的暂态分析\n\n要求:理解电路的暂态、换路定理和时间常数的基本概念,掌握一阶电路暂态分析的三要素法。\n\n重点:换路定理;一阶线性电路暂态过程的三要素分析法(初始值、稳态值、时间常数的计算)。\n\n4. 正弦交流电路\n\n要求:理解正弦交流电的三要素、相位差、有效值及相量表示法。理解电路基本定律的相量形式、复阻抗和相量图,掌握用相量法计算简单正弦交流电路的方法。理解和掌握有功功率、无功功率、视在功率、功率因数的概念和计算,了解提高功率因数的方法及其经济意义。了解正弦交流电路串联谐振和并联谐振的条件及特征。\n\n重点:正弦量的有效值和相量表示;正弦交流电相位差;正弦稳态电路的相量模型;用相量法、相量图计算简单的正弦交流电路。\n\n**(二)“模拟电子技术”模块**\n\n1. 半导体器件\n\n要求:了解二极管、稳压管和三极管的基本构造、工作原理和特性曲线,理解主要参数的意义;理解PN结的单向导电性,三极管的电流分配和电流放大作用;会分析含有二极管的电路;三极管三个工作状态的判别。\n\n重点:会分析含有二极管的电路;三极管三个工作状态的判别。\n\n2.基本放大电路\n\n要求:理解共射极、共集电极单管放大电路静态工作点的作用和简化小信号模型的分析方法。了解多级放大的概念及多级放大电路的输入阻抗、输出阻抗和放大倍数的计算。了解差动放大电路的工作原理。\n\n重点:固定偏置放大电路、分压式偏置电路、射极输出器等基本放大电路的静态分析和动态分析。\n\n3. 集成运放电路\n\n要求:了解集成运算放大器的基本概念、电压传输特性。掌握理想运算放大器的基本分析方法。 理解用集成运算放大器组成的比例、加、减、积分和微分运算电路的工作原理。\n\n重点:集成运算放大器的电压传输特性;集成运算放大器组成的比例、加、减运算电路的分析计算;电压比较器。\n\n4.电子电路中的反馈\n\n要求:理解反馈的概念,了解反馈类型和负反馈对放大电路性能的影响。\n\n重点:反馈类型的判别和负反馈对放大电路性能的影响。\n\n5.直流稳压电源", + "knowledge_path": "knowledge/electrical_engineering/electrical-engineering-009.md", + "text_sha256": "06bccc463a4da9f4763b501a046ec9d95292d7fc696c5fafea62d8676f6c3cf9", + "knowledge_sha256": "89394c70c7b87e9bd48f8c0841b1aba776098ebce9eaa59365782fa0c8542575" + }, + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c03": { + "course_id": "data_structure", + "source_id": "data-structure-001", + "source_title": "关于二分双数组—冒泡排序算法的研究", + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "heading_path": [ + "关于二分双数组—冒泡排序算法的研究" + ], + "text": "通过比较小数组和大数组的插入次数,算法能够尽量保持两个数组的平衡,从而提高排序效率。相比之下,快速排序在处理已经部分有序的数据时,可能会导致不平衡的分区,从而影响性能。\n\n稳定性:\n\n在数组大小小于特定阈值时,算法切换到 std::sort,确保了排序的稳定性。快速排序本身是不稳定的排序算法。\n\n适应性:\n\n算法在处理不同类型的数据分布时,可能会有更好的适应性。例如,在处理包含大量重复元素的数据时,可能会表现得更好,因为它可以根据插入次数动态调整数组大小\n\n**劣势**\n\n复杂度分析:该算法的时间复杂度较为复杂,取决于递归的深度和冒泡排序的使用频率。在某些情况下,算法的性能可能不如传统的快速排序或归并排序。\n\n**拓展研究:**\n\n在此基础上我尝试使用混合二分数组——快速排序算法,就是利用我的算法在排序同时平衡分区以及快速排序不平衡但效率高的二种优势尝试集合起来。横轴是每隔n次就进行一次二分数组排序,但我们从纵轴可以清楚的发现这种优化效果不理想。\n\n**结论:**\n\n“二分数组——快速排序算法”是一种结合了分治法和插入排序思想的新型排序算法。通过动态调整数组大小和在特定条件下切换到冒泡排序,该算法在处理大数据时表现出色。尽管该算法在复杂度分析和初始元素选择方面存在一定的挑战,但其独特的思想和优势使其在大数据处理领域具有广泛的应用前景。目前混合排序优化已经被证实是不可行的,未来的研究可以进一步优化初始元素选择策略,并探索该算法在不同数据分布下的性能表现。\n\n**参考文献**\n\n[1] T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein, *Introduction to Algorithms*, 3rd ed. MIT Press, 2009.\n\n[2] D. E. Knuth, *The Art of Computer Programming, Volume 3: Sorting and Searching*, 2nd ed. Addison-Wesley, 1998.\n\n[3] R. Sedgewick and K. Wayne, *Algorithms*, 4th ed. Addison-Wesley, 2011.\n\n[4] J. L. Bentley and M. D. McIlroy, \"Engineering a sort function,\" *Software: Practice and Experience*, vol. 23, no. 11, pp. 1249-1265, 1993.\n\n[5] C. A. R. Hoare, \"Quicksort,\" *The Computer Journal*, vol. 5, no. 1, pp. 10-15, 1962.", + "knowledge_path": "knowledge/data_structure/data-structure-001.md", + "text_sha256": "dcb5e4e88885d819868e9aab1d66501407b4fc4756ddb6940520a7086e64fc73", + "knowledge_sha256": "54fd3ebcf93617fcceea6c788aa1f1f4259323c36bba966efe2fea8d534ad80f" + } + }, + "entries": [ + { + "case_id": "la-diagonalization-1", + "topic_id": "la-diagonalization", + "course_id": "linear_algebra", + "scenario": "concept", + "query": "矩阵可对角化的充要条件是什么?为什么特征值互不相同只是充分条件?", + "split": "validation", + "source_family": "linear-algebra-012", + "evidence_groups": [ + { + "need": "可对角化的充要条件", + "chunk_ids": [ + "linear-algebra-012:p2:q-linear-algebra-012-q10:c01" + ] + } + ], + "reference_answer": "在讨论的数域内,n阶矩阵可对角化当且仅当有n个线性无关特征向量;n个不同特征值是充分条件而非必要条件。单位矩阵只有一个不同特征值但本身为对角矩阵。", + "verification": "原文选择题第4题的B项给出条件;单位矩阵作为独立反例。内部q10不是试卷第10题。", + "pitfalls": [ + "有重根必不可对角化", + "n个互不相同的特征向量就足够,无需线性无关" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "la-diagonalization-2", + "topic_id": "la-diagonalization", + "course_id": "linear_algebra", + "scenario": "concept", + "query": "有重根就一定不能化成对角矩阵吗?请用单位矩阵说明。", + "split": "validation", + "source_family": "linear-algebra-012", + "evidence_groups": [ + { + "need": "可对角化的充要条件", + "chunk_ids": [ + "linear-algebra-012:p2:q-linear-algebra-012-q10:c01" + ] + } + ], + "reference_answer": "在讨论的数域内,n阶矩阵可对角化当且仅当有n个线性无关特征向量;n个不同特征值是充分条件而非必要条件。单位矩阵只有一个不同特征值但本身为对角矩阵。", + "verification": "原文选择题第4题的B项给出条件;单位矩阵作为独立反例。内部q10不是试卷第10题。", + "pitfalls": [ + "有重根必不可对角化", + "n个互不相同的特征向量就足够,无需线性无关" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "prob-t-symmetry-1", + "topic_id": "prob-t-symmetry", + "course_id": "probability_theory", + "scenario": "problem", + "query": "T服从t分布,若P(T>λ)=α,P(T<−λ)是多少?", + "split": "validation", + "source_family": "probability-theory-010", + "evidence_groups": [ + { + "need": "t分布双尾对称题", + "chunk_ids": [ + "probability-theory-010:q-probability-theory-010-q1:c01" + ] + } + ], + "reference_answer": "P(T<−λ)=P(T>λ)=α,利用t密度关于0对称;不是α/2。", + "verification": "可读题干与选项完整;独立通过对称性积分变量替换验证,不把前一道题的答案B错配到本题。", + "pitfalls": [ + "把单侧概率再次除以2", + "把chunk开头上一题的B当作本题答案" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "prob-t-symmetry-2", + "topic_id": "prob-t-symmetry", + "course_id": "probability_theory", + "scenario": "problem", + "query": "t分布右边尾巴的面积是α,关于0对称的左边尾巴也是α,还是α/2?", + "split": "validation", + "source_family": "probability-theory-010", + "evidence_groups": [ + { + "need": "t分布双尾对称题", + "chunk_ids": [ + "probability-theory-010:q-probability-theory-010-q1:c01" + ] + } + ], + "reference_answer": "P(T<−λ)=P(T>λ)=α,利用t密度关于0对称;不是α/2。", + "verification": "可读题干与选项完整;独立通过对称性积分变量替换验证,不把前一道题的答案B错配到本题。", + "pitfalls": [ + "把单侧概率再次除以2", + "把chunk开头上一题的B当作本题答案" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "prob-unbiased-1", + "topic_id": "prob-unbiased", + "course_id": "probability_theory", + "scenario": "problem", + "query": "独立同分布样本方差σ²>0,用权重(1/2,1/3,1/6)、(1/2,1/4,1/4)、(1/3,1/3,1/3)、(1/5,2/5,2/5)估计均值,哪个方差最小?", + "split": "validation", + "source_family": "probability-theory-010", + "evidence_groups": [ + { + "need": "四种均值估计量的题目与解答", + "chunk_ids": [ + "probability-theory-010:q-probability-theory-010-q3:c01" + ] + } + ], + "reference_answer": "均无偏,因为权重和为1。方差分别为7σ²/18、3σ²/8、σ²/3、9σ²/25;第三种最小。", + "verification": "按独立变量方差公式逐项平方求和复算;σ²>0避免零方差时无严格优劣。", + "pitfalls": [ + "权重和相同所以方差相同", + "漏掉独立性条件" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "prob-unbiased-2", + "topic_id": "prob-unbiased", + "course_id": "probability_theory", + "scenario": "problem", + "query": "四种加权平均都无偏时,为什么平均分配三个样本的权重更有效?假定样本独立同分布且方差为正。", + "split": "validation", + "source_family": "probability-theory-010", + "evidence_groups": [ + { + "need": "四种均值估计量的题目与解答", + "chunk_ids": [ + "probability-theory-010:q-probability-theory-010-q3:c01" + ] + } + ], + "reference_answer": "均无偏,因为权重和为1。方差分别为7σ²/18、3σ²/8、σ²/3、9σ²/25;第三种最小。", + "verification": "按独立变量方差公式逐项平方求和复算;σ²>0避免零方差时无严格优劣。", + "pitfalls": [ + "权重和相同所以方差相同", + "漏掉独立性条件" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "algo-knapsack-1", + "topic_id": "algo-knapsack", + "course_id": "algorithm_design_and_analysis", + "scenario": "problem", + "query": "2023-2024 B卷容量22、体积3/5/7/8/9、价值4/6/7/9/10的0-1背包题怎么做?", + "split": "validation", + "source_family": "algorithm-design-and-analysis-001", + "evidence_groups": [ + { + "need": "容量22的完整背包题干", + "chunk_ids": [ + "algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q13:c01" + ] + } + ], + "reference_answer": "最大价值25,选择第2、4、5件,体积5+8+9=22,价值6+9+10=25。第1、2、3、4件体积为23,不可行。", + "verification": "已独立穷举32个子集复核;题干提供实例,不提供现成答案。", + "pitfalls": [ + "拿总体积23的组合", + "把0-1背包按分数背包贪心求解" + ], + "external_reference": null, + "verified_values": { + "maximum_value": 25, + "selected_items": [ + 2, + 4, + 5 + ] + } + }, + { + "case_id": "algo-knapsack-2", + "topic_id": "algo-knapsack", + "course_id": "algorithm_design_and_analysis", + "scenario": "problem", + "query": "背包最多装22,每件只能拿一次,五件物品重量3、5、7、8、9,价值4、6、7、9、10。最大价值和选择是什么?", + "split": "validation", + "source_family": "algorithm-design-and-analysis-001", + "evidence_groups": [ + { + "need": "容量22的完整背包题干", + "chunk_ids": [ + "algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q13:c01" + ] + } + ], + "reference_answer": "最大价值25,选择第2、4、5件,体积5+8+9=22,价值6+9+10=25。第1、2、3、4件体积为23,不可行。", + "verification": "已独立穷举32个子集复核;题干提供实例,不提供现成答案。", + "pitfalls": [ + "拿总体积23的组合", + "把0-1背包按分数背包贪心求解" + ], + "external_reference": null, + "verified_values": { + "maximum_value": 25, + "selected_items": [ + 2, + 4, + 5 + ] + } + }, + { + "case_id": "ds-inorder-1", + "topic_id": "ds-inorder", + "course_id": "data_structure", + "scenario": "concept", + "query": "不用递归,怎样用栈完成二叉树中序遍历?", + "split": "dev", + "source_family": "data-structure-023", + "evidence_groups": [ + { + "need": "显式栈中序遍历实现", + "chunk_ids": [ + "data-structure-023:h-作业及分析:c01" + ] + } + ], + "reference_answer": "沿左链压栈;到空节点时弹栈并访问;转向弹出节点的右子树;栈为空且当前节点为空才结束。时间O(n),栈空间O(h)。", + "verification": "逐句检查代码的循环、压栈、弹栈、访问、转右顺序;复杂度为独立推导,不采纳材料中未经验证的性能测量。", + "pitfalls": [ + "栈一空就结束,遗漏当前右子树", + "弹栈前先访问导致先序遍历" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "ds-inorder-2", + "topic_id": "ds-inorder", + "course_id": "data_structure", + "scenario": "concept", + "query": "遍历二叉树时一路压左孩子,弹出后什么时候访问右子树?", + "split": "dev", + "source_family": "data-structure-023", + "evidence_groups": [ + { + "need": "显式栈中序遍历实现", + "chunk_ids": [ + "data-structure-023:h-作业及分析:c01" + ] + } + ], + "reference_answer": "沿左链压栈;到空节点时弹栈并访问;转向弹出节点的右子树;栈为空且当前节点为空才结束。时间O(n),栈空间O(h)。", + "verification": "逐句检查代码的循环、压栈、弹栈、访问、转右顺序;复杂度为独立推导,不采纳材料中未经验证的性能测量。", + "pitfalls": [ + "栈一空就结束,遗漏当前右子树", + "弹栈前先访问导致先序遍历" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "db-projection-1", + "topic_id": "db-projection", + "course_id": "database", + "scenario": "concept", + "query": "关系代数中选择和投影有什么区别?哪一个是按列切分?", + "split": "dev", + "source_family": "database-001+database-004+database-005", + "evidence_groups": [ + { + "need": "投影按属性选列的解释", + "chunk_ids": [ + "database-005:s15:c01" + ] + } + ], + "reference_answer": "投影选列,选择按谓词筛行;只保留学号和姓名是投影。", + "verification": "讲义给出垂直分割题及B项解析,按关系代数定义复核。", + "pitfalls": [ + "把选择说成选列", + "把投影说成筛选满足条件的行" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "db-projection-2", + "topic_id": "db-projection", + "course_id": "database", + "scenario": "concept", + "query": "只保留学生表的学号和姓名,应该用选择还是投影?", + "split": "dev", + "source_family": "database-001+database-004+database-005", + "evidence_groups": [ + { + "need": "投影按属性选列的解释", + "chunk_ids": [ + "database-005:s15:c01" + ] + } + ], + "reference_answer": "投影选列,选择按谓词筛行;只保留学号和姓名是投影。", + "verification": "讲义给出垂直分割题及B项解析,按关系代数定义复核。", + "pitfalls": [ + "把选择说成选列", + "把投影说成筛选满足条件的行" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "db-having-1", + "topic_id": "db-having", + "course_id": "database", + "scenario": "concept", + "query": "SQL中HAVING筛选的是行还是分组?", + "split": "dev", + "source_family": "database-001+database-004+database-005", + "evidence_groups": [ + { + "need": "HAVING分组过滤", + "chunk_ids": [ + "database-005:s19:c01", + "database-004:p3:q-database-004-q27:c01", + "database-001:q-database-001-q2:c01" + ] + } + ], + "reference_answer": "HAVING对分组聚合结果过滤,如GROUP BY 学号 HAVING AVG(成绩)>=85;不是要求每科成绩均达到85。", + "verification": "讲义解析、选择题、完整AVG查询相互对照;三种证据是可替代项,不要求全部命中。", + "pitfalls": [ + "每科都必须达到85", + "HAVING只用于筛原始单行" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "db-having-2", + "topic_id": "db-having", + "course_id": "database", + "scenario": "concept", + "query": "按学生分组算平均成绩后,只留下均分至少85的组,该在哪里写条件?", + "split": "dev", + "source_family": "database-001+database-004+database-005", + "evidence_groups": [ + { + "need": "HAVING分组过滤", + "chunk_ids": [ + "database-005:s19:c01", + "database-004:p3:q-database-004-q27:c01", + "database-001:q-database-001-q2:c01" + ] + } + ], + "reference_answer": "HAVING对分组聚合结果过滤,如GROUP BY 学号 HAVING AVG(成绩)>=85;不是要求每科成绩均达到85。", + "verification": "讲义解析、选择题、完整AVG查询相互对照;三种证据是可替代项,不要求全部命中。", + "pitfalls": [ + "每科都必须达到85", + "HAVING只用于筛原始单行" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "db-null-1", + "topic_id": "db-null", + "course_id": "database", + "scenario": "mistake", + "query": "我写WHERE AGE = NULL查缺失年龄,为什么不对?", + "split": "dev", + "source_family": "database-001+database-004+database-005", + "evidence_groups": [ + { + "need": "NULL比较的讲义解释", + "chunk_ids": [ + "database-005:s19:c01" + ] + } + ], + "reference_answer": "使用AGE IS NULL;普通等号与NULL比较得到UNKNOWN,WHERE不会保留该结果。", + "verification": "讲义明确指出AGE=NULL错误;用SQL三值逻辑复核。", + "pitfalls": [ + "AGE=NULL可以正确筛出缺失值", + "用AGE=0替代缺失值判断" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "db-null-2", + "topic_id": "db-null", + "course_id": "database", + "scenario": "mistake", + "query": "筛出没有填写年龄的学生,应该写等于NULL还是IS NULL?", + "split": "dev", + "source_family": "database-001+database-004+database-005", + "evidence_groups": [ + { + "need": "NULL比较的讲义解释", + "chunk_ids": [ + "database-005:s19:c01" + ] + } + ], + "reference_answer": "使用AGE IS NULL;普通等号与NULL比较得到UNKNOWN,WHERE不会保留该结果。", + "verification": "讲义明确指出AGE=NULL错误;用SQL三值逻辑复核。", + "pitfalls": [ + "AGE=NULL可以正确筛出缺失值", + "用AGE=0替代缺失值判断" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "os-states-1", + "topic_id": "os-states", + "course_id": "operating_systems", + "scenario": "concept", + "query": "进程就绪和阻塞有什么区别?I/O完成后会直接运行吗?", + "split": "validation", + "source_family": "operating-systems-028", + "evidence_groups": [ + { + "need": "就绪、阻塞及转换", + "chunk_ids": [ + "operating-systems-028:h-os复习指导:c03" + ] + } + ], + "reference_answer": "就绪具备运行条件但等待CPU,阻塞等待外部事件;I/O完成后通常阻塞转就绪,再由调度选中进入运行。", + "verification": "讲义列出三个状态和转换;修正明显排字错误“单位分到CPU”为“未分到CPU”。", + "pitfalls": [ + "阻塞等同于等待CPU", + "I/O完成必然立即获得CPU" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "os-states-2", + "topic_id": "os-states", + "course_id": "operating_systems", + "scenario": "concept", + "query": "一个进程只是没拿到CPU,另一个在等磁盘读完,它们是同一种状态吗?", + "split": "validation", + "source_family": "operating-systems-028", + "evidence_groups": [ + { + "need": "就绪、阻塞及转换", + "chunk_ids": [ + "operating-systems-028:h-os复习指导:c03" + ] + } + ], + "reference_answer": "就绪具备运行条件但等待CPU,阻塞等待外部事件;I/O完成后通常阻塞转就绪,再由调度选中进入运行。", + "verification": "讲义列出三个状态和转换;修正明显排字错误“单位分到CPU”为“未分到CPU”。", + "pitfalls": [ + "阻塞等同于等待CPU", + "I/O完成必然立即获得CPU" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "os-producer-1", + "topic_id": "os-producer", + "course_id": "operating_systems", + "scenario": "mistake", + "query": "有界缓冲区生产者能先P(mutex)再P(empty)吗?", + "split": "validation", + "source_family": "operating-systems-001", + "evidence_groups": [ + { + "need": "生产者消费者信号量顺序", + "chunk_ids": [ + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~3-参考答案与解析:c01" + ] + } + ], + "reference_answer": "应先P(empty)再P(mutex)。满缓冲区时,反过来会让生产者持锁等空位,消费者拿不到锁无法腾空位,造成死锁。", + "verification": "原文代码给出正确顺序;构造满缓冲区的执行交错验证错误顺序。标题路径串入Page Fault,按正文而非上级标题判断相关性。", + "pitfalls": [ + "PV操作可以任意交换", + "只要有互斥锁就不会死锁" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "os-producer-2", + "topic_id": "os-producer", + "course_id": "operating_systems", + "scenario": "mistake", + "query": "缓冲区满时,生产者拿着互斥锁等空位,消费者还能取走数据吗?", + "split": "validation", + "source_family": "operating-systems-001", + "evidence_groups": [ + { + "need": "生产者消费者信号量顺序", + "chunk_ids": [ + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~3-参考答案与解析:c01" + ] + } + ], + "reference_answer": "应先P(empty)再P(mutex)。满缓冲区时,反过来会让生产者持锁等空位,消费者拿不到锁无法腾空位,造成死锁。", + "verification": "原文代码给出正确顺序;构造满缓冲区的执行交错验证错误顺序。标题路径串入Page Fault,按正文而非上级标题判断相关性。", + "pitfalls": [ + "PV操作可以任意交换", + "只要有互斥锁就不会死锁" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "os-deadlock-1", + "topic_id": "os-deadlock", + "course_id": "operating_systems", + "scenario": "concept", + "query": "死锁的四个必要条件是什么?统一资源申请顺序破坏了哪一个?", + "split": "dev", + "source_family": "operating-systems-005", + "evidence_groups": [ + { + "need": "死锁条件", + "chunk_ids": [ + "operating-systems-005:p1:c01" + ] + } + ], + "reference_answer": "互斥、请求并保持、不可剥夺、循环等待;对这组锁统一全局获取顺序破坏循环等待。", + "verification": "只采用该页清晰的死锁定义段;顺序获取的结论通过有向等待环不可能严格递增复核,不采纳该页其他未经核验说法。", + "pitfalls": [ + "统一顺序破坏互斥条件", + "两把锁有顺序就能防止系统中的所有其他死锁" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "os-deadlock-2", + "topic_id": "os-deadlock", + "course_id": "operating_systems", + "scenario": "concept", + "query": "所有线程都先拿A锁再拿B锁,为什么能避免这两把锁形成循环等待?", + "split": "dev", + "source_family": "operating-systems-005", + "evidence_groups": [ + { + "need": "死锁条件", + "chunk_ids": [ + "operating-systems-005:p1:c01" + ] + } + ], + "reference_answer": "互斥、请求并保持、不可剥夺、循环等待;对这组锁统一全局获取顺序破坏循环等待。", + "verification": "只采用该页清晰的死锁定义段;顺序获取的结论通过有向等待环不可能严格递增复核,不采纳该页其他未经核验说法。", + "pitfalls": [ + "统一顺序破坏互斥条件", + "两把锁有顺序就能防止系统中的所有其他死锁" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "compiler-left-recursion-1", + "topic_id": "compiler-left-recursion", + "course_id": "compiler_principles", + "scenario": "problem", + "query": "T→T,S | S 如何消除直接左递归?", + "split": "validation", + "source_family": "compiler-principles-001", + "evidence_groups": [ + { + "need": "该文法左递归消除结果", + "chunk_ids": [ + "compiler-principles-001:s27:c01" + ] + } + ], + "reference_answer": "T→S T′,T′→,S T′ | ε。以S开头,再接零次或多次逗号加S。", + "verification": "原文给出转换;通过两种文法都生成S(,S)*复核,问题不使用原文中含义不明确的∧符号。", + "pitfalls": [ + "忘记ε产生式", + "改写后仍然T→T开头" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "compiler-left-recursion-2", + "topic_id": "compiler-left-recursion", + "course_id": "compiler_principles", + "scenario": "problem", + "query": "递归下降遇到T先调用自己再读逗号的文法会卡住,怎么改写?原式T→T,S | S。", + "split": "validation", + "source_family": "compiler-principles-001", + "evidence_groups": [ + { + "need": "该文法左递归消除结果", + "chunk_ids": [ + "compiler-principles-001:s27:c01" + ] + } + ], + "reference_answer": "T→S T′,T′→,S T′ | ε。以S开头,再接零次或多次逗号加S。", + "verification": "原文给出转换;通过两种文法都生成S(,S)*复核,问题不使用原文中含义不明确的∧符号。", + "pitfalls": [ + "忘记ε产生式", + "改写后仍然T→T开头" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "compiler-plan-1", + "topic_id": "compiler-plan", + "course_id": "compiler_principles", + "scenario": "review", + "query": "复习课里那道S→a | ∧ | (T)、T→T,S | S的预测分析题,应该按什么步骤做?这里只要步骤。", + "split": "validation", + "source_family": "compiler-principles-001", + "evidence_groups": [ + { + "need": "预测分析题的解题流程", + "chunk_ids": [ + "compiler-principles-001:s26:c01" + ] + } + ], + "reference_answer": "先消除左递归、提取左公共因子,再计算FIRST和FOLLOW,检查LL(1)条件,最后构造预测分析表或递归子程序;不能保证任意文法这样处理后都成为LL(1)。", + "verification": "讲义列出流程;任务限定步骤,不要求从存在字体歧义的∧推导具体集合。", + "pitfalls": [ + "保证任意文法都可变为LL(1)", + "在改写之前算好集合后直接沿用" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "compiler-plan-2", + "topic_id": "compiler-plan", + "course_id": "compiler_principles", + "scenario": "review", + "query": "面对需要改写文法并构造LL(1)分析表的大题,先算FIRST还是先消除左递归?", + "split": "validation", + "source_family": "compiler-principles-001", + "evidence_groups": [ + { + "need": "预测分析题的解题流程", + "chunk_ids": [ + "compiler-principles-001:s26:c01" + ] + } + ], + "reference_answer": "先消除左递归、提取左公共因子,再计算FIRST和FOLLOW,检查LL(1)条件,最后构造预测分析表或递归子程序;不能保证任意文法这样处理后都成为LL(1)。", + "verification": "讲义列出流程;任务限定步骤,不要求从存在字体歧义的∧推导具体集合。", + "pitfalls": [ + "保证任意文法都可变为LL(1)", + "在改写之前算好集合后直接沿用" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "network-ack-1", + "topic_id": "network-ack", + "course_id": "computer_networks", + "scenario": "concept", + "query": "TCP确认号为n到底表示收到了n,还是接下来想收到n?", + "split": "dev", + "source_family": "computer-networks-051", + "evidence_groups": [ + { + "need": "TCP累计确认号含义", + "chunk_ids": [ + "computer-networks-051:h-笔记:c10" + ] + } + ], + "reference_answer": "确认号n表示期望下一个字节序号为n,至n−1的字节已累计确认;确认号501包括对序号500的确认。ACK标志为1时确认字段有效。", + "verification": "原文给出n−1与n的明确关系;只评这一关系,不扩展为所有TCP细节。", + "pitfalls": [ + "确认号是最后收到的字节序号", + "按报文个数而不是字节编号解释" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "network-ack-2", + "topic_id": "network-ack", + "course_id": "computer_networks", + "scenario": "concept", + "query": "接收方回复ACK=501,发送方能理解为500之前的字节都确认了吗?", + "split": "dev", + "source_family": "computer-networks-051", + "evidence_groups": [ + { + "need": "TCP累计确认号含义", + "chunk_ids": [ + "computer-networks-051:h-笔记:c10" + ] + } + ], + "reference_answer": "确认号n表示期望下一个字节序号为n,至n−1的字节已累计确认;确认号501包括对序号500的确认。ACK标志为1时确认字段有效。", + "verification": "原文给出n−1与n的明确关系;只评这一关系,不扩展为所有TCP细节。", + "pitfalls": [ + "确认号是最后收到的字节序号", + "按报文个数而不是字节编号解释" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "network-napt-1", + "topic_id": "network-napt", + "course_id": "computer_networks", + "scenario": "evidence_bundle", + "query": "网络层大题中192.168.1.10:5000映射到202.1.1.1:8000,回包怎么还原?去8.8.8.8该选哪条路由?", + "split": "dev", + "source_family": "computer-networks-025", + "evidence_groups": [ + { + "need": "NAPT映射及两条路由题干", + "chunk_ids": [ + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四:c01" + ] + }, + { + "need": "还原与路由选择答案", + "chunk_ids": [ + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四~大题二-参考答案:c01" + ] + } + ], + "reference_answer": "服务器回包在公网侧目的为202.1.1.1:8000,转换后为192.168.1.10:5000;去8.8.8.8的出站包按/8选202.1.1.5,不选默认202.1.1.254。", + "verification": "题干与答案成对读取;原题背景把去服务器的包称作回包,按第3小问明确区分出站路由与回程NAPT,不能照抄方向混乱。", + "pitfalls": [ + "把回到内网的包继续发往8.8.8.8", + "以路由表出现先后代替最长前缀" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "network-napt-2", + "topic_id": "network-napt", + "course_id": "computer_networks", + "scenario": "evidence_bundle", + "query": "请找到NAPT网关那道题的题干和答案,解释回程端口还原以及/8为什么优先于默认路由。", + "split": "dev", + "source_family": "computer-networks-025", + "evidence_groups": [ + { + "need": "NAPT映射及两条路由题干", + "chunk_ids": [ + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四:c01" + ] + }, + { + "need": "还原与路由选择答案", + "chunk_ids": [ + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四~大题二-参考答案:c01" + ] + } + ], + "reference_answer": "服务器回包在公网侧目的为202.1.1.1:8000,转换后为192.168.1.10:5000;去8.8.8.8的出站包按/8选202.1.1.5,不选默认202.1.1.254。", + "verification": "题干与答案成对读取;原题背景把去服务器的包称作回包,按第3小问明确区分出站路由与回程NAPT,不能照抄方向混乱。", + "pitfalls": [ + "把回到内网的包继续发往8.8.8.8", + "以路由表出现先后代替最长前缀" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "testing-boundary-1", + "topic_id": "testing-boundary", + "course_id": "software_testing", + "scenario": "problem", + "query": "三个独立输入变量,健壮最坏情况边界值测试需要多少组?和健壮边界值有什么不同?", + "split": "dev", + "source_family": "software-testing-040", + "evidence_groups": [ + { + "need": "边界值四种计数模型", + "chunk_ids": [ + "software-testing-040:h-unit~第二章-软件测试方法~一-黑盒测试-重点:c01" + ] + } + ], + "reference_answer": "经典每变量七个互异代表值且无额外约束的模型下,健壮最坏情况为7³=343;健壮单故障假设边界值为6×3+1=19。", + "verification": "原文列出7^n与6n+1;按笛卡尔积和单变量变化两种构造独立复算。", + "pitfalls": [ + "把7^n写成7n", + "忽略跨变量约束仍断言任何实际系统必需343条" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "testing-boundary-2", + "topic_id": "testing-boundary", + "course_id": "software_testing", + "scenario": "problem", + "query": "每个输入都取七个含越界的代表值,再组合三个输入,是19组还是343组?", + "split": "dev", + "source_family": "software-testing-040", + "evidence_groups": [ + { + "need": "边界值四种计数模型", + "chunk_ids": [ + "software-testing-040:h-unit~第二章-软件测试方法~一-黑盒测试-重点:c01" + ] + } + ], + "reference_answer": "经典每变量七个互异代表值且无额外约束的模型下,健壮最坏情况为7³=343;健壮单故障假设边界值为6×3+1=19。", + "verification": "原文列出7^n与6n+1;按笛卡尔积和单变量变化两种构造独立复算。", + "pitfalls": [ + "把7^n写成7n", + "忽略跨变量约束仍断言任何实际系统必需343条" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "testing-insurance-1", + "topic_id": "testing-insurance", + "course_id": "software_testing", + "scenario": "problem", + "query": "保险年龄1–18收费100,19–60收费200,61–150收费300,非整数或越界非法,怎么选等价类和边界测试?", + "split": "dev", + "source_family": "software-testing-040", + "evidence_groups": [ + { + "need": "保险年龄分段规则", + "chunk_ids": [ + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~题目:c01" + ] + } + ], + "reference_answer": "覆盖三个有效类及小于1、大于150、非整数的无效类;重点取0/1/2、17/18/19/20、59/60/61/62、149/150/151与非整数,允许不同等效测试设计,不强制唯一列表。", + "verification": "按题干逐段检查闭区间端点及预期收费,边界用例由规则推导。", + "pitfalls": [ + "年龄18与19收费相同", + "只测总区间两端遗漏内部收费分界", + "把非整数作为有效输入" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "testing-insurance-2", + "topic_id": "testing-insurance", + "course_id": "software_testing", + "scenario": "problem", + "query": "测保险系统只用年龄1、80、150够吗?1–18、19–60、61–150三档收费,输入必须是整数。", + "split": "dev", + "source_family": "software-testing-040", + "evidence_groups": [ + { + "need": "保险年龄分段规则", + "chunk_ids": [ + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~题目:c01" + ] + } + ], + "reference_answer": "覆盖三个有效类及小于1、大于150、非整数的无效类;重点取0/1/2、17/18/19/20、59/60/61/62、149/150/151与非整数,允许不同等效测试设计,不强制唯一列表。", + "verification": "按题干逐段检查闭区间端点及预期收费,边界用例由规则推导。", + "pitfalls": [ + "年龄18与19收费相同", + "只测总区间两端遗漏内部收费分界", + "把非整数作为有效输入" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "testing-branch-1", + "topic_id": "testing-branch", + "course_id": "software_testing", + "scenario": "concept", + "query": "判定覆盖能保证复合条件里的每个条件都独立影响结果吗?", + "split": "validation", + "source_family": "software-testing-045", + "evidence_groups": [ + { + "need": "分支覆盖与MC/DC的差异", + "chunk_ids": [ + "software-testing-045:h-unit~第八章-软件质量度量~三-软件度量方法~2.-覆盖率度量-测试充分性指标:c01" + ] + } + ], + "reference_answer": "不是。分支覆盖要求判定的各出口被执行;MC/DC还要求展示每个条件可独立影响判定结果。分支覆盖不能保证这一点。", + "verification": "对照表的定义;用复合判定各出口均执行但某条件始终固定的反例验证。", + "pitfalls": [ + "分支覆盖等同于MC/DC", + "分支覆盖保证所有条件组合" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "testing-branch-2", + "topic_id": "testing-branch", + "course_id": "software_testing", + "scenario": "concept", + "query": "if里有三个布尔条件,真假分支各走一次就算MC/DC了吗?", + "split": "validation", + "source_family": "software-testing-045", + "evidence_groups": [ + { + "need": "分支覆盖与MC/DC的差异", + "chunk_ids": [ + "software-testing-045:h-unit~第八章-软件质量度量~三-软件度量方法~2.-覆盖率度量-测试充分性指标:c01" + ] + } + ], + "reference_answer": "不是。分支覆盖要求判定的各出口被执行;MC/DC还要求展示每个条件可独立影响判定结果。分支覆盖不能保证这一点。", + "verification": "对照表的定义;用复合判定各出口均执行但某条件始终固定的反例验证。", + "pitfalls": [ + "分支覆盖等同于MC/DC", + "分支覆盖保证所有条件组合" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "ai-prepruning-1", + "topic_id": "ai-prepruning", + "course_id": "artificial_intelligence_intro", + "scenario": "concept", + "query": "决策树预剪枝为什么既能减少过拟合,又可能欠拟合?", + "split": "validation", + "source_family": "artificial-intelligence-intro-017", + "evidence_groups": [ + { + "need": "预剪枝的收益及贪心局限", + "chunk_ids": [ + "artificial-intelligence-intro-017:s27:c01" + ] + } + ], + "reference_answer": "提前停止可降低过拟合风险和训练测试开销;当前无收益的分裂可能为后续有效划分创造条件,贪心停止会错过它而欠拟合。", + "verification": "讲义直接解释因果链;措辞使用可能,避免把风险说成必然。", + "pitfalls": [ + "预剪枝一定提高泛化", + "预剪枝只能导致过拟合" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "ai-prepruning-2", + "topic_id": "ai-prepruning", + "course_id": "artificial_intelligence_intro", + "scenario": "concept", + "query": "某次分裂当下没提高验证表现就停止,会不会错过后续更好的树?", + "split": "validation", + "source_family": "artificial-intelligence-intro-017", + "evidence_groups": [ + { + "need": "预剪枝的收益及贪心局限", + "chunk_ids": [ + "artificial-intelligence-intro-017:s27:c01" + ] + } + ], + "reference_answer": "提前停止可降低过拟合风险和训练测试开销;当前无收益的分裂可能为后续有效划分创造条件,贪心停止会错过它而欠拟合。", + "verification": "讲义直接解释因果链;措辞使用可能,避免把风险说成必然。", + "pitfalls": [ + "预剪枝一定提高泛化", + "预剪枝只能导致过拟合" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "ai-consistent-1", + "topic_id": "ai-consistent", + "course_id": "artificial_intelligence_intro", + "scenario": "concept", + "query": "一致启发为什么能让A*像Dijkstra一样工作?请解释重赋权。", + "split": "validation", + "source_family": "artificial-intelligence-intro-008", + "evidence_groups": [ + { + "need": "一致启发与非负重赋权证明", + "chunk_ids": [ + "artificial-intelligence-intro-008:h-第3章-搜索探寻与问题求解:c04" + ] + } + ], + "reference_answer": "由一致性移项得c′≥0;路径代价相消为g′(n)=g(n)−h(s)+h(n),故f(n)=g′(n)+h(s),排序差常数。在标准最短路搜索条件下对应非负边上的Dijkstra。", + "verification": "逐项代数相消;同一目标比较路径,不把可容性无条件等同于图搜索不重开节点时的最优性。", + "pitfalls": [ + "一致性允许负的重赋权边", + "只要可容就无需考虑CLOSED节点重开" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "ai-consistent-2", + "topic_id": "ai-consistent", + "course_id": "artificial_intelligence_intro", + "scenario": "concept", + "query": "如果h(n)≤c(n,n′)+h(n′),为什么c′=c−h(n)+h(n′)不会是负数?", + "split": "validation", + "source_family": "artificial-intelligence-intro-008", + "evidence_groups": [ + { + "need": "一致启发与非负重赋权证明", + "chunk_ids": [ + "artificial-intelligence-intro-008:h-第3章-搜索探寻与问题求解:c04" + ] + } + ], + "reference_answer": "由一致性移项得c′≥0;路径代价相消为g′(n)=g(n)−h(s)+h(n),故f(n)=g′(n)+h(s),排序差常数。在标准最短路搜索条件下对应非负边上的Dijkstra。", + "verification": "逐项代数相消;同一目标比较路径,不把可容性无条件等同于图搜索不重开节点时的最优性。", + "pitfalls": [ + "一致性允许负的重赋权边", + "只要可容就无需考虑CLOSED节点重开" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "org-cache-1", + "topic_id": "org-cache", + "course_id": "computer_organization", + "scenario": "concept", + "query": "Cache为什么能缓解CPU与主存速度不匹配?", + "split": "dev", + "source_family": "computer-organization-026", + "evidence_groups": [ + { + "need": "Cache作用与时间空间局部性", + "chunk_ids": [ + "computer-organization-026:s76:c01" + ] + } + ], + "reference_answer": "Cache位于CPU与主存之间,利用时间局部性和空间局部性,让重复或邻近访问有机会由更快存储满足;效果取决于命中率,不能保证所有访问变快。", + "verification": "讲义给出层次、速度及局部性;命中条件为基本原理推导。", + "pitfalls": [ + "Cache越小越快所以任意小容量都足够", + "所有程序都必然有同样收益" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "org-cache-2", + "topic_id": "org-cache", + "course_id": "computer_organization", + "scenario": "concept", + "query": "只加一小块高速缓存为什么有用?它利用程序访问的什么特点?", + "split": "dev", + "source_family": "computer-organization-026", + "evidence_groups": [ + { + "need": "Cache作用与时间空间局部性", + "chunk_ids": [ + "computer-organization-026:s76:c01" + ] + } + ], + "reference_answer": "Cache位于CPU与主存之间,利用时间局部性和空间局部性,让重复或邻近访问有机会由更快存储满足;效果取决于命中率,不能保证所有访问变快。", + "verification": "讲义给出层次、速度及局部性;命中条件为基本原理推导。", + "pitfalls": [ + "Cache越小越快所以任意小容量都足够", + "所有程序都必然有同样收益" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "web-margin-1", + "topic_id": "web-margin", + "course_id": "web_frontend_fundamentals", + "scenario": "concept", + "query": "CSS只想增加元素下面的外边距,应该改哪个属性?", + "split": "validation", + "source_family": "web-frontend-fundamentals-014", + "evidence_groups": [ + { + "need": "margin各方向属性", + "chunk_ids": [ + "web-frontend-fundamentals-014:s32:c01" + ] + } + ], + "reference_answer": "用margin-bottom指定下外边距;margin是四方向简写。实际块间距离还可能涉及外边距折叠,不要求在此简单问题展开全部布局规则。", + "verification": "属性表清晰;只核验方向语义,不采纳同一讲义其他页有误的选择器规则。", + "pitfalls": [ + "用padding-bottom等同于外边距", + "margin只影响底部" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "web-margin-2", + "topic_id": "web-margin", + "course_id": "web_frontend_fundamentals", + "scenario": "concept", + "query": "不想动上左右间距,只想让一个块和下一个块离远一点,margin还是margin-bottom?", + "split": "validation", + "source_family": "web-frontend-fundamentals-014", + "evidence_groups": [ + { + "need": "margin各方向属性", + "chunk_ids": [ + "web-frontend-fundamentals-014:s32:c01" + ] + } + ], + "reference_answer": "用margin-bottom指定下外边距;margin是四方向简写。实际块间距离还可能涉及外边距折叠,不要求在此简单问题展开全部布局规则。", + "verification": "属性表清晰;只核验方向语义,不采纳同一讲义其他页有误的选择器规则。", + "pitfalls": [ + "用padding-bottom等同于外边距", + "margin只影响底部" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "discrete-partition-1", + "topic_id": "discrete-partition", + "course_id": "discrete_mathematics", + "scenario": "problem", + "query": "A={a,b,c,d},等价关系R={(a,b),(b,a),(c,d),(d,c)}∪I_A,对应什么划分?", + "split": "dev", + "source_family": "discrete-mathematics-003", + "evidence_groups": [ + { + "need": "等价关系与划分实例", + "chunk_ids": [ + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q20:c01" + ] + } + ], + "reference_answer": "划分为{{a,b},{c,d}};[a]=[b]={a,b},[c]=[d]={c,d}。", + "verification": "题干与D项可读;逐对检查关系并独立列出等价类。", + "pitfalls": [ + "四个单元素集合", + "把所有四个元素放入同一类" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "discrete-partition-2", + "topic_id": "discrete-partition", + "course_id": "discrete_mathematics", + "scenario": "problem", + "query": "a和b等价,c和d等价,每个元素也与自己等价,为什么不是四个单独的等价类?", + "split": "dev", + "source_family": "discrete-mathematics-003", + "evidence_groups": [ + { + "need": "等价关系与划分实例", + "chunk_ids": [ + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q20:c01" + ] + } + ], + "reference_answer": "划分为{{a,b},{c,d}};[a]=[b]={a,b},[c]=[d]={c,d}。", + "verification": "题干与D项可读;逐对检查关系并独立列出等价类。", + "pitfalls": [ + "四个单元素集合", + "把所有四个元素放入同一类" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "electrical-plan-1", + "topic_id": "electrical-plan", + "course_id": "electrical_engineering", + "scenario": "review", + "query": "电路复习大纲里一阶暂态分析要掌握哪三个量?我想先按它们安排练习。", + "split": "dev", + "source_family": "electrical-engineering-009", + "evidence_groups": [ + { + "need": "一阶暂态三要素要求", + "chunk_ids": [ + "electrical-engineering-009:h-电路与电子技术-复习大纲:c01" + ] + } + ], + "reference_answer": "初始值、稳态值、时间常数;先练换路初始值,再练稳态电路与时间常数,最后组合一阶响应。顺序是教学建议,不是声称大纲指定了唯一顺序。", + "verification": "仅使用该长段中第3项明确列举的三要素;不假定其他年份考核分值或必考题。", + "pitfalls": [ + "把电压电流电阻当成三要素", + "断言这道题今年必考" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "electrical-plan-2", + "topic_id": "electrical-plan", + "course_id": "electrical_engineering", + "scenario": "review", + "query": "复习RC/RL一阶暂态时,初始值、最终值和变化快慢分别对应大纲中的什么?", + "split": "dev", + "source_family": "electrical-engineering-009", + "evidence_groups": [ + { + "need": "一阶暂态三要素要求", + "chunk_ids": [ + "electrical-engineering-009:h-电路与电子技术-复习大纲:c01" + ] + } + ], + "reference_answer": "初始值、稳态值、时间常数;先练换路初始值,再练稳态电路与时间常数,最后组合一阶响应。顺序是教学建议,不是声称大纲指定了唯一顺序。", + "verification": "仅使用该长段中第3项明确列举的三要素;不假定其他年份考核分值或必考题。", + "pitfalls": [ + "把电压电流电阻当成三要素", + "断言这道题今年必考" + ], + "external_reference": null, + "verified_values": null + }, + { + "case_id": "ds-source-error-1", + "topic_id": "ds-source-error", + "course_id": "data_structure", + "scenario": "source_correction", + "query": "资料说切换到std::sort就确保排序稳定,这句话对吗?", + "split": "dev", + "source_family": "data-structure-001", + "evidence_groups": [ + { + "need": "待纠正的原始说法", + "chunk_ids": [ + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c03" + ] + } + ], + "reference_answer": "该说法不成立。std::sort不保证等价元素相对顺序;std::stable_sort提供稳定性保证。资料的速度波动稳定与排序算法的稳定性不是一个概念。", + "verification": "读到原文错误陈述后查C++工作草案,stable_sort明确标为Stable,sort没有该保证;错误片段只作纠错对象。", + "pitfalls": [ + "因为有引用所以照抄std::sort稳定", + "将耗时稳定当作等键顺序稳定" + ], + "external_reference": "https://eel.is/c++draft/alg.sort", + "verified_values": null + }, + { + "case_id": "ds-source-error-2", + "topic_id": "ds-source-error", + "course_id": "data_structure", + "scenario": "source_correction", + "query": "相同分数的学生必须保留原先先后顺序,笔记建议用std::sort,我能直接照做吗?", + "split": "dev", + "source_family": "data-structure-001", + "evidence_groups": [ + { + "need": "待纠正的原始说法", + "chunk_ids": [ + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c03" + ] + } + ], + "reference_answer": "该说法不成立。std::sort不保证等价元素相对顺序;std::stable_sort提供稳定性保证。资料的速度波动稳定与排序算法的稳定性不是一个概念。", + "verification": "读到原文错误陈述后查C++工作草案,stable_sort明确标为Stable,sort没有该保证;错误片段只作纠错对象。", + "pitfalls": [ + "因为有引用所以照抄std::sort稳定", + "将耗时稳定当作等键顺序稳定" + ], + "external_reference": "https://eel.is/c++draft/alg.sort", + "verified_values": null + } + ] +} diff --git a/apps/scut-senior/resources/evaluation/reviewed-v2/scenarios.json b/apps/scut-senior/resources/evaluation/reviewed-v2/scenarios.json new file mode 100644 index 00000000..21ec3640 --- /dev/null +++ b/apps/scut-senior/resources/evaluation/reviewed-v2/scenarios.json @@ -0,0 +1,910 @@ +{ + "contract_version": "v1", + "dataset_status": "source_reviewed_authored_scenarios", + "corpus_version": "corpus-c1513a68ccd7-b0_2_0-m1200-wworkflow-contract-v1-ooutline-none-v1-ebge-small-zh-v1.5", + "quality_requires_review": true, + "notes": "22 authored cases, not student logs. Multiturn executes actual first responses. Expected fields check mechanics only; no model output was used to tune labels.", + "cases": [ + { + "case_id": "reviewed-la-diagonalization", + "category": "concept", + "course_id": "linear_algebra", + "course_scope": "single", + "allowed_course_ids": [], + "workflow_type": "knowledge_qa", + "knowledge_scope": "course_first", + "turns": [ + { + "role": "user", + "content": "矩阵可对角化的充要条件是什么?为什么特征值互不相同只是充分条件?" + } + ], + "expected": { + "answer_status": "answered", + "requires_citation": true, + "allows_general": true + }, + "quality_rubric": { + "topic_id": "la-diagonalization", + "reference_answer": "在讨论的数域内,n阶矩阵可对角化当且仅当有n个线性无关特征向量;n个不同特征值是充分条件而非必要条件。单位矩阵只有一个不同特征值但本身为对角矩阵。", + "evidence_groups": [ + { + "need": "可对角化的充要条件", + "chunk_ids": [ + "linear-algebra-012:p2:q-linear-algebra-012-q10:c01" + ] + } + ], + "verification": "原文选择题第4题的B项给出条件;单位矩阵作为独立反例。内部q10不是试卷第10题。", + "must_not_claim": [ + "有重根必不可对角化", + "n个互不相同的特征向量就足够,无需线性无关" + ], + "external_reference": null, + "grading": "Review correctness, requested help level, evidence support and task completion separately. Contract pass is not a quality pass; equivalent reasoning is acceptable." + } + }, + { + "case_id": "reviewed-db-having", + "category": "concept", + "course_id": "database", + "course_scope": "single", + "allowed_course_ids": [], + "workflow_type": "knowledge_qa", + "knowledge_scope": "course_first", + "turns": [ + { + "role": "user", + "content": "SQL中HAVING筛选的是行还是分组?" + } + ], + "expected": { + "answer_status": "answered", + "requires_citation": true, + "allows_general": true + }, + "quality_rubric": { + "topic_id": "db-having", + "reference_answer": "HAVING对分组聚合结果过滤,如GROUP BY 学号 HAVING AVG(成绩)>=85;不是要求每科成绩均达到85。", + "evidence_groups": [ + { + "need": "HAVING分组过滤", + "chunk_ids": [ + "database-005:s19:c01", + "database-004:p3:q-database-004-q27:c01", + "database-001:q-database-001-q2:c01" + ] + } + ], + "verification": "讲义解析、选择题、完整AVG查询相互对照;三种证据是可替代项,不要求全部命中。", + "must_not_claim": [ + "每科都必须达到85", + "HAVING只用于筛原始单行" + ], + "external_reference": null, + "grading": "Review correctness, requested help level, evidence support and task completion separately. Contract pass is not a quality pass; equivalent reasoning is acceptable." + } + }, + { + "case_id": "reviewed-os-states", + "category": "concept", + "course_id": "operating_systems", + "course_scope": "single", + "allowed_course_ids": [], + "workflow_type": "knowledge_qa", + "knowledge_scope": "course_first", + "turns": [ + { + "role": "user", + "content": "进程就绪和阻塞有什么区别?I/O完成后会直接运行吗?" + } + ], + "expected": { + "answer_status": "answered", + "requires_citation": true, + "allows_general": true + }, + "quality_rubric": { + "topic_id": "os-states", + "reference_answer": "就绪具备运行条件但等待CPU,阻塞等待外部事件;I/O完成后通常阻塞转就绪,再由调度选中进入运行。", + "evidence_groups": [ + { + "need": "就绪、阻塞及转换", + "chunk_ids": [ + "operating-systems-028:h-os复习指导:c03" + ] + } + ], + "verification": "讲义列出三个状态和转换;修正明显排字错误“单位分到CPU”为“未分到CPU”。", + "must_not_claim": [ + "阻塞等同于等待CPU", + "I/O完成必然立即获得CPU" + ], + "external_reference": null, + "grading": "Review correctness, requested help level, evidence support and task completion separately. Contract pass is not a quality pass; equivalent reasoning is acceptable." + } + }, + { + "case_id": "reviewed-network-ack", + "category": "concept", + "course_id": "computer_networks", + "course_scope": "single", + "allowed_course_ids": [], + "workflow_type": "knowledge_qa", + "knowledge_scope": "course_first", + "turns": [ + { + "role": "user", + "content": "TCP确认号为n到底表示收到了n,还是接下来想收到n?" + } + ], + "expected": { + "answer_status": "answered", + "requires_citation": true, + "allows_general": true + }, + "quality_rubric": { + "topic_id": "network-ack", + "reference_answer": "确认号n表示期望下一个字节序号为n,至n−1的字节已累计确认;确认号501包括对序号500的确认。ACK标志为1时确认字段有效。", + "evidence_groups": [ + { + "need": "TCP累计确认号含义", + "chunk_ids": [ + "computer-networks-051:h-笔记:c10" + ] + } + ], + "verification": "原文给出n−1与n的明确关系;只评这一关系,不扩展为所有TCP细节。", + "must_not_claim": [ + "确认号是最后收到的字节序号", + "按报文个数而不是字节编号解释" + ], + "external_reference": null, + "grading": "Review correctness, requested help level, evidence support and task completion separately. Contract pass is not a quality pass; equivalent reasoning is acceptable." + } + }, + { + "case_id": "reviewed-ai-prepruning", + "category": "concept", + "course_id": "artificial_intelligence_intro", + "course_scope": "single", + "allowed_course_ids": [], + "workflow_type": "knowledge_qa", + "knowledge_scope": "course_first", + "turns": [ + { + "role": "user", + "content": "决策树预剪枝为什么既能减少过拟合,又可能欠拟合?" + } + ], + "expected": { + "answer_status": "answered", + "requires_citation": true, + "allows_general": true + }, + "quality_rubric": { + "topic_id": "ai-prepruning", + "reference_answer": "提前停止可降低过拟合风险和训练测试开销;当前无收益的分裂可能为后续有效划分创造条件,贪心停止会错过它而欠拟合。", + "evidence_groups": [ + { + "need": "预剪枝的收益及贪心局限", + "chunk_ids": [ + "artificial-intelligence-intro-017:s27:c01" + ] + } + ], + "verification": "讲义直接解释因果链;措辞使用可能,避免把风险说成必然。", + "must_not_claim": [ + "预剪枝一定提高泛化", + "预剪枝只能导致过拟合" + ], + "external_reference": null, + "grading": "Review correctness, requested help level, evidence support and task completion separately. Contract pass is not a quality pass; equivalent reasoning is acceptable." + } + }, + { + "case_id": "reviewed-ds-source-error", + "category": "source_correction", + "course_id": "data_structure", + "course_scope": "single", + "allowed_course_ids": [], + "workflow_type": "knowledge_qa", + "knowledge_scope": "course_first", + "turns": [ + { + "role": "user", + "content": "资料说切换到std::sort就确保排序稳定,这句话对吗?" + } + ], + "expected": { + "answer_status": "answered", + "requires_citation": true, + "allows_general": true + }, + "quality_rubric": { + "topic_id": "ds-source-error", + "reference_answer": "该说法不成立。std::sort不保证等价元素相对顺序;std::stable_sort提供稳定性保证。资料的速度波动稳定与排序算法的稳定性不是一个概念。", + "evidence_groups": [ + { + "need": "待纠正的原始说法", + "chunk_ids": [ + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c03" + ] + } + ], + "verification": "读到原文错误陈述后查C++工作草案,stable_sort明确标为Stable,sort没有该保证;错误片段只作纠错对象。", + "must_not_claim": [ + "因为有引用所以照抄std::sort稳定", + "将耗时稳定当作等键顺序稳定" + ], + "external_reference": "https://eel.is/c++draft/alg.sort", + "grading": "Review correctness, requested help level, evidence support and task completion separately. Contract pass is not a quality pass; equivalent reasoning is acceptable." + } + }, + { + "case_id": "reviewed-prob-t-symmetry", + "category": "problem", + "course_id": "probability_theory", + "course_scope": "single", + "allowed_course_ids": [], + "workflow_type": "problem_tutor", + "knowledge_scope": "course_first", + "turns": [ + { + "role": "user", + "content": "T服从t分布,若P(T>λ)=α,P(T<−λ)是多少?" + } + ], + "expected": { + "answer_status": "answered", + "requires_citation": true, + "allows_general": true + }, + "quality_rubric": { + "topic_id": "prob-t-symmetry", + "reference_answer": "P(T<−λ)=P(T>λ)=α,利用t密度关于0对称;不是α/2。", + "evidence_groups": [ + { + "need": "t分布双尾对称题", + "chunk_ids": [ + "probability-theory-010:q-probability-theory-010-q1:c01" + ] + } + ], + "verification": "可读题干与选项完整;独立通过对称性积分变量替换验证,不把前一道题的答案B错配到本题。", + "must_not_claim": [ + "把单侧概率再次除以2", + "把chunk开头上一题的B当作本题答案" + ], + "external_reference": null, + "grading": "Review correctness, requested help level, evidence support and task completion separately. Contract pass is not a quality pass; equivalent reasoning is acceptable." + } + }, + { + "case_id": "reviewed-prob-unbiased", + "category": "problem", + "course_id": "probability_theory", + "course_scope": "single", + "allowed_course_ids": [], + "workflow_type": "problem_tutor", + "knowledge_scope": "course_first", + "turns": [ + { + "role": "user", + "content": "独立同分布样本方差σ²>0,用权重(1/2,1/3,1/6)、(1/2,1/4,1/4)、(1/3,1/3,1/3)、(1/5,2/5,2/5)估计均值,哪个方差最小?" + } + ], + "expected": { + "answer_status": "answered", + "requires_citation": true, + "allows_general": true + }, + "quality_rubric": { + "topic_id": "prob-unbiased", + "reference_answer": "均无偏,因为权重和为1。方差分别为7σ²/18、3σ²/8、σ²/3、9σ²/25;第三种最小。", + "evidence_groups": [ + { + "need": "四种均值估计量的题目与解答", + "chunk_ids": [ + "probability-theory-010:q-probability-theory-010-q3:c01" + ] + } + ], + "verification": "按独立变量方差公式逐项平方求和复算;σ²>0避免零方差时无严格优劣。", + "must_not_claim": [ + "权重和相同所以方差相同", + "漏掉独立性条件" + ], + "external_reference": null, + "grading": "Review correctness, requested help level, evidence support and task completion separately. Contract pass is not a quality pass; equivalent reasoning is acceptable." + } + }, + { + "case_id": "reviewed-algo-knapsack", + "category": "problem", + "course_id": "algorithm_design_and_analysis", + "course_scope": "single", + "allowed_course_ids": [], + "workflow_type": "problem_tutor", + "knowledge_scope": "course_first", + "turns": [ + { + "role": "user", + "content": "2023-2024 B卷容量22、体积3/5/7/8/9、价值4/6/7/9/10的0-1背包题怎么做?" + } + ], + "expected": { + "answer_status": "answered", + "requires_citation": true, + "allows_general": true + }, + "quality_rubric": { + "topic_id": "algo-knapsack", + "reference_answer": "最大价值25,选择第2、4、5件,体积5+8+9=22,价值6+9+10=25。第1、2、3、4件体积为23,不可行。", + "evidence_groups": [ + { + "need": "容量22的完整背包题干", + "chunk_ids": [ + "algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q13:c01" + ] + } + ], + "verification": "已独立穷举32个子集复核;题干提供实例,不提供现成答案。", + "must_not_claim": [ + "拿总体积23的组合", + "把0-1背包按分数背包贪心求解" + ], + "external_reference": null, + "grading": "Review correctness, requested help level, evidence support and task completion separately. Contract pass is not a quality pass; equivalent reasoning is acceptable." + } + }, + { + "case_id": "reviewed-testing-insurance", + "category": "problem", + "course_id": "software_testing", + "course_scope": "single", + "allowed_course_ids": [], + "workflow_type": "problem_tutor", + "knowledge_scope": "course_first", + "turns": [ + { + "role": "user", + "content": "保险年龄1–18收费100,19–60收费200,61–150收费300,非整数或越界非法,怎么选等价类和边界测试?" + } + ], + "expected": { + "answer_status": "answered", + "requires_citation": true, + "allows_general": true + }, + "quality_rubric": { + "topic_id": "testing-insurance", + "reference_answer": "覆盖三个有效类及小于1、大于150、非整数的无效类;重点取0/1/2、17/18/19/20、59/60/61/62、149/150/151与非整数,允许不同等效测试设计,不强制唯一列表。", + "evidence_groups": [ + { + "need": "保险年龄分段规则", + "chunk_ids": [ + "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~题目:c01" + ] + } + ], + "verification": "按题干逐段检查闭区间端点及预期收费,边界用例由规则推导。", + "must_not_claim": [ + "年龄18与19收费相同", + "只测总区间两端遗漏内部收费分界", + "把非整数作为有效输入" + ], + "external_reference": null, + "grading": "Review correctness, requested help level, evidence support and task completion separately. Contract pass is not a quality pass; equivalent reasoning is acceptable." + } + }, + { + "case_id": "reviewed-discrete-partition", + "category": "problem", + "course_id": "discrete_mathematics", + "course_scope": "single", + "allowed_course_ids": [], + "workflow_type": "problem_tutor", + "knowledge_scope": "course_first", + "turns": [ + { + "role": "user", + "content": "A={a,b,c,d},等价关系R={(a,b),(b,a),(c,d),(d,c)}∪I_A,对应什么划分?" + } + ], + "expected": { + "answer_status": "answered", + "requires_citation": true, + "allows_general": true + }, + "quality_rubric": { + "topic_id": "discrete-partition", + "reference_answer": "划分为{{a,b},{c,d}};[a]=[b]={a,b},[c]=[d]={c,d}。", + "evidence_groups": [ + { + "need": "等价关系与划分实例", + "chunk_ids": [ + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q20:c01" + ] + } + ], + "verification": "题干与D项可读;逐对检查关系并独立列出等价类。", + "must_not_claim": [ + "四个单元素集合", + "把所有四个元素放入同一类" + ], + "external_reference": null, + "grading": "Review correctness, requested help level, evidence support and task completion separately. Contract pass is not a quality pass; equivalent reasoning is acceptable." + } + }, + { + "case_id": "reviewed-network-napt", + "category": "evidence_bundle", + "course_id": "computer_networks", + "course_scope": "single", + "allowed_course_ids": [], + "workflow_type": "problem_tutor", + "knowledge_scope": "course_first", + "turns": [ + { + "role": "user", + "content": "网络层大题中192.168.1.10:5000映射到202.1.1.1:8000,回包怎么还原?去8.8.8.8该选哪条路由?" + } + ], + "expected": { + "answer_status": "answered", + "requires_citation": true, + "allows_general": true + }, + "quality_rubric": { + "topic_id": "network-napt", + "reference_answer": "服务器回包在公网侧目的为202.1.1.1:8000,转换后为192.168.1.10:5000;去8.8.8.8的出站包按/8选202.1.1.5,不选默认202.1.1.254。", + "evidence_groups": [ + { + "need": "NAPT映射及两条路由题干", + "chunk_ids": [ + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四:c01" + ] + }, + { + "need": "还原与路由选择答案", + "chunk_ids": [ + "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四~大题二-参考答案:c01" + ] + } + ], + "verification": "题干与答案成对读取;原题背景把去服务器的包称作回包,按第3小问明确区分出站路由与回程NAPT,不能照抄方向混乱。", + "must_not_claim": [ + "把回到内网的包继续发往8.8.8.8", + "以路由表出现先后代替最长前缀" + ], + "external_reference": null, + "grading": "Review correctness, requested help level, evidence support and task completion separately. Contract pass is not a quality pass; equivalent reasoning is acceptable." + } + }, + { + "case_id": "reviewed-db-null", + "category": "mistake", + "course_id": "database", + "course_scope": "single", + "allowed_course_ids": [], + "workflow_type": "mistake_review", + "knowledge_scope": "course_first", + "turns": [ + { + "role": "user", + "content": "我写WHERE AGE = NULL查缺失年龄,为什么不对?" + } + ], + "expected": { + "answer_status": "answered", + "requires_citation": true, + "allows_general": true + }, + "quality_rubric": { + "topic_id": "db-null", + "reference_answer": "使用AGE IS NULL;普通等号与NULL比较得到UNKNOWN,WHERE不会保留该结果。", + "evidence_groups": [ + { + "need": "NULL比较的讲义解释", + "chunk_ids": [ + "database-005:s19:c01" + ] + } + ], + "verification": "讲义明确指出AGE=NULL错误;用SQL三值逻辑复核。", + "must_not_claim": [ + "AGE=NULL可以正确筛出缺失值", + "用AGE=0替代缺失值判断" + ], + "external_reference": null, + "grading": "Review correctness, requested help level, evidence support and task completion separately. Contract pass is not a quality pass; equivalent reasoning is acceptable." + }, + "workflow_payload": { + "problem": "从Student表中筛出年龄AGE缺失的学生。", + "original_answer": "SELECT * FROM Student WHERE AGE = NULL;", + "reference_answer": null, + "review_focus": "指出错误原因并给出正确SQL" + } + }, + { + "case_id": "reviewed-os-producer", + "category": "mistake", + "course_id": "operating_systems", + "course_scope": "single", + "allowed_course_ids": [], + "workflow_type": "mistake_review", + "knowledge_scope": "course_first", + "turns": [ + { + "role": "user", + "content": "有界缓冲区生产者能先P(mutex)再P(empty)吗?" + } + ], + "expected": { + "answer_status": "answered", + "requires_citation": true, + "allows_general": true + }, + "quality_rubric": { + "topic_id": "os-producer", + "reference_answer": "应先P(empty)再P(mutex)。满缓冲区时,反过来会让生产者持锁等空位,消费者拿不到锁无法腾空位,造成死锁。", + "evidence_groups": [ + { + "need": "生产者消费者信号量顺序", + "chunk_ids": [ + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~3-参考答案与解析:c01" + ] + } + ], + "verification": "原文代码给出正确顺序;构造满缓冲区的执行交错验证错误顺序。标题路径串入Page Fault,按正文而非上级标题判断相关性。", + "must_not_claim": [ + "PV操作可以任意交换", + "只要有互斥锁就不会死锁" + ], + "external_reference": null, + "grading": "Review correctness, requested help level, evidence support and task completion separately. Contract pass is not a quality pass; equivalent reasoning is acceptable." + }, + "workflow_payload": { + "problem": "容量N的有界缓冲区,empty初值N,full初值0,mutex初值1;检查生产者的PV顺序。", + "original_answer": "生产者P(mutex); P(empty); 放入数据; V(full); V(mutex)。消费者先P(full)再P(mutex)。", + "reference_answer": null, + "review_focus": "缓冲区满时是否死锁;给出修正顺序" + } + }, + { + "case_id": "reviewed-electrical-plan", + "category": "review", + "course_id": "electrical_engineering", + "course_scope": "single", + "allowed_course_ids": [], + "workflow_type": "exam_review", + "knowledge_scope": "course_first", + "turns": [ + { + "role": "user", + "content": "电路复习大纲里一阶暂态分析要掌握哪三个量?我想先按它们安排练习。" + } + ], + "expected": { + "answer_status": "answered", + "requires_citation": true, + "allows_general": true, + "requires_exam_review_plan": true, + "review_path": "with_syllabus" + }, + "quality_rubric": { + "topic_id": "electrical-plan", + "reference_answer": "初始值、稳态值、时间常数;先练换路初始值,再练稳态电路与时间常数,最后组合一阶响应。顺序是教学建议,不是声称大纲指定了唯一顺序。", + "evidence_groups": [ + { + "need": "一阶暂态三要素要求", + "chunk_ids": [ + "electrical-engineering-009:h-电路与电子技术-复习大纲:c01" + ] + } + ], + "verification": "仅使用该长段中第3项明确列举的三要素;不假定其他年份考核分值或必考题。", + "must_not_claim": [ + "把电压电流电阻当成三要素", + "断言这道题今年必考" + ], + "external_reference": null, + "grading": "Review correctness, requested help level, evidence support and task completion separately. Contract pass is not a quality pass; equivalent reasoning is acceptable.", + "task_requirements": [ + "总时间不超过2小时", + "覆盖三要素", + "给出练习顺序并照顾两个薄弱点", + "不捏造必考概率" + ] + }, + "workflow_payload": { + "syllabus": "一阶电路暂态:初始值、稳态值、时间常数", + "exam_date": null, + "available_hours": 2, + "goals": [ + "能独立求出一阶电路暂态三要素" + ], + "weak_topics": [ + "换路初始值", + "时间常数" + ] + } + }, + { + "case_id": "reviewed-network-ack-followup", + "category": "concept", + "course_id": "computer_networks", + "course_scope": "single", + "allowed_course_ids": [], + "workflow_type": "knowledge_qa", + "knowledge_scope": "course_first", + "turns": [ + { + "role": "user", + "content": "TCP确认号为n表示什么?" + }, + { + "role": "user", + "content": "那如果它是501,500这个字节算收到了吗?" + } + ], + "expected": { + "answer_status": "answered", + "requires_citation": true, + "allows_general": true + }, + "quality_rubric": { + "topic_id": "network-ack", + "reference_answer": "确认号n表示期望下一个字节序号为n,至n−1的字节已累计确认;确认号501包括对序号500的确认。ACK标志为1时确认字段有效。", + "evidence_groups": [ + { + "need": "TCP累计确认号含义", + "chunk_ids": [ + "computer-networks-051:h-笔记:c10" + ] + } + ], + "verification": "原文给出n−1与n的明确关系;只评这一关系,不扩展为所有TCP细节。", + "must_not_claim": [ + "确认号是最后收到的字节序号", + "按报文个数而不是字节编号解释" + ], + "external_reference": null, + "grading": "Review correctness, requested help level, evidence support and task completion separately. Contract pass is not a quality pass; equivalent reasoning is acceptable.", + "task_requirements": [ + "使用前轮TCP语境解析它", + "明确500已确认,而501是期待的下一个字节" + ] + } + }, + { + "case_id": "reviewed-testing-boundary-followup", + "category": "problem", + "course_id": "software_testing", + "course_scope": "single", + "allowed_course_ids": [], + "workflow_type": "knowledge_qa", + "knowledge_scope": "course_first", + "turns": [ + { + "role": "user", + "content": "三个独立输入变量的健壮最坏情况边界值测试需要多少组?" + }, + { + "role": "user", + "content": "那为什么不是19?我把它和另一种方法混了。" + } + ], + "expected": { + "answer_status": "answered", + "requires_citation": true, + "allows_general": true + }, + "quality_rubric": { + "topic_id": "testing-boundary", + "reference_answer": "经典每变量七个互异代表值且无额外约束的模型下,健壮最坏情况为7³=343;健壮单故障假设边界值为6×3+1=19。", + "evidence_groups": [ + { + "need": "边界值四种计数模型", + "chunk_ids": [ + "software-testing-040:h-unit~第二章-软件测试方法~一-黑盒测试-重点:c01" + ] + } + ], + "verification": "原文列出7^n与6n+1;按笛卡尔积和单变量变化两种构造独立复算。", + "must_not_claim": [ + "把7^n写成7n", + "忽略跨变量约束仍断言任何实际系统必需343条" + ], + "external_reference": null, + "grading": "Review correctness, requested help level, evidence support and task completion separately. Contract pass is not a quality pass; equivalent reasoning is acceptable." + } + }, + { + "case_id": "reviewed-db-having-temporary", + "category": "concept", + "course_id": "database", + "course_scope": "single", + "allowed_course_ids": [], + "workflow_type": "temporary_material_reading", + "knowledge_scope": "course_first", + "turns": [ + { + "role": "user", + "content": "精读我贴的SQL规则,用成绩分组举例。" + } + ], + "expected": { + "answer_status": "answered", + "allows_general": true + }, + "quality_rubric": { + "topic_id": "db-having", + "reference_answer": "HAVING对分组聚合结果过滤,如GROUP BY 学号 HAVING AVG(成绩)>=85;不是要求每科成绩均达到85。", + "evidence_groups": [], + "verification": "输入材料自身完整;例如成绩80和90均分85,满足HAVING但不满足每门>=85。无需强制公共仓库引用。", + "must_not_claim": [ + "每科都必须达到85", + "HAVING只用于筛原始单行" + ], + "external_reference": null, + "grading": "Review correctness, requested help level, evidence support and task completion separately. Contract pass is not a quality pass; equivalent reasoning is acceptable." + }, + "workflow_payload": { + "material_title": "我整理的SQL规则", + "material_text": "WHERE在分组前筛选行;GROUP BY把行分组;HAVING在分组后筛选分组。例:GROUP BY 学号 HAVING AVG(成绩)>=85。", + "reading_goal": "用一个均分达到85但其中一门低于85的学生解释HAVING,区分它与每门成绩都达标。" + } + }, + { + "case_id": "reviewed-la-diagonalization-exact", + "category": "concept", + "course_id": "linear_algebra", + "course_scope": "single", + "allowed_course_ids": [], + "workflow_type": "problem_tutor", + "knowledge_scope": "course_first", + "turns": [ + { + "role": "user", + "content": "讲解2019-2020年度线性代数期末卷A的选择题第4题:相似于对角矩阵的条件。" + } + ], + "expected": { + "answer_status": "answered", + "requires_citation": true, + "allows_general": true + }, + "quality_rubric": { + "topic_id": "la-diagonalization", + "reference_answer": "在讨论的数域内,n阶矩阵可对角化当且仅当有n个线性无关特征向量;n个不同特征值是充分条件而非必要条件。单位矩阵只有一个不同特征值但本身为对角矩阵。", + "evidence_groups": [ + { + "need": "可对角化的充要条件", + "chunk_ids": [ + "linear-algebra-012:p2:q-linear-algebra-012-q10:c01" + ] + } + ], + "verification": "原文选择题第4题的B项给出条件;单位矩阵作为独立反例。内部q10不是试卷第10题。", + "must_not_claim": [ + "有重根必不可对角化", + "n个互不相同的特征向量就足够,无需线性无关" + ], + "external_reference": null, + "grading": "Review correctness, requested help level, evidence support and task completion separately. Contract pass is not a quality pass; equivalent reasoning is acceptable.", + "task_requirements": [ + "定位试卷选择题第4题,不能把内部q10当成试卷第10题", + "选B并解释线性无关特征向量条件" + ] + } + }, + { + "case_id": "reviewed-org-cache-cross", + "category": "concept", + "course_id": null, + "course_scope": "cross", + "allowed_course_ids": [ + "computer_organization", + "operating_systems" + ], + "workflow_type": "knowledge_qa", + "knowledge_scope": "course_first", + "turns": [ + { + "role": "user", + "content": "结合计组和操作系统资料,比较Cache与虚拟存储器利用局部性的共同点,以及它们解决的问题有何不同。" + } + ], + "expected": { + "answer_status": "answered", + "requires_citation": true, + "allows_general": true + }, + "quality_rubric": { + "topic_id": "org-cache", + "reference_answer": "两者都利用时间与空间局部性;Cache缓解CPU与主存速度差,虚拟存储器提供地址空间抽象并按需调页。Cache命中/失效与缺页异常不是同一层次的事件。", + "evidence_groups": [ + { + "need": "Cache作用与时间空间局部性", + "chunk_ids": [ + "computer-organization-026:s76:c01" + ] + }, + { + "need": "操作系统材料对时间空间局部性的定义", + "chunk_ids": [ + "operating-systems-005:p1:c01" + ] + } + ], + "verification": "读取两门课指定段落;OS答案页关于逻辑容量等于内外存之和的说法不作为标准答案,只使用其局部性定义。", + "must_not_claim": [ + "Cache等同于虚拟内存", + "逻辑地址空间容量无条件等于内存加外存容量" + ], + "external_reference": null, + "grading": "Review correctness, requested help level, evidence support and task completion separately. Contract pass is not a quality pass; equivalent reasoning is acceptable.", + "task_requirements": [ + "同时使用两门指定课程的相关证据", + "解释共同点与区别" + ] + } + }, + { + "case_id": "reviewed-la-diagonalization-missing-paper", + "category": "concept", + "course_id": "linear_algebra", + "course_scope": "single", + "allowed_course_ids": [], + "workflow_type": "knowledge_qa", + "knowledge_scope": "course_only", + "turns": [ + { + "role": "user", + "content": "请找出仓库中2023-2024年度线性代数期末卷A的原题和标准答案。" + } + ], + "expected": { + "allows_general": false + }, + "quality_rubric": { + "reference_answer": "当前绑定语料未收录该指定试卷,说明未找到,可以提出查找已收录年份或请用户提供试卷;不能虚构该卷原题和标准答案。", + "evidence_groups": [], + "verification": "对corpus-c1513a68ccd7-b0_2_0-m1200-wworkflow-contract-v1-ooutline-none-v1-ebge-small-zh-v1.5全部linear_algebra标题和正文查找2023-2024无匹配;仅确认指定资料未收录,不把候选是否为空当成正确性。", + "must_not_claim": [ + "编造2023-2024原题", + "用旧年份试卷冒充指定试卷" + ] + } + }, + { + "case_id": "reviewed-la-diagonalization-missing-work", + "category": "concept", + "course_id": "linear_algebra", + "course_scope": "single", + "allowed_course_ids": [], + "workflow_type": "knowledge_qa", + "knowledge_scope": "course_first", + "turns": [ + { + "role": "user", + "content": "我算这个矩阵的秩好像错了,能帮我找出哪一步错了吗?" + } + ], + "expected": { + "allows_general": true + }, + "quality_rubric": { + "reference_answer": "请用户提供矩阵和自己的计算步骤,可简短说明会检查行变换或主元;在输入到来前不能指出一个虚构的具体错误。", + "evidence_groups": [], + "verification": "当前输入没有矩阵也没有计算过程,无法推断具体哪一步出错。允许简短通用建议,不要求拒答模板。", + "must_not_claim": [ + "虚构用户矩阵", + "虚构具体错误步骤" + ] + } + } + ] +} diff --git a/apps/scut-senior/resources/evaluation/scut-real-corpus-cases.json b/apps/scut-senior/resources/evaluation/scut-real-corpus-cases.json index bfde1087..b8188544 100644 --- a/apps/scut-senior/resources/evaluation/scut-real-corpus-cases.json +++ b/apps/scut-senior/resources/evaluation/scut-real-corpus-cases.json @@ -357,5 +357,6 @@ "_note_6": "2026-08-23 稳定性收敛:(a) 检索网关无相关性分数地板,任意查询都返回候选,'证据不足'因此是模型对弱候选的自由裁量而非确定性结果——insufficient-evidence-001 改为仅断言 course_only 不泄漏 general 块,'无地板'作为管线发现登记为后续改进候选;(b) exam-review-fixture-001 增加试卷全名词面锚点以稳定检索命中。", "_note_8": "2026-08-23:exam-review-with-syllabus-001 为沿用的 fixture 味查询,三跑 1 绿;补试卷全名锚点稳定检索命中。", "_note_9": "2026-08-23:SCUT_SENIOR_RETRIEVAL_MIN_SCORE(默认6)落地后,本 case 重新纳入收敛集——'泛函分析'查询与线性代数语料零词面重叠,旧实现下弱候选照常返回导致拒答不可确定,新地板下应稳定返回 insufficient_evidence。", - "_note_10": "2026-08-23 检索分数地板配套修复后终态:(a) SCUT_SENIOR_RETRIEVAL_MIN_SCORE=6 落地,insufficient-evidence-001 重新纳入并在真实模型下确定性转绿;(b) 服务层新增 retrieval_context_carry 一次性重试(追问轮空结果时以最近用户轮补锚,Trace 留痕);(c) exam_review 无大纲路径检索查询追加计划引用的试卷标题锚点(heading-less 课程包知识点为空系设计行为,锚点取自客观题组清单)。末两轮真实模型结果 10/1/1 与 9/2/1,翻转例互不相同且本地复算两条查询均有候选(raw≥6)——判定为上游免费档网关回退的运行间方差,两例在修复后均至少一轮全绿;原始报告以最终文件为准。" -} \ No newline at end of file + "_note_10": "2026-08-23 检索分数地板配套修复后终态:(a) SCUT_SENIOR_RETRIEVAL_MIN_SCORE=6 落地,insufficient-evidence-001 重新纳入并在真实模型下确定性转绿;(b) 服务层新增 retrieval_context_carry 一次性重试(追问轮空结果时以最近用户轮补锚,Trace 留痕);(c) exam_review 无大纲路径检索查询追加计划引用的试卷标题锚点(heading-less 课程包知识点为空系设计行为,锚点取自客观题组清单)。末两轮真实模型结果 10/1/1 与 9/2/1,翻转例互不相同且本地复算两条查询均有候选(raw≥6)——判定为上游免费档网关回退的运行间方差,两例在修复后均至少一轮全绿;原始报告以最终文件为准。", + "_evaluation_status_2026_09_12": "historical_only; 12 cases reviewed in reviewed-v2/legacy-scenarios-audit.json; use reviewed-v2/scenarios.json for new quality experiments" +} diff --git a/apps/scut-senior/scripts/audit_evaluation_sets.py b/apps/scut-senior/scripts/audit_evaluation_sets.py new file mode 100644 index 00000000..6e35a7a6 --- /dev/null +++ b/apps/scut-senior/scripts/audit_evaluation_sets.py @@ -0,0 +1,90 @@ +"""Inventory legacy annotations against the active corpus; never certify semantics. + +Run from anywhere with the project Python. Output is deterministic and contains +one record per legacy query, including evidence fingerprints and reasons. +""" +from __future__ import annotations + +import hashlib +import json +import re +from collections import Counter +from pathlib import Path + +APP = Path(__file__).resolve().parents[1] +EVAL = APP / "resources/evaluation" + + +def read(path): + return json.loads(path.read_text(encoding="utf-8")) + + +def text_body(text): + return re.sub(r"!\[[^\]]*\]\([^)]*\)", "", text).strip() + + +def main(): + store = APP / ".local/corpus-store" + version = read(store / "active.json")["active_corpus_version"] + root = store / "candidates" / version / "courses" + records, courses = [], [] + for path in sorted((EVAL / "retrieval-golden").glob("*.json")): + data = read(path) + chunks = {c["chunk_id"]: c for c in read(root / path.name)["chunks"]} + courses.append({ + "course_id": data["course_id"], "legacy_queries": len(data["entries"]), + "chunks": len(chunks), + "image_only_chunks": sum(not text_body(c["text"]) for c in chunks.values()), + }) + for index, entry in enumerate(data["entries"], 1): + reasons = ["no_per_query_answer_or_relevance_rationale"] + if any(t in entry["query"] for t in ( + "主要讲什么", "应该从哪里开始", "哪些内容最重要", "里的方法或结论怎么理解", + "哪些概念容易混淆", "考试会怎么考", "应该先从哪一步入手", + )): + reasons.append("broad_or_template_query_with_specific_chunk_target") + evidence = [] + for cid in entry["expected_chunk_ids"]: + chunk = chunks.get(cid) + if chunk is None: + reasons.append("missing_chunk") + evidence.append({"chunk_id": cid, "exists": False}) + continue + body = text_body(chunk["text"]) + flags = [] + if not body: + flags.append("image_only_not_text_answer_evidence") + elif len(re.sub(r"\W", "", body)) < 40: + flags.append("short_text_requires_semantic_review") + if "\ufffd" in body: + flags.append("replacement_character_in_source") + reasons.extend(flags) + evidence.append({ + "chunk_id": cid, "exists": True, "source_id": chunk["source_id"], + "source_title": chunk["source_title"], "locator_type": chunk["locator_type"], + "locator_start": chunk["locator_start"], + "text_sha256": hashlib.sha256(chunk["text"].encode()).hexdigest(), + "text_excerpt": chunk["text"][:240], "flags": flags, + }) + records.append({ + "legacy_id": f"{data['course_id']}:{index:03d}", "course_id": data["course_id"], + "query": entry["query"], "original_note": entry.get("note"), + "corpus_version_matches": data.get("corpus_version") == version, + "disposition": "historical_only_not_certified", + "reasons": list(dict.fromkeys(reasons)), "evidence": evidence, + }) + findings = Counter(reason for record in records for reason in record["reasons"]) + report = { + "schema_version": "evaluation-annotation-audit-v1", "review_date": "2026-09-12", + "method": "Exhaustive reference/text-shape inventory; semantic examples reviewed by Codex in AUDIT.md. No blanket human/semantic certification.", + "corpus_version": version, "summary": {"queries": len(records), "courses": len(courses), "findings": dict(findings)}, + "courses": courses, "entries": records, + } + out = EVAL / "reviewed-v2/legacy-audit.json" + out.parent.mkdir(parents=True, exist_ok=True) + out.write_text(json.dumps(report, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") + print(json.dumps(report["summary"], ensure_ascii=True)) + + +if __name__ == "__main__": + main() diff --git a/apps/scut-senior/scripts/build_reviewed_evaluation.py b/apps/scut-senior/scripts/build_reviewed_evaluation.py new file mode 100644 index 00000000..8686f5cb --- /dev/null +++ b/apps/scut-senior/scripts/build_reviewed_evaluation.py @@ -0,0 +1,177 @@ +"""Materialize explicitly authored annotations, evidence snapshots and scenarios. + +Does not invent annotations or infer semantic validity from retrieval results. +Edit reviewed-v2/annotations.json after reading sources, then rerun this script. +""" +from __future__ import annotations + +import hashlib +import json +from pathlib import Path + +APP = Path(__file__).resolve().parents[1] +OUT = APP / "resources/evaluation/reviewed-v2" + + +def read(path): + return json.loads(path.read_text(encoding="utf-8")) + + +def write(name, value): + (OUT / name).write_text(json.dumps(value, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") + + +def main(): + annotations = read(OUT / "annotations.json") + topics = annotations["topics"] + store = APP / ".local/corpus-store" + version = read(store / "active.json")["active_corpus_version"] + root = store / "candidates" / version / "courses" + courses = {t["course_id"] for t in topics} + chunks = {c["chunk_id"]: c for course in courses for c in read(root / f"{course}.json")["chunks"]} + evidence = {} + source_paths = {p.stem: p for p in (APP / "knowledge").glob("*/*.md")} + # Connected source families, not individual paraphrases, define the split. + families = [] + for topic in topics: + ids = {cid for group in topic["groups"] for cid in group["chunk_ids"]} + family = {chunks[cid]["source_id"] for cid in ids} + for cid in sorted(ids): + c = chunks[cid] + assert c["course_id"] == topic["course_id"] + path = source_paths[c["source_id"]] + assert path.exists(), path + evidence[cid] = { + **{k: c[k] for k in ("course_id", "source_id", "source_title", "locator_type", "locator_start", "locator_end", "question_id", "heading_path", "text")}, + "knowledge_path": path.relative_to(APP).as_posix(), + "text_sha256": hashlib.sha256(c["text"].encode()).hexdigest(), + "knowledge_sha256": hashlib.sha256(path.read_bytes()).hexdigest(), + } + families.append(family) + changed = True + while changed: + changed = False + for i in range(len(families)): + for j in range(i): + if families[i] & families[j] and families[i] != families[j]: + families[i] = families[j] = families[i] | families[j] + changed = True + entries = [] + for topic, family in zip(topics, families): + key = "+".join(sorted(family)) + split = "validation" if int(hashlib.sha256(key.encode()).hexdigest(), 16) % 4 == 0 else "dev" + for i, query in enumerate(topic["queries"], 1): + entries.append({ + "case_id": f"{topic['id']}-{i}", "topic_id": topic["id"], "course_id": topic["course_id"], + "scenario": topic["scenario"], "query": query, "split": split, "source_family": key, + "evidence_groups": topic["groups"], "reference_answer": topic["answer"], + "verification": topic["verification"], "pitfalls": topic["pitfalls"], + "external_reference": topic.get("external_reference"), + "verified_values": topic.get("verified_values"), + }) + write("retrieval.json", { + "schema_version": "reviewed-retrieval-v2", "corpus_version": version, + "provenance": {k: annotations[k] for k in ("reviewer", "review_date", "review_method")}, + "annotation_scope": "Positive evidence groups are non-exhaustive. Missing labels are unjudged, not irrelevant. Validation is source-disjoint within this suite, not an independent blind test.", + "evidence": evidence, "entries": entries, + }) + by_id = {t["id"]: t for t in topics} + cases = [] + + def add(topic_id, workflow="knowledge_qa", *, query=None, payload=None, suffix="", turns=None): + t = by_id[topic_id] + question = query or t["queries"][0] + case = { + "case_id": f"reviewed-{topic_id}{suffix}", "category": t["scenario"], + "course_id": t["course_id"], "course_scope": "single", "allowed_course_ids": [], + "workflow_type": workflow, "knowledge_scope": "course_first", + "turns": turns or [{"role": "user", "content": question}], + "expected": {"answer_status": "answered", "requires_citation": True, "allows_general": True}, + "quality_rubric": { + "topic_id": topic_id, "reference_answer": t["answer"], + "evidence_groups": t["groups"], "verification": t["verification"], + "must_not_claim": t["pitfalls"], "external_reference": t.get("external_reference"), + "grading": "Review correctness, requested help level, evidence support and task completion separately. Contract pass is not a quality pass; equivalent reasoning is acceptable.", + }, + } + if payload is not None: + case["workflow_payload"] = payload + cases.append(case) + return case + + for tid in ("la-diagonalization", "db-having", "os-states", "network-ack", "ai-prepruning", "ds-source-error"): + add(tid) + for tid in ("prob-t-symmetry", "prob-unbiased", "algo-knapsack", "testing-insurance", "discrete-partition", "network-napt"): + add(tid, "problem_tutor") + add("db-null", "mistake_review", payload={ + "problem": "从Student表中筛出年龄AGE缺失的学生。", + "original_answer": "SELECT * FROM Student WHERE AGE = NULL;", + "reference_answer": None, "review_focus": "指出错误原因并给出正确SQL", + }) + add("os-producer", "mistake_review", payload={ + "problem": "容量N的有界缓冲区,empty初值N,full初值0,mutex初值1;检查生产者的PV顺序。", + "original_answer": "生产者P(mutex); P(empty); 放入数据; V(full); V(mutex)。消费者先P(full)再P(mutex)。", + "reference_answer": None, "review_focus": "缓冲区满时是否死锁;给出修正顺序", + }) + add("electrical-plan", "exam_review", payload={ + "syllabus": "一阶电路暂态:初始值、稳态值、时间常数", "exam_date": None, + "available_hours": 2, "goals": ["能独立求出一阶电路暂态三要素"], "weak_topics": ["换路初始值", "时间常数"], + }) + cases[-1]["expected"].update({"requires_exam_review_plan": True, "review_path": "with_syllabus"}) + cases[-1]["quality_rubric"]["task_requirements"] = ["总时间不超过2小时", "覆盖三要素", "给出练习顺序并照顾两个薄弱点", "不捏造必考概率"] + add("network-ack", suffix="-followup", turns=[ + {"role": "user", "content": "TCP确认号为n表示什么?"}, + {"role": "user", "content": "那如果它是501,500这个字节算收到了吗?"}, + ]) + cases[-1]["quality_rubric"]["task_requirements"] = ["使用前轮TCP语境解析它", "明确500已确认,而501是期待的下一个字节"] + add("testing-boundary", suffix="-followup", turns=[ + {"role": "user", "content": "三个独立输入变量的健壮最坏情况边界值测试需要多少组?"}, + {"role": "user", "content": "那为什么不是19?我把它和另一种方法混了。"}, + ]) + add("db-having", "temporary_material_reading", suffix="-temporary", query="精读我贴的SQL规则,用成绩分组举例。", payload={ + "material_title": "我整理的SQL规则", + "material_text": "WHERE在分组前筛选行;GROUP BY把行分组;HAVING在分组后筛选分组。例:GROUP BY 学号 HAVING AVG(成绩)>=85。", + "reading_goal": "用一个均分达到85但其中一门低于85的学生解释HAVING,区分它与每门成绩都达标。", + }) + cases[-1]["expected"] = {"answer_status": "answered", "allows_general": True} + cases[-1]["quality_rubric"]["evidence_groups"] = [] + cases[-1]["quality_rubric"]["verification"] = "输入材料自身完整;例如成绩80和90均分85,满足HAVING但不满足每门>=85。无需强制公共仓库引用。" + add("la-diagonalization", "problem_tutor", suffix="-exact", query="讲解2019-2020年度线性代数期末卷A的选择题第4题:相似于对角矩阵的条件。") + cases[-1]["quality_rubric"]["task_requirements"] = ["定位试卷选择题第4题,不能把内部q10当成试卷第10题", "选B并解释线性无关特征向量条件"] + cross = add("org-cache", suffix="-cross", query="结合计组和操作系统资料,比较Cache与虚拟存储器利用局部性的共同点,以及它们解决的问题有何不同。") + cross.update({"course_id": None, "course_scope": "cross", "allowed_course_ids": ["computer_organization", "operating_systems"]}) + cross["quality_rubric"].update({ + "reference_answer": "两者都利用时间与空间局部性;Cache缓解CPU与主存速度差,虚拟存储器提供地址空间抽象并按需调页。Cache命中/失效与缺页异常不是同一层次的事件。", + "evidence_groups": [by_id["org-cache"]["groups"][0], {"need": "操作系统材料对时间空间局部性的定义", "chunk_ids": ["operating-systems-005:p1:c01"]}], + "verification": "读取两门课指定段落;OS答案页关于逻辑容量等于内外存之和的说法不作为标准答案,只使用其局部性定义。", + "must_not_claim": ["Cache等同于虚拟内存", "逻辑地址空间容量无条件等于内存加外存容量"], + "task_requirements": ["同时使用两门指定课程的相关证据", "解释共同点与区别"], + }) + absent = add("la-diagonalization", suffix="-missing-paper", query="请找出仓库中2023-2024年度线性代数期末卷A的原题和标准答案。") + all_la = read(root / "linear_algebra.json")["chunks"] + assert not any("2023-2024" in c["source_title"] or "2023-2024" in c["text"] for c in all_la) + absent["knowledge_scope"] = "course_only" + absent["expected"] = {"allows_general": False} + absent["quality_rubric"] = { + "reference_answer": "当前绑定语料未收录该指定试卷,说明未找到,可以提出查找已收录年份或请用户提供试卷;不能虚构该卷原题和标准答案。", + "evidence_groups": [], "verification": f"对{version}全部linear_algebra标题和正文查找2023-2024无匹配;仅确认指定资料未收录,不把候选是否为空当成正确性。", + "must_not_claim": ["编造2023-2024原题", "用旧年份试卷冒充指定试卷"], + } + missing = add("la-diagonalization", suffix="-missing-work", query="我算这个矩阵的秩好像错了,能帮我找出哪一步错了吗?") + missing["expected"] = {"allows_general": True} + missing["quality_rubric"] = { + "reference_answer": "请用户提供矩阵和自己的计算步骤,可简短说明会检查行变换或主元;在输入到来前不能指出一个虚构的具体错误。", + "evidence_groups": [], "verification": "当前输入没有矩阵也没有计算过程,无法推断具体哪一步出错。允许简短通用建议,不要求拒答模板。", + "must_not_claim": ["虚构用户矩阵", "虚构具体错误步骤"], + } + write("scenarios.json", { + "contract_version": "v1", "dataset_status": "source_reviewed_authored_scenarios", + "corpus_version": version, "quality_requires_review": True, + "notes": f"{len(cases)} authored cases, not student logs. Multiturn executes actual first responses. Expected fields check mechanics only; no model output was used to tune labels.", + "cases": cases, + }) + print(json.dumps({"topics": len(topics), "retrieval_queries": len(entries), "courses": len(courses), "evidence_chunks": len(evidence), "scenarios": len(cases)})) + + +if __name__ == "__main__": + main() diff --git a/apps/scut-senior/tests/python/test_eval_runner.py b/apps/scut-senior/tests/python/test_eval_runner.py index 96686112..948ed039 100644 --- a/apps/scut-senior/tests/python/test_eval_runner.py +++ b/apps/scut-senior/tests/python/test_eval_runner.py @@ -25,11 +25,12 @@ def test_eval_runner_executes_all_cases_and_reports_per_course(tmp_path: Path) - "failed", "skipped", } - # cross-course is disabled by its feature flag; it must be skipped, not run. + # Cross-course support is enabled in Settings; the runner must actually run + # it, rather than silently skipping all cross-course quality measurements. cross = next( line for line in report["cases"] if line["case_id"] == "cross-course-scope-001" ) - assert cross["outcome"] == "skipped" + assert cross["outcome"] != "skipped" assert "cross_course" in report["by_course"] assert report["by_course"]["linear_algebra"]["total"] == 11 assert report_path.read_text(encoding="utf-8").strip() diff --git a/apps/scut-senior/tests/python/test_learning_eval.py b/apps/scut-senior/tests/python/test_learning_eval.py new file mode 100644 index 00000000..046ce38b --- /dev/null +++ b/apps/scut-senior/tests/python/test_learning_eval.py @@ -0,0 +1,144 @@ +from __future__ import annotations + +import itertools +import json +import sqlite3 +from fractions import Fraction +from types import SimpleNamespace +from uuid import uuid4 + +import pytest + +from scut_senior_api.contracts import WorkflowRunRequest +from scut_senior_api.eval_runner import _check_expected, _report_line, _request_for_case, _run_case, main +from scut_senior_api.learning_eval import DEFAULT_SUITE, score_ranking + + +def test_alternative_chunks_do_not_require_redundant_retrieval(): + score = score_ranking([{"chunk_ids": ["answer-a", "answer-b"]}], ["answer-b"]) + assert score["known_evidence_coverage_at_5"] == 1 + assert score["all_evidence_groups_at_5"] == 1 + + +def test_one_topic_cannot_satisfy_an_unrelated_evidence_need(): + score = score_ranking([{"chunk_ids": ["question"]}, {"chunk_ids": ["answer"]}], ["question", "question"]) + assert score["known_evidence_coverage_at_5"] == 0.5 + assert score["all_evidence_groups_at_5"] == 0 + + +def test_unjudged_is_not_noise_or_answer_failure(): + score = score_ranking([{"chunk_ids": ["known"]}], ["new-relevant-candidate", "known"]) + assert score["known_positive_mrr"] == 0.5 + assert score["unjudged_chunk_ids"] == ["new-relevant-candidate"] + assert "noise_rate" not in score and "answer_accuracy" not in score + + +def test_reviewed_scenarios_preserve_real_workflow_inputs(): + cases = json.loads((DEFAULT_SUITE.parent / "scenarios.json").read_text(encoding="utf-8"))["cases"] + assert {case["workflow_type"] for case in cases} == { + "knowledge_qa", "problem_tutor", "mistake_review", "exam_review", "temporary_material_reading", + } + for case in cases: + for turn in case["turns"]: + request = WorkflowRunRequest.model_validate(_request_for_case(str(uuid4()), case, turn["content"])) + if "workflow_payload" in case: + for key, value in case["workflow_payload"].items(): + assert request.workflow_payload.model_dump(mode="json")[key] == value + if case["workflow_type"] == "mistake_review": + assert "用例未提供" not in case["workflow_payload"]["original_answer"] + + +def test_unspecified_citation_requirement_does_not_prohibit_citations(): + result = SimpleNamespace( + answer_status=SimpleNamespace(value="answered"), evidence_status=SimpleNamespace(value="sufficient"), + answer_blocks=[], citations=[SimpleNamespace(locator_type="page")], workflow_output={}, + ) + assert _check_expected(result, {}) == [] + assert _check_expected(result, {"requires_citation": False}) + + +def test_contract_success_is_not_semantic_success(): + case = {"case_id": "x", "category": "concept", "course_id": "x", "workflow_type": "knowledge_qa", "quality_rubric": {"reference_answer": "correct"}} + row = _report_line(case, "passed", [], {"answer_call_count": 1, "review_material": {"repository_answer": "wrong"}}) + assert row["outcome"] == "passed" + assert row["quality_outcome"] == "not_reviewed" + assert row["review_material"]["repository_answer"] == "wrong" + assert "review_material" not in row["runtime_metrics"] + + +def test_knapsack_reference_by_exhaustive_enumeration(): + weights, values = [3, 5, 7, 8, 9], [4, 6, 7, 9, 10] + feasible = [] + for bits in itertools.product((0, 1), repeat=5): + if sum(b * w for b, w in zip(bits, weights)) <= 22: + feasible.append((sum(b * v for b, v in zip(bits, values)), bits)) + optimum = max(v for v, _ in feasible) + suite = json.loads(DEFAULT_SUITE.read_text(encoding="utf-8")) + expected = next(e for e in suite["entries"] if e["topic_id"] == "algo-knapsack")["verified_values"] + assert optimum == expected["maximum_value"] + assert [[i + 1 for i, bit in enumerate(bits) if bit] for value, bits in feasible if value == optimum] == [expected["selected_items"]] + + +def test_unbiased_estimator_reference_by_exact_arithmetic(): + weights = [ + [Fraction(1, 2), Fraction(1, 3), Fraction(1, 6)], + [Fraction(1, 2), Fraction(1, 4), Fraction(1, 4)], + [Fraction(1, 3)] * 3, + [Fraction(1, 5), Fraction(2, 5), Fraction(2, 5)], + ] + assert all(sum(row) == 1 for row in weights) + variances = [sum(w * w for w in row) for row in weights] + assert variances == [Fraction(7, 18), Fraction(3, 8), Fraction(1, 3), Fraction(9, 25)] + assert variances.index(min(variances)) == 2 + + +def test_sql_references_against_executable_examples(): + with sqlite3.connect(":memory:") as db: + db.execute("CREATE TABLE student (id INTEGER, age INTEGER)") + db.executemany("INSERT INTO student VALUES (?, ?)", [(1, None), (2, 20)]) + assert db.execute("SELECT id FROM student WHERE age = NULL").fetchall() == [] + assert db.execute("SELECT id FROM student WHERE age IS NULL").fetchall() == [(1,)] + db.execute("CREATE TABLE marks (id INTEGER, score INTEGER)") + db.executemany("INSERT INTO marks VALUES (?, ?)", [(1, 80), (1, 90), (2, 70), (2, 80)]) + assert db.execute("SELECT id, AVG(score) FROM marks GROUP BY id HAVING AVG(score)>=85").fetchall() == [(1, 85.0)] + + +def test_sources_and_paraphrases_stay_in_one_split(): + suite = json.loads(DEFAULT_SUITE.read_text(encoding="utf-8")) + splits = {} + for entry in suite["entries"]: + for group in entry["evidence_groups"]: + for cid in group["chunk_ids"]: + source = suite["evidence"][cid]["source_id"] + assert splits.setdefault(source, entry["split"]) == entry["split"] + assert {e["split"] for e in suite["entries"]} == {"dev", "validation"} + + +def test_empty_evidence_has_no_artificial_perfect_score(): + with pytest.raises(ValueError): + score_ranking([], []) + + +def test_disabled_cross_course_is_explicitly_skipped(): + app = SimpleNamespace(state=SimpleNamespace(service=SimpleNamespace(settings=SimpleNamespace(cross_course_enabled=False)))) + outcome, reasons, metrics = _run_case(app, {"course_scope": "cross"}) + assert outcome == "skipped" and reasons == ["cross_course_disabled_by_feature_flag"] + assert metrics == {} + + +def test_default_cli_uses_reviewed_suite_not_legacy_targets(tmp_path, monkeypatch): + import scut_senior_api.learning_eval as learning + calls = [] + + def run(suite, store, **kwargs): + calls.append(suite) + return {"summary": {"queries": 50}} + + monkeypatch.setattr(learning, "run_suite", run) + report = tmp_path / "report.json" + assert main(["--retrieval-only", "--report", str(report)]) == 0 + assert calls == [DEFAULT_SUITE] + + +def test_conflicting_corpus_flags_are_rejected_before_execution(tmp_path): + assert main(["--report", str(tmp_path / "report.json"), "--local-corpus", "--fixture-corpus"]) == 2 From 600306c87fd05911d0e4584b6fb42819b7facb3d Mon Sep 17 00:00:00 2001 From: Alexbybye <244417287@qq.com> Date: Sat, 12 Sep 2026 22:40:30 +0800 Subject: [PATCH 13/25] Add visual-reviewed evaluation and coverage harness scripts - Introduced visual-reviewed.json containing semantic answer keys for image-only source pages. - Implemented build_coverage_harness.py to generate a coverage harness for active courses, focusing on retrieval evidence. - Updated build_reviewed_evaluation.py to merge topics from expanded annotations. - Enhanced test_learning_eval.py with tests for coverage harness validation and visual evaluation integrity. --- .../api/src/scut_senior_api/learning_eval.py | 53 +- .../docs/senior-ab/next-experiments.md | 2 +- .../resources/evaluation/reviewed-v2/AUDIT.md | 2 +- .../evaluation/reviewed-v2/README.md | 18 +- .../reviewed-v2/annotations-expanded.json | 36 + .../evaluation/reviewed-v2/annotations.json | 14 +- .../reviewed-v2/baseline-bm25f.json | 3680 +++++++- .../reviewed-v2/baseline-hybrid.json | 4074 ++++++++- .../reviewed-v2/coverage-baseline-bm25f.json | 7480 +++++++++++++++++ .../reviewed-v2/coverage-harness.json | 5925 +++++++++++++ .../reviewed-v2/coverage-matrix.json | 676 ++ .../evaluation/reviewed-v2/retrieval.json | 2083 +++++ .../reviewed-v2/visual-reviewed.json | 67 + .../scripts/build_coverage_harness.py | 187 + .../scripts/build_reviewed_evaluation.py | 11 +- .../tests/python/test_learning_eval.py | 56 +- 16 files changed, 24052 insertions(+), 312 deletions(-) create mode 100644 apps/scut-senior/resources/evaluation/reviewed-v2/annotations-expanded.json create mode 100644 apps/scut-senior/resources/evaluation/reviewed-v2/coverage-baseline-bm25f.json create mode 100644 apps/scut-senior/resources/evaluation/reviewed-v2/coverage-harness.json create mode 100644 apps/scut-senior/resources/evaluation/reviewed-v2/coverage-matrix.json create mode 100644 apps/scut-senior/resources/evaluation/reviewed-v2/visual-reviewed.json create mode 100644 apps/scut-senior/scripts/build_coverage_harness.py diff --git a/apps/scut-senior/api/src/scut_senior_api/learning_eval.py b/apps/scut-senior/api/src/scut_senior_api/learning_eval.py index b888975d..04697896 100644 --- a/apps/scut-senior/api/src/scut_senior_api/learning_eval.py +++ b/apps/scut-senior/api/src/scut_senior_api/learning_eval.py @@ -25,8 +25,10 @@ def read_json(path: Path) -> dict[str, Any]: def validate_suite(suite: dict[str, Any], store_root: Path) -> dict[str, int]: - if suite.get("schema_version") != "reviewed-retrieval-v2": + schema = suite.get("schema_version") + if schema not in {"reviewed-retrieval-v2", "coverage-harness-v2"}: raise ValueError("unsupported learning evaluation schema") + coverage_harness = schema == "coverage-harness-v2" pointer = read_json(store_root / "active.json") if suite["corpus_version"] != pointer["active_corpus_version"]: raise ValueError("annotation corpus version differs from active corpus") @@ -54,14 +56,22 @@ def validate_suite(suite: dict[str, Any], store_root: Path) -> dict[str, int]: if entry["case_id"] in seen or not entry["query"].strip(): raise ValueError("duplicate case id or blank query") seen.add(entry["case_id"]) - if entry["split"] not in {"dev", "validation"}: + allowed_splits = {"dev", "validation"} + if coverage_harness: + allowed_splits.add("coverage") + if entry["split"] not in allowed_splits: raise ValueError("unknown split") - if not entry["reference_answer"] or not entry["verification"] or not entry["evidence_groups"]: + groups = entry["evidence_groups"] + if not entry["reference_answer"] or not entry["verification"]: raise ValueError(f"missing review rationale: {entry['case_id']}") + if not groups: + if not (coverage_harness and entry.get("scenario") == "evidence_boundary"): + raise ValueError(f"missing positive evidence: {entry['case_id']}") + continue previous_topic = topic_splits.setdefault(entry["topic_id"], entry["split"]) if previous_topic != entry["split"]: raise ValueError("paraphrase family crosses splits") - for group in entry["evidence_groups"]: + for group in groups: ids = group["chunk_ids"] if not group["need"] or not ids or len(ids) != len(set(ids)): raise ValueError("invalid evidence group") @@ -72,7 +82,13 @@ def validate_suite(suite: dict[str, Any], store_root: Path) -> dict[str, int]: previous = source_splits.setdefault(source, entry["split"]) if previous != entry["split"]: raise ValueError(f"source family crosses splits: {source}") - return {"queries": len(entries), "topics": len(topic_splits), "courses": len(indexes), "evidence_chunks": len(evidence)} + return { + "queries": len(entries), "topics": len(topic_splits), + "courses": len({entry["course_id"] for entry in entries}), + "source_backed_courses": len(indexes), + "evidence_chunks": len(evidence), + "evidence_boundary_cases": sum(not entry["evidence_groups"] for entry in entries), + } def score_ranking(groups: list[dict[str, Any]], ranked: list[str]) -> dict[str, Any]: @@ -111,16 +127,35 @@ def run_suite(suite_path: Path, store_root: Path, *, embedding=None, min_score=1 start = time.perf_counter() batch = gateway.search([entry["course_id"]], entry["query"]) ids = [s.chunk_id for s in batch.sources] + groups = entry["evidence_groups"] + metrics = ( + score_ranking(groups, ids) + if groups + else { + "known_evidence_coverage_at_5": None, + "known_evidence_coverage_at_20": None, + "all_evidence_groups_at_5": None, + "all_evidence_groups_at_20": None, + "known_positive_mrr": None, + "unjudged_chunk_ids": ids, + } + ) rows.append({ **{k: entry[k] for k in ("case_id", "topic_id", "course_id", "scenario", "split")}, + "difficulty": entry.get("difficulty", "unspecified"), "query": entry["query"], "top_chunk_ids": ids, "duration_ms": round((time.perf_counter() - start) * 1000, 3), - **score_ranking(entry["evidence_groups"], ids), + "scoring_status": "scored" if groups else "evidence_boundary_unscored", + **metrics, }) metric_keys = ("known_evidence_coverage_at_5", "known_evidence_coverage_at_20", "all_evidence_groups_at_5", "all_evidence_groups_at_20", "known_positive_mrr") def summary(values): - return {"queries": len(values), **{k: round(sum(v[k] for v in values) / len(values), 6) for k in metric_keys}} + scored = [value for value in values if value["scoring_status"] == "scored"] + result = {"queries": len(values), "scored_queries": len(scored), "unscored_evidence_boundary_queries": len(values) - len(scored)} + if scored: + result.update({key: round(sum(v[key] for v in scored) / len(scored), 6) for key in metric_keys}) + return result if not rows: raise ValueError("selected split has no queries") @@ -132,7 +167,7 @@ def summary(values): "interpretation": "Known-positive lower bounds; unjudged candidates require review, never automatic negative labels. No generation or answer-quality score. Timing includes first-load overhead.", "entries": rows, } - for key in ("course_id", "scenario", "split"): + for key in ("course_id", "scenario", "split", "difficulty"): groups = defaultdict(list) for row in rows: groups[row[key]].append(row) @@ -148,7 +183,7 @@ def main(argv=None): parser.add_argument("--report", type=Path) parser.add_argument("--embedding-model-dir", type=Path) parser.add_argument("--min-score", type=float, default=1.0) - parser.add_argument("--split", choices=("all", "dev", "validation"), default="all") + parser.add_argument("--split", choices=("all", "dev", "validation", "coverage"), default="all") args = parser.parse_args(argv) if args.validate_only: print(json.dumps(validate_suite(read_json(args.suite), args.corpus_store))) diff --git a/apps/scut-senior/docs/senior-ab/next-experiments.md b/apps/scut-senior/docs/senior-ab/next-experiments.md index dde7e47b..65832b71 100644 --- a/apps/scut-senior/docs/senior-ab/next-experiments.md +++ b/apps/scut-senior/docs/senior-ab/next-experiments.md @@ -6,7 +6,7 @@ 原有 46 课、1,380 条黄金集不能继续作为已确认正确的教学质量标准。全量引用与文本检查发现 281 条目标为纯图片片段、231 条目标文本过短、7 条包含替换字符;每条原标注均缺少具体答案或相关性理由。详细审查见 [评测核验报告](../../resources/evaluation/reviewed-v2/AUDIT.md)。这不表示所有原查询都错误,也不追溯改写历史运行结果。 -新的质量实验使用 [reviewed-v2](../../resources/evaluation/reviewed-v2/README.md):50 条问题、25 个主题、14 门课,逐题保存读过的证据、参考答案、核验理由和错误辨析。另有22条端到端场景,覆盖五类工作流、多轮追问、精确题目定位、跨课程、指定资料缺失和输入不足。它们是依据真实资料人工编写风格的模拟场景,由 Codex 核验,不冒称真实用户日志或独立专家双审。 +新的质量实验使用 [reviewed-v2](../../resources/evaluation/reviewed-v2/README.md):108 条文本问题、54 个主题、43 门课,逐题保存读过的证据、参考答案、核验理由、典型错误和难度。问题按课程内容定制:基础题检查概念定位,中等题检查条件或步骤,困难题要求推导、反例、纠错或多证据分析。另有 3 门纯图片课程的 6 条人工视觉题,保留图像指纹和答案,等待 OCR 或多模态检索链路单独评估;不会混进当前文本检索排名。另有22条端到端场景,覆盖五类工作流、多轮追问、精确题目定位、跨课程、指定资料缺失和输入不足。它们是依据真实资料人工编写风格的模拟场景,由 Codex 核验,不冒称真实用户日志或独立专家双审。 不为凑齐每课30条而补模板。其余32门课的旧标注保持历史状态;纯图片课程先做独立视觉/OCR评测,正文尚未核验的课程后续按真实资料逐步扩充。 diff --git a/apps/scut-senior/resources/evaluation/reviewed-v2/AUDIT.md b/apps/scut-senior/resources/evaluation/reviewed-v2/AUDIT.md index 362cd60e..44105517 100644 --- a/apps/scut-senior/resources/evaluation/reviewed-v2/AUDIT.md +++ b/apps/scut-senior/resources/evaluation/reviewed-v2/AUDIT.md @@ -59,7 +59,7 @@ ## 范围与下一步 -新语义集目前覆盖14门课,不假装替其余32门课完成了内容认证。旧46课已完成结构性盘点;为保证评测依据,未读过的内容不自动扩成新金标准。图片题、严重损坏公式、源码乱码先保留在资料质量清单,待OCR/视觉核验后另建题组。 +新语义集现覆盖43门有可读文本的课程:54个逐题编写主题、108条问题,每条保留答案、核验和易错断言;它不是由覆盖模板自动生成。另对3门纯图片课程目视核验6题,见visual-reviewed.json。由于当前链路不能检索图像正文,它们不进入文本召回排名;接入OCR或多模态检索后应以该6题单独做基线。coverage-harness.json仍保留46课的来源压力检查,但不得用于语义金标或答案正确率结论。 dev/validation按共享来源连通组划分,分别26/24题;改写问题不跨组。这避免本集内部直接来源泄漏,但不构成独立盲审。后续用真实学生问法扩充时,应记录来自用户还是自拟,并检查题意与证据,不只补同义模板。 diff --git a/apps/scut-senior/resources/evaluation/reviewed-v2/README.md b/apps/scut-senior/resources/evaluation/reviewed-v2/README.md index 7ffd6436..47eea362 100644 --- a/apps/scut-senior/resources/evaluation/reviewed-v2/README.md +++ b/apps/scut-senior/resources/evaluation/reviewed-v2/README.md @@ -6,8 +6,10 @@ | 文件 | 用途 | | --- | --- | -| annotations.json | 25个主题的两种问法、证据组、参考答案、核验理由、典型错误;主要维护入口 | -| retrieval.json | 50条检索问题,14门课、27个原始证据片段;含来源路径、原文及指纹 | +| annotations.json / annotations-expanded.json | 54个逐题编写主题的两种问法、证据组、参考答案、核验理由、典型错误;主要维护入口 | +| retrieval.json | 108条文本检索问题,43门课、59个原始证据片段;含来源路径、原文及指纹 | +| visual-reviewed.json | 3门纯图片课程的6条人工视觉核验题;有图像指纹和答案,但不混入当前文本检索成绩 | +| coverage-harness.json | 46门课的135条冻结来源压力题;仅用于发现检索回归,不是v2语义金标,也不能拿来替代本表的人工题 | | scenarios.json | 22条端到端场景:五类Workflow、真实错答、临时材料、时间预算、多轮、精确查题、跨课、资料缺失、输入不足 | | legacy-audit.json | 旧1,380条问题逐条引用存在性、文本形态与指纹检查;不是自动语义认证 | | legacy-scenarios-audit.json | 旧12条真实语料场景和20条备考扫描的逐条处置理由 | @@ -42,17 +44,17 @@ python -m scut_senior_api.learning_eval --embedding-model-dir .local/models/bge- 报告中的`outcome`仅表示管线检查结果,`quality_outcome=not_reviewed`表示尚未按rubric核验。报告附最终正文、引用及Workflow结果,便于逐题审阅。跨课程在功能开启时真实执行;关闭时明确skipped。临时材料或资料缺失任务未指定引用要求时,评测器不额外要求“必须引用”或“禁止引用”。 -修改annotations后,运行`python scripts/build_reviewed_evaluation.py`重新生成数据;更新旧集检查用`python scripts/audit_evaluation_sets.py`。改动证据或答案须说明原因,不用生成脚本自动创造审核结论。语料版本或来源变更时,先核对受影响题目再重新生成指纹。 +修改annotations后,运行`python scripts/build_reviewed_evaluation.py`重新生成数据;更新旧集检查用`python scripts/audit_evaluation_sets.py`。改动证据或答案须说明原因,不用生成脚本自动创造审核结论。语料版本或来源变更时,先核对受影响题目再重新生成指纹。视觉题的图像哈希也须重新核验;只有OCR或多模态检索链路接入后,才单独报告其结果。 ## 本轮结果 | 策略 | 已知证据组覆盖@5 | @20 | known-positive MRR | | --- | ---: | ---: | ---: | -| BM25F | 0.660000 | 0.860000 | 0.511547 | -| 旧Hybrid | 0.660000 | 0.860000 | 0.511547 | +| BM25F | 0.722222 | 0.861111 | 0.549264 | +| Hybrid | 0.731481 | 0.898148 | 0.554625 | -min_score=1.0,top20,50题。单轮耗时包含首次载入,不作为稳定P95或线上时延结论。新旧集不可直接比较绝对分数。没有执行新的在线回答实验。 +min_score=1.0,top20,108题。难度分层为9条基础、69条中等、30条困难;BM25F的已知证据覆盖@5分别为0.777778、0.710145、0.733333。难度用于观察方案在哪类真实学习任务退化,不能替代人工答案质量复核。单轮耗时包含首次载入,不作为稳定P95或线上时延结论。新旧集不可直接比较绝对分数。没有执行新的在线回答实验。 -14门课的向量资产均存在且有数据。两组有5题的top20列表不同,只是已知正例指标相同,不能称两种检索完全等价。 +43门文本课程的向量资产均存在且有数据。Hybrid在此来源已知正例上优于BM25F,但该差异只描述非穷尽标注下的定位能力,不能直接当作回答正确率或上线结论。电路与电子技术实验、电工实验、机器学习三门课已按图像逐题核验,但当前文本索引没有可检索正文,故其6题不进入BM25F或Hybrid分数;这是链路能力缺口,不是将其降格为无答案资料。 -评测相关回归32 passed。22条新场景已在真实语料+Mock模型下做运行检查:20条管线通过、2条失败、0条跳过;跨课程已实际执行。失败为`reviewed-os-states`与`reviewed-network-ack-followup`触发现有URL Guard,保留失败记录,没有为使其变绿改题。全部22条语义质量仍标记not_reviewed;Mock输出不代表真实模型能力。本地报告为`.local/evaluation/reviewed-v2-mock-smoke.json`(相对应用根目录)。 +评测相关回归36 passed。22条新场景已在真实语料+Mock模型下做运行检查:20条管线通过、2条失败、0条跳过;跨课程已实际执行。失败为`reviewed-os-states`与`reviewed-network-ack-followup`触发现有URL Guard,保留失败记录,没有为使其变绿改题。全部22条语义质量仍标记not_reviewed;Mock输出不代表真实模型能力。本地报告为`.local/evaluation/reviewed-v2-mock-smoke.json`(相对应用根目录)。 diff --git a/apps/scut-senior/resources/evaluation/reviewed-v2/annotations-expanded.json b/apps/scut-senior/resources/evaluation/reviewed-v2/annotations-expanded.json new file mode 100644 index 00000000..918d1ca3 --- /dev/null +++ b/apps/scut-senior/resources/evaluation/reviewed-v2/annotations-expanded.json @@ -0,0 +1,36 @@ +{ + "reviewer": "Codex", + "review_date": "2026-09-12", + "review_method": "Each topic below was authored after reading its named active-corpus passage. A question has an explicit answer, a bounded verification method, and a stated misconception. These are not template-generated coverage prompts.", + "topics": [ + {"id":"graphics-halfedge","course_id":"computer_graphics","scenario":"code_reasoning","queries":[{"text":"半边结构建模时,遍历一条有向边(u,v),怎样把它与反向半边(v,u)连起来?","difficulty":"medium"},{"text":"网格相邻两个面共享一条无向边。若只建立nextHalfEdge而不建立oppoHalfEdge,沿面走一圈仍可行;哪一类跨面操作会失去直接邻接信息,为什么?","difficulty":"hard"}],"groups":[{"need":"半边结构的反向边链接伪代码","chunk_ids":["computer-graphics-009:p29:c01"]}],"answer":"为(u,v)创建半边并记录其所属面和终点v;若映射中已有(v,u),令两者互为oppoHalfEdge。nextHalfEdge只描述同一面的环,oppoHalfEdge才提供跨共享边到相邻面的直接通路。","verification":"逐行核对伪代码第3至11行的map键、face、vert、next和双向oppo赋值;不把图中未展示的边界处理当成已给定功能。","pitfalls":["把(u,v)和(v,u)当成同一个有向半边","认为nextHalfEdge可以替代跨面的oppoHalfEdge"]}, + {"id":"cs-intro-machine-language","course_id":"computer_science_intro","scenario":"concept","queries":[{"text":"CPU实际执行的是高级语言、汇编语言还是机器语言?为什么编译或汇编步骤不能省略?","difficulty":"medium"},{"text":"有人说“汇编语言最接近机器,所以CPU直接执行汇编文本”。请用取指—执行和翻译层次解释这句话哪里不严谨。","difficulty":"hard"}],"groups":[{"need":"CPU实际执行语言的试题","chunk_ids":["computer-science-intro-003:p3:q-computer-science-intro-003-q9:c01"]}],"answer":"CPU执行的是机器语言指令编码。汇编语言是人可读的符号表示,必须由汇编器翻译;高级语言还需经编译或解释等实现路径产生可执行指令,不能把源文本当成CPU直接取指对象。","verification":"试题第11题明确给出machine language;结合取指—执行针对指令编码这一层次作定义性复核。","pitfalls":["把汇编源文件等同于机器指令","把“接近硬件”误解为无需翻译"]}, + {"id":"numerical-richardson","course_id":"computing_methods","scenario":"derivation","queries":[{"text":"若F-F0(h)=a1 h^p1+高阶项,h足够小时为什么说p1是误差阶?","difficulty":"medium"},{"text":"已知F0(h)和F0(qh)具有同一首项误差,怎样组合它们消去a1h^p1?请写出组合式并说明q的限制。","difficulty":"hard"}],"groups":[{"need":"Richardson外推误差展开","chunk_ids":["computing-methods-002:p92:c01"]}],"answer":"当h趋于0时,最小正幂p1对应的首项支配误差量级。由两式相减可构造F1(h)=[F0(qh)-q^p1 F0(h)]/(1-q^p1),首项相消;必须q不为0且1-q^p1不为0。该结论是在所给渐近展开成立时使用。","verification":"将F0(h)=F-a1h^p1-…和F0(qh)=F-a1q^p1h^p1-…代入组合式,直接验算首项系数为0。","pitfalls":["把误差阶说成误差的精确值","未检查分母1-q^p1是否为零"]}, + {"id":"cpp-film-polymorphism","course_id":"cpp","scenario":"code_review","queries":[{"text":"Film、DirectorCut和ForeignFilm这道题中,哪些属性应放在基类,哪些应留给派生类?","difficulty":"medium"},{"text":"若通过Film&指向DirectorCut并调用output,希望输出修订信息,基类和派生类的output还缺什么设计?同时说明为什么只改成员访问权限不够。","difficulty":"hard"}],"groups":[{"need":"Film继承题目与实现","chunk_ids":["cpp-007:h-题目:c01","cpp-008:h-a:c01"]}],"answer":"标题、导演、时长和评级是所有影片共有状态,应在Film;修订时长/内容属于DirectorCut,语言版本属于ForeignFilm。若要经Film引用实现动态分派,Film::output应为virtual,派生类以override重写;protected只解决派生类访问成员,不能产生运行时多态。","verification":"题目明确列出共同属性与两个派生类新增属性;对照实现中两个同名output,按C++动态绑定规则核验virtual需求。","pitfalls":["把所有新增属性放入Film","认为protected会自动启用多态"]}, + {"id":"digital-mux-selection","course_id":"digital_logic","scenario":"problem","queries":[{"text":"四选一数据选择器B1B0为地址、X0到X3为输入时,00、01、10、11分别该选择哪个Xi?","difficulty":"medium"},{"text":"请从地址码的最小项推导四选一选择器输出式,并判断试卷中哪一项与00→X0、01→X1、10→X2、11→X3一致。","difficulty":"hard"}],"groups":[{"need":"四选一数据选择器试题","chunk_ids":["digital-logic-003:q-digital-logic-003-q2:c01"]}],"answer":"Y=¬B1¬B0X0+¬B1B0X1+B1¬B0X2+B1B0X3,对应选项C。每项由唯一地址最小项门控相应数据输入。","verification":"逐一代入四种B1B0组合,只有相应Xi的系数为1;由此反查C项。","pitfalls":["把B1B0的位序颠倒","只凭选项外观不代入地址码"]}, + {"id":"digital-yolo-eval","course_id":"digital_system_creative_design","scenario":"code_reasoning","queries":[{"text":"YOLO评估代码为什么先按类别取boxes和scores,再调用NMS?NMS输出的索引用于什么?","difficulty":"medium"},{"text":"一张图同时含两类目标,若把所有类别的候选框一起做NMS会有什么风险?请依据当前代码的按类循环说明。","difficulty":"hard"}],"groups":[{"need":"YOLO按类别NMS评估代码","chunk_ids":["digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c11"]}],"answer":"代码先取类别c对应的候选框和分数,再以该类数据调用apply_nms;返回索引用来筛出保留框,随后把保留框、类别c和分数汇总。跨类别一起抑制可能错误删除重叠但类别不同的目标;当前实现的意图是类内抑制。","verification":"沿range(num_classes)、mask[:,c]、apply_nms和append/concatenate的数据流逐项检查。","pitfalls":["认为NMS本身负责分类","用某一类的索引去筛另一类数组"]}, + {"id":"embedded-uart4-pins","course_id":"embedded_systems","scenario":"code_review","queries":[{"text":"UART4初始化中PC10和PC11分别承担什么角色,GPIO模式为何不同?","difficulty":"medium"},{"text":"把PC11也配成复用推挽输出后再做串口收发,最可能破坏哪一方向的数据路径?请从代码的Tx/Rx配置解释。","difficulty":"hard"}],"groups":[{"need":"UART4初始化代码","chunk_ids":["embedded-systems-018:p8:q-embedded-systems-018-q39:c01"]}],"answer":"PC10配置为复用推挽,配合UART4的Tx;PC11配置为浮空输入,配合Rx。把PC11改为输出会使接收引脚不再作为输入采样外部串口信号,因而破坏接收路径。","verification":"读取GPIOC时钟、Pin10/Pin11的两段GPIO_Init和USART_Mode_Tx|USART_Mode_Rx;不额外假定具体板级连线。","pitfalls":["把PC10和PC11的收发方向互换","以为Tx和Rx必须使用相同GPIO模式"]}, + {"id":"analysis1-lipschitz","course_id":"engineering_math_analysis_1","scenario":"proof","queries":[{"text":"在闭区间上满足Lipschitz条件|f(x)-f(y)|≤L|x-y|,怎样证明f一致连续?","difficulty":"medium"},{"text":"证明里直接取δ=ε/L有什么隐含前提?L=0时如何补全论证,为什么结论仍成立?","difficulty":"hard"}],"groups":[{"need":"Lipschitz推出一致连续的证明","chunk_ids":["engineering-mathematical-analysis-1-011:p7:q-engineering-mathematical-analysis-1-011-q18:c01"]}],"answer":"当L>0取δ=ε/L,则|x-y|<δ推出|f(x)-f(y)|<ε,δ与点无关,故一致连续。L=0时不等式给出f(x)=f(y),函数为常值,任取正δ即可。","verification":"逐行检查题解中的Lipschitz不等式和ε—δ定义,并补上除以L时遗漏的L=0分支。","pitfalls":["把连续性误当作自动一致连续","在L=0时仍写ε/L"]}, + {"id":"analysis2-ellipsoid","course_id":"engineering_math_analysis_2","scenario":"optimization","queries":[{"text":"第一卦限椭球x²/a²+y²/b²+z²/c²=1的切平面围成四面体,怎样把体积最小化化为一个受约束的乘积问题?","difficulty":"medium"},{"text":"求使该体积最小的切点,并给出最小体积。请说明为何是最大化xyz而非最小化xyz。","difficulty":"hard"}],"groups":[{"need":"椭球切平面体积题解","chunk_ids":["engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q6:c01"]}],"answer":"切平面截距给出V=(abc)²/(6xyz),故在x,y,z>0和约束下应最大化xyz。令X=x/a、Y=y/b、Z=z/c,则X²+Y²+Z²=1;由AM-GM,XYZ≤(1/3)^(3/2),等号在X=Y=Z=1/√3。切点为(a/√3,b/√3,c/√3),Vmin=√3abc/2。","verification":"从材料列出的截距式和体积式出发,独立用AM-GM复算。","pitfalls":["直接最小化xyz","遗漏第一卦限和正性条件"]}, + {"id":"english-summary-revision","course_id":"english","scenario":"writing_review","queries":[{"text":"给定这篇体育教育摘要,怎样保留中心论点并删去没有被原文支持的夸张细节?","difficulty":"medium"},{"text":"请把摘要改成三句英文:观点、两条支撑、结论。哪些原句需要用更谨慎的表达,不能把“作者认为”写成事实?","difficulty":"hard"}],"groups":[{"need":"英语摘要原稿","chunk_ids":["english-006:h-英语summary:c01"]}],"answer":"合格摘要应以“the passage argues/suggests”归因,概括儿童体育教育的重要性、身心和习惯方面的理由以及学校应支持体育活动的结论;删除原稿中无来源支撑的具体国家、名望或绝对化说法。评分看信息忠实、结构和语言清晰,而非凭空补充细节。","verification":"只对原摘要中的可见论点作压缩;对不能回溯到给定材料的具体细节标注为不可核验。","pitfalls":["把摘要作者的推测写成原文事实","把改语法变成编造论据"]}, + {"id":"ideology-law-morality","course_id":"ideology_morality_and_rule_of_law","scenario":"case_analysis","queries":[{"text":"许霆ATM异常取款材料题要求从道德与法律的关系作答。回答时至少要分开哪些层次?","difficulty":"medium"},{"text":"若只写“违法所以不道德”,为什么不足以完成这道辨析题?请给出不替代具体法条结论的分析框架。","difficulty":"hard"}],"groups":[{"need":"道德法律关系案例题","chunk_ids":["ideology-morality-and-rule-of-law-002:h-思政题目2024级回忆:c01"]}],"answer":"应先基于事实分析行为及其对他人、公共秩序和权利的影响,再分别说明道德评价与法律评价的规范来源、强制力和调整范围,并讨论两者相互联系。不能仅以一个结论替代论证,也不应在材料未给足法律要件时虚构具体罪名或责任比例。","verification":"题干明确要求辨析行为并分析法律和道德的联系与区别;答案只提供课程型论证框架,不替代个案法律裁判。","pitfalls":["把道德和法律说成完全相同","在缺少完整案情时断言具体刑民责任"]}, + {"id":"security-publickey-tradeoff","course_id":"information_security_intro","scenario":"concept","queries":[{"text":"公开密钥密码相较对称密码解决了什么问题,又付出哪些代价?","difficulty":"medium"},{"text":"“公钥公开,所以别人也能解密我的密文”错在哪里?请区分加密、私钥保密和数字签名验证。","difficulty":"hard"}],"groups":[{"need":"公开密钥密码复习提纲","chunk_ids":["information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c02"]}],"answer":"公开密钥体制用成对公私钥缓解密钥分发并便于数字签名,但通常计算开销更大、速度更慢且密钥或密文长度要求更高。公开的是公钥和算法,私钥须保密;保密通信和签名验证使用的密钥方向不同,不能因公钥公开推出私钥可得。","verification":"逐项对照提纲的优缺点、公私钥属性和签名描述;不扩展到特定算法的未给定参数。","pitfalls":["认为公开密钥可反推出私钥","把数字签名等同于保密加密"]}, + {"id":"securitymath-euler-1764","course_id":"information_security_mathematics","scenario":"calculation","queries":[{"text":"计算φ(1764)。应先怎样分解1764,欧拉函数的乘法公式怎样用?","difficulty":"medium"},{"text":"有人直接把φ(1764)写成1763,为什么不对?请给出完整分解和数值。","difficulty":"hard"}],"groups":[{"need":"欧拉函数试题","chunk_ids":["information-security-mathematics-007:q-information-security-mathematics-007-q3:c01"]}],"answer":"1764=2²·3²·7²,因此φ(1764)=1764(1-1/2)(1-1/3)(1-1/7)=504。φ(n)=n-1只在n为素数时成立,1764为合数。","verification":"独立质因数分解并用φ(n)=n∏(1-1/p)计算;题干给出n=1764但不依赖不可靠答案表。","pitfalls":["把合数也套φ(n)=n-1","遗漏一个不同素因子"]}, + {"id":"intelligent-sa-localoptimum","course_id":"intelligent_algorithms","scenario":"algorithm_choice","queries":[{"text":"为什么模拟退火适合存在多个局部最优的复杂解空间?它的主要调参风险是什么?","difficulty":"medium"},{"text":"将模拟退火用于0-1背包时,邻域解超容量该怎样处理?为什么“允许跳出局部最优”不等于允许保留不可行解?","difficulty":"hard"}],"groups":[{"need":"模拟退火优缺点与背包代码","chunk_ids":["intelligent-algorithms-025:h-sa算法适合应用场景~在解空间复杂-存在多个局部最优解的情况下表现出色~优点~全局搜索能力-能够跳出局部最优-具有较强的全局优化能力~参数选择敏感-算法的性能对参数-如初始温度-降温系数等-的选择较为敏感:c01"]}],"answer":"模拟退火通过温度控制下以一定概率接受较差解,因而有跳出局部最优的机会;初温、降温系数等参数敏感。背包邻域仍必须满足容量约束,可重采样、修复或用明确的惩罚策略;材料代码采用移除已选物品直到可行的修复思路。","verification":"核对材料的全局搜索、参数敏感描述和is_feasible/修复循环;不宣称任意参数一定获得全局最优。","pitfalls":["把随机接受差解当成无约束接受","宣称模拟退火必然全局最优"]}, + {"id":"mao-selfrevolution-structure","course_id":"mao_zedong_thought_overview","scenario":"argument_structure","queries":[{"text":"以“党的自我革命”为主题做15分钟演讲,材料给出的时间分配与论证主线是什么?","difficulty":"medium"},{"text":"如何把历史沿革、国情特点和当代价值连成论证,而不是逐段罗列口号?请给出可核验的三段式结构。","difficulty":"hard"}],"groups":[{"need":"自我革命演讲大纲","chunk_ids":["mao-zedong-thought-overview-002:h-演讲大纲:c01"]}],"answer":"材料安排引言约2分钟、历史沿革及国情特点约10分钟,并以自我革命为何保持活力为问题线索。可按“提出问题—用历史阶段说明机制—回到当代治理价值与限制”组织;每段只使用材料实际列出的阶段或观点,不把演讲提纲当作历史事实全集。","verification":"核对大纲中的时长、问题和章节标题;评价结构是否形成因果论证而非记忆清单。","pitfalls":["把演讲大纲中的修辞当成可证实史实","只堆砌阶段名称不说明关联"]}, + {"id":"marx-production-relations","course_id":"marxist_basic_principles","scenario":"applied_analysis","queries":[{"text":"用生产力与生产关系的矛盾分析自动驾驶普及,材料列出的三个制度性问题是什么?","difficulty":"medium"},{"text":"为什么不能把“技术进步”直接等同于“社会问题自动解决”?请按材料把数据、就业和责任分别接入分析链。","difficulty":"hard"}],"groups":[{"need":"自动驾驶与生产关系分析","chunk_ids":["marxist-basic-principles-002:s17:c01"]}],"answer":"材料以岗位替代与职业体系、事故责任与法律规则、行驶数据与数据权利为例,说明技术能力变化会与既有分配、制度和权利安排发生张力。技术进步提供条件,不会自动决定制度调整;论证应说明需通过相应社会规则回应这些矛盾。","verification":"逐项回读材料对三类矛盾的描述;不把材料的比喻性语言扩展为确定的数量预测。","pitfalls":["认为生产力发展必然自动解决分配问题","把材料的示例数字当作统计事实"]}, + {"id":"modeling-project-crash","course_id":"mathematical_modeling","scenario":"optimization","queries":[{"text":"工期压缩模型中,为什么变量y(i,j)要有上下界,目标函数为什么是额外成本而不是任意缩短?","difficulty":"medium"},{"text":"给定工期上限49天,怎样解释“压缩A和K各一天、多花1200元”这一解的可行性,还需要检查什么才能声称它最优?","difficulty":"hard"}],"groups":[{"need":"工期压缩LINGO模型","chunk_ids":["mathematical-modeling-001:p106:c01"]}],"answer":"y表示可压缩工期,必须受0到(t-m)的界限制;弧约束把前后事件时间、原工期和压缩量关联,目标最小化∑c·y。A、K各压一天的方案需满足全部 precedence 约束及49天上限;只有在同一模型上求得最小目标并核对约束后,才能称1200为最优成本。","verification":"读取模型中的min、事件/作业约束、x(n)=85;不是要求每科成绩均达到85。", "verification": "讲义解析、选择题、完整AVG查询相互对照;三种证据是可替代项,不要求全部命中。", @@ -62,7 +62,7 @@ }, { "id": "db-null", "course_id": "database", "scenario": "mistake", - "queries": ["我写WHERE AGE = NULL查缺失年龄,为什么不对?", "筛出没有填写年龄的学生,应该写等于NULL还是IS NULL?"], + "queries": [{"text":"我写WHERE AGE = NULL查缺失年龄,为什么不对?","difficulty":"easy"}, {"text":"筛出没有填写年龄的学生,应该写等于NULL还是IS NULL?","difficulty":"easy"}], "groups": [{"need": "NULL比较的讲义解释", "chunk_ids": ["database-005:s19:c01"]}], "answer": "使用AGE IS NULL;普通等号与NULL比较得到UNKNOWN,WHERE不会保留该结果。", "verification": "讲义明确指出AGE=NULL错误;用SQL三值逻辑复核。", @@ -110,7 +110,7 @@ }, { "id": "network-ack", "course_id": "computer_networks", "scenario": "concept", - "queries": ["TCP确认号为n到底表示收到了n,还是接下来想收到n?", "接收方回复ACK=501,发送方能理解为500之前的字节都确认了吗?"], + "queries": [{"text":"TCP确认号为n到底表示收到了n,还是接下来想收到n?","difficulty":"easy"}, {"text":"接收方回复ACK=501,发送方能理解为500之前的字节都确认了吗?","difficulty":"medium"}], "groups": [{"need": "TCP累计确认号含义", "chunk_ids": ["computer-networks-051:h-笔记:c10"]}], "answer": "确认号n表示期望下一个字节序号为n,至n−1的字节已累计确认;确认号501包括对序号500的确认。ACK标志为1时确认字段有效。", "verification": "原文给出n−1与n的明确关系;只评这一关系,不扩展为所有TCP细节。", @@ -169,7 +169,7 @@ }, { "id": "org-cache", "course_id": "computer_organization", "scenario": "concept", - "queries": ["Cache为什么能缓解CPU与主存速度不匹配?", "只加一小块高速缓存为什么有用?它利用程序访问的什么特点?"], + "queries": [{"text":"Cache为什么能缓解CPU与主存速度不匹配?","difficulty":"easy"}, {"text":"只加一小块高速缓存为什么有用?它利用程序访问的什么特点?","difficulty":"medium"}], "groups": [{"need": "Cache作用与时间空间局部性", "chunk_ids": ["computer-organization-026:s76:c01"]}], "answer": "Cache位于CPU与主存之间,利用时间局部性和空间局部性,让重复或邻近访问有机会由更快存储满足;效果取决于命中率,不能保证所有访问变快。", "verification": "讲义给出层次、速度及局部性;命中条件为基本原理推导。", @@ -177,7 +177,7 @@ }, { "id": "web-margin", "course_id": "web_frontend_fundamentals", "scenario": "concept", - "queries": ["CSS只想增加元素下面的外边距,应该改哪个属性?", "不想动上左右间距,只想让一个块和下一个块离远一点,margin还是margin-bottom?"], + "queries": [{"text":"CSS只想增加元素下面的外边距,应该改哪个属性?","difficulty":"easy"}, {"text":"不想动上左右间距,只想让一个块和下一个块离远一点,margin还是margin-bottom?","difficulty":"easy"}], "groups": [{"need": "margin各方向属性", "chunk_ids": ["web-frontend-fundamentals-014:s32:c01"]}], "answer": "用margin-bottom指定下外边距;margin是四方向简写。实际块间距离还可能涉及外边距折叠,不要求在此简单问题展开全部布局规则。", "verification": "属性表清晰;只核验方向语义,不采纳同一讲义其他页有误的选择器规则。", diff --git a/apps/scut-senior/resources/evaluation/reviewed-v2/baseline-bm25f.json b/apps/scut-senior/resources/evaluation/reviewed-v2/baseline-bm25f.json index 33b2eb58..2b551293 100644 --- a/apps/scut-senior/resources/evaluation/reviewed-v2/baseline-bm25f.json +++ b/apps/scut-senior/resources/evaluation/reviewed-v2/baseline-bm25f.json @@ -1,23 +1,27 @@ { "schema_version": "reviewed-retrieval-report-v2", "corpus_version": "corpus-c1513a68ccd7-b0_2_0-m1200-wworkflow-contract-v1-ooutline-none-v1-ebge-small-zh-v1.5", - "suite_sha256": "7a93284c39ea8d81e0864668f91f208cf98ed125f22e645cf102ba5dbc5cffc5", + "suite_sha256": "28d957ea0b71b0a14cc1a2dad170f1415afcb7e2109aa137e595c7d99869c636", "mode": "bm25f", "min_score": 1.0, "split": "all", "validation": { - "queries": 50, - "topics": 25, - "courses": 14, - "evidence_chunks": 27 + "queries": 108, + "topics": 54, + "courses": 43, + "source_backed_courses": 43, + "evidence_chunks": 59, + "evidence_boundary_cases": 0 }, "summary": { - "queries": 50, - "known_evidence_coverage_at_5": 0.66, - "known_evidence_coverage_at_20": 0.86, - "all_evidence_groups_at_5": 0.66, - "all_evidence_groups_at_20": 0.86, - "known_positive_mrr": 0.511547 + "queries": 108, + "scored_queries": 108, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.722222, + "known_evidence_coverage_at_20": 0.861111, + "all_evidence_groups_at_5": 0.722222, + "all_evidence_groups_at_20": 0.861111, + "known_positive_mrr": 0.549264 }, "interpretation": "Known-positive lower bounds; unjudged candidates require review, never automatic negative labels. No generation or answer-quality score. Timing includes first-load overhead.", "entries": [ @@ -27,6 +31,7 @@ "course_id": "linear_algebra", "scenario": "concept", "split": "validation", + "difficulty": "medium", "query": "矩阵可对角化的充要条件是什么?为什么特征值互不相同只是充分条件?", "top_chunk_ids": [ "linear-algebra-014:p1:q-linear-algebra-014-q6:c01", @@ -50,7 +55,8 @@ "linear-algebra-012:p3:q-linear-algebra-012-q20:c01", "linear-algebra-014:p2:q-linear-algebra-014-q12:c01" ], - "duration_ms": 478.993, + "duration_ms": 483.304, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -84,6 +90,7 @@ "course_id": "linear_algebra", "scenario": "concept", "split": "validation", + "difficulty": "hard", "query": "有重根就一定不能化成对角矩阵吗?请用单位矩阵说明。", "top_chunk_ids": [ "linear-algebra-012:p3:q-linear-algebra-012-q21:c01", @@ -106,7 +113,8 @@ "linear-algebra-019:p3:q-linear-algebra-019-q14:c01", "linear-algebra-018:p1:q-linear-algebra-018-q3:c01" ], - "duration_ms": 9.594, + "duration_ms": 10.989, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -139,6 +147,7 @@ "course_id": "probability_theory", "scenario": "problem", "split": "validation", + "difficulty": "medium", "query": "T服从t分布,若P(T>λ)=α,P(T<−λ)是多少?", "top_chunk_ids": [ "probability-theory-010:q-probability-theory-010-q1:c01", @@ -162,7 +171,8 @@ "probability-theory-015:q-probability-theory-015-q1:c01", "probability-theory-035:q-probability-theory-035-q1:c01" ], - "duration_ms": 81.052, + "duration_ms": 80.246, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -196,6 +206,7 @@ "course_id": "probability_theory", "scenario": "problem", "split": "validation", + "difficulty": "medium", "query": "t分布右边尾巴的面积是α,关于0对称的左边尾巴也是α,还是α/2?", "top_chunk_ids": [ "probability-theory-014:p3:q-probability-theory-014-q22:c01", @@ -219,7 +230,8 @@ "probability-theory-022:p5:q-probability-theory-022-q21:c01", "probability-theory-023:p6:q-probability-theory-023-q19:c01" ], - "duration_ms": 22.118, + "duration_ms": 22.634, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 1.0, @@ -253,6 +265,7 @@ "course_id": "probability_theory", "scenario": "problem", "split": "validation", + "difficulty": "medium", "query": "独立同分布样本方差σ²>0,用权重(1/2,1/3,1/6)、(1/2,1/4,1/4)、(1/3,1/3,1/3)、(1/5,2/5,2/5)估计均值,哪个方差最小?", "top_chunk_ids": [ "probability-theory-020:p2:c01", @@ -276,7 +289,8 @@ "probability-theory-032:h-2016春季a卷无答案:c02", "probability-theory-027:p1:q-probability-theory-027-q5:c01" ], - "duration_ms": 24.08, + "duration_ms": 23.798, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 0.0, @@ -311,6 +325,7 @@ "course_id": "probability_theory", "scenario": "problem", "split": "validation", + "difficulty": "medium", "query": "四种加权平均都无偏时,为什么平均分配三个样本的权重更有效?假定样本独立同分布且方差为正。", "top_chunk_ids": [ "probability-theory-022:p3:q-probability-theory-022-q10:c01", @@ -334,7 +349,8 @@ "probability-theory-024:p2:c01", "probability-theory-026:p3:c01" ], - "duration_ms": 21.045, + "duration_ms": 21.331, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 0.0, @@ -369,6 +385,7 @@ "course_id": "algorithm_design_and_analysis", "scenario": "problem", "split": "validation", + "difficulty": "medium", "query": "2023-2024 B卷容量22、体积3/5/7/8/9、价值4/6/7/9/10的0-1背包题怎么做?", "top_chunk_ids": [ "algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q13:c01", @@ -392,7 +409,8 @@ "algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q12:c01", "algorithm-design-and-analysis-024:p5:c01" ], - "duration_ms": 85.176, + "duration_ms": 83.448, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -426,6 +444,7 @@ "course_id": "algorithm_design_and_analysis", "scenario": "problem", "split": "validation", + "difficulty": "medium", "query": "背包最多装22,每件只能拿一次,五件物品重量3、5、7、8、9,价值4、6、7、9、10。最大价值和选择是什么?", "top_chunk_ids": [ "algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q13:c01", @@ -449,7 +468,8 @@ "algorithm-design-and-analysis-023:p5:c01", "algorithm-design-and-analysis-027:p6:c01" ], - "duration_ms": 24.846, + "duration_ms": 25.395, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -483,6 +503,7 @@ "course_id": "data_structure", "scenario": "concept", "split": "dev", + "difficulty": "medium", "query": "不用递归,怎样用栈完成二叉树中序遍历?", "top_chunk_ids": [ "data-structure-023:h-作业及分析:c01", @@ -493,7 +514,8 @@ "data-structure-024:p6:c01", "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02" ], - "duration_ms": 52.86, + "duration_ms": 54.679, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -514,6 +536,7 @@ "course_id": "data_structure", "scenario": "concept", "split": "dev", + "difficulty": "medium", "query": "遍历二叉树时一路压左孩子,弹出后什么时候访问右子树?", "top_chunk_ids": [ "data-structure-022:h-2025-a-辅修班卷子:c02", @@ -525,7 +548,8 @@ "data-structure-024:p3:c01", "data-structure-024:p5:c01" ], - "duration_ms": 10.631, + "duration_ms": 10.588, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -547,6 +571,7 @@ "course_id": "database", "scenario": "concept", "split": "dev", + "difficulty": "easy", "query": "关系代数中选择和投影有什么区别?哪一个是按列切分?", "top_chunk_ids": [ "database-002:p2:q-database-002-q13:c01", @@ -570,7 +595,8 @@ "database-001:q-database-001-q16:c01", "database-004:p3:q-database-004-q22:c01" ], - "duration_ms": 71.457, + "duration_ms": 70.461, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -604,6 +630,7 @@ "course_id": "database", "scenario": "concept", "split": "dev", + "difficulty": "easy", "query": "只保留学生表的学号和姓名,应该用选择还是投影?", "top_chunk_ids": [ "database-001:q-database-001-q2:c01", @@ -627,7 +654,8 @@ "database-001:q-database-001-q37:c01", "database-003:p5:q-database-003-q49:c01" ], - "duration_ms": 12.687, + "duration_ms": 11.803, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 0.0, @@ -662,6 +690,7 @@ "course_id": "database", "scenario": "concept", "split": "dev", + "difficulty": "easy", "query": "SQL中HAVING筛选的是行还是分组?", "top_chunk_ids": [ "database-005:s19:c01", @@ -685,7 +714,8 @@ "database-005:s18:c01", "database-005:s13:c01" ], - "duration_ms": 11.412, + "duration_ms": 11.841, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -718,6 +748,7 @@ "course_id": "database", "scenario": "concept", "split": "dev", + "difficulty": "medium", "query": "按学生分组算平均成绩后,只留下均分至少85的组,该在哪里写条件?", "top_chunk_ids": [ "database-001:q-database-001-q2:c01", @@ -741,7 +772,8 @@ "database-001:q-database-001-q37:c01", "database-005:s54:c01" ], - "duration_ms": 12.125, + "duration_ms": 11.368, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -773,6 +805,7 @@ "course_id": "database", "scenario": "mistake", "split": "dev", + "difficulty": "easy", "query": "我写WHERE AGE = NULL查缺失年龄,为什么不对?", "top_chunk_ids": [ "database-003:p6:q-database-003-q65:c01", @@ -796,7 +829,8 @@ "database-004:p1:q-database-004-q9:c01", "database-001:q-database-001-q4:c01" ], - "duration_ms": 11.003, + "duration_ms": 11.554, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -830,6 +864,7 @@ "course_id": "database", "scenario": "mistake", "split": "dev", + "difficulty": "easy", "query": "筛出没有填写年龄的学生,应该写等于NULL还是IS NULL?", "top_chunk_ids": [ "database-001:q-database-001-q24:c01", @@ -853,7 +888,8 @@ "database-003:p5:q-database-003-q53:c01", "database-003:p5:q-database-003-q50:c01" ], - "duration_ms": 12.66, + "duration_ms": 11.224, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 1.0, @@ -887,6 +923,7 @@ "course_id": "operating_systems", "scenario": "concept", "split": "validation", + "difficulty": "medium", "query": "进程就绪和阻塞有什么区别?I/O完成后会直接运行吗?", "top_chunk_ids": [ "operating-systems-043:s24:c01", @@ -910,7 +947,8 @@ "operating-systems-038:s98:c01", "operating-systems-001:h-第-7-题-中断-interrupt~1-知识点:c01" ], - "duration_ms": 350.76, + "duration_ms": 328.512, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 1.0, @@ -944,6 +982,7 @@ "course_id": "operating_systems", "scenario": "concept", "split": "validation", + "difficulty": "medium", "query": "一个进程只是没拿到CPU,另一个在等磁盘读完,它们是同一种状态吗?", "top_chunk_ids": [ "operating-systems-038:s59:c01", @@ -967,7 +1006,8 @@ "operating-systems-028:h-os复习指导:c03", "operating-systems-036:q-operating-systems-036-q22:c01" ], - "duration_ms": 56.7, + "duration_ms": 56.866, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 1.0, @@ -1001,6 +1041,7 @@ "course_id": "operating_systems", "scenario": "mistake", "split": "validation", + "difficulty": "medium", "query": "有界缓冲区生产者能先P(mutex)再P(empty)吗?", "top_chunk_ids": [ "operating-systems-002:q-operating-systems-002-q28:c01", @@ -1024,7 +1065,8 @@ "operating-systems-002:q-operating-systems-002-q1:c01", "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~3-参考答案与解析:c02" ], - "duration_ms": 44.663, + "duration_ms": 44.029, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -1058,6 +1100,7 @@ "course_id": "operating_systems", "scenario": "mistake", "split": "validation", + "difficulty": "medium", "query": "缓冲区满时,生产者拿着互斥锁等空位,消费者还能取走数据吗?", "top_chunk_ids": [ "operating-systems-002:q-operating-systems-002-q28:c01", @@ -1081,7 +1124,8 @@ "operating-systems-002:q-operating-systems-002-q22:c01", "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-22-题-自旋锁-spinlock-与互斥锁区别~3-参考答案与解读:c01" ], - "duration_ms": 48.967, + "duration_ms": 48.779, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 1.0, @@ -1115,6 +1159,7 @@ "course_id": "operating_systems", "scenario": "concept", "split": "dev", + "difficulty": "medium", "query": "死锁的四个必要条件是什么?统一资源申请顺序破坏了哪一个?", "top_chunk_ids": [ "operating-systems-001:h-第-15-题-死锁四条件~1-知识点~2-测试题型:c01", @@ -1138,7 +1183,8 @@ "operating-systems-030:p1:c01", "operating-systems-037:h-上古osq-a:c02" ], - "duration_ms": 52.608, + "duration_ms": 53.901, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 0.0, @@ -1173,6 +1219,7 @@ "course_id": "operating_systems", "scenario": "concept", "split": "dev", + "difficulty": "medium", "query": "所有线程都先拿A锁再拿B锁,为什么能避免这两把锁形成循环等待?", "top_chunk_ids": [ "operating-systems-003:p5:q-operating-systems-003-q46:c01", @@ -1196,7 +1243,8 @@ "operating-systems-032:p2:c01", "operating-systems-042:s42:c01" ], - "duration_ms": 54.195, + "duration_ms": 54.077, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 0.0, @@ -1231,6 +1279,7 @@ "course_id": "compiler_principles", "scenario": "problem", "split": "validation", + "difficulty": "medium", "query": "T→T,S | S 如何消除直接左递归?", "top_chunk_ids": [ "compiler-principles-001:s27:c01", @@ -1254,7 +1303,8 @@ "compiler-principles-001:s45:c01", "compiler-principles-001:s31:c01" ], - "duration_ms": 113.287, + "duration_ms": 112.968, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -1288,6 +1338,7 @@ "course_id": "compiler_principles", "scenario": "problem", "split": "validation", + "difficulty": "medium", "query": "递归下降遇到T先调用自己再读逗号的文法会卡住,怎么改写?原式T→T,S | S。", "top_chunk_ids": [ "compiler-principles-053:h-递归下降方法的错误处理:c01", @@ -1311,7 +1362,8 @@ "compiler-principles-016:q-compiler-principles-016-q14:c01", "compiler-principles-017:q-compiler-principles-017-q12:c01" ], - "duration_ms": 19.344, + "duration_ms": 19.02, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 1.0, @@ -1345,6 +1397,7 @@ "course_id": "compiler_principles", "scenario": "review", "split": "validation", + "difficulty": "medium", "query": "复习课里那道S→a | ∧ | (T)、T→T,S | S的预测分析题,应该按什么步骤做?这里只要步骤。", "top_chunk_ids": [ "compiler-principles-001:s26:c01", @@ -1368,7 +1421,8 @@ "compiler-principles-001:s41:c01", "compiler-principles-001:s39:c01" ], - "duration_ms": 20.339, + "duration_ms": 20.94, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -1402,6 +1456,7 @@ "course_id": "compiler_principles", "scenario": "review", "split": "validation", + "difficulty": "medium", "query": "面对需要改写文法并构造LL(1)分析表的大题,先算FIRST还是先消除左递归?", "top_chunk_ids": [ "compiler-principles-001:s26:c01", @@ -1425,7 +1480,8 @@ "compiler-principles-001:s36:c01", "compiler-principles-015:q-compiler-principles-015-q15:c01" ], - "duration_ms": 20.018, + "duration_ms": 20.518, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -1459,6 +1515,7 @@ "course_id": "computer_networks", "scenario": "concept", "split": "dev", + "difficulty": "easy", "query": "TCP确认号为n到底表示收到了n,还是接下来想收到n?", "top_chunk_ids": [ "computer-networks-043:p33:c01", @@ -1482,7 +1539,8 @@ "computer-networks-031:p15:c01", "computer-networks-047:p15:c01" ], - "duration_ms": 323.902, + "duration_ms": 308.559, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -1516,6 +1574,7 @@ "course_id": "computer_networks", "scenario": "concept", "split": "dev", + "difficulty": "medium", "query": "接收方回复ACK=501,发送方能理解为500之前的字节都确认了吗?", "top_chunk_ids": [ "computer-networks-149:h-发送方的复用和接收方的分用:c01", @@ -1539,7 +1598,8 @@ "computer-networks-047:p5:c01", "computer-networks-035:p39:c01" ], - "duration_ms": 50.291, + "duration_ms": 50.257, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 0.0, @@ -1574,6 +1634,7 @@ "course_id": "computer_networks", "scenario": "evidence_bundle", "split": "dev", + "difficulty": "medium", "query": "网络层大题中192.168.1.10:5000映射到202.1.1.1:8000,回包怎么还原?去8.8.8.8该选哪条路由?", "top_chunk_ids": [ "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四~大题二-参考答案:c01", @@ -1597,7 +1658,8 @@ "computer-networks-041:p1:c01", "computer-networks-029:p17:c01" ], - "duration_ms": 64.504, + "duration_ms": 60.397, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -1630,6 +1692,7 @@ "course_id": "computer_networks", "scenario": "evidence_bundle", "split": "dev", + "difficulty": "medium", "query": "请找到NAPT网关那道题的题干和答案,解释回程端口还原以及/8为什么优先于默认路由。", "top_chunk_ids": [ "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四~大题二-参考答案:c01", @@ -1653,7 +1716,8 @@ "computer-networks-006:p2:c01", "computer-networks-003:q-computer-networks-003-q15:c01" ], - "duration_ms": 53.415, + "duration_ms": 99.261, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -1686,6 +1750,7 @@ "course_id": "software_testing", "scenario": "problem", "split": "dev", + "difficulty": "medium", "query": "三个独立输入变量,健壮最坏情况边界值测试需要多少组?和健壮边界值有什么不同?", "top_chunk_ids": [ "software-testing-030:s28:c01", @@ -1709,7 +1774,8 @@ "software-testing-030:s20:c01", "software-testing-034:s17:c01" ], - "duration_ms": 613.174, + "duration_ms": 582.762, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -1743,6 +1809,7 @@ "course_id": "software_testing", "scenario": "problem", "split": "dev", + "difficulty": "medium", "query": "每个输入都取七个含越界的代表值,再组合三个输入,是19组还是343组?", "top_chunk_ids": [ "software-testing-030:s11:c01", @@ -1766,7 +1833,8 @@ "software-testing-040:h-unit~题目-3-白盒覆盖分析-语句-分支-条件组合~解题过程~第四步-条件组合覆盖-multiple-condition-coverage:c02", "software-testing-058:h-概念整理~四-黑盒测试技术:c01" ], - "duration_ms": 82.743, + "duration_ms": 84.428, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 0.0, @@ -1801,6 +1869,7 @@ "course_id": "software_testing", "scenario": "problem", "split": "dev", + "difficulty": "medium", "query": "保险年龄1–18收费100,19–60收费200,61–150收费300,非整数或越界非法,怎么选等价类和边界测试?", "top_chunk_ids": [ "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~题目:c01", @@ -1824,7 +1893,8 @@ "software-testing-024:h-新高考-a~三-黑白盒测试:c04", "software-testing-052:h-st-讲义-二-黑盒测试:c02" ], - "duration_ms": 105.043, + "duration_ms": 109.043, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -1858,6 +1928,7 @@ "course_id": "software_testing", "scenario": "problem", "split": "dev", + "difficulty": "medium", "query": "测保险系统只用年龄1、80、150够吗?1–18、19–60、61–150三档收费,输入必须是整数。", "top_chunk_ids": [ "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~题目:c01", @@ -1881,7 +1952,8 @@ "software-testing-050:h-st-讲义-三-白盒测试:c11", "software-testing-035:s47:c01" ], - "duration_ms": 97.59, + "duration_ms": 168.151, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -1915,6 +1987,7 @@ "course_id": "software_testing", "scenario": "concept", "split": "validation", + "difficulty": "medium", "query": "判定覆盖能保证复合条件里的每个条件都独立影响结果吗?", "top_chunk_ids": [ "software-testing-046:q-software-testing-046-q34:c01", @@ -1938,7 +2011,8 @@ "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~4.-decision-condition-coverage-dcc-判定-条件覆盖:c01", "software-testing-030:s61:c01" ], - "duration_ms": 87.369, + "duration_ms": 90.168, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -1972,6 +2046,7 @@ "course_id": "software_testing", "scenario": "concept", "split": "validation", + "difficulty": "medium", "query": "if里有三个布尔条件,真假分支各走一次就算MC/DC了吗?", "top_chunk_ids": [ "software-testing-040:h-unit~题目-3-白盒覆盖分析-语句-分支-条件组合~解题过程~第三步-分支覆盖-判定覆盖-branch-coverage:c01", @@ -1995,7 +2070,8 @@ "software-testing-036:s73:c01", "software-testing-036:s77:c01" ], - "duration_ms": 82.687, + "duration_ms": 85.742, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 1.0, @@ -2029,6 +2105,7 @@ "course_id": "artificial_intelligence_intro", "scenario": "concept", "split": "validation", + "difficulty": "medium", "query": "决策树预剪枝为什么既能减少过拟合,又可能欠拟合?", "top_chunk_ids": [ "artificial-intelligence-intro-017:s27:c01", @@ -2052,7 +2129,8 @@ "artificial-intelligence-intro-017:s30:c01", "artificial-intelligence-intro-017:s32:c01" ], - "duration_ms": 439.346, + "duration_ms": 468.351, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2086,6 +2164,7 @@ "course_id": "artificial_intelligence_intro", "scenario": "concept", "split": "validation", + "difficulty": "medium", "query": "某次分裂当下没提高验证表现就停止,会不会错过后续更好的树?", "top_chunk_ids": [ "artificial-intelligence-intro-017:s23:c01", @@ -2109,7 +2188,8 @@ "artificial-intelligence-intro-023:h-dhh题目~图2-知识点-前馈神经网络-bp-算法-前向传播-梯度下降更新:c09", "artificial-intelligence-intro-017:s24:c01" ], - "duration_ms": 55.614, + "duration_ms": 56.56, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 1.0, @@ -2143,6 +2223,7 @@ "course_id": "artificial_intelligence_intro", "scenario": "concept", "split": "validation", + "difficulty": "medium", "query": "一致启发为什么能让A*像Dijkstra一样工作?请解释重赋权。", "top_chunk_ids": [ "artificial-intelligence-intro-008:h-第3章-搜索探寻与问题求解:c04", @@ -2166,7 +2247,8 @@ "artificial-intelligence-intro-042:h-2026人工智能导论回忆版:c01", "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~二-jk2.docx-官方重点清单-源c-逐条映射:c02" ], - "duration_ms": 62.802, + "duration_ms": 64.123, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2200,6 +2282,7 @@ "course_id": "artificial_intelligence_intro", "scenario": "concept", "split": "validation", + "difficulty": "medium", "query": "如果h(n)≤c(n,n′)+h(n′),为什么c′=c−h(n)+h(n′)不会是负数?", "top_chunk_ids": [ "artificial-intelligence-intro-050:s51:c01", @@ -2223,7 +2306,8 @@ "artificial-intelligence-intro-015:s61:c01", "artificial-intelligence-intro-015:s77:c01" ], - "duration_ms": 65.01, + "duration_ms": 65.555, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2257,6 +2341,7 @@ "course_id": "computer_organization", "scenario": "concept", "split": "dev", + "difficulty": "easy", "query": "Cache为什么能缓解CPU与主存速度不匹配?", "top_chunk_ids": [ "computer-organization-026:s76:c01", @@ -2280,7 +2365,8 @@ "computer-organization-016:h-b:c03", "computer-organization-045:h-题:c03" ], - "duration_ms": 298.947, + "duration_ms": 216.884, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2314,6 +2400,7 @@ "course_id": "computer_organization", "scenario": "concept", "split": "dev", + "difficulty": "medium", "query": "只加一小块高速缓存为什么有用?它利用程序访问的什么特点?", "top_chunk_ids": [ "computer-organization-032:s17:c01", @@ -2337,7 +2424,8 @@ "computer-organization-026:s63:c01", "computer-organization-028:s7:c01" ], - "duration_ms": 39.301, + "duration_ms": 40.691, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 1.0, @@ -2371,6 +2459,7 @@ "course_id": "web_frontend_fundamentals", "scenario": "concept", "split": "validation", + "difficulty": "easy", "query": "CSS只想增加元素下面的外边距,应该改哪个属性?", "top_chunk_ids": [ "web-frontend-fundamentals-014:s32:c01", @@ -2394,7 +2483,8 @@ "web-frontend-fundamentals-018:s22:c01", "web-frontend-fundamentals-015:s39:c01" ], - "duration_ms": 95.828, + "duration_ms": 95.571, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2428,6 +2518,7 @@ "course_id": "web_frontend_fundamentals", "scenario": "concept", "split": "validation", + "difficulty": "easy", "query": "不想动上左右间距,只想让一个块和下一个块离远一点,margin还是margin-bottom?", "top_chunk_ids": [ "web-frontend-fundamentals-014:s36:c01", @@ -2451,7 +2542,8 @@ "web-frontend-fundamentals-006:s14:c01", "web-frontend-fundamentals-008:s13:c01" ], - "duration_ms": 17.374, + "duration_ms": 16.965, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2485,6 +2577,7 @@ "course_id": "discrete_mathematics", "scenario": "problem", "split": "dev", + "difficulty": "medium", "query": "A={a,b,c,d},等价关系R={(a,b),(b,a),(c,d),(d,c)}∪I_A,对应什么划分?", "top_chunk_ids": [ "discrete-mathematics-003:p4:q-discrete-mathematics-003-q20:c01", @@ -2508,7 +2601,8 @@ "discrete-mathematics-003:p4:q-discrete-mathematics-003-q18:c01", "discrete-mathematics-006:p3:q-discrete-mathematics-006-q4:c01" ], - "duration_ms": 16.58, + "duration_ms": 119.372, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2542,6 +2636,7 @@ "course_id": "discrete_mathematics", "scenario": "problem", "split": "dev", + "difficulty": "medium", "query": "a和b等价,c和d等价,每个元素也与自己等价,为什么不是四个单独的等价类?", "top_chunk_ids": [ "discrete-mathematics-005:p6:q-discrete-mathematics-005-q4:c01", @@ -2565,7 +2660,8 @@ "discrete-mathematics-006:p7:q-discrete-mathematics-006-q5:c01", "discrete-mathematics-003:p8:q-discrete-mathematics-003-q35:c01" ], - "duration_ms": 5.798, + "duration_ms": 5.436, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2599,6 +2695,7 @@ "course_id": "electrical_engineering", "scenario": "review", "split": "dev", + "difficulty": "medium", "query": "电路复习大纲里一阶暂态分析要掌握哪三个量?我想先按它们安排练习。", "top_chunk_ids": [ "electrical-engineering-009:h-电路与电子技术-复习大纲:c01", @@ -2616,7 +2713,8 @@ "electrical-engineering-001:p6:c01", "electrical-engineering-001:p7:c01" ], - "duration_ms": 12.672, + "duration_ms": 12.023, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2644,6 +2742,7 @@ "course_id": "electrical_engineering", "scenario": "review", "split": "dev", + "difficulty": "medium", "query": "复习RC/RL一阶暂态时,初始值、最终值和变化快慢分别对应大纲中的什么?", "top_chunk_ids": [ "electrical-engineering-008:p1:c01", @@ -2661,7 +2760,8 @@ "electrical-engineering-001:p6:c01", "electrical-engineering-001:p7:c01" ], - "duration_ms": 3.98, + "duration_ms": 4.63, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2689,6 +2789,7 @@ "course_id": "data_structure", "scenario": "source_correction", "split": "dev", + "difficulty": "medium", "query": "资料说切换到std::sort就确保排序稳定,这句话对吗?", "top_chunk_ids": [ "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c03", @@ -2712,7 +2813,8 @@ "data-structure-020:h-2024-a-数据结构:c07", "data-structure-020:h-2024-a-数据结构:c02" ], - "duration_ms": 14.213, + "duration_ms": 13.385, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2746,6 +2848,7 @@ "course_id": "data_structure", "scenario": "source_correction", "split": "dev", + "difficulty": "medium", "query": "相同分数的学生必须保留原先先后顺序,笔记建议用std::sort,我能直接照做吗?", "top_chunk_ids": [ "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c01", @@ -2769,7 +2872,8 @@ "data-structure-010:h-2011级数据结构试卷a及答案:c03", "data-structure-015:h-2016数据结构试卷b及答案:c02" ], - "duration_ms": 14.014, + "duration_ms": 13.119, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 1.0, @@ -2796,141 +2900,3193 @@ "data-structure-010:h-2011级数据结构试卷a及答案:c03", "data-structure-015:h-2016数据结构试卷b及答案:c02" ] + }, + { + "case_id": "graphics-halfedge-1", + "topic_id": "graphics-halfedge", + "course_id": "computer_graphics", + "scenario": "code_reasoning", + "split": "dev", + "difficulty": "medium", + "query": "半边结构建模时,遍历一条有向边(u,v),怎样把它与反向半边(v,u)连起来?", + "top_chunk_ids": [ + "computer-graphics-009:p23:c01", + "computer-graphics-009:p29:c01", + "computer-graphics-009:p25:c01", + "computer-graphics-009:p44:c01", + "computer-graphics-009:p26:c01", + "computer-graphics-009:p24:c01", + "computer-graphics-009:p30:c01", + "computer-graphics-011:p65:c01", + "computer-graphics-011:p66:c01", + "computer-graphics-011:p12:c01", + "computer-graphics-011:p58:c01", + "computer-graphics-011:p10:c01", + "computer-graphics-011:p62:c01", + "computer-graphics-011:p57:c01", + "computer-graphics-010:p13:c01", + "computer-graphics-010:p29:c01", + "computer-graphics-010:p10:c01", + "computer-graphics-010:p11:c01", + "computer-graphics-010:p12:c01", + "computer-graphics-010:p14:c01" + ], + "duration_ms": 77.424, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "computer-graphics-009:p23:c01", + "computer-graphics-009:p25:c01", + "computer-graphics-009:p44:c01", + "computer-graphics-009:p26:c01", + "computer-graphics-009:p24:c01", + "computer-graphics-009:p30:c01", + "computer-graphics-011:p65:c01", + "computer-graphics-011:p66:c01", + "computer-graphics-011:p12:c01", + "computer-graphics-011:p58:c01", + "computer-graphics-011:p10:c01", + "computer-graphics-011:p62:c01", + "computer-graphics-011:p57:c01", + "computer-graphics-010:p13:c01", + "computer-graphics-010:p29:c01", + "computer-graphics-010:p10:c01", + "computer-graphics-010:p11:c01", + "computer-graphics-010:p12:c01", + "computer-graphics-010:p14:c01" + ] + }, + { + "case_id": "graphics-halfedge-2", + "topic_id": "graphics-halfedge", + "course_id": "computer_graphics", + "scenario": "code_reasoning", + "split": "dev", + "difficulty": "hard", + "query": "网格相邻两个面共享一条无向边。若只建立nextHalfEdge而不建立oppoHalfEdge,沿面走一圈仍可行;哪一类跨面操作会失去直接邻接信息,为什么?", + "top_chunk_ids": [ + "computer-graphics-009:p25:c01", + "computer-graphics-010:p26:c01", + "computer-graphics-009:p29:c01", + "computer-graphics-007:p5:c01", + "computer-graphics-004:p46:c01", + "computer-graphics-008:p6:c01", + "computer-graphics-010:p19:c01", + "computer-graphics-010:p24:c01", + "computer-graphics-007:p46:c01", + "computer-graphics-006:p46:c01", + "computer-graphics-009:p30:c01", + "computer-graphics-002:p17:c01", + "computer-graphics-007:p4:c01", + "computer-graphics-010:p25:c01", + "computer-graphics-010:p21:c01", + "computer-graphics-010:p23:c01", + "computer-graphics-006:p77:c01", + "computer-graphics-009:p24:c01", + "computer-graphics-009:p22:c01", + "computer-graphics-010:p28:c01" + ], + "duration_ms": 17.051, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "computer-graphics-009:p25:c01", + "computer-graphics-010:p26:c01", + "computer-graphics-007:p5:c01", + "computer-graphics-004:p46:c01", + "computer-graphics-008:p6:c01", + "computer-graphics-010:p19:c01", + "computer-graphics-010:p24:c01", + "computer-graphics-007:p46:c01", + "computer-graphics-006:p46:c01", + "computer-graphics-009:p30:c01", + "computer-graphics-002:p17:c01", + "computer-graphics-007:p4:c01", + "computer-graphics-010:p25:c01", + "computer-graphics-010:p21:c01", + "computer-graphics-010:p23:c01", + "computer-graphics-006:p77:c01", + "computer-graphics-009:p24:c01", + "computer-graphics-009:p22:c01", + "computer-graphics-010:p28:c01" + ] + }, + { + "case_id": "cs-intro-machine-language-1", + "topic_id": "cs-intro-machine-language", + "course_id": "computer_science_intro", + "scenario": "concept", + "split": "validation", + "difficulty": "medium", + "query": "CPU实际执行的是高级语言、汇编语言还是机器语言?为什么编译或汇编步骤不能省略?", + "top_chunk_ids": [ + "computer-science-intro-012:h-计算机科学概论:c03", + "computer-science-intro-007:s37:c01", + "computer-science-intro-008:s14:c01", + "computer-science-intro-010:s67:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q9:c01" + ], + "duration_ms": 23.612, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "computer-science-intro-012:h-计算机科学概论:c03", + "computer-science-intro-007:s37:c01", + "computer-science-intro-008:s14:c01", + "computer-science-intro-010:s67:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q9:c01" + ] + }, + { + "case_id": "cs-intro-machine-language-2", + "topic_id": "cs-intro-machine-language", + "course_id": "computer_science_intro", + "scenario": "concept", + "split": "validation", + "difficulty": "hard", + "query": "有人说“汇编语言最接近机器,所以CPU直接执行汇编文本”。请用取指—执行和翻译层次解释这句话哪里不严谨。", + "top_chunk_ids": [ + "computer-science-intro-012:h-计算机科学概论:c03", + "computer-science-intro-007:s37:c01", + "computer-science-intro-008:s14:c01", + "computer-science-intro-010:s67:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q9:c01" + ], + "duration_ms": 6.784, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "computer-science-intro-012:h-计算机科学概论:c03", + "computer-science-intro-007:s37:c01", + "computer-science-intro-008:s14:c01", + "computer-science-intro-010:s67:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q9:c01" + ] + }, + { + "case_id": "numerical-richardson-1", + "topic_id": "numerical-richardson", + "course_id": "computing_methods", + "scenario": "derivation", + "split": "dev", + "difficulty": "medium", + "query": "若F-F0(h)=a1 h^p1+高阶项,h足够小时为什么说p1是误差阶?", + "top_chunk_ids": [ + "computing-methods-002:p92:c01", + "computing-methods-048:p35:c01", + "computing-methods-002:p92:c02", + "computing-methods-049:p61:c01", + "computing-methods-002:p56:c01", + "computing-methods-048:p32:c01", + "computing-methods-002:p133:c01", + "computing-methods-002:p93:c01", + "computing-methods-045:p25:c01", + "computing-methods-046:p70:c01", + "computing-methods-048:p36:c01", + "computing-methods-007:h-2024提纲:c01", + "computing-methods-049:p25:c01", + "computing-methods-002:p23:c01", + "computing-methods-002:p95:c01", + "computing-methods-002:p24:c01", + "computing-methods-002:p190:c01", + "computing-methods-048:p22:c01", + "computing-methods-002:p94:c01", + "computing-methods-047:p21:c01" + ], + "duration_ms": 255.054, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "computing-methods-048:p35:c01", + "computing-methods-002:p92:c02", + "computing-methods-049:p61:c01", + "computing-methods-002:p56:c01", + "computing-methods-048:p32:c01", + "computing-methods-002:p133:c01", + "computing-methods-002:p93:c01", + "computing-methods-045:p25:c01", + "computing-methods-046:p70:c01", + "computing-methods-048:p36:c01", + "computing-methods-007:h-2024提纲:c01", + "computing-methods-049:p25:c01", + "computing-methods-002:p23:c01", + "computing-methods-002:p95:c01", + "computing-methods-002:p24:c01", + "computing-methods-002:p190:c01", + "computing-methods-048:p22:c01", + "computing-methods-002:p94:c01", + "computing-methods-047:p21:c01" + ] + }, + { + "case_id": "numerical-richardson-2", + "topic_id": "numerical-richardson", + "course_id": "computing_methods", + "scenario": "derivation", + "split": "dev", + "difficulty": "hard", + "query": "已知F0(h)和F0(qh)具有同一首项误差,怎样组合它们消去a1h^p1?请写出组合式并说明q的限制。", + "top_chunk_ids": [ + "computing-methods-002:p92:c01", + "computing-methods-048:p33:c01", + "computing-methods-045:p8:c01", + "computing-methods-011:q-computing-methods-011-q3:c01", + "computing-methods-012:q-computing-methods-012-q4:c01", + "computing-methods-002:p93:c01", + "computing-methods-048:p34:c01", + "computing-methods-006:q-computing-methods-006-q6:c01", + "computing-methods-019:h-数学系11级数值分析a:c03", + "computing-methods-048:p35:c01", + "computing-methods-015:p1:c01", + "computing-methods-002:p23:c01", + "computing-methods-002:p92:c02", + "computing-methods-014:q-computing-methods-014-q5:c01", + "computing-methods-044:h-课后题汇总:c01", + "computing-methods-002:p22:c01", + "computing-methods-002:p105:c01", + "computing-methods-018:h-数学系09级数值分析a:c03", + "computing-methods-002:p8:c01", + "computing-methods-006:h-2016华工计算机计算方法-数值分析-考试试卷:c01" + ], + "duration_ms": 55.056, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "computing-methods-048:p33:c01", + "computing-methods-045:p8:c01", + "computing-methods-011:q-computing-methods-011-q3:c01", + "computing-methods-012:q-computing-methods-012-q4:c01", + "computing-methods-002:p93:c01", + "computing-methods-048:p34:c01", + "computing-methods-006:q-computing-methods-006-q6:c01", + "computing-methods-019:h-数学系11级数值分析a:c03", + "computing-methods-048:p35:c01", + "computing-methods-015:p1:c01", + "computing-methods-002:p23:c01", + "computing-methods-002:p92:c02", + "computing-methods-014:q-computing-methods-014-q5:c01", + "computing-methods-044:h-课后题汇总:c01", + "computing-methods-002:p22:c01", + "computing-methods-002:p105:c01", + "computing-methods-018:h-数学系09级数值分析a:c03", + "computing-methods-002:p8:c01", + "computing-methods-006:h-2016华工计算机计算方法-数值分析-考试试卷:c01" + ] + }, + { + "case_id": "cpp-film-polymorphism-1", + "topic_id": "cpp-film-polymorphism", + "course_id": "cpp", + "scenario": "code_review", + "split": "dev", + "difficulty": "medium", + "query": "Film、DirectorCut和ForeignFilm这道题中,哪些属性应放在基类,哪些应留给派生类?", + "top_chunk_ids": [ + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c01", + "cpp-032:p152:q-cpp-032-q84:c01", + "cpp-009:h-b:c01", + "cpp-032:p160:q-cpp-032-q90:c01", + "cpp-008:h-a:c01", + "cpp-031:h-习题与解答~第8章练习题~一-思考题:c01", + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c03", + "cpp-032:p159:q-cpp-032-q88:c01", + "cpp-031:h-习题与解答~第8章练习题~一-思考题:c02", + "cpp-032:p167:q-cpp-032-q92:c01", + "cpp-031:h-习题与解答~第9章练习题~一-选择题:c01", + "cpp-043:p2:q-cpp-043-q16:c01", + "cpp-044:q-cpp-044-q8:c01", + "cpp-032:p162:q-cpp-032-q90:c01", + "cpp-044:q-cpp-044-q7:c01", + "cpp-032:p152:q-cpp-032-q83:c01", + "cpp-033:p1:q-cpp-033-q9:c01", + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c02", + "cpp-032:p156:q-cpp-032-q86:c01", + "cpp-027:p3:q-cpp-027-q13:c01" + ], + "duration_ms": 356.43, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.2, + "unjudged_chunk_ids": [ + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c01", + "cpp-032:p152:q-cpp-032-q84:c01", + "cpp-009:h-b:c01", + "cpp-032:p160:q-cpp-032-q90:c01", + "cpp-031:h-习题与解答~第8章练习题~一-思考题:c01", + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c03", + "cpp-032:p159:q-cpp-032-q88:c01", + "cpp-031:h-习题与解答~第8章练习题~一-思考题:c02", + "cpp-032:p167:q-cpp-032-q92:c01", + "cpp-031:h-习题与解答~第9章练习题~一-选择题:c01", + "cpp-043:p2:q-cpp-043-q16:c01", + "cpp-044:q-cpp-044-q8:c01", + "cpp-032:p162:q-cpp-032-q90:c01", + "cpp-044:q-cpp-044-q7:c01", + "cpp-032:p152:q-cpp-032-q83:c01", + "cpp-033:p1:q-cpp-033-q9:c01", + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c02", + "cpp-032:p156:q-cpp-032-q86:c01", + "cpp-027:p3:q-cpp-027-q13:c01" + ] + }, + { + "case_id": "cpp-film-polymorphism-2", + "topic_id": "cpp-film-polymorphism", + "course_id": "cpp", + "scenario": "code_review", + "split": "dev", + "difficulty": "hard", + "query": "若通过Film&指向DirectorCut并调用output,希望输出修订信息,基类和派生类的output还缺什么设计?同时说明为什么只改成员访问权限不够。", + "top_chunk_ids": [ + "cpp-027:p3:q-cpp-027-q13:c01", + "cpp-032:p155:q-cpp-032-q86:c01", + "cpp-043:p2:q-cpp-043-q13:c01", + "cpp-032:p159:q-cpp-032-q88:c01", + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c03", + "cpp-032:p167:q-cpp-032-q92:c01", + "cpp-034:p4:q-cpp-034-q22:c01", + "cpp-031:h-习题与解答~第9章练习题~一-选择题:c01", + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c02", + "cpp-027:p4:q-cpp-027-q19:c01", + "cpp-032:p152:q-cpp-032-q84:c01", + "cpp-031:h-习题与解答~第8章练习题~一-思考题:c02", + "cpp-032:p162:q-cpp-032-q90:c01", + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c01", + "cpp-032:p170:q-cpp-032-q96:c01", + "cpp-044:q-cpp-044-q8:c01", + "cpp-044:q-cpp-044-q6:c01", + "cpp-027:p4:q-cpp-027-q17:c01", + "cpp-032:p160:q-cpp-032-q90:c01", + "cpp-031:h-习题与解答~第9章练习题~一-思考题:c01" + ], + "duration_ms": 61.443, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "cpp-027:p3:q-cpp-027-q13:c01", + "cpp-032:p155:q-cpp-032-q86:c01", + "cpp-043:p2:q-cpp-043-q13:c01", + "cpp-032:p159:q-cpp-032-q88:c01", + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c03", + "cpp-032:p167:q-cpp-032-q92:c01", + "cpp-034:p4:q-cpp-034-q22:c01", + "cpp-031:h-习题与解答~第9章练习题~一-选择题:c01", + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c02", + "cpp-027:p4:q-cpp-027-q19:c01", + "cpp-032:p152:q-cpp-032-q84:c01", + "cpp-031:h-习题与解答~第8章练习题~一-思考题:c02", + "cpp-032:p162:q-cpp-032-q90:c01", + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c01", + "cpp-032:p170:q-cpp-032-q96:c01", + "cpp-044:q-cpp-044-q8:c01", + "cpp-044:q-cpp-044-q6:c01", + "cpp-027:p4:q-cpp-027-q17:c01", + "cpp-032:p160:q-cpp-032-q90:c01", + "cpp-031:h-习题与解答~第9章练习题~一-思考题:c01" + ] + }, + { + "case_id": "digital-mux-selection-1", + "topic_id": "digital-mux-selection", + "course_id": "digital_logic", + "scenario": "problem", + "split": "validation", + "difficulty": "medium", + "query": "四选一数据选择器B1B0为地址、X0到X3为输入时,00、01、10、11分别该选择哪个Xi?", + "top_chunk_ids": [ + "digital-logic-003:q-digital-logic-003-q2:c01", + "digital-logic-005:p5:c01", + "digital-logic-002:q-digital-logic-002-q3:c01", + "digital-logic-005:p3:c01", + "digital-logic-003:q-digital-logic-003-q26:c01", + "digital-logic-002:q-digital-logic-002-q7:c01", + "digital-logic-003:q-digital-logic-003-q6:c01", + "digital-logic-001:h-数字逻辑作业:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c04", + "digital-logic-002:q-digital-logic-002-q18:c01", + "digital-logic-002:q-digital-logic-002-q15:c01", + "digital-logic-003:q-digital-logic-003-q20:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c01", + "digital-logic-003:q-digital-logic-003-q29:c01", + "digital-logic-005:p1:c01", + "digital-logic-002:q-digital-logic-002-q19:c01", + "digital-logic-003:q-digital-logic-003-q28:c01", + "digital-logic-003:q-digital-logic-003-q16:c01", + "digital-logic-002:q-digital-logic-002-q17:c01", + "digital-logic-003:q-digital-logic-003-q21:c01" + ], + "duration_ms": 20.924, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "digital-logic-005:p5:c01", + "digital-logic-002:q-digital-logic-002-q3:c01", + "digital-logic-005:p3:c01", + "digital-logic-003:q-digital-logic-003-q26:c01", + "digital-logic-002:q-digital-logic-002-q7:c01", + "digital-logic-003:q-digital-logic-003-q6:c01", + "digital-logic-001:h-数字逻辑作业:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c04", + "digital-logic-002:q-digital-logic-002-q18:c01", + "digital-logic-002:q-digital-logic-002-q15:c01", + "digital-logic-003:q-digital-logic-003-q20:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c01", + "digital-logic-003:q-digital-logic-003-q29:c01", + "digital-logic-005:p1:c01", + "digital-logic-002:q-digital-logic-002-q19:c01", + "digital-logic-003:q-digital-logic-003-q28:c01", + "digital-logic-003:q-digital-logic-003-q16:c01", + "digital-logic-002:q-digital-logic-002-q17:c01", + "digital-logic-003:q-digital-logic-003-q21:c01" + ] + }, + { + "case_id": "digital-mux-selection-2", + "topic_id": "digital-mux-selection", + "course_id": "digital_logic", + "scenario": "problem", + "split": "validation", + "difficulty": "hard", + "query": "请从地址码的最小项推导四选一选择器输出式,并判断试卷中哪一项与00→X0、01→X1、10→X2、11→X3一致。", + "top_chunk_ids": [ + "digital-logic-003:q-digital-logic-003-q2:c01", + "digital-logic-001:h-数字逻辑作业:c02", + "digital-logic-002:q-digital-logic-002-q18:c01", + "digital-logic-003:q-digital-logic-003-q9:c01", + "digital-logic-003:q-digital-logic-003-q29:c01", + "digital-logic-002:q-digital-logic-002-q8:c01", + "digital-logic-003:q-digital-logic-003-q8:c01", + "digital-logic-003:q-digital-logic-003-q24:c01", + "digital-logic-002:q-digital-logic-002-q13:c01", + "digital-logic-002:q-digital-logic-002-q3:c01", + "digital-logic-002:q-digital-logic-002-q7:c01", + "digital-logic-003:q-digital-logic-003-q6:c01", + "digital-logic-005:p5:c01", + "digital-logic-001:h-数字逻辑作业:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c04", + "digital-logic-005:p3:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c01", + "digital-logic-003:q-digital-logic-003-q26:c01", + "digital-logic-005:p1:c01", + "digital-logic-002:q-digital-logic-002-q19:c01" + ], + "duration_ms": 6.483, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "digital-logic-001:h-数字逻辑作业:c02", + "digital-logic-002:q-digital-logic-002-q18:c01", + "digital-logic-003:q-digital-logic-003-q9:c01", + "digital-logic-003:q-digital-logic-003-q29:c01", + "digital-logic-002:q-digital-logic-002-q8:c01", + "digital-logic-003:q-digital-logic-003-q8:c01", + "digital-logic-003:q-digital-logic-003-q24:c01", + "digital-logic-002:q-digital-logic-002-q13:c01", + "digital-logic-002:q-digital-logic-002-q3:c01", + "digital-logic-002:q-digital-logic-002-q7:c01", + "digital-logic-003:q-digital-logic-003-q6:c01", + "digital-logic-005:p5:c01", + "digital-logic-001:h-数字逻辑作业:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c04", + "digital-logic-005:p3:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c01", + "digital-logic-003:q-digital-logic-003-q26:c01", + "digital-logic-005:p1:c01", + "digital-logic-002:q-digital-logic-002-q19:c01" + ] + }, + { + "case_id": "digital-yolo-eval-1", + "topic_id": "digital-yolo-eval", + "course_id": "digital_system_creative_design", + "scenario": "code_reasoning", + "split": "dev", + "difficulty": "medium", + "query": "YOLO评估代码为什么先按类别取boxes和scores,再调用NMS?NMS输出的索引用于什么?", + "top_chunk_ids": [ + "digital-system-creative-design-004:p5:c04", + "digital-system-creative-design-004:p8:c02", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c11", + "digital-system-creative-design-004:p9:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c12", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c13", + "digital-system-creative-design-004:p9:c02", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c09", + "digital-system-creative-design-005:p7:c01", + "digital-system-creative-design-004:p6:c01", + "digital-system-creative-design-004:p10:c03", + "digital-system-creative-design-004:p7:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c05", + "digital-system-creative-design-004:p2:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c14", + "digital-system-creative-design-511:h-readme_cn~口罩识别视频输入样例:c01", + "digital-system-creative-design-004:p10:c02", + "digital-system-creative-design-005:p11:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c10", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c02" + ], + "duration_ms": 37.993, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "digital-system-creative-design-004:p5:c04", + "digital-system-creative-design-004:p8:c02", + "digital-system-creative-design-004:p9:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c12", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c13", + "digital-system-creative-design-004:p9:c02", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c09", + "digital-system-creative-design-005:p7:c01", + "digital-system-creative-design-004:p6:c01", + "digital-system-creative-design-004:p10:c03", + "digital-system-creative-design-004:p7:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c05", + "digital-system-creative-design-004:p2:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c14", + "digital-system-creative-design-511:h-readme_cn~口罩识别视频输入样例:c01", + "digital-system-creative-design-004:p10:c02", + "digital-system-creative-design-005:p11:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c10", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c02" + ] + }, + { + "case_id": "digital-yolo-eval-2", + "topic_id": "digital-yolo-eval", + "course_id": "digital_system_creative_design", + "scenario": "code_reasoning", + "split": "dev", + "difficulty": "hard", + "query": "一张图同时含两类目标,若把所有类别的候选框一起做NMS会有什么风险?请依据当前代码的按类循环说明。", + "top_chunk_ids": [ + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c02", + "digital-system-creative-design-004:p2:c01", + "digital-system-creative-design-005:p6:c01", + "digital-system-creative-design-511:h-readme_cn~口罩识别视频输入样例~样例准备:c05", + "digital-system-creative-design-005:p7:c01", + "digital-system-creative-design-005:p13:c01", + "digital-system-creative-design-005:p11:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c10", + "digital-system-creative-design-005:p9:c01", + "digital-system-creative-design-005:p8:c01", + "digital-system-creative-design-004:p6:c02", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c01" + ], + "duration_ms": 12.505, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c02", + "digital-system-creative-design-004:p2:c01", + "digital-system-creative-design-005:p6:c01", + "digital-system-creative-design-511:h-readme_cn~口罩识别视频输入样例~样例准备:c05", + "digital-system-creative-design-005:p7:c01", + "digital-system-creative-design-005:p13:c01", + "digital-system-creative-design-005:p11:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c10", + "digital-system-creative-design-005:p9:c01", + "digital-system-creative-design-005:p8:c01", + "digital-system-creative-design-004:p6:c02", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c01" + ] + }, + { + "case_id": "embedded-uart4-pins-1", + "topic_id": "embedded-uart4-pins", + "course_id": "embedded_systems", + "scenario": "code_review", + "split": "validation", + "difficulty": "medium", + "query": "UART4初始化中PC10和PC11分别承担什么角色,GPIO模式为何不同?", + "top_chunk_ids": [ + "embedded-systems-018:p8:q-embedded-systems-018-q39:c01", + "embedded-systems-018:p7:q-embedded-systems-018-q39:c01", + "embedded-systems-017:p3:q-embedded-systems-017-q39:c01", + "embedded-systems-009:s23:c01", + "embedded-systems-002:s8:c01", + "embedded-systems-012:s50:c01", + "embedded-systems-017:p4:q-embedded-systems-017-q39:c01", + "embedded-systems-008:s19:c01", + "embedded-systems-013:s26:c01", + "embedded-systems-017:p3:q-embedded-systems-017-q30:c01", + "embedded-systems-018:p5:q-embedded-systems-018-q30:c01", + "embedded-systems-008:s24:c01", + "embedded-systems-011:s41:c01", + "embedded-systems-011:s54:c01", + "embedded-systems-012:s30:c01", + "embedded-systems-011:s55:c01", + "embedded-systems-013:s25:c01", + "embedded-systems-021:h-嵌入式系统复习2025:c02", + "embedded-systems-003:s12:c01", + "embedded-systems-006:s136:c01" + ], + "duration_ms": 198.87, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "embedded-systems-018:p7:q-embedded-systems-018-q39:c01", + "embedded-systems-017:p3:q-embedded-systems-017-q39:c01", + "embedded-systems-009:s23:c01", + "embedded-systems-002:s8:c01", + "embedded-systems-012:s50:c01", + "embedded-systems-017:p4:q-embedded-systems-017-q39:c01", + "embedded-systems-008:s19:c01", + "embedded-systems-013:s26:c01", + "embedded-systems-017:p3:q-embedded-systems-017-q30:c01", + "embedded-systems-018:p5:q-embedded-systems-018-q30:c01", + "embedded-systems-008:s24:c01", + "embedded-systems-011:s41:c01", + "embedded-systems-011:s54:c01", + "embedded-systems-012:s30:c01", + "embedded-systems-011:s55:c01", + "embedded-systems-013:s25:c01", + "embedded-systems-021:h-嵌入式系统复习2025:c02", + "embedded-systems-003:s12:c01", + "embedded-systems-006:s136:c01" + ] + }, + { + "case_id": "embedded-uart4-pins-2", + "topic_id": "embedded-uart4-pins", + "course_id": "embedded_systems", + "scenario": "code_review", + "split": "validation", + "difficulty": "hard", + "query": "把PC11也配成复用推挽输出后再做串口收发,最可能破坏哪一方向的数据路径?请从代码的Tx/Rx配置解释。", + "top_chunk_ids": [ + "embedded-systems-018:p8:q-embedded-systems-018-q39:c01", + "embedded-systems-018:p5:q-embedded-systems-018-q32:c01", + "embedded-systems-009:s5:c01", + "embedded-systems-006:s5:c01", + "embedded-systems-011:s29:c01", + "embedded-systems-011:s24:c01", + "embedded-systems-006:s25:c01", + "embedded-systems-011:s22:c01", + "embedded-systems-006:s28:c01", + "embedded-systems-011:s13:c01", + "embedded-systems-001:s9:c01", + "embedded-systems-011:s56:c01", + "embedded-systems-001:s11:c01", + "embedded-systems-011:s45:c01", + "embedded-systems-011:s23:c01", + "embedded-systems-011:s21:c01", + "embedded-systems-011:s28:c01", + "embedded-systems-011:s52:c01", + "embedded-systems-006:s32:c01", + "embedded-systems-003:s31:c01" + ], + "duration_ms": 33.343, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "embedded-systems-018:p5:q-embedded-systems-018-q32:c01", + "embedded-systems-009:s5:c01", + "embedded-systems-006:s5:c01", + "embedded-systems-011:s29:c01", + "embedded-systems-011:s24:c01", + "embedded-systems-006:s25:c01", + "embedded-systems-011:s22:c01", + "embedded-systems-006:s28:c01", + "embedded-systems-011:s13:c01", + "embedded-systems-001:s9:c01", + "embedded-systems-011:s56:c01", + "embedded-systems-001:s11:c01", + "embedded-systems-011:s45:c01", + "embedded-systems-011:s23:c01", + "embedded-systems-011:s21:c01", + "embedded-systems-011:s28:c01", + "embedded-systems-011:s52:c01", + "embedded-systems-006:s32:c01", + "embedded-systems-003:s31:c01" + ] + }, + { + "case_id": "analysis1-lipschitz-1", + "topic_id": "analysis1-lipschitz", + "course_id": "engineering_math_analysis_1", + "scenario": "proof", + "split": "dev", + "difficulty": "medium", + "query": "在闭区间上满足Lipschitz条件|f(x)-f(y)|≤L|x-y|,怎样证明f一致连续?", + "top_chunk_ids": [ + "engineering-mathematical-analysis-1-018:p2:q-engineering-mathematical-analysis-1-018-q20:c01", + "engineering-mathematical-analysis-1-010:p7:q-engineering-mathematical-analysis-1-010-q14:c01", + "engineering-mathematical-analysis-1-011:p7:q-engineering-mathematical-analysis-1-011-q18:c01", + "engineering-mathematical-analysis-1-024:p5:q-engineering-mathematical-analysis-1-024-q18:c01", + "engineering-mathematical-analysis-1-023:p5:q-engineering-mathematical-analysis-1-023-q18:c01", + "engineering-mathematical-analysis-1-015:p5:q-engineering-mathematical-analysis-1-015-q19:c01", + "engineering-mathematical-analysis-1-016:p8:q-engineering-mathematical-analysis-1-016-q15:c01", + "engineering-mathematical-analysis-1-013:p5:q-engineering-mathematical-analysis-1-013-q20:c01", + "engineering-mathematical-analysis-1-017:p5:q-engineering-mathematical-analysis-1-017-q20:c01", + "engineering-mathematical-analysis-1-025:p5:q-engineering-mathematical-analysis-1-025-q20:c01", + "engineering-mathematical-analysis-1-008:p9:q-engineering-mathematical-analysis-1-008-q11:c01", + "engineering-mathematical-analysis-1-006:p5:q-engineering-mathematical-analysis-1-006-q21:c01", + "engineering-mathematical-analysis-1-012:p5:q-engineering-mathematical-analysis-1-012-q15:c01", + "engineering-mathematical-analysis-1-009:p9:q-engineering-mathematical-analysis-1-009-q6:c01", + "engineering-mathematical-analysis-1-007:p5:q-engineering-mathematical-analysis-1-007-q19:c01", + "engineering-mathematical-analysis-1-022:p6:q-engineering-mathematical-analysis-1-022-q6:c01", + "engineering-mathematical-analysis-1-021:p6:q-engineering-mathematical-analysis-1-021-q16:c01", + "engineering-mathematical-analysis-1-003:s33:c01", + "engineering-mathematical-analysis-1-014:p7:q-engineering-mathematical-analysis-1-014-q20:c01", + "engineering-mathematical-analysis-1-021:p5:q-engineering-mathematical-analysis-1-021-q14:c01" + ], + "duration_ms": 61.303, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "engineering-mathematical-analysis-1-018:p2:q-engineering-mathematical-analysis-1-018-q20:c01", + "engineering-mathematical-analysis-1-010:p7:q-engineering-mathematical-analysis-1-010-q14:c01", + "engineering-mathematical-analysis-1-024:p5:q-engineering-mathematical-analysis-1-024-q18:c01", + "engineering-mathematical-analysis-1-023:p5:q-engineering-mathematical-analysis-1-023-q18:c01", + "engineering-mathematical-analysis-1-015:p5:q-engineering-mathematical-analysis-1-015-q19:c01", + "engineering-mathematical-analysis-1-016:p8:q-engineering-mathematical-analysis-1-016-q15:c01", + "engineering-mathematical-analysis-1-013:p5:q-engineering-mathematical-analysis-1-013-q20:c01", + "engineering-mathematical-analysis-1-017:p5:q-engineering-mathematical-analysis-1-017-q20:c01", + "engineering-mathematical-analysis-1-025:p5:q-engineering-mathematical-analysis-1-025-q20:c01", + "engineering-mathematical-analysis-1-008:p9:q-engineering-mathematical-analysis-1-008-q11:c01", + "engineering-mathematical-analysis-1-006:p5:q-engineering-mathematical-analysis-1-006-q21:c01", + "engineering-mathematical-analysis-1-012:p5:q-engineering-mathematical-analysis-1-012-q15:c01", + "engineering-mathematical-analysis-1-009:p9:q-engineering-mathematical-analysis-1-009-q6:c01", + "engineering-mathematical-analysis-1-007:p5:q-engineering-mathematical-analysis-1-007-q19:c01", + "engineering-mathematical-analysis-1-022:p6:q-engineering-mathematical-analysis-1-022-q6:c01", + "engineering-mathematical-analysis-1-021:p6:q-engineering-mathematical-analysis-1-021-q16:c01", + "engineering-mathematical-analysis-1-003:s33:c01", + "engineering-mathematical-analysis-1-014:p7:q-engineering-mathematical-analysis-1-014-q20:c01", + "engineering-mathematical-analysis-1-021:p5:q-engineering-mathematical-analysis-1-021-q14:c01" + ] + }, + { + "case_id": "analysis1-lipschitz-2", + "topic_id": "analysis1-lipschitz", + "course_id": "engineering_math_analysis_1", + "scenario": "proof", + "split": "dev", + "difficulty": "hard", + "query": "证明里直接取δ=ε/L有什么隐含前提?L=0时如何补全论证,为什么结论仍成立?", + "top_chunk_ids": [ + "engineering-mathematical-analysis-1-020:p7:q-engineering-mathematical-analysis-1-020-q9:c01", + "engineering-mathematical-analysis-1-020:p4:q-engineering-mathematical-analysis-1-020-q7:c01", + "engineering-mathematical-analysis-1-011:p7:q-engineering-mathematical-analysis-1-011-q18:c01", + "engineering-mathematical-analysis-1-020:p7:q-engineering-mathematical-analysis-1-020-q11:c01", + "engineering-mathematical-analysis-1-010:p7:q-engineering-mathematical-analysis-1-010-q14:c01", + "engineering-mathematical-analysis-1-015:p5:q-engineering-mathematical-analysis-1-015-q18:c01", + "engineering-mathematical-analysis-1-022:p7:q-engineering-mathematical-analysis-1-022-q6:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q10:c01", + "engineering-mathematical-analysis-1-008:p9:q-engineering-mathematical-analysis-1-008-q11:c01", + "engineering-mathematical-analysis-1-006:p1:q-engineering-mathematical-analysis-1-006-q1:c01", + "engineering-mathematical-analysis-1-007:p1:q-engineering-mathematical-analysis-1-007-q1:c01", + "engineering-mathematical-analysis-1-010:p3:q-engineering-mathematical-analysis-1-010-q1:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q2:c01", + "engineering-mathematical-analysis-1-012:p1:q-engineering-mathematical-analysis-1-012-q1:c01", + "engineering-mathematical-analysis-1-013:p1:q-engineering-mathematical-analysis-1-013-q2:c01", + "engineering-mathematical-analysis-1-014:p3:q-engineering-mathematical-analysis-1-014-q1:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q1:c01", + "engineering-mathematical-analysis-1-016:p3:q-engineering-mathematical-analysis-1-016-q1:c01", + "engineering-mathematical-analysis-1-017:p1:q-engineering-mathematical-analysis-1-017-q1:c01", + "engineering-mathematical-analysis-1-025:p1:q-engineering-mathematical-analysis-1-025-q1:c01" + ], + "duration_ms": 19.779, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "engineering-mathematical-analysis-1-020:p7:q-engineering-mathematical-analysis-1-020-q9:c01", + "engineering-mathematical-analysis-1-020:p4:q-engineering-mathematical-analysis-1-020-q7:c01", + "engineering-mathematical-analysis-1-020:p7:q-engineering-mathematical-analysis-1-020-q11:c01", + "engineering-mathematical-analysis-1-010:p7:q-engineering-mathematical-analysis-1-010-q14:c01", + "engineering-mathematical-analysis-1-015:p5:q-engineering-mathematical-analysis-1-015-q18:c01", + "engineering-mathematical-analysis-1-022:p7:q-engineering-mathematical-analysis-1-022-q6:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q10:c01", + "engineering-mathematical-analysis-1-008:p9:q-engineering-mathematical-analysis-1-008-q11:c01", + "engineering-mathematical-analysis-1-006:p1:q-engineering-mathematical-analysis-1-006-q1:c01", + "engineering-mathematical-analysis-1-007:p1:q-engineering-mathematical-analysis-1-007-q1:c01", + "engineering-mathematical-analysis-1-010:p3:q-engineering-mathematical-analysis-1-010-q1:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q2:c01", + "engineering-mathematical-analysis-1-012:p1:q-engineering-mathematical-analysis-1-012-q1:c01", + "engineering-mathematical-analysis-1-013:p1:q-engineering-mathematical-analysis-1-013-q2:c01", + "engineering-mathematical-analysis-1-014:p3:q-engineering-mathematical-analysis-1-014-q1:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q1:c01", + "engineering-mathematical-analysis-1-016:p3:q-engineering-mathematical-analysis-1-016-q1:c01", + "engineering-mathematical-analysis-1-017:p1:q-engineering-mathematical-analysis-1-017-q1:c01", + "engineering-mathematical-analysis-1-025:p1:q-engineering-mathematical-analysis-1-025-q1:c01" + ] + }, + { + "case_id": "analysis2-ellipsoid-1", + "topic_id": "analysis2-ellipsoid", + "course_id": "engineering_math_analysis_2", + "scenario": "optimization", + "split": "dev", + "difficulty": "medium", + "query": "第一卦限椭球x²/a²+y²/b²+z²/c²=1的切平面围成四面体,怎样把体积最小化化为一个受约束的乘积问题?", + "top_chunk_ids": [ + "engineering-mathematical-analysis-2-037:p6:q-engineering-mathematical-analysis-2-037-q14:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q6:c01", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c04", + "engineering-mathematical-analysis-2-043:p5:q-engineering-mathematical-analysis-2-043-q8:c01", + "engineering-mathematical-analysis-2-020:h-2014级软件-工科数学分析下b:c02", + "engineering-mathematical-analysis-2-009:p18:c01", + "engineering-mathematical-analysis-2-023:p2:q-engineering-mathematical-analysis-2-023-q13:c01", + "engineering-mathematical-analysis-2-029:p2:q-engineering-mathematical-analysis-2-029-q13:c01", + "engineering-mathematical-analysis-2-023:p7:q-engineering-mathematical-analysis-2-023-q27:c01", + "engineering-mathematical-analysis-2-033:q-engineering-mathematical-analysis-2-033-q2:c02", + "engineering-mathematical-analysis-2-009:p17:c01", + "engineering-mathematical-analysis-2-038:p6:q-engineering-mathematical-analysis-2-038-q19:c01", + "engineering-mathematical-analysis-2-040:p8:q-engineering-mathematical-analysis-2-040-q25:c01", + "engineering-mathematical-analysis-2-011:p20:c01", + "engineering-mathematical-analysis-2-009:p2:c01", + "engineering-mathematical-analysis-2-009:p20:c01", + "engineering-mathematical-analysis-2-009:p15:c01", + "engineering-mathematical-analysis-2-023:p4:q-engineering-mathematical-analysis-2-023-q20:c01", + "engineering-mathematical-analysis-2-009:p21:c01", + "engineering-mathematical-analysis-2-013:q-engineering-mathematical-analysis-2-013-q2:c01" + ], + "duration_ms": 130.929, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "engineering-mathematical-analysis-2-037:p6:q-engineering-mathematical-analysis-2-037-q14:c01", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c04", + "engineering-mathematical-analysis-2-043:p5:q-engineering-mathematical-analysis-2-043-q8:c01", + "engineering-mathematical-analysis-2-020:h-2014级软件-工科数学分析下b:c02", + "engineering-mathematical-analysis-2-009:p18:c01", + "engineering-mathematical-analysis-2-023:p2:q-engineering-mathematical-analysis-2-023-q13:c01", + "engineering-mathematical-analysis-2-029:p2:q-engineering-mathematical-analysis-2-029-q13:c01", + "engineering-mathematical-analysis-2-023:p7:q-engineering-mathematical-analysis-2-023-q27:c01", + "engineering-mathematical-analysis-2-033:q-engineering-mathematical-analysis-2-033-q2:c02", + "engineering-mathematical-analysis-2-009:p17:c01", + "engineering-mathematical-analysis-2-038:p6:q-engineering-mathematical-analysis-2-038-q19:c01", + "engineering-mathematical-analysis-2-040:p8:q-engineering-mathematical-analysis-2-040-q25:c01", + "engineering-mathematical-analysis-2-011:p20:c01", + "engineering-mathematical-analysis-2-009:p2:c01", + "engineering-mathematical-analysis-2-009:p20:c01", + "engineering-mathematical-analysis-2-009:p15:c01", + "engineering-mathematical-analysis-2-023:p4:q-engineering-mathematical-analysis-2-023-q20:c01", + "engineering-mathematical-analysis-2-009:p21:c01", + "engineering-mathematical-analysis-2-013:q-engineering-mathematical-analysis-2-013-q2:c01" + ] + }, + { + "case_id": "analysis2-ellipsoid-2", + "topic_id": "analysis2-ellipsoid", + "course_id": "engineering_math_analysis_2", + "scenario": "optimization", + "split": "dev", + "difficulty": "hard", + "query": "求使该体积最小的切点,并给出最小体积。请说明为何是最大化xyz而非最小化xyz。", + "top_chunk_ids": [ + "engineering-mathematical-analysis-2-037:p6:q-engineering-mathematical-analysis-2-037-q14:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q6:c02", + "engineering-mathematical-analysis-2-033:q-engineering-mathematical-analysis-2-033-q2:c02", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c04", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q6:c01", + "engineering-mathematical-analysis-2-019:h-2014级软件-工科数学分析下a:c03", + "engineering-mathematical-analysis-2-010:p22:c01", + "engineering-mathematical-analysis-2-040:p8:q-engineering-mathematical-analysis-2-040-q25:c01", + "engineering-mathematical-analysis-2-011:p10:c01", + "engineering-mathematical-analysis-2-038:p6:q-engineering-mathematical-analysis-2-038-q19:c01", + "engineering-mathematical-analysis-2-011:p22:c01", + "engineering-mathematical-analysis-2-045:p3:q-engineering-mathematical-analysis-2-045-q11:c01", + "engineering-mathematical-analysis-2-014:q-engineering-mathematical-analysis-2-014-q2:c01", + "engineering-mathematical-analysis-2-011:p20:c01", + "engineering-mathematical-analysis-2-045:p4:q-engineering-mathematical-analysis-2-045-q14:c01", + "engineering-mathematical-analysis-2-012:q-engineering-mathematical-analysis-2-012-q7:c01", + "engineering-mathematical-analysis-2-010:p30:c01", + "engineering-mathematical-analysis-2-011:p8:c01", + "engineering-mathematical-analysis-2-029:p2:q-engineering-mathematical-analysis-2-029-q12:c01", + "engineering-mathematical-analysis-2-010:p29:c01" + ], + "duration_ms": 25.52, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.2, + "unjudged_chunk_ids": [ + "engineering-mathematical-analysis-2-037:p6:q-engineering-mathematical-analysis-2-037-q14:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q6:c02", + "engineering-mathematical-analysis-2-033:q-engineering-mathematical-analysis-2-033-q2:c02", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c04", + "engineering-mathematical-analysis-2-019:h-2014级软件-工科数学分析下a:c03", + "engineering-mathematical-analysis-2-010:p22:c01", + "engineering-mathematical-analysis-2-040:p8:q-engineering-mathematical-analysis-2-040-q25:c01", + "engineering-mathematical-analysis-2-011:p10:c01", + "engineering-mathematical-analysis-2-038:p6:q-engineering-mathematical-analysis-2-038-q19:c01", + "engineering-mathematical-analysis-2-011:p22:c01", + "engineering-mathematical-analysis-2-045:p3:q-engineering-mathematical-analysis-2-045-q11:c01", + "engineering-mathematical-analysis-2-014:q-engineering-mathematical-analysis-2-014-q2:c01", + "engineering-mathematical-analysis-2-011:p20:c01", + "engineering-mathematical-analysis-2-045:p4:q-engineering-mathematical-analysis-2-045-q14:c01", + "engineering-mathematical-analysis-2-012:q-engineering-mathematical-analysis-2-012-q7:c01", + "engineering-mathematical-analysis-2-010:p30:c01", + "engineering-mathematical-analysis-2-011:p8:c01", + "engineering-mathematical-analysis-2-029:p2:q-engineering-mathematical-analysis-2-029-q12:c01", + "engineering-mathematical-analysis-2-010:p29:c01" + ] + }, + { + "case_id": "english-summary-revision-1", + "topic_id": "english-summary-revision", + "course_id": "english", + "scenario": "writing_review", + "split": "dev", + "difficulty": "medium", + "query": "给定这篇体育教育摘要,怎样保留中心论点并删去没有被原文支持的夸张细节?", + "top_chunk_ids": [], + "duration_ms": 4.122, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [] + }, + { + "case_id": "english-summary-revision-2", + "topic_id": "english-summary-revision", + "course_id": "english", + "scenario": "writing_review", + "split": "dev", + "difficulty": "hard", + "query": "请把摘要改成三句英文:观点、两条支撑、结论。哪些原句需要用更谨慎的表达,不能把“作者认为”写成事实?", + "top_chunk_ids": [ + "english-005:p1:c01" + ], + "duration_ms": 2.463, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "english-005:p1:c01" + ] + }, + { + "case_id": "ideology-law-morality-1", + "topic_id": "ideology-law-morality", + "course_id": "ideology_morality_and_rule_of_law", + "scenario": "case_analysis", + "split": "validation", + "difficulty": "medium", + "query": "许霆ATM异常取款材料题要求从道德与法律的关系作答。回答时至少要分开哪些层次?", + "top_chunk_ids": [ + "ideology-morality-and-rule-of-law-002:h-思政题目2024级回忆:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q5:c01" + ], + "duration_ms": 3.574, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q5:c01" + ] + }, + { + "case_id": "ideology-law-morality-2", + "topic_id": "ideology-law-morality", + "course_id": "ideology_morality_and_rule_of_law", + "scenario": "case_analysis", + "split": "validation", + "difficulty": "hard", + "query": "若只写“违法所以不道德”,为什么不足以完成这道辨析题?请给出不替代具体法条结论的分析框架。", + "top_chunk_ids": [ + "ideology-morality-and-rule-of-law-002:h-思政题目2024级回忆:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q3:c01" + ], + "duration_ms": 2.481, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q3:c01" + ] + }, + { + "case_id": "security-publickey-tradeoff-1", + "topic_id": "security-publickey-tradeoff", + "course_id": "information_security_intro", + "scenario": "concept", + "split": "dev", + "difficulty": "medium", + "query": "公开密钥密码相较对称密码解决了什么问题,又付出哪些代价?", + "top_chunk_ids": [ + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c02", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c01", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c03" + ], + "duration_ms": 6.363, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c01", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c03" + ] + }, + { + "case_id": "security-publickey-tradeoff-2", + "topic_id": "security-publickey-tradeoff", + "course_id": "information_security_intro", + "scenario": "concept", + "split": "dev", + "difficulty": "hard", + "query": "“公钥公开,所以别人也能解密我的密文”错在哪里?请区分加密、私钥保密和数字签名验证。", + "top_chunk_ids": [ + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c02", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c03", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c01" + ], + "duration_ms": 3.097, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c03", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c01" + ] + }, + { + "case_id": "securitymath-euler-1764-1", + "topic_id": "securitymath-euler-1764", + "course_id": "information_security_mathematics", + "scenario": "calculation", + "split": "dev", + "difficulty": "medium", + "query": "计算φ(1764)。应先怎样分解1764,欧拉函数的乘法公式怎样用?", + "top_chunk_ids": [ + "information-security-mathematics-009:q-information-security-mathematics-009-q17:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q19:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q14:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q9:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q22:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q23:c01", + "information-security-mathematics-007:q-information-security-mathematics-007-q3:c01", + "information-security-mathematics-006:p2:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q16:c01", + "information-security-mathematics-006:p1:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q19:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q23:c01" + ], + "duration_ms": 12.879, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.14285714285714285, + "unjudged_chunk_ids": [ + "information-security-mathematics-009:q-information-security-mathematics-009-q17:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q19:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q14:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q9:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q22:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q23:c01", + "information-security-mathematics-006:p2:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q16:c01", + "information-security-mathematics-006:p1:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q19:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q23:c01" + ] + }, + { + "case_id": "securitymath-euler-1764-2", + "topic_id": "securitymath-euler-1764", + "course_id": "information_security_mathematics", + "scenario": "calculation", + "split": "dev", + "difficulty": "hard", + "query": "有人直接把φ(1764)写成1763,为什么不对?请给出完整分解和数值。", + "top_chunk_ids": [ + "information-security-mathematics-009:q-information-security-mathematics-009-q16:c01" + ], + "duration_ms": 4.683, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "information-security-mathematics-009:q-information-security-mathematics-009-q16:c01" + ] + }, + { + "case_id": "intelligent-sa-localoptimum-1", + "topic_id": "intelligent-sa-localoptimum", + "course_id": "intelligent_algorithms", + "scenario": "algorithm_choice", + "split": "validation", + "difficulty": "medium", + "query": "为什么模拟退火适合存在多个局部最优的复杂解空间?它的主要调参风险是什么?", + "top_chunk_ids": [ + "intelligent-algorithms-025:h-sa算法适合应用场景~在解空间复杂-存在多个局部最优解的情况下表现出色~优点~全局搜索能力-能够跳出局部最优-具有较强的全局优化能力~参数选择敏感-算法的性能对参数-如初始温度-降温系数等-的选择较为敏感:c01", + "intelligent-algorithms-025:h-问题-初始参数的选择~3.-每个温度下的迭代次数-l:c01", + "intelligent-algorithms-025:h-问题-初始参数的选择~1.-初始温度-t0:c01", + "intelligent-algorithms-025:h-sa算法的基本理念:c01", + "intelligent-algorithms-006:p10:c01", + "intelligent-algorithms-006:p11:c01", + "intelligent-algorithms-006:p12:c01", + "intelligent-algorithms-006:p13:c01", + "intelligent-algorithms-006:p14:c01", + "intelligent-algorithms-006:p15:c01", + "intelligent-algorithms-006:p16:c01", + "intelligent-algorithms-006:p17:c01", + "intelligent-algorithms-006:p18:c01", + "intelligent-algorithms-006:p19:c01", + "intelligent-algorithms-006:p1:c01", + "intelligent-algorithms-006:p20:c01", + "intelligent-algorithms-006:p21:c01", + "intelligent-algorithms-006:p22:c01", + "intelligent-algorithms-006:p23:c01", + "intelligent-algorithms-006:p2:c01" + ], + "duration_ms": 63.981, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "intelligent-algorithms-025:h-问题-初始参数的选择~3.-每个温度下的迭代次数-l:c01", + "intelligent-algorithms-025:h-问题-初始参数的选择~1.-初始温度-t0:c01", + "intelligent-algorithms-025:h-sa算法的基本理念:c01", + "intelligent-algorithms-006:p10:c01", + "intelligent-algorithms-006:p11:c01", + "intelligent-algorithms-006:p12:c01", + "intelligent-algorithms-006:p13:c01", + "intelligent-algorithms-006:p14:c01", + "intelligent-algorithms-006:p15:c01", + "intelligent-algorithms-006:p16:c01", + "intelligent-algorithms-006:p17:c01", + "intelligent-algorithms-006:p18:c01", + "intelligent-algorithms-006:p19:c01", + "intelligent-algorithms-006:p1:c01", + "intelligent-algorithms-006:p20:c01", + "intelligent-algorithms-006:p21:c01", + "intelligent-algorithms-006:p22:c01", + "intelligent-algorithms-006:p23:c01", + "intelligent-algorithms-006:p2:c01" + ] + }, + { + "case_id": "intelligent-sa-localoptimum-2", + "topic_id": "intelligent-sa-localoptimum", + "course_id": "intelligent_algorithms", + "scenario": "algorithm_choice", + "split": "validation", + "difficulty": "hard", + "query": "将模拟退火用于0-1背包时,邻域解超容量该怎样处理?为什么“允许跳出局部最优”不等于允许保留不可行解?", + "top_chunk_ids": [ + "intelligent-algorithms-025:h-sa算法适合应用场景~在解空间复杂-存在多个局部最优解的情况下表现出色~优点~全局搜索能力-能够跳出局部最优-具有较强的全局优化能力~参数选择敏感-算法的性能对参数-如初始温度-降温系数等-的选择较为敏感:c01", + "intelligent-algorithms-025:h-问题-初始参数的选择~1.-初始温度-t0:c01", + "intelligent-algorithms-025:h-sa算法的基本理念:c01", + "intelligent-algorithms-006:p10:c01", + "intelligent-algorithms-006:p11:c01", + "intelligent-algorithms-006:p12:c01", + "intelligent-algorithms-006:p13:c01", + "intelligent-algorithms-006:p14:c01", + "intelligent-algorithms-006:p15:c01", + "intelligent-algorithms-006:p16:c01", + "intelligent-algorithms-006:p17:c01", + "intelligent-algorithms-006:p18:c01", + "intelligent-algorithms-006:p19:c01", + "intelligent-algorithms-006:p1:c01", + "intelligent-algorithms-006:p20:c01", + "intelligent-algorithms-006:p21:c01", + "intelligent-algorithms-006:p22:c01", + "intelligent-algorithms-006:p23:c01", + "intelligent-algorithms-006:p2:c01", + "intelligent-algorithms-006:p3:c01" + ], + "duration_ms": 15.893, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "intelligent-algorithms-025:h-问题-初始参数的选择~1.-初始温度-t0:c01", + "intelligent-algorithms-025:h-sa算法的基本理念:c01", + "intelligent-algorithms-006:p10:c01", + "intelligent-algorithms-006:p11:c01", + "intelligent-algorithms-006:p12:c01", + "intelligent-algorithms-006:p13:c01", + "intelligent-algorithms-006:p14:c01", + "intelligent-algorithms-006:p15:c01", + "intelligent-algorithms-006:p16:c01", + "intelligent-algorithms-006:p17:c01", + "intelligent-algorithms-006:p18:c01", + "intelligent-algorithms-006:p19:c01", + "intelligent-algorithms-006:p1:c01", + "intelligent-algorithms-006:p20:c01", + "intelligent-algorithms-006:p21:c01", + "intelligent-algorithms-006:p22:c01", + "intelligent-algorithms-006:p23:c01", + "intelligent-algorithms-006:p2:c01", + "intelligent-algorithms-006:p3:c01" + ] + }, + { + "case_id": "mao-selfrevolution-structure-1", + "topic_id": "mao-selfrevolution-structure", + "course_id": "mao_zedong_thought_overview", + "scenario": "argument_structure", + "split": "validation", + "difficulty": "medium", + "query": "以“党的自我革命”为主题做15分钟演讲,材料给出的时间分配与论证主线是什么?", + "top_chunk_ids": [ + "mao-zedong-thought-overview-002:h-演讲大纲:c01", + "mao-zedong-thought-overview-002:h-演讲大纲:c02", + "mao-zedong-thought-overview-001:s16:c01", + "mao-zedong-thought-overview-001:s2:c01", + "mao-zedong-thought-overview-001:s29:c01" + ], + "duration_ms": 167.167, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "mao-zedong-thought-overview-002:h-演讲大纲:c02", + "mao-zedong-thought-overview-001:s16:c01", + "mao-zedong-thought-overview-001:s2:c01", + "mao-zedong-thought-overview-001:s29:c01" + ] + }, + { + "case_id": "mao-selfrevolution-structure-2", + "topic_id": "mao-selfrevolution-structure", + "course_id": "mao_zedong_thought_overview", + "scenario": "argument_structure", + "split": "validation", + "difficulty": "hard", + "query": "如何把历史沿革、国情特点和当代价值连成论证,而不是逐段罗列口号?请给出可核验的三段式结构。", + "top_chunk_ids": [ + "mao-zedong-thought-overview-002:h-演讲大纲:c01", + "mao-zedong-thought-overview-001:s21:c01", + "mao-zedong-thought-overview-001:s7:c01", + "mao-zedong-thought-overview-001:s19:c01", + "mao-zedong-thought-overview-002:h-演讲大纲:c02", + "mao-zedong-thought-overview-001:s18:c01" + ], + "duration_ms": 5.395, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "mao-zedong-thought-overview-001:s21:c01", + "mao-zedong-thought-overview-001:s7:c01", + "mao-zedong-thought-overview-001:s19:c01", + "mao-zedong-thought-overview-002:h-演讲大纲:c02", + "mao-zedong-thought-overview-001:s18:c01" + ] + }, + { + "case_id": "marx-production-relations-1", + "topic_id": "marx-production-relations", + "course_id": "marxist_basic_principles", + "scenario": "applied_analysis", + "split": "dev", + "difficulty": "medium", + "query": "用生产力与生产关系的矛盾分析自动驾驶普及,材料列出的三个制度性问题是什么?", + "top_chunk_ids": [ + "marxist-basic-principles-002:s17:c01", + "marxist-basic-principles-002:s16:c01", + "marxist-basic-principles-001:h-演讲观点:c01", + "marxist-basic-principles-002:s15:c01", + "marxist-basic-principles-002:s13:c01", + "marxist-basic-principles-002:s2:c01", + "marxist-basic-principles-002:s14:c01", + "marxist-basic-principles-002:s21:c01", + "marxist-basic-principles-002:s12:c01", + "marxist-basic-principles-002:s11:c01", + "marxist-basic-principles-002:s19:c01", + "marxist-basic-principles-002:s5:c01", + "marxist-basic-principles-002:s7:c01", + "marxist-basic-principles-002:s20:c01" + ], + "duration_ms": 13.644, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "marxist-basic-principles-002:s16:c01", + "marxist-basic-principles-001:h-演讲观点:c01", + "marxist-basic-principles-002:s15:c01", + "marxist-basic-principles-002:s13:c01", + "marxist-basic-principles-002:s2:c01", + "marxist-basic-principles-002:s14:c01", + "marxist-basic-principles-002:s21:c01", + "marxist-basic-principles-002:s12:c01", + "marxist-basic-principles-002:s11:c01", + "marxist-basic-principles-002:s19:c01", + "marxist-basic-principles-002:s5:c01", + "marxist-basic-principles-002:s7:c01", + "marxist-basic-principles-002:s20:c01" + ] + }, + { + "case_id": "marx-production-relations-2", + "topic_id": "marx-production-relations", + "course_id": "marxist_basic_principles", + "scenario": "applied_analysis", + "split": "dev", + "difficulty": "hard", + "query": "为什么不能把“技术进步”直接等同于“社会问题自动解决”?请按材料把数据、就业和责任分别接入分析链。", + "top_chunk_ids": [ + "marxist-basic-principles-002:s12:c01", + "marxist-basic-principles-002:s17:c01", + "marxist-basic-principles-002:s15:c01", + "marxist-basic-principles-002:s5:c01", + "marxist-basic-principles-001:h-演讲观点:c01", + "marxist-basic-principles-002:s16:c01", + "marxist-basic-principles-002:s13:c01", + "marxist-basic-principles-002:s2:c01", + "marxist-basic-principles-002:s20:c01", + "marxist-basic-principles-002:s10:c01", + "marxist-basic-principles-002:s4:c01", + "marxist-basic-principles-002:s14:c01" + ], + "duration_ms": 3.926, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "marxist-basic-principles-002:s12:c01", + "marxist-basic-principles-002:s15:c01", + "marxist-basic-principles-002:s5:c01", + "marxist-basic-principles-001:h-演讲观点:c01", + "marxist-basic-principles-002:s16:c01", + "marxist-basic-principles-002:s13:c01", + "marxist-basic-principles-002:s2:c01", + "marxist-basic-principles-002:s20:c01", + "marxist-basic-principles-002:s10:c01", + "marxist-basic-principles-002:s4:c01", + "marxist-basic-principles-002:s14:c01" + ] + }, + { + "case_id": "modeling-project-crash-1", + "topic_id": "modeling-project-crash", + "course_id": "mathematical_modeling", + "scenario": "optimization", + "split": "dev", + "difficulty": "medium", + "query": "工期压缩模型中,为什么变量y(i,j)要有上下界,目标函数为什么是额外成本而不是任意缩短?", + "top_chunk_ids": [ + "mathematical-modeling-001:p105:c01", + "mathematical-modeling-029:p37:c01", + "mathematical-modeling-001:p532:c01", + "mathematical-modeling-020:p13:c01", + "mathematical-modeling-001:p34:c01", + "mathematical-modeling-024:p2:c01", + "mathematical-modeling-001:p148:c01", + "mathematical-modeling-030:p30:c01", + "mathematical-modeling-001:p21:c01", + "mathematical-modeling-013:p5:c01", + "mathematical-modeling-001:p106:c01", + "mathematical-modeling-029:p38:c01", + "mathematical-modeling-001:p534:c01", + "mathematical-modeling-020:p15:c01", + "mathematical-modeling-001:p442:c02", + "mathematical-modeling-017:p4:c02", + "mathematical-modeling-001:p10:c01", + "mathematical-modeling-002:p9:c01", + "mathematical-modeling-001:p524:c01", + "mathematical-modeling-020:p5:c01" + ], + "duration_ms": 1521.868, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.09090909090909091, + "unjudged_chunk_ids": [ + "mathematical-modeling-001:p105:c01", + "mathematical-modeling-029:p37:c01", + "mathematical-modeling-001:p532:c01", + "mathematical-modeling-020:p13:c01", + "mathematical-modeling-001:p34:c01", + "mathematical-modeling-024:p2:c01", + "mathematical-modeling-001:p148:c01", + "mathematical-modeling-030:p30:c01", + "mathematical-modeling-001:p21:c01", + "mathematical-modeling-013:p5:c01", + "mathematical-modeling-029:p38:c01", + "mathematical-modeling-001:p534:c01", + "mathematical-modeling-020:p15:c01", + "mathematical-modeling-001:p442:c02", + "mathematical-modeling-017:p4:c02", + "mathematical-modeling-001:p10:c01", + "mathematical-modeling-002:p9:c01", + "mathematical-modeling-001:p524:c01", + "mathematical-modeling-020:p5:c01" + ] + }, + { + "case_id": "modeling-project-crash-2", + "topic_id": "modeling-project-crash", + "course_id": "mathematical_modeling", + "scenario": "optimization", + "split": "dev", + "difficulty": "hard", + "query": "给定工期上限49天,怎样解释“压缩A和K各一天、多花1200元”这一解的可行性,还需要检查什么才能声称它最优?", + "top_chunk_ids": [ + "mathematical-modeling-001:p106:c01", + "mathematical-modeling-029:p38:c01", + "mathematical-modeling-001:p105:c01", + "mathematical-modeling-029:p37:c01", + "mathematical-modeling-001:p21:c02", + "mathematical-modeling-013:p5:c02", + "mathematical-modeling-001:p604:c01", + "mathematical-modeling-022:p18:c01", + "mathematical-modeling-001:p9:c01", + "mathematical-modeling-002:p8:c01", + "mathematical-modeling-001:p491:c01", + "mathematical-modeling-019:p4:c01", + "mathematical-modeling-001:p3:c01", + "mathematical-modeling-002:p2:c01", + "mathematical-modeling-001:p496:c01", + "mathematical-modeling-019:p9:c01", + "mathematical-modeling-001:p36:c02", + "mathematical-modeling-024:p4:c02", + "mathematical-modeling-026:p10:c01", + "mathematical-modeling-001:p36:c01" + ], + "duration_ms": 230.803, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "mathematical-modeling-029:p38:c01", + "mathematical-modeling-001:p105:c01", + "mathematical-modeling-029:p37:c01", + "mathematical-modeling-001:p21:c02", + "mathematical-modeling-013:p5:c02", + "mathematical-modeling-001:p604:c01", + "mathematical-modeling-022:p18:c01", + "mathematical-modeling-001:p9:c01", + "mathematical-modeling-002:p8:c01", + "mathematical-modeling-001:p491:c01", + "mathematical-modeling-019:p4:c01", + "mathematical-modeling-001:p3:c01", + "mathematical-modeling-002:p2:c01", + "mathematical-modeling-001:p496:c01", + "mathematical-modeling-019:p9:c01", + "mathematical-modeling-001:p36:c02", + "mathematical-modeling-024:p4:c02", + "mathematical-modeling-026:p10:c01", + "mathematical-modeling-001:p36:c01" + ] + }, + { + "case_id": "mobile-course-project-1", + "topic_id": "mobile-course-project", + "course_id": "mobile_application_development", + "scenario": "requirements_analysis", + "split": "dev", + "difficulty": "medium", + "query": "基于GeoQuiz做Android课程大作业,哪些是基础必做功能,哪些改造可能加分?", + "top_chunk_ids": [ + "mobile-application-development-002:p1:c01", + "mobile-application-development-002:p2:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c02", + "mobile-application-development-004:h-移动应用开发:c01", + "mobile-application-development-007:p5:c02", + "mobile-application-development-007:p1:c01", + "mobile-application-development-007:p2:c02", + "mobile-application-development-008:p3:c01", + "mobile-application-development-008:p1:c01", + "mobile-application-development-007:p4:c01", + "mobile-application-development-006:h-移动应用开发:c01", + "mobile-application-development-007:p5:c01", + "mobile-application-development-007:p2:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c03", + "mobile-application-development-007:p3:c01", + "mobile-application-development-007:p4:c02", + "mobile-application-development-007:p3:c02", + "mobile-application-development-008:p28:c01", + "mobile-application-development-005:p1:c01" + ], + "duration_ms": 13.581, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "mobile-application-development-002:p1:c01", + "mobile-application-development-002:p2:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c02", + "mobile-application-development-004:h-移动应用开发:c01", + "mobile-application-development-007:p5:c02", + "mobile-application-development-007:p1:c01", + "mobile-application-development-007:p2:c02", + "mobile-application-development-008:p3:c01", + "mobile-application-development-008:p1:c01", + "mobile-application-development-007:p4:c01", + "mobile-application-development-006:h-移动应用开发:c01", + "mobile-application-development-007:p5:c01", + "mobile-application-development-007:p2:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c03", + "mobile-application-development-007:p3:c01", + "mobile-application-development-007:p4:c02", + "mobile-application-development-007:p3:c02", + "mobile-application-development-008:p28:c01", + "mobile-application-development-005:p1:c01" + ] + }, + { + "case_id": "mobile-course-project-2", + "topic_id": "mobile-course-project", + "course_id": "mobile_application_development", + "scenario": "requirements_analysis", + "split": "dev", + "difficulty": "hard", + "query": "如果小组改做全新教师端App,为什么“能登录”还不够?请按前后端、数据和交付物列出最低可验收清单。", + "top_chunk_ids": [ + "mobile-application-development-002:p1:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c03", + "mobile-application-development-003:h-课程设计要求及报告模板:c02", + "mobile-application-development-004:h-移动应用开发:c01", + "mobile-application-development-005:p3:c01", + "mobile-application-development-005:p2:c01", + "mobile-application-development-006:h-移动应用开发:c01", + "mobile-application-development-008:p9:c01", + "mobile-application-development-002:p2:c01", + "mobile-application-development-008:p28:c01" + ], + "duration_ms": 4.32, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "mobile-application-development-002:p1:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c03", + "mobile-application-development-003:h-课程设计要求及报告模板:c02", + "mobile-application-development-004:h-移动应用开发:c01", + "mobile-application-development-005:p3:c01", + "mobile-application-development-005:p2:c01", + "mobile-application-development-006:h-移动应用开发:c01", + "mobile-application-development-008:p9:c01", + "mobile-application-development-002:p2:c01", + "mobile-application-development-008:p28:c01" + ] + }, + { + "case_id": "webapp-servlet-lifecycle-1", + "topic_id": "webapp-servlet-lifecycle", + "course_id": "network_application_architecture", + "scenario": "exam_review", + "split": "validation", + "difficulty": "medium", + "query": "网络应用开发复习中,Servlet相关内容应按哪些知识链条组织,而不是只背类名?", + "top_chunk_ids": [ + "network-application-architecture-001:p2:c01", + "network-application-architecture-001:p1:c01" + ], + "duration_ms": 2.992, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "network-application-architecture-001:p1:c01" + ] + }, + { + "case_id": "webapp-servlet-lifecycle-2", + "topic_id": "webapp-servlet-lifecycle", + "course_id": "network_application_architecture", + "scenario": "exam_review", + "split": "validation", + "difficulty": "hard", + "query": "把Servlet、Filter、Listener、JSP、JDBC和MVC都列进答案,仍可能答不好编程题。请按一次请求处理流程说明它们各自应关注什么。", + "top_chunk_ids": [ + "network-application-architecture-001:p2:c01", + "network-application-architecture-001:p1:c01" + ], + "duration_ms": 2.296, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "network-application-architecture-001:p1:c01" + ] + }, + { + "case_id": "netmgmt-snmp-bulk-1", + "topic_id": "netmgmt-snmp-bulk", + "course_id": "network_management", + "scenario": "protocol_analysis", + "split": "dev", + "difficulty": "medium", + "query": "MIB Browser以表格浏览ifTable时,为什么需要关注GetNext或GetBulk,而不是只读一个Get响应?", + "top_chunk_ids": [ + "network-management-005:h-实验大纲-2026:c02", + "network-management-005:h-实验大纲-2026:c03", + "network-management-005:h-实验大纲-2026:c01", + "network-management-005:h-实验大纲-2026:c04", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~综合题-5-8:c01", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~选择题-10-2:c01" + ], + "duration_ms": 7.885, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "network-management-005:h-实验大纲-2026:c02", + "network-management-005:h-实验大纲-2026:c01", + "network-management-005:h-实验大纲-2026:c04", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~综合题-5-8:c01", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~选择题-10-2:c01" + ] + }, + { + "case_id": "netmgmt-snmp-bulk-2", + "topic_id": "netmgmt-snmp-bulk", + "course_id": "network_management", + "scenario": "protocol_analysis", + "split": "dev", + "difficulty": "hard", + "query": "比较SNMPv2c的GetBulk与反复GetNext:答题时应区分哪些共同点和哪些仍需抓包核实的PDU字段?", + "top_chunk_ids": [ + "network-management-005:h-实验大纲-2026:c03", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~简答题-4-10:c01", + "network-management-005:h-实验大纲-2026:c02", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~选择题-10-2:c01", + "network-management-002:p1:c01", + "network-management-005:h-实验大纲-2026:c01", + "network-management-001:h-网络管理考试~题型:c01" + ], + "duration_ms": 3.126, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "network-management-001:h-网络管理考试~考试题目-2026回忆版~简答题-4-10:c01", + "network-management-005:h-实验大纲-2026:c02", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~选择题-10-2:c01", + "network-management-002:p1:c01", + "network-management-005:h-实验大纲-2026:c01", + "network-management-001:h-网络管理考试~题型:c01" + ] + }, + { + "case_id": "ngn-scenario-security-1", + "topic_id": "ngn-scenario-security", + "course_id": "next_generation_network_architecture", + "scenario": "synthesis", + "split": "dev", + "difficulty": "medium", + "query": "天地一体化网络的应用场景讨论与网络安全问题讨论,应如何分开回答?", + "top_chunk_ids": [ + "next-generation-network-architecture-001:s24:c01", + "next-generation-network-architecture-001:s16:c01", + "next-generation-network-architecture-001:s20:c01", + "next-generation-network-architecture-001:s17:c01", + "next-generation-network-architecture-001:s18:c01", + "next-generation-network-architecture-001:s2:c01", + "next-generation-network-architecture-001:s8:c01", + "next-generation-network-architecture-001:s32:c01", + "next-generation-network-architecture-001:s10:c01", + "next-generation-network-architecture-001:s27:c01", + "next-generation-network-architecture-001:s26:c01", + "next-generation-network-architecture-001:s31:c01", + "next-generation-network-architecture-001:s14:c01", + "next-generation-network-architecture-001:s7:c01", + "next-generation-network-architecture-001:s21:c01", + "next-generation-network-architecture-001:s9:c01", + "next-generation-network-architecture-001:s28:c01", + "next-generation-network-architecture-001:s25:c01" + ], + "duration_ms": 10.718, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "next-generation-network-architecture-001:s16:c01", + "next-generation-network-architecture-001:s20:c01", + "next-generation-network-architecture-001:s17:c01", + "next-generation-network-architecture-001:s2:c01", + "next-generation-network-architecture-001:s8:c01", + "next-generation-network-architecture-001:s32:c01", + "next-generation-network-architecture-001:s10:c01", + "next-generation-network-architecture-001:s27:c01", + "next-generation-network-architecture-001:s26:c01", + "next-generation-network-architecture-001:s31:c01", + "next-generation-network-architecture-001:s14:c01", + "next-generation-network-architecture-001:s7:c01", + "next-generation-network-architecture-001:s21:c01", + "next-generation-network-architecture-001:s9:c01", + "next-generation-network-architecture-001:s28:c01", + "next-generation-network-architecture-001:s25:c01" + ] + }, + { + "case_id": "ngn-scenario-security-2", + "topic_id": "ngn-scenario-security", + "course_id": "next_generation_network_architecture", + "scenario": "synthesis", + "split": "dev", + "difficulty": "hard", + "query": "若题目要求从应用需求推导安全要求,怎样避免把“有卫星/地面协同”直接当成“已经安全”?请给出论证步骤。", + "top_chunk_ids": [ + "next-generation-network-architecture-001:s3:c01", + "next-generation-network-architecture-001:s20:c01", + "next-generation-network-architecture-001:s16:c01", + "next-generation-network-architecture-001:s18:c01", + "next-generation-network-architecture-001:s15:c01", + "next-generation-network-architecture-001:s8:c01", + "next-generation-network-architecture-001:s17:c01", + "next-generation-network-architecture-001:s6:c01", + "next-generation-network-architecture-001:s9:c01", + "next-generation-network-architecture-001:s24:c01", + "next-generation-network-architecture-001:s32:c01", + "next-generation-network-architecture-001:s10:c01" + ], + "duration_ms": 3.637, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.25, + "unjudged_chunk_ids": [ + "next-generation-network-architecture-001:s3:c01", + "next-generation-network-architecture-001:s20:c01", + "next-generation-network-architecture-001:s16:c01", + "next-generation-network-architecture-001:s15:c01", + "next-generation-network-architecture-001:s8:c01", + "next-generation-network-architecture-001:s17:c01", + "next-generation-network-architecture-001:s6:c01", + "next-generation-network-architecture-001:s9:c01", + "next-generation-network-architecture-001:s32:c01", + "next-generation-network-architecture-001:s10:c01" + ] + }, + { + "case_id": "signals-dft-cosine-1", + "topic_id": "signals-dft-cosine", + "course_id": "signals_and_communication", + "scenario": "derivation", + "split": "dev", + "difficulty": "medium", + "query": "x(n)=cos(nπ/6)、N=12时,为什么它恰好落在12点DFT的频点上?", + "top_chunk_ids": [ + "signals-and-communication-014:s62:c01", + "signals-and-communication-014:s59:c01", + "signals-and-communication-014:s54:c01", + "signals-and-communication-014:s61:c01", + "signals-and-communication-014:s45:c01", + "signals-and-communication-014:s28:c01", + "signals-and-communication-014:s46:c01", + "signals-and-communication-014:s56:c01", + "signals-and-communication-014:s36:c01", + "signals-and-communication-014:s47:c01", + "signals-and-communication-014:s53:c01", + "signals-and-communication-014:s25:c01", + "signals-and-communication-014:s52:c01", + "signals-and-communication-014:s58:c01", + "signals-and-communication-014:s42:c01", + "signals-and-communication-014:s30:c01", + "signals-and-communication-014:s33:c01", + "signals-and-communication-014:s31:c01", + "signals-and-communication-014:s57:c01", + "signals-and-communication-014:s29:c01" + ], + "duration_ms": 221.585, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.07142857142857142, + "unjudged_chunk_ids": [ + "signals-and-communication-014:s62:c01", + "signals-and-communication-014:s59:c01", + "signals-and-communication-014:s54:c01", + "signals-and-communication-014:s61:c01", + "signals-and-communication-014:s45:c01", + "signals-and-communication-014:s28:c01", + "signals-and-communication-014:s46:c01", + "signals-and-communication-014:s56:c01", + "signals-and-communication-014:s36:c01", + "signals-and-communication-014:s47:c01", + "signals-and-communication-014:s53:c01", + "signals-and-communication-014:s25:c01", + "signals-and-communication-014:s52:c01", + "signals-and-communication-014:s42:c01", + "signals-and-communication-014:s30:c01", + "signals-and-communication-014:s33:c01", + "signals-and-communication-014:s31:c01", + "signals-and-communication-014:s57:c01", + "signals-and-communication-014:s29:c01" + ] + }, + { + "case_id": "signals-dft-cosine-2", + "topic_id": "signals-dft-cosine", + "course_id": "signals_and_communication", + "scenario": "derivation", + "split": "dev", + "difficulty": "hard", + "query": "不用逐项硬算,推导该12点DFT的非零频率索引和幅度;怎样处理cos的正负频率两项?", + "top_chunk_ids": [ + "signals-and-communication-014:s54:c01", + "signals-and-communication-014:s31:c01", + "signals-and-communication-014:s56:c01", + "signals-and-communication-014:s42:c01", + "signals-and-communication-014:s48:c01", + "signals-and-communication-014:s41:c01", + "signals-and-communication-014:s50:c01", + "signals-and-communication-014:s45:c01", + "signals-and-communication-014:s35:c01", + "signals-and-communication-014:s62:c01", + "signals-and-communication-014:s28:c01", + "signals-and-communication-014:s46:c01", + "signals-and-communication-014:s33:c01", + "signals-and-communication-014:s47:c01", + "signals-and-communication-014:s30:c01", + "signals-and-communication-014:s27:c01", + "signals-and-communication-014:s58:c01", + "signals-and-communication-014:s57:c01", + "signals-and-communication-014:s49:c01", + "signals-and-communication-014:s36:c01" + ], + "duration_ms": 34.937, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.058823529411764705, + "unjudged_chunk_ids": [ + "signals-and-communication-014:s54:c01", + "signals-and-communication-014:s31:c01", + "signals-and-communication-014:s56:c01", + "signals-and-communication-014:s42:c01", + "signals-and-communication-014:s48:c01", + "signals-and-communication-014:s41:c01", + "signals-and-communication-014:s50:c01", + "signals-and-communication-014:s45:c01", + "signals-and-communication-014:s35:c01", + "signals-and-communication-014:s62:c01", + "signals-and-communication-014:s28:c01", + "signals-and-communication-014:s46:c01", + "signals-and-communication-014:s33:c01", + "signals-and-communication-014:s47:c01", + "signals-and-communication-014:s30:c01", + "signals-and-communication-014:s27:c01", + "signals-and-communication-014:s57:c01", + "signals-and-communication-014:s49:c01", + "signals-and-communication-014:s36:c01" + ] + }, + { + "case_id": "softwareeng-fanout-coupling-1", + "topic_id": "softwareeng-fanout-coupling", + "course_id": "software_engineering", + "scenario": "mistake_review", + "split": "dev", + "difficulty": "medium", + "query": "样例说推荐扇出为3或4;它与耦合分别衡量什么,为什么不能混用?", + "top_chunk_ids": [ + "software-engineering-027:s16:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c12", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c09", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c07", + "software-engineering-017:s39:c01", + "software-engineering-017:s4:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c08", + "software-engineering-011:s3:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c21", + "software-engineering-002:p51:c01", + "software-engineering-025:s103:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c04", + "software-engineering-007:s106:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c11", + "software-engineering-025:s104:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c20", + "software-engineering-014:s5:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c26", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第三组-系统设计与面向对象-solid:c01" + ], + "duration_ms": 747.266, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "software-engineering-027:s16:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c09", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c07", + "software-engineering-017:s39:c01", + "software-engineering-017:s4:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c08", + "software-engineering-011:s3:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c21", + "software-engineering-002:p51:c01", + "software-engineering-025:s103:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c04", + "software-engineering-007:s106:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c11", + "software-engineering-025:s104:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c20", + "software-engineering-014:s5:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c26", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第三组-系统设计与面向对象-solid:c01" + ] + }, + { + "case_id": "softwareeng-fanout-coupling-2", + "topic_id": "softwareeng-fanout-coupling", + "course_id": "software_engineering", + "scenario": "mistake_review", + "split": "dev", + "difficulty": "hard", + "query": "“一个模块调用很多模块,所以它内部元素结合不紧密”这句话混淆了哪两个度量?请给出改正后的评审意见。", + "top_chunk_ids": [ + "software-engineering-025:s114:c01", + "software-engineering-030:s113:c01", + "software-engineering-038:q-software-engineering-038-q8:c01", + "software-engineering-030:s120:c01", + "software-engineering-003:p8:c02", + "software-engineering-025:s116:c01", + "software-engineering-010:s33:c01", + "software-engineering-030:s115:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~一-判断题-50道~第三组-系统设计与原则-u5-l8:c01", + "software-engineering-034:s46:c01", + "software-engineering-015:s49:c01", + "software-engineering-025:s122:c01", + "software-engineering-024:s53:c01", + "software-engineering-029:s32:c01", + "software-engineering-024:s148:c01", + "software-engineering-024:s150:c01", + "software-engineering-030:s20:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c20", + "software-engineering-038:q-software-engineering-038-q22:c01", + "software-engineering-030:s111:c01" + ], + "duration_ms": 78.202, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "software-engineering-025:s114:c01", + "software-engineering-030:s113:c01", + "software-engineering-038:q-software-engineering-038-q8:c01", + "software-engineering-030:s120:c01", + "software-engineering-003:p8:c02", + "software-engineering-025:s116:c01", + "software-engineering-010:s33:c01", + "software-engineering-030:s115:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~一-判断题-50道~第三组-系统设计与原则-u5-l8:c01", + "software-engineering-034:s46:c01", + "software-engineering-015:s49:c01", + "software-engineering-025:s122:c01", + "software-engineering-024:s53:c01", + "software-engineering-029:s32:c01", + "software-engineering-024:s148:c01", + "software-engineering-024:s150:c01", + "software-engineering-030:s20:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c20", + "software-engineering-038:q-software-engineering-038-q22:c01", + "software-engineering-030:s111:c01" + ] + }, + { + "case_id": "swarm-reward-diagnosis-1", + "topic_id": "swarm-reward-diagnosis", + "course_id": "swarm_intelligence", + "scenario": "experiment_analysis", + "split": "validation", + "difficulty": "medium", + "query": "强化学习训练奖励在前期波动、后期趋于平缓时,能说明什么,不能说明什么?", + "top_chunk_ids": [ + "swarm-intelligence-008:p45:c01", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c02", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c13", + "swarm-intelligence-008:p47:c01", + "swarm-intelligence-008:p103:c01", + "swarm-intelligence-004:h-群体智能实验报告~算法复述~分析与见解:c01", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c01", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c04", + "swarm-intelligence-008:p48:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c06", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c10", + "swarm-intelligence-008:p51:c01", + "swarm-intelligence-008:p46:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c15", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c03", + "swarm-intelligence-008:p41:c01", + "swarm-intelligence-008:p58:c01", + "swarm-intelligence-008:p42:c01", + "swarm-intelligence-008:p100:c01", + "swarm-intelligence-008:p101:c01" + ], + "duration_ms": 218.239, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "swarm-intelligence-008:p45:c01", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c02", + "swarm-intelligence-008:p47:c01", + "swarm-intelligence-008:p103:c01", + "swarm-intelligence-004:h-群体智能实验报告~算法复述~分析与见解:c01", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c01", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c04", + "swarm-intelligence-008:p48:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c06", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c10", + "swarm-intelligence-008:p51:c01", + "swarm-intelligence-008:p46:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c15", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c03", + "swarm-intelligence-008:p41:c01", + "swarm-intelligence-008:p58:c01", + "swarm-intelligence-008:p42:c01", + "swarm-intelligence-008:p100:c01", + "swarm-intelligence-008:p101:c01" + ] + }, + { + "case_id": "swarm-reward-diagnosis-2", + "topic_id": "swarm-reward-diagnosis", + "course_id": "swarm_intelligence", + "scenario": "experiment_analysis", + "split": "validation", + "difficulty": "hard", + "query": "怎样区分“接近局部稳定”“达到真实最大回报”和“记录/实现有误”?请给出至少三项需要补充的实验检查。", + "top_chunk_ids": [ + "swarm-intelligence-004:h-群体智能实验报告~算法复述~实验分析:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c06", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c13", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c02", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c12", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c05", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c10", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c02", + "swarm-intelligence-008:p91:c01", + "swarm-intelligence-004:h-群体智能实验报告~算法复述~分析与见解:c01", + "swarm-intelligence-008:p103:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c09", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c07", + "swarm-intelligence-008:p35:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c04", + "swarm-intelligence-008:p93:c01", + "swarm-intelligence-007:p129:c01", + "swarm-intelligence-007:p130:c01", + "swarm-intelligence-007:p38:c01" + ], + "duration_ms": 28.361, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "swarm-intelligence-004:h-群体智能实验报告~算法复述~实验分析:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c06", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c02", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c12", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c05", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c10", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c02", + "swarm-intelligence-008:p91:c01", + "swarm-intelligence-004:h-群体智能实验报告~算法复述~分析与见解:c01", + "swarm-intelligence-008:p103:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c09", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c07", + "swarm-intelligence-008:p35:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c04", + "swarm-intelligence-008:p93:c01", + "swarm-intelligence-007:p129:c01", + "swarm-intelligence-007:p130:c01", + "swarm-intelligence-007:p38:c01" + ] + }, + { + "case_id": "physics31-grating-overlap-1", + "topic_id": "physics31-grating-overlap", + "course_id": "university_physics_3_1", + "scenario": "calculation", + "split": "dev", + "difficulty": "medium", + "query": "光栅方程d sinφ=kλ中,两条谱线重合时应满足什么等式?", + "top_chunk_ids": [ + "university-physics-3-1-006:q-university-physics-3-1-006-q8:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.3-光栅方程:c01", + "university-physics-3-1-011:p12:q-university-physics-3-1-011-q5:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.6-谱线重叠:c01", + "university-physics-3-1-011:p14:q-university-physics-3-1-011-q5:c01", + "university-physics-3-1-008:q-university-physics-3-1-008-q7:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.5-缺级:c01", + "university-physics-3-1-002:h-13.-四类计算题固定模板~13.3-光栅题:c01", + "university-physics-3-1-002:h-0.-期末复习总览:c01", + "university-physics-3-1-005:q-university-physics-3-1-005-q32:c01", + "university-physics-3-1-013:q-university-physics-3-1-013-q5:c01", + "university-physics-3-1-004:q-university-physics-3-1-004-q6:c01", + "university-physics-3-1-002:h-7.-光的干涉~7.2-杨氏双缝干涉:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q33:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q36:c01", + "university-physics-3-1-002:h-13.-四类计算题固定模板~13.4-热力学题:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.2-光栅常数:c01", + "university-physics-3-1-011:p34:q-university-physics-3-1-011-q8:c01", + "university-physics-3-1-002:h-4.-刚体力学~4.2-力矩:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.1-单缝夫琅禾费衍射:c01" + ], + "duration_ms": 51.31, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "university-physics-3-1-002:h-8.-光的衍射~8.3-光栅方程:c01", + "university-physics-3-1-011:p12:q-university-physics-3-1-011-q5:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.6-谱线重叠:c01", + "university-physics-3-1-011:p14:q-university-physics-3-1-011-q5:c01", + "university-physics-3-1-008:q-university-physics-3-1-008-q7:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.5-缺级:c01", + "university-physics-3-1-002:h-13.-四类计算题固定模板~13.3-光栅题:c01", + "university-physics-3-1-002:h-0.-期末复习总览:c01", + "university-physics-3-1-005:q-university-physics-3-1-005-q32:c01", + "university-physics-3-1-013:q-university-physics-3-1-013-q5:c01", + "university-physics-3-1-004:q-university-physics-3-1-004-q6:c01", + "university-physics-3-1-002:h-7.-光的干涉~7.2-杨氏双缝干涉:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q33:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q36:c01", + "university-physics-3-1-002:h-13.-四类计算题固定模板~13.4-热力学题:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.2-光栅常数:c01", + "university-physics-3-1-011:p34:q-university-physics-3-1-011-q8:c01", + "university-physics-3-1-002:h-4.-刚体力学~4.2-力矩:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.1-单缝夫琅禾费衍射:c01" + ] + }, + { + "case_id": "physics31-grating-overlap-2", + "topic_id": "physics31-grating-overlap", + "course_id": "university_physics_3_1", + "scenario": "calculation", + "split": "dev", + "difficulty": "hard", + "query": "440nm与660nm两条线在同一角度重合,级次k1、k2的最简整数比是什么?", + "top_chunk_ids": [ + "university-physics-3-1-002:h-8.-光的衍射~8.6-谱线重叠:c01", + "university-physics-3-1-002:h-13.-四类计算题固定模板~13.4-热力学题:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.4-最大级次:c01", + "university-physics-3-1-005:q-university-physics-3-1-005-q32:c01", + "university-physics-3-1-002:h-3.-冲量-动量与能量~3.5-势能与机械能:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q33:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q36:c01", + "university-physics-3-1-005:q-university-physics-3-1-005-q23:c01", + "university-physics-3-1-011:p12:q-university-physics-3-1-011-q5:c01", + "university-physics-3-1-003:q-university-physics-3-1-003-q34:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q35:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q38:c01", + "university-physics-3-1-003:q-university-physics-3-1-003-q23:c01", + "university-physics-3-1-002:h-7.-光的干涉~7.5-劈尖干涉:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.5-缺级:c01", + "university-physics-3-1-006:q-university-physics-3-1-006-q8:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.1-单缝夫琅禾费衍射:c01", + "university-physics-3-1-011:p14:q-university-physics-3-1-011-q5:c01", + "university-physics-3-1-002:h-13.-四类计算题固定模板~13.3-光栅题:c01", + "university-physics-3-1-003:q-university-physics-3-1-003-q26:c01" + ], + "duration_ms": 11.095, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.0625, + "unjudged_chunk_ids": [ + "university-physics-3-1-002:h-8.-光的衍射~8.6-谱线重叠:c01", + "university-physics-3-1-002:h-13.-四类计算题固定模板~13.4-热力学题:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.4-最大级次:c01", + "university-physics-3-1-005:q-university-physics-3-1-005-q32:c01", + "university-physics-3-1-002:h-3.-冲量-动量与能量~3.5-势能与机械能:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q33:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q36:c01", + "university-physics-3-1-005:q-university-physics-3-1-005-q23:c01", + "university-physics-3-1-011:p12:q-university-physics-3-1-011-q5:c01", + "university-physics-3-1-003:q-university-physics-3-1-003-q34:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q35:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q38:c01", + "university-physics-3-1-003:q-university-physics-3-1-003-q23:c01", + "university-physics-3-1-002:h-7.-光的干涉~7.5-劈尖干涉:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.5-缺级:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.1-单缝夫琅禾费衍射:c01", + "university-physics-3-1-011:p14:q-university-physics-3-1-011-q5:c01", + "university-physics-3-1-002:h-13.-四类计算题固定模板~13.3-光栅题:c01", + "university-physics-3-1-003:q-university-physics-3-1-003-q26:c01" + ] + }, + { + "case_id": "physics32-cavity-potential-1", + "topic_id": "physics32-cavity-potential", + "course_id": "university_physics_3_2", + "scenario": "concept", + "split": "validation", + "difficulty": "medium", + "query": "带电球层的空腔内E=0,能直接推出空腔内电势也为0吗?", + "top_chunk_ids": [ + "university-physics-3-2-020:p1:q-university-physics-3-2-020-q3:c01", + "university-physics-3-2-007:q-university-physics-3-2-007-q3:c01", + "university-physics-3-2-006:q-university-physics-3-2-006-q24:c01", + "university-physics-3-2-019:p3:q-university-physics-3-2-019-q31:c01", + "university-physics-3-2-010:p1:q-university-physics-3-2-010-q2:c01", + "university-physics-3-2-013:p3:q-university-physics-3-2-013-q18:c01", + "university-physics-3-2-017:p4:q-university-physics-3-2-017-q27:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q13:c01", + "university-physics-3-2-011:p4:c01", + "university-physics-3-2-002:q-university-physics-3-2-002-q2:c01", + "university-physics-3-2-008:p20:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-002:q-university-physics-3-2-002-q3:c01", + "university-physics-3-2-008:p18:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-013:p1:q-university-physics-3-2-013-q6:c01", + "university-physics-3-2-017:p1:q-university-physics-3-2-017-q7:c01", + "university-physics-3-2-008:p12:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-010:p1:q-university-physics-3-2-010-q3:c01", + "university-physics-3-2-006:q-university-physics-3-2-006-q13:c01", + "university-physics-3-2-008:p16:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-008:p17:q-university-physics-3-2-008-q4:c01" + ], + "duration_ms": 75.71, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "university-physics-3-2-020:p1:q-university-physics-3-2-020-q3:c01", + "university-physics-3-2-006:q-university-physics-3-2-006-q24:c01", + "university-physics-3-2-019:p3:q-university-physics-3-2-019-q31:c01", + "university-physics-3-2-010:p1:q-university-physics-3-2-010-q2:c01", + "university-physics-3-2-013:p3:q-university-physics-3-2-013-q18:c01", + "university-physics-3-2-017:p4:q-university-physics-3-2-017-q27:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q13:c01", + "university-physics-3-2-011:p4:c01", + "university-physics-3-2-002:q-university-physics-3-2-002-q2:c01", + "university-physics-3-2-008:p20:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-002:q-university-physics-3-2-002-q3:c01", + "university-physics-3-2-008:p18:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-013:p1:q-university-physics-3-2-013-q6:c01", + "university-physics-3-2-017:p1:q-university-physics-3-2-017-q7:c01", + "university-physics-3-2-008:p12:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-010:p1:q-university-physics-3-2-010-q3:c01", + "university-physics-3-2-006:q-university-physics-3-2-006-q13:c01", + "university-physics-3-2-008:p16:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-008:p17:q-university-physics-3-2-008-q4:c01" + ] + }, + { + "case_id": "physics32-cavity-potential-2", + "topic_id": "physics32-cavity-potential", + "course_id": "university_physics_3_2", + "scenario": "concept", + "split": "validation", + "difficulty": "hard", + "query": "为什么“电场为零”只说明空腔是等势区,而不能单独确定电势数值?材料中的积分在计算什么。", + "top_chunk_ids": [ + "university-physics-3-2-020:p1:q-university-physics-3-2-020-q3:c01", + "university-physics-3-2-008:p22:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-007:q-university-physics-3-2-007-q3:c01", + "university-physics-3-2-008:p20:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-019:p1:q-university-physics-3-2-019-q5:c01", + "university-physics-3-2-010:p2:q-university-physics-3-2-010-q7:c01", + "university-physics-3-2-008:p17:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-008:p16:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-013:p3:q-university-physics-3-2-013-q16:c01", + "university-physics-3-2-002:q-university-physics-3-2-002-q25:c01", + "university-physics-3-2-006:q-university-physics-3-2-006-q24:c01", + "university-physics-3-2-011:p4:c01", + "university-physics-3-2-019:p3:q-university-physics-3-2-019-q31:c01", + "university-physics-3-2-019:p3:q-university-physics-3-2-019-q23:c01", + "university-physics-3-2-016:p3:q-university-physics-3-2-016-q17:c01", + "university-physics-3-2-004:q-university-physics-3-2-004-q13:c01", + "university-physics-3-2-010:p3:q-university-physics-3-2-010-q11:c01", + "university-physics-3-2-002:q-university-physics-3-2-002-q14:c01", + "university-physics-3-2-017:p2:q-university-physics-3-2-017-q12:c01", + "university-physics-3-2-004:q-university-physics-3-2-004-q11:c01" + ], + "duration_ms": 17.667, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "university-physics-3-2-020:p1:q-university-physics-3-2-020-q3:c01", + "university-physics-3-2-008:p22:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-008:p20:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-019:p1:q-university-physics-3-2-019-q5:c01", + "university-physics-3-2-010:p2:q-university-physics-3-2-010-q7:c01", + "university-physics-3-2-008:p17:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-008:p16:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-013:p3:q-university-physics-3-2-013-q16:c01", + "university-physics-3-2-002:q-university-physics-3-2-002-q25:c01", + "university-physics-3-2-006:q-university-physics-3-2-006-q24:c01", + "university-physics-3-2-011:p4:c01", + "university-physics-3-2-019:p3:q-university-physics-3-2-019-q31:c01", + "university-physics-3-2-019:p3:q-university-physics-3-2-019-q23:c01", + "university-physics-3-2-016:p3:q-university-physics-3-2-016-q17:c01", + "university-physics-3-2-004:q-university-physics-3-2-004-q13:c01", + "university-physics-3-2-010:p3:q-university-physics-3-2-010-q11:c01", + "university-physics-3-2-002:q-university-physics-3-2-002-q14:c01", + "university-physics-3-2-017:p2:q-university-physics-3-2-017-q12:c01", + "university-physics-3-2-004:q-university-physics-3-2-004-q11:c01" + ] + }, + { + "case_id": "physlab1-oscilloscope-trigger-1", + "topic_id": "physlab1-oscilloscope-trigger", + "course_id": "university_physics_lab_1", + "scenario": "lab_reasoning", + "split": "dev", + "difficulty": "medium", + "query": "数字示波器上TIME/DIV、VOLTS/DIV和LEVEL分别影响什么?为什么只调TIME/DIV不能让波形稳定?", + "top_chunk_ids": [ + "university-physics-lab-1-001:h-人体脉搏波测量:c04", + "university-physics-lab-1-001:h-人体脉搏波测量:c05", + "university-physics-lab-1-001:h-人体脉搏波测量:c03", + "university-physics-lab-1-001:h-人体脉搏波测量:c01", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c07", + "university-physics-lab-1-001:h-人体脉搏波测量:c02", + "university-physics-lab-1-003:h-分光计的调整与使用:c03", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c01", + "university-physics-lab-1-003:h-分光计的调整与使用:c04", + "university-physics-lab-1-004:h-奥式黏度计测定液体动力黏度:c01", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c05", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c02" + ], + "duration_ms": 30.172, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "university-physics-lab-1-001:h-人体脉搏波测量:c05", + "university-physics-lab-1-001:h-人体脉搏波测量:c03", + "university-physics-lab-1-001:h-人体脉搏波测量:c01", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c07", + "university-physics-lab-1-001:h-人体脉搏波测量:c02", + "university-physics-lab-1-003:h-分光计的调整与使用:c03", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c01", + "university-physics-lab-1-003:h-分光计的调整与使用:c04", + "university-physics-lab-1-004:h-奥式黏度计测定液体动力黏度:c01", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c05", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c02" + ] + }, + { + "case_id": "physlab1-oscilloscope-trigger-2", + "topic_id": "physlab1-oscilloscope-trigger", + "course_id": "university_physics_lab_1", + "scenario": "lab_reasoning", + "split": "dev", + "difficulty": "hard", + "query": "同一脉搏波信号在屏幕上左右漂移,如何按资料的触发概念排查,而不是先改采样率?", + "top_chunk_ids": [ + "university-physics-lab-1-001:h-人体脉搏波测量:c03", + "university-physics-lab-1-001:h-人体脉搏波测量:c04", + "university-physics-lab-1-001:h-人体脉搏波测量:c01", + "university-physics-lab-1-001:h-人体脉搏波测量:c02", + "university-physics-lab-1-001:h-人体脉搏波测量:c06", + "university-physics-lab-1-001:h-人体脉搏波测量:c05", + "university-physics-lab-1-001:h-人体脉搏波测量:c07", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c02", + "university-physics-lab-1-002:h-光的等厚干涉测量:c01", + "university-physics-lab-1-003:h-分光计的调整与使用:c02", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c07", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c01", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c02", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c02" + ], + "duration_ms": 5.822, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "university-physics-lab-1-001:h-人体脉搏波测量:c03", + "university-physics-lab-1-001:h-人体脉搏波测量:c01", + "university-physics-lab-1-001:h-人体脉搏波测量:c02", + "university-physics-lab-1-001:h-人体脉搏波测量:c06", + "university-physics-lab-1-001:h-人体脉搏波测量:c05", + "university-physics-lab-1-001:h-人体脉搏波测量:c07", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c02", + "university-physics-lab-1-002:h-光的等厚干涉测量:c01", + "university-physics-lab-1-003:h-分光计的调整与使用:c02", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c07", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c01", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c02", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c02" + ] + }, + { + "case_id": "physlab2-acbridge-average-1", + "topic_id": "physlab2-acbridge-average", + "course_id": "university_physics_lab_2", + "scenario": "data_analysis", + "split": "dev", + "difficulty": "medium", + "query": "交流电桥三次测得Lx′为0.01298、0.01243、0.0132H,报告的0.01287H是怎样得到的?", + "top_chunk_ids": [ + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c03", + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c02", + "university-physics-lab-2-040:h-4交流电桥:c03", + "university-physics-lab-2-040:h-4交流电桥:c02", + "university-physics-lab-2-041:s4:c01", + "university-physics-lab-2-041:s6:c01", + "university-physics-lab-2-080:h-4.8-草:c01", + "university-physics-lab-2-040:h-4交流电桥:c01", + "university-physics-lab-2-041:s15:c01", + "university-physics-lab-2-041:s13:c01", + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c01", + "university-physics-lab-2-041:s2:c01", + "university-physics-lab-2-041:s5:c01", + "university-physics-lab-2-041:s3:c01", + "university-physics-lab-2-041:s9:c01", + "university-physics-lab-2-041:s7:c01", + "university-physics-lab-2-041:s14:c01", + "university-physics-lab-2-041:s8:c01", + "university-physics-lab-2-041:s10:c01", + "university-physics-lab-2-041:s11:c01" + ], + "duration_ms": 284.877, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c02", + "university-physics-lab-2-040:h-4交流电桥:c03", + "university-physics-lab-2-040:h-4交流电桥:c02", + "university-physics-lab-2-041:s4:c01", + "university-physics-lab-2-041:s6:c01", + "university-physics-lab-2-080:h-4.8-草:c01", + "university-physics-lab-2-040:h-4交流电桥:c01", + "university-physics-lab-2-041:s15:c01", + "university-physics-lab-2-041:s13:c01", + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c01", + "university-physics-lab-2-041:s2:c01", + "university-physics-lab-2-041:s5:c01", + "university-physics-lab-2-041:s3:c01", + "university-physics-lab-2-041:s9:c01", + "university-physics-lab-2-041:s7:c01", + "university-physics-lab-2-041:s14:c01", + "university-physics-lab-2-041:s8:c01", + "university-physics-lab-2-041:s10:c01", + "university-physics-lab-2-041:s11:c01" + ] + }, + { + "case_id": "physlab2-acbridge-average-2", + "topic_id": "physlab2-acbridge-average", + "course_id": "university_physics_lab_2", + "scenario": "data_analysis", + "split": "dev", + "difficulty": "hard", + "query": "三次Rx′为21.4、20.6、21.8Ω。只报告平均21.3Ω是否足以说明测量可靠?还应报告或检查什么。", + "top_chunk_ids": [ + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c03", + "university-physics-lab-2-026:h-液体动力粘度的测量-用拉脱法测定液体表面张力系数:c04", + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c02", + "university-physics-lab-2-033:h-超声波材料检测-弯曲法测杨氏模量实验报告:c03", + "university-physics-lab-2-023:h-双光栅测量微弱振动位移量实验报告:c07", + "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c16", + "university-physics-lab-2-007:h-4.13-物质旋光率的测量:c01", + "university-physics-lab-2-071:h-4.9铁磁物质磁化曲线和磁滞回线的测量-4.10超声波在介质中在传播速度的测量:c05", + "university-physics-lab-2-003:h-3.7-用惠斯登电桥测电阻:c04", + "university-physics-lab-2-031:h-莫尔效应及光栅传感实验:c05", + "university-physics-lab-2-011:h-4.21-巨磁阻效应及其应用:c03", + "university-physics-lab-2-028:h-磁谐振无线电能传输:c02", + "university-physics-lab-2-026:h-液体动力粘度的测量-用拉脱法测定液体表面张力系数:c03", + "university-physics-lab-2-003:h-3.7-用惠斯登电桥测电阻:c01", + "university-physics-lab-2-020:h-光盘轨距的测量及其容量估算:c03", + "university-physics-lab-2-040:h-4交流电桥:c03", + "university-physics-lab-2-031:h-莫尔效应及光栅传感实验:c04", + "university-physics-lab-2-033:h-超声波材料检测-弯曲法测杨氏模量实验报告:c01", + "university-physics-lab-2-014:h-4.6-固体导热系数测量:c03", + "university-physics-lab-2-084:h-4.21-定:c01" + ], + "duration_ms": 47.464, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "university-physics-lab-2-026:h-液体动力粘度的测量-用拉脱法测定液体表面张力系数:c04", + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c02", + "university-physics-lab-2-033:h-超声波材料检测-弯曲法测杨氏模量实验报告:c03", + "university-physics-lab-2-023:h-双光栅测量微弱振动位移量实验报告:c07", + "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c16", + "university-physics-lab-2-007:h-4.13-物质旋光率的测量:c01", + "university-physics-lab-2-071:h-4.9铁磁物质磁化曲线和磁滞回线的测量-4.10超声波在介质中在传播速度的测量:c05", + "university-physics-lab-2-003:h-3.7-用惠斯登电桥测电阻:c04", + "university-physics-lab-2-031:h-莫尔效应及光栅传感实验:c05", + "university-physics-lab-2-011:h-4.21-巨磁阻效应及其应用:c03", + "university-physics-lab-2-028:h-磁谐振无线电能传输:c02", + "university-physics-lab-2-026:h-液体动力粘度的测量-用拉脱法测定液体表面张力系数:c03", + "university-physics-lab-2-003:h-3.7-用惠斯登电桥测电阻:c01", + "university-physics-lab-2-020:h-光盘轨距的测量及其容量估算:c03", + "university-physics-lab-2-040:h-4交流电桥:c03", + "university-physics-lab-2-031:h-莫尔效应及光栅传感实验:c04", + "university-physics-lab-2-033:h-超声波材料检测-弯曲法测杨氏模量实验报告:c01", + "university-physics-lab-2-014:h-4.6-固体导热系数测量:c03", + "university-physics-lab-2-084:h-4.21-定:c01" + ] + }, + { + "case_id": "xi-talent-plan-source-limits-1", + "topic_id": "xi-talent-plan-source-limits", + "course_id": "xi_thought_overview", + "scenario": "source_critique", + "split": "dev", + "difficulty": "medium", + "query": "“千百十工程”材料将计划分为哪三个层次?回答时怎样区分材料的叙述与已外部核验的政策事实?", + "top_chunk_ids": [ + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c02", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c01", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c05", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c03" + ], + "duration_ms": 10.799, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c05", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c03" + ] + }, + { + "case_id": "xi-talent-plan-source-limits-2", + "topic_id": "xi-talent-plan-source-limits", + "course_id": "xi_thought_overview", + "scenario": "source_critique", + "split": "dev", + "difficulty": "hard", + "query": "材料同时出现2008启动和2009启动表述。面对这种时间冲突,怎样给出有用但不自相矛盾的回答?", + "top_chunk_ids": [ + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c01" + ], + "duration_ms": 3.275, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [] } ], "by_course_id": { "linear_algebra": { "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.35 + }, + "probability_theory": { + "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.25, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_5": 0.25, + "all_evidence_groups_at_20": 0.5, + "known_positive_mrr": 0.270833 + }, + "algorithm_design_and_analysis": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "data_structure": { + "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.625 + }, + "database": { + "queries": 6, + "scored_queries": 6, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.666667, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.666667, + "all_evidence_groups_at_20": 0.833333, + "known_positive_mrr": 0.431481 + }, + "operating_systems": { + "queries": 6, + "scored_queries": 6, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.166667, + "known_evidence_coverage_at_20": 0.666667, + "all_evidence_groups_at_5": 0.166667, + "all_evidence_groups_at_20": 0.666667, + "known_positive_mrr": 0.082257 + }, + "compiler_principles": { + "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.767857 + }, + "computer_networks": { + "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 0.75, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 0.75, + "known_positive_mrr": 0.625 + }, + "software_testing": { + "queries": 6, + "scored_queries": 6, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.666667, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.666667, + "all_evidence_groups_at_20": 0.833333, + "known_positive_mrr": 0.431818 + }, + "artificial_intelligence_intro": { + "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.647727 + }, + "computer_organization": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.5625 + }, + "web_frontend_fundamentals": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.75 + }, + "discrete_mathematics": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.666667 + }, + "electrical_engineering": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.75 + }, + "computer_graphics": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.416667 + }, + "computer_science_intro": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_5": 0.0, + "all_evidence_groups_at_20": 0.0, + "known_positive_mrr": 0.0 + }, + "computing_methods": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "cpp": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 0.5, + "known_positive_mrr": 0.1 + }, + "digital_logic": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "digital_system_creative_design": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 0.5, + "known_positive_mrr": 0.166667 + }, + "embedded_systems": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "engineering_math_analysis_1": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.333333 + }, + "engineering_math_analysis_2": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.35 + }, + "english": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_5": 0.0, + "all_evidence_groups_at_20": 0.0, + "known_positive_mrr": 0.0 + }, + "ideology_morality_and_rule_of_law": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "information_security_intro": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, "known_evidence_coverage_at_5": 1.0, "known_evidence_coverage_at_20": 1.0, "all_evidence_groups_at_5": 1.0, "all_evidence_groups_at_20": 1.0, - "known_positive_mrr": 0.35 + "known_positive_mrr": 1.0 }, - "probability_theory": { - "queries": 4, - "known_evidence_coverage_at_5": 0.25, + "information_security_mathematics": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.0, "known_evidence_coverage_at_20": 0.5, - "all_evidence_groups_at_5": 0.25, + "all_evidence_groups_at_5": 0.0, "all_evidence_groups_at_20": 0.5, - "known_positive_mrr": 0.270833 + "known_positive_mrr": 0.071429 }, - "algorithm_design_and_analysis": { + "intelligent_algorithms": { "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, "known_evidence_coverage_at_5": 1.0, "known_evidence_coverage_at_20": 1.0, "all_evidence_groups_at_5": 1.0, "all_evidence_groups_at_20": 1.0, "known_positive_mrr": 1.0 }, - "data_structure": { - "queries": 4, - "known_evidence_coverage_at_5": 0.75, + "mao_zedong_thought_overview": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, "known_evidence_coverage_at_20": 1.0, - "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_5": 1.0, "all_evidence_groups_at_20": 1.0, - "known_positive_mrr": 0.625 + "known_positive_mrr": 1.0 }, - "database": { - "queries": 6, - "known_evidence_coverage_at_5": 0.666667, - "known_evidence_coverage_at_20": 0.833333, - "all_evidence_groups_at_5": 0.666667, - "all_evidence_groups_at_20": 0.833333, - "known_positive_mrr": 0.431481 + "marxist_basic_principles": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.75 }, - "operating_systems": { - "queries": 6, - "known_evidence_coverage_at_5": 0.166667, - "known_evidence_coverage_at_20": 0.666667, - "all_evidence_groups_at_5": 0.166667, - "all_evidence_groups_at_20": 0.666667, - "known_positive_mrr": 0.082257 + "mathematical_modeling": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.545455 }, - "compiler_principles": { - "queries": 4, - "known_evidence_coverage_at_5": 0.75, + "mobile_application_development": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, "known_evidence_coverage_at_20": 1.0, - "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_5": 1.0, "all_evidence_groups_at_20": 1.0, - "known_positive_mrr": 0.767857 + "known_positive_mrr": 0.416667 }, - "computer_networks": { - "queries": 4, - "known_evidence_coverage_at_5": 0.75, - "known_evidence_coverage_at_20": 0.75, - "all_evidence_groups_at_5": 0.75, - "all_evidence_groups_at_20": 0.75, + "network_application_architecture": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "network_management": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.75 + }, + "next_generation_network_architecture": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, "known_positive_mrr": 0.625 }, - "software_testing": { - "queries": 6, - "known_evidence_coverage_at_5": 0.666667, - "known_evidence_coverage_at_20": 0.833333, - "all_evidence_groups_at_5": 0.666667, - "all_evidence_groups_at_20": 0.833333, - "known_positive_mrr": 0.431818 + "signals_and_communication": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.065126 }, - "artificial_intelligence_intro": { - "queries": 4, - "known_evidence_coverage_at_5": 0.75, + "software_engineering": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 0.5, + "known_positive_mrr": 0.25 + }, + "swarm_intelligence": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, "known_evidence_coverage_at_20": 1.0, - "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_5": 1.0, "all_evidence_groups_at_20": 1.0, - "known_positive_mrr": 0.647727 + "known_positive_mrr": 0.333333 }, - "computer_organization": { + "university_physics_3_1": { "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, "known_evidence_coverage_at_5": 0.5, "known_evidence_coverage_at_20": 1.0, "all_evidence_groups_at_5": 0.5, "all_evidence_groups_at_20": 1.0, - "known_positive_mrr": 0.5625 + "known_positive_mrr": 0.53125 }, - "web_frontend_fundamentals": { + "university_physics_3_2": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.416667 + }, + "university_physics_lab_1": { "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, "known_evidence_coverage_at_5": 1.0, "known_evidence_coverage_at_20": 1.0, "all_evidence_groups_at_5": 1.0, "all_evidence_groups_at_20": 1.0, "known_positive_mrr": 0.75 }, - "discrete_mathematics": { + "university_physics_lab_2": { "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, "known_evidence_coverage_at_5": 1.0, "known_evidence_coverage_at_20": 1.0, "all_evidence_groups_at_5": 1.0, "all_evidence_groups_at_20": 1.0, - "known_positive_mrr": 0.666667 + "known_positive_mrr": 1.0 }, - "electrical_engineering": { + "xi_thought_overview": { "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, "known_evidence_coverage_at_5": 1.0, "known_evidence_coverage_at_20": 1.0, "all_evidence_groups_at_5": 1.0, "all_evidence_groups_at_20": 1.0, - "known_positive_mrr": 0.75 + "known_positive_mrr": 1.0 } }, "by_scenario": { "concept": { - "queries": 24, - "known_evidence_coverage_at_5": 0.625, - "known_evidence_coverage_at_20": 0.833333, - "all_evidence_groups_at_5": 0.625, - "all_evidence_groups_at_20": 0.833333, - "known_positive_mrr": 0.440672 + "queries": 30, + "scored_queries": 30, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.633333, + "known_evidence_coverage_at_20": 0.8, + "all_evidence_groups_at_5": 0.633333, + "all_evidence_groups_at_20": 0.8, + "known_positive_mrr": 0.446982 }, "problem": { - "queries": 14, - "known_evidence_coverage_at_5": 0.642857, - "known_evidence_coverage_at_20": 0.785714, - "all_evidence_groups_at_5": 0.642857, - "all_evidence_groups_at_20": 0.785714, - "known_positive_mrr": 0.552721 + "queries": 16, + "scored_queries": 16, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.6875, + "known_evidence_coverage_at_20": 0.8125, + "all_evidence_groups_at_5": 0.6875, + "all_evidence_groups_at_20": 0.8125, + "known_positive_mrr": 0.608631 }, "mistake": { "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, "known_evidence_coverage_at_5": 0.5, "known_evidence_coverage_at_20": 1.0, "all_evidence_groups_at_5": 0.5, @@ -2939,6 +6095,8 @@ }, "review": { "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, "known_evidence_coverage_at_5": 1.0, "known_evidence_coverage_at_20": 1.0, "all_evidence_groups_at_5": 1.0, @@ -2947,6 +6105,8 @@ }, "evidence_bundle": { "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, "known_evidence_coverage_at_5": 1.0, "known_evidence_coverage_at_20": 1.0, "all_evidence_groups_at_5": 1.0, @@ -2955,29 +6115,267 @@ }, "source_correction": { "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, "known_evidence_coverage_at_5": 0.5, "known_evidence_coverage_at_20": 1.0, "all_evidence_groups_at_5": 0.5, "all_evidence_groups_at_20": 1.0, "known_positive_mrr": 0.583333 + }, + "code_reasoning": { + "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 0.75, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 0.75, + "known_positive_mrr": 0.291667 + }, + "derivation": { + "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.532563 + }, + "code_review": { + "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 0.75, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 0.75, + "known_positive_mrr": 0.55 + }, + "proof": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.333333 + }, + "optimization": { + "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.447727 + }, + "writing_review": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_5": 0.0, + "all_evidence_groups_at_20": 0.0, + "known_positive_mrr": 0.0 + }, + "case_analysis": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "calculation": { + "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.25, + "known_evidence_coverage_at_20": 0.75, + "all_evidence_groups_at_5": 0.25, + "all_evidence_groups_at_20": 0.75, + "known_positive_mrr": 0.301339 + }, + "algorithm_choice": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "argument_structure": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "applied_analysis": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.75 + }, + "requirements_analysis": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.416667 + }, + "exam_review": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "protocol_analysis": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.75 + }, + "synthesis": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.625 + }, + "mistake_review": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 0.5, + "known_positive_mrr": 0.25 + }, + "experiment_analysis": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.333333 + }, + "lab_reasoning": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.75 + }, + "data_analysis": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "source_critique": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 } }, "by_split": { "validation": { - "queries": 24, - "known_evidence_coverage_at_5": 0.625, - "known_evidence_coverage_at_20": 0.916667, - "all_evidence_groups_at_5": 0.625, - "all_evidence_groups_at_20": 0.916667, - "known_positive_mrr": 0.490838 + "queries": 42, + "scored_queries": 42, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.738095, + "known_evidence_coverage_at_20": 0.904762, + "all_evidence_groups_at_5": 0.738095, + "all_evidence_groups_at_20": 0.904762, + "known_positive_mrr": 0.601908 }, "dev": { - "queries": 26, - "known_evidence_coverage_at_5": 0.692308, - "known_evidence_coverage_at_20": 0.807692, - "all_evidence_groups_at_5": 0.692308, - "all_evidence_groups_at_20": 0.807692, - "known_positive_mrr": 0.530662 + "queries": 66, + "scored_queries": 66, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.712121, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.712121, + "all_evidence_groups_at_20": 0.833333, + "known_positive_mrr": 0.515764 + } + }, + "by_difficulty": { + "medium": { + "queries": 69, + "scored_queries": 69, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.710145, + "known_evidence_coverage_at_20": 0.884058, + "all_evidence_groups_at_5": 0.710145, + "all_evidence_groups_at_20": 0.884058, + "known_positive_mrr": 0.567058 + }, + "hard": { + "queries": 30, + "scored_queries": 30, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.733333, + "known_evidence_coverage_at_20": 0.8, + "all_evidence_groups_at_5": 0.733333, + "all_evidence_groups_at_20": 0.8, + "known_positive_mrr": 0.520155 + }, + "easy": { + "queries": 9, + "scored_queries": 9, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.777778, + "known_evidence_coverage_at_20": 0.888889, + "all_evidence_groups_at_5": 0.777778, + "all_evidence_groups_at_20": 0.888889, + "known_positive_mrr": 0.509877 } } } diff --git a/apps/scut-senior/resources/evaluation/reviewed-v2/baseline-hybrid.json b/apps/scut-senior/resources/evaluation/reviewed-v2/baseline-hybrid.json index 013e08f8..804908b8 100644 --- a/apps/scut-senior/resources/evaluation/reviewed-v2/baseline-hybrid.json +++ b/apps/scut-senior/resources/evaluation/reviewed-v2/baseline-hybrid.json @@ -1,23 +1,27 @@ { "schema_version": "reviewed-retrieval-report-v2", "corpus_version": "corpus-c1513a68ccd7-b0_2_0-m1200-wworkflow-contract-v1-ooutline-none-v1-ebge-small-zh-v1.5", - "suite_sha256": "7a93284c39ea8d81e0864668f91f208cf98ed125f22e645cf102ba5dbc5cffc5", + "suite_sha256": "28d957ea0b71b0a14cc1a2dad170f1415afcb7e2109aa137e595c7d99869c636", "mode": "hybrid", "min_score": 1.0, "split": "all", "validation": { - "queries": 50, - "topics": 25, - "courses": 14, - "evidence_chunks": 27 + "queries": 108, + "topics": 54, + "courses": 43, + "source_backed_courses": 43, + "evidence_chunks": 59, + "evidence_boundary_cases": 0 }, "summary": { - "queries": 50, - "known_evidence_coverage_at_5": 0.66, - "known_evidence_coverage_at_20": 0.86, - "all_evidence_groups_at_5": 0.66, - "all_evidence_groups_at_20": 0.86, - "known_positive_mrr": 0.511547 + "queries": 108, + "scored_queries": 108, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.731481, + "known_evidence_coverage_at_20": 0.898148, + "all_evidence_groups_at_5": 0.731481, + "all_evidence_groups_at_20": 0.898148, + "known_positive_mrr": 0.554625 }, "interpretation": "Known-positive lower bounds; unjudged candidates require review, never automatic negative labels. No generation or answer-quality score. Timing includes first-load overhead.", "entries": [ @@ -27,6 +31,7 @@ "course_id": "linear_algebra", "scenario": "concept", "split": "validation", + "difficulty": "medium", "query": "矩阵可对角化的充要条件是什么?为什么特征值互不相同只是充分条件?", "top_chunk_ids": [ "linear-algebra-014:p1:q-linear-algebra-014-q6:c01", @@ -50,7 +55,8 @@ "linear-algebra-012:p3:q-linear-algebra-012-q20:c01", "linear-algebra-014:p2:q-linear-algebra-014-q12:c01" ], - "duration_ms": 676.974, + "duration_ms": 543.393, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -84,6 +90,7 @@ "course_id": "linear_algebra", "scenario": "concept", "split": "validation", + "difficulty": "hard", "query": "有重根就一定不能化成对角矩阵吗?请用单位矩阵说明。", "top_chunk_ids": [ "linear-algebra-012:p3:q-linear-algebra-012-q21:c01", @@ -107,7 +114,8 @@ "linear-algebra-018:p1:q-linear-algebra-018-q3:c01", "linear-algebra-022:s2:c05" ], - "duration_ms": 85.905, + "duration_ms": 26.501, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -141,6 +149,7 @@ "course_id": "probability_theory", "scenario": "problem", "split": "validation", + "difficulty": "medium", "query": "T服从t分布,若P(T>λ)=α,P(T<−λ)是多少?", "top_chunk_ids": [ "probability-theory-010:q-probability-theory-010-q1:c01", @@ -164,7 +173,8 @@ "probability-theory-015:q-probability-theory-015-q1:c01", "probability-theory-035:q-probability-theory-035-q1:c01" ], - "duration_ms": 145.694, + "duration_ms": 127.322, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -198,6 +208,7 @@ "course_id": "probability_theory", "scenario": "problem", "split": "validation", + "difficulty": "medium", "query": "t分布右边尾巴的面积是α,关于0对称的左边尾巴也是α,还是α/2?", "top_chunk_ids": [ "probability-theory-014:p3:q-probability-theory-014-q22:c01", @@ -221,7 +232,8 @@ "probability-theory-022:p5:q-probability-theory-022-q21:c01", "probability-theory-023:p6:q-probability-theory-023-q19:c01" ], - "duration_ms": 64.38, + "duration_ms": 56.23, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 1.0, @@ -255,6 +267,7 @@ "course_id": "probability_theory", "scenario": "problem", "split": "validation", + "difficulty": "medium", "query": "独立同分布样本方差σ²>0,用权重(1/2,1/3,1/6)、(1/2,1/4,1/4)、(1/3,1/3,1/3)、(1/5,2/5,2/5)估计均值,哪个方差最小?", "top_chunk_ids": [ "probability-theory-020:p2:c01", @@ -278,7 +291,8 @@ "probability-theory-032:h-2016春季a卷无答案:c02", "probability-theory-027:p1:q-probability-theory-027-q5:c01" ], - "duration_ms": 76.533, + "duration_ms": 58.295, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 0.0, @@ -313,6 +327,7 @@ "course_id": "probability_theory", "scenario": "problem", "split": "validation", + "difficulty": "medium", "query": "四种加权平均都无偏时,为什么平均分配三个样本的权重更有效?假定样本独立同分布且方差为正。", "top_chunk_ids": [ "probability-theory-022:p3:q-probability-theory-022-q10:c01", @@ -336,7 +351,8 @@ "probability-theory-024:p2:c01", "probability-theory-026:p3:c01" ], - "duration_ms": 69.294, + "duration_ms": 52.302, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 0.0, @@ -371,6 +387,7 @@ "course_id": "algorithm_design_and_analysis", "scenario": "problem", "split": "validation", + "difficulty": "medium", "query": "2023-2024 B卷容量22、体积3/5/7/8/9、价值4/6/7/9/10的0-1背包题怎么做?", "top_chunk_ids": [ "algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q13:c01", @@ -394,7 +411,8 @@ "algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q12:c01", "algorithm-design-and-analysis-024:p5:c01" ], - "duration_ms": 153.774, + "duration_ms": 141.919, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -428,6 +446,7 @@ "course_id": "algorithm_design_and_analysis", "scenario": "problem", "split": "validation", + "difficulty": "medium", "query": "背包最多装22,每件只能拿一次,五件物品重量3、5、7、8、9,价值4、6、7、9、10。最大价值和选择是什么?", "top_chunk_ids": [ "algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q13:c01", @@ -451,7 +470,8 @@ "algorithm-design-and-analysis-023:p5:c01", "algorithm-design-and-analysis-027:p6:c01" ], - "duration_ms": 79.946, + "duration_ms": 81.325, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -485,6 +505,7 @@ "course_id": "data_structure", "scenario": "concept", "split": "dev", + "difficulty": "medium", "query": "不用递归,怎样用栈完成二叉树中序遍历?", "top_chunk_ids": [ "data-structure-023:h-作业及分析:c01", @@ -508,7 +529,8 @@ "data-structure-035:h-000:c01", "data-structure-010:q-data-structure-010-q1:c02" ], - "duration_ms": 78.845, + "duration_ms": 76.908, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -542,6 +564,7 @@ "course_id": "data_structure", "scenario": "concept", "split": "dev", + "difficulty": "medium", "query": "遍历二叉树时一路压左孩子,弹出后什么时候访问右子树?", "top_chunk_ids": [ "data-structure-022:h-2025-a-辅修班卷子:c02", @@ -565,7 +588,8 @@ "data-structure-010:q-data-structure-010-q1:c02", "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02" ], - "duration_ms": 26.402, + "duration_ms": 23.207, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -599,6 +623,7 @@ "course_id": "database", "scenario": "concept", "split": "dev", + "difficulty": "easy", "query": "关系代数中选择和投影有什么区别?哪一个是按列切分?", "top_chunk_ids": [ "database-002:p2:q-database-002-q13:c01", @@ -622,7 +647,8 @@ "database-001:q-database-001-q16:c01", "database-004:p3:q-database-004-q22:c01" ], - "duration_ms": 115.88, + "duration_ms": 109.483, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -656,6 +682,7 @@ "course_id": "database", "scenario": "concept", "split": "dev", + "difficulty": "easy", "query": "只保留学生表的学号和姓名,应该用选择还是投影?", "top_chunk_ids": [ "database-001:q-database-001-q2:c01", @@ -679,7 +706,8 @@ "database-001:q-database-001-q37:c01", "database-003:p5:q-database-003-q49:c01" ], - "duration_ms": 39.606, + "duration_ms": 36.151, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 0.0, @@ -714,6 +742,7 @@ "course_id": "database", "scenario": "concept", "split": "dev", + "difficulty": "easy", "query": "SQL中HAVING筛选的是行还是分组?", "top_chunk_ids": [ "database-005:s19:c01", @@ -737,7 +766,8 @@ "database-005:s18:c01", "database-005:s13:c01" ], - "duration_ms": 35.824, + "duration_ms": 37.506, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -770,6 +800,7 @@ "course_id": "database", "scenario": "concept", "split": "dev", + "difficulty": "medium", "query": "按学生分组算平均成绩后,只留下均分至少85的组,该在哪里写条件?", "top_chunk_ids": [ "database-001:q-database-001-q2:c01", @@ -793,7 +824,8 @@ "database-001:q-database-001-q37:c01", "database-005:s54:c01" ], - "duration_ms": 35.75, + "duration_ms": 36.465, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -825,6 +857,7 @@ "course_id": "database", "scenario": "mistake", "split": "dev", + "difficulty": "easy", "query": "我写WHERE AGE = NULL查缺失年龄,为什么不对?", "top_chunk_ids": [ "database-003:p6:q-database-003-q65:c01", @@ -848,7 +881,8 @@ "database-004:p1:q-database-004-q9:c01", "database-001:q-database-001-q4:c01" ], - "duration_ms": 34.344, + "duration_ms": 36.998, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -882,6 +916,7 @@ "course_id": "database", "scenario": "mistake", "split": "dev", + "difficulty": "easy", "query": "筛出没有填写年龄的学生,应该写等于NULL还是IS NULL?", "top_chunk_ids": [ "database-001:q-database-001-q24:c01", @@ -905,7 +940,8 @@ "database-003:p5:q-database-003-q53:c01", "database-003:p5:q-database-003-q50:c01" ], - "duration_ms": 36.737, + "duration_ms": 40.988, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 1.0, @@ -939,6 +975,7 @@ "course_id": "operating_systems", "scenario": "concept", "split": "validation", + "difficulty": "medium", "query": "进程就绪和阻塞有什么区别?I/O完成后会直接运行吗?", "top_chunk_ids": [ "operating-systems-043:s24:c01", @@ -962,7 +999,8 @@ "operating-systems-038:s98:c01", "operating-systems-001:h-第-7-题-中断-interrupt~1-知识点:c01" ], - "duration_ms": 489.028, + "duration_ms": 471.656, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 1.0, @@ -996,6 +1034,7 @@ "course_id": "operating_systems", "scenario": "concept", "split": "validation", + "difficulty": "medium", "query": "一个进程只是没拿到CPU,另一个在等磁盘读完,它们是同一种状态吗?", "top_chunk_ids": [ "operating-systems-038:s59:c01", @@ -1019,7 +1058,8 @@ "operating-systems-028:h-os复习指导:c03", "operating-systems-036:q-operating-systems-036-q22:c01" ], - "duration_ms": 161.331, + "duration_ms": 143.784, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 1.0, @@ -1053,6 +1093,7 @@ "course_id": "operating_systems", "scenario": "mistake", "split": "validation", + "difficulty": "medium", "query": "有界缓冲区生产者能先P(mutex)再P(empty)吗?", "top_chunk_ids": [ "operating-systems-002:q-operating-systems-002-q28:c01", @@ -1076,7 +1117,8 @@ "operating-systems-002:q-operating-systems-002-q1:c01", "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-69-题-生产者-消费者问题~3-参考答案与解析:c02" ], - "duration_ms": 146.139, + "duration_ms": 139.832, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -1110,6 +1152,7 @@ "course_id": "operating_systems", "scenario": "mistake", "split": "validation", + "difficulty": "medium", "query": "缓冲区满时,生产者拿着互斥锁等空位,消费者还能取走数据吗?", "top_chunk_ids": [ "operating-systems-002:q-operating-systems-002-q28:c01", @@ -1133,7 +1176,8 @@ "operating-systems-002:q-operating-systems-002-q22:c01", "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-22-题-自旋锁-spinlock-与互斥锁区别~3-参考答案与解读:c01" ], - "duration_ms": 151.589, + "duration_ms": 156.467, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 1.0, @@ -1167,6 +1211,7 @@ "course_id": "operating_systems", "scenario": "concept", "split": "dev", + "difficulty": "medium", "query": "死锁的四个必要条件是什么?统一资源申请顺序破坏了哪一个?", "top_chunk_ids": [ "operating-systems-001:h-第-15-题-死锁四条件~1-知识点~2-测试题型:c01", @@ -1190,7 +1235,8 @@ "operating-systems-030:p1:c01", "operating-systems-037:h-上古osq-a:c02" ], - "duration_ms": 149.947, + "duration_ms": 142.538, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 0.0, @@ -1225,6 +1271,7 @@ "course_id": "operating_systems", "scenario": "concept", "split": "dev", + "difficulty": "medium", "query": "所有线程都先拿A锁再拿B锁,为什么能避免这两把锁形成循环等待?", "top_chunk_ids": [ "operating-systems-003:p5:q-operating-systems-003-q46:c01", @@ -1248,7 +1295,8 @@ "operating-systems-032:p2:c01", "operating-systems-042:s42:c01" ], - "duration_ms": 158.05, + "duration_ms": 139.261, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 0.0, @@ -1283,6 +1331,7 @@ "course_id": "compiler_principles", "scenario": "problem", "split": "validation", + "difficulty": "medium", "query": "T→T,S | S 如何消除直接左递归?", "top_chunk_ids": [ "compiler-principles-001:s27:c01", @@ -1306,7 +1355,8 @@ "compiler-principles-001:s45:c01", "compiler-principles-001:s31:c01" ], - "duration_ms": 196.26, + "duration_ms": 167.369, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -1340,6 +1390,7 @@ "course_id": "compiler_principles", "scenario": "problem", "split": "validation", + "difficulty": "medium", "query": "递归下降遇到T先调用自己再读逗号的文法会卡住,怎么改写?原式T→T,S | S。", "top_chunk_ids": [ "compiler-principles-053:h-递归下降方法的错误处理:c01", @@ -1363,7 +1414,8 @@ "compiler-principles-016:q-compiler-principles-016-q14:c01", "compiler-principles-017:q-compiler-principles-017-q12:c01" ], - "duration_ms": 73.789, + "duration_ms": 55.416, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 1.0, @@ -1397,6 +1449,7 @@ "course_id": "compiler_principles", "scenario": "review", "split": "validation", + "difficulty": "medium", "query": "复习课里那道S→a | ∧ | (T)、T→T,S | S的预测分析题,应该按什么步骤做?这里只要步骤。", "top_chunk_ids": [ "compiler-principles-001:s26:c01", @@ -1420,7 +1473,8 @@ "compiler-principles-001:s41:c01", "compiler-principles-001:s39:c01" ], - "duration_ms": 68.493, + "duration_ms": 56.546, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -1454,6 +1508,7 @@ "course_id": "compiler_principles", "scenario": "review", "split": "validation", + "difficulty": "medium", "query": "面对需要改写文法并构造LL(1)分析表的大题,先算FIRST还是先消除左递归?", "top_chunk_ids": [ "compiler-principles-001:s26:c01", @@ -1477,7 +1532,8 @@ "compiler-principles-001:s36:c01", "compiler-principles-015:q-compiler-principles-015-q15:c01" ], - "duration_ms": 62.809, + "duration_ms": 60.135, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -1511,6 +1567,7 @@ "course_id": "computer_networks", "scenario": "concept", "split": "dev", + "difficulty": "easy", "query": "TCP确认号为n到底表示收到了n,还是接下来想收到n?", "top_chunk_ids": [ "computer-networks-043:p33:c01", @@ -1534,7 +1591,8 @@ "computer-networks-031:p15:c01", "computer-networks-047:p15:c01" ], - "duration_ms": 550.585, + "duration_ms": 477.274, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -1568,6 +1626,7 @@ "course_id": "computer_networks", "scenario": "concept", "split": "dev", + "difficulty": "medium", "query": "接收方回复ACK=501,发送方能理解为500之前的字节都确认了吗?", "top_chunk_ids": [ "computer-networks-149:h-发送方的复用和接收方的分用:c01", @@ -1591,7 +1650,8 @@ "computer-networks-047:p5:c01", "computer-networks-035:p39:c01" ], - "duration_ms": 181.791, + "duration_ms": 171.577, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 0.0, @@ -1626,6 +1686,7 @@ "course_id": "computer_networks", "scenario": "evidence_bundle", "split": "dev", + "difficulty": "medium", "query": "网络层大题中192.168.1.10:5000映射到202.1.1.1:8000,回包怎么还原?去8.8.8.8该选哪条路由?", "top_chunk_ids": [ "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四~大题二-参考答案:c01", @@ -1649,7 +1710,8 @@ "computer-networks-041:p1:c01", "computer-networks-029:p17:c01" ], - "duration_ms": 192.608, + "duration_ms": 181.924, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -1682,6 +1744,7 @@ "course_id": "computer_networks", "scenario": "evidence_bundle", "split": "dev", + "difficulty": "medium", "query": "请找到NAPT网关那道题的题干和答案,解释回程端口还原以及/8为什么优先于默认路由。", "top_chunk_ids": [ "computer-networks-025:h-网络层大题~大题一-综合寻址-子网划分与-icmp-模型一-二-三~大题二-nat-转换与路由查表-模型三-四~大题二-参考答案:c01", @@ -1705,7 +1768,8 @@ "computer-networks-006:p2:c01", "computer-networks-003:q-computer-networks-003-q15:c01" ], - "duration_ms": 197.106, + "duration_ms": 228.502, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -1738,6 +1802,7 @@ "course_id": "software_testing", "scenario": "problem", "split": "dev", + "difficulty": "medium", "query": "三个独立输入变量,健壮最坏情况边界值测试需要多少组?和健壮边界值有什么不同?", "top_chunk_ids": [ "software-testing-030:s28:c01", @@ -1761,7 +1826,8 @@ "software-testing-030:s20:c01", "software-testing-034:s17:c01" ], - "duration_ms": 917.45, + "duration_ms": 819.476, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -1795,6 +1861,7 @@ "course_id": "software_testing", "scenario": "problem", "split": "dev", + "difficulty": "medium", "query": "每个输入都取七个含越界的代表值,再组合三个输入,是19组还是343组?", "top_chunk_ids": [ "software-testing-030:s11:c01", @@ -1818,7 +1885,8 @@ "software-testing-040:h-unit~题目-3-白盒覆盖分析-语句-分支-条件组合~解题过程~第四步-条件组合覆盖-multiple-condition-coverage:c02", "software-testing-058:h-概念整理~四-黑盒测试技术:c01" ], - "duration_ms": 304.036, + "duration_ms": 270.619, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 0.0, @@ -1853,6 +1921,7 @@ "course_id": "software_testing", "scenario": "problem", "split": "dev", + "difficulty": "medium", "query": "保险年龄1–18收费100,19–60收费200,61–150收费300,非整数或越界非法,怎么选等价类和边界测试?", "top_chunk_ids": [ "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~题目:c01", @@ -1876,7 +1945,8 @@ "software-testing-024:h-新高考-a~三-黑白盒测试:c04", "software-testing-052:h-st-讲义-二-黑盒测试:c02" ], - "duration_ms": 341.243, + "duration_ms": 290.384, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -1910,6 +1980,7 @@ "course_id": "software_testing", "scenario": "problem", "split": "dev", + "difficulty": "medium", "query": "测保险系统只用年龄1、80、150够吗?1–18、19–60、61–150三档收费,输入必须是整数。", "top_chunk_ids": [ "software-testing-040:h-unit~题目-1-等价类划分-边界值分析-综合题~题目:c01", @@ -1933,7 +2004,8 @@ "software-testing-050:h-st-讲义-三-白盒测试:c11", "software-testing-035:s47:c01" ], - "duration_ms": 397.537, + "duration_ms": 270.112, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -1967,6 +2039,7 @@ "course_id": "software_testing", "scenario": "concept", "split": "validation", + "difficulty": "medium", "query": "判定覆盖能保证复合条件里的每个条件都独立影响结果吗?", "top_chunk_ids": [ "software-testing-046:q-software-testing-046-q34:c01", @@ -1990,7 +2063,8 @@ "software-testing-038:h-白盒测试-逻辑覆盖---学习笔记~4.-decision-condition-coverage-dcc-判定-条件覆盖:c01", "software-testing-030:s61:c01" ], - "duration_ms": 319.852, + "duration_ms": 351.319, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2024,6 +2098,7 @@ "course_id": "software_testing", "scenario": "concept", "split": "validation", + "difficulty": "medium", "query": "if里有三个布尔条件,真假分支各走一次就算MC/DC了吗?", "top_chunk_ids": [ "software-testing-040:h-unit~题目-3-白盒覆盖分析-语句-分支-条件组合~解题过程~第三步-分支覆盖-判定覆盖-branch-coverage:c01", @@ -2047,7 +2122,8 @@ "software-testing-036:s73:c01", "software-testing-036:s77:c01" ], - "duration_ms": 295.655, + "duration_ms": 264.394, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 1.0, @@ -2081,6 +2157,7 @@ "course_id": "artificial_intelligence_intro", "scenario": "concept", "split": "validation", + "difficulty": "medium", "query": "决策树预剪枝为什么既能减少过拟合,又可能欠拟合?", "top_chunk_ids": [ "artificial-intelligence-intro-017:s27:c01", @@ -2104,7 +2181,8 @@ "artificial-intelligence-intro-017:s30:c01", "artificial-intelligence-intro-017:s32:c01" ], - "duration_ms": 688.62, + "duration_ms": 633.377, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2138,6 +2216,7 @@ "course_id": "artificial_intelligence_intro", "scenario": "concept", "split": "validation", + "difficulty": "medium", "query": "某次分裂当下没提高验证表现就停止,会不会错过后续更好的树?", "top_chunk_ids": [ "artificial-intelligence-intro-017:s23:c01", @@ -2161,7 +2240,8 @@ "artificial-intelligence-intro-023:h-dhh题目~图2-知识点-前馈神经网络-bp-算法-前向传播-梯度下降更新:c09", "artificial-intelligence-intro-017:s24:c01" ], - "duration_ms": 195.782, + "duration_ms": 176.466, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 1.0, @@ -2195,6 +2275,7 @@ "course_id": "artificial_intelligence_intro", "scenario": "concept", "split": "validation", + "difficulty": "medium", "query": "一致启发为什么能让A*像Dijkstra一样工作?请解释重赋权。", "top_chunk_ids": [ "artificial-intelligence-intro-008:h-第3章-搜索探寻与问题求解:c04", @@ -2218,7 +2299,8 @@ "artificial-intelligence-intro-042:h-2026人工智能导论回忆版:c01", "artificial-intelligence-intro-001:h-人工智能导论-考点分布梳理-融合版~二-jk2.docx-官方重点清单-源c-逐条映射:c02" ], - "duration_ms": 198.888, + "duration_ms": 187.666, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2252,6 +2334,7 @@ "course_id": "artificial_intelligence_intro", "scenario": "concept", "split": "validation", + "difficulty": "medium", "query": "如果h(n)≤c(n,n′)+h(n′),为什么c′=c−h(n)+h(n′)不会是负数?", "top_chunk_ids": [ "artificial-intelligence-intro-050:s51:c01", @@ -2275,7 +2358,8 @@ "artificial-intelligence-intro-015:s61:c01", "artificial-intelligence-intro-015:s77:c01" ], - "duration_ms": 216.404, + "duration_ms": 190.421, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2309,6 +2393,7 @@ "course_id": "computer_organization", "scenario": "concept", "split": "dev", + "difficulty": "easy", "query": "Cache为什么能缓解CPU与主存速度不匹配?", "top_chunk_ids": [ "computer-organization-026:s76:c01", @@ -2332,7 +2417,8 @@ "computer-organization-016:h-b:c03", "computer-organization-045:h-题:c03" ], - "duration_ms": 345.09, + "duration_ms": 342.897, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2366,6 +2452,7 @@ "course_id": "computer_organization", "scenario": "concept", "split": "dev", + "difficulty": "medium", "query": "只加一小块高速缓存为什么有用?它利用程序访问的什么特点?", "top_chunk_ids": [ "computer-organization-032:s17:c01", @@ -2389,7 +2476,8 @@ "computer-organization-026:s63:c01", "computer-organization-028:s7:c01" ], - "duration_ms": 116.296, + "duration_ms": 114.828, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 1.0, @@ -2423,6 +2511,7 @@ "course_id": "web_frontend_fundamentals", "scenario": "concept", "split": "validation", + "difficulty": "easy", "query": "CSS只想增加元素下面的外边距,应该改哪个属性?", "top_chunk_ids": [ "web-frontend-fundamentals-014:s32:c01", @@ -2446,7 +2535,8 @@ "web-frontend-fundamentals-018:s22:c01", "web-frontend-fundamentals-015:s39:c01" ], - "duration_ms": 316.306, + "duration_ms": 195.793, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2480,6 +2570,7 @@ "course_id": "web_frontend_fundamentals", "scenario": "concept", "split": "validation", + "difficulty": "easy", "query": "不想动上左右间距,只想让一个块和下一个块离远一点,margin还是margin-bottom?", "top_chunk_ids": [ "web-frontend-fundamentals-014:s36:c01", @@ -2503,7 +2594,8 @@ "web-frontend-fundamentals-006:s14:c01", "web-frontend-fundamentals-008:s13:c01" ], - "duration_ms": 70.055, + "duration_ms": 78.901, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2537,6 +2629,7 @@ "course_id": "discrete_mathematics", "scenario": "problem", "split": "dev", + "difficulty": "medium", "query": "A={a,b,c,d},等价关系R={(a,b),(b,a),(c,d),(d,c)}∪I_A,对应什么划分?", "top_chunk_ids": [ "discrete-mathematics-003:p4:q-discrete-mathematics-003-q20:c01", @@ -2560,7 +2653,8 @@ "discrete-mathematics-003:p4:q-discrete-mathematics-003-q18:c01", "discrete-mathematics-006:p3:q-discrete-mathematics-006-q4:c01" ], - "duration_ms": 33.857, + "duration_ms": 180.895, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2594,6 +2688,7 @@ "course_id": "discrete_mathematics", "scenario": "problem", "split": "dev", + "difficulty": "medium", "query": "a和b等价,c和d等价,每个元素也与自己等价,为什么不是四个单独的等价类?", "top_chunk_ids": [ "discrete-mathematics-005:p6:q-discrete-mathematics-005-q4:c01", @@ -2617,7 +2712,8 @@ "discrete-mathematics-006:p7:q-discrete-mathematics-006-q5:c01", "discrete-mathematics-003:p8:q-discrete-mathematics-003-q35:c01" ], - "duration_ms": 22.492, + "duration_ms": 17.12, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2651,6 +2747,7 @@ "course_id": "electrical_engineering", "scenario": "review", "split": "dev", + "difficulty": "medium", "query": "电路复习大纲里一阶暂态分析要掌握哪三个量?我想先按它们安排练习。", "top_chunk_ids": [ "electrical-engineering-009:h-电路与电子技术-复习大纲:c01", @@ -2674,7 +2771,8 @@ "electrical-engineering-003:p4:c01", "electrical-engineering-005:p4:c01" ], - "duration_ms": 30.117, + "duration_ms": 31.926, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2708,6 +2806,7 @@ "course_id": "electrical_engineering", "scenario": "review", "split": "dev", + "difficulty": "medium", "query": "复习RC/RL一阶暂态时,初始值、最终值和变化快慢分别对应大纲中的什么?", "top_chunk_ids": [ "electrical-engineering-008:p1:c01", @@ -2731,7 +2830,8 @@ "electrical-engineering-003:p5:c01", "electrical-engineering-005:p4:c01" ], - "duration_ms": 23.896, + "duration_ms": 15.691, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2765,6 +2865,7 @@ "course_id": "data_structure", "scenario": "source_correction", "split": "dev", + "difficulty": "medium", "query": "资料说切换到std::sort就确保排序稳定,这句话对吗?", "top_chunk_ids": [ "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c03", @@ -2788,7 +2889,8 @@ "data-structure-020:h-2024-a-数据结构:c07", "data-structure-020:h-2024-a-数据结构:c02" ], - "duration_ms": 40.49, + "duration_ms": 32.905, + "scoring_status": "scored", "known_evidence_coverage_at_5": 1.0, "all_evidence_groups_at_5": 1, "known_evidence_coverage_at_20": 1.0, @@ -2822,6 +2924,7 @@ "course_id": "data_structure", "scenario": "source_correction", "split": "dev", + "difficulty": "medium", "query": "相同分数的学生必须保留原先先后顺序,笔记建议用std::sort,我能直接照做吗?", "top_chunk_ids": [ "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c01", @@ -2845,7 +2948,8 @@ "data-structure-010:h-2011级数据结构试卷a及答案:c03", "data-structure-015:h-2016数据结构试卷b及答案:c02" ], - "duration_ms": 28.389, + "duration_ms": 52.101, + "scoring_status": "scored", "known_evidence_coverage_at_5": 0.0, "all_evidence_groups_at_5": 0, "known_evidence_coverage_at_20": 1.0, @@ -2872,141 +2976,3587 @@ "data-structure-010:h-2011级数据结构试卷a及答案:c03", "data-structure-015:h-2016数据结构试卷b及答案:c02" ] + }, + { + "case_id": "graphics-halfedge-1", + "topic_id": "graphics-halfedge", + "course_id": "computer_graphics", + "scenario": "code_reasoning", + "split": "dev", + "difficulty": "medium", + "query": "半边结构建模时,遍历一条有向边(u,v),怎样把它与反向半边(v,u)连起来?", + "top_chunk_ids": [ + "computer-graphics-009:p23:c01", + "computer-graphics-009:p29:c01", + "computer-graphics-009:p25:c01", + "computer-graphics-009:p44:c01", + "computer-graphics-009:p26:c01", + "computer-graphics-009:p24:c01", + "computer-graphics-009:p30:c01", + "computer-graphics-011:p65:c01", + "computer-graphics-011:p66:c01", + "computer-graphics-011:p12:c01", + "computer-graphics-011:p58:c01", + "computer-graphics-011:p10:c01", + "computer-graphics-011:p62:c01", + "computer-graphics-011:p57:c01", + "computer-graphics-010:p13:c01", + "computer-graphics-010:p29:c01", + "computer-graphics-010:p10:c01", + "computer-graphics-010:p11:c01", + "computer-graphics-010:p12:c01", + "computer-graphics-010:p14:c01" + ], + "duration_ms": 178.595, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "computer-graphics-009:p23:c01", + "computer-graphics-009:p25:c01", + "computer-graphics-009:p44:c01", + "computer-graphics-009:p26:c01", + "computer-graphics-009:p24:c01", + "computer-graphics-009:p30:c01", + "computer-graphics-011:p65:c01", + "computer-graphics-011:p66:c01", + "computer-graphics-011:p12:c01", + "computer-graphics-011:p58:c01", + "computer-graphics-011:p10:c01", + "computer-graphics-011:p62:c01", + "computer-graphics-011:p57:c01", + "computer-graphics-010:p13:c01", + "computer-graphics-010:p29:c01", + "computer-graphics-010:p10:c01", + "computer-graphics-010:p11:c01", + "computer-graphics-010:p12:c01", + "computer-graphics-010:p14:c01" + ] + }, + { + "case_id": "graphics-halfedge-2", + "topic_id": "graphics-halfedge", + "course_id": "computer_graphics", + "scenario": "code_reasoning", + "split": "dev", + "difficulty": "hard", + "query": "网格相邻两个面共享一条无向边。若只建立nextHalfEdge而不建立oppoHalfEdge,沿面走一圈仍可行;哪一类跨面操作会失去直接邻接信息,为什么?", + "top_chunk_ids": [ + "computer-graphics-009:p25:c01", + "computer-graphics-010:p26:c01", + "computer-graphics-009:p29:c01", + "computer-graphics-007:p5:c01", + "computer-graphics-004:p46:c01", + "computer-graphics-008:p6:c01", + "computer-graphics-010:p19:c01", + "computer-graphics-010:p24:c01", + "computer-graphics-007:p46:c01", + "computer-graphics-006:p46:c01", + "computer-graphics-009:p30:c01", + "computer-graphics-002:p17:c01", + "computer-graphics-007:p4:c01", + "computer-graphics-010:p25:c01", + "computer-graphics-010:p21:c01", + "computer-graphics-010:p23:c01", + "computer-graphics-006:p77:c01", + "computer-graphics-009:p24:c01", + "computer-graphics-009:p22:c01", + "computer-graphics-010:p28:c01" + ], + "duration_ms": 82.451, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "computer-graphics-009:p25:c01", + "computer-graphics-010:p26:c01", + "computer-graphics-007:p5:c01", + "computer-graphics-004:p46:c01", + "computer-graphics-008:p6:c01", + "computer-graphics-010:p19:c01", + "computer-graphics-010:p24:c01", + "computer-graphics-007:p46:c01", + "computer-graphics-006:p46:c01", + "computer-graphics-009:p30:c01", + "computer-graphics-002:p17:c01", + "computer-graphics-007:p4:c01", + "computer-graphics-010:p25:c01", + "computer-graphics-010:p21:c01", + "computer-graphics-010:p23:c01", + "computer-graphics-006:p77:c01", + "computer-graphics-009:p24:c01", + "computer-graphics-009:p22:c01", + "computer-graphics-010:p28:c01" + ] + }, + { + "case_id": "cs-intro-machine-language-1", + "topic_id": "cs-intro-machine-language", + "course_id": "computer_science_intro", + "scenario": "concept", + "split": "validation", + "difficulty": "medium", + "query": "CPU实际执行的是高级语言、汇编语言还是机器语言?为什么编译或汇编步骤不能省略?", + "top_chunk_ids": [ + "computer-science-intro-012:h-计算机科学概论:c03", + "computer-science-intro-007:s37:c01", + "computer-science-intro-008:s14:c01", + "computer-science-intro-010:s67:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q9:c01", + "computer-science-intro-009:s6:c01", + "computer-science-intro-009:s7:c01", + "computer-science-intro-009:s2:c01", + "computer-science-intro-005:s18:c01", + "computer-science-intro-009:s5:c01", + "computer-science-intro-009:s30:c01", + "computer-science-intro-008:s23:c01", + "computer-science-intro-009:s3:c01", + "computer-science-intro-008:s36:c01", + "computer-science-intro-008:s33:c01", + "computer-science-intro-008:s13:c01", + "computer-science-intro-005:s19:c01", + "computer-science-intro-005:s20:c01", + "computer-science-intro-009:s26:c01", + "computer-science-intro-010:s57:c01" + ], + "duration_ms": 68.643, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "computer-science-intro-012:h-计算机科学概论:c03", + "computer-science-intro-007:s37:c01", + "computer-science-intro-008:s14:c01", + "computer-science-intro-010:s67:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q9:c01", + "computer-science-intro-009:s6:c01", + "computer-science-intro-009:s7:c01", + "computer-science-intro-009:s2:c01", + "computer-science-intro-005:s18:c01", + "computer-science-intro-009:s5:c01", + "computer-science-intro-009:s30:c01", + "computer-science-intro-008:s23:c01", + "computer-science-intro-009:s3:c01", + "computer-science-intro-008:s36:c01", + "computer-science-intro-008:s33:c01", + "computer-science-intro-008:s13:c01", + "computer-science-intro-005:s19:c01", + "computer-science-intro-005:s20:c01", + "computer-science-intro-009:s26:c01", + "computer-science-intro-010:s57:c01" + ] + }, + { + "case_id": "cs-intro-machine-language-2", + "topic_id": "cs-intro-machine-language", + "course_id": "computer_science_intro", + "scenario": "concept", + "split": "validation", + "difficulty": "hard", + "query": "有人说“汇编语言最接近机器,所以CPU直接执行汇编文本”。请用取指—执行和翻译层次解释这句话哪里不严谨。", + "top_chunk_ids": [ + "computer-science-intro-012:h-计算机科学概论:c03", + "computer-science-intro-007:s37:c01", + "computer-science-intro-008:s14:c01", + "computer-science-intro-010:s67:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q9:c01", + "computer-science-intro-009:s6:c01", + "computer-science-intro-009:s5:c01", + "computer-science-intro-009:s2:c01", + "computer-science-intro-009:s7:c01", + "computer-science-intro-005:s18:c01", + "computer-science-intro-003:p3:q-computer-science-intro-003-q9:c01", + "computer-science-intro-009:s29:c01", + "computer-science-intro-005:s6:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q6:c01", + "computer-science-intro-006:s30:c01", + "computer-science-intro-009:s4:c01", + "computer-science-intro-008:s13:c01", + "computer-science-intro-005:s19:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q8:c01", + "computer-science-intro-005:s3:c01" + ], + "duration_ms": 28.262, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.09090909090909091, + "unjudged_chunk_ids": [ + "computer-science-intro-012:h-计算机科学概论:c03", + "computer-science-intro-007:s37:c01", + "computer-science-intro-008:s14:c01", + "computer-science-intro-010:s67:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q9:c01", + "computer-science-intro-009:s6:c01", + "computer-science-intro-009:s5:c01", + "computer-science-intro-009:s2:c01", + "computer-science-intro-009:s7:c01", + "computer-science-intro-005:s18:c01", + "computer-science-intro-009:s29:c01", + "computer-science-intro-005:s6:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q6:c01", + "computer-science-intro-006:s30:c01", + "computer-science-intro-009:s4:c01", + "computer-science-intro-008:s13:c01", + "computer-science-intro-005:s19:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q8:c01", + "computer-science-intro-005:s3:c01" + ] + }, + { + "case_id": "numerical-richardson-1", + "topic_id": "numerical-richardson", + "course_id": "computing_methods", + "scenario": "derivation", + "split": "dev", + "difficulty": "medium", + "query": "若F-F0(h)=a1 h^p1+高阶项,h足够小时为什么说p1是误差阶?", + "top_chunk_ids": [ + "computing-methods-002:p92:c01", + "computing-methods-048:p35:c01", + "computing-methods-002:p92:c02", + "computing-methods-049:p61:c01", + "computing-methods-002:p56:c01", + "computing-methods-048:p32:c01", + "computing-methods-002:p133:c01", + "computing-methods-002:p93:c01", + "computing-methods-045:p25:c01", + "computing-methods-046:p70:c01", + "computing-methods-048:p36:c01", + "computing-methods-007:h-2024提纲:c01", + "computing-methods-049:p25:c01", + "computing-methods-002:p23:c01", + "computing-methods-002:p95:c01", + "computing-methods-002:p24:c01", + "computing-methods-002:p190:c01", + "computing-methods-048:p22:c01", + "computing-methods-002:p94:c01", + "computing-methods-047:p21:c01" + ], + "duration_ms": 457.126, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "computing-methods-048:p35:c01", + "computing-methods-002:p92:c02", + "computing-methods-049:p61:c01", + "computing-methods-002:p56:c01", + "computing-methods-048:p32:c01", + "computing-methods-002:p133:c01", + "computing-methods-002:p93:c01", + "computing-methods-045:p25:c01", + "computing-methods-046:p70:c01", + "computing-methods-048:p36:c01", + "computing-methods-007:h-2024提纲:c01", + "computing-methods-049:p25:c01", + "computing-methods-002:p23:c01", + "computing-methods-002:p95:c01", + "computing-methods-002:p24:c01", + "computing-methods-002:p190:c01", + "computing-methods-048:p22:c01", + "computing-methods-002:p94:c01", + "computing-methods-047:p21:c01" + ] + }, + { + "case_id": "numerical-richardson-2", + "topic_id": "numerical-richardson", + "course_id": "computing_methods", + "scenario": "derivation", + "split": "dev", + "difficulty": "hard", + "query": "已知F0(h)和F0(qh)具有同一首项误差,怎样组合它们消去a1h^p1?请写出组合式并说明q的限制。", + "top_chunk_ids": [ + "computing-methods-002:p92:c01", + "computing-methods-048:p33:c01", + "computing-methods-045:p8:c01", + "computing-methods-011:q-computing-methods-011-q3:c01", + "computing-methods-012:q-computing-methods-012-q4:c01", + "computing-methods-002:p93:c01", + "computing-methods-048:p34:c01", + "computing-methods-006:q-computing-methods-006-q6:c01", + "computing-methods-019:h-数学系11级数值分析a:c03", + "computing-methods-048:p35:c01", + "computing-methods-015:p1:c01", + "computing-methods-002:p23:c01", + "computing-methods-002:p92:c02", + "computing-methods-014:q-computing-methods-014-q5:c01", + "computing-methods-044:h-课后题汇总:c01", + "computing-methods-002:p22:c01", + "computing-methods-002:p105:c01", + "computing-methods-018:h-数学系09级数值分析a:c03", + "computing-methods-002:p8:c01", + "computing-methods-006:h-2016华工计算机计算方法-数值分析-考试试卷:c01" + ], + "duration_ms": 126.341, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "computing-methods-048:p33:c01", + "computing-methods-045:p8:c01", + "computing-methods-011:q-computing-methods-011-q3:c01", + "computing-methods-012:q-computing-methods-012-q4:c01", + "computing-methods-002:p93:c01", + "computing-methods-048:p34:c01", + "computing-methods-006:q-computing-methods-006-q6:c01", + "computing-methods-019:h-数学系11级数值分析a:c03", + "computing-methods-048:p35:c01", + "computing-methods-015:p1:c01", + "computing-methods-002:p23:c01", + "computing-methods-002:p92:c02", + "computing-methods-014:q-computing-methods-014-q5:c01", + "computing-methods-044:h-课后题汇总:c01", + "computing-methods-002:p22:c01", + "computing-methods-002:p105:c01", + "computing-methods-018:h-数学系09级数值分析a:c03", + "computing-methods-002:p8:c01", + "computing-methods-006:h-2016华工计算机计算方法-数值分析-考试试卷:c01" + ] + }, + { + "case_id": "cpp-film-polymorphism-1", + "topic_id": "cpp-film-polymorphism", + "course_id": "cpp", + "scenario": "code_review", + "split": "dev", + "difficulty": "medium", + "query": "Film、DirectorCut和ForeignFilm这道题中,哪些属性应放在基类,哪些应留给派生类?", + "top_chunk_ids": [ + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c01", + "cpp-032:p152:q-cpp-032-q84:c01", + "cpp-009:h-b:c01", + "cpp-032:p160:q-cpp-032-q90:c01", + "cpp-008:h-a:c01", + "cpp-031:h-习题与解答~第8章练习题~一-思考题:c01", + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c03", + "cpp-032:p159:q-cpp-032-q88:c01", + "cpp-031:h-习题与解答~第8章练习题~一-思考题:c02", + "cpp-032:p167:q-cpp-032-q92:c01", + "cpp-031:h-习题与解答~第9章练习题~一-选择题:c01", + "cpp-043:p2:q-cpp-043-q16:c01", + "cpp-044:q-cpp-044-q8:c01", + "cpp-032:p162:q-cpp-032-q90:c01", + "cpp-044:q-cpp-044-q7:c01", + "cpp-032:p152:q-cpp-032-q83:c01", + "cpp-033:p1:q-cpp-033-q9:c01", + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c02", + "cpp-032:p156:q-cpp-032-q86:c01", + "cpp-027:p3:q-cpp-027-q13:c01" + ], + "duration_ms": 393.492, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.2, + "unjudged_chunk_ids": [ + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c01", + "cpp-032:p152:q-cpp-032-q84:c01", + "cpp-009:h-b:c01", + "cpp-032:p160:q-cpp-032-q90:c01", + "cpp-031:h-习题与解答~第8章练习题~一-思考题:c01", + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c03", + "cpp-032:p159:q-cpp-032-q88:c01", + "cpp-031:h-习题与解答~第8章练习题~一-思考题:c02", + "cpp-032:p167:q-cpp-032-q92:c01", + "cpp-031:h-习题与解答~第9章练习题~一-选择题:c01", + "cpp-043:p2:q-cpp-043-q16:c01", + "cpp-044:q-cpp-044-q8:c01", + "cpp-032:p162:q-cpp-032-q90:c01", + "cpp-044:q-cpp-044-q7:c01", + "cpp-032:p152:q-cpp-032-q83:c01", + "cpp-033:p1:q-cpp-033-q9:c01", + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c02", + "cpp-032:p156:q-cpp-032-q86:c01", + "cpp-027:p3:q-cpp-027-q13:c01" + ] + }, + { + "case_id": "cpp-film-polymorphism-2", + "topic_id": "cpp-film-polymorphism", + "course_id": "cpp", + "scenario": "code_review", + "split": "dev", + "difficulty": "hard", + "query": "若通过Film&指向DirectorCut并调用output,希望输出修订信息,基类和派生类的output还缺什么设计?同时说明为什么只改成员访问权限不够。", + "top_chunk_ids": [ + "cpp-027:p3:q-cpp-027-q13:c01", + "cpp-032:p155:q-cpp-032-q86:c01", + "cpp-043:p2:q-cpp-043-q13:c01", + "cpp-032:p159:q-cpp-032-q88:c01", + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c03", + "cpp-032:p167:q-cpp-032-q92:c01", + "cpp-034:p4:q-cpp-034-q22:c01", + "cpp-031:h-习题与解答~第9章练习题~一-选择题:c01", + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c02", + "cpp-027:p4:q-cpp-027-q19:c01", + "cpp-032:p152:q-cpp-032-q84:c01", + "cpp-031:h-习题与解答~第8章练习题~一-思考题:c02", + "cpp-032:p162:q-cpp-032-q90:c01", + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c01", + "cpp-032:p170:q-cpp-032-q96:c01", + "cpp-044:q-cpp-044-q8:c01", + "cpp-044:q-cpp-044-q6:c01", + "cpp-027:p4:q-cpp-027-q17:c01", + "cpp-032:p160:q-cpp-032-q90:c01", + "cpp-031:h-习题与解答~第9章练习题~一-思考题:c01" + ], + "duration_ms": 144.696, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "cpp-027:p3:q-cpp-027-q13:c01", + "cpp-032:p155:q-cpp-032-q86:c01", + "cpp-043:p2:q-cpp-043-q13:c01", + "cpp-032:p159:q-cpp-032-q88:c01", + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c03", + "cpp-032:p167:q-cpp-032-q92:c01", + "cpp-034:p4:q-cpp-034-q22:c01", + "cpp-031:h-习题与解答~第9章练习题~一-选择题:c01", + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c02", + "cpp-027:p4:q-cpp-027-q19:c01", + "cpp-032:p152:q-cpp-032-q84:c01", + "cpp-031:h-习题与解答~第8章练习题~一-思考题:c02", + "cpp-032:p162:q-cpp-032-q90:c01", + "cpp-031:h-习题与解答~第8章练习题~一-选择题:c01", + "cpp-032:p170:q-cpp-032-q96:c01", + "cpp-044:q-cpp-044-q8:c01", + "cpp-044:q-cpp-044-q6:c01", + "cpp-027:p4:q-cpp-027-q17:c01", + "cpp-032:p160:q-cpp-032-q90:c01", + "cpp-031:h-习题与解答~第9章练习题~一-思考题:c01" + ] + }, + { + "case_id": "digital-mux-selection-1", + "topic_id": "digital-mux-selection", + "course_id": "digital_logic", + "scenario": "problem", + "split": "validation", + "difficulty": "medium", + "query": "四选一数据选择器B1B0为地址、X0到X3为输入时,00、01、10、11分别该选择哪个Xi?", + "top_chunk_ids": [ + "digital-logic-003:q-digital-logic-003-q2:c01", + "digital-logic-005:p5:c01", + "digital-logic-002:q-digital-logic-002-q3:c01", + "digital-logic-005:p3:c01", + "digital-logic-003:q-digital-logic-003-q26:c01", + "digital-logic-002:q-digital-logic-002-q7:c01", + "digital-logic-003:q-digital-logic-003-q6:c01", + "digital-logic-001:h-数字逻辑作业:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c04", + "digital-logic-002:q-digital-logic-002-q18:c01", + "digital-logic-002:q-digital-logic-002-q15:c01", + "digital-logic-003:q-digital-logic-003-q20:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c01", + "digital-logic-003:q-digital-logic-003-q29:c01", + "digital-logic-005:p1:c01", + "digital-logic-002:q-digital-logic-002-q19:c01", + "digital-logic-003:q-digital-logic-003-q28:c01", + "digital-logic-003:q-digital-logic-003-q16:c01", + "digital-logic-002:q-digital-logic-002-q17:c01", + "digital-logic-003:q-digital-logic-003-q21:c01" + ], + "duration_ms": 178.161, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "digital-logic-005:p5:c01", + "digital-logic-002:q-digital-logic-002-q3:c01", + "digital-logic-005:p3:c01", + "digital-logic-003:q-digital-logic-003-q26:c01", + "digital-logic-002:q-digital-logic-002-q7:c01", + "digital-logic-003:q-digital-logic-003-q6:c01", + "digital-logic-001:h-数字逻辑作业:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c04", + "digital-logic-002:q-digital-logic-002-q18:c01", + "digital-logic-002:q-digital-logic-002-q15:c01", + "digital-logic-003:q-digital-logic-003-q20:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c01", + "digital-logic-003:q-digital-logic-003-q29:c01", + "digital-logic-005:p1:c01", + "digital-logic-002:q-digital-logic-002-q19:c01", + "digital-logic-003:q-digital-logic-003-q28:c01", + "digital-logic-003:q-digital-logic-003-q16:c01", + "digital-logic-002:q-digital-logic-002-q17:c01", + "digital-logic-003:q-digital-logic-003-q21:c01" + ] + }, + { + "case_id": "digital-mux-selection-2", + "topic_id": "digital-mux-selection", + "course_id": "digital_logic", + "scenario": "problem", + "split": "validation", + "difficulty": "hard", + "query": "请从地址码的最小项推导四选一选择器输出式,并判断试卷中哪一项与00→X0、01→X1、10→X2、11→X3一致。", + "top_chunk_ids": [ + "digital-logic-003:q-digital-logic-003-q2:c01", + "digital-logic-001:h-数字逻辑作业:c02", + "digital-logic-002:q-digital-logic-002-q18:c01", + "digital-logic-003:q-digital-logic-003-q9:c01", + "digital-logic-003:q-digital-logic-003-q29:c01", + "digital-logic-002:q-digital-logic-002-q8:c01", + "digital-logic-003:q-digital-logic-003-q8:c01", + "digital-logic-003:q-digital-logic-003-q24:c01", + "digital-logic-002:q-digital-logic-002-q13:c01", + "digital-logic-002:q-digital-logic-002-q3:c01", + "digital-logic-002:q-digital-logic-002-q7:c01", + "digital-logic-003:q-digital-logic-003-q6:c01", + "digital-logic-005:p5:c01", + "digital-logic-001:h-数字逻辑作业:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c04", + "digital-logic-005:p3:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c01", + "digital-logic-003:q-digital-logic-003-q26:c01", + "digital-logic-005:p1:c01", + "digital-logic-002:q-digital-logic-002-q19:c01" + ], + "duration_ms": 17.527, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "digital-logic-001:h-数字逻辑作业:c02", + "digital-logic-002:q-digital-logic-002-q18:c01", + "digital-logic-003:q-digital-logic-003-q9:c01", + "digital-logic-003:q-digital-logic-003-q29:c01", + "digital-logic-002:q-digital-logic-002-q8:c01", + "digital-logic-003:q-digital-logic-003-q8:c01", + "digital-logic-003:q-digital-logic-003-q24:c01", + "digital-logic-002:q-digital-logic-002-q13:c01", + "digital-logic-002:q-digital-logic-002-q3:c01", + "digital-logic-002:q-digital-logic-002-q7:c01", + "digital-logic-003:q-digital-logic-003-q6:c01", + "digital-logic-005:p5:c01", + "digital-logic-001:h-数字逻辑作业:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c04", + "digital-logic-005:p3:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c01", + "digital-logic-003:q-digital-logic-003-q26:c01", + "digital-logic-005:p1:c01", + "digital-logic-002:q-digital-logic-002-q19:c01" + ] + }, + { + "case_id": "digital-yolo-eval-1", + "topic_id": "digital-yolo-eval", + "course_id": "digital_system_creative_design", + "scenario": "code_reasoning", + "split": "dev", + "difficulty": "medium", + "query": "YOLO评估代码为什么先按类别取boxes和scores,再调用NMS?NMS输出的索引用于什么?", + "top_chunk_ids": [ + "digital-system-creative-design-004:p5:c04", + "digital-system-creative-design-004:p8:c02", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c11", + "digital-system-creative-design-004:p9:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c12", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c13", + "digital-system-creative-design-004:p9:c02", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c09", + "digital-system-creative-design-005:p7:c01", + "digital-system-creative-design-004:p6:c01", + "digital-system-creative-design-004:p10:c03", + "digital-system-creative-design-004:p7:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c05", + "digital-system-creative-design-004:p2:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c14", + "digital-system-creative-design-511:h-readme_cn~口罩识别视频输入样例:c01", + "digital-system-creative-design-004:p10:c02", + "digital-system-creative-design-005:p11:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c10", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c02" + ], + "duration_ms": 88.58, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "digital-system-creative-design-004:p5:c04", + "digital-system-creative-design-004:p8:c02", + "digital-system-creative-design-004:p9:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c12", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c13", + "digital-system-creative-design-004:p9:c02", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c09", + "digital-system-creative-design-005:p7:c01", + "digital-system-creative-design-004:p6:c01", + "digital-system-creative-design-004:p10:c03", + "digital-system-creative-design-004:p7:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c05", + "digital-system-creative-design-004:p2:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c14", + "digital-system-creative-design-511:h-readme_cn~口罩识别视频输入样例:c01", + "digital-system-creative-design-004:p10:c02", + "digital-system-creative-design-005:p11:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c10", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c02" + ] + }, + { + "case_id": "digital-yolo-eval-2", + "topic_id": "digital-yolo-eval", + "course_id": "digital_system_creative_design", + "scenario": "code_reasoning", + "split": "dev", + "difficulty": "hard", + "query": "一张图同时含两类目标,若把所有类别的候选框一起做NMS会有什么风险?请依据当前代码的按类循环说明。", + "top_chunk_ids": [ + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c02", + "digital-system-creative-design-004:p2:c01", + "digital-system-creative-design-005:p6:c01", + "digital-system-creative-design-511:h-readme_cn~口罩识别视频输入样例~样例准备:c05", + "digital-system-creative-design-005:p7:c01", + "digital-system-creative-design-005:p13:c01", + "digital-system-creative-design-005:p11:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c10", + "digital-system-creative-design-005:p9:c01", + "digital-system-creative-design-005:p8:c01", + "digital-system-creative-design-004:p6:c02", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c01", + "digital-system-creative-design-511:h-readme_cn:c01", + "digital-system-creative-design-005:p12:c01", + "digital-system-creative-design-005:p2:c01", + "digital-system-creative-design-004:p1:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c15", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c14", + "digital-system-creative-design-005:p5:c01", + "digital-system-creative-design-004:p10:c01" + ], + "duration_ms": 56.399, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c02", + "digital-system-creative-design-004:p2:c01", + "digital-system-creative-design-005:p6:c01", + "digital-system-creative-design-511:h-readme_cn~口罩识别视频输入样例~样例准备:c05", + "digital-system-creative-design-005:p7:c01", + "digital-system-creative-design-005:p13:c01", + "digital-system-creative-design-005:p11:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c10", + "digital-system-creative-design-005:p9:c01", + "digital-system-creative-design-005:p8:c01", + "digital-system-creative-design-004:p6:c02", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c01", + "digital-system-creative-design-511:h-readme_cn:c01", + "digital-system-creative-design-005:p12:c01", + "digital-system-creative-design-005:p2:c01", + "digital-system-creative-design-004:p1:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c15", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c14", + "digital-system-creative-design-005:p5:c01", + "digital-system-creative-design-004:p10:c01" + ] + }, + { + "case_id": "embedded-uart4-pins-1", + "topic_id": "embedded-uart4-pins", + "course_id": "embedded_systems", + "scenario": "code_review", + "split": "validation", + "difficulty": "medium", + "query": "UART4初始化中PC10和PC11分别承担什么角色,GPIO模式为何不同?", + "top_chunk_ids": [ + "embedded-systems-018:p8:q-embedded-systems-018-q39:c01", + "embedded-systems-018:p7:q-embedded-systems-018-q39:c01", + "embedded-systems-017:p3:q-embedded-systems-017-q39:c01", + "embedded-systems-009:s23:c01", + "embedded-systems-002:s8:c01", + "embedded-systems-012:s50:c01", + "embedded-systems-017:p4:q-embedded-systems-017-q39:c01", + "embedded-systems-008:s19:c01", + "embedded-systems-013:s26:c01", + "embedded-systems-017:p3:q-embedded-systems-017-q30:c01", + "embedded-systems-018:p5:q-embedded-systems-018-q30:c01", + "embedded-systems-008:s24:c01", + "embedded-systems-011:s41:c01", + "embedded-systems-011:s54:c01", + "embedded-systems-012:s30:c01", + "embedded-systems-011:s55:c01", + "embedded-systems-013:s25:c01", + "embedded-systems-021:h-嵌入式系统复习2025:c02", + "embedded-systems-003:s12:c01", + "embedded-systems-006:s136:c01" + ], + "duration_ms": 329.148, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "embedded-systems-018:p7:q-embedded-systems-018-q39:c01", + "embedded-systems-017:p3:q-embedded-systems-017-q39:c01", + "embedded-systems-009:s23:c01", + "embedded-systems-002:s8:c01", + "embedded-systems-012:s50:c01", + "embedded-systems-017:p4:q-embedded-systems-017-q39:c01", + "embedded-systems-008:s19:c01", + "embedded-systems-013:s26:c01", + "embedded-systems-017:p3:q-embedded-systems-017-q30:c01", + "embedded-systems-018:p5:q-embedded-systems-018-q30:c01", + "embedded-systems-008:s24:c01", + "embedded-systems-011:s41:c01", + "embedded-systems-011:s54:c01", + "embedded-systems-012:s30:c01", + "embedded-systems-011:s55:c01", + "embedded-systems-013:s25:c01", + "embedded-systems-021:h-嵌入式系统复习2025:c02", + "embedded-systems-003:s12:c01", + "embedded-systems-006:s136:c01" + ] + }, + { + "case_id": "embedded-uart4-pins-2", + "topic_id": "embedded-uart4-pins", + "course_id": "embedded_systems", + "scenario": "code_review", + "split": "validation", + "difficulty": "hard", + "query": "把PC11也配成复用推挽输出后再做串口收发,最可能破坏哪一方向的数据路径?请从代码的Tx/Rx配置解释。", + "top_chunk_ids": [ + "embedded-systems-018:p8:q-embedded-systems-018-q39:c01", + "embedded-systems-018:p5:q-embedded-systems-018-q32:c01", + "embedded-systems-009:s5:c01", + "embedded-systems-006:s5:c01", + "embedded-systems-011:s29:c01", + "embedded-systems-011:s24:c01", + "embedded-systems-006:s25:c01", + "embedded-systems-011:s22:c01", + "embedded-systems-006:s28:c01", + "embedded-systems-011:s13:c01", + "embedded-systems-001:s9:c01", + "embedded-systems-011:s56:c01", + "embedded-systems-001:s11:c01", + "embedded-systems-011:s45:c01", + "embedded-systems-011:s23:c01", + "embedded-systems-011:s21:c01", + "embedded-systems-011:s28:c01", + "embedded-systems-011:s52:c01", + "embedded-systems-006:s32:c01", + "embedded-systems-003:s31:c01" + ], + "duration_ms": 108.699, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "embedded-systems-018:p5:q-embedded-systems-018-q32:c01", + "embedded-systems-009:s5:c01", + "embedded-systems-006:s5:c01", + "embedded-systems-011:s29:c01", + "embedded-systems-011:s24:c01", + "embedded-systems-006:s25:c01", + "embedded-systems-011:s22:c01", + "embedded-systems-006:s28:c01", + "embedded-systems-011:s13:c01", + "embedded-systems-001:s9:c01", + "embedded-systems-011:s56:c01", + "embedded-systems-001:s11:c01", + "embedded-systems-011:s45:c01", + "embedded-systems-011:s23:c01", + "embedded-systems-011:s21:c01", + "embedded-systems-011:s28:c01", + "embedded-systems-011:s52:c01", + "embedded-systems-006:s32:c01", + "embedded-systems-003:s31:c01" + ] + }, + { + "case_id": "analysis1-lipschitz-1", + "topic_id": "analysis1-lipschitz", + "course_id": "engineering_math_analysis_1", + "scenario": "proof", + "split": "dev", + "difficulty": "medium", + "query": "在闭区间上满足Lipschitz条件|f(x)-f(y)|≤L|x-y|,怎样证明f一致连续?", + "top_chunk_ids": [ + "engineering-mathematical-analysis-1-018:p2:q-engineering-mathematical-analysis-1-018-q20:c01", + "engineering-mathematical-analysis-1-010:p7:q-engineering-mathematical-analysis-1-010-q14:c01", + "engineering-mathematical-analysis-1-011:p7:q-engineering-mathematical-analysis-1-011-q18:c01", + "engineering-mathematical-analysis-1-024:p5:q-engineering-mathematical-analysis-1-024-q18:c01", + "engineering-mathematical-analysis-1-023:p5:q-engineering-mathematical-analysis-1-023-q18:c01", + "engineering-mathematical-analysis-1-015:p5:q-engineering-mathematical-analysis-1-015-q19:c01", + "engineering-mathematical-analysis-1-016:p8:q-engineering-mathematical-analysis-1-016-q15:c01", + "engineering-mathematical-analysis-1-013:p5:q-engineering-mathematical-analysis-1-013-q20:c01", + "engineering-mathematical-analysis-1-017:p5:q-engineering-mathematical-analysis-1-017-q20:c01", + "engineering-mathematical-analysis-1-025:p5:q-engineering-mathematical-analysis-1-025-q20:c01", + "engineering-mathematical-analysis-1-008:p9:q-engineering-mathematical-analysis-1-008-q11:c01", + "engineering-mathematical-analysis-1-006:p5:q-engineering-mathematical-analysis-1-006-q21:c01", + "engineering-mathematical-analysis-1-012:p5:q-engineering-mathematical-analysis-1-012-q15:c01", + "engineering-mathematical-analysis-1-009:p9:q-engineering-mathematical-analysis-1-009-q6:c01", + "engineering-mathematical-analysis-1-007:p5:q-engineering-mathematical-analysis-1-007-q19:c01", + "engineering-mathematical-analysis-1-022:p6:q-engineering-mathematical-analysis-1-022-q6:c01", + "engineering-mathematical-analysis-1-021:p6:q-engineering-mathematical-analysis-1-021-q16:c01", + "engineering-mathematical-analysis-1-003:s33:c01", + "engineering-mathematical-analysis-1-014:p7:q-engineering-mathematical-analysis-1-014-q20:c01", + "engineering-mathematical-analysis-1-021:p5:q-engineering-mathematical-analysis-1-021-q14:c01" + ], + "duration_ms": 113.444, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "engineering-mathematical-analysis-1-018:p2:q-engineering-mathematical-analysis-1-018-q20:c01", + "engineering-mathematical-analysis-1-010:p7:q-engineering-mathematical-analysis-1-010-q14:c01", + "engineering-mathematical-analysis-1-024:p5:q-engineering-mathematical-analysis-1-024-q18:c01", + "engineering-mathematical-analysis-1-023:p5:q-engineering-mathematical-analysis-1-023-q18:c01", + "engineering-mathematical-analysis-1-015:p5:q-engineering-mathematical-analysis-1-015-q19:c01", + "engineering-mathematical-analysis-1-016:p8:q-engineering-mathematical-analysis-1-016-q15:c01", + "engineering-mathematical-analysis-1-013:p5:q-engineering-mathematical-analysis-1-013-q20:c01", + "engineering-mathematical-analysis-1-017:p5:q-engineering-mathematical-analysis-1-017-q20:c01", + "engineering-mathematical-analysis-1-025:p5:q-engineering-mathematical-analysis-1-025-q20:c01", + "engineering-mathematical-analysis-1-008:p9:q-engineering-mathematical-analysis-1-008-q11:c01", + "engineering-mathematical-analysis-1-006:p5:q-engineering-mathematical-analysis-1-006-q21:c01", + "engineering-mathematical-analysis-1-012:p5:q-engineering-mathematical-analysis-1-012-q15:c01", + "engineering-mathematical-analysis-1-009:p9:q-engineering-mathematical-analysis-1-009-q6:c01", + "engineering-mathematical-analysis-1-007:p5:q-engineering-mathematical-analysis-1-007-q19:c01", + "engineering-mathematical-analysis-1-022:p6:q-engineering-mathematical-analysis-1-022-q6:c01", + "engineering-mathematical-analysis-1-021:p6:q-engineering-mathematical-analysis-1-021-q16:c01", + "engineering-mathematical-analysis-1-003:s33:c01", + "engineering-mathematical-analysis-1-014:p7:q-engineering-mathematical-analysis-1-014-q20:c01", + "engineering-mathematical-analysis-1-021:p5:q-engineering-mathematical-analysis-1-021-q14:c01" + ] + }, + { + "case_id": "analysis1-lipschitz-2", + "topic_id": "analysis1-lipschitz", + "course_id": "engineering_math_analysis_1", + "scenario": "proof", + "split": "dev", + "difficulty": "hard", + "query": "证明里直接取δ=ε/L有什么隐含前提?L=0时如何补全论证,为什么结论仍成立?", + "top_chunk_ids": [ + "engineering-mathematical-analysis-1-020:p7:q-engineering-mathematical-analysis-1-020-q9:c01", + "engineering-mathematical-analysis-1-020:p4:q-engineering-mathematical-analysis-1-020-q7:c01", + "engineering-mathematical-analysis-1-011:p7:q-engineering-mathematical-analysis-1-011-q18:c01", + "engineering-mathematical-analysis-1-020:p7:q-engineering-mathematical-analysis-1-020-q11:c01", + "engineering-mathematical-analysis-1-010:p7:q-engineering-mathematical-analysis-1-010-q14:c01", + "engineering-mathematical-analysis-1-015:p5:q-engineering-mathematical-analysis-1-015-q18:c01", + "engineering-mathematical-analysis-1-022:p7:q-engineering-mathematical-analysis-1-022-q6:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q10:c01", + "engineering-mathematical-analysis-1-008:p9:q-engineering-mathematical-analysis-1-008-q11:c01", + "engineering-mathematical-analysis-1-006:p1:q-engineering-mathematical-analysis-1-006-q1:c01", + "engineering-mathematical-analysis-1-007:p1:q-engineering-mathematical-analysis-1-007-q1:c01", + "engineering-mathematical-analysis-1-010:p3:q-engineering-mathematical-analysis-1-010-q1:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q2:c01", + "engineering-mathematical-analysis-1-012:p1:q-engineering-mathematical-analysis-1-012-q1:c01", + "engineering-mathematical-analysis-1-013:p1:q-engineering-mathematical-analysis-1-013-q2:c01", + "engineering-mathematical-analysis-1-014:p3:q-engineering-mathematical-analysis-1-014-q1:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q1:c01", + "engineering-mathematical-analysis-1-016:p3:q-engineering-mathematical-analysis-1-016-q1:c01", + "engineering-mathematical-analysis-1-017:p1:q-engineering-mathematical-analysis-1-017-q1:c01", + "engineering-mathematical-analysis-1-025:p1:q-engineering-mathematical-analysis-1-025-q1:c01" + ], + "duration_ms": 61.71, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "engineering-mathematical-analysis-1-020:p7:q-engineering-mathematical-analysis-1-020-q9:c01", + "engineering-mathematical-analysis-1-020:p4:q-engineering-mathematical-analysis-1-020-q7:c01", + "engineering-mathematical-analysis-1-020:p7:q-engineering-mathematical-analysis-1-020-q11:c01", + "engineering-mathematical-analysis-1-010:p7:q-engineering-mathematical-analysis-1-010-q14:c01", + "engineering-mathematical-analysis-1-015:p5:q-engineering-mathematical-analysis-1-015-q18:c01", + "engineering-mathematical-analysis-1-022:p7:q-engineering-mathematical-analysis-1-022-q6:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q10:c01", + "engineering-mathematical-analysis-1-008:p9:q-engineering-mathematical-analysis-1-008-q11:c01", + "engineering-mathematical-analysis-1-006:p1:q-engineering-mathematical-analysis-1-006-q1:c01", + "engineering-mathematical-analysis-1-007:p1:q-engineering-mathematical-analysis-1-007-q1:c01", + "engineering-mathematical-analysis-1-010:p3:q-engineering-mathematical-analysis-1-010-q1:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q2:c01", + "engineering-mathematical-analysis-1-012:p1:q-engineering-mathematical-analysis-1-012-q1:c01", + "engineering-mathematical-analysis-1-013:p1:q-engineering-mathematical-analysis-1-013-q2:c01", + "engineering-mathematical-analysis-1-014:p3:q-engineering-mathematical-analysis-1-014-q1:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q1:c01", + "engineering-mathematical-analysis-1-016:p3:q-engineering-mathematical-analysis-1-016-q1:c01", + "engineering-mathematical-analysis-1-017:p1:q-engineering-mathematical-analysis-1-017-q1:c01", + "engineering-mathematical-analysis-1-025:p1:q-engineering-mathematical-analysis-1-025-q1:c01" + ] + }, + { + "case_id": "analysis2-ellipsoid-1", + "topic_id": "analysis2-ellipsoid", + "course_id": "engineering_math_analysis_2", + "scenario": "optimization", + "split": "dev", + "difficulty": "medium", + "query": "第一卦限椭球x²/a²+y²/b²+z²/c²=1的切平面围成四面体,怎样把体积最小化化为一个受约束的乘积问题?", + "top_chunk_ids": [ + "engineering-mathematical-analysis-2-037:p6:q-engineering-mathematical-analysis-2-037-q14:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q6:c01", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c04", + "engineering-mathematical-analysis-2-043:p5:q-engineering-mathematical-analysis-2-043-q8:c01", + "engineering-mathematical-analysis-2-020:h-2014级软件-工科数学分析下b:c02", + "engineering-mathematical-analysis-2-009:p18:c01", + "engineering-mathematical-analysis-2-023:p2:q-engineering-mathematical-analysis-2-023-q13:c01", + "engineering-mathematical-analysis-2-029:p2:q-engineering-mathematical-analysis-2-029-q13:c01", + "engineering-mathematical-analysis-2-023:p7:q-engineering-mathematical-analysis-2-023-q27:c01", + "engineering-mathematical-analysis-2-033:q-engineering-mathematical-analysis-2-033-q2:c02", + "engineering-mathematical-analysis-2-009:p17:c01", + "engineering-mathematical-analysis-2-038:p6:q-engineering-mathematical-analysis-2-038-q19:c01", + "engineering-mathematical-analysis-2-040:p8:q-engineering-mathematical-analysis-2-040-q25:c01", + "engineering-mathematical-analysis-2-011:p20:c01", + "engineering-mathematical-analysis-2-009:p2:c01", + "engineering-mathematical-analysis-2-009:p20:c01", + "engineering-mathematical-analysis-2-009:p15:c01", + "engineering-mathematical-analysis-2-023:p4:q-engineering-mathematical-analysis-2-023-q20:c01", + "engineering-mathematical-analysis-2-009:p21:c01", + "engineering-mathematical-analysis-2-013:q-engineering-mathematical-analysis-2-013-q2:c01" + ], + "duration_ms": 233.831, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "engineering-mathematical-analysis-2-037:p6:q-engineering-mathematical-analysis-2-037-q14:c01", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c04", + "engineering-mathematical-analysis-2-043:p5:q-engineering-mathematical-analysis-2-043-q8:c01", + "engineering-mathematical-analysis-2-020:h-2014级软件-工科数学分析下b:c02", + "engineering-mathematical-analysis-2-009:p18:c01", + "engineering-mathematical-analysis-2-023:p2:q-engineering-mathematical-analysis-2-023-q13:c01", + "engineering-mathematical-analysis-2-029:p2:q-engineering-mathematical-analysis-2-029-q13:c01", + "engineering-mathematical-analysis-2-023:p7:q-engineering-mathematical-analysis-2-023-q27:c01", + "engineering-mathematical-analysis-2-033:q-engineering-mathematical-analysis-2-033-q2:c02", + "engineering-mathematical-analysis-2-009:p17:c01", + "engineering-mathematical-analysis-2-038:p6:q-engineering-mathematical-analysis-2-038-q19:c01", + "engineering-mathematical-analysis-2-040:p8:q-engineering-mathematical-analysis-2-040-q25:c01", + "engineering-mathematical-analysis-2-011:p20:c01", + "engineering-mathematical-analysis-2-009:p2:c01", + "engineering-mathematical-analysis-2-009:p20:c01", + "engineering-mathematical-analysis-2-009:p15:c01", + "engineering-mathematical-analysis-2-023:p4:q-engineering-mathematical-analysis-2-023-q20:c01", + "engineering-mathematical-analysis-2-009:p21:c01", + "engineering-mathematical-analysis-2-013:q-engineering-mathematical-analysis-2-013-q2:c01" + ] + }, + { + "case_id": "analysis2-ellipsoid-2", + "topic_id": "analysis2-ellipsoid", + "course_id": "engineering_math_analysis_2", + "scenario": "optimization", + "split": "dev", + "difficulty": "hard", + "query": "求使该体积最小的切点,并给出最小体积。请说明为何是最大化xyz而非最小化xyz。", + "top_chunk_ids": [ + "engineering-mathematical-analysis-2-037:p6:q-engineering-mathematical-analysis-2-037-q14:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q6:c02", + "engineering-mathematical-analysis-2-033:q-engineering-mathematical-analysis-2-033-q2:c02", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c04", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q6:c01", + "engineering-mathematical-analysis-2-019:h-2014级软件-工科数学分析下a:c03", + "engineering-mathematical-analysis-2-010:p22:c01", + "engineering-mathematical-analysis-2-040:p8:q-engineering-mathematical-analysis-2-040-q25:c01", + "engineering-mathematical-analysis-2-011:p10:c01", + "engineering-mathematical-analysis-2-038:p6:q-engineering-mathematical-analysis-2-038-q19:c01", + "engineering-mathematical-analysis-2-011:p22:c01", + "engineering-mathematical-analysis-2-045:p3:q-engineering-mathematical-analysis-2-045-q11:c01", + "engineering-mathematical-analysis-2-014:q-engineering-mathematical-analysis-2-014-q2:c01", + "engineering-mathematical-analysis-2-011:p20:c01", + "engineering-mathematical-analysis-2-045:p4:q-engineering-mathematical-analysis-2-045-q14:c01", + "engineering-mathematical-analysis-2-012:q-engineering-mathematical-analysis-2-012-q7:c01", + "engineering-mathematical-analysis-2-010:p30:c01", + "engineering-mathematical-analysis-2-011:p8:c01", + "engineering-mathematical-analysis-2-029:p2:q-engineering-mathematical-analysis-2-029-q12:c01", + "engineering-mathematical-analysis-2-010:p29:c01" + ], + "duration_ms": 80.782, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.2, + "unjudged_chunk_ids": [ + "engineering-mathematical-analysis-2-037:p6:q-engineering-mathematical-analysis-2-037-q14:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q6:c02", + "engineering-mathematical-analysis-2-033:q-engineering-mathematical-analysis-2-033-q2:c02", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c04", + "engineering-mathematical-analysis-2-019:h-2014级软件-工科数学分析下a:c03", + "engineering-mathematical-analysis-2-010:p22:c01", + "engineering-mathematical-analysis-2-040:p8:q-engineering-mathematical-analysis-2-040-q25:c01", + "engineering-mathematical-analysis-2-011:p10:c01", + "engineering-mathematical-analysis-2-038:p6:q-engineering-mathematical-analysis-2-038-q19:c01", + "engineering-mathematical-analysis-2-011:p22:c01", + "engineering-mathematical-analysis-2-045:p3:q-engineering-mathematical-analysis-2-045-q11:c01", + "engineering-mathematical-analysis-2-014:q-engineering-mathematical-analysis-2-014-q2:c01", + "engineering-mathematical-analysis-2-011:p20:c01", + "engineering-mathematical-analysis-2-045:p4:q-engineering-mathematical-analysis-2-045-q14:c01", + "engineering-mathematical-analysis-2-012:q-engineering-mathematical-analysis-2-012-q7:c01", + "engineering-mathematical-analysis-2-010:p30:c01", + "engineering-mathematical-analysis-2-011:p8:c01", + "engineering-mathematical-analysis-2-029:p2:q-engineering-mathematical-analysis-2-029-q12:c01", + "engineering-mathematical-analysis-2-010:p29:c01" + ] + }, + { + "case_id": "english-summary-revision-1", + "topic_id": "english-summary-revision", + "course_id": "english", + "scenario": "writing_review", + "split": "dev", + "difficulty": "medium", + "query": "给定这篇体育教育摘要,怎样保留中心论点并删去没有被原文支持的夸张细节?", + "top_chunk_ids": [ + "english-005:p1:c01", + "english-006:h-英语summary:c02", + "english-007:h-英语作文竞赛:c04", + "english-007:h-英语作文竞赛:c01", + "english-007:h-英语作文竞赛:c03", + "english-006:h-英语summary:c01", + "english-007:h-英语作文竞赛:c02", + "english-004:h-2023级学术英语第一学期考试大纲:c01", + "english-008:h-英语复习:c01", + "english-008:h-英语复习:c02" + ], + "duration_ms": 11.456, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.16666666666666666, + "unjudged_chunk_ids": [ + "english-005:p1:c01", + "english-006:h-英语summary:c02", + "english-007:h-英语作文竞赛:c04", + "english-007:h-英语作文竞赛:c01", + "english-007:h-英语作文竞赛:c03", + "english-007:h-英语作文竞赛:c02", + "english-004:h-2023级学术英语第一学期考试大纲:c01", + "english-008:h-英语复习:c01", + "english-008:h-英语复习:c02" + ] + }, + { + "case_id": "english-summary-revision-2", + "topic_id": "english-summary-revision", + "course_id": "english", + "scenario": "writing_review", + "split": "dev", + "difficulty": "hard", + "query": "请把摘要改成三句英文:观点、两条支撑、结论。哪些原句需要用更谨慎的表达,不能把“作者认为”写成事实?", + "top_chunk_ids": [ + "english-005:p1:c01", + "english-006:h-英语summary:c02", + "english-007:h-英语作文竞赛:c01", + "english-006:h-英语summary:c01", + "english-007:h-英语作文竞赛:c03", + "english-007:h-英语作文竞赛:c04", + "english-008:h-英语复习:c01", + "english-007:h-英语作文竞赛:c02", + "english-008:h-英语复习:c02", + "english-004:h-2023级学术英语第一学期考试大纲:c01" + ], + "duration_ms": 9.061, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.25, + "unjudged_chunk_ids": [ + "english-005:p1:c01", + "english-006:h-英语summary:c02", + "english-007:h-英语作文竞赛:c01", + "english-007:h-英语作文竞赛:c03", + "english-007:h-英语作文竞赛:c04", + "english-008:h-英语复习:c01", + "english-007:h-英语作文竞赛:c02", + "english-008:h-英语复习:c02", + "english-004:h-2023级学术英语第一学期考试大纲:c01" + ] + }, + { + "case_id": "ideology-law-morality-1", + "topic_id": "ideology-law-morality", + "course_id": "ideology_morality_and_rule_of_law", + "scenario": "case_analysis", + "split": "validation", + "difficulty": "medium", + "query": "许霆ATM异常取款材料题要求从道德与法律的关系作答。回答时至少要分开哪些层次?", + "top_chunk_ids": [ + "ideology-morality-and-rule-of-law-002:h-思政题目2024级回忆:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q5:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q3:c01", + "ideology-morality-and-rule-of-law-001:h-思政2023级试卷赖怡芳老师:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q2:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q1:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q4:c01" + ], + "duration_ms": 11.917, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q5:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q3:c01", + "ideology-morality-and-rule-of-law-001:h-思政2023级试卷赖怡芳老师:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q2:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q1:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q4:c01" + ] + }, + { + "case_id": "ideology-law-morality-2", + "topic_id": "ideology-law-morality", + "course_id": "ideology_morality_and_rule_of_law", + "scenario": "case_analysis", + "split": "validation", + "difficulty": "hard", + "query": "若只写“违法所以不道德”,为什么不足以完成这道辨析题?请给出不替代具体法条结论的分析框架。", + "top_chunk_ids": [ + "ideology-morality-and-rule-of-law-002:h-思政题目2024级回忆:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q3:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q5:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q2:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q4:c01", + "ideology-morality-and-rule-of-law-001:h-思政2023级试卷赖怡芳老师:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q1:c01" + ], + "duration_ms": 8.21, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q3:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q5:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q2:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q4:c01", + "ideology-morality-and-rule-of-law-001:h-思政2023级试卷赖怡芳老师:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q1:c01" + ] + }, + { + "case_id": "security-publickey-tradeoff-1", + "topic_id": "security-publickey-tradeoff", + "course_id": "information_security_intro", + "scenario": "concept", + "split": "dev", + "difficulty": "medium", + "query": "公开密钥密码相较对称密码解决了什么问题,又付出哪些代价?", + "top_chunk_ids": [ + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c02", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c01", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c03", + "information-security-intro-002:p4:c01", + "information-security-intro-002:p3:c01", + "information-security-intro-002:p2:c01", + "information-security-intro-002:p1:c01", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c04" + ], + "duration_ms": 14.904, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c01", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c03", + "information-security-intro-002:p4:c01", + "information-security-intro-002:p3:c01", + "information-security-intro-002:p2:c01", + "information-security-intro-002:p1:c01", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c04" + ] + }, + { + "case_id": "security-publickey-tradeoff-2", + "topic_id": "security-publickey-tradeoff", + "course_id": "information_security_intro", + "scenario": "concept", + "split": "dev", + "difficulty": "hard", + "query": "“公钥公开,所以别人也能解密我的密文”错在哪里?请区分加密、私钥保密和数字签名验证。", + "top_chunk_ids": [ + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c02", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c03", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c01", + "information-security-intro-002:p4:c01", + "information-security-intro-002:p3:c01", + "information-security-intro-002:p1:c01", + "information-security-intro-002:p2:c01", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c04" + ], + "duration_ms": 10.102, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c03", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c01", + "information-security-intro-002:p4:c01", + "information-security-intro-002:p3:c01", + "information-security-intro-002:p1:c01", + "information-security-intro-002:p2:c01", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c04" + ] + }, + { + "case_id": "securitymath-euler-1764-1", + "topic_id": "securitymath-euler-1764", + "course_id": "information_security_mathematics", + "scenario": "calculation", + "split": "dev", + "difficulty": "medium", + "query": "计算φ(1764)。应先怎样分解1764,欧拉函数的乘法公式怎样用?", + "top_chunk_ids": [ + "information-security-mathematics-009:q-information-security-mathematics-009-q17:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q19:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q14:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q9:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q22:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q23:c01", + "information-security-mathematics-007:q-information-security-mathematics-007-q3:c01", + "information-security-mathematics-006:p2:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q16:c01", + "information-security-mathematics-006:p1:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q19:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q23:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q24:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q25:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q21:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q18:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q13:c01", + "information-security-mathematics-006:p4:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q12:c01", + "information-security-mathematics-006:p3:c01" + ], + "duration_ms": 29.12, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.14285714285714285, + "unjudged_chunk_ids": [ + "information-security-mathematics-009:q-information-security-mathematics-009-q17:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q19:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q14:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q9:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q22:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q23:c01", + "information-security-mathematics-006:p2:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q16:c01", + "information-security-mathematics-006:p1:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q19:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q23:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q24:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q25:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q21:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q18:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q13:c01", + "information-security-mathematics-006:p4:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q12:c01", + "information-security-mathematics-006:p3:c01" + ] + }, + { + "case_id": "securitymath-euler-1764-2", + "topic_id": "securitymath-euler-1764", + "course_id": "information_security_mathematics", + "scenario": "calculation", + "split": "dev", + "difficulty": "hard", + "query": "有人直接把φ(1764)写成1763,为什么不对?请给出完整分解和数值。", + "top_chunk_ids": [ + "information-security-mathematics-009:q-information-security-mathematics-009-q16:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q18:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q24:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q13:c01", + "information-security-mathematics-006:p1:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q19:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q25:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q21:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q12:c01", + "information-security-mathematics-007:q-information-security-mathematics-007-q3:c02", + "information-security-mathematics-009:q-information-security-mathematics-009-q8:c01", + "information-security-mathematics-007:h-信息安全数学基础期末试卷:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q16:c01", + "information-security-mathematics-007:q-information-security-mathematics-007-q3:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q1:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q6:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q5:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q23:c01", + "information-security-mathematics-006:p3:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q18:c01" + ], + "duration_ms": 16.495, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.07142857142857142, + "unjudged_chunk_ids": [ + "information-security-mathematics-009:q-information-security-mathematics-009-q16:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q18:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q24:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q13:c01", + "information-security-mathematics-006:p1:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q19:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q25:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q21:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q12:c01", + "information-security-mathematics-007:q-information-security-mathematics-007-q3:c02", + "information-security-mathematics-009:q-information-security-mathematics-009-q8:c01", + "information-security-mathematics-007:h-信息安全数学基础期末试卷:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q16:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q1:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q6:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q5:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q23:c01", + "information-security-mathematics-006:p3:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q18:c01" + ] + }, + { + "case_id": "intelligent-sa-localoptimum-1", + "topic_id": "intelligent-sa-localoptimum", + "course_id": "intelligent_algorithms", + "scenario": "algorithm_choice", + "split": "validation", + "difficulty": "medium", + "query": "为什么模拟退火适合存在多个局部最优的复杂解空间?它的主要调参风险是什么?", + "top_chunk_ids": [ + "intelligent-algorithms-025:h-sa算法适合应用场景~在解空间复杂-存在多个局部最优解的情况下表现出色~优点~全局搜索能力-能够跳出局部最优-具有较强的全局优化能力~参数选择敏感-算法的性能对参数-如初始温度-降温系数等-的选择较为敏感:c01", + "intelligent-algorithms-025:h-问题-初始参数的选择~3.-每个温度下的迭代次数-l:c01", + "intelligent-algorithms-025:h-问题-初始参数的选择~1.-初始温度-t0:c01", + "intelligent-algorithms-025:h-sa算法的基本理念:c01", + "intelligent-algorithms-006:p10:c01", + "intelligent-algorithms-006:p11:c01", + "intelligent-algorithms-006:p12:c01", + "intelligent-algorithms-006:p13:c01", + "intelligent-algorithms-006:p14:c01", + "intelligent-algorithms-006:p15:c01", + "intelligent-algorithms-006:p16:c01", + "intelligent-algorithms-006:p17:c01", + "intelligent-algorithms-006:p18:c01", + "intelligent-algorithms-006:p19:c01", + "intelligent-algorithms-006:p1:c01", + "intelligent-algorithms-006:p20:c01", + "intelligent-algorithms-006:p21:c01", + "intelligent-algorithms-006:p22:c01", + "intelligent-algorithms-006:p23:c01", + "intelligent-algorithms-006:p2:c01" + ], + "duration_ms": 124.285, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "intelligent-algorithms-025:h-问题-初始参数的选择~3.-每个温度下的迭代次数-l:c01", + "intelligent-algorithms-025:h-问题-初始参数的选择~1.-初始温度-t0:c01", + "intelligent-algorithms-025:h-sa算法的基本理念:c01", + "intelligent-algorithms-006:p10:c01", + "intelligent-algorithms-006:p11:c01", + "intelligent-algorithms-006:p12:c01", + "intelligent-algorithms-006:p13:c01", + "intelligent-algorithms-006:p14:c01", + "intelligent-algorithms-006:p15:c01", + "intelligent-algorithms-006:p16:c01", + "intelligent-algorithms-006:p17:c01", + "intelligent-algorithms-006:p18:c01", + "intelligent-algorithms-006:p19:c01", + "intelligent-algorithms-006:p1:c01", + "intelligent-algorithms-006:p20:c01", + "intelligent-algorithms-006:p21:c01", + "intelligent-algorithms-006:p22:c01", + "intelligent-algorithms-006:p23:c01", + "intelligent-algorithms-006:p2:c01" + ] + }, + { + "case_id": "intelligent-sa-localoptimum-2", + "topic_id": "intelligent-sa-localoptimum", + "course_id": "intelligent_algorithms", + "scenario": "algorithm_choice", + "split": "validation", + "difficulty": "hard", + "query": "将模拟退火用于0-1背包时,邻域解超容量该怎样处理?为什么“允许跳出局部最优”不等于允许保留不可行解?", + "top_chunk_ids": [ + "intelligent-algorithms-025:h-sa算法适合应用场景~在解空间复杂-存在多个局部最优解的情况下表现出色~优点~全局搜索能力-能够跳出局部最优-具有较强的全局优化能力~参数选择敏感-算法的性能对参数-如初始温度-降温系数等-的选择较为敏感:c01", + "intelligent-algorithms-025:h-问题-初始参数的选择~1.-初始温度-t0:c01", + "intelligent-algorithms-025:h-sa算法的基本理念:c01", + "intelligent-algorithms-006:p10:c01", + "intelligent-algorithms-006:p11:c01", + "intelligent-algorithms-006:p12:c01", + "intelligent-algorithms-006:p13:c01", + "intelligent-algorithms-006:p14:c01", + "intelligent-algorithms-006:p15:c01", + "intelligent-algorithms-006:p16:c01", + "intelligent-algorithms-006:p17:c01", + "intelligent-algorithms-006:p18:c01", + "intelligent-algorithms-006:p19:c01", + "intelligent-algorithms-006:p1:c01", + "intelligent-algorithms-006:p20:c01", + "intelligent-algorithms-006:p21:c01", + "intelligent-algorithms-006:p22:c01", + "intelligent-algorithms-006:p23:c01", + "intelligent-algorithms-006:p2:c01", + "intelligent-algorithms-006:p3:c01" + ], + "duration_ms": 61.791, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "intelligent-algorithms-025:h-问题-初始参数的选择~1.-初始温度-t0:c01", + "intelligent-algorithms-025:h-sa算法的基本理念:c01", + "intelligent-algorithms-006:p10:c01", + "intelligent-algorithms-006:p11:c01", + "intelligent-algorithms-006:p12:c01", + "intelligent-algorithms-006:p13:c01", + "intelligent-algorithms-006:p14:c01", + "intelligent-algorithms-006:p15:c01", + "intelligent-algorithms-006:p16:c01", + "intelligent-algorithms-006:p17:c01", + "intelligent-algorithms-006:p18:c01", + "intelligent-algorithms-006:p19:c01", + "intelligent-algorithms-006:p1:c01", + "intelligent-algorithms-006:p20:c01", + "intelligent-algorithms-006:p21:c01", + "intelligent-algorithms-006:p22:c01", + "intelligent-algorithms-006:p23:c01", + "intelligent-algorithms-006:p2:c01", + "intelligent-algorithms-006:p3:c01" + ] + }, + { + "case_id": "mao-selfrevolution-structure-1", + "topic_id": "mao-selfrevolution-structure", + "course_id": "mao_zedong_thought_overview", + "scenario": "argument_structure", + "split": "validation", + "difficulty": "medium", + "query": "以“党的自我革命”为主题做15分钟演讲,材料给出的时间分配与论证主线是什么?", + "top_chunk_ids": [ + "mao-zedong-thought-overview-002:h-演讲大纲:c01", + "mao-zedong-thought-overview-002:h-演讲大纲:c02", + "mao-zedong-thought-overview-001:s16:c01", + "mao-zedong-thought-overview-001:s2:c01", + "mao-zedong-thought-overview-001:s29:c01", + "mao-zedong-thought-overview-001:s41:c01", + "mao-zedong-thought-overview-001:s10:c01", + "mao-zedong-thought-overview-001:s43:c01", + "mao-zedong-thought-overview-001:s42:c01", + "mao-zedong-thought-overview-001:s1:c01", + "mao-zedong-thought-overview-001:s4:c01", + "mao-zedong-thought-overview-001:s35:c01", + "mao-zedong-thought-overview-001:s22:c01", + "mao-zedong-thought-overview-001:s3:c01", + "mao-zedong-thought-overview-001:s11:c01", + "mao-zedong-thought-overview-001:s30:c01", + "mao-zedong-thought-overview-001:s24:c01", + "mao-zedong-thought-overview-001:s23:c01", + "mao-zedong-thought-overview-001:s33:c01", + "mao-zedong-thought-overview-001:s9:c01" + ], + "duration_ms": 41.099, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "mao-zedong-thought-overview-002:h-演讲大纲:c02", + "mao-zedong-thought-overview-001:s16:c01", + "mao-zedong-thought-overview-001:s2:c01", + "mao-zedong-thought-overview-001:s29:c01", + "mao-zedong-thought-overview-001:s41:c01", + "mao-zedong-thought-overview-001:s10:c01", + "mao-zedong-thought-overview-001:s43:c01", + "mao-zedong-thought-overview-001:s42:c01", + "mao-zedong-thought-overview-001:s1:c01", + "mao-zedong-thought-overview-001:s4:c01", + "mao-zedong-thought-overview-001:s35:c01", + "mao-zedong-thought-overview-001:s22:c01", + "mao-zedong-thought-overview-001:s3:c01", + "mao-zedong-thought-overview-001:s11:c01", + "mao-zedong-thought-overview-001:s30:c01", + "mao-zedong-thought-overview-001:s24:c01", + "mao-zedong-thought-overview-001:s23:c01", + "mao-zedong-thought-overview-001:s33:c01", + "mao-zedong-thought-overview-001:s9:c01" + ] + }, + { + "case_id": "mao-selfrevolution-structure-2", + "topic_id": "mao-selfrevolution-structure", + "course_id": "mao_zedong_thought_overview", + "scenario": "argument_structure", + "split": "validation", + "difficulty": "hard", + "query": "如何把历史沿革、国情特点和当代价值连成论证,而不是逐段罗列口号?请给出可核验的三段式结构。", + "top_chunk_ids": [ + "mao-zedong-thought-overview-002:h-演讲大纲:c01", + "mao-zedong-thought-overview-001:s21:c01", + "mao-zedong-thought-overview-001:s7:c01", + "mao-zedong-thought-overview-001:s19:c01", + "mao-zedong-thought-overview-002:h-演讲大纲:c02", + "mao-zedong-thought-overview-001:s18:c01", + "mao-zedong-thought-overview-001:s11:c01", + "mao-zedong-thought-overview-001:s42:c01", + "mao-zedong-thought-overview-001:s3:c01", + "mao-zedong-thought-overview-001:s24:c01", + "mao-zedong-thought-overview-001:s41:c01", + "mao-zedong-thought-overview-001:s1:c01", + "mao-zedong-thought-overview-001:s43:c01", + "mao-zedong-thought-overview-001:s4:c01", + "mao-zedong-thought-overview-001:s35:c01", + "mao-zedong-thought-overview-001:s12:c01", + "mao-zedong-thought-overview-001:s2:c01", + "mao-zedong-thought-overview-001:s30:c01", + "mao-zedong-thought-overview-001:s33:c01", + "mao-zedong-thought-overview-001:s32:c01" + ], + "duration_ms": 15.239, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "mao-zedong-thought-overview-001:s21:c01", + "mao-zedong-thought-overview-001:s7:c01", + "mao-zedong-thought-overview-001:s19:c01", + "mao-zedong-thought-overview-002:h-演讲大纲:c02", + "mao-zedong-thought-overview-001:s18:c01", + "mao-zedong-thought-overview-001:s11:c01", + "mao-zedong-thought-overview-001:s42:c01", + "mao-zedong-thought-overview-001:s3:c01", + "mao-zedong-thought-overview-001:s24:c01", + "mao-zedong-thought-overview-001:s41:c01", + "mao-zedong-thought-overview-001:s1:c01", + "mao-zedong-thought-overview-001:s43:c01", + "mao-zedong-thought-overview-001:s4:c01", + "mao-zedong-thought-overview-001:s35:c01", + "mao-zedong-thought-overview-001:s12:c01", + "mao-zedong-thought-overview-001:s2:c01", + "mao-zedong-thought-overview-001:s30:c01", + "mao-zedong-thought-overview-001:s33:c01", + "mao-zedong-thought-overview-001:s32:c01" + ] + }, + { + "case_id": "marx-production-relations-1", + "topic_id": "marx-production-relations", + "course_id": "marxist_basic_principles", + "scenario": "applied_analysis", + "split": "dev", + "difficulty": "medium", + "query": "用生产力与生产关系的矛盾分析自动驾驶普及,材料列出的三个制度性问题是什么?", + "top_chunk_ids": [ + "marxist-basic-principles-002:s17:c01", + "marxist-basic-principles-002:s16:c01", + "marxist-basic-principles-001:h-演讲观点:c01", + "marxist-basic-principles-002:s15:c01", + "marxist-basic-principles-002:s13:c01", + "marxist-basic-principles-002:s2:c01", + "marxist-basic-principles-002:s14:c01", + "marxist-basic-principles-002:s21:c01", + "marxist-basic-principles-002:s12:c01", + "marxist-basic-principles-002:s11:c01", + "marxist-basic-principles-002:s19:c01", + "marxist-basic-principles-002:s5:c01", + "marxist-basic-principles-002:s7:c01", + "marxist-basic-principles-002:s20:c01", + "marxist-basic-principles-002:s6:c01", + "marxist-basic-principles-002:s1:c01", + "marxist-basic-principles-002:s18:c01", + "marxist-basic-principles-002:s22:c01", + "marxist-basic-principles-002:s3:c01", + "marxist-basic-principles-002:s9:c01" + ], + "duration_ms": 24.618, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "marxist-basic-principles-002:s16:c01", + "marxist-basic-principles-001:h-演讲观点:c01", + "marxist-basic-principles-002:s15:c01", + "marxist-basic-principles-002:s13:c01", + "marxist-basic-principles-002:s2:c01", + "marxist-basic-principles-002:s14:c01", + "marxist-basic-principles-002:s21:c01", + "marxist-basic-principles-002:s12:c01", + "marxist-basic-principles-002:s11:c01", + "marxist-basic-principles-002:s19:c01", + "marxist-basic-principles-002:s5:c01", + "marxist-basic-principles-002:s7:c01", + "marxist-basic-principles-002:s20:c01", + "marxist-basic-principles-002:s6:c01", + "marxist-basic-principles-002:s1:c01", + "marxist-basic-principles-002:s18:c01", + "marxist-basic-principles-002:s22:c01", + "marxist-basic-principles-002:s3:c01", + "marxist-basic-principles-002:s9:c01" + ] + }, + { + "case_id": "marx-production-relations-2", + "topic_id": "marx-production-relations", + "course_id": "marxist_basic_principles", + "scenario": "applied_analysis", + "split": "dev", + "difficulty": "hard", + "query": "为什么不能把“技术进步”直接等同于“社会问题自动解决”?请按材料把数据、就业和责任分别接入分析链。", + "top_chunk_ids": [ + "marxist-basic-principles-002:s12:c01", + "marxist-basic-principles-002:s17:c01", + "marxist-basic-principles-002:s15:c01", + "marxist-basic-principles-002:s5:c01", + "marxist-basic-principles-001:h-演讲观点:c01", + "marxist-basic-principles-002:s16:c01", + "marxist-basic-principles-002:s13:c01", + "marxist-basic-principles-002:s2:c01", + "marxist-basic-principles-002:s20:c01", + "marxist-basic-principles-002:s10:c01", + "marxist-basic-principles-002:s4:c01", + "marxist-basic-principles-002:s14:c01", + "marxist-basic-principles-002:s21:c01", + "marxist-basic-principles-002:s1:c01", + "marxist-basic-principles-002:s22:c01", + "marxist-basic-principles-002:s3:c01", + "marxist-basic-principles-002:s18:c01", + "marxist-basic-principles-002:s6:c01", + "marxist-basic-principles-002:s11:c01", + "marxist-basic-principles-002:s8:c01" + ], + "duration_ms": 11.17, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "marxist-basic-principles-002:s12:c01", + "marxist-basic-principles-002:s15:c01", + "marxist-basic-principles-002:s5:c01", + "marxist-basic-principles-001:h-演讲观点:c01", + "marxist-basic-principles-002:s16:c01", + "marxist-basic-principles-002:s13:c01", + "marxist-basic-principles-002:s2:c01", + "marxist-basic-principles-002:s20:c01", + "marxist-basic-principles-002:s10:c01", + "marxist-basic-principles-002:s4:c01", + "marxist-basic-principles-002:s14:c01", + "marxist-basic-principles-002:s21:c01", + "marxist-basic-principles-002:s1:c01", + "marxist-basic-principles-002:s22:c01", + "marxist-basic-principles-002:s3:c01", + "marxist-basic-principles-002:s18:c01", + "marxist-basic-principles-002:s6:c01", + "marxist-basic-principles-002:s11:c01", + "marxist-basic-principles-002:s8:c01" + ] + }, + { + "case_id": "modeling-project-crash-1", + "topic_id": "modeling-project-crash", + "course_id": "mathematical_modeling", + "scenario": "optimization", + "split": "dev", + "difficulty": "medium", + "query": "工期压缩模型中,为什么变量y(i,j)要有上下界,目标函数为什么是额外成本而不是任意缩短?", + "top_chunk_ids": [ + "mathematical-modeling-001:p105:c01", + "mathematical-modeling-029:p37:c01", + "mathematical-modeling-001:p532:c01", + "mathematical-modeling-020:p13:c01", + "mathematical-modeling-001:p34:c01", + "mathematical-modeling-024:p2:c01", + "mathematical-modeling-001:p148:c01", + "mathematical-modeling-030:p30:c01", + "mathematical-modeling-001:p21:c01", + "mathematical-modeling-013:p5:c01", + "mathematical-modeling-001:p106:c01", + "mathematical-modeling-029:p38:c01", + "mathematical-modeling-001:p534:c01", + "mathematical-modeling-020:p15:c01", + "mathematical-modeling-001:p442:c02", + "mathematical-modeling-017:p4:c02", + "mathematical-modeling-001:p10:c01", + "mathematical-modeling-002:p9:c01", + "mathematical-modeling-001:p524:c01", + "mathematical-modeling-020:p5:c01" + ], + "duration_ms": 1812.865, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.09090909090909091, + "unjudged_chunk_ids": [ + "mathematical-modeling-001:p105:c01", + "mathematical-modeling-029:p37:c01", + "mathematical-modeling-001:p532:c01", + "mathematical-modeling-020:p13:c01", + "mathematical-modeling-001:p34:c01", + "mathematical-modeling-024:p2:c01", + "mathematical-modeling-001:p148:c01", + "mathematical-modeling-030:p30:c01", + "mathematical-modeling-001:p21:c01", + "mathematical-modeling-013:p5:c01", + "mathematical-modeling-029:p38:c01", + "mathematical-modeling-001:p534:c01", + "mathematical-modeling-020:p15:c01", + "mathematical-modeling-001:p442:c02", + "mathematical-modeling-017:p4:c02", + "mathematical-modeling-001:p10:c01", + "mathematical-modeling-002:p9:c01", + "mathematical-modeling-001:p524:c01", + "mathematical-modeling-020:p5:c01" + ] + }, + { + "case_id": "modeling-project-crash-2", + "topic_id": "modeling-project-crash", + "course_id": "mathematical_modeling", + "scenario": "optimization", + "split": "dev", + "difficulty": "hard", + "query": "给定工期上限49天,怎样解释“压缩A和K各一天、多花1200元”这一解的可行性,还需要检查什么才能声称它最优?", + "top_chunk_ids": [ + "mathematical-modeling-001:p106:c01", + "mathematical-modeling-029:p38:c01", + "mathematical-modeling-001:p105:c01", + "mathematical-modeling-029:p37:c01", + "mathematical-modeling-001:p21:c02", + "mathematical-modeling-013:p5:c02", + "mathematical-modeling-001:p604:c01", + "mathematical-modeling-022:p18:c01", + "mathematical-modeling-001:p9:c01", + "mathematical-modeling-002:p8:c01", + "mathematical-modeling-001:p491:c01", + "mathematical-modeling-019:p4:c01", + "mathematical-modeling-001:p3:c01", + "mathematical-modeling-002:p2:c01", + "mathematical-modeling-001:p496:c01", + "mathematical-modeling-019:p9:c01", + "mathematical-modeling-001:p36:c02", + "mathematical-modeling-024:p4:c02", + "mathematical-modeling-026:p10:c01", + "mathematical-modeling-001:p36:c01" + ], + "duration_ms": 414.42, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "mathematical-modeling-029:p38:c01", + "mathematical-modeling-001:p105:c01", + "mathematical-modeling-029:p37:c01", + "mathematical-modeling-001:p21:c02", + "mathematical-modeling-013:p5:c02", + "mathematical-modeling-001:p604:c01", + "mathematical-modeling-022:p18:c01", + "mathematical-modeling-001:p9:c01", + "mathematical-modeling-002:p8:c01", + "mathematical-modeling-001:p491:c01", + "mathematical-modeling-019:p4:c01", + "mathematical-modeling-001:p3:c01", + "mathematical-modeling-002:p2:c01", + "mathematical-modeling-001:p496:c01", + "mathematical-modeling-019:p9:c01", + "mathematical-modeling-001:p36:c02", + "mathematical-modeling-024:p4:c02", + "mathematical-modeling-026:p10:c01", + "mathematical-modeling-001:p36:c01" + ] + }, + { + "case_id": "mobile-course-project-1", + "topic_id": "mobile-course-project", + "course_id": "mobile_application_development", + "scenario": "requirements_analysis", + "split": "dev", + "difficulty": "medium", + "query": "基于GeoQuiz做Android课程大作业,哪些是基础必做功能,哪些改造可能加分?", + "top_chunk_ids": [ + "mobile-application-development-002:p1:c01", + "mobile-application-development-002:p2:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c02", + "mobile-application-development-004:h-移动应用开发:c01", + "mobile-application-development-007:p5:c02", + "mobile-application-development-007:p1:c01", + "mobile-application-development-007:p2:c02", + "mobile-application-development-008:p3:c01", + "mobile-application-development-008:p1:c01", + "mobile-application-development-007:p4:c01", + "mobile-application-development-006:h-移动应用开发:c01", + "mobile-application-development-007:p5:c01", + "mobile-application-development-007:p2:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c03", + "mobile-application-development-007:p3:c01", + "mobile-application-development-007:p4:c02", + "mobile-application-development-007:p3:c02", + "mobile-application-development-008:p28:c01", + "mobile-application-development-005:p1:c01" + ], + "duration_ms": 25.017, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "mobile-application-development-002:p1:c01", + "mobile-application-development-002:p2:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c02", + "mobile-application-development-004:h-移动应用开发:c01", + "mobile-application-development-007:p5:c02", + "mobile-application-development-007:p1:c01", + "mobile-application-development-007:p2:c02", + "mobile-application-development-008:p3:c01", + "mobile-application-development-008:p1:c01", + "mobile-application-development-007:p4:c01", + "mobile-application-development-006:h-移动应用开发:c01", + "mobile-application-development-007:p5:c01", + "mobile-application-development-007:p2:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c03", + "mobile-application-development-007:p3:c01", + "mobile-application-development-007:p4:c02", + "mobile-application-development-007:p3:c02", + "mobile-application-development-008:p28:c01", + "mobile-application-development-005:p1:c01" + ] + }, + { + "case_id": "mobile-course-project-2", + "topic_id": "mobile-course-project", + "course_id": "mobile_application_development", + "scenario": "requirements_analysis", + "split": "dev", + "difficulty": "hard", + "query": "如果小组改做全新教师端App,为什么“能登录”还不够?请按前后端、数据和交付物列出最低可验收清单。", + "top_chunk_ids": [ + "mobile-application-development-002:p1:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c03", + "mobile-application-development-003:h-课程设计要求及报告模板:c02", + "mobile-application-development-004:h-移动应用开发:c01", + "mobile-application-development-005:p3:c01", + "mobile-application-development-005:p2:c01", + "mobile-application-development-006:h-移动应用开发:c01", + "mobile-application-development-008:p9:c01", + "mobile-application-development-002:p2:c01", + "mobile-application-development-008:p28:c01", + "mobile-application-development-008:p3:c01", + "mobile-application-development-008:p11:c01", + "mobile-application-development-008:p21:c01", + "mobile-application-development-008:p22:c01", + "mobile-application-development-008:p8:c01", + "mobile-application-development-008:p7:c01", + "mobile-application-development-007:p5:c02", + "mobile-application-development-005:p1:c01", + "mobile-application-development-008:p20:c01" + ], + "duration_ms": 12.791, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "mobile-application-development-002:p1:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c03", + "mobile-application-development-003:h-课程设计要求及报告模板:c02", + "mobile-application-development-004:h-移动应用开发:c01", + "mobile-application-development-005:p3:c01", + "mobile-application-development-005:p2:c01", + "mobile-application-development-006:h-移动应用开发:c01", + "mobile-application-development-008:p9:c01", + "mobile-application-development-002:p2:c01", + "mobile-application-development-008:p28:c01", + "mobile-application-development-008:p3:c01", + "mobile-application-development-008:p11:c01", + "mobile-application-development-008:p21:c01", + "mobile-application-development-008:p22:c01", + "mobile-application-development-008:p8:c01", + "mobile-application-development-008:p7:c01", + "mobile-application-development-007:p5:c02", + "mobile-application-development-005:p1:c01", + "mobile-application-development-008:p20:c01" + ] + }, + { + "case_id": "webapp-servlet-lifecycle-1", + "topic_id": "webapp-servlet-lifecycle", + "course_id": "network_application_architecture", + "scenario": "exam_review", + "split": "validation", + "difficulty": "medium", + "query": "网络应用开发复习中,Servlet相关内容应按哪些知识链条组织,而不是只背类名?", + "top_chunk_ids": [ + "network-application-architecture-001:p2:c01", + "network-application-architecture-001:p1:c01" + ], + "duration_ms": 11.536, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "network-application-architecture-001:p1:c01" + ] + }, + { + "case_id": "webapp-servlet-lifecycle-2", + "topic_id": "webapp-servlet-lifecycle", + "course_id": "network_application_architecture", + "scenario": "exam_review", + "split": "validation", + "difficulty": "hard", + "query": "把Servlet、Filter、Listener、JSP、JDBC和MVC都列进答案,仍可能答不好编程题。请按一次请求处理流程说明它们各自应关注什么。", + "top_chunk_ids": [ + "network-application-architecture-001:p2:c01", + "network-application-architecture-001:p1:c01" + ], + "duration_ms": 7.088, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "network-application-architecture-001:p1:c01" + ] + }, + { + "case_id": "netmgmt-snmp-bulk-1", + "topic_id": "netmgmt-snmp-bulk", + "course_id": "network_management", + "scenario": "protocol_analysis", + "split": "dev", + "difficulty": "medium", + "query": "MIB Browser以表格浏览ifTable时,为什么需要关注GetNext或GetBulk,而不是只读一个Get响应?", + "top_chunk_ids": [ + "network-management-005:h-实验大纲-2026:c02", + "network-management-005:h-实验大纲-2026:c03", + "network-management-005:h-实验大纲-2026:c01", + "network-management-005:h-实验大纲-2026:c04", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~综合题-5-8:c01", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~选择题-10-2:c01", + "network-management-001:h-网络管理考试~复习题涉及知识点:c01", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~简答题-4-10:c01", + "network-management-002:p1:c01", + "network-management-001:h-网络管理考试~题型:c01", + "network-management-003:h-1781600428002:c01", + "network-management-004:h-1781600842993:c01", + "network-management-005:h-实验大纲-2026:c05" + ], + "duration_ms": 233.086, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "network-management-005:h-实验大纲-2026:c02", + "network-management-005:h-实验大纲-2026:c01", + "network-management-005:h-实验大纲-2026:c04", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~综合题-5-8:c01", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~选择题-10-2:c01", + "network-management-001:h-网络管理考试~复习题涉及知识点:c01", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~简答题-4-10:c01", + "network-management-002:p1:c01", + "network-management-001:h-网络管理考试~题型:c01", + "network-management-003:h-1781600428002:c01", + "network-management-004:h-1781600842993:c01", + "network-management-005:h-实验大纲-2026:c05" + ] + }, + { + "case_id": "netmgmt-snmp-bulk-2", + "topic_id": "netmgmt-snmp-bulk", + "course_id": "network_management", + "scenario": "protocol_analysis", + "split": "dev", + "difficulty": "hard", + "query": "比较SNMPv2c的GetBulk与反复GetNext:答题时应区分哪些共同点和哪些仍需抓包核实的PDU字段?", + "top_chunk_ids": [ + "network-management-005:h-实验大纲-2026:c03", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~简答题-4-10:c01", + "network-management-005:h-实验大纲-2026:c02", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~选择题-10-2:c01", + "network-management-002:p1:c01", + "network-management-005:h-实验大纲-2026:c01", + "network-management-001:h-网络管理考试~题型:c01", + "network-management-001:h-网络管理考试~复习题涉及知识点:c01", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~综合题-5-8:c01", + "network-management-005:h-实验大纲-2026:c05", + "network-management-005:h-实验大纲-2026:c04", + "network-management-003:h-1781600428002:c01", + "network-management-004:h-1781600842993:c01" + ], + "duration_ms": 8.495, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "network-management-001:h-网络管理考试~考试题目-2026回忆版~简答题-4-10:c01", + "network-management-005:h-实验大纲-2026:c02", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~选择题-10-2:c01", + "network-management-002:p1:c01", + "network-management-005:h-实验大纲-2026:c01", + "network-management-001:h-网络管理考试~题型:c01", + "network-management-001:h-网络管理考试~复习题涉及知识点:c01", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~综合题-5-8:c01", + "network-management-005:h-实验大纲-2026:c05", + "network-management-005:h-实验大纲-2026:c04", + "network-management-003:h-1781600428002:c01", + "network-management-004:h-1781600842993:c01" + ] + }, + { + "case_id": "ngn-scenario-security-1", + "topic_id": "ngn-scenario-security", + "course_id": "next_generation_network_architecture", + "scenario": "synthesis", + "split": "dev", + "difficulty": "medium", + "query": "天地一体化网络的应用场景讨论与网络安全问题讨论,应如何分开回答?", + "top_chunk_ids": [ + "next-generation-network-architecture-001:s24:c01", + "next-generation-network-architecture-001:s16:c01", + "next-generation-network-architecture-001:s20:c01", + "next-generation-network-architecture-001:s17:c01", + "next-generation-network-architecture-001:s18:c01", + "next-generation-network-architecture-001:s2:c01", + "next-generation-network-architecture-001:s8:c01", + "next-generation-network-architecture-001:s32:c01", + "next-generation-network-architecture-001:s10:c01", + "next-generation-network-architecture-001:s27:c01", + "next-generation-network-architecture-001:s26:c01", + "next-generation-network-architecture-001:s31:c01", + "next-generation-network-architecture-001:s14:c01", + "next-generation-network-architecture-001:s7:c01", + "next-generation-network-architecture-001:s21:c01", + "next-generation-network-architecture-001:s9:c01", + "next-generation-network-architecture-001:s28:c01", + "next-generation-network-architecture-001:s25:c01", + "next-generation-network-architecture-001:s15:c01", + "next-generation-network-architecture-001:s3:c01" + ], + "duration_ms": 21.241, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "next-generation-network-architecture-001:s16:c01", + "next-generation-network-architecture-001:s20:c01", + "next-generation-network-architecture-001:s17:c01", + "next-generation-network-architecture-001:s2:c01", + "next-generation-network-architecture-001:s8:c01", + "next-generation-network-architecture-001:s32:c01", + "next-generation-network-architecture-001:s10:c01", + "next-generation-network-architecture-001:s27:c01", + "next-generation-network-architecture-001:s26:c01", + "next-generation-network-architecture-001:s31:c01", + "next-generation-network-architecture-001:s14:c01", + "next-generation-network-architecture-001:s7:c01", + "next-generation-network-architecture-001:s21:c01", + "next-generation-network-architecture-001:s9:c01", + "next-generation-network-architecture-001:s28:c01", + "next-generation-network-architecture-001:s25:c01", + "next-generation-network-architecture-001:s15:c01", + "next-generation-network-architecture-001:s3:c01" + ] + }, + { + "case_id": "ngn-scenario-security-2", + "topic_id": "ngn-scenario-security", + "course_id": "next_generation_network_architecture", + "scenario": "synthesis", + "split": "dev", + "difficulty": "hard", + "query": "若题目要求从应用需求推导安全要求,怎样避免把“有卫星/地面协同”直接当成“已经安全”?请给出论证步骤。", + "top_chunk_ids": [ + "next-generation-network-architecture-001:s3:c01", + "next-generation-network-architecture-001:s20:c01", + "next-generation-network-architecture-001:s16:c01", + "next-generation-network-architecture-001:s18:c01", + "next-generation-network-architecture-001:s15:c01", + "next-generation-network-architecture-001:s8:c01", + "next-generation-network-architecture-001:s17:c01", + "next-generation-network-architecture-001:s6:c01", + "next-generation-network-architecture-001:s9:c01", + "next-generation-network-architecture-001:s24:c01", + "next-generation-network-architecture-001:s32:c01", + "next-generation-network-architecture-001:s10:c01", + "next-generation-network-architecture-001:s5:c01", + "next-generation-network-architecture-001:s13:c01", + "next-generation-network-architecture-001:s27:c01", + "next-generation-network-architecture-001:s4:c01", + "next-generation-network-architecture-001:s22:c01", + "next-generation-network-architecture-001:s28:c01", + "next-generation-network-architecture-001:s30:c01", + "next-generation-network-architecture-001:s31:c01" + ], + "duration_ms": 10.853, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.25, + "unjudged_chunk_ids": [ + "next-generation-network-architecture-001:s3:c01", + "next-generation-network-architecture-001:s20:c01", + "next-generation-network-architecture-001:s16:c01", + "next-generation-network-architecture-001:s15:c01", + "next-generation-network-architecture-001:s8:c01", + "next-generation-network-architecture-001:s17:c01", + "next-generation-network-architecture-001:s6:c01", + "next-generation-network-architecture-001:s9:c01", + "next-generation-network-architecture-001:s32:c01", + "next-generation-network-architecture-001:s10:c01", + "next-generation-network-architecture-001:s5:c01", + "next-generation-network-architecture-001:s13:c01", + "next-generation-network-architecture-001:s27:c01", + "next-generation-network-architecture-001:s4:c01", + "next-generation-network-architecture-001:s22:c01", + "next-generation-network-architecture-001:s28:c01", + "next-generation-network-architecture-001:s30:c01", + "next-generation-network-architecture-001:s31:c01" + ] + }, + { + "case_id": "signals-dft-cosine-1", + "topic_id": "signals-dft-cosine", + "course_id": "signals_and_communication", + "scenario": "derivation", + "split": "dev", + "difficulty": "medium", + "query": "x(n)=cos(nπ/6)、N=12时,为什么它恰好落在12点DFT的频点上?", + "top_chunk_ids": [ + "signals-and-communication-014:s62:c01", + "signals-and-communication-014:s59:c01", + "signals-and-communication-014:s54:c01", + "signals-and-communication-014:s61:c01", + "signals-and-communication-014:s45:c01", + "signals-and-communication-014:s28:c01", + "signals-and-communication-014:s46:c01", + "signals-and-communication-014:s56:c01", + "signals-and-communication-014:s36:c01", + "signals-and-communication-014:s47:c01", + "signals-and-communication-014:s53:c01", + "signals-and-communication-014:s25:c01", + "signals-and-communication-014:s52:c01", + "signals-and-communication-014:s58:c01", + "signals-and-communication-014:s42:c01", + "signals-and-communication-014:s30:c01", + "signals-and-communication-014:s33:c01", + "signals-and-communication-014:s31:c01", + "signals-and-communication-014:s57:c01", + "signals-and-communication-014:s29:c01" + ], + "duration_ms": 335.752, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.07142857142857142, + "unjudged_chunk_ids": [ + "signals-and-communication-014:s62:c01", + "signals-and-communication-014:s59:c01", + "signals-and-communication-014:s54:c01", + "signals-and-communication-014:s61:c01", + "signals-and-communication-014:s45:c01", + "signals-and-communication-014:s28:c01", + "signals-and-communication-014:s46:c01", + "signals-and-communication-014:s56:c01", + "signals-and-communication-014:s36:c01", + "signals-and-communication-014:s47:c01", + "signals-and-communication-014:s53:c01", + "signals-and-communication-014:s25:c01", + "signals-and-communication-014:s52:c01", + "signals-and-communication-014:s42:c01", + "signals-and-communication-014:s30:c01", + "signals-and-communication-014:s33:c01", + "signals-and-communication-014:s31:c01", + "signals-and-communication-014:s57:c01", + "signals-and-communication-014:s29:c01" + ] + }, + { + "case_id": "signals-dft-cosine-2", + "topic_id": "signals-dft-cosine", + "course_id": "signals_and_communication", + "scenario": "derivation", + "split": "dev", + "difficulty": "hard", + "query": "不用逐项硬算,推导该12点DFT的非零频率索引和幅度;怎样处理cos的正负频率两项?", + "top_chunk_ids": [ + "signals-and-communication-014:s54:c01", + "signals-and-communication-014:s31:c01", + "signals-and-communication-014:s56:c01", + "signals-and-communication-014:s42:c01", + "signals-and-communication-014:s48:c01", + "signals-and-communication-014:s41:c01", + "signals-and-communication-014:s50:c01", + "signals-and-communication-014:s45:c01", + "signals-and-communication-014:s35:c01", + "signals-and-communication-014:s62:c01", + "signals-and-communication-014:s28:c01", + "signals-and-communication-014:s46:c01", + "signals-and-communication-014:s33:c01", + "signals-and-communication-014:s47:c01", + "signals-and-communication-014:s30:c01", + "signals-and-communication-014:s27:c01", + "signals-and-communication-014:s58:c01", + "signals-and-communication-014:s57:c01", + "signals-and-communication-014:s49:c01", + "signals-and-communication-014:s36:c01" + ], + "duration_ms": 107.137, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.058823529411764705, + "unjudged_chunk_ids": [ + "signals-and-communication-014:s54:c01", + "signals-and-communication-014:s31:c01", + "signals-and-communication-014:s56:c01", + "signals-and-communication-014:s42:c01", + "signals-and-communication-014:s48:c01", + "signals-and-communication-014:s41:c01", + "signals-and-communication-014:s50:c01", + "signals-and-communication-014:s45:c01", + "signals-and-communication-014:s35:c01", + "signals-and-communication-014:s62:c01", + "signals-and-communication-014:s28:c01", + "signals-and-communication-014:s46:c01", + "signals-and-communication-014:s33:c01", + "signals-and-communication-014:s47:c01", + "signals-and-communication-014:s30:c01", + "signals-and-communication-014:s27:c01", + "signals-and-communication-014:s57:c01", + "signals-and-communication-014:s49:c01", + "signals-and-communication-014:s36:c01" + ] + }, + { + "case_id": "softwareeng-fanout-coupling-1", + "topic_id": "softwareeng-fanout-coupling", + "course_id": "software_engineering", + "scenario": "mistake_review", + "split": "dev", + "difficulty": "medium", + "query": "样例说推荐扇出为3或4;它与耦合分别衡量什么,为什么不能混用?", + "top_chunk_ids": [ + "software-engineering-027:s16:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c12", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c09", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c07", + "software-engineering-017:s39:c01", + "software-engineering-017:s4:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c08", + "software-engineering-011:s3:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c21", + "software-engineering-002:p51:c01", + "software-engineering-025:s103:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c04", + "software-engineering-007:s106:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c11", + "software-engineering-025:s104:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c20", + "software-engineering-014:s5:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c26", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第三组-系统设计与面向对象-solid:c01" + ], + "duration_ms": 780.103, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "software-engineering-027:s16:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c09", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c07", + "software-engineering-017:s39:c01", + "software-engineering-017:s4:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c08", + "software-engineering-011:s3:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c21", + "software-engineering-002:p51:c01", + "software-engineering-025:s103:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c04", + "software-engineering-007:s106:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c11", + "software-engineering-025:s104:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c20", + "software-engineering-014:s5:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c26", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第三组-系统设计与面向对象-solid:c01" + ] + }, + { + "case_id": "softwareeng-fanout-coupling-2", + "topic_id": "softwareeng-fanout-coupling", + "course_id": "software_engineering", + "scenario": "mistake_review", + "split": "dev", + "difficulty": "hard", + "query": "“一个模块调用很多模块,所以它内部元素结合不紧密”这句话混淆了哪两个度量?请给出改正后的评审意见。", + "top_chunk_ids": [ + "software-engineering-025:s114:c01", + "software-engineering-030:s113:c01", + "software-engineering-038:q-software-engineering-038-q8:c01", + "software-engineering-030:s120:c01", + "software-engineering-003:p8:c02", + "software-engineering-025:s116:c01", + "software-engineering-010:s33:c01", + "software-engineering-030:s115:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~一-判断题-50道~第三组-系统设计与原则-u5-l8:c01", + "software-engineering-034:s46:c01", + "software-engineering-015:s49:c01", + "software-engineering-025:s122:c01", + "software-engineering-024:s53:c01", + "software-engineering-029:s32:c01", + "software-engineering-024:s148:c01", + "software-engineering-024:s150:c01", + "software-engineering-030:s20:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c20", + "software-engineering-038:q-software-engineering-038-q22:c01", + "software-engineering-030:s111:c01" + ], + "duration_ms": 250.928, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "software-engineering-025:s114:c01", + "software-engineering-030:s113:c01", + "software-engineering-038:q-software-engineering-038-q8:c01", + "software-engineering-030:s120:c01", + "software-engineering-003:p8:c02", + "software-engineering-025:s116:c01", + "software-engineering-010:s33:c01", + "software-engineering-030:s115:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~一-判断题-50道~第三组-系统设计与原则-u5-l8:c01", + "software-engineering-034:s46:c01", + "software-engineering-015:s49:c01", + "software-engineering-025:s122:c01", + "software-engineering-024:s53:c01", + "software-engineering-029:s32:c01", + "software-engineering-024:s148:c01", + "software-engineering-024:s150:c01", + "software-engineering-030:s20:c01", + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c20", + "software-engineering-038:q-software-engineering-038-q22:c01", + "software-engineering-030:s111:c01" + ] + }, + { + "case_id": "swarm-reward-diagnosis-1", + "topic_id": "swarm-reward-diagnosis", + "course_id": "swarm_intelligence", + "scenario": "experiment_analysis", + "split": "validation", + "difficulty": "medium", + "query": "强化学习训练奖励在前期波动、后期趋于平缓时,能说明什么,不能说明什么?", + "top_chunk_ids": [ + "swarm-intelligence-008:p45:c01", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c02", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c13", + "swarm-intelligence-008:p47:c01", + "swarm-intelligence-008:p103:c01", + "swarm-intelligence-004:h-群体智能实验报告~算法复述~分析与见解:c01", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c01", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c04", + "swarm-intelligence-008:p48:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c06", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c10", + "swarm-intelligence-008:p51:c01", + "swarm-intelligence-008:p46:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c15", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c03", + "swarm-intelligence-008:p41:c01", + "swarm-intelligence-008:p58:c01", + "swarm-intelligence-008:p42:c01", + "swarm-intelligence-008:p100:c01", + "swarm-intelligence-008:p101:c01" + ], + "duration_ms": 555.675, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "swarm-intelligence-008:p45:c01", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c02", + "swarm-intelligence-008:p47:c01", + "swarm-intelligence-008:p103:c01", + "swarm-intelligence-004:h-群体智能实验报告~算法复述~分析与见解:c01", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c01", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c04", + "swarm-intelligence-008:p48:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c06", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c10", + "swarm-intelligence-008:p51:c01", + "swarm-intelligence-008:p46:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c15", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c03", + "swarm-intelligence-008:p41:c01", + "swarm-intelligence-008:p58:c01", + "swarm-intelligence-008:p42:c01", + "swarm-intelligence-008:p100:c01", + "swarm-intelligence-008:p101:c01" + ] + }, + { + "case_id": "swarm-reward-diagnosis-2", + "topic_id": "swarm-reward-diagnosis", + "course_id": "swarm_intelligence", + "scenario": "experiment_analysis", + "split": "validation", + "difficulty": "hard", + "query": "怎样区分“接近局部稳定”“达到真实最大回报”和“记录/实现有误”?请给出至少三项需要补充的实验检查。", + "top_chunk_ids": [ + "swarm-intelligence-004:h-群体智能实验报告~算法复述~实验分析:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c06", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c13", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c02", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c12", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c05", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c10", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c02", + "swarm-intelligence-008:p91:c01", + "swarm-intelligence-004:h-群体智能实验报告~算法复述~分析与见解:c01", + "swarm-intelligence-008:p103:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c09", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c07", + "swarm-intelligence-008:p35:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c04", + "swarm-intelligence-008:p93:c01", + "swarm-intelligence-007:p129:c01", + "swarm-intelligence-007:p130:c01", + "swarm-intelligence-007:p38:c01" + ], + "duration_ms": 77.069, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "swarm-intelligence-004:h-群体智能实验报告~算法复述~实验分析:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c06", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c02", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c12", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c05", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c10", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c02", + "swarm-intelligence-008:p91:c01", + "swarm-intelligence-004:h-群体智能实验报告~算法复述~分析与见解:c01", + "swarm-intelligence-008:p103:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c09", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c07", + "swarm-intelligence-008:p35:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c04", + "swarm-intelligence-008:p93:c01", + "swarm-intelligence-007:p129:c01", + "swarm-intelligence-007:p130:c01", + "swarm-intelligence-007:p38:c01" + ] + }, + { + "case_id": "physics31-grating-overlap-1", + "topic_id": "physics31-grating-overlap", + "course_id": "university_physics_3_1", + "scenario": "calculation", + "split": "dev", + "difficulty": "medium", + "query": "光栅方程d sinφ=kλ中,两条谱线重合时应满足什么等式?", + "top_chunk_ids": [ + "university-physics-3-1-006:q-university-physics-3-1-006-q8:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.3-光栅方程:c01", + "university-physics-3-1-011:p12:q-university-physics-3-1-011-q5:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.6-谱线重叠:c01", + "university-physics-3-1-011:p14:q-university-physics-3-1-011-q5:c01", + "university-physics-3-1-008:q-university-physics-3-1-008-q7:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.5-缺级:c01", + "university-physics-3-1-002:h-13.-四类计算题固定模板~13.3-光栅题:c01", + "university-physics-3-1-002:h-0.-期末复习总览:c01", + "university-physics-3-1-005:q-university-physics-3-1-005-q32:c01", + "university-physics-3-1-013:q-university-physics-3-1-013-q5:c01", + "university-physics-3-1-004:q-university-physics-3-1-004-q6:c01", + "university-physics-3-1-002:h-7.-光的干涉~7.2-杨氏双缝干涉:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q33:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q36:c01", + "university-physics-3-1-002:h-13.-四类计算题固定模板~13.4-热力学题:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.2-光栅常数:c01", + "university-physics-3-1-011:p34:q-university-physics-3-1-011-q8:c01", + "university-physics-3-1-002:h-4.-刚体力学~4.2-力矩:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.1-单缝夫琅禾费衍射:c01" + ], + "duration_ms": 94.661, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "university-physics-3-1-002:h-8.-光的衍射~8.3-光栅方程:c01", + "university-physics-3-1-011:p12:q-university-physics-3-1-011-q5:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.6-谱线重叠:c01", + "university-physics-3-1-011:p14:q-university-physics-3-1-011-q5:c01", + "university-physics-3-1-008:q-university-physics-3-1-008-q7:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.5-缺级:c01", + "university-physics-3-1-002:h-13.-四类计算题固定模板~13.3-光栅题:c01", + "university-physics-3-1-002:h-0.-期末复习总览:c01", + "university-physics-3-1-005:q-university-physics-3-1-005-q32:c01", + "university-physics-3-1-013:q-university-physics-3-1-013-q5:c01", + "university-physics-3-1-004:q-university-physics-3-1-004-q6:c01", + "university-physics-3-1-002:h-7.-光的干涉~7.2-杨氏双缝干涉:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q33:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q36:c01", + "university-physics-3-1-002:h-13.-四类计算题固定模板~13.4-热力学题:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.2-光栅常数:c01", + "university-physics-3-1-011:p34:q-university-physics-3-1-011-q8:c01", + "university-physics-3-1-002:h-4.-刚体力学~4.2-力矩:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.1-单缝夫琅禾费衍射:c01" + ] + }, + { + "case_id": "physics31-grating-overlap-2", + "topic_id": "physics31-grating-overlap", + "course_id": "university_physics_3_1", + "scenario": "calculation", + "split": "dev", + "difficulty": "hard", + "query": "440nm与660nm两条线在同一角度重合,级次k1、k2的最简整数比是什么?", + "top_chunk_ids": [ + "university-physics-3-1-002:h-8.-光的衍射~8.6-谱线重叠:c01", + "university-physics-3-1-002:h-13.-四类计算题固定模板~13.4-热力学题:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.4-最大级次:c01", + "university-physics-3-1-005:q-university-physics-3-1-005-q32:c01", + "university-physics-3-1-002:h-3.-冲量-动量与能量~3.5-势能与机械能:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q33:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q36:c01", + "university-physics-3-1-005:q-university-physics-3-1-005-q23:c01", + "university-physics-3-1-011:p12:q-university-physics-3-1-011-q5:c01", + "university-physics-3-1-003:q-university-physics-3-1-003-q34:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q35:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q38:c01", + "university-physics-3-1-003:q-university-physics-3-1-003-q23:c01", + "university-physics-3-1-002:h-7.-光的干涉~7.5-劈尖干涉:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.5-缺级:c01", + "university-physics-3-1-006:q-university-physics-3-1-006-q8:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.1-单缝夫琅禾费衍射:c01", + "university-physics-3-1-011:p14:q-university-physics-3-1-011-q5:c01", + "university-physics-3-1-002:h-13.-四类计算题固定模板~13.3-光栅题:c01", + "university-physics-3-1-003:q-university-physics-3-1-003-q26:c01" + ], + "duration_ms": 35.594, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.0625, + "unjudged_chunk_ids": [ + "university-physics-3-1-002:h-8.-光的衍射~8.6-谱线重叠:c01", + "university-physics-3-1-002:h-13.-四类计算题固定模板~13.4-热力学题:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.4-最大级次:c01", + "university-physics-3-1-005:q-university-physics-3-1-005-q32:c01", + "university-physics-3-1-002:h-3.-冲量-动量与能量~3.5-势能与机械能:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q33:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q36:c01", + "university-physics-3-1-005:q-university-physics-3-1-005-q23:c01", + "university-physics-3-1-011:p12:q-university-physics-3-1-011-q5:c01", + "university-physics-3-1-003:q-university-physics-3-1-003-q34:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q35:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q38:c01", + "university-physics-3-1-003:q-university-physics-3-1-003-q23:c01", + "university-physics-3-1-002:h-7.-光的干涉~7.5-劈尖干涉:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.5-缺级:c01", + "university-physics-3-1-002:h-8.-光的衍射~8.1-单缝夫琅禾费衍射:c01", + "university-physics-3-1-011:p14:q-university-physics-3-1-011-q5:c01", + "university-physics-3-1-002:h-13.-四类计算题固定模板~13.3-光栅题:c01", + "university-physics-3-1-003:q-university-physics-3-1-003-q26:c01" + ] + }, + { + "case_id": "physics32-cavity-potential-1", + "topic_id": "physics32-cavity-potential", + "course_id": "university_physics_3_2", + "scenario": "concept", + "split": "validation", + "difficulty": "medium", + "query": "带电球层的空腔内E=0,能直接推出空腔内电势也为0吗?", + "top_chunk_ids": [ + "university-physics-3-2-020:p1:q-university-physics-3-2-020-q3:c01", + "university-physics-3-2-007:q-university-physics-3-2-007-q3:c01", + "university-physics-3-2-006:q-university-physics-3-2-006-q24:c01", + "university-physics-3-2-019:p3:q-university-physics-3-2-019-q31:c01", + "university-physics-3-2-010:p1:q-university-physics-3-2-010-q2:c01", + "university-physics-3-2-013:p3:q-university-physics-3-2-013-q18:c01", + "university-physics-3-2-017:p4:q-university-physics-3-2-017-q27:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q13:c01", + "university-physics-3-2-011:p4:c01", + "university-physics-3-2-002:q-university-physics-3-2-002-q2:c01", + "university-physics-3-2-008:p20:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-002:q-university-physics-3-2-002-q3:c01", + "university-physics-3-2-008:p18:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-013:p1:q-university-physics-3-2-013-q6:c01", + "university-physics-3-2-017:p1:q-university-physics-3-2-017-q7:c01", + "university-physics-3-2-008:p12:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-010:p1:q-university-physics-3-2-010-q3:c01", + "university-physics-3-2-006:q-university-physics-3-2-006-q13:c01", + "university-physics-3-2-008:p16:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-008:p17:q-university-physics-3-2-008-q4:c01" + ], + "duration_ms": 135.379, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "university-physics-3-2-020:p1:q-university-physics-3-2-020-q3:c01", + "university-physics-3-2-006:q-university-physics-3-2-006-q24:c01", + "university-physics-3-2-019:p3:q-university-physics-3-2-019-q31:c01", + "university-physics-3-2-010:p1:q-university-physics-3-2-010-q2:c01", + "university-physics-3-2-013:p3:q-university-physics-3-2-013-q18:c01", + "university-physics-3-2-017:p4:q-university-physics-3-2-017-q27:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q13:c01", + "university-physics-3-2-011:p4:c01", + "university-physics-3-2-002:q-university-physics-3-2-002-q2:c01", + "university-physics-3-2-008:p20:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-002:q-university-physics-3-2-002-q3:c01", + "university-physics-3-2-008:p18:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-013:p1:q-university-physics-3-2-013-q6:c01", + "university-physics-3-2-017:p1:q-university-physics-3-2-017-q7:c01", + "university-physics-3-2-008:p12:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-010:p1:q-university-physics-3-2-010-q3:c01", + "university-physics-3-2-006:q-university-physics-3-2-006-q13:c01", + "university-physics-3-2-008:p16:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-008:p17:q-university-physics-3-2-008-q4:c01" + ] + }, + { + "case_id": "physics32-cavity-potential-2", + "topic_id": "physics32-cavity-potential", + "course_id": "university_physics_3_2", + "scenario": "concept", + "split": "validation", + "difficulty": "hard", + "query": "为什么“电场为零”只说明空腔是等势区,而不能单独确定电势数值?材料中的积分在计算什么。", + "top_chunk_ids": [ + "university-physics-3-2-020:p1:q-university-physics-3-2-020-q3:c01", + "university-physics-3-2-008:p22:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-007:q-university-physics-3-2-007-q3:c01", + "university-physics-3-2-008:p20:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-019:p1:q-university-physics-3-2-019-q5:c01", + "university-physics-3-2-010:p2:q-university-physics-3-2-010-q7:c01", + "university-physics-3-2-008:p17:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-008:p16:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-013:p3:q-university-physics-3-2-013-q16:c01", + "university-physics-3-2-002:q-university-physics-3-2-002-q25:c01", + "university-physics-3-2-006:q-university-physics-3-2-006-q24:c01", + "university-physics-3-2-011:p4:c01", + "university-physics-3-2-019:p3:q-university-physics-3-2-019-q31:c01", + "university-physics-3-2-019:p3:q-university-physics-3-2-019-q23:c01", + "university-physics-3-2-016:p3:q-university-physics-3-2-016-q17:c01", + "university-physics-3-2-004:q-university-physics-3-2-004-q13:c01", + "university-physics-3-2-010:p3:q-university-physics-3-2-010-q11:c01", + "university-physics-3-2-002:q-university-physics-3-2-002-q14:c01", + "university-physics-3-2-017:p2:q-university-physics-3-2-017-q12:c01", + "university-physics-3-2-004:q-university-physics-3-2-004-q11:c01" + ], + "duration_ms": 52.468, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "university-physics-3-2-020:p1:q-university-physics-3-2-020-q3:c01", + "university-physics-3-2-008:p22:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-008:p20:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-019:p1:q-university-physics-3-2-019-q5:c01", + "university-physics-3-2-010:p2:q-university-physics-3-2-010-q7:c01", + "university-physics-3-2-008:p17:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-008:p16:q-university-physics-3-2-008-q4:c01", + "university-physics-3-2-013:p3:q-university-physics-3-2-013-q16:c01", + "university-physics-3-2-002:q-university-physics-3-2-002-q25:c01", + "university-physics-3-2-006:q-university-physics-3-2-006-q24:c01", + "university-physics-3-2-011:p4:c01", + "university-physics-3-2-019:p3:q-university-physics-3-2-019-q31:c01", + "university-physics-3-2-019:p3:q-university-physics-3-2-019-q23:c01", + "university-physics-3-2-016:p3:q-university-physics-3-2-016-q17:c01", + "university-physics-3-2-004:q-university-physics-3-2-004-q13:c01", + "university-physics-3-2-010:p3:q-university-physics-3-2-010-q11:c01", + "university-physics-3-2-002:q-university-physics-3-2-002-q14:c01", + "university-physics-3-2-017:p2:q-university-physics-3-2-017-q12:c01", + "university-physics-3-2-004:q-university-physics-3-2-004-q11:c01" + ] + }, + { + "case_id": "physlab1-oscilloscope-trigger-1", + "topic_id": "physlab1-oscilloscope-trigger", + "course_id": "university_physics_lab_1", + "scenario": "lab_reasoning", + "split": "dev", + "difficulty": "medium", + "query": "数字示波器上TIME/DIV、VOLTS/DIV和LEVEL分别影响什么?为什么只调TIME/DIV不能让波形稳定?", + "top_chunk_ids": [ + "university-physics-lab-1-001:h-人体脉搏波测量:c04", + "university-physics-lab-1-001:h-人体脉搏波测量:c05", + "university-physics-lab-1-001:h-人体脉搏波测量:c03", + "university-physics-lab-1-001:h-人体脉搏波测量:c01", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c07", + "university-physics-lab-1-001:h-人体脉搏波测量:c02", + "university-physics-lab-1-003:h-分光计的调整与使用:c03", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c01", + "university-physics-lab-1-003:h-分光计的调整与使用:c04", + "university-physics-lab-1-004:h-奥式黏度计测定液体动力黏度:c01", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c05", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c02", + "university-physics-lab-1-001:h-人体脉搏波测量:c06", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c01", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c06", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c03", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c03", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c02", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c02", + "university-physics-lab-1-003:h-分光计的调整与使用:c02" + ], + "duration_ms": 44.818, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "university-physics-lab-1-001:h-人体脉搏波测量:c05", + "university-physics-lab-1-001:h-人体脉搏波测量:c03", + "university-physics-lab-1-001:h-人体脉搏波测量:c01", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c07", + "university-physics-lab-1-001:h-人体脉搏波测量:c02", + "university-physics-lab-1-003:h-分光计的调整与使用:c03", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c01", + "university-physics-lab-1-003:h-分光计的调整与使用:c04", + "university-physics-lab-1-004:h-奥式黏度计测定液体动力黏度:c01", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c05", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c02", + "university-physics-lab-1-001:h-人体脉搏波测量:c06", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c01", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c06", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c03", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c03", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c02", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c02", + "university-physics-lab-1-003:h-分光计的调整与使用:c02" + ] + }, + { + "case_id": "physlab1-oscilloscope-trigger-2", + "topic_id": "physlab1-oscilloscope-trigger", + "course_id": "university_physics_lab_1", + "scenario": "lab_reasoning", + "split": "dev", + "difficulty": "hard", + "query": "同一脉搏波信号在屏幕上左右漂移,如何按资料的触发概念排查,而不是先改采样率?", + "top_chunk_ids": [ + "university-physics-lab-1-001:h-人体脉搏波测量:c03", + "university-physics-lab-1-001:h-人体脉搏波测量:c04", + "university-physics-lab-1-001:h-人体脉搏波测量:c01", + "university-physics-lab-1-001:h-人体脉搏波测量:c02", + "university-physics-lab-1-001:h-人体脉搏波测量:c06", + "university-physics-lab-1-001:h-人体脉搏波测量:c05", + "university-physics-lab-1-001:h-人体脉搏波测量:c07", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c02", + "university-physics-lab-1-002:h-光的等厚干涉测量:c01", + "university-physics-lab-1-003:h-分光计的调整与使用:c02", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c07", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c01", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c02", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c02", + "university-physics-lab-1-002:h-光的等厚干涉测量:c02", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c03", + "university-physics-lab-1-003:h-分光计的调整与使用:c03", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c06", + "university-physics-lab-1-002:h-光的等厚干涉测量:c03", + "university-physics-lab-1-005:h-实验报告模板-实验报告评分标准:c01" + ], + "duration_ms": 13.153, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "university-physics-lab-1-001:h-人体脉搏波测量:c03", + "university-physics-lab-1-001:h-人体脉搏波测量:c01", + "university-physics-lab-1-001:h-人体脉搏波测量:c02", + "university-physics-lab-1-001:h-人体脉搏波测量:c06", + "university-physics-lab-1-001:h-人体脉搏波测量:c05", + "university-physics-lab-1-001:h-人体脉搏波测量:c07", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c02", + "university-physics-lab-1-002:h-光的等厚干涉测量:c01", + "university-physics-lab-1-003:h-分光计的调整与使用:c02", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c07", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c01", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c02", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c02", + "university-physics-lab-1-002:h-光的等厚干涉测量:c02", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c03", + "university-physics-lab-1-003:h-分光计的调整与使用:c03", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c06", + "university-physics-lab-1-002:h-光的等厚干涉测量:c03", + "university-physics-lab-1-005:h-实验报告模板-实验报告评分标准:c01" + ] + }, + { + "case_id": "physlab2-acbridge-average-1", + "topic_id": "physlab2-acbridge-average", + "course_id": "university_physics_lab_2", + "scenario": "data_analysis", + "split": "dev", + "difficulty": "medium", + "query": "交流电桥三次测得Lx′为0.01298、0.01243、0.0132H,报告的0.01287H是怎样得到的?", + "top_chunk_ids": [ + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c03", + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c02", + "university-physics-lab-2-040:h-4交流电桥:c03", + "university-physics-lab-2-040:h-4交流电桥:c02", + "university-physics-lab-2-041:s4:c01", + "university-physics-lab-2-041:s6:c01", + "university-physics-lab-2-080:h-4.8-草:c01", + "university-physics-lab-2-040:h-4交流电桥:c01", + "university-physics-lab-2-041:s15:c01", + "university-physics-lab-2-041:s13:c01", + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c01", + "university-physics-lab-2-041:s2:c01", + "university-physics-lab-2-041:s5:c01", + "university-physics-lab-2-041:s3:c01", + "university-physics-lab-2-041:s9:c01", + "university-physics-lab-2-041:s7:c01", + "university-physics-lab-2-041:s14:c01", + "university-physics-lab-2-041:s8:c01", + "university-physics-lab-2-041:s10:c01", + "university-physics-lab-2-041:s11:c01" + ], + "duration_ms": 378.061, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c02", + "university-physics-lab-2-040:h-4交流电桥:c03", + "university-physics-lab-2-040:h-4交流电桥:c02", + "university-physics-lab-2-041:s4:c01", + "university-physics-lab-2-041:s6:c01", + "university-physics-lab-2-080:h-4.8-草:c01", + "university-physics-lab-2-040:h-4交流电桥:c01", + "university-physics-lab-2-041:s15:c01", + "university-physics-lab-2-041:s13:c01", + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c01", + "university-physics-lab-2-041:s2:c01", + "university-physics-lab-2-041:s5:c01", + "university-physics-lab-2-041:s3:c01", + "university-physics-lab-2-041:s9:c01", + "university-physics-lab-2-041:s7:c01", + "university-physics-lab-2-041:s14:c01", + "university-physics-lab-2-041:s8:c01", + "university-physics-lab-2-041:s10:c01", + "university-physics-lab-2-041:s11:c01" + ] + }, + { + "case_id": "physlab2-acbridge-average-2", + "topic_id": "physlab2-acbridge-average", + "course_id": "university_physics_lab_2", + "scenario": "data_analysis", + "split": "dev", + "difficulty": "hard", + "query": "三次Rx′为21.4、20.6、21.8Ω。只报告平均21.3Ω是否足以说明测量可靠?还应报告或检查什么。", + "top_chunk_ids": [ + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c03", + "university-physics-lab-2-026:h-液体动力粘度的测量-用拉脱法测定液体表面张力系数:c04", + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c02", + "university-physics-lab-2-033:h-超声波材料检测-弯曲法测杨氏模量实验报告:c03", + "university-physics-lab-2-023:h-双光栅测量微弱振动位移量实验报告:c07", + "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c16", + "university-physics-lab-2-007:h-4.13-物质旋光率的测量:c01", + "university-physics-lab-2-071:h-4.9铁磁物质磁化曲线和磁滞回线的测量-4.10超声波在介质中在传播速度的测量:c05", + "university-physics-lab-2-003:h-3.7-用惠斯登电桥测电阻:c04", + "university-physics-lab-2-031:h-莫尔效应及光栅传感实验:c05", + "university-physics-lab-2-011:h-4.21-巨磁阻效应及其应用:c03", + "university-physics-lab-2-028:h-磁谐振无线电能传输:c02", + "university-physics-lab-2-026:h-液体动力粘度的测量-用拉脱法测定液体表面张力系数:c03", + "university-physics-lab-2-003:h-3.7-用惠斯登电桥测电阻:c01", + "university-physics-lab-2-020:h-光盘轨距的测量及其容量估算:c03", + "university-physics-lab-2-040:h-4交流电桥:c03", + "university-physics-lab-2-031:h-莫尔效应及光栅传感实验:c04", + "university-physics-lab-2-033:h-超声波材料检测-弯曲法测杨氏模量实验报告:c01", + "university-physics-lab-2-014:h-4.6-固体导热系数测量:c03", + "university-physics-lab-2-084:h-4.21-定:c01" + ], + "duration_ms": 91.535, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "university-physics-lab-2-026:h-液体动力粘度的测量-用拉脱法测定液体表面张力系数:c04", + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c02", + "university-physics-lab-2-033:h-超声波材料检测-弯曲法测杨氏模量实验报告:c03", + "university-physics-lab-2-023:h-双光栅测量微弱振动位移量实验报告:c07", + "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c16", + "university-physics-lab-2-007:h-4.13-物质旋光率的测量:c01", + "university-physics-lab-2-071:h-4.9铁磁物质磁化曲线和磁滞回线的测量-4.10超声波在介质中在传播速度的测量:c05", + "university-physics-lab-2-003:h-3.7-用惠斯登电桥测电阻:c04", + "university-physics-lab-2-031:h-莫尔效应及光栅传感实验:c05", + "university-physics-lab-2-011:h-4.21-巨磁阻效应及其应用:c03", + "university-physics-lab-2-028:h-磁谐振无线电能传输:c02", + "university-physics-lab-2-026:h-液体动力粘度的测量-用拉脱法测定液体表面张力系数:c03", + "university-physics-lab-2-003:h-3.7-用惠斯登电桥测电阻:c01", + "university-physics-lab-2-020:h-光盘轨距的测量及其容量估算:c03", + "university-physics-lab-2-040:h-4交流电桥:c03", + "university-physics-lab-2-031:h-莫尔效应及光栅传感实验:c04", + "university-physics-lab-2-033:h-超声波材料检测-弯曲法测杨氏模量实验报告:c01", + "university-physics-lab-2-014:h-4.6-固体导热系数测量:c03", + "university-physics-lab-2-084:h-4.21-定:c01" + ] + }, + { + "case_id": "xi-talent-plan-source-limits-1", + "topic_id": "xi-talent-plan-source-limits", + "course_id": "xi_thought_overview", + "scenario": "source_critique", + "split": "dev", + "difficulty": "medium", + "query": "“千百十工程”材料将计划分为哪三个层次?回答时怎样区分材料的叙述与已外部核验的政策事实?", + "top_chunk_ids": [ + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c02", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c01", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c05", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c03", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c04" + ], + "duration_ms": 21.252, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c05", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c03", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c04" + ] + }, + { + "case_id": "xi-talent-plan-source-limits-2", + "topic_id": "xi-talent-plan-source-limits", + "course_id": "xi_thought_overview", + "scenario": "source_critique", + "split": "dev", + "difficulty": "hard", + "query": "材料同时出现2008启动和2009启动表述。面对这种时间冲突,怎样给出有用但不自相矛盾的回答?", + "top_chunk_ids": [ + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c01", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c04", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c02", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c05", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c03" + ], + "duration_ms": 11.966, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c04", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c05", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c03" + ] } ], "by_course_id": { "linear_algebra": { "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.35 + }, + "probability_theory": { + "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.25, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_5": 0.25, + "all_evidence_groups_at_20": 0.5, + "known_positive_mrr": 0.270833 + }, + "algorithm_design_and_analysis": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "data_structure": { + "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.625 + }, + "database": { + "queries": 6, + "scored_queries": 6, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.666667, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.666667, + "all_evidence_groups_at_20": 0.833333, + "known_positive_mrr": 0.431481 + }, + "operating_systems": { + "queries": 6, + "scored_queries": 6, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.166667, + "known_evidence_coverage_at_20": 0.666667, + "all_evidence_groups_at_5": 0.166667, + "all_evidence_groups_at_20": 0.666667, + "known_positive_mrr": 0.082257 + }, + "compiler_principles": { + "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.767857 + }, + "computer_networks": { + "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 0.75, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 0.75, + "known_positive_mrr": 0.625 + }, + "software_testing": { + "queries": 6, + "scored_queries": 6, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.666667, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.666667, + "all_evidence_groups_at_20": 0.833333, + "known_positive_mrr": 0.431818 + }, + "artificial_intelligence_intro": { + "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.647727 + }, + "computer_organization": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.5625 + }, + "web_frontend_fundamentals": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.75 + }, + "discrete_mathematics": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.666667 + }, + "electrical_engineering": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.75 + }, + "computer_graphics": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.416667 + }, + "computer_science_intro": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_5": 0.0, + "all_evidence_groups_at_20": 0.5, + "known_positive_mrr": 0.045455 + }, + "computing_methods": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "cpp": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 0.5, + "known_positive_mrr": 0.1 + }, + "digital_logic": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "digital_system_creative_design": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 0.5, + "known_positive_mrr": 0.166667 + }, + "embedded_systems": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "engineering_math_analysis_1": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.333333 + }, + "engineering_math_analysis_2": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.35 + }, + "english": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.208333 + }, + "ideology_morality_and_rule_of_law": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "information_security_intro": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, "known_evidence_coverage_at_5": 1.0, "known_evidence_coverage_at_20": 1.0, "all_evidence_groups_at_5": 1.0, "all_evidence_groups_at_20": 1.0, - "known_positive_mrr": 0.35 + "known_positive_mrr": 1.0 }, - "probability_theory": { - "queries": 4, - "known_evidence_coverage_at_5": 0.25, - "known_evidence_coverage_at_20": 0.5, - "all_evidence_groups_at_5": 0.25, - "all_evidence_groups_at_20": 0.5, - "known_positive_mrr": 0.270833 + "information_security_mathematics": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.107143 }, - "algorithm_design_and_analysis": { + "intelligent_algorithms": { "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, "known_evidence_coverage_at_5": 1.0, "known_evidence_coverage_at_20": 1.0, "all_evidence_groups_at_5": 1.0, "all_evidence_groups_at_20": 1.0, "known_positive_mrr": 1.0 }, - "data_structure": { - "queries": 4, - "known_evidence_coverage_at_5": 0.75, + "mao_zedong_thought_overview": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, "known_evidence_coverage_at_20": 1.0, - "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_5": 1.0, "all_evidence_groups_at_20": 1.0, - "known_positive_mrr": 0.625 + "known_positive_mrr": 1.0 }, - "database": { - "queries": 6, - "known_evidence_coverage_at_5": 0.666667, - "known_evidence_coverage_at_20": 0.833333, - "all_evidence_groups_at_5": 0.666667, - "all_evidence_groups_at_20": 0.833333, - "known_positive_mrr": 0.431481 + "marxist_basic_principles": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.75 }, - "operating_systems": { - "queries": 6, - "known_evidence_coverage_at_5": 0.166667, - "known_evidence_coverage_at_20": 0.666667, - "all_evidence_groups_at_5": 0.166667, - "all_evidence_groups_at_20": 0.666667, - "known_positive_mrr": 0.082257 + "mathematical_modeling": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.545455 }, - "compiler_principles": { - "queries": 4, - "known_evidence_coverage_at_5": 0.75, + "mobile_application_development": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, "known_evidence_coverage_at_20": 1.0, - "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_5": 1.0, "all_evidence_groups_at_20": 1.0, - "known_positive_mrr": 0.767857 + "known_positive_mrr": 0.416667 }, - "computer_networks": { - "queries": 4, - "known_evidence_coverage_at_5": 0.75, - "known_evidence_coverage_at_20": 0.75, - "all_evidence_groups_at_5": 0.75, - "all_evidence_groups_at_20": 0.75, + "network_application_architecture": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "network_management": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.75 + }, + "next_generation_network_architecture": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, "known_positive_mrr": 0.625 }, - "software_testing": { - "queries": 6, - "known_evidence_coverage_at_5": 0.666667, - "known_evidence_coverage_at_20": 0.833333, - "all_evidence_groups_at_5": 0.666667, - "all_evidence_groups_at_20": 0.833333, - "known_positive_mrr": 0.431818 + "signals_and_communication": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.065126 }, - "artificial_intelligence_intro": { - "queries": 4, - "known_evidence_coverage_at_5": 0.75, + "software_engineering": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 0.5, + "known_positive_mrr": 0.25 + }, + "swarm_intelligence": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, "known_evidence_coverage_at_20": 1.0, - "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_5": 1.0, "all_evidence_groups_at_20": 1.0, - "known_positive_mrr": 0.647727 + "known_positive_mrr": 0.333333 }, - "computer_organization": { + "university_physics_3_1": { "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, "known_evidence_coverage_at_5": 0.5, "known_evidence_coverage_at_20": 1.0, "all_evidence_groups_at_5": 0.5, "all_evidence_groups_at_20": 1.0, - "known_positive_mrr": 0.5625 + "known_positive_mrr": 0.53125 }, - "web_frontend_fundamentals": { + "university_physics_3_2": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.416667 + }, + "university_physics_lab_1": { "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, "known_evidence_coverage_at_5": 1.0, "known_evidence_coverage_at_20": 1.0, "all_evidence_groups_at_5": 1.0, "all_evidence_groups_at_20": 1.0, "known_positive_mrr": 0.75 }, - "discrete_mathematics": { + "university_physics_lab_2": { "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, "known_evidence_coverage_at_5": 1.0, "known_evidence_coverage_at_20": 1.0, "all_evidence_groups_at_5": 1.0, "all_evidence_groups_at_20": 1.0, - "known_positive_mrr": 0.666667 + "known_positive_mrr": 1.0 }, - "electrical_engineering": { + "xi_thought_overview": { "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, "known_evidence_coverage_at_5": 1.0, "known_evidence_coverage_at_20": 1.0, "all_evidence_groups_at_5": 1.0, "all_evidence_groups_at_20": 1.0, - "known_positive_mrr": 0.75 + "known_positive_mrr": 1.0 } }, "by_scenario": { "concept": { - "queries": 24, - "known_evidence_coverage_at_5": 0.625, + "queries": 30, + "scored_queries": 30, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.633333, "known_evidence_coverage_at_20": 0.833333, - "all_evidence_groups_at_5": 0.625, + "all_evidence_groups_at_5": 0.633333, "all_evidence_groups_at_20": 0.833333, - "known_positive_mrr": 0.440672 + "known_positive_mrr": 0.450012 }, "problem": { - "queries": 14, - "known_evidence_coverage_at_5": 0.642857, - "known_evidence_coverage_at_20": 0.785714, - "all_evidence_groups_at_5": 0.642857, - "all_evidence_groups_at_20": 0.785714, - "known_positive_mrr": 0.552721 + "queries": 16, + "scored_queries": 16, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.6875, + "known_evidence_coverage_at_20": 0.8125, + "all_evidence_groups_at_5": 0.6875, + "all_evidence_groups_at_20": 0.8125, + "known_positive_mrr": 0.608631 }, "mistake": { "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, "known_evidence_coverage_at_5": 0.5, "known_evidence_coverage_at_20": 1.0, "all_evidence_groups_at_5": 0.5, @@ -3015,6 +6565,8 @@ }, "review": { "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, "known_evidence_coverage_at_5": 1.0, "known_evidence_coverage_at_20": 1.0, "all_evidence_groups_at_5": 1.0, @@ -3023,6 +6575,8 @@ }, "evidence_bundle": { "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, "known_evidence_coverage_at_5": 1.0, "known_evidence_coverage_at_20": 1.0, "all_evidence_groups_at_5": 1.0, @@ -3031,29 +6585,267 @@ }, "source_correction": { "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, "known_evidence_coverage_at_5": 0.5, "known_evidence_coverage_at_20": 1.0, "all_evidence_groups_at_5": 0.5, "all_evidence_groups_at_20": 1.0, "known_positive_mrr": 0.583333 + }, + "code_reasoning": { + "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 0.75, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 0.75, + "known_positive_mrr": 0.291667 + }, + "derivation": { + "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.532563 + }, + "code_review": { + "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 0.75, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 0.75, + "known_positive_mrr": 0.55 + }, + "proof": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.333333 + }, + "optimization": { + "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.75, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.75, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.447727 + }, + "writing_review": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.208333 + }, + "case_analysis": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "calculation": { + "queries": 4, + "scored_queries": 4, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.25, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.25, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.319196 + }, + "algorithm_choice": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "argument_structure": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "applied_analysis": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.75 + }, + "requirements_analysis": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.416667 + }, + "exam_review": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "protocol_analysis": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.75 + }, + "synthesis": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.625 + }, + "mistake_review": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_5": 0.5, + "all_evidence_groups_at_20": 0.5, + "known_positive_mrr": 0.25 + }, + "experiment_analysis": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.333333 + }, + "lab_reasoning": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.75 + }, + "data_analysis": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "source_critique": { + "queries": 2, + "scored_queries": 2, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 } }, "by_split": { "validation": { - "queries": 24, - "known_evidence_coverage_at_5": 0.625, - "known_evidence_coverage_at_20": 0.916667, - "all_evidence_groups_at_5": 0.625, - "all_evidence_groups_at_20": 0.916667, - "known_positive_mrr": 0.490838 + "queries": 42, + "scored_queries": 42, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.738095, + "known_evidence_coverage_at_20": 0.928571, + "all_evidence_groups_at_5": 0.738095, + "all_evidence_groups_at_20": 0.928571, + "known_positive_mrr": 0.604072 }, "dev": { - "queries": 26, - "known_evidence_coverage_at_5": 0.692308, - "known_evidence_coverage_at_20": 0.807692, - "all_evidence_groups_at_5": 0.692308, - "all_evidence_groups_at_20": 0.807692, - "known_positive_mrr": 0.530662 + "queries": 66, + "scored_queries": 66, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.727273, + "known_evidence_coverage_at_20": 0.878788, + "all_evidence_groups_at_5": 0.727273, + "all_evidence_groups_at_20": 0.878788, + "known_positive_mrr": 0.523159 + } + }, + "by_difficulty": { + "medium": { + "queries": 69, + "scored_queries": 69, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.710145, + "known_evidence_coverage_at_20": 0.898551, + "all_evidence_groups_at_5": 0.710145, + "all_evidence_groups_at_20": 0.898551, + "known_positive_mrr": 0.569473 + }, + "hard": { + "queries": 30, + "scored_queries": 30, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.766667, + "known_evidence_coverage_at_20": 0.9, + "all_evidence_groups_at_5": 0.766667, + "all_evidence_groups_at_20": 0.9, + "known_positive_mrr": 0.5339 + }, + "easy": { + "queries": 9, + "scored_queries": 9, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.777778, + "known_evidence_coverage_at_20": 0.888889, + "all_evidence_groups_at_5": 0.777778, + "all_evidence_groups_at_20": 0.888889, + "known_positive_mrr": 0.509877 } } } diff --git a/apps/scut-senior/resources/evaluation/reviewed-v2/coverage-baseline-bm25f.json b/apps/scut-senior/resources/evaluation/reviewed-v2/coverage-baseline-bm25f.json new file mode 100644 index 00000000..f7da0000 --- /dev/null +++ b/apps/scut-senior/resources/evaluation/reviewed-v2/coverage-baseline-bm25f.json @@ -0,0 +1,7480 @@ +{ + "schema_version": "reviewed-retrieval-report-v2", + "corpus_version": "corpus-c1513a68ccd7-b0_2_0-m1200-wworkflow-contract-v1-ooutline-none-v1-ebge-small-zh-v1.5", + "suite_sha256": "3db57b24541918456fd7e64ecb58a80186b00aef1a9e27c3e2030670cc43cd80", + "mode": "bm25f", + "min_score": 1.0, + "split": "all", + "validation": { + "queries": 135, + "topics": 129, + "courses": 46, + "source_backed_courses": 43, + "evidence_chunks": 127, + "evidence_boundary_cases": 6 + }, + "summary": { + "queries": 135, + "scored_queries": 129, + "unscored_evidence_boundary_queries": 6, + "known_evidence_coverage_at_5": 0.577519, + "known_evidence_coverage_at_20": 0.829457, + "all_evidence_groups_at_5": 0.496124, + "all_evidence_groups_at_20": 0.751938, + "known_positive_mrr": 0.494529 + }, + "interpretation": "Known-positive lower bounds; unjudged candidates require review, never automatic negative labels. No generation or answer-quality score. Timing includes first-load overhead.", + "entries": [ + { + "case_id": "coverage-algorithm_design_and_analysis-anchor", + "topic_id": "coverage-algorithm_design_and_analysis-anchor", + "course_id": "algorithm_design_and_analysis", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《Algorthm 2023-2024 A》中“Algorthm 2023-2024 A”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "algorithm-design-and-analysis-028:p8:c01", + "algorithm-design-and-analysis-028:p5:c01", + "algorithm-design-and-analysis-028:p7:c01", + "algorithm-design-and-analysis-028:p1:c01", + "algorithm-design-and-analysis-028:p4:c01", + "algorithm-design-and-analysis-028:p3:c01", + "algorithm-design-and-analysis-028:p7:c02", + "algorithm-design-and-analysis-028:p2:c01", + "algorithm-design-and-analysis-028:p6:c01", + "algorithm-design-and-analysis-028:p6:c02", + "algorithm-design-and-analysis-028:p1:c02", + "algorithm-design-and-analysis-028:p2:c02", + "algorithm-design-and-analysis-017:p8:c01", + "algorithm-design-and-analysis-001:p1:c01", + "algorithm-design-and-analysis-001:p4:q-algorithm-design-and-analysis-001-q17:c01", + "algorithm-design-and-analysis-001:p1:q-algorithm-design-and-analysis-001-q1:c01", + "algorithm-design-and-analysis-001:p1:q-algorithm-design-and-analysis-001-q2:c01", + "algorithm-design-and-analysis-001:p1:q-algorithm-design-and-analysis-001-q3:c01", + "algorithm-design-and-analysis-001:p1:q-algorithm-design-and-analysis-001-q4:c01", + "algorithm-design-and-analysis-001:p1:q-algorithm-design-and-analysis-001-q5:c01" + ], + "duration_ms": 912.575, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.125, + "unjudged_chunk_ids": [ + "algorithm-design-and-analysis-028:p8:c01", + "algorithm-design-and-analysis-028:p5:c01", + "algorithm-design-and-analysis-028:p7:c01", + "algorithm-design-and-analysis-028:p1:c01", + "algorithm-design-and-analysis-028:p4:c01", + "algorithm-design-and-analysis-028:p3:c01", + "algorithm-design-and-analysis-028:p7:c02", + "algorithm-design-and-analysis-028:p6:c01", + "algorithm-design-and-analysis-028:p6:c02", + "algorithm-design-and-analysis-028:p1:c02", + "algorithm-design-and-analysis-028:p2:c02", + "algorithm-design-and-analysis-017:p8:c01", + "algorithm-design-and-analysis-001:p1:c01", + "algorithm-design-and-analysis-001:p4:q-algorithm-design-and-analysis-001-q17:c01", + "algorithm-design-and-analysis-001:p1:q-algorithm-design-and-analysis-001-q1:c01", + "algorithm-design-and-analysis-001:p1:q-algorithm-design-and-analysis-001-q2:c01", + "algorithm-design-and-analysis-001:p1:q-algorithm-design-and-analysis-001-q3:c01", + "algorithm-design-and-analysis-001:p1:q-algorithm-design-and-analysis-001-q4:c01", + "algorithm-design-and-analysis-001:p1:q-algorithm-design-and-analysis-001-q5:c01" + ] + }, + { + "case_id": "coverage-algorithm_design_and_analysis-condition", + "topic_id": "coverage-algorithm_design_and_analysis-condition", + "course_id": "algorithm_design_and_analysis", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“DAL-2020-Exam Paper A”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "algorithm-design-and-analysis-003:p1:c01", + "algorithm-design-and-analysis-003:p4:c02", + "algorithm-design-and-analysis-003:p17:c01", + "algorithm-design-and-analysis-003:p18:c01", + "algorithm-design-and-analysis-003:p2:c01", + "algorithm-design-and-analysis-003:p8:c01", + "algorithm-design-and-analysis-003:p4:c01", + "algorithm-design-and-analysis-003:p5:c01", + "algorithm-design-and-analysis-003:p9:c01", + "algorithm-design-and-analysis-003:p13:c01", + "algorithm-design-and-analysis-003:p12:c01", + "algorithm-design-and-analysis-003:p3:c01", + "algorithm-design-and-analysis-003:p11:c01", + "algorithm-design-and-analysis-003:p10:c01", + "algorithm-design-and-analysis-003:p16:c01", + "algorithm-design-and-analysis-003:p15:c01", + "algorithm-design-and-analysis-003:p6:c01", + "algorithm-design-and-analysis-003:p14:c01", + "algorithm-design-and-analysis-003:p7:c01", + "algorithm-design-and-analysis-001:p4:q-algorithm-design-and-analysis-001-q17:c01" + ], + "duration_ms": 41.784, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.14285714285714285, + "unjudged_chunk_ids": [ + "algorithm-design-and-analysis-003:p1:c01", + "algorithm-design-and-analysis-003:p4:c02", + "algorithm-design-and-analysis-003:p17:c01", + "algorithm-design-and-analysis-003:p18:c01", + "algorithm-design-and-analysis-003:p2:c01", + "algorithm-design-and-analysis-003:p8:c01", + "algorithm-design-and-analysis-003:p5:c01", + "algorithm-design-and-analysis-003:p9:c01", + "algorithm-design-and-analysis-003:p13:c01", + "algorithm-design-and-analysis-003:p12:c01", + "algorithm-design-and-analysis-003:p3:c01", + "algorithm-design-and-analysis-003:p11:c01", + "algorithm-design-and-analysis-003:p10:c01", + "algorithm-design-and-analysis-003:p16:c01", + "algorithm-design-and-analysis-003:p15:c01", + "algorithm-design-and-analysis-003:p6:c01", + "algorithm-design-and-analysis-003:p14:c01", + "algorithm-design-and-analysis-003:p7:c01", + "algorithm-design-and-analysis-001:p4:q-algorithm-design-and-analysis-001-q17:c01" + ] + }, + { + "case_id": "coverage-algorithm_design_and_analysis-synthesis", + "topic_id": "coverage-algorithm_design_and_analysis-synthesis", + "course_id": "algorithm_design_and_analysis", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《Algorthm 2023-2024 A》的“Algorthm 2023-2024 A”与《1-sort》的“1-sort”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "algorithm-design-and-analysis-028:p7:c02", + "algorithm-design-and-analysis-028:p3:c01", + "algorithm-design-and-analysis-028:p4:c01", + "algorithm-design-and-analysis-028:p5:c01", + "algorithm-design-and-analysis-028:p2:c02", + "algorithm-design-and-analysis-028:p6:c02", + "algorithm-design-and-analysis-028:p2:c01", + "algorithm-design-and-analysis-028:p7:c01", + "algorithm-design-and-analysis-028:p8:c01", + "algorithm-design-and-analysis-028:p6:c01", + "algorithm-design-and-analysis-028:p1:c01", + "algorithm-design-and-analysis-028:p1:c02", + "algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q13:c01", + "algorithm-design-and-analysis-001:p4:q-algorithm-design-and-analysis-001-q15:c01", + "algorithm-design-and-analysis-001:p4:q-algorithm-design-and-analysis-001-q16:c01", + "algorithm-design-and-analysis-012:p4:c01", + "algorithm-design-and-analysis-001:p1:c01", + "algorithm-design-and-analysis-001:p2:q-algorithm-design-and-analysis-001-q10:c01", + "algorithm-design-and-analysis-001:p1:q-algorithm-design-and-analysis-001-q5:c01", + "algorithm-design-and-analysis-023:p4:c01" + ], + "duration_ms": 46.141, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.14285714285714285, + "unjudged_chunk_ids": [ + "algorithm-design-and-analysis-028:p7:c02", + "algorithm-design-and-analysis-028:p3:c01", + "algorithm-design-and-analysis-028:p4:c01", + "algorithm-design-and-analysis-028:p5:c01", + "algorithm-design-and-analysis-028:p2:c02", + "algorithm-design-and-analysis-028:p6:c02", + "algorithm-design-and-analysis-028:p7:c01", + "algorithm-design-and-analysis-028:p8:c01", + "algorithm-design-and-analysis-028:p6:c01", + "algorithm-design-and-analysis-028:p1:c01", + "algorithm-design-and-analysis-028:p1:c02", + "algorithm-design-and-analysis-001:p3:q-algorithm-design-and-analysis-001-q13:c01", + "algorithm-design-and-analysis-001:p4:q-algorithm-design-and-analysis-001-q15:c01", + "algorithm-design-and-analysis-001:p4:q-algorithm-design-and-analysis-001-q16:c01", + "algorithm-design-and-analysis-012:p4:c01", + "algorithm-design-and-analysis-001:p1:c01", + "algorithm-design-and-analysis-001:p2:q-algorithm-design-and-analysis-001-q10:c01", + "algorithm-design-and-analysis-001:p1:q-algorithm-design-and-analysis-001-q5:c01", + "algorithm-design-and-analysis-023:p4:c01" + ] + }, + { + "case_id": "coverage-artificial_intelligence_intro-anchor", + "topic_id": "coverage-artificial_intelligence_intro-anchor", + "course_id": "artificial_intelligence_intro", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《人工智能复习题-2024》中“人工智能复习题-2024”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c08", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c05", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c07", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c03", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c06", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c04", + "artificial-intelligence-intro-046:h-人工智能复习题-2023:c08", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c02", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c01", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c09", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c10", + "artificial-intelligence-intro-048:h-人工智能复习题-批注:c08", + "artificial-intelligence-intro-046:h-人工智能复习题-2023:c06", + "artificial-intelligence-intro-048:h-人工智能复习题-批注:c07", + "artificial-intelligence-intro-046:h-人工智能复习题-2023:c05", + "artificial-intelligence-intro-048:h-人工智能复习题-批注:c05", + "artificial-intelligence-intro-048:h-人工智能复习题-批注:c03", + "artificial-intelligence-intro-046:h-人工智能复习题-2023:c03", + "artificial-intelligence-intro-048:h-人工智能复习题-批注:c06", + "artificial-intelligence-intro-048:h-人工智能复习题-批注:c04" + ], + "duration_ms": 767.478, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.16666666666666666, + "unjudged_chunk_ids": [ + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c08", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c05", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c07", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c03", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c06", + "artificial-intelligence-intro-046:h-人工智能复习题-2023:c08", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c02", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c01", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c09", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c10", + "artificial-intelligence-intro-048:h-人工智能复习题-批注:c08", + "artificial-intelligence-intro-046:h-人工智能复习题-2023:c06", + "artificial-intelligence-intro-048:h-人工智能复习题-批注:c07", + "artificial-intelligence-intro-046:h-人工智能复习题-2023:c05", + "artificial-intelligence-intro-048:h-人工智能复习题-批注:c05", + "artificial-intelligence-intro-048:h-人工智能复习题-批注:c03", + "artificial-intelligence-intro-046:h-人工智能复习题-2023:c03", + "artificial-intelligence-intro-048:h-人工智能复习题-批注:c06", + "artificial-intelligence-intro-048:h-人工智能复习题-批注:c04" + ] + }, + { + "case_id": "coverage-artificial_intelligence_intro-condition", + "topic_id": "coverage-artificial_intelligence_intro-condition", + "course_id": "artificial_intelligence_intro", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“一、选择题(每题 1 分,共 20 分)”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "artificial-intelligence-intro-041:h-人工智能导论-模拟卷二-强化提升卷~一-选择题-每题-1-分-共-20-分:c02", + "artificial-intelligence-intro-041:h-人工智能导论-模拟卷二-强化提升卷~一-选择题-每题-1-分-共-20-分:c01", + "artificial-intelligence-intro-039:h-人工智能导论-模拟卷一-基础巩固卷~一-选择题-每题-1-分-共-20-分:c01", + "artificial-intelligence-intro-039:h-人工智能导论-模拟卷一-基础巩固卷~一-选择题-每题-1-分-共-20-分:c02", + "artificial-intelligence-intro-040:h-人工智能导论-模拟卷三-全真冲刺卷~一-选择题-每题-1-分-共-20-分:c02", + "artificial-intelligence-intro-040:h-人工智能导论-模拟卷三-全真冲刺卷~一-选择题-每题-1-分-共-20-分:c01", + "artificial-intelligence-intro-003:h-选择题速记与易错点-20-分~一-往年卷选择题标准答案-2023-2024-通用-共-52-题库:c03", + "artificial-intelligence-intro-003:h-选择题速记与易错点-20-分~一-往年卷选择题标准答案-2023-2024-通用-共-52-题库:c02", + "artificial-intelligence-intro-003:h-选择题速记与易错点-20-分~一-往年卷选择题标准答案-2023-2024-通用-共-52-题库:c01", + "artificial-intelligence-intro-056:s34:c01", + "artificial-intelligence-intro-003:h-选择题速记与易错点-20-分~一-往年卷选择题标准答案-2023-2024-通用-共-52-题库:c04", + "artificial-intelligence-intro-043:h-ai导论~一-选择题答案:c01", + "artificial-intelligence-intro-018:s31:c01", + "artificial-intelligence-intro-041:h-人工智能导论-模拟卷二-强化提升卷~三-计算题-共-40-分:c03", + "artificial-intelligence-intro-041:h-人工智能导论-模拟卷二-强化提升卷~二-简答题-共-40-分:c01", + "artificial-intelligence-intro-052:s14:c01", + "artificial-intelligence-intro-039:h-人工智能导论-模拟卷一-基础巩固卷:c01", + "artificial-intelligence-intro-041:h-模拟卷二-参考答案~一-选择题:c01", + "artificial-intelligence-intro-039:h-模拟卷一-参考答案~一-选择题:c01", + "artificial-intelligence-intro-013:s14:c01" + ], + "duration_ms": 136.656, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "artificial-intelligence-intro-041:h-人工智能导论-模拟卷二-强化提升卷~一-选择题-每题-1-分-共-20-分:c02", + "artificial-intelligence-intro-041:h-人工智能导论-模拟卷二-强化提升卷~一-选择题-每题-1-分-共-20-分:c01", + "artificial-intelligence-intro-039:h-人工智能导论-模拟卷一-基础巩固卷~一-选择题-每题-1-分-共-20-分:c02", + "artificial-intelligence-intro-040:h-人工智能导论-模拟卷三-全真冲刺卷~一-选择题-每题-1-分-共-20-分:c02", + "artificial-intelligence-intro-040:h-人工智能导论-模拟卷三-全真冲刺卷~一-选择题-每题-1-分-共-20-分:c01", + "artificial-intelligence-intro-003:h-选择题速记与易错点-20-分~一-往年卷选择题标准答案-2023-2024-通用-共-52-题库:c03", + "artificial-intelligence-intro-003:h-选择题速记与易错点-20-分~一-往年卷选择题标准答案-2023-2024-通用-共-52-题库:c02", + "artificial-intelligence-intro-003:h-选择题速记与易错点-20-分~一-往年卷选择题标准答案-2023-2024-通用-共-52-题库:c01", + "artificial-intelligence-intro-056:s34:c01", + "artificial-intelligence-intro-003:h-选择题速记与易错点-20-分~一-往年卷选择题标准答案-2023-2024-通用-共-52-题库:c04", + "artificial-intelligence-intro-043:h-ai导论~一-选择题答案:c01", + "artificial-intelligence-intro-018:s31:c01", + "artificial-intelligence-intro-041:h-人工智能导论-模拟卷二-强化提升卷~三-计算题-共-40-分:c03", + "artificial-intelligence-intro-041:h-人工智能导论-模拟卷二-强化提升卷~二-简答题-共-40-分:c01", + "artificial-intelligence-intro-052:s14:c01", + "artificial-intelligence-intro-039:h-人工智能导论-模拟卷一-基础巩固卷:c01", + "artificial-intelligence-intro-041:h-模拟卷二-参考答案~一-选择题:c01", + "artificial-intelligence-intro-039:h-模拟卷一-参考答案~一-选择题:c01", + "artificial-intelligence-intro-013:s14:c01" + ] + }, + { + "case_id": "coverage-artificial_intelligence_intro-synthesis", + "topic_id": "coverage-artificial_intelligence_intro-synthesis", + "course_id": "artificial_intelligence_intro", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《人工智能复习题-2024》的“人工智能复习题-2024”与《模拟卷三》的“一、选择题(每题 1 分,共 20 分)”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "artificial-intelligence-intro-040:h-人工智能导论-模拟卷三-全真冲刺卷~一-选择题-每题-1-分-共-20-分:c01", + "artificial-intelligence-intro-040:h-人工智能导论-模拟卷三-全真冲刺卷~一-选择题-每题-1-分-共-20-分:c02", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c07", + "artificial-intelligence-intro-046:h-人工智能复习题-2023:c06", + "artificial-intelligence-intro-040:h-人工智能导论-模拟卷三-全真冲刺卷~二-简答题-共-40-分:c01", + "artificial-intelligence-intro-048:h-人工智能复习题-批注:c07", + "artificial-intelligence-intro-041:h-人工智能导论-模拟卷二-强化提升卷~一-选择题-每题-1-分-共-20-分:c01", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c05", + "artificial-intelligence-intro-040:h-模拟卷三-参考答案~一-选择题:c01", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c04", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c01", + "artificial-intelligence-intro-039:h-人工智能导论-模拟卷一-基础巩固卷:c01", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c10", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c06", + "artificial-intelligence-intro-040:h-人工智能导论-模拟卷三-全真冲刺卷:c01", + "artificial-intelligence-intro-041:h-人工智能导论-模拟卷二-强化提升卷~二-简答题-共-40-分:c01", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c03", + "artificial-intelligence-intro-039:h-人工智能导论-模拟卷一-基础巩固卷~一-选择题-每题-1-分-共-20-分:c01", + "artificial-intelligence-intro-039:h-人工智能导论-模拟卷一-基础巩固卷~一-选择题-每题-1-分-共-20-分:c02", + "artificial-intelligence-intro-041:h-人工智能导论-模拟卷二-强化提升卷~一-选择题-每题-1-分-共-20-分:c02" + ], + "duration_ms": 144.174, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.5, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "artificial-intelligence-intro-040:h-人工智能导论-模拟卷三-全真冲刺卷~一-选择题-每题-1-分-共-20-分:c02", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c07", + "artificial-intelligence-intro-046:h-人工智能复习题-2023:c06", + "artificial-intelligence-intro-040:h-人工智能导论-模拟卷三-全真冲刺卷~二-简答题-共-40-分:c01", + "artificial-intelligence-intro-048:h-人工智能复习题-批注:c07", + "artificial-intelligence-intro-041:h-人工智能导论-模拟卷二-强化提升卷~一-选择题-每题-1-分-共-20-分:c01", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c05", + "artificial-intelligence-intro-040:h-模拟卷三-参考答案~一-选择题:c01", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c01", + "artificial-intelligence-intro-039:h-人工智能导论-模拟卷一-基础巩固卷:c01", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c10", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c06", + "artificial-intelligence-intro-040:h-人工智能导论-模拟卷三-全真冲刺卷:c01", + "artificial-intelligence-intro-041:h-人工智能导论-模拟卷二-强化提升卷~二-简答题-共-40-分:c01", + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c03", + "artificial-intelligence-intro-039:h-人工智能导论-模拟卷一-基础巩固卷~一-选择题-每题-1-分-共-20-分:c01", + "artificial-intelligence-intro-039:h-人工智能导论-模拟卷一-基础巩固卷~一-选择题-每题-1-分-共-20-分:c02", + "artificial-intelligence-intro-041:h-人工智能导论-模拟卷二-强化提升卷~一-选择题-每题-1-分-共-20-分:c02" + ] + }, + { + "case_id": "coverage-circuit_and_electronics_lab-visual-availability", + "topic_id": "coverage-circuit_and_electronics_lab-visual-availability", + "course_id": "circuit_and_electronics_lab", + "scenario": "evidence_boundary", + "split": "coverage", + "difficulty": "medium", + "query": "请定位 circuit_and_electronics_lab 课程资料中与当前问题最相关的原始页面;如果只有图片或无法读出的公式,请明确说明文本证据不足,不要猜测内容。", + "top_chunk_ids": [], + "duration_ms": 4.579, + "scoring_status": "evidence_boundary_unscored", + "known_evidence_coverage_at_5": null, + "known_evidence_coverage_at_20": null, + "all_evidence_groups_at_5": null, + "all_evidence_groups_at_20": null, + "known_positive_mrr": null, + "unjudged_chunk_ids": [] + }, + { + "case_id": "coverage-circuit_and_electronics_lab-visual-no-fabrication", + "topic_id": "coverage-circuit_and_electronics_lab-visual-no-fabrication", + "course_id": "circuit_and_electronics_lab", + "scenario": "evidence_boundary", + "split": "coverage", + "difficulty": "hard", + "query": "仅根据 circuit_and_electronics_lab 当前可检索文本,判断能否可靠讲解一个具体题目。请区分“文件存在”“图片存在”和“题干/公式已被文本化”。", + "top_chunk_ids": [], + "duration_ms": 4.813, + "scoring_status": "evidence_boundary_unscored", + "known_evidence_coverage_at_5": null, + "known_evidence_coverage_at_20": null, + "all_evidence_groups_at_5": null, + "all_evidence_groups_at_20": null, + "known_positive_mrr": null, + "unjudged_chunk_ids": [] + }, + { + "case_id": "coverage-compiler_principles-anchor", + "topic_id": "coverage-compiler_principles-anchor", + "course_id": "compiler_principles", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《网站和笔记》中“网站和笔记”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "compiler-principles-046:h-网站和笔记:c01", + "compiler-principles-012:p3:q-compiler-principles-012-q25:c01", + "compiler-principles-019:p50:c01", + "compiler-principles-011:q-compiler-principles-011-q15:c01", + "compiler-principles-031:p2:c01", + "compiler-principles-003:h-编译复习提纲:c04", + "compiler-principles-019:p3:c01", + "compiler-principles-001:s94:c01", + "compiler-principles-001:s95:c01", + "compiler-principles-004:h-编译复习题:c01", + "compiler-principles-026:h-lr-1-新增内容:c01", + "compiler-principles-007:p4:q-compiler-principles-007-q17:c01", + "compiler-principles-019:p34:c01", + "compiler-principles-006:q-compiler-principles-006-q9:c02", + "compiler-principles-003:h-编译复习提纲:c01", + "compiler-principles-017:q-compiler-principles-017-q11:c01", + "compiler-principles-044:h-活前缀的定义:c01", + "compiler-principles-001:s46:c01", + "compiler-principles-001:s19:c01", + "compiler-principles-013:q-compiler-principles-013-q10:c01" + ], + "duration_ms": 154.424, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "compiler-principles-012:p3:q-compiler-principles-012-q25:c01", + "compiler-principles-019:p50:c01", + "compiler-principles-011:q-compiler-principles-011-q15:c01", + "compiler-principles-031:p2:c01", + "compiler-principles-003:h-编译复习提纲:c04", + "compiler-principles-019:p3:c01", + "compiler-principles-001:s94:c01", + "compiler-principles-001:s95:c01", + "compiler-principles-004:h-编译复习题:c01", + "compiler-principles-026:h-lr-1-新增内容:c01", + "compiler-principles-007:p4:q-compiler-principles-007-q17:c01", + "compiler-principles-019:p34:c01", + "compiler-principles-006:q-compiler-principles-006-q9:c02", + "compiler-principles-003:h-编译复习提纲:c01", + "compiler-principles-017:q-compiler-principles-017-q11:c01", + "compiler-principles-044:h-活前缀的定义:c01", + "compiler-principles-001:s46:c01", + "compiler-principles-001:s19:c01", + "compiler-principles-013:q-compiler-principles-013-q10:c01" + ] + }, + { + "case_id": "coverage-compiler_principles-condition", + "topic_id": "coverage-compiler_principles-condition", + "course_id": "compiler_principles", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“2011年编译原理期末考试试卷A答案”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "compiler-principles-012:p3:q-compiler-principles-012-q25:c01", + "compiler-principles-011:q-compiler-principles-011-q15:c01", + "compiler-principles-011:q-compiler-principles-011-q6:c01", + "compiler-principles-012:p1:q-compiler-principles-012-q12:c01", + "compiler-principles-011:q-compiler-principles-011-q11:c01", + "compiler-principles-012:p3:q-compiler-principles-012-q21:c01", + "compiler-principles-012:p2:q-compiler-principles-012-q15:c01", + "compiler-principles-011:q-compiler-principles-011-q8:c01", + "compiler-principles-012:p2:q-compiler-principles-012-q17:c01", + "compiler-principles-011:q-compiler-principles-011-q7:c01", + "compiler-principles-011:q-compiler-principles-011-q15:c02", + "compiler-principles-012:p1:c01", + "compiler-principles-011:h-2011年编译原理期末考试试卷a答案:c01", + "compiler-principles-010:p2:q-compiler-principles-010-q18:c01", + "compiler-principles-012:p2:q-compiler-principles-012-q18:c01", + "compiler-principles-010:p2:q-compiler-principles-010-q13:c01", + "compiler-principles-012:p1:q-compiler-principles-012-q14:c01", + "compiler-principles-010:p2:q-compiler-principles-010-q14:c01", + "compiler-principles-012:p1:q-compiler-principles-012-q1:c01", + "compiler-principles-010:p1:q-compiler-principles-010-q7:c01" + ], + "duration_ms": 43.254, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "compiler-principles-012:p3:q-compiler-principles-012-q25:c01", + "compiler-principles-011:q-compiler-principles-011-q15:c01", + "compiler-principles-011:q-compiler-principles-011-q6:c01", + "compiler-principles-012:p1:q-compiler-principles-012-q12:c01", + "compiler-principles-011:q-compiler-principles-011-q11:c01", + "compiler-principles-012:p3:q-compiler-principles-012-q21:c01", + "compiler-principles-012:p2:q-compiler-principles-012-q15:c01", + "compiler-principles-011:q-compiler-principles-011-q8:c01", + "compiler-principles-012:p2:q-compiler-principles-012-q17:c01", + "compiler-principles-011:q-compiler-principles-011-q7:c01", + "compiler-principles-011:q-compiler-principles-011-q15:c02", + "compiler-principles-012:p1:c01", + "compiler-principles-011:h-2011年编译原理期末考试试卷a答案:c01", + "compiler-principles-010:p2:q-compiler-principles-010-q18:c01", + "compiler-principles-012:p2:q-compiler-principles-012-q18:c01", + "compiler-principles-010:p2:q-compiler-principles-010-q13:c01", + "compiler-principles-012:p1:q-compiler-principles-012-q14:c01", + "compiler-principles-010:p2:q-compiler-principles-010-q14:c01", + "compiler-principles-012:p1:q-compiler-principles-012-q1:c01", + "compiler-principles-010:p1:q-compiler-principles-010-q7:c01" + ] + }, + { + "case_id": "coverage-compiler_principles-synthesis", + "topic_id": "coverage-compiler_principles-synthesis", + "course_id": "compiler_principles", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《网站和笔记》的“网站和笔记”与《编译复习提纲》的“编译复习提纲”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "compiler-principles-046:h-网站和笔记:c01", + "compiler-principles-003:h-编译复习提纲:c08", + "compiler-principles-003:h-编译复习提纲:c04", + "compiler-principles-003:h-编译复习提纲:c07", + "compiler-principles-003:h-编译复习提纲:c01", + "compiler-principles-003:h-编译复习提纲:c03", + "compiler-principles-003:h-编译复习提纲:c05", + "compiler-principles-003:h-编译复习提纲:c02", + "compiler-principles-003:h-编译复习提纲:c06", + "compiler-principles-004:h-编译复习题:c01", + "compiler-principles-001:s74:c01", + "compiler-principles-047:h-解决冲突的slr-0-方法:c01", + "compiler-principles-001:s83:c01", + "compiler-principles-001:s2:c01", + "compiler-principles-001:s30:c01", + "compiler-principles-001:s16:c01", + "compiler-principles-001:s28:c01", + "compiler-principles-001:s34:c01", + "compiler-principles-001:s75:c01", + "compiler-principles-001:s26:c01" + ], + "duration_ms": 38.079, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.5, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "compiler-principles-003:h-编译复习提纲:c08", + "compiler-principles-003:h-编译复习提纲:c04", + "compiler-principles-003:h-编译复习提纲:c07", + "compiler-principles-003:h-编译复习提纲:c01", + "compiler-principles-003:h-编译复习提纲:c03", + "compiler-principles-003:h-编译复习提纲:c02", + "compiler-principles-003:h-编译复习提纲:c06", + "compiler-principles-004:h-编译复习题:c01", + "compiler-principles-001:s74:c01", + "compiler-principles-047:h-解决冲突的slr-0-方法:c01", + "compiler-principles-001:s83:c01", + "compiler-principles-001:s2:c01", + "compiler-principles-001:s30:c01", + "compiler-principles-001:s16:c01", + "compiler-principles-001:s28:c01", + "compiler-principles-001:s34:c01", + "compiler-principles-001:s75:c01", + "compiler-principles-001:s26:c01" + ] + }, + { + "case_id": "coverage-computer_graphics-anchor", + "topic_id": "coverage-computer_graphics-anchor", + "course_id": "computer_graphics", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《7- Geometric representations (Chap 11-13)》中“Polygonal face element (see below)”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "computer-graphics-009:p30:c01", + "computer-graphics-009:p34:c01", + "computer-graphics-009:p22:c01", + "computer-graphics-009:p33:c01", + "computer-graphics-009:p29:c01", + "computer-graphics-009:p19:c06", + "computer-graphics-009:p25:c01", + "computer-graphics-009:p40:c01", + "computer-graphics-009:p24:c01", + "computer-graphics-009:p20:c01", + "computer-graphics-009:p21:c01", + "computer-graphics-009:p23:c01", + "computer-graphics-009:p26:c01", + "computer-graphics-009:p27:c01", + "computer-graphics-009:p28:c01", + "computer-graphics-009:p31:c01", + "computer-graphics-009:p32:c01", + "computer-graphics-009:p35:c01", + "computer-graphics-009:p36:c01", + "computer-graphics-009:p37:c01" + ], + "duration_ms": 183.998, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.2, + "unjudged_chunk_ids": [ + "computer-graphics-009:p30:c01", + "computer-graphics-009:p34:c01", + "computer-graphics-009:p22:c01", + "computer-graphics-009:p33:c01", + "computer-graphics-009:p19:c06", + "computer-graphics-009:p25:c01", + "computer-graphics-009:p40:c01", + "computer-graphics-009:p24:c01", + "computer-graphics-009:p20:c01", + "computer-graphics-009:p21:c01", + "computer-graphics-009:p23:c01", + "computer-graphics-009:p26:c01", + "computer-graphics-009:p27:c01", + "computer-graphics-009:p28:c01", + "computer-graphics-009:p31:c01", + "computer-graphics-009:p32:c01", + "computer-graphics-009:p35:c01", + "computer-graphics-009:p36:c01", + "computer-graphics-009:p37:c01" + ] + }, + { + "case_id": "coverage-computer_graphics-condition", + "topic_id": "coverage-computer_graphics-condition", + "course_id": "computer_graphics", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“6- Hidden Surface Removal (chap 8)”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "computer-graphics-008:p42:c01", + "computer-graphics-008:p38:c01", + "computer-graphics-008:p41:c01", + "computer-graphics-008:p32:c01", + "computer-graphics-008:p13:c01", + "computer-graphics-008:p25:c01", + "computer-graphics-008:p33:c01", + "computer-graphics-008:p6:c01", + "computer-graphics-008:p47:c01", + "computer-graphics-008:p36:c01", + "computer-graphics-008:p5:c01", + "computer-graphics-008:p40:c01", + "computer-graphics-008:p23:c01", + "computer-graphics-008:p51:c01", + "computer-graphics-008:p35:c01", + "computer-graphics-008:p15:c01", + "computer-graphics-008:p10:c01", + "computer-graphics-008:p31:c01", + "computer-graphics-008:p28:c01", + "computer-graphics-008:p9:c01" + ], + "duration_ms": 33.819, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "computer-graphics-008:p42:c01", + "computer-graphics-008:p38:c01", + "computer-graphics-008:p41:c01", + "computer-graphics-008:p32:c01", + "computer-graphics-008:p13:c01", + "computer-graphics-008:p25:c01", + "computer-graphics-008:p33:c01", + "computer-graphics-008:p6:c01", + "computer-graphics-008:p47:c01", + "computer-graphics-008:p36:c01", + "computer-graphics-008:p5:c01", + "computer-graphics-008:p40:c01", + "computer-graphics-008:p23:c01", + "computer-graphics-008:p51:c01", + "computer-graphics-008:p35:c01", + "computer-graphics-008:p15:c01", + "computer-graphics-008:p10:c01", + "computer-graphics-008:p31:c01", + "computer-graphics-008:p28:c01", + "computer-graphics-008:p9:c01" + ] + }, + { + "case_id": "coverage-computer_graphics-synthesis", + "topic_id": "coverage-computer_graphics-synthesis", + "course_id": "computer_graphics", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《7- Geometric representations (Chap 11-13)》的“Polygonal face element (see below)”与《11 illumination models (chap 6)》的“11 illumination models (chap 6)”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "computer-graphics-009:p37:c01", + "computer-graphics-009:p33:c01", + "computer-graphics-009:p19:c06", + "computer-graphics-009:p43:c01", + "computer-graphics-009:p29:c01", + "computer-graphics-009:p30:c01", + "computer-graphics-009:p25:c01", + "computer-graphics-009:p40:c01", + "computer-graphics-009:p24:c01", + "computer-graphics-009:p20:c01", + "computer-graphics-009:p21:c01", + "computer-graphics-009:p22:c01", + "computer-graphics-009:p23:c01", + "computer-graphics-009:p26:c01", + "computer-graphics-009:p27:c01", + "computer-graphics-009:p28:c01", + "computer-graphics-009:p31:c01", + "computer-graphics-009:p32:c01", + "computer-graphics-009:p34:c01", + "computer-graphics-009:p35:c01" + ], + "duration_ms": 35.28, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.5, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.2, + "unjudged_chunk_ids": [ + "computer-graphics-009:p37:c01", + "computer-graphics-009:p33:c01", + "computer-graphics-009:p19:c06", + "computer-graphics-009:p43:c01", + "computer-graphics-009:p30:c01", + "computer-graphics-009:p25:c01", + "computer-graphics-009:p40:c01", + "computer-graphics-009:p24:c01", + "computer-graphics-009:p20:c01", + "computer-graphics-009:p21:c01", + "computer-graphics-009:p22:c01", + "computer-graphics-009:p23:c01", + "computer-graphics-009:p26:c01", + "computer-graphics-009:p27:c01", + "computer-graphics-009:p28:c01", + "computer-graphics-009:p31:c01", + "computer-graphics-009:p32:c01", + "computer-graphics-009:p34:c01", + "computer-graphics-009:p35:c01" + ] + }, + { + "case_id": "coverage-computer_networks-anchor", + "topic_id": "coverage-computer_networks-anchor", + "course_id": "computer_networks", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《术语和缩写大全》中“术语和缩写大全”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "computer-networks-050:h-术语和缩写大全:c01", + "computer-networks-050:h-术语和缩写大全:c02", + "computer-networks-037:p11:c01", + "computer-networks-011:p2:q-computer-networks-011-q29:c01", + "computer-networks-040:p19:c01", + "computer-networks-034:p12:c01", + "computer-networks-038:p7:c01", + "computer-networks-039:p2:c01", + "computer-networks-012:p2:q-computer-networks-012-q20:c01", + "computer-networks-029:p21:c01", + "computer-networks-043:p2:c01", + "computer-networks-036:p23:c01", + "computer-networks-036:p31:c01", + "computer-networks-034:p28:c01", + "computer-networks-029:p5:c01", + "computer-networks-029:p20:c01", + "computer-networks-046:p89:c01", + "computer-networks-043:p4:c01", + "computer-networks-040:p29:c01", + "computer-networks-045:p12:c01" + ], + "duration_ms": 589.833, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "computer-networks-050:h-术语和缩写大全:c02", + "computer-networks-037:p11:c01", + "computer-networks-011:p2:q-computer-networks-011-q29:c01", + "computer-networks-040:p19:c01", + "computer-networks-034:p12:c01", + "computer-networks-038:p7:c01", + "computer-networks-039:p2:c01", + "computer-networks-012:p2:q-computer-networks-012-q20:c01", + "computer-networks-029:p21:c01", + "computer-networks-043:p2:c01", + "computer-networks-036:p23:c01", + "computer-networks-036:p31:c01", + "computer-networks-034:p28:c01", + "computer-networks-029:p5:c01", + "computer-networks-029:p20:c01", + "computer-networks-046:p89:c01", + "computer-networks-043:p4:c01", + "computer-networks-040:p29:c01", + "computer-networks-045:p12:c01" + ] + }, + { + "case_id": "coverage-computer_networks-condition", + "topic_id": "coverage-computer_networks-condition", + "course_id": "computer_networks", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“教学资源试题”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "computer-networks-013:p1:q-computer-networks-013-q12:c01", + "computer-networks-013:p1:q-computer-networks-013-q13:c01", + "computer-networks-011:p2:q-computer-networks-011-q28:c01", + "computer-networks-012:p6:q-computer-networks-012-q35:c01", + "computer-networks-013:p5:q-computer-networks-013-q59:c01", + "computer-networks-012:p1:q-computer-networks-012-q7:c01", + "computer-networks-013:p4:q-computer-networks-013-q52:c01", + "computer-networks-011:p1:q-computer-networks-011-q14:c01", + "computer-networks-013:p4:q-computer-networks-013-q54:c01", + "computer-networks-013:p4:q-computer-networks-013-q51:c01", + "computer-networks-013:p5:q-computer-networks-013-q57:c01", + "computer-networks-011:p4:q-computer-networks-011-q40:c01", + "computer-networks-011:p2:q-computer-networks-011-q24:c01", + "computer-networks-012:p4:q-computer-networks-012-q30:c01", + "computer-networks-013:p4:q-computer-networks-013-q50:c01", + "computer-networks-013:p1:q-computer-networks-013-q9:c01", + "computer-networks-013:p1:q-computer-networks-013-q15:c01", + "computer-networks-011:p8:q-computer-networks-011-q46:c01", + "computer-networks-011:p1:q-computer-networks-011-q11:c01", + "computer-networks-011:p4:q-computer-networks-011-q38:c01" + ], + "duration_ms": 93.791, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "computer-networks-013:p1:q-computer-networks-013-q12:c01", + "computer-networks-013:p1:q-computer-networks-013-q13:c01", + "computer-networks-011:p2:q-computer-networks-011-q28:c01", + "computer-networks-012:p6:q-computer-networks-012-q35:c01", + "computer-networks-013:p5:q-computer-networks-013-q59:c01", + "computer-networks-012:p1:q-computer-networks-012-q7:c01", + "computer-networks-013:p4:q-computer-networks-013-q52:c01", + "computer-networks-011:p1:q-computer-networks-011-q14:c01", + "computer-networks-013:p4:q-computer-networks-013-q54:c01", + "computer-networks-013:p4:q-computer-networks-013-q51:c01", + "computer-networks-013:p5:q-computer-networks-013-q57:c01", + "computer-networks-011:p4:q-computer-networks-011-q40:c01", + "computer-networks-011:p2:q-computer-networks-011-q24:c01", + "computer-networks-012:p4:q-computer-networks-012-q30:c01", + "computer-networks-013:p4:q-computer-networks-013-q50:c01", + "computer-networks-013:p1:q-computer-networks-013-q9:c01", + "computer-networks-013:p1:q-computer-networks-013-q15:c01", + "computer-networks-011:p8:q-computer-networks-011-q46:c01", + "computer-networks-011:p1:q-computer-networks-011-q11:c01", + "computer-networks-011:p4:q-computer-networks-011-q38:c01" + ] + }, + { + "case_id": "coverage-computer_networks-synthesis", + "topic_id": "coverage-computer_networks-synthesis", + "course_id": "computer_networks", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《术语和缩写大全》的“术语和缩写大全”与《计网》的“计网”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "computer-networks-050:h-术语和缩写大全:c02", + "computer-networks-050:h-术语和缩写大全:c01", + "computer-networks-242:h-计网5层结构解决的问题:c01", + "computer-networks-029:p5:c01", + "computer-networks-046:p84:c01", + "computer-networks-014:p6:c01", + "computer-networks-038:p27:c01", + "computer-networks-039:p25:c01", + "computer-networks-041:p56:c01", + "computer-networks-034:p11:c01", + "computer-networks-014:p4:c01", + "computer-networks-045:p32:c01", + "computer-networks-026:h-计网题目:c02", + "computer-networks-014:p5:c01", + "computer-networks-014:p8:c01", + "computer-networks-014:p7:c01", + "computer-networks-035:p23:c01", + "computer-networks-045:p27:c01", + "computer-networks-014:p2:c01", + "computer-networks-045:p36:c01" + ], + "duration_ms": 87.982, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.5, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "computer-networks-050:h-术语和缩写大全:c02", + "computer-networks-242:h-计网5层结构解决的问题:c01", + "computer-networks-029:p5:c01", + "computer-networks-046:p84:c01", + "computer-networks-014:p6:c01", + "computer-networks-038:p27:c01", + "computer-networks-039:p25:c01", + "computer-networks-041:p56:c01", + "computer-networks-034:p11:c01", + "computer-networks-014:p4:c01", + "computer-networks-045:p32:c01", + "computer-networks-026:h-计网题目:c02", + "computer-networks-014:p5:c01", + "computer-networks-014:p8:c01", + "computer-networks-014:p7:c01", + "computer-networks-035:p23:c01", + "computer-networks-045:p27:c01", + "computer-networks-014:p2:c01", + "computer-networks-045:p36:c01" + ] + }, + { + "case_id": "coverage-computer_organization-anchor", + "topic_id": "coverage-computer_organization-anchor", + "course_id": "computer_organization", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《B》中“B”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "computer-organization-002:q-computer-organization-002-q2:c01", + "computer-organization-027:s68:c01", + "computer-organization-032:s6:c01", + "computer-organization-026:s86:c01", + "computer-organization-028:s24:c01", + "computer-organization-027:s16:c01", + "computer-organization-027:s35:c01", + "computer-organization-028:s38:c01", + "computer-organization-005:p2:q-computer-organization-005-q10:c01", + "computer-organization-055:h-答案:c01", + "computer-organization-008:h-b:c04", + "computer-organization-026:s87:c01", + "computer-organization-032:s17:c01", + "computer-organization-009:h-b:c04", + "computer-organization-027:s82:c01", + "computer-organization-011:h-b:c04", + "computer-organization-029:s16:c01", + "computer-organization-065:h-答案:c01", + "computer-organization-071:h-答案:c02", + "computer-organization-026:s50:c01" + ], + "duration_ms": 463.763, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "computer-organization-002:q-computer-organization-002-q2:c01", + "computer-organization-027:s68:c01", + "computer-organization-032:s6:c01", + "computer-organization-026:s86:c01", + "computer-organization-028:s24:c01", + "computer-organization-027:s16:c01", + "computer-organization-027:s35:c01", + "computer-organization-028:s38:c01", + "computer-organization-005:p2:q-computer-organization-005-q10:c01", + "computer-organization-055:h-答案:c01", + "computer-organization-008:h-b:c04", + "computer-organization-026:s87:c01", + "computer-organization-032:s17:c01", + "computer-organization-009:h-b:c04", + "computer-organization-027:s82:c01", + "computer-organization-011:h-b:c04", + "computer-organization-029:s16:c01", + "computer-organization-065:h-答案:c01", + "computer-organization-071:h-答案:c02", + "computer-organization-026:s50:c01" + ] + }, + { + "case_id": "coverage-computer_organization-condition", + "topic_id": "coverage-computer_organization-condition", + "course_id": "computer_organization", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“题”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "computer-organization-029:s11:c01", + "computer-organization-052:h-题:c01", + "computer-organization-026:s77:c01", + "computer-organization-041:h-题:c03", + "computer-organization-031:s11:c01", + "computer-organization-031:s2:c01", + "computer-organization-003:h-2022秋计算机组成复习要点:c04", + "computer-organization-043:h-题:c02", + "computer-organization-041:h-题:c02", + "computer-organization-033:s16:c01", + "computer-organization-039:h-题:c02", + "computer-organization-031:s8:c01", + "computer-organization-027:s82:c01", + "computer-organization-046:h-题:c03", + "computer-organization-005:p5:q-computer-organization-005-q33:c01", + "computer-organization-038:h-题:c03", + "computer-organization-002:q-computer-organization-002-q24:c01", + "computer-organization-048:h-题:c02", + "computer-organization-003:h-2022秋计算机组成复习要点:c03", + "computer-organization-032:s27:c01" + ], + "duration_ms": 71.043, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "computer-organization-029:s11:c01", + "computer-organization-052:h-题:c01", + "computer-organization-026:s77:c01", + "computer-organization-041:h-题:c03", + "computer-organization-031:s11:c01", + "computer-organization-031:s2:c01", + "computer-organization-003:h-2022秋计算机组成复习要点:c04", + "computer-organization-043:h-题:c02", + "computer-organization-041:h-题:c02", + "computer-organization-033:s16:c01", + "computer-organization-039:h-题:c02", + "computer-organization-031:s8:c01", + "computer-organization-027:s82:c01", + "computer-organization-046:h-题:c03", + "computer-organization-005:p5:q-computer-organization-005-q33:c01", + "computer-organization-038:h-题:c03", + "computer-organization-002:q-computer-organization-002-q24:c01", + "computer-organization-048:h-题:c02", + "computer-organization-003:h-2022秋计算机组成复习要点:c03", + "computer-organization-032:s27:c01" + ] + }, + { + "case_id": "coverage-computer_organization-synthesis", + "topic_id": "coverage-computer_organization-synthesis", + "course_id": "computer_organization", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《B》的“B”与《答案》的“答案”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "computer-organization-026:s2:c01", + "computer-organization-003:h-2022秋计算机组成复习要点:c03", + "computer-organization-014:h-b:c02", + "computer-organization-002:q-computer-organization-002-q24:c01", + "computer-organization-056:h-答案:c01", + "computer-organization-049:h-题:c02", + "computer-organization-026:s57:c01", + "computer-organization-011:h-b:c02", + "computer-organization-002:q-computer-organization-002-q2:c01", + "computer-organization-010:h-b:c03", + "computer-organization-002:q-computer-organization-002-q32:c01", + "computer-organization-016:h-b:c02", + "computer-organization-008:h-b:c03", + "computer-organization-035:h-题:c03", + "computer-organization-014:h-b:c03", + "computer-organization-035:h-题:c01", + "computer-organization-068:h-答案:c01", + "computer-organization-013:h-b:c01", + "computer-organization-045:h-题:c01", + "computer-organization-033:s30:c01" + ], + "duration_ms": 74.629, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "computer-organization-026:s2:c01", + "computer-organization-003:h-2022秋计算机组成复习要点:c03", + "computer-organization-014:h-b:c02", + "computer-organization-002:q-computer-organization-002-q24:c01", + "computer-organization-056:h-答案:c01", + "computer-organization-049:h-题:c02", + "computer-organization-026:s57:c01", + "computer-organization-011:h-b:c02", + "computer-organization-002:q-computer-organization-002-q2:c01", + "computer-organization-010:h-b:c03", + "computer-organization-002:q-computer-organization-002-q32:c01", + "computer-organization-016:h-b:c02", + "computer-organization-008:h-b:c03", + "computer-organization-035:h-题:c03", + "computer-organization-014:h-b:c03", + "computer-organization-035:h-题:c01", + "computer-organization-068:h-答案:c01", + "computer-organization-013:h-b:c01", + "computer-organization-045:h-题:c01", + "computer-organization-033:s30:c01" + ] + }, + { + "case_id": "coverage-computer_science_intro-anchor", + "topic_id": "coverage-computer_science_intro-anchor", + "course_id": "computer_science_intro", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《计算机科学概论》中“计算机科学概论”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "computer-science-intro-012:h-计算机科学概论:c05", + "computer-science-intro-011:h-计算机科学概论:c01", + "computer-science-intro-012:h-计算机科学概论:c03", + "computer-science-intro-012:h-计算机科学概论:c01", + "computer-science-intro-012:h-计算机科学概论:c02", + "computer-science-intro-012:h-计算机科学概论:c04", + "computer-science-intro-008:s37:c01", + "computer-science-intro-008:s38:c01", + "computer-science-intro-005:s29:c01" + ], + "duration_ms": 43.15, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.25, + "unjudged_chunk_ids": [ + "computer-science-intro-012:h-计算机科学概论:c05", + "computer-science-intro-011:h-计算机科学概论:c01", + "computer-science-intro-012:h-计算机科学概论:c03", + "computer-science-intro-012:h-计算机科学概论:c02", + "computer-science-intro-012:h-计算机科学概论:c04", + "computer-science-intro-008:s37:c01", + "computer-science-intro-008:s38:c01", + "computer-science-intro-005:s29:c01" + ] + }, + { + "case_id": "coverage-computer_science_intro-condition", + "topic_id": "coverage-computer_science_intro-condition", + "course_id": "computer_science_intro", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“Final Exam A2021V1”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "computer-science-intro-003:p1:c01", + "computer-science-intro-003:p1:q-computer-science-intro-003-q2:c01", + "computer-science-intro-003:p5:q-computer-science-intro-003-q17:c01", + "computer-science-intro-003:p1:q-computer-science-intro-003-q5:c01", + "computer-science-intro-003:p3:q-computer-science-intro-003-q11:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q9:c01", + "computer-science-intro-003:p4:q-computer-science-intro-003-q14:c01", + "computer-science-intro-003:p1:q-computer-science-intro-003-q1:c01", + "computer-science-intro-003:p1:q-computer-science-intro-003-q3:c01", + "computer-science-intro-003:p1:q-computer-science-intro-003-q4:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q5:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q6:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q7:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q8:c01", + "computer-science-intro-003:p3:q-computer-science-intro-003-q10:c01", + "computer-science-intro-003:p3:q-computer-science-intro-003-q9:c01", + "computer-science-intro-003:p4:q-computer-science-intro-003-q11:c01", + "computer-science-intro-003:p4:q-computer-science-intro-003-q12:c01", + "computer-science-intro-003:p4:q-computer-science-intro-003-q13:c01", + "computer-science-intro-003:p5:q-computer-science-intro-003-q14:c01" + ], + "duration_ms": 12.583, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.0625, + "unjudged_chunk_ids": [ + "computer-science-intro-003:p1:c01", + "computer-science-intro-003:p1:q-computer-science-intro-003-q2:c01", + "computer-science-intro-003:p5:q-computer-science-intro-003-q17:c01", + "computer-science-intro-003:p1:q-computer-science-intro-003-q5:c01", + "computer-science-intro-003:p3:q-computer-science-intro-003-q11:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q9:c01", + "computer-science-intro-003:p4:q-computer-science-intro-003-q14:c01", + "computer-science-intro-003:p1:q-computer-science-intro-003-q1:c01", + "computer-science-intro-003:p1:q-computer-science-intro-003-q3:c01", + "computer-science-intro-003:p1:q-computer-science-intro-003-q4:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q5:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q6:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q7:c01", + "computer-science-intro-003:p2:q-computer-science-intro-003-q8:c01", + "computer-science-intro-003:p3:q-computer-science-intro-003-q10:c01", + "computer-science-intro-003:p4:q-computer-science-intro-003-q11:c01", + "computer-science-intro-003:p4:q-computer-science-intro-003-q12:c01", + "computer-science-intro-003:p4:q-computer-science-intro-003-q13:c01", + "computer-science-intro-003:p5:q-computer-science-intro-003-q14:c01" + ] + }, + { + "case_id": "coverage-computer_science_intro-synthesis", + "topic_id": "coverage-computer_science_intro-synthesis", + "course_id": "computer_science_intro", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《计算机科学概论》的“计算机科学概论”与《第7章》的“Summary of Methodology”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "computer-science-intro-011:h-计算机科学概论:c01", + "computer-science-intro-012:h-计算机科学概论:c01", + "computer-science-intro-012:h-计算机科学概论:c03", + "computer-science-intro-012:h-计算机科学概论:c02", + "computer-science-intro-012:h-计算机科学概论:c04", + "computer-science-intro-012:h-计算机科学概论:c05", + "computer-science-intro-010:s14:c01", + "computer-science-intro-008:s37:c01", + "computer-science-intro-008:s38:c01", + "computer-science-intro-005:s29:c01", + "computer-science-intro-010:s66:c01", + "computer-science-intro-010:s65:c01", + "computer-science-intro-010:s17:c01", + "computer-science-intro-010:s20:c01", + "computer-science-intro-010:s61:c01", + "computer-science-intro-010:s3:c01", + "computer-science-intro-010:s12:c01", + "computer-science-intro-010:s57:c01", + "computer-science-intro-010:s44:c01", + "computer-science-intro-010:s59:c01" + ], + "duration_ms": 16.087, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.5, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "computer-science-intro-011:h-计算机科学概论:c01", + "computer-science-intro-012:h-计算机科学概论:c03", + "computer-science-intro-012:h-计算机科学概论:c02", + "computer-science-intro-012:h-计算机科学概论:c04", + "computer-science-intro-012:h-计算机科学概论:c05", + "computer-science-intro-008:s37:c01", + "computer-science-intro-008:s38:c01", + "computer-science-intro-005:s29:c01", + "computer-science-intro-010:s66:c01", + "computer-science-intro-010:s65:c01", + "computer-science-intro-010:s17:c01", + "computer-science-intro-010:s20:c01", + "computer-science-intro-010:s61:c01", + "computer-science-intro-010:s3:c01", + "computer-science-intro-010:s12:c01", + "computer-science-intro-010:s57:c01", + "computer-science-intro-010:s44:c01", + "computer-science-intro-010:s59:c01" + ] + }, + { + "case_id": "coverage-computing_methods-anchor", + "topic_id": "coverage-computing_methods-anchor", + "course_id": "computing_methods", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《数值分析(电子版教材-仅供学生参考-勿对外分享)》中“数值分析(电子版教材-仅供学生参考-勿对外分享)”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "computing-methods-002:p3:c01", + "computing-methods-002:p56:c01", + "computing-methods-002:p195:c01", + "computing-methods-002:p178:c01", + "computing-methods-002:p100:c01", + "computing-methods-002:p55:c01", + "computing-methods-002:p65:c01", + "computing-methods-002:p131:c01", + "computing-methods-002:p129:c01", + "computing-methods-002:p21:c01", + "computing-methods-002:p9:c01", + "computing-methods-002:p8:c01", + "computing-methods-002:p160:c01", + "computing-methods-002:p12:c01", + "computing-methods-002:p130:c01", + "computing-methods-002:p154:c01", + "computing-methods-002:p170:c01", + "computing-methods-002:p148:c01", + "computing-methods-002:p173:c01", + "computing-methods-002:p63:c01" + ], + "duration_ms": 462.322, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "computing-methods-002:p3:c01", + "computing-methods-002:p56:c01", + "computing-methods-002:p195:c01", + "computing-methods-002:p178:c01", + "computing-methods-002:p100:c01", + "computing-methods-002:p55:c01", + "computing-methods-002:p65:c01", + "computing-methods-002:p131:c01", + "computing-methods-002:p129:c01", + "computing-methods-002:p21:c01", + "computing-methods-002:p9:c01", + "computing-methods-002:p8:c01", + "computing-methods-002:p160:c01", + "computing-methods-002:p12:c01", + "computing-methods-002:p130:c01", + "computing-methods-002:p154:c01", + "computing-methods-002:p170:c01", + "computing-methods-002:p148:c01", + "computing-methods-002:p173:c01", + "computing-methods-002:p63:c01" + ] + }, + { + "case_id": "coverage-computing_methods-condition", + "topic_id": "coverage-computing_methods-condition", + "course_id": "computing_methods", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“数学系09级数值分析A”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "computing-methods-018:h-数学系09级数值分析a:c02", + "computing-methods-018:h-数学系09级数值分析a:c01", + "computing-methods-018:h-数学系09级数值分析a:c03", + "computing-methods-019:h-数学系11级数值分析a:c02", + "computing-methods-019:h-数学系11级数值分析a:c01", + "computing-methods-019:h-数学系11级数值分析a:c03", + "computing-methods-002:p113:c01", + "computing-methods-015:p1:c01", + "computing-methods-014:q-computing-methods-014-q2:c01", + "computing-methods-002:p133:c01", + "computing-methods-002:p61:c01", + "computing-methods-014:h-华南理工大学数值分析试题c:c01", + "computing-methods-002:p90:c01", + "computing-methods-008:p1:q-computing-methods-008-q5:c01", + "computing-methods-015:p2:q-computing-methods-015-q2:c01", + "computing-methods-002:p155:c01", + "computing-methods-002:p177:c01", + "computing-methods-002:p8:c01", + "computing-methods-017:q-computing-methods-017-q4:c01", + "computing-methods-009:p3:c01" + ], + "duration_ms": 110.426, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "computing-methods-018:h-数学系09级数值分析a:c01", + "computing-methods-018:h-数学系09级数值分析a:c03", + "computing-methods-019:h-数学系11级数值分析a:c02", + "computing-methods-019:h-数学系11级数值分析a:c01", + "computing-methods-019:h-数学系11级数值分析a:c03", + "computing-methods-002:p113:c01", + "computing-methods-015:p1:c01", + "computing-methods-014:q-computing-methods-014-q2:c01", + "computing-methods-002:p133:c01", + "computing-methods-002:p61:c01", + "computing-methods-014:h-华南理工大学数值分析试题c:c01", + "computing-methods-002:p90:c01", + "computing-methods-008:p1:q-computing-methods-008-q5:c01", + "computing-methods-015:p2:q-computing-methods-015-q2:c01", + "computing-methods-002:p155:c01", + "computing-methods-002:p177:c01", + "computing-methods-002:p8:c01", + "computing-methods-017:q-computing-methods-017-q4:c01", + "computing-methods-009:p3:c01" + ] + }, + { + "case_id": "coverage-computing_methods-synthesis", + "topic_id": "coverage-computing_methods-synthesis", + "course_id": "computing_methods", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《数值分析(电子版教材-仅供学生参考-勿对外分享)》的“数值分析(电子版教材-仅供学生参考-勿对外分享)”与《华南理工大学数值分析A》的“华南理工大学数值分析A”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "computing-methods-002:p2:c01", + "computing-methods-002:p1:c01", + "computing-methods-013:h-华南理工大学数值分析a:c03", + "computing-methods-009:p7:c01", + "computing-methods-009:p2:c01", + "computing-methods-013:h-华南理工大学数值分析a:c01", + "computing-methods-002:p3:c01", + "computing-methods-013:h-华南理工大学数值分析a:c02", + "computing-methods-009:p1:c01", + "computing-methods-009:p5:c01", + "computing-methods-009:p4:c01", + "computing-methods-009:p6:c01", + "computing-methods-009:p3:c01", + "computing-methods-009:p8:c01", + "computing-methods-014:q-computing-methods-014-q7:c01", + "computing-methods-014:h-华南理工大学数值分析试题c:c01", + "computing-methods-014:q-computing-methods-014-q4:c01", + "computing-methods-014:q-computing-methods-014-q1:c01", + "computing-methods-014:q-computing-methods-014-q2:c01", + "computing-methods-014:q-computing-methods-014-q5:c01" + ], + "duration_ms": 117.525, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.125, + "unjudged_chunk_ids": [ + "computing-methods-002:p2:c01", + "computing-methods-002:p1:c01", + "computing-methods-013:h-华南理工大学数值分析a:c03", + "computing-methods-009:p7:c01", + "computing-methods-009:p2:c01", + "computing-methods-013:h-华南理工大学数值分析a:c01", + "computing-methods-002:p3:c01", + "computing-methods-009:p1:c01", + "computing-methods-009:p5:c01", + "computing-methods-009:p4:c01", + "computing-methods-009:p6:c01", + "computing-methods-009:p3:c01", + "computing-methods-009:p8:c01", + "computing-methods-014:q-computing-methods-014-q7:c01", + "computing-methods-014:h-华南理工大学数值分析试题c:c01", + "computing-methods-014:q-computing-methods-014-q4:c01", + "computing-methods-014:q-computing-methods-014-q1:c01", + "computing-methods-014:q-computing-methods-014-q2:c01", + "computing-methods-014:q-computing-methods-014-q5:c01" + ] + }, + { + "case_id": "coverage-cpp-anchor", + "topic_id": "coverage-cpp-anchor", + "course_id": "cpp", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《C++非应试笔记(全:开源)》中“C++非应试笔记(全:开源)”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "cpp-002:h-c-非应试笔记-全-开源:c01", + "cpp-034:p8:q-cpp-034-q52:c01", + "cpp-043:p11:q-cpp-043-q29:c01", + "cpp-043:p8:q-cpp-043-q25:c01", + "cpp-043:p9:q-cpp-043-q26:c01", + "cpp-032:p187:q-cpp-032-q107:c01", + "cpp-036:p1:q-cpp-036-q5:c01", + "cpp-040:q-cpp-040-q23:c01", + "cpp-042:p8:q-cpp-042-q40:c01", + "cpp-033:p1:q-cpp-033-q11:c01", + "cpp-027:p4:q-cpp-027-q20:c01", + "cpp-043:p10:q-cpp-043-q27:c01", + "cpp-032:p157:q-cpp-032-q87:c01", + "cpp-031:h-习题与解答~第8章练习题~二-程序练习:c04", + "cpp-031:h-习题与解答~第9章练习题~一-选择题:c02", + "cpp-032:p168:q-cpp-032-q94:c01", + "cpp-031:h-习题与解答~第11章练习题~二-程序练习:c03", + "cpp-036:p6:q-cpp-036-q14:c01", + "cpp-034:p9:q-cpp-034-q55:c01", + "cpp-031:h-习题与解答~第9章练习题~一-思考题:c01" + ], + "duration_ms": 521.388, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "cpp-034:p8:q-cpp-034-q52:c01", + "cpp-043:p11:q-cpp-043-q29:c01", + "cpp-043:p8:q-cpp-043-q25:c01", + "cpp-043:p9:q-cpp-043-q26:c01", + "cpp-032:p187:q-cpp-032-q107:c01", + "cpp-036:p1:q-cpp-036-q5:c01", + "cpp-040:q-cpp-040-q23:c01", + "cpp-042:p8:q-cpp-042-q40:c01", + "cpp-033:p1:q-cpp-033-q11:c01", + "cpp-027:p4:q-cpp-027-q20:c01", + "cpp-043:p10:q-cpp-043-q27:c01", + "cpp-032:p157:q-cpp-032-q87:c01", + "cpp-031:h-习题与解答~第8章练习题~二-程序练习:c04", + "cpp-031:h-习题与解答~第9章练习题~一-选择题:c02", + "cpp-032:p168:q-cpp-032-q94:c01", + "cpp-031:h-习题与解答~第11章练习题~二-程序练习:c03", + "cpp-036:p6:q-cpp-036-q14:c01", + "cpp-034:p9:q-cpp-034-q55:c01", + "cpp-031:h-习题与解答~第9章练习题~一-思考题:c01" + ] + }, + { + "case_id": "coverage-cpp-condition", + "topic_id": "coverage-cpp-condition", + "course_id": "cpp", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“题目”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "cpp-032:p22:q-cpp-032-q20:c01", + "cpp-032:p14:q-cpp-032-q13:c01", + "cpp-032:p23:q-cpp-032-q20:c01", + "cpp-032:p24:q-cpp-032-q20:c01", + "cpp-007:h-题目:c01", + "cpp-005:h-实践题一:c01", + "cpp-032:p199:q-cpp-032-q111:c01", + "cpp-032:p46:q-cpp-032-q34:c01", + "cpp-034:p8:q-cpp-034-q51:c01", + "cpp-036:p1:q-cpp-036-q4:c01", + "cpp-032:p1:q-cpp-032-q1:c01", + "cpp-040:q-cpp-040-q3:c01", + "cpp-032:p98:q-cpp-032-q62:c01", + "cpp-032:p162:q-cpp-032-q90:c01", + "cpp-032:p21:q-cpp-032-q19:c01", + "cpp-034:p4:q-cpp-034-q21:c01", + "cpp-006:s4:c01", + "cpp-031:h-习题与解答~第12章练习题~二-思考题:c01", + "cpp-032:p123:q-cpp-032-q72:c01", + "cpp-032:p141:q-cpp-032-q83:c01" + ], + "duration_ms": 90.484, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.2, + "unjudged_chunk_ids": [ + "cpp-032:p22:q-cpp-032-q20:c01", + "cpp-032:p14:q-cpp-032-q13:c01", + "cpp-032:p23:q-cpp-032-q20:c01", + "cpp-032:p24:q-cpp-032-q20:c01", + "cpp-005:h-实践题一:c01", + "cpp-032:p199:q-cpp-032-q111:c01", + "cpp-032:p46:q-cpp-032-q34:c01", + "cpp-034:p8:q-cpp-034-q51:c01", + "cpp-036:p1:q-cpp-036-q4:c01", + "cpp-032:p1:q-cpp-032-q1:c01", + "cpp-040:q-cpp-040-q3:c01", + "cpp-032:p98:q-cpp-032-q62:c01", + "cpp-032:p162:q-cpp-032-q90:c01", + "cpp-032:p21:q-cpp-032-q19:c01", + "cpp-034:p4:q-cpp-034-q21:c01", + "cpp-006:s4:c01", + "cpp-031:h-习题与解答~第12章练习题~二-思考题:c01", + "cpp-032:p123:q-cpp-032-q72:c01", + "cpp-032:p141:q-cpp-032-q83:c01" + ] + }, + { + "case_id": "coverage-cpp-synthesis", + "topic_id": "coverage-cpp-synthesis", + "course_id": "cpp", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《C++非应试笔记(全:开源)》的“C++非应试笔记(全:开源)”与《A》的“A”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "cpp-002:h-c-非应试笔记-全-开源:c01", + "cpp-032:p123:q-cpp-032-q72:c01", + "cpp-032:p75:q-cpp-032-q51:c01", + "cpp-031:h-习题与解答~第6章练习题~一-思考题:c01", + "cpp-032:p183:q-cpp-032-q103:c01", + "cpp-032:p55:q-cpp-032-q35:c01", + "cpp-032:p46:q-cpp-032-q34:c01", + "cpp-032:p6:q-cpp-032-q8:c01", + "cpp-034:p13:q-cpp-034-q73:c01", + "cpp-033:p1:q-cpp-033-q13:c01", + "cpp-032:p34:q-cpp-032-q23:c01", + "cpp-032:p7:q-cpp-032-q8:c01", + "cpp-032:p48:q-cpp-032-q34:c01", + "cpp-032:p124:q-cpp-032-q72:c01", + "cpp-031:h-习题与解答~第8章练习题~一-思考题:c01", + "cpp-031:h-习题与解答~第8章练习题~二-程序练习:c02", + "cpp-035:p1:q-cpp-035-q11:c01", + "cpp-044:q-cpp-044-q5:c01", + "cpp-031:h-习题与解答~第11章练习题~一-思考题:c01", + "cpp-032:p85:q-cpp-032-q51:c01" + ], + "duration_ms": 111.998, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.5, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "cpp-032:p123:q-cpp-032-q72:c01", + "cpp-032:p75:q-cpp-032-q51:c01", + "cpp-031:h-习题与解答~第6章练习题~一-思考题:c01", + "cpp-032:p183:q-cpp-032-q103:c01", + "cpp-032:p55:q-cpp-032-q35:c01", + "cpp-032:p46:q-cpp-032-q34:c01", + "cpp-032:p6:q-cpp-032-q8:c01", + "cpp-034:p13:q-cpp-034-q73:c01", + "cpp-033:p1:q-cpp-033-q13:c01", + "cpp-032:p34:q-cpp-032-q23:c01", + "cpp-032:p7:q-cpp-032-q8:c01", + "cpp-032:p48:q-cpp-032-q34:c01", + "cpp-032:p124:q-cpp-032-q72:c01", + "cpp-031:h-习题与解答~第8章练习题~一-思考题:c01", + "cpp-031:h-习题与解答~第8章练习题~二-程序练习:c02", + "cpp-035:p1:q-cpp-035-q11:c01", + "cpp-044:q-cpp-044-q5:c01", + "cpp-031:h-习题与解答~第11章练习题~一-思考题:c01", + "cpp-032:p85:q-cpp-032-q51:c01" + ] + }, + { + "case_id": "coverage-data_structure-anchor", + "topic_id": "coverage-data_structure-anchor", + "course_id": "data_structure", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《作业及分析》中“作业及分析”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "data-structure-023:h-作业及分析:c01", + "data-structure-019:p1:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02", + "data-structure-022:h-2025-a-辅修班卷子:c02", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c03", + "data-structure-022:h-2025-a-辅修班卷子:c04", + "data-structure-017:q-data-structure-017-q5:c01", + "data-structure-024:p5:c01", + "data-structure-024:p1:c01", + "data-structure-017:q-data-structure-017-q11:c01" + ], + "duration_ms": 97.451, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "data-structure-019:p1:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02", + "data-structure-022:h-2025-a-辅修班卷子:c02", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c03", + "data-structure-022:h-2025-a-辅修班卷子:c04", + "data-structure-017:q-data-structure-017-q5:c01", + "data-structure-024:p5:c01", + "data-structure-024:p1:c01", + "data-structure-017:q-data-structure-017-q11:c01" + ] + }, + { + "case_id": "coverage-data_structure-condition", + "topic_id": "coverage-data_structure-condition", + "course_id": "data_structure", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“测试结果”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "data-structure-025:h-测试结果:c01", + "data-structure-026:h-测试结果:c01", + "data-structure-027:h-测试结果3-200000:c01", + "data-structure-028:h-测试结果3-200000:c01", + "data-structure-024:p6:c01", + "data-structure-024:p2:c01", + "data-structure-024:p5:c01", + "data-structure-024:p4:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02", + "data-structure-016:p1:c01", + "data-structure-022:h-2025-a-辅修班卷子:c02", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c03", + "data-structure-024:p3:c01", + "data-structure-022:h-2025-a-辅修班卷子:c03", + "data-structure-017:q-data-structure-017-q7:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c01", + "data-structure-019:p1:c01", + "data-structure-022:h-2025-a-辅修班卷子:c04", + "data-structure-024:p1:c01" + ], + "duration_ms": 20.755, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "data-structure-025:h-测试结果:c01", + "data-structure-027:h-测试结果3-200000:c01", + "data-structure-028:h-测试结果3-200000:c01", + "data-structure-024:p6:c01", + "data-structure-024:p2:c01", + "data-structure-024:p5:c01", + "data-structure-024:p4:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02", + "data-structure-016:p1:c01", + "data-structure-022:h-2025-a-辅修班卷子:c02", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c03", + "data-structure-024:p3:c01", + "data-structure-022:h-2025-a-辅修班卷子:c03", + "data-structure-017:q-data-structure-017-q7:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c01", + "data-structure-019:p1:c01", + "data-structure-022:h-2025-a-辅修班卷子:c04", + "data-structure-024:p1:c01" + ] + }, + { + "case_id": "coverage-data_structure-synthesis", + "topic_id": "coverage-data_structure-synthesis", + "course_id": "data_structure", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《作业及分析》的“作业及分析”与《1》的“1”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "data-structure-023:h-作业及分析:c01", + "data-structure-024:p1:c01", + "data-structure-019:p1:c01", + "data-structure-024:p3:c01", + "data-structure-022:h-2025-a-辅修班卷子:c02", + "data-structure-024:p4:c01", + "data-structure-024:p5:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c03", + "data-structure-017:q-data-structure-017-q7:c01", + "data-structure-022:h-2025-a-辅修班卷子:c03", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c01", + "data-structure-024:p2:c01" + ], + "duration_ms": 26.458, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.5, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "data-structure-024:p1:c01", + "data-structure-019:p1:c01", + "data-structure-024:p3:c01", + "data-structure-022:h-2025-a-辅修班卷子:c02", + "data-structure-024:p4:c01", + "data-structure-024:p5:c01", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c02", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c03", + "data-structure-017:q-data-structure-017-q7:c01", + "data-structure-022:h-2025-a-辅修班卷子:c03", + "data-structure-001:h-关于二分双数组-冒泡排序算法的研究:c01", + "data-structure-024:p2:c01" + ] + }, + { + "case_id": "coverage-database-anchor", + "topic_id": "coverage-database-anchor", + "course_id": "database", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《数据库选填要点_oz》中“数据库选填要点oz”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "database-006:h-数据库选填要点_oz:c01", + "database-006:h-数据库选填要点_oz:c02", + "database-005:s46:c01", + "database-005:s36:c01", + "database-005:s14:c01", + "database-005:s24:c01", + "database-005:s49:c01", + "database-005:s27:c01", + "database-005:s26:c01", + "database-005:s23:c01", + "database-005:s33:c01", + "database-001:q-database-001-q45:c01", + "database-005:s28:c01", + "database-005:s40:c01", + "database-005:s41:c01", + "database-004:p5:q-database-004-q58:c01", + "database-005:s30:c01", + "database-005:s42:c01", + "database-004:p2:q-database-004-q20:c01", + "database-001:q-database-001-q14:c01" + ], + "duration_ms": 107.241, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "database-006:h-数据库选填要点_oz:c01", + "database-005:s46:c01", + "database-005:s36:c01", + "database-005:s14:c01", + "database-005:s24:c01", + "database-005:s49:c01", + "database-005:s27:c01", + "database-005:s26:c01", + "database-005:s23:c01", + "database-005:s33:c01", + "database-001:q-database-001-q45:c01", + "database-005:s28:c01", + "database-005:s40:c01", + "database-005:s41:c01", + "database-004:p5:q-database-004-q58:c01", + "database-005:s30:c01", + "database-005:s42:c01", + "database-004:p2:q-database-004-q20:c01", + "database-001:q-database-001-q14:c01" + ] + }, + { + "case_id": "coverage-database-condition", + "topic_id": "coverage-database-condition", + "course_id": "database", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“2012《数据库系统概论》A试卷”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "database-003:p6:q-database-003-q65:c01", + "database-001:q-database-001-q26:c01", + "database-003:p1:q-database-003-q4:c01", + "database-001:q-database-001-q7:c01", + "database-001:q-database-001-q34:c01", + "database-001:q-database-001-q21:c01", + "database-001:q-database-001-q35:c01", + "database-001:q-database-001-q31:c01", + "database-001:q-database-001-q20:c01", + "database-001:q-database-001-q10:c01", + "database-001:q-database-001-q9:c01", + "database-002:p3:q-database-002-q24:c01", + "database-001:q-database-001-q4:c01", + "database-001:h-2012-数据库系统概论-a试卷:c01", + "database-001:q-database-001-q28:c01", + "database-003:p4:q-database-003-q42:c01", + "database-001:q-database-001-q23:c01", + "database-003:p1:q-database-003-q7:c01", + "database-003:p1:q-database-003-q10:c01", + "database-003:p4:q-database-003-q39:c01" + ], + "duration_ms": 28.988, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.07142857142857142, + "unjudged_chunk_ids": [ + "database-003:p6:q-database-003-q65:c01", + "database-001:q-database-001-q26:c01", + "database-003:p1:q-database-003-q4:c01", + "database-001:q-database-001-q7:c01", + "database-001:q-database-001-q34:c01", + "database-001:q-database-001-q21:c01", + "database-001:q-database-001-q35:c01", + "database-001:q-database-001-q31:c01", + "database-001:q-database-001-q20:c01", + "database-001:q-database-001-q10:c01", + "database-001:q-database-001-q9:c01", + "database-002:p3:q-database-002-q24:c01", + "database-001:q-database-001-q4:c01", + "database-001:q-database-001-q28:c01", + "database-003:p4:q-database-003-q42:c01", + "database-001:q-database-001-q23:c01", + "database-003:p1:q-database-003-q7:c01", + "database-003:p1:q-database-003-q10:c01", + "database-003:p4:q-database-003-q39:c01" + ] + }, + { + "case_id": "coverage-database-synthesis", + "topic_id": "coverage-database-synthesis", + "course_id": "database", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《数据库选填要点_oz》的“数据库选填要点oz”与《期末复习总结》的“期末复习总结”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "database-006:h-数据库选填要点_oz:c02", + "database-006:h-数据库选填要点_oz:c01", + "database-005:s35:c01", + "database-005:s23:c01", + "database-005:s6:c01", + "database-005:s19:c01", + "database-005:s52:c01", + "database-005:s36:c01", + "database-005:s10:c01", + "database-005:s11:c01", + "database-005:s42:c01", + "database-005:s37:c01", + "database-005:s24:c01", + "database-005:s22:c01", + "database-005:s47:c01", + "database-005:s50:c01", + "database-005:s32:c01", + "database-005:s7:c01", + "database-005:s30:c01", + "database-005:s31:c01" + ], + "duration_ms": 27.373, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.5, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "database-006:h-数据库选填要点_oz:c01", + "database-005:s35:c01", + "database-005:s23:c01", + "database-005:s6:c01", + "database-005:s19:c01", + "database-005:s52:c01", + "database-005:s36:c01", + "database-005:s10:c01", + "database-005:s11:c01", + "database-005:s42:c01", + "database-005:s37:c01", + "database-005:s24:c01", + "database-005:s22:c01", + "database-005:s47:c01", + "database-005:s50:c01", + "database-005:s32:c01", + "database-005:s7:c01", + "database-005:s30:c01", + "database-005:s31:c01" + ] + }, + { + "case_id": "coverage-digital_logic-anchor", + "topic_id": "coverage-digital_logic-anchor", + "course_id": "digital_logic", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《数字逻辑作业》中“数字逻辑作业”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "digital-logic-001:h-数字逻辑作业:c03", + "digital-logic-001:h-数字逻辑作业:c02", + "digital-logic-001:h-数字逻辑作业:c01", + "digital-logic-003:q-digital-logic-003-q7:c01", + "digital-logic-002:q-digital-logic-002-q8:c01", + "digital-logic-003:q-digital-logic-003-q18:c01", + "digital-logic-002:q-digital-logic-002-q10:c01", + "digital-logic-002:q-digital-logic-002-q25:c01", + "digital-logic-003:q-digital-logic-003-q31:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c01", + "digital-logic-003:q-digital-logic-003-q5:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c05", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c04", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c02", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c03", + "digital-logic-005:p1:c01" + ], + "duration_ms": 40.312, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "digital-logic-001:h-数字逻辑作业:c03", + "digital-logic-001:h-数字逻辑作业:c01", + "digital-logic-003:q-digital-logic-003-q7:c01", + "digital-logic-002:q-digital-logic-002-q8:c01", + "digital-logic-003:q-digital-logic-003-q18:c01", + "digital-logic-002:q-digital-logic-002-q10:c01", + "digital-logic-002:q-digital-logic-002-q25:c01", + "digital-logic-003:q-digital-logic-003-q31:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c01", + "digital-logic-003:q-digital-logic-003-q5:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c05", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c04", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c02", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c03", + "digital-logic-005:p1:c01" + ] + }, + { + "case_id": "coverage-digital_logic-condition", + "topic_id": "coverage-digital_logic-condition", + "course_id": "digital_logic", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“计算机学院数字逻辑2024级复习大纲”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c02", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c04", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c03", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c06", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c05", + "digital-logic-002:h-2012级计算机学院数字逻辑试卷-a卷题目:c01", + "digital-logic-003:h-2012级计算机学院数字逻辑试卷-b卷题目:c01", + "digital-logic-003:q-digital-logic-003-q14:c01", + "digital-logic-002:q-digital-logic-002-q10:c01", + "digital-logic-002:q-digital-logic-002-q20:c01", + "digital-logic-003:q-digital-logic-003-q27:c01", + "digital-logic-003:q-digital-logic-003-q25:c01", + "digital-logic-002:q-digital-logic-002-q14:c01", + "digital-logic-002:q-digital-logic-002-q23:c01", + "digital-logic-003:q-digital-logic-003-q30:c01", + "digital-logic-003:q-digital-logic-003-q8:c01", + "digital-logic-002:q-digital-logic-002-q2:c01", + "digital-logic-002:q-digital-logic-002-q1:c01", + "digital-logic-003:q-digital-logic-003-q1:c01" + ], + "duration_ms": 13.777, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c01", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c04", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c03", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c06", + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c05", + "digital-logic-002:h-2012级计算机学院数字逻辑试卷-a卷题目:c01", + "digital-logic-003:h-2012级计算机学院数字逻辑试卷-b卷题目:c01", + "digital-logic-003:q-digital-logic-003-q14:c01", + "digital-logic-002:q-digital-logic-002-q10:c01", + "digital-logic-002:q-digital-logic-002-q20:c01", + "digital-logic-003:q-digital-logic-003-q27:c01", + "digital-logic-003:q-digital-logic-003-q25:c01", + "digital-logic-002:q-digital-logic-002-q14:c01", + "digital-logic-002:q-digital-logic-002-q23:c01", + "digital-logic-003:q-digital-logic-003-q30:c01", + "digital-logic-003:q-digital-logic-003-q8:c01", + "digital-logic-002:q-digital-logic-002-q2:c01", + "digital-logic-002:q-digital-logic-002-q1:c01", + "digital-logic-003:q-digital-logic-003-q1:c01" + ] + }, + { + "case_id": "coverage-digital_logic-synthesis", + "topic_id": "coverage-digital_logic-synthesis", + "course_id": "digital_logic", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《数字逻辑作业》的“数字逻辑作业”与《2012级计算机学院数字逻辑试卷 B卷题目》的“2012级计算机学院数字逻辑试卷 B卷题目”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "digital-logic-001:h-数字逻辑作业:c02", + "digital-logic-001:h-数字逻辑作业:c03", + "digital-logic-001:h-数字逻辑作业:c01", + "digital-logic-003:q-digital-logic-003-q9:c01", + "digital-logic-003:q-digital-logic-003-q24:c01", + "digital-logic-002:q-digital-logic-002-q2:c01", + "digital-logic-003:q-digital-logic-003-q16:c01", + "digital-logic-003:q-digital-logic-003-q1:c01", + "digital-logic-003:q-digital-logic-003-q18:c01", + "digital-logic-003:q-digital-logic-003-q17:c01", + "digital-logic-002:q-digital-logic-002-q17:c01", + "digital-logic-003:q-digital-logic-003-q2:c01", + "digital-logic-002:q-digital-logic-002-q10:c01", + "digital-logic-003:h-2012级计算机学院数字逻辑试卷-b卷题目:c01", + "digital-logic-002:q-digital-logic-002-q3:c01", + "digital-logic-003:q-digital-logic-003-q4:c01", + "digital-logic-003:q-digital-logic-003-q6:c01", + "digital-logic-003:q-digital-logic-003-q3:c01", + "digital-logic-003:q-digital-logic-003-q33:c01", + "digital-logic-003:q-digital-logic-003-q7:c01" + ], + "duration_ms": 13.172, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.5, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "digital-logic-001:h-数字逻辑作业:c03", + "digital-logic-001:h-数字逻辑作业:c01", + "digital-logic-003:q-digital-logic-003-q9:c01", + "digital-logic-003:q-digital-logic-003-q24:c01", + "digital-logic-002:q-digital-logic-002-q2:c01", + "digital-logic-003:q-digital-logic-003-q16:c01", + "digital-logic-003:q-digital-logic-003-q1:c01", + "digital-logic-003:q-digital-logic-003-q18:c01", + "digital-logic-003:q-digital-logic-003-q17:c01", + "digital-logic-002:q-digital-logic-002-q17:c01", + "digital-logic-002:q-digital-logic-002-q10:c01", + "digital-logic-003:h-2012级计算机学院数字逻辑试卷-b卷题目:c01", + "digital-logic-002:q-digital-logic-002-q3:c01", + "digital-logic-003:q-digital-logic-003-q4:c01", + "digital-logic-003:q-digital-logic-003-q6:c01", + "digital-logic-003:q-digital-logic-003-q3:c01", + "digital-logic-003:q-digital-logic-003-q33:c01", + "digital-logic-003:q-digital-logic-003-q7:c01" + ] + }, + { + "case_id": "coverage-digital_system_creative_design-anchor", + "topic_id": "coverage-digital_system_creative_design-anchor", + "course_id": "digital_system_creative_design", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《Mindspore口罩检测(yolov3)》中“Mindspore口罩检测(yolov3)”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c04", + "digital-system-creative-design-004:p2:c01", + "digital-system-creative-design-004:p13:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c03", + "digital-system-creative-design-004:p3:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c15", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c09", + "digital-system-creative-design-004:p1:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c02", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c06", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c08", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c07", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c05", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c14", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c11", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c10", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c12", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c13", + "digital-system-creative-design-004:p5:c01" + ], + "duration_ms": 68.963, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.0625, + "unjudged_chunk_ids": [ + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c04", + "digital-system-creative-design-004:p2:c01", + "digital-system-creative-design-004:p13:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c03", + "digital-system-creative-design-004:p3:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c15", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c09", + "digital-system-creative-design-004:p1:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c02", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c06", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c08", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c07", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c05", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c14", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c10", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c12", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c13", + "digital-system-creative-design-004:p5:c01" + ] + }, + { + "case_id": "coverage-digital_system_creative_design-condition", + "topic_id": "coverage-digital_system_creative_design-condition", + "course_id": "digital_system_creative_design", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“定义训练网络”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "digital-system-creative-design-004:p5:c01", + "digital-system-creative-design-004:p4:c02", + "digital-system-creative-design-004:p4:c03", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c04", + "digital-system-creative-design-004:p2:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c06", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c02", + "digital-system-creative-design-004:p13:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c01", + "digital-system-creative-design-005:p9:c01", + "digital-system-creative-design-511:h-readme_cn~口罩识别视频输入样例~常见错误:c01", + "digital-system-creative-design-511:h-readme_cn~口罩识别视频输入样例~前置条件:c01", + "digital-system-creative-design-004:p3:c03", + "digital-system-creative-design-004:p4:c01", + "digital-system-creative-design-004:p7:c01", + "digital-system-creative-design-005:p11:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c09", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c08", + "digital-system-creative-design-004:p3:c02", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c15" + ], + "duration_ms": 124.771, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "digital-system-creative-design-004:p5:c01", + "digital-system-creative-design-004:p4:c03", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c04", + "digital-system-creative-design-004:p2:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c06", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c02", + "digital-system-creative-design-004:p13:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c01", + "digital-system-creative-design-005:p9:c01", + "digital-system-creative-design-511:h-readme_cn~口罩识别视频输入样例~常见错误:c01", + "digital-system-creative-design-511:h-readme_cn~口罩识别视频输入样例~前置条件:c01", + "digital-system-creative-design-004:p3:c03", + "digital-system-creative-design-004:p4:c01", + "digital-system-creative-design-004:p7:c01", + "digital-system-creative-design-005:p11:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c09", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c08", + "digital-system-creative-design-004:p3:c02", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c15" + ] + }, + { + "case_id": "coverage-digital_system_creative_design-synthesis", + "topic_id": "coverage-digital_system_creative_design-synthesis", + "course_id": "digital_system_creative_design", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《Mindspore口罩检测(yolov3)》的“Mindspore口罩检测(yolov3)”与《昇腾MindSpore作业描述参考》的“昇腾MindSpore作业描述参考”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "digital-system-creative-design-005:p9:c01", + "digital-system-creative-design-005:p11:c01", + "digital-system-creative-design-005:p10:c01", + "digital-system-creative-design-005:p12:c01", + "digital-system-creative-design-005:p2:c01", + "digital-system-creative-design-005:p1:c01", + "digital-system-creative-design-005:p14:c01", + "digital-system-creative-design-005:p15:c01", + "digital-system-creative-design-005:p6:c01", + "digital-system-creative-design-005:p13:c01", + "digital-system-creative-design-005:p3:c01", + "digital-system-creative-design-005:p4:c01", + "digital-system-creative-design-005:p5:c01", + "digital-system-creative-design-005:p7:c01", + "digital-system-creative-design-005:p8:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c15", + "digital-system-creative-design-004:p1:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c03", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c01", + "digital-system-creative-design-004:p3:c01" + ], + "duration_ms": 24.772, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.16666666666666666, + "unjudged_chunk_ids": [ + "digital-system-creative-design-005:p9:c01", + "digital-system-creative-design-005:p11:c01", + "digital-system-creative-design-005:p10:c01", + "digital-system-creative-design-005:p12:c01", + "digital-system-creative-design-005:p2:c01", + "digital-system-creative-design-005:p14:c01", + "digital-system-creative-design-005:p15:c01", + "digital-system-creative-design-005:p6:c01", + "digital-system-creative-design-005:p13:c01", + "digital-system-creative-design-005:p3:c01", + "digital-system-creative-design-005:p4:c01", + "digital-system-creative-design-005:p5:c01", + "digital-system-creative-design-005:p7:c01", + "digital-system-creative-design-005:p8:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c15", + "digital-system-creative-design-004:p1:c01", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c03", + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c01", + "digital-system-creative-design-004:p3:c01" + ] + }, + { + "case_id": "coverage-discrete_mathematics-anchor", + "topic_id": "coverage-discrete_mathematics-anchor", + "course_id": "discrete_mathematics", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《机试》中“机试”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "discrete-mathematics-006:p3:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-006:p5:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-003:p7:q-discrete-mathematics-003-q34:c01", + "discrete-mathematics-003:p3:q-discrete-mathematics-003-q8:c01" + ], + "duration_ms": 26.6, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "discrete-mathematics-006:p3:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-006:p5:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-003:p7:q-discrete-mathematics-003-q34:c01", + "discrete-mathematics-003:p3:q-discrete-mathematics-003-q8:c01" + ] + }, + { + "case_id": "coverage-discrete_mathematics-condition", + "topic_id": "coverage-discrete_mathematics-condition", + "course_id": "discrete_mathematics", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“离散数学试卷(中文)答案”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "discrete-mathematics-007:q-discrete-mathematics-007-q9:c02", + "discrete-mathematics-007:q-discrete-mathematics-007-q4:c01", + "discrete-mathematics-003:p7:q-discrete-mathematics-003-q33:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q9:c04", + "discrete-mathematics-003:p3:q-discrete-mathematics-003-q13:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q14:c01", + "discrete-mathematics-003:p3:q-discrete-mathematics-003-q9:c01", + "discrete-mathematics-007:h-离散数学试卷-中文-答案:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q19:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q1:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q2:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q3:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q5:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q6:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q7:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q8:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q9:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q9:c03", + "discrete-mathematics-003:p3:q-discrete-mathematics-003-q1:c01", + "discrete-mathematics-003:p3:q-discrete-mathematics-003-q8:c01" + ], + "duration_ms": 10.478, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.25, + "unjudged_chunk_ids": [ + "discrete-mathematics-007:q-discrete-mathematics-007-q9:c02", + "discrete-mathematics-007:q-discrete-mathematics-007-q4:c01", + "discrete-mathematics-003:p7:q-discrete-mathematics-003-q33:c01", + "discrete-mathematics-003:p3:q-discrete-mathematics-003-q13:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q14:c01", + "discrete-mathematics-003:p3:q-discrete-mathematics-003-q9:c01", + "discrete-mathematics-007:h-离散数学试卷-中文-答案:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q19:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q1:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q2:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q3:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q5:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q6:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q7:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q8:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q9:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q9:c03", + "discrete-mathematics-003:p3:q-discrete-mathematics-003-q1:c01", + "discrete-mathematics-003:p3:q-discrete-mathematics-003-q8:c01" + ] + }, + { + "case_id": "coverage-discrete_mathematics-synthesis", + "topic_id": "coverage-discrete_mathematics-synthesis", + "course_id": "discrete_mathematics", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《机试》的“机试”与《机试》的“机试”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "discrete-mathematics-003:p3:q-discrete-mathematics-003-q7:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q9:c02", + "discrete-mathematics-006:p2:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-005:p2:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-006:p3:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-005:p5:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-003:p7:q-discrete-mathematics-003-q33:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q4:c01", + "discrete-mathematics-005:p7:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-006:p7:q-discrete-mathematics-006-q5:c01", + "discrete-mathematics-003:p7:q-discrete-mathematics-003-q32:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q9:c04", + "discrete-mathematics-006:p5:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-006:p4:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q20:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q15:c01", + "discrete-mathematics-003:p8:q-discrete-mathematics-003-q36:c01" + ], + "duration_ms": 9.033, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.16666666666666666, + "unjudged_chunk_ids": [ + "discrete-mathematics-003:p3:q-discrete-mathematics-003-q7:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q9:c02", + "discrete-mathematics-006:p2:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-005:p2:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-006:p3:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-003:p7:q-discrete-mathematics-003-q33:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q4:c01", + "discrete-mathematics-005:p7:q-discrete-mathematics-005-q4:c01", + "discrete-mathematics-006:p7:q-discrete-mathematics-006-q5:c01", + "discrete-mathematics-003:p7:q-discrete-mathematics-003-q32:c01", + "discrete-mathematics-007:q-discrete-mathematics-007-q9:c04", + "discrete-mathematics-006:p5:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-006:p4:q-discrete-mathematics-006-q4:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q20:c01", + "discrete-mathematics-003:p4:q-discrete-mathematics-003-q15:c01", + "discrete-mathematics-003:p8:q-discrete-mathematics-003-q36:c01" + ] + }, + { + "case_id": "coverage-electrical_engineering-anchor", + "topic_id": "coverage-electrical_engineering-anchor", + "course_id": "electrical_engineering", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《电路与电子技术 复习大纲》中“电路与电子技术 复习大纲”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "electrical-engineering-009:h-电路与电子技术-复习大纲:c01", + "electrical-engineering-009:h-电路与电子技术-复习大纲:c02", + "electrical-engineering-008:p1:c01", + "electrical-engineering-008:p3:c01", + "electrical-engineering-008:p2:c01", + "electrical-engineering-008:p4:c01", + "electrical-engineering-008:p5:c01", + "electrical-engineering-001:p1:c01", + "electrical-engineering-001:p2:c01", + "electrical-engineering-001:p3:c01", + "electrical-engineering-001:p4:c01", + "electrical-engineering-001:p5:c01", + "electrical-engineering-001:p6:c01", + "electrical-engineering-001:p7:c01" + ], + "duration_ms": 21.774, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "electrical-engineering-009:h-电路与电子技术-复习大纲:c02", + "electrical-engineering-008:p1:c01", + "electrical-engineering-008:p3:c01", + "electrical-engineering-008:p2:c01", + "electrical-engineering-008:p4:c01", + "electrical-engineering-008:p5:c01", + "electrical-engineering-001:p1:c01", + "electrical-engineering-001:p2:c01", + "electrical-engineering-001:p3:c01", + "electrical-engineering-001:p4:c01", + "electrical-engineering-001:p5:c01", + "electrical-engineering-001:p6:c01", + "electrical-engineering-001:p7:c01" + ] + }, + { + "case_id": "coverage-electrical_engineering-condition", + "topic_id": "coverage-electrical_engineering-condition", + "course_id": "electrical_engineering", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“电工与电子技术II 复习大纲 修改”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "electrical-engineering-008:p1:c01", + "electrical-engineering-008:p3:c01", + "electrical-engineering-008:p2:c01", + "electrical-engineering-008:p4:c01", + "electrical-engineering-008:p5:c01", + "electrical-engineering-009:h-电路与电子技术-复习大纲:c01", + "electrical-engineering-009:h-电路与电子技术-复习大纲:c02", + "electrical-engineering-001:p1:c01", + "electrical-engineering-001:p2:c01", + "electrical-engineering-001:p3:c01", + "electrical-engineering-001:p4:c01", + "electrical-engineering-001:p5:c01", + "electrical-engineering-001:p6:c01", + "electrical-engineering-001:p7:c01", + "electrical-engineering-004:h-2022级电工回忆版:c01", + "electrical-engineering-003:p1:c01", + "electrical-engineering-003:p2:c01", + "electrical-engineering-005:p1:c01", + "electrical-engineering-005:p2:c01", + "electrical-engineering-005:p3:c01" + ], + "duration_ms": 7.566, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "electrical-engineering-008:p1:c01", + "electrical-engineering-008:p3:c01", + "electrical-engineering-008:p4:c01", + "electrical-engineering-008:p5:c01", + "electrical-engineering-009:h-电路与电子技术-复习大纲:c01", + "electrical-engineering-009:h-电路与电子技术-复习大纲:c02", + "electrical-engineering-001:p1:c01", + "electrical-engineering-001:p2:c01", + "electrical-engineering-001:p3:c01", + "electrical-engineering-001:p4:c01", + "electrical-engineering-001:p5:c01", + "electrical-engineering-001:p6:c01", + "electrical-engineering-001:p7:c01", + "electrical-engineering-004:h-2022级电工回忆版:c01", + "electrical-engineering-003:p1:c01", + "electrical-engineering-003:p2:c01", + "electrical-engineering-005:p1:c01", + "electrical-engineering-005:p2:c01", + "electrical-engineering-005:p3:c01" + ] + }, + { + "case_id": "coverage-electrical_engineering-synthesis", + "topic_id": "coverage-electrical_engineering-synthesis", + "course_id": "electrical_engineering", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《电路与电子技术 复习大纲》的“电路与电子技术 复习大纲”与《2020电工学a卷》的“NI”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "electrical-engineering-009:h-电路与电子技术-复习大纲:c01", + "electrical-engineering-009:h-电路与电子技术-复习大纲:c02", + "electrical-engineering-008:p3:c01", + "electrical-engineering-008:p1:c01", + "electrical-engineering-008:p2:c01", + "electrical-engineering-008:p4:c01", + "electrical-engineering-008:p5:c01", + "electrical-engineering-003:p1:c01", + "electrical-engineering-003:p2:c01", + "electrical-engineering-003:p5:c01", + "electrical-engineering-003:p2:c02", + "electrical-engineering-003:p4:c01", + "electrical-engineering-003:p3:c01", + "electrical-engineering-003:p4:c02", + "electrical-engineering-005:p2:c01", + "electrical-engineering-005:p1:c01", + "electrical-engineering-005:p5:c01", + "electrical-engineering-005:p4:c01", + "electrical-engineering-005:p3:c01", + "electrical-engineering-001:p1:c01" + ], + "duration_ms": 7.618, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.5, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "electrical-engineering-009:h-电路与电子技术-复习大纲:c02", + "electrical-engineering-008:p3:c01", + "electrical-engineering-008:p1:c01", + "electrical-engineering-008:p2:c01", + "electrical-engineering-008:p4:c01", + "electrical-engineering-008:p5:c01", + "electrical-engineering-003:p1:c01", + "electrical-engineering-003:p2:c01", + "electrical-engineering-003:p5:c01", + "electrical-engineering-003:p2:c02", + "electrical-engineering-003:p3:c01", + "electrical-engineering-003:p4:c02", + "electrical-engineering-005:p2:c01", + "electrical-engineering-005:p1:c01", + "electrical-engineering-005:p5:c01", + "electrical-engineering-005:p4:c01", + "electrical-engineering-005:p3:c01", + "electrical-engineering-001:p1:c01" + ] + }, + { + "case_id": "coverage-electrical_engineering_lab-visual-availability", + "topic_id": "coverage-electrical_engineering_lab-visual-availability", + "course_id": "electrical_engineering_lab", + "scenario": "evidence_boundary", + "split": "coverage", + "difficulty": "medium", + "query": "请定位 electrical_engineering_lab 课程资料中与当前问题最相关的原始页面;如果只有图片或无法读出的公式,请明确说明文本证据不足,不要猜测内容。", + "top_chunk_ids": [ + "electrical-engineering-lab-002:h-微信图片_20250301151417:c01" + ], + "duration_ms": 5.74, + "scoring_status": "evidence_boundary_unscored", + "known_evidence_coverage_at_5": null, + "known_evidence_coverage_at_20": null, + "all_evidence_groups_at_5": null, + "all_evidence_groups_at_20": null, + "known_positive_mrr": null, + "unjudged_chunk_ids": [ + "electrical-engineering-lab-002:h-微信图片_20250301151417:c01" + ] + }, + { + "case_id": "coverage-electrical_engineering_lab-visual-no-fabrication", + "topic_id": "coverage-electrical_engineering_lab-visual-no-fabrication", + "course_id": "electrical_engineering_lab", + "scenario": "evidence_boundary", + "split": "coverage", + "difficulty": "hard", + "query": "仅根据 electrical_engineering_lab 当前可检索文本,判断能否可靠讲解一个具体题目。请区分“文件存在”“图片存在”和“题干/公式已被文本化”。", + "top_chunk_ids": [ + "electrical-engineering-lab-002:h-微信图片_20250301151417:c01" + ], + "duration_ms": 5.083, + "scoring_status": "evidence_boundary_unscored", + "known_evidence_coverage_at_5": null, + "known_evidence_coverage_at_20": null, + "all_evidence_groups_at_5": null, + "all_evidence_groups_at_20": null, + "known_positive_mrr": null, + "unjudged_chunk_ids": [ + "electrical-engineering-lab-002:h-微信图片_20250301151417:c01" + ] + }, + { + "case_id": "coverage-embedded_systems-anchor", + "topic_id": "coverage-embedded_systems-anchor", + "course_id": "embedded_systems", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《嵌入式期末真题回忆版有答案》中“嵌入式期末真题回忆版有答案”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "embedded-systems-018:p9:q-embedded-systems-018-q56:c01", + "embedded-systems-018:p3:q-embedded-systems-018-q19:c01", + "embedded-systems-018:p4:q-embedded-systems-018-q25:c01", + "embedded-systems-018:p9:q-embedded-systems-018-q39:c01", + "embedded-systems-018:p2:q-embedded-systems-018-q5:c01", + "embedded-systems-018:p1:c01", + "embedded-systems-018:p4:q-embedded-systems-018-q19:c01", + "embedded-systems-018:p5:q-embedded-systems-018-q32:c01", + "embedded-systems-018:p6:q-embedded-systems-018-q39:c01", + "embedded-systems-018:p9:q-embedded-systems-018-q44:c01", + "embedded-systems-018:p6:q-embedded-systems-018-q36:c01", + "embedded-systems-018:p3:q-embedded-systems-018-q11:c01", + "embedded-systems-018:p5:q-embedded-systems-018-q25:c01", + "embedded-systems-018:p9:q-embedded-systems-018-q42:c01", + "embedded-systems-018:p9:q-embedded-systems-018-q51:c01", + "embedded-systems-018:p9:q-embedded-systems-018-q62:c01", + "embedded-systems-018:p5:q-embedded-systems-018-q27:c01", + "embedded-systems-018:p2:q-embedded-systems-018-q6:c01", + "embedded-systems-018:p1:q-embedded-systems-018-q4:c01", + "embedded-systems-018:p3:q-embedded-systems-018-q14:c01" + ], + "duration_ms": 352.592, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "embedded-systems-018:p9:q-embedded-systems-018-q56:c01", + "embedded-systems-018:p3:q-embedded-systems-018-q19:c01", + "embedded-systems-018:p4:q-embedded-systems-018-q25:c01", + "embedded-systems-018:p9:q-embedded-systems-018-q39:c01", + "embedded-systems-018:p2:q-embedded-systems-018-q5:c01", + "embedded-systems-018:p1:c01", + "embedded-systems-018:p4:q-embedded-systems-018-q19:c01", + "embedded-systems-018:p5:q-embedded-systems-018-q32:c01", + "embedded-systems-018:p6:q-embedded-systems-018-q39:c01", + "embedded-systems-018:p9:q-embedded-systems-018-q44:c01", + "embedded-systems-018:p6:q-embedded-systems-018-q36:c01", + "embedded-systems-018:p3:q-embedded-systems-018-q11:c01", + "embedded-systems-018:p5:q-embedded-systems-018-q25:c01", + "embedded-systems-018:p9:q-embedded-systems-018-q42:c01", + "embedded-systems-018:p9:q-embedded-systems-018-q51:c01", + "embedded-systems-018:p9:q-embedded-systems-018-q62:c01", + "embedded-systems-018:p5:q-embedded-systems-018-q27:c01", + "embedded-systems-018:p2:q-embedded-systems-018-q6:c01", + "embedded-systems-018:p1:q-embedded-systems-018-q4:c01", + "embedded-systems-018:p3:q-embedded-systems-018-q14:c01" + ] + }, + { + "case_id": "coverage-embedded_systems-condition", + "topic_id": "coverage-embedded_systems-condition", + "course_id": "embedded_systems", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“嵌入式期末真题回忆版无答案”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "embedded-systems-017:p2:q-embedded-systems-017-q22:c01", + "embedded-systems-017:p1:q-embedded-systems-017-q1:c01", + "embedded-systems-017:p2:q-embedded-systems-017-q9:c01", + "embedded-systems-017:p2:q-embedded-systems-017-q11:c01", + "embedded-systems-017:p2:q-embedded-systems-017-q14:c01", + "embedded-systems-017:p2:q-embedded-systems-017-q7:c01", + "embedded-systems-017:p2:q-embedded-systems-017-q6:c01", + "embedded-systems-017:p3:q-embedded-systems-017-q24:c01", + "embedded-systems-017:p1:c01", + "embedded-systems-017:p2:q-embedded-systems-017-q24:c01", + "embedded-systems-017:p4:q-embedded-systems-017-q39:c01", + "embedded-systems-017:p4:q-embedded-systems-017-q39:c02", + "embedded-systems-017:p3:q-embedded-systems-017-q39:c01", + "embedded-systems-017:p1:q-embedded-systems-017-q6:c01", + "embedded-systems-017:p1:q-embedded-systems-017-q2:c01", + "embedded-systems-017:p3:q-embedded-systems-017-q25:c01", + "embedded-systems-017:p1:q-embedded-systems-017-q3:c01", + "embedded-systems-017:p1:q-embedded-systems-017-q4:c01", + "embedded-systems-017:p1:q-embedded-systems-017-q5:c01", + "embedded-systems-017:p2:q-embedded-systems-017-q10:c01" + ], + "duration_ms": 65.572, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.09090909090909091, + "unjudged_chunk_ids": [ + "embedded-systems-017:p2:q-embedded-systems-017-q22:c01", + "embedded-systems-017:p1:q-embedded-systems-017-q1:c01", + "embedded-systems-017:p2:q-embedded-systems-017-q9:c01", + "embedded-systems-017:p2:q-embedded-systems-017-q11:c01", + "embedded-systems-017:p2:q-embedded-systems-017-q14:c01", + "embedded-systems-017:p2:q-embedded-systems-017-q7:c01", + "embedded-systems-017:p2:q-embedded-systems-017-q6:c01", + "embedded-systems-017:p3:q-embedded-systems-017-q24:c01", + "embedded-systems-017:p1:c01", + "embedded-systems-017:p2:q-embedded-systems-017-q24:c01", + "embedded-systems-017:p4:q-embedded-systems-017-q39:c02", + "embedded-systems-017:p3:q-embedded-systems-017-q39:c01", + "embedded-systems-017:p1:q-embedded-systems-017-q6:c01", + "embedded-systems-017:p1:q-embedded-systems-017-q2:c01", + "embedded-systems-017:p3:q-embedded-systems-017-q25:c01", + "embedded-systems-017:p1:q-embedded-systems-017-q3:c01", + "embedded-systems-017:p1:q-embedded-systems-017-q4:c01", + "embedded-systems-017:p1:q-embedded-systems-017-q5:c01", + "embedded-systems-017:p2:q-embedded-systems-017-q10:c01" + ] + }, + { + "case_id": "coverage-embedded_systems-synthesis", + "topic_id": "coverage-embedded_systems-synthesis", + "course_id": "embedded_systems", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《嵌入式期末真题回忆版有答案》的“嵌入式期末真题回忆版有答案”与《作业内容-2025》的“作业内容-2025”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "embedded-systems-018:p4:q-embedded-systems-018-q21:c01", + "embedded-systems-018:p1:c01", + "embedded-systems-018:p9:q-embedded-systems-018-q57:c01", + "embedded-systems-018:p4:q-embedded-systems-018-q19:c01", + "embedded-systems-018:p9:q-embedded-systems-018-q47:c01", + "embedded-systems-018:p9:q-embedded-systems-018-q56:c01", + "embedded-systems-018:p3:q-embedded-systems-018-q19:c01", + "embedded-systems-018:p3:q-embedded-systems-018-q11:c01", + "embedded-systems-018:p5:q-embedded-systems-018-q25:c01", + "embedded-systems-018:p2:q-embedded-systems-018-q9:c01", + "embedded-systems-018:p9:q-embedded-systems-018-q39:c01", + "embedded-systems-018:p3:q-embedded-systems-018-q16:c01", + "embedded-systems-018:p2:q-embedded-systems-018-q7:c01", + "embedded-systems-018:p9:q-embedded-systems-018-q62:c01", + "embedded-systems-018:p2:q-embedded-systems-018-q5:c01", + "embedded-systems-018:p5:q-embedded-systems-018-q27:c01", + "embedded-systems-018:p3:q-embedded-systems-018-q14:c01", + "embedded-systems-018:p8:q-embedded-systems-018-q39:c01", + "embedded-systems-018:p5:q-embedded-systems-018-q32:c01", + "embedded-systems-018:p7:q-embedded-systems-018-q39:c01" + ], + "duration_ms": 63.495, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.05555555555555555, + "unjudged_chunk_ids": [ + "embedded-systems-018:p4:q-embedded-systems-018-q21:c01", + "embedded-systems-018:p1:c01", + "embedded-systems-018:p9:q-embedded-systems-018-q57:c01", + "embedded-systems-018:p4:q-embedded-systems-018-q19:c01", + "embedded-systems-018:p9:q-embedded-systems-018-q47:c01", + "embedded-systems-018:p9:q-embedded-systems-018-q56:c01", + "embedded-systems-018:p3:q-embedded-systems-018-q19:c01", + "embedded-systems-018:p3:q-embedded-systems-018-q11:c01", + "embedded-systems-018:p5:q-embedded-systems-018-q25:c01", + "embedded-systems-018:p2:q-embedded-systems-018-q9:c01", + "embedded-systems-018:p9:q-embedded-systems-018-q39:c01", + "embedded-systems-018:p3:q-embedded-systems-018-q16:c01", + "embedded-systems-018:p2:q-embedded-systems-018-q7:c01", + "embedded-systems-018:p9:q-embedded-systems-018-q62:c01", + "embedded-systems-018:p2:q-embedded-systems-018-q5:c01", + "embedded-systems-018:p5:q-embedded-systems-018-q27:c01", + "embedded-systems-018:p3:q-embedded-systems-018-q14:c01", + "embedded-systems-018:p5:q-embedded-systems-018-q32:c01", + "embedded-systems-018:p7:q-embedded-systems-018-q39:c01" + ] + }, + { + "case_id": "coverage-engineering_math_analysis_1-anchor", + "topic_id": "coverage-engineering_math_analysis_1-anchor", + "course_id": "engineering_math_analysis_1", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《2022A解答》中“2022A解答”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "engineering-mathematical-analysis-1-021:p5:q-engineering-mathematical-analysis-1-021-q13:c01", + "engineering-mathematical-analysis-1-021:p6:q-engineering-mathematical-analysis-1-021-q18:c01", + "engineering-mathematical-analysis-1-021:p1:q-engineering-mathematical-analysis-1-021-q2:c01", + "engineering-mathematical-analysis-1-021:p6:q-engineering-mathematical-analysis-1-021-q17:c01", + "engineering-mathematical-analysis-1-021:p4:q-engineering-mathematical-analysis-1-021-q12:c01", + "engineering-mathematical-analysis-1-021:p5:q-engineering-mathematical-analysis-1-021-q14:c01", + "engineering-mathematical-analysis-1-021:p3:q-engineering-mathematical-analysis-1-021-q8:c01", + "engineering-mathematical-analysis-1-021:p1:c01", + "engineering-mathematical-analysis-1-021:p1:q-engineering-mathematical-analysis-1-021-q1:c01", + "engineering-mathematical-analysis-1-021:p1:q-engineering-mathematical-analysis-1-021-q3:c01", + "engineering-mathematical-analysis-1-021:p1:q-engineering-mathematical-analysis-1-021-q4:c01", + "engineering-mathematical-analysis-1-021:p1:q-engineering-mathematical-analysis-1-021-q5:c01", + "engineering-mathematical-analysis-1-021:p1:q-engineering-mathematical-analysis-1-021-q6:c01", + "engineering-mathematical-analysis-1-021:p1:q-engineering-mathematical-analysis-1-021-q7:c01", + "engineering-mathematical-analysis-1-021:p2:q-engineering-mathematical-analysis-1-021-q7:c01", + "engineering-mathematical-analysis-1-021:p3:q-engineering-mathematical-analysis-1-021-q10:c01", + "engineering-mathematical-analysis-1-021:p3:q-engineering-mathematical-analysis-1-021-q11:c01", + "engineering-mathematical-analysis-1-021:p3:q-engineering-mathematical-analysis-1-021-q7:c01", + "engineering-mathematical-analysis-1-021:p3:q-engineering-mathematical-analysis-1-021-q9:c01", + "engineering-mathematical-analysis-1-021:p4:q-engineering-mathematical-analysis-1-021-q11:c01" + ], + "duration_ms": 104.828, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.06666666666666667, + "unjudged_chunk_ids": [ + "engineering-mathematical-analysis-1-021:p5:q-engineering-mathematical-analysis-1-021-q13:c01", + "engineering-mathematical-analysis-1-021:p6:q-engineering-mathematical-analysis-1-021-q18:c01", + "engineering-mathematical-analysis-1-021:p1:q-engineering-mathematical-analysis-1-021-q2:c01", + "engineering-mathematical-analysis-1-021:p6:q-engineering-mathematical-analysis-1-021-q17:c01", + "engineering-mathematical-analysis-1-021:p4:q-engineering-mathematical-analysis-1-021-q12:c01", + "engineering-mathematical-analysis-1-021:p5:q-engineering-mathematical-analysis-1-021-q14:c01", + "engineering-mathematical-analysis-1-021:p3:q-engineering-mathematical-analysis-1-021-q8:c01", + "engineering-mathematical-analysis-1-021:p1:c01", + "engineering-mathematical-analysis-1-021:p1:q-engineering-mathematical-analysis-1-021-q1:c01", + "engineering-mathematical-analysis-1-021:p1:q-engineering-mathematical-analysis-1-021-q3:c01", + "engineering-mathematical-analysis-1-021:p1:q-engineering-mathematical-analysis-1-021-q4:c01", + "engineering-mathematical-analysis-1-021:p1:q-engineering-mathematical-analysis-1-021-q5:c01", + "engineering-mathematical-analysis-1-021:p1:q-engineering-mathematical-analysis-1-021-q6:c01", + "engineering-mathematical-analysis-1-021:p1:q-engineering-mathematical-analysis-1-021-q7:c01", + "engineering-mathematical-analysis-1-021:p3:q-engineering-mathematical-analysis-1-021-q10:c01", + "engineering-mathematical-analysis-1-021:p3:q-engineering-mathematical-analysis-1-021-q11:c01", + "engineering-mathematical-analysis-1-021:p3:q-engineering-mathematical-analysis-1-021-q7:c01", + "engineering-mathematical-analysis-1-021:p3:q-engineering-mathematical-analysis-1-021-q9:c01", + "engineering-mathematical-analysis-1-021:p4:q-engineering-mathematical-analysis-1-021-q11:c01" + ] + }, + { + "case_id": "coverage-engineering_math_analysis_1-condition", + "topic_id": "coverage-engineering_math_analysis_1-condition", + "course_id": "engineering_math_analysis_1", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“2017软件工科数学分析上A卷及答案”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "engineering-mathematical-analysis-1-011:p7:q-engineering-mathematical-analysis-1-011-q18:c01", + "engineering-mathematical-analysis-1-011:p8:q-engineering-mathematical-analysis-1-011-q19:c01", + "engineering-mathematical-analysis-1-011:p4:q-engineering-mathematical-analysis-1-011-q12:c01", + "engineering-mathematical-analysis-1-011:p3:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q10:c01", + "engineering-mathematical-analysis-1-011:p5:q-engineering-mathematical-analysis-1-011-q14:c01", + "engineering-mathematical-analysis-1-011:p6:q-engineering-mathematical-analysis-1-011-q16:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q2:c01", + "engineering-mathematical-analysis-1-011:p6:q-engineering-mathematical-analysis-1-011-q17:c01", + "engineering-mathematical-analysis-1-011:p6:q-engineering-mathematical-analysis-1-011-q15:c01", + "engineering-mathematical-analysis-1-011:p5:q-engineering-mathematical-analysis-1-011-q15:c01", + "engineering-mathematical-analysis-1-011:p1:c01", + "engineering-mathematical-analysis-1-011:p2:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q1:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q3:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q4:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q5:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q6:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q7:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q8:c01" + ], + "duration_ms": 45.806, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "engineering-mathematical-analysis-1-011:p8:q-engineering-mathematical-analysis-1-011-q19:c01", + "engineering-mathematical-analysis-1-011:p4:q-engineering-mathematical-analysis-1-011-q12:c01", + "engineering-mathematical-analysis-1-011:p3:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q10:c01", + "engineering-mathematical-analysis-1-011:p5:q-engineering-mathematical-analysis-1-011-q14:c01", + "engineering-mathematical-analysis-1-011:p6:q-engineering-mathematical-analysis-1-011-q16:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q2:c01", + "engineering-mathematical-analysis-1-011:p6:q-engineering-mathematical-analysis-1-011-q17:c01", + "engineering-mathematical-analysis-1-011:p6:q-engineering-mathematical-analysis-1-011-q15:c01", + "engineering-mathematical-analysis-1-011:p5:q-engineering-mathematical-analysis-1-011-q15:c01", + "engineering-mathematical-analysis-1-011:p1:c01", + "engineering-mathematical-analysis-1-011:p2:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q1:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q3:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q4:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q5:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q6:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q7:c01", + "engineering-mathematical-analysis-1-011:p3:q-engineering-mathematical-analysis-1-011-q8:c01" + ] + }, + { + "case_id": "coverage-engineering_math_analysis_1-synthesis", + "topic_id": "coverage-engineering_math_analysis_1-synthesis", + "course_id": "engineering_math_analysis_1", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《2022A解答》的“2022A解答”与《2018软件工科数学分析上B卷及答案》的“2018软件工科数学分析上B卷及答案”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "engineering-mathematical-analysis-1-015:p3:q-engineering-mathematical-analysis-1-015-q12:c01", + "engineering-mathematical-analysis-1-014:p7:q-engineering-mathematical-analysis-1-014-q18:c01", + "engineering-mathematical-analysis-1-014:p5:q-engineering-mathematical-analysis-1-014-q12:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q7:c01", + "engineering-mathematical-analysis-1-015:p1:c01", + "engineering-mathematical-analysis-1-015:p5:q-engineering-mathematical-analysis-1-015-q21:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q11:c01", + "engineering-mathematical-analysis-1-015:p3:q-engineering-mathematical-analysis-1-015-q16:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q1:c01", + "engineering-mathematical-analysis-1-015:p5:q-engineering-mathematical-analysis-1-015-q20:c01", + "engineering-mathematical-analysis-1-015:p4:q-engineering-mathematical-analysis-1-015-q17:c01", + "engineering-mathematical-analysis-1-015:p2:q-engineering-mathematical-analysis-1-015-q11:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q10:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q2:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q3:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q4:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q5:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q6:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q8:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q9:c01" + ], + "duration_ms": 44.291, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.08333333333333333, + "unjudged_chunk_ids": [ + "engineering-mathematical-analysis-1-015:p3:q-engineering-mathematical-analysis-1-015-q12:c01", + "engineering-mathematical-analysis-1-014:p7:q-engineering-mathematical-analysis-1-014-q18:c01", + "engineering-mathematical-analysis-1-014:p5:q-engineering-mathematical-analysis-1-014-q12:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q7:c01", + "engineering-mathematical-analysis-1-015:p1:c01", + "engineering-mathematical-analysis-1-015:p5:q-engineering-mathematical-analysis-1-015-q21:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q11:c01", + "engineering-mathematical-analysis-1-015:p3:q-engineering-mathematical-analysis-1-015-q16:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q1:c01", + "engineering-mathematical-analysis-1-015:p5:q-engineering-mathematical-analysis-1-015-q20:c01", + "engineering-mathematical-analysis-1-015:p4:q-engineering-mathematical-analysis-1-015-q17:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q10:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q2:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q3:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q4:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q5:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q6:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q8:c01", + "engineering-mathematical-analysis-1-015:p1:q-engineering-mathematical-analysis-1-015-q9:c01" + ] + }, + { + "case_id": "coverage-engineering_math_analysis_2-anchor", + "topic_id": "coverage-engineering_math_analysis_2-anchor", + "course_id": "engineering_math_analysis_2", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《2013级软件 工科数学分析下A附解答》中“2013级软件 工科数学分析下A附解答”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q6:c02", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q3:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q3:c02", + "engineering-mathematical-analysis-2-017:h-2013级软件-工科数学分析下a附解答:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q1:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q6:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q1:c02", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q2:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q3:c03", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q4:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q5:c01", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c04", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c01", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c02", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c03", + "engineering-mathematical-analysis-2-018:h-2013级软件-工科数学分析下b:c01", + "engineering-mathematical-analysis-2-018:h-2013级软件-工科数学分析下b:c02", + "engineering-mathematical-analysis-2-018:h-2013级软件-工科数学分析下b:c03", + "engineering-mathematical-analysis-2-033:q-engineering-mathematical-analysis-2-033-q2:c02", + "engineering-mathematical-analysis-2-019:h-2014级软件-工科数学分析下a:c02" + ], + "duration_ms": 380.241, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.16666666666666666, + "unjudged_chunk_ids": [ + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q6:c02", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q3:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q3:c02", + "engineering-mathematical-analysis-2-017:h-2013级软件-工科数学分析下a附解答:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q1:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q1:c02", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q2:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q3:c03", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q4:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q5:c01", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c04", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c01", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c02", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c03", + "engineering-mathematical-analysis-2-018:h-2013级软件-工科数学分析下b:c01", + "engineering-mathematical-analysis-2-018:h-2013级软件-工科数学分析下b:c02", + "engineering-mathematical-analysis-2-018:h-2013级软件-工科数学分析下b:c03", + "engineering-mathematical-analysis-2-033:q-engineering-mathematical-analysis-2-033-q2:c02", + "engineering-mathematical-analysis-2-019:h-2014级软件-工科数学分析下a:c02" + ] + }, + { + "case_id": "coverage-engineering_math_analysis_2-condition", + "topic_id": "coverage-engineering_math_analysis_2-condition", + "course_id": "engineering_math_analysis_2", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“2019级 工科数学分析(二)A答案”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "engineering-mathematical-analysis-2-036:h-2019级-工科数学分析-二-b-补考用:c02", + "engineering-mathematical-analysis-2-035:p1:q-engineering-mathematical-analysis-2-035-q1:c01", + "engineering-mathematical-analysis-2-035:p1:c01", + "engineering-mathematical-analysis-2-034:h-2019级-工科数学分析-二-a答案:c01", + "engineering-mathematical-analysis-2-035:p3:q-engineering-mathematical-analysis-2-035-q3:c01", + "engineering-mathematical-analysis-2-035:p1:q-engineering-mathematical-analysis-2-035-q3:c01", + "engineering-mathematical-analysis-2-035:p3:q-engineering-mathematical-analysis-2-035-q3:c02", + "engineering-mathematical-analysis-2-035:p2:q-engineering-mathematical-analysis-2-035-q3:c02", + "engineering-mathematical-analysis-2-035:p6:q-engineering-mathematical-analysis-2-035-q3:c01", + "engineering-mathematical-analysis-2-034:h-2019级-工科数学分析-二-a答案:c03", + "engineering-mathematical-analysis-2-035:p4:q-engineering-mathematical-analysis-2-035-q3:c01", + "engineering-mathematical-analysis-2-035:p5:q-engineering-mathematical-analysis-2-035-q3:c01", + "engineering-mathematical-analysis-2-034:h-2019级-工科数学分析-二-a答案:c02", + "engineering-mathematical-analysis-2-034:h-2019级-工科数学分析-二-a答案:c04", + "engineering-mathematical-analysis-2-034:h-2019级-工科数学分析-二-a答案:c05", + "engineering-mathematical-analysis-2-034:h-2019级-工科数学分析-二-a答案:c06", + "engineering-mathematical-analysis-2-034:h-2019级-工科数学分析-二-a答案:c07", + "engineering-mathematical-analysis-2-035:p1:q-engineering-mathematical-analysis-2-035-q2:c01", + "engineering-mathematical-analysis-2-035:p2:q-engineering-mathematical-analysis-2-035-q3:c01", + "engineering-mathematical-analysis-2-044:p1:c01" + ], + "duration_ms": 69.536, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.05263157894736842, + "unjudged_chunk_ids": [ + "engineering-mathematical-analysis-2-036:h-2019级-工科数学分析-二-b-补考用:c02", + "engineering-mathematical-analysis-2-035:p1:q-engineering-mathematical-analysis-2-035-q1:c01", + "engineering-mathematical-analysis-2-035:p1:c01", + "engineering-mathematical-analysis-2-034:h-2019级-工科数学分析-二-a答案:c01", + "engineering-mathematical-analysis-2-035:p3:q-engineering-mathematical-analysis-2-035-q3:c01", + "engineering-mathematical-analysis-2-035:p1:q-engineering-mathematical-analysis-2-035-q3:c01", + "engineering-mathematical-analysis-2-035:p3:q-engineering-mathematical-analysis-2-035-q3:c02", + "engineering-mathematical-analysis-2-035:p2:q-engineering-mathematical-analysis-2-035-q3:c02", + "engineering-mathematical-analysis-2-035:p6:q-engineering-mathematical-analysis-2-035-q3:c01", + "engineering-mathematical-analysis-2-034:h-2019级-工科数学分析-二-a答案:c03", + "engineering-mathematical-analysis-2-035:p4:q-engineering-mathematical-analysis-2-035-q3:c01", + "engineering-mathematical-analysis-2-035:p5:q-engineering-mathematical-analysis-2-035-q3:c01", + "engineering-mathematical-analysis-2-034:h-2019级-工科数学分析-二-a答案:c02", + "engineering-mathematical-analysis-2-034:h-2019级-工科数学分析-二-a答案:c04", + "engineering-mathematical-analysis-2-034:h-2019级-工科数学分析-二-a答案:c05", + "engineering-mathematical-analysis-2-034:h-2019级-工科数学分析-二-a答案:c06", + "engineering-mathematical-analysis-2-034:h-2019级-工科数学分析-二-a答案:c07", + "engineering-mathematical-analysis-2-035:p1:q-engineering-mathematical-analysis-2-035-q2:c01", + "engineering-mathematical-analysis-2-044:p1:c01" + ] + }, + { + "case_id": "coverage-engineering_math_analysis_2-synthesis", + "topic_id": "coverage-engineering_math_analysis_2-synthesis", + "course_id": "engineering_math_analysis_2", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《2013级软件 工科数学分析下A附解答》的“2013级软件 工科数学分析下A附解答”与《2013级软件 工科数学分析下A》的“2013级软件 工科数学分析下A”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q1:c01", + "engineering-mathematical-analysis-2-017:h-2013级软件-工科数学分析下a附解答:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q6:c02", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q6:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q1:c02", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q2:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q3:c02", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q3:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q3:c03", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q4:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q5:c01", + "engineering-mathematical-analysis-2-018:h-2013级软件-工科数学分析下b:c02", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c01", + "engineering-mathematical-analysis-2-018:h-2013级软件-工科数学分析下b:c03", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c02", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c03", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c04", + "engineering-mathematical-analysis-2-018:h-2013级软件-工科数学分析下b:c01", + "engineering-mathematical-analysis-2-021:h-2015级软件-工科数学分析下a:c02", + "engineering-mathematical-analysis-2-019:h-2014级软件-工科数学分析下a:c02" + ], + "duration_ms": 71.464, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.5, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.25, + "unjudged_chunk_ids": [ + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q1:c01", + "engineering-mathematical-analysis-2-017:h-2013级软件-工科数学分析下a附解答:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q6:c02", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q1:c02", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q2:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q3:c02", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q3:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q3:c03", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q4:c01", + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q5:c01", + "engineering-mathematical-analysis-2-018:h-2013级软件-工科数学分析下b:c02", + "engineering-mathematical-analysis-2-018:h-2013级软件-工科数学分析下b:c03", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c02", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c03", + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c04", + "engineering-mathematical-analysis-2-018:h-2013级软件-工科数学分析下b:c01", + "engineering-mathematical-analysis-2-021:h-2015级软件-工科数学分析下a:c02", + "engineering-mathematical-analysis-2-019:h-2014级软件-工科数学分析下a:c02" + ] + }, + { + "case_id": "coverage-english-anchor", + "topic_id": "coverage-english-anchor", + "course_id": "english", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《英语复习》中“英语复习”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "english-008:h-英语复习:c01", + "english-008:h-英语复习:c02", + "english-005:p1:c01" + ], + "duration_ms": 8.476, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "english-008:h-英语复习:c02", + "english-005:p1:c01" + ] + }, + { + "case_id": "coverage-english-condition", + "topic_id": "coverage-english-condition", + "course_id": "english", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“英语作文竞赛”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "english-007:h-英语作文竞赛:c01", + "english-007:h-英语作文竞赛:c02", + "english-007:h-英语作文竞赛:c03", + "english-007:h-英语作文竞赛:c04" + ], + "duration_ms": 5.722, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "english-007:h-英语作文竞赛:c01", + "english-007:h-英语作文竞赛:c03", + "english-007:h-英语作文竞赛:c04" + ] + }, + { + "case_id": "coverage-english-synthesis", + "topic_id": "coverage-english-synthesis", + "course_id": "english", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《英语复习》的“英语复习”与《英语SUMMARY》的“英语SUMMARY”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "english-008:h-英语复习:c01", + "english-008:h-英语复习:c02", + "english-006:h-英语summary:c01", + "english-006:h-英语summary:c02", + "english-005:p1:c01" + ], + "duration_ms": 4.657, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "english-008:h-英语复习:c02", + "english-006:h-英语summary:c02", + "english-005:p1:c01" + ] + }, + { + "case_id": "coverage-ideology_morality_and_rule_of_law-anchor", + "topic_id": "coverage-ideology_morality_and_rule_of_law-anchor", + "course_id": "ideology_morality_and_rule_of_law", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《思政题目2024级回忆》中“思政题目2024级回忆”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "ideology-morality-and-rule-of-law-002:h-思政题目2024级回忆:c01" + ], + "duration_ms": 6.945, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [] + }, + { + "case_id": "coverage-ideology_morality_and_rule_of_law-condition", + "topic_id": "coverage-ideology_morality_and_rule_of_law-condition", + "course_id": "ideology_morality_and_rule_of_law", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“思政2023级试卷赖怡芳老师”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q3:c01", + "ideology-morality-and-rule-of-law-001:h-思政2023级试卷赖怡芳老师:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q1:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q2:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q4:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q5:c01" + ], + "duration_ms": 4.527, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "ideology-morality-and-rule-of-law-001:h-思政2023级试卷赖怡芳老师:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q1:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q2:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q4:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q5:c01" + ] + }, + { + "case_id": "coverage-ideology_morality_and_rule_of_law-synthesis", + "topic_id": "coverage-ideology_morality_and_rule_of_law-synthesis", + "course_id": "ideology_morality_and_rule_of_law", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《思政题目2024级回忆》的“思政题目2024级回忆”与《思政2023级试卷赖怡芳老师》的“思政2023级试卷赖怡芳老师”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "ideology-morality-and-rule-of-law-002:h-思政题目2024级回忆:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q3:c01", + "ideology-morality-and-rule-of-law-001:h-思政2023级试卷赖怡芳老师:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q1:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q2:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q4:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q5:c01" + ], + "duration_ms": 4.427, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "ideology-morality-and-rule-of-law-001:h-思政2023级试卷赖怡芳老师:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q1:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q2:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q4:c01", + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q5:c01" + ] + }, + { + "case_id": "coverage-information_security_intro-anchor", + "topic_id": "coverage-information_security_intro-anchor", + "course_id": "information_security_intro", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《《信安导论》复习提纲 v1 (精简版)》中“《信安导论》复习提纲 v1 (精简版)”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c02", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c01", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c04", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c03" + ], + "duration_ms": 11.605, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c01", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c04", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c03" + ] + }, + { + "case_id": "coverage-information_security_intro-condition", + "topic_id": "coverage-information_security_intro-condition", + "course_id": "information_security_intro", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“《信安导论》复习提纲 v1 (精简版)”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c04", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c01", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c03", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c02" + ], + "duration_ms": 5.775, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c04", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c01", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c02" + ] + }, + { + "case_id": "coverage-information_security_intro-synthesis", + "topic_id": "coverage-information_security_intro-synthesis", + "course_id": "information_security_intro", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《《信安导论》复习提纲 v1 (精简版)》的“《信安导论》复习提纲 v1 (精简版)”与《《信安导论》复习提纲 v1 (精简版)》的“《信安导论》复习提纲 v1 (精简版)”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c03", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c04", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c02", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c01" + ], + "duration_ms": 4.98, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c03", + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c04" + ] + }, + { + "case_id": "coverage-information_security_mathematics-anchor", + "topic_id": "coverage-information_security_mathematics-anchor", + "course_id": "information_security_mathematics", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《信息安全数学基础期末试卷》中“信息安全数学基础期末试卷”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "information-security-mathematics-007:q-information-security-mathematics-007-q2:c01", + "information-security-mathematics-007:q-information-security-mathematics-007-q3:c01", + "information-security-mathematics-007:h-信息安全数学基础期末试卷:c01", + "information-security-mathematics-007:q-information-security-mathematics-007-q3:c02", + "information-security-mathematics-007:q-information-security-mathematics-007-q1:c01", + "information-security-mathematics-007:q-information-security-mathematics-007-q3:c03", + "information-security-mathematics-007:q-information-security-mathematics-007-q4:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q19:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q14:c01", + "information-security-mathematics-006:p1:c01", + "information-security-mathematics-006:p2:c01", + "information-security-mathematics-009:h-信息安全数学基础试卷-b:c01", + "information-security-mathematics-008:h-信息安全数学基础试卷-a:c01", + "information-security-mathematics-006:p5:c01", + "information-security-mathematics-006:p1:c02", + "information-security-mathematics-008:q-information-security-mathematics-008-q10:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q11:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q12:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q13:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q14:c01" + ], + "duration_ms": 25.343, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "information-security-mathematics-007:q-information-security-mathematics-007-q2:c01", + "information-security-mathematics-007:h-信息安全数学基础期末试卷:c01", + "information-security-mathematics-007:q-information-security-mathematics-007-q3:c02", + "information-security-mathematics-007:q-information-security-mathematics-007-q1:c01", + "information-security-mathematics-007:q-information-security-mathematics-007-q3:c03", + "information-security-mathematics-007:q-information-security-mathematics-007-q4:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q19:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q14:c01", + "information-security-mathematics-006:p1:c01", + "information-security-mathematics-006:p2:c01", + "information-security-mathematics-009:h-信息安全数学基础试卷-b:c01", + "information-security-mathematics-008:h-信息安全数学基础试卷-a:c01", + "information-security-mathematics-006:p5:c01", + "information-security-mathematics-006:p1:c02", + "information-security-mathematics-008:q-information-security-mathematics-008-q10:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q11:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q12:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q13:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q14:c01" + ] + }, + { + "case_id": "coverage-information_security_mathematics-condition", + "topic_id": "coverage-information_security_mathematics-condition", + "course_id": "information_security_mathematics", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“信息安全数学基础2025回忆版”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "information-security-mathematics-006:p2:c01", + "information-security-mathematics-006:p4:c01", + "information-security-mathematics-006:p1:c01", + "information-security-mathematics-006:p5:c01", + "information-security-mathematics-006:p1:c02", + "information-security-mathematics-006:p3:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q17:c01", + "information-security-mathematics-007:q-information-security-mathematics-007-q3:c03", + "information-security-mathematics-009:q-information-security-mathematics-009-q19:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q18:c01", + "information-security-mathematics-007:q-information-security-mathematics-007-q3:c02", + "information-security-mathematics-009:q-information-security-mathematics-009-q13:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q24:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q17:c01", + "information-security-mathematics-007:h-信息安全数学基础期末试卷:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q23:c01", + "information-security-mathematics-009:h-信息安全数学基础试卷-b:c01", + "information-security-mathematics-008:h-信息安全数学基础试卷-a:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q10:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q11:c01" + ], + "duration_ms": 10.723, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "information-security-mathematics-006:p2:c01", + "information-security-mathematics-006:p4:c01", + "information-security-mathematics-006:p5:c01", + "information-security-mathematics-006:p1:c02", + "information-security-mathematics-006:p3:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q17:c01", + "information-security-mathematics-007:q-information-security-mathematics-007-q3:c03", + "information-security-mathematics-009:q-information-security-mathematics-009-q19:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q18:c01", + "information-security-mathematics-007:q-information-security-mathematics-007-q3:c02", + "information-security-mathematics-009:q-information-security-mathematics-009-q13:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q24:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q17:c01", + "information-security-mathematics-007:h-信息安全数学基础期末试卷:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q23:c01", + "information-security-mathematics-009:h-信息安全数学基础试卷-b:c01", + "information-security-mathematics-008:h-信息安全数学基础试卷-a:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q10:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q11:c01" + ] + }, + { + "case_id": "coverage-information_security_mathematics-synthesis", + "topic_id": "coverage-information_security_mathematics-synthesis", + "course_id": "information_security_mathematics", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《信息安全数学基础期末试卷》的“信息安全数学基础期末试卷”与《信息安全数学基础试卷-B》的“信息安全数学基础试卷-B”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "information-security-mathematics-007:q-information-security-mathematics-007-q2:c01", + "information-security-mathematics-007:q-information-security-mathematics-007-q3:c02", + "information-security-mathematics-007:q-information-security-mathematics-007-q1:c01", + "information-security-mathematics-007:q-information-security-mathematics-007-q3:c01", + "information-security-mathematics-007:q-information-security-mathematics-007-q3:c03", + "information-security-mathematics-007:h-信息安全数学基础期末试卷:c01", + "information-security-mathematics-007:q-information-security-mathematics-007-q4:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q19:c01", + "information-security-mathematics-009:h-信息安全数学基础试卷-b:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q24:c01", + "information-security-mathematics-008:h-信息安全数学基础试卷-a:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q8:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q1:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q21:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q18:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q15:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q17:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q13:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q10:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q11:c01" + ], + "duration_ms": 11.817, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.5, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.25, + "unjudged_chunk_ids": [ + "information-security-mathematics-007:q-information-security-mathematics-007-q2:c01", + "information-security-mathematics-007:q-information-security-mathematics-007-q3:c02", + "information-security-mathematics-007:q-information-security-mathematics-007-q1:c01", + "information-security-mathematics-007:q-information-security-mathematics-007-q3:c03", + "information-security-mathematics-007:h-信息安全数学基础期末试卷:c01", + "information-security-mathematics-007:q-information-security-mathematics-007-q4:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q19:c01", + "information-security-mathematics-009:h-信息安全数学基础试卷-b:c01", + "information-security-mathematics-008:q-information-security-mathematics-008-q24:c01", + "information-security-mathematics-008:h-信息安全数学基础试卷-a:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q8:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q1:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q21:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q18:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q15:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q13:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q10:c01", + "information-security-mathematics-009:q-information-security-mathematics-009-q11:c01" + ] + }, + { + "case_id": "coverage-intelligent_algorithms-anchor", + "topic_id": "coverage-intelligent_algorithms-anchor", + "course_id": "intelligent_algorithms", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《CVRP》中“CVRP”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "intelligent-algorithms-002:p11:c01", + "intelligent-algorithms-026:h-pso算法的基本理念:c01", + "intelligent-algorithms-002:p2:c01", + "intelligent-algorithms-002:p8:c01", + "intelligent-algorithms-002:p3:c01", + "intelligent-algorithms-002:p5:c01", + "intelligent-algorithms-002:p4:c01", + "intelligent-algorithms-001:h-cvrp:c01", + "intelligent-algorithms-002:p10:c01", + "intelligent-algorithms-002:p12:c01", + "intelligent-algorithms-002:p1:c01", + "intelligent-algorithms-002:p6:c01", + "intelligent-algorithms-002:p7:c01", + "intelligent-algorithms-002:p9:c01", + "intelligent-algorithms-031:h-lybbo-融合差分进化与增强蚁群的生物地理优化器在复杂地形无人机路径规划中的应用:c11", + "intelligent-algorithms-028:h-我们学这两个东西用处是什么~使用遗传算法来优化一个简单的神经网络-解决xor问题:c01", + "intelligent-algorithms-007:p30:c01", + "intelligent-algorithms-031:h-lybbo-融合差分进化与增强蚁群的生物地理优化器在复杂地形无人机路径规划中的应用:c03", + "intelligent-algorithms-010:p2:c01", + "intelligent-algorithms-031:h-lybbo-融合差分进化与增强蚁群的生物地理优化器在复杂地形无人机路径规划中的应用:c04" + ], + "duration_ms": 113.371, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.125, + "unjudged_chunk_ids": [ + "intelligent-algorithms-002:p11:c01", + "intelligent-algorithms-026:h-pso算法的基本理念:c01", + "intelligent-algorithms-002:p2:c01", + "intelligent-algorithms-002:p8:c01", + "intelligent-algorithms-002:p3:c01", + "intelligent-algorithms-002:p5:c01", + "intelligent-algorithms-002:p4:c01", + "intelligent-algorithms-002:p10:c01", + "intelligent-algorithms-002:p12:c01", + "intelligent-algorithms-002:p1:c01", + "intelligent-algorithms-002:p6:c01", + "intelligent-algorithms-002:p7:c01", + "intelligent-algorithms-002:p9:c01", + "intelligent-algorithms-031:h-lybbo-融合差分进化与增强蚁群的生物地理优化器在复杂地形无人机路径规划中的应用:c11", + "intelligent-algorithms-028:h-我们学这两个东西用处是什么~使用遗传算法来优化一个简单的神经网络-解决xor问题:c01", + "intelligent-algorithms-007:p30:c01", + "intelligent-algorithms-031:h-lybbo-融合差分进化与增强蚁群的生物地理优化器在复杂地形无人机路径规划中的应用:c03", + "intelligent-algorithms-010:p2:c01", + "intelligent-algorithms-031:h-lybbo-融合差分进化与增强蚁群的生物地理优化器在复杂地形无人机路径规划中的应用:c04" + ] + }, + { + "case_id": "coverage-intelligent_algorithms-condition", + "topic_id": "coverage-intelligent_algorithms-condition", + "course_id": "intelligent_algorithms", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“相比GA,它不能做离散优化问题,但优势是参数少,可以在精度和速度中较为平衡。![[3. 差分进化pr(1).pdfpage=16&rect=123,84,783,394|3. 差分”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "intelligent-algorithms-022:h-de算法适合应用场景~相比ga-它不能做离散优化问题-但优势是参数少-可以在精度和速度中较为平衡-3.-差分进化pr-1-.pdf-page-16-rect-123-84-783-394-3.-差分进化pr-1-p.16:c01", + "intelligent-algorithms-022:h-de算法的基本理念~1.-初始化种群-设置算法参数:c01", + "intelligent-algorithms-022:h-de算法的基本理念~1.-初始化种群-设置算法参数~2.-进化过程:c01", + "intelligent-algorithms-014:p10:c01", + "intelligent-algorithms-014:p11:c01", + "intelligent-algorithms-014:p12:c01", + "intelligent-algorithms-014:p13:c01", + "intelligent-algorithms-014:p14:c01", + "intelligent-algorithms-014:p15:c01", + "intelligent-algorithms-014:p16:c01", + "intelligent-algorithms-014:p17:c01", + "intelligent-algorithms-014:p18:c01", + "intelligent-algorithms-014:p19:c01", + "intelligent-algorithms-014:p1:c01", + "intelligent-algorithms-014:p20:c01", + "intelligent-algorithms-014:p21:c01", + "intelligent-algorithms-014:p22:c01", + "intelligent-algorithms-014:p23:c01", + "intelligent-algorithms-014:p24:c01", + "intelligent-algorithms-014:p25:c01" + ], + "duration_ms": 35.104, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "intelligent-algorithms-022:h-de算法的基本理念~1.-初始化种群-设置算法参数:c01", + "intelligent-algorithms-022:h-de算法的基本理念~1.-初始化种群-设置算法参数~2.-进化过程:c01", + "intelligent-algorithms-014:p10:c01", + "intelligent-algorithms-014:p11:c01", + "intelligent-algorithms-014:p12:c01", + "intelligent-algorithms-014:p13:c01", + "intelligent-algorithms-014:p14:c01", + "intelligent-algorithms-014:p15:c01", + "intelligent-algorithms-014:p16:c01", + "intelligent-algorithms-014:p17:c01", + "intelligent-algorithms-014:p18:c01", + "intelligent-algorithms-014:p19:c01", + "intelligent-algorithms-014:p1:c01", + "intelligent-algorithms-014:p20:c01", + "intelligent-algorithms-014:p21:c01", + "intelligent-algorithms-014:p22:c01", + "intelligent-algorithms-014:p23:c01", + "intelligent-algorithms-014:p24:c01", + "intelligent-algorithms-014:p25:c01" + ] + }, + { + "case_id": "coverage-intelligent_algorithms-synthesis", + "topic_id": "coverage-intelligent_algorithms-synthesis", + "course_id": "intelligent_algorithms", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《CVRP》的“CVRP”与《模拟退火SA》的“- 参数选择敏感:算法的性能对参数(如初始温度、降温系数等)的选择较为敏感。”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "intelligent-algorithms-025:h-sa算法适合应用场景~在解空间复杂-存在多个局部最优解的情况下表现出色~优点~全局搜索能力-能够跳出局部最优-具有较强的全局优化能力~参数选择敏感-算法的性能对参数-如初始温度-降温系数等-的选择较为敏感:c01", + "intelligent-algorithms-025:h-问题-初始参数的选择~2.-降温系数-alpha:c01", + "intelligent-algorithms-025:h-问题-初始参数的选择~1.-初始温度-t0:c01", + "intelligent-algorithms-025:h-问题-初始参数的选择~4.-结束温度-tk:c01", + "intelligent-algorithms-025:h-问题-初始参数的选择~3.-每个温度下的迭代次数-l:c01", + "intelligent-algorithms-029:h-ga算法适合应用场景~广泛应用于优化和搜索问题-可以用于优化函数和tsp问题:c01", + "intelligent-algorithms-025:h-sa算法的基本理念:c01", + "intelligent-algorithms-006:p10:c01", + "intelligent-algorithms-006:p11:c01", + "intelligent-algorithms-006:p12:c01", + "intelligent-algorithms-006:p13:c01", + "intelligent-algorithms-006:p14:c01", + "intelligent-algorithms-006:p15:c01", + "intelligent-algorithms-006:p16:c01", + "intelligent-algorithms-006:p17:c01", + "intelligent-algorithms-006:p18:c01", + "intelligent-algorithms-006:p19:c01", + "intelligent-algorithms-006:p1:c01", + "intelligent-algorithms-006:p20:c01", + "intelligent-algorithms-006:p21:c01" + ], + "duration_ms": 29.321, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.5, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "intelligent-algorithms-025:h-问题-初始参数的选择~2.-降温系数-alpha:c01", + "intelligent-algorithms-025:h-问题-初始参数的选择~1.-初始温度-t0:c01", + "intelligent-algorithms-025:h-问题-初始参数的选择~4.-结束温度-tk:c01", + "intelligent-algorithms-025:h-问题-初始参数的选择~3.-每个温度下的迭代次数-l:c01", + "intelligent-algorithms-029:h-ga算法适合应用场景~广泛应用于优化和搜索问题-可以用于优化函数和tsp问题:c01", + "intelligent-algorithms-025:h-sa算法的基本理念:c01", + "intelligent-algorithms-006:p10:c01", + "intelligent-algorithms-006:p11:c01", + "intelligent-algorithms-006:p12:c01", + "intelligent-algorithms-006:p13:c01", + "intelligent-algorithms-006:p14:c01", + "intelligent-algorithms-006:p15:c01", + "intelligent-algorithms-006:p16:c01", + "intelligent-algorithms-006:p17:c01", + "intelligent-algorithms-006:p18:c01", + "intelligent-algorithms-006:p19:c01", + "intelligent-algorithms-006:p1:c01", + "intelligent-algorithms-006:p20:c01", + "intelligent-algorithms-006:p21:c01" + ] + }, + { + "case_id": "coverage-linear_algebra-anchor", + "topic_id": "coverage-linear_algebra-anchor", + "course_id": "linear_algebra", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《2020-2021年度线代解几期末卷A答案》中“2020-2021年度线代解几期末卷A答案”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "linear-algebra-014:p3:q-linear-algebra-014-q14:c01", + "linear-algebra-016:p2:q-linear-algebra-016-q14:c01", + "linear-algebra-018:p1:q-linear-algebra-018-q10:c01", + "linear-algebra-020:p2:q-linear-algebra-020-q7:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q7:c01", + "linear-algebra-015:p4:q-linear-algebra-015-q11:c01", + "linear-algebra-017:p3:q-linear-algebra-017-q9:c01", + "linear-algebra-015:p2:q-linear-algebra-015-q7:c01", + "linear-algebra-017:p1:q-linear-algebra-017-q5:c01", + "linear-algebra-015:p2:q-linear-algebra-015-q8:c01", + "linear-algebra-015:p1:c01", + "linear-algebra-015:p3:q-linear-algebra-015-q8:c01", + "linear-algebra-015:p3:q-linear-algebra-015-q9:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q1:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q2:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q3:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q4:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q5:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q6:c01", + "linear-algebra-015:p4:q-linear-algebra-015-q10:c01" + ], + "duration_ms": 63.992, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.07692307692307693, + "unjudged_chunk_ids": [ + "linear-algebra-014:p3:q-linear-algebra-014-q14:c01", + "linear-algebra-016:p2:q-linear-algebra-016-q14:c01", + "linear-algebra-018:p1:q-linear-algebra-018-q10:c01", + "linear-algebra-020:p2:q-linear-algebra-020-q7:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q7:c01", + "linear-algebra-015:p4:q-linear-algebra-015-q11:c01", + "linear-algebra-017:p3:q-linear-algebra-017-q9:c01", + "linear-algebra-015:p2:q-linear-algebra-015-q7:c01", + "linear-algebra-017:p1:q-linear-algebra-017-q5:c01", + "linear-algebra-015:p2:q-linear-algebra-015-q8:c01", + "linear-algebra-015:p1:c01", + "linear-algebra-015:p3:q-linear-algebra-015-q8:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q1:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q2:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q3:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q4:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q5:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q6:c01", + "linear-algebra-015:p4:q-linear-algebra-015-q10:c01" + ] + }, + { + "case_id": "coverage-linear_algebra-condition", + "topic_id": "coverage-linear_algebra-condition", + "course_id": "linear_algebra", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“2019-2020年度线性代数期末卷A答案”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "linear-algebra-012:p1:q-linear-algebra-012-q6:c01", + "linear-algebra-012:p2:q-linear-algebra-012-q10:c01", + "linear-algebra-012:p2:q-linear-algebra-012-q11:c01", + "linear-algebra-013:p1:c01", + "linear-algebra-013:p4:q-linear-algebra-013-q12:c01", + "linear-algebra-013:p1:q-linear-algebra-013-q5:c01", + "linear-algebra-013:p2:q-linear-algebra-013-q9:c01", + "linear-algebra-013:p3:q-linear-algebra-013-q11:c01", + "linear-algebra-013:p2:q-linear-algebra-013-q9:c02", + "linear-algebra-013:p1:q-linear-algebra-013-q1:c01", + "linear-algebra-013:p1:q-linear-algebra-013-q2:c01", + "linear-algebra-013:p1:q-linear-algebra-013-q3:c01", + "linear-algebra-013:p1:q-linear-algebra-013-q4:c01", + "linear-algebra-013:p1:q-linear-algebra-013-q6:c01", + "linear-algebra-013:p1:q-linear-algebra-013-q7:c01", + "linear-algebra-013:p1:q-linear-algebra-013-q8:c01", + "linear-algebra-013:p3:q-linear-algebra-013-q10:c01", + "linear-algebra-013:p4:q-linear-algebra-013-q11:c01", + "linear-algebra-012:p1:c01", + "linear-algebra-012:p1:q-linear-algebra-012-q1:c01" + ], + "duration_ms": 22.915, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.14285714285714285, + "unjudged_chunk_ids": [ + "linear-algebra-012:p1:q-linear-algebra-012-q6:c01", + "linear-algebra-012:p2:q-linear-algebra-012-q10:c01", + "linear-algebra-012:p2:q-linear-algebra-012-q11:c01", + "linear-algebra-013:p1:c01", + "linear-algebra-013:p4:q-linear-algebra-013-q12:c01", + "linear-algebra-013:p1:q-linear-algebra-013-q5:c01", + "linear-algebra-013:p3:q-linear-algebra-013-q11:c01", + "linear-algebra-013:p2:q-linear-algebra-013-q9:c02", + "linear-algebra-013:p1:q-linear-algebra-013-q1:c01", + "linear-algebra-013:p1:q-linear-algebra-013-q2:c01", + "linear-algebra-013:p1:q-linear-algebra-013-q3:c01", + "linear-algebra-013:p1:q-linear-algebra-013-q4:c01", + "linear-algebra-013:p1:q-linear-algebra-013-q6:c01", + "linear-algebra-013:p1:q-linear-algebra-013-q7:c01", + "linear-algebra-013:p1:q-linear-algebra-013-q8:c01", + "linear-algebra-013:p3:q-linear-algebra-013-q10:c01", + "linear-algebra-013:p4:q-linear-algebra-013-q11:c01", + "linear-algebra-012:p1:c01", + "linear-algebra-012:p1:q-linear-algebra-012-q1:c01" + ] + }, + { + "case_id": "coverage-linear_algebra-synthesis", + "topic_id": "coverage-linear_algebra-synthesis", + "course_id": "linear_algebra", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《2020-2021年度线代解几期末卷A答案》的“2020-2021年度线代解几期末卷A答案”与《2021-2022年度线代解几期末卷B答案》的“2021-2022年度线代解几期末卷B答案”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "linear-algebra-016:p3:q-linear-algebra-016-q15:c01", + "linear-algebra-014:p3:q-linear-algebra-014-q15:c01", + "linear-algebra-020:p1:q-linear-algebra-020-q4:c01", + "linear-algebra-020:p1:q-linear-algebra-020-q2:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q4:c01", + "linear-algebra-018:p1:q-linear-algebra-018-q5:c01", + "linear-algebra-016:p2:q-linear-algebra-016-q14:c01", + "linear-algebra-017:p1:q-linear-algebra-017-q5:c01", + "linear-algebra-021:p1:q-linear-algebra-021-q9:c01", + "linear-algebra-021:p3:q-linear-algebra-021-q15:c01", + "linear-algebra-021:p2:q-linear-algebra-021-q10:c01", + "linear-algebra-017:p3:q-linear-algebra-017-q9:c01", + "linear-algebra-017:p1:q-linear-algebra-017-q1:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q7:c01", + "linear-algebra-017:p1:q-linear-algebra-017-q6:c01", + "linear-algebra-021:p3:q-linear-algebra-021-q14:c01", + "linear-algebra-017:p2:q-linear-algebra-017-q7:c01", + "linear-algebra-019:p2:q-linear-algebra-019-q12:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q3:c01", + "linear-algebra-021:p1:c01" + ], + "duration_ms": 26.206, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0625, + "unjudged_chunk_ids": [ + "linear-algebra-016:p3:q-linear-algebra-016-q15:c01", + "linear-algebra-014:p3:q-linear-algebra-014-q15:c01", + "linear-algebra-020:p1:q-linear-algebra-020-q4:c01", + "linear-algebra-020:p1:q-linear-algebra-020-q2:c01", + "linear-algebra-016:p1:q-linear-algebra-016-q4:c01", + "linear-algebra-018:p1:q-linear-algebra-018-q5:c01", + "linear-algebra-016:p2:q-linear-algebra-016-q14:c01", + "linear-algebra-017:p1:q-linear-algebra-017-q5:c01", + "linear-algebra-021:p1:q-linear-algebra-021-q9:c01", + "linear-algebra-021:p3:q-linear-algebra-021-q15:c01", + "linear-algebra-021:p2:q-linear-algebra-021-q10:c01", + "linear-algebra-017:p3:q-linear-algebra-017-q9:c01", + "linear-algebra-017:p1:q-linear-algebra-017-q1:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q7:c01", + "linear-algebra-017:p1:q-linear-algebra-017-q6:c01", + "linear-algebra-017:p2:q-linear-algebra-017-q7:c01", + "linear-algebra-019:p2:q-linear-algebra-019-q12:c01", + "linear-algebra-015:p1:q-linear-algebra-015-q3:c01", + "linear-algebra-021:p1:c01" + ] + }, + { + "case_id": "coverage-machine_learning-visual-availability", + "topic_id": "coverage-machine_learning-visual-availability", + "course_id": "machine_learning", + "scenario": "evidence_boundary", + "split": "coverage", + "difficulty": "medium", + "query": "请定位 machine_learning 课程资料中与当前问题最相关的原始页面;如果只有图片或无法读出的公式,请明确说明文本证据不足,不要猜测内容。", + "top_chunk_ids": [], + "duration_ms": 5.154, + "scoring_status": "evidence_boundary_unscored", + "known_evidence_coverage_at_5": null, + "known_evidence_coverage_at_20": null, + "all_evidence_groups_at_5": null, + "all_evidence_groups_at_20": null, + "known_positive_mrr": null, + "unjudged_chunk_ids": [] + }, + { + "case_id": "coverage-machine_learning-visual-no-fabrication", + "topic_id": "coverage-machine_learning-visual-no-fabrication", + "course_id": "machine_learning", + "scenario": "evidence_boundary", + "split": "coverage", + "difficulty": "hard", + "query": "仅根据 machine_learning 当前可检索文本,判断能否可靠讲解一个具体题目。请区分“文件存在”“图片存在”和“题干/公式已被文本化”。", + "top_chunk_ids": [], + "duration_ms": 4.775, + "scoring_status": "evidence_boundary_unscored", + "known_evidence_coverage_at_5": null, + "known_evidence_coverage_at_20": null, + "all_evidence_groups_at_5": null, + "all_evidence_groups_at_20": null, + "known_positive_mrr": null, + "unjudged_chunk_ids": [] + }, + { + "case_id": "coverage-mao_zedong_thought_overview-anchor", + "topic_id": "coverage-mao_zedong_thought_overview-anchor", + "course_id": "mao_zedong_thought_overview", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《演讲大纲》中“演讲大纲”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "mao-zedong-thought-overview-002:h-演讲大纲:c01", + "mao-zedong-thought-overview-002:h-演讲大纲:c02", + "mao-zedong-thought-overview-001:s16:c01", + "mao-zedong-thought-overview-001:s29:c01", + "mao-zedong-thought-overview-001:s23:c01", + "mao-zedong-thought-overview-001:s35:c01", + "mao-zedong-thought-overview-001:s2:c01", + "mao-zedong-thought-overview-001:s7:c01", + "mao-zedong-thought-overview-001:s22:c01", + "mao-zedong-thought-overview-001:s41:c01", + "mao-zedong-thought-overview-001:s18:c01", + "mao-zedong-thought-overview-001:s21:c01", + "mao-zedong-thought-overview-001:s5:c01", + "mao-zedong-thought-overview-001:s10:c01", + "mao-zedong-thought-overview-001:s9:c01", + "mao-zedong-thought-overview-001:s6:c01" + ], + "duration_ms": 38.628, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "mao-zedong-thought-overview-002:h-演讲大纲:c02", + "mao-zedong-thought-overview-001:s16:c01", + "mao-zedong-thought-overview-001:s29:c01", + "mao-zedong-thought-overview-001:s23:c01", + "mao-zedong-thought-overview-001:s35:c01", + "mao-zedong-thought-overview-001:s2:c01", + "mao-zedong-thought-overview-001:s7:c01", + "mao-zedong-thought-overview-001:s22:c01", + "mao-zedong-thought-overview-001:s41:c01", + "mao-zedong-thought-overview-001:s18:c01", + "mao-zedong-thought-overview-001:s21:c01", + "mao-zedong-thought-overview-001:s5:c01", + "mao-zedong-thought-overview-001:s10:c01", + "mao-zedong-thought-overview-001:s9:c01", + "mao-zedong-thought-overview-001:s6:c01" + ] + }, + { + "case_id": "coverage-mao_zedong_thought_overview-condition", + "topic_id": "coverage-mao_zedong_thought_overview-condition", + "course_id": "mao_zedong_thought_overview", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“党的自我革命历史沿革及当代价值”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "mao-zedong-thought-overview-001:s6:c01", + "mao-zedong-thought-overview-001:s22:c01", + "mao-zedong-thought-overview-002:h-演讲大纲:c01", + "mao-zedong-thought-overview-001:s8:c01", + "mao-zedong-thought-overview-001:s41:c01", + "mao-zedong-thought-overview-001:s40:c01", + "mao-zedong-thought-overview-001:s18:c01", + "mao-zedong-thought-overview-002:h-演讲大纲:c02", + "mao-zedong-thought-overview-001:s36:c01", + "mao-zedong-thought-overview-001:s10:c01", + "mao-zedong-thought-overview-001:s7:c01", + "mao-zedong-thought-overview-001:s27:c01", + "mao-zedong-thought-overview-001:s26:c01", + "mao-zedong-thought-overview-001:s14:c01", + "mao-zedong-thought-overview-001:s20:c01", + "mao-zedong-thought-overview-001:s15:c01", + "mao-zedong-thought-overview-001:s17:c01", + "mao-zedong-thought-overview-001:s16:c01" + ], + "duration_ms": 11.064, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.14285714285714285, + "unjudged_chunk_ids": [ + "mao-zedong-thought-overview-001:s6:c01", + "mao-zedong-thought-overview-001:s22:c01", + "mao-zedong-thought-overview-002:h-演讲大纲:c01", + "mao-zedong-thought-overview-001:s8:c01", + "mao-zedong-thought-overview-001:s41:c01", + "mao-zedong-thought-overview-001:s40:c01", + "mao-zedong-thought-overview-002:h-演讲大纲:c02", + "mao-zedong-thought-overview-001:s36:c01", + "mao-zedong-thought-overview-001:s10:c01", + "mao-zedong-thought-overview-001:s7:c01", + "mao-zedong-thought-overview-001:s27:c01", + "mao-zedong-thought-overview-001:s26:c01", + "mao-zedong-thought-overview-001:s14:c01", + "mao-zedong-thought-overview-001:s20:c01", + "mao-zedong-thought-overview-001:s15:c01", + "mao-zedong-thought-overview-001:s17:c01", + "mao-zedong-thought-overview-001:s16:c01" + ] + }, + { + "case_id": "coverage-mao_zedong_thought_overview-synthesis", + "topic_id": "coverage-mao_zedong_thought_overview-synthesis", + "course_id": "mao_zedong_thought_overview", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《演讲大纲》的“演讲大纲”与《演讲大纲》的“演讲大纲”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "mao-zedong-thought-overview-002:h-演讲大纲:c01", + "mao-zedong-thought-overview-002:h-演讲大纲:c02", + "mao-zedong-thought-overview-001:s25:c01", + "mao-zedong-thought-overview-001:s2:c01", + "mao-zedong-thought-overview-001:s6:c01", + "mao-zedong-thought-overview-001:s31:c01", + "mao-zedong-thought-overview-001:s10:c01", + "mao-zedong-thought-overview-001:s15:c01", + "mao-zedong-thought-overview-001:s29:c01", + "mao-zedong-thought-overview-001:s41:c01" + ], + "duration_ms": 7.687, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "mao-zedong-thought-overview-001:s25:c01", + "mao-zedong-thought-overview-001:s2:c01", + "mao-zedong-thought-overview-001:s6:c01", + "mao-zedong-thought-overview-001:s31:c01", + "mao-zedong-thought-overview-001:s10:c01", + "mao-zedong-thought-overview-001:s15:c01", + "mao-zedong-thought-overview-001:s29:c01", + "mao-zedong-thought-overview-001:s41:c01" + ] + }, + { + "case_id": "coverage-marxist_basic_principles-anchor", + "topic_id": "coverage-marxist_basic_principles-anchor", + "course_id": "marxist_basic_principles", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《科技发展与社会变革:生产力与生产关系视角》中“科技发展与社会变革:生产力与生产关系视角”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "marxist-basic-principles-002:s19:c01", + "marxist-basic-principles-002:s10:c01", + "marxist-basic-principles-002:s8:c01", + "marxist-basic-principles-002:s7:c01", + "marxist-basic-principles-002:s12:c01", + "marxist-basic-principles-002:s4:c01", + "marxist-basic-principles-002:s1:c01", + "marxist-basic-principles-002:s5:c01", + "marxist-basic-principles-001:h-演讲观点:c01", + "marxist-basic-principles-002:s9:c01", + "marxist-basic-principles-002:s21:c01", + "marxist-basic-principles-002:s20:c01", + "marxist-basic-principles-002:s2:c01", + "marxist-basic-principles-002:s3:c01", + "marxist-basic-principles-002:s11:c01", + "marxist-basic-principles-002:s6:c01", + "marxist-basic-principles-002:s13:c01", + "marxist-basic-principles-002:s17:c01", + "marxist-basic-principles-002:s16:c01", + "marxist-basic-principles-002:s15:c01" + ], + "duration_ms": 24.592, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.05263157894736842, + "unjudged_chunk_ids": [ + "marxist-basic-principles-002:s19:c01", + "marxist-basic-principles-002:s10:c01", + "marxist-basic-principles-002:s8:c01", + "marxist-basic-principles-002:s7:c01", + "marxist-basic-principles-002:s12:c01", + "marxist-basic-principles-002:s4:c01", + "marxist-basic-principles-002:s1:c01", + "marxist-basic-principles-002:s5:c01", + "marxist-basic-principles-001:h-演讲观点:c01", + "marxist-basic-principles-002:s9:c01", + "marxist-basic-principles-002:s21:c01", + "marxist-basic-principles-002:s20:c01", + "marxist-basic-principles-002:s2:c01", + "marxist-basic-principles-002:s3:c01", + "marxist-basic-principles-002:s11:c01", + "marxist-basic-principles-002:s6:c01", + "marxist-basic-principles-002:s13:c01", + "marxist-basic-principles-002:s17:c01", + "marxist-basic-principles-002:s15:c01" + ] + }, + { + "case_id": "coverage-marxist_basic_principles-condition", + "topic_id": "coverage-marxist_basic_principles-condition", + "course_id": "marxist_basic_principles", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“演讲观点”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "marxist-basic-principles-001:h-演讲观点:c01", + "marxist-basic-principles-002:s7:c01", + "marxist-basic-principles-002:s12:c01", + "marxist-basic-principles-002:s4:c01", + "marxist-basic-principles-002:s1:c01", + "marxist-basic-principles-002:s20:c01" + ], + "duration_ms": 6.475, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "marxist-basic-principles-002:s7:c01", + "marxist-basic-principles-002:s12:c01", + "marxist-basic-principles-002:s4:c01", + "marxist-basic-principles-002:s1:c01", + "marxist-basic-principles-002:s20:c01" + ] + }, + { + "case_id": "coverage-marxist_basic_principles-synthesis", + "topic_id": "coverage-marxist_basic_principles-synthesis", + "course_id": "marxist_basic_principles", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《科技发展与社会变革:生产力与生产关系视角》的“科技发展与社会变革:生产力与生产关系视角”与《科技发展与社会变革:生产力与生产关系视角》的“科技发展与社会变革:生产力与生产关系视角”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "marxist-basic-principles-001:h-演讲观点:c01", + "marxist-basic-principles-002:s8:c01", + "marxist-basic-principles-002:s7:c01", + "marxist-basic-principles-002:s1:c01", + "marxist-basic-principles-002:s2:c01", + "marxist-basic-principles-002:s3:c01", + "marxist-basic-principles-002:s11:c01", + "marxist-basic-principles-002:s19:c01", + "marxist-basic-principles-002:s12:c01", + "marxist-basic-principles-002:s21:c01", + "marxist-basic-principles-002:s6:c01", + "marxist-basic-principles-002:s13:c01", + "marxist-basic-principles-002:s10:c01", + "marxist-basic-principles-002:s20:c01", + "marxist-basic-principles-002:s9:c01", + "marxist-basic-principles-002:s4:c01", + "marxist-basic-principles-002:s17:c01", + "marxist-basic-principles-002:s16:c01", + "marxist-basic-principles-002:s15:c01", + "marxist-basic-principles-002:s5:c01" + ], + "duration_ms": 7.775, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.058823529411764705, + "unjudged_chunk_ids": [ + "marxist-basic-principles-001:h-演讲观点:c01", + "marxist-basic-principles-002:s8:c01", + "marxist-basic-principles-002:s7:c01", + "marxist-basic-principles-002:s1:c01", + "marxist-basic-principles-002:s2:c01", + "marxist-basic-principles-002:s3:c01", + "marxist-basic-principles-002:s11:c01", + "marxist-basic-principles-002:s19:c01", + "marxist-basic-principles-002:s12:c01", + "marxist-basic-principles-002:s21:c01", + "marxist-basic-principles-002:s6:c01", + "marxist-basic-principles-002:s13:c01", + "marxist-basic-principles-002:s10:c01", + "marxist-basic-principles-002:s20:c01", + "marxist-basic-principles-002:s9:c01", + "marxist-basic-principles-002:s4:c01", + "marxist-basic-principles-002:s15:c01", + "marxist-basic-principles-002:s5:c01" + ] + }, + { + "case_id": "coverage-mathematical_modeling-anchor", + "topic_id": "coverage-mathematical_modeling-anchor", + "course_id": "mathematical_modeling", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《2000A_art-model-data》中“2000Aart-model-data”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "mathematical-modeling-051:h-2000a_art-model-data:c01", + "mathematical-modeling-026:p3:c01", + "mathematical-modeling-026:p7:c01", + "mathematical-modeling-001:p553:c01", + "mathematical-modeling-020:p34:c01", + "mathematical-modeling-026:p6:c01", + "mathematical-modeling-043:q-mathematical-modeling-043-q2:c01", + "mathematical-modeling-026:p14:c01", + "mathematical-modeling-001:p334:c02", + "mathematical-modeling-012:p5:c02", + "mathematical-modeling-001:p392:c01", + "mathematical-modeling-016:p6:c01", + "mathematical-modeling-001:p556:c02", + "mathematical-modeling-020:p37:c02", + "mathematical-modeling-001:p658:c01", + "mathematical-modeling-023:p20:c01", + "mathematical-modeling-001:p383:c01", + "mathematical-modeling-015:p14:c01", + "mathematical-modeling-001:p205:c02", + "mathematical-modeling-003:p4:c02" + ], + "duration_ms": 2618.931, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "mathematical-modeling-026:p3:c01", + "mathematical-modeling-026:p7:c01", + "mathematical-modeling-001:p553:c01", + "mathematical-modeling-020:p34:c01", + "mathematical-modeling-026:p6:c01", + "mathematical-modeling-043:q-mathematical-modeling-043-q2:c01", + "mathematical-modeling-026:p14:c01", + "mathematical-modeling-001:p334:c02", + "mathematical-modeling-012:p5:c02", + "mathematical-modeling-001:p392:c01", + "mathematical-modeling-016:p6:c01", + "mathematical-modeling-001:p556:c02", + "mathematical-modeling-020:p37:c02", + "mathematical-modeling-001:p658:c01", + "mathematical-modeling-023:p20:c01", + "mathematical-modeling-001:p383:c01", + "mathematical-modeling-015:p14:c01", + "mathematical-modeling-001:p205:c02", + "mathematical-modeling-003:p4:c02" + ] + }, + { + "case_id": "coverage-mathematical_modeling-condition", + "topic_id": "coverage-mathematical_modeling-condition", + "course_id": "mathematical_modeling", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“数模大全”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "mathematical-modeling-001:p563:c01", + "mathematical-modeling-001:p33:c01", + "mathematical-modeling-001:p473:c01", + "mathematical-modeling-001:p565:c01", + "mathematical-modeling-001:p387:c01", + "mathematical-modeling-001:p269:c01", + "mathematical-modeling-021:p6:c01", + "mathematical-modeling-001:p369:c01", + "mathematical-modeling-001:p307:c02", + "mathematical-modeling-001:p34:c01", + "mathematical-modeling-001:p704:c01", + "mathematical-modeling-001:p55:c01", + "mathematical-modeling-001:p297:c01", + "mathematical-modeling-024:p1:c01", + "mathematical-modeling-001:p295:c01", + "mathematical-modeling-001:p564:c01", + "mathematical-modeling-001:p253:c01", + "mathematical-modeling-001:p267:c01", + "mathematical-modeling-001:p691:c01", + "mathematical-modeling-001:p145:c02" + ], + "duration_ms": 410.779, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "mathematical-modeling-001:p563:c01", + "mathematical-modeling-001:p33:c01", + "mathematical-modeling-001:p473:c01", + "mathematical-modeling-001:p565:c01", + "mathematical-modeling-001:p387:c01", + "mathematical-modeling-001:p269:c01", + "mathematical-modeling-021:p6:c01", + "mathematical-modeling-001:p369:c01", + "mathematical-modeling-001:p307:c02", + "mathematical-modeling-001:p34:c01", + "mathematical-modeling-001:p704:c01", + "mathematical-modeling-001:p55:c01", + "mathematical-modeling-001:p297:c01", + "mathematical-modeling-024:p1:c01", + "mathematical-modeling-001:p295:c01", + "mathematical-modeling-001:p564:c01", + "mathematical-modeling-001:p253:c01", + "mathematical-modeling-001:p267:c01", + "mathematical-modeling-001:p691:c01", + "mathematical-modeling-001:p145:c02" + ] + }, + { + "case_id": "coverage-mathematical_modeling-synthesis", + "topic_id": "coverage-mathematical_modeling-synthesis", + "course_id": "mathematical_modeling", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《2000A_art-model-data》的“2000Aart-model-data”与《18.第十八章 变分法模型》的“18.第十八章 变分法模型”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "mathematical-modeling-011:p11:c01", + "mathematical-modeling-011:p10:c01", + "mathematical-modeling-011:p3:c01", + "mathematical-modeling-011:p4:c01", + "mathematical-modeling-011:p3:c02", + "mathematical-modeling-011:p1:c01", + "mathematical-modeling-011:p7:c01", + "mathematical-modeling-011:p2:c01", + "mathematical-modeling-011:p1:c02", + "mathematical-modeling-011:p7:c02", + "mathematical-modeling-011:p8:c01", + "mathematical-modeling-011:p10:c02", + "mathematical-modeling-011:p12:c01", + "mathematical-modeling-011:p2:c02", + "mathematical-modeling-011:p5:c01", + "mathematical-modeling-011:p6:c01", + "mathematical-modeling-011:p8:c02", + "mathematical-modeling-011:p9:c01", + "mathematical-modeling-011:p9:c02", + "mathematical-modeling-037:s3:c01" + ], + "duration_ms": 418.453, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.09090909090909091, + "unjudged_chunk_ids": [ + "mathematical-modeling-011:p11:c01", + "mathematical-modeling-011:p10:c01", + "mathematical-modeling-011:p3:c01", + "mathematical-modeling-011:p4:c01", + "mathematical-modeling-011:p3:c02", + "mathematical-modeling-011:p1:c01", + "mathematical-modeling-011:p7:c01", + "mathematical-modeling-011:p2:c01", + "mathematical-modeling-011:p1:c02", + "mathematical-modeling-011:p7:c02", + "mathematical-modeling-011:p10:c02", + "mathematical-modeling-011:p12:c01", + "mathematical-modeling-011:p2:c02", + "mathematical-modeling-011:p5:c01", + "mathematical-modeling-011:p6:c01", + "mathematical-modeling-011:p8:c02", + "mathematical-modeling-011:p9:c01", + "mathematical-modeling-011:p9:c02", + "mathematical-modeling-037:s3:c01" + ] + }, + { + "case_id": "coverage-mobile_application_development-anchor", + "topic_id": "coverage-mobile_application_development-anchor", + "course_id": "mobile_application_development", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《课程设计要求及报告模板》中“课程设计要求及报告模板”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "mobile-application-development-003:h-课程设计要求及报告模板:c02", + "mobile-application-development-003:h-课程设计要求及报告模板:c03", + "mobile-application-development-003:h-课程设计要求及报告模板:c01", + "mobile-application-development-002:p2:c01", + "mobile-application-development-002:p1:c01", + "mobile-application-development-006:h-移动应用开发:c01", + "mobile-application-development-008:p7:c01", + "mobile-application-development-004:h-移动应用开发:c01", + "mobile-application-development-005:p2:c01", + "mobile-application-development-005:p1:c01", + "mobile-application-development-008:p13:c01", + "mobile-application-development-008:p19:c01", + "mobile-application-development-005:p3:c01", + "mobile-application-development-008:p20:c01", + "mobile-application-development-008:p8:c01" + ], + "duration_ms": 26.483, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "mobile-application-development-003:h-课程设计要求及报告模板:c02", + "mobile-application-development-003:h-课程设计要求及报告模板:c03", + "mobile-application-development-002:p2:c01", + "mobile-application-development-002:p1:c01", + "mobile-application-development-006:h-移动应用开发:c01", + "mobile-application-development-008:p7:c01", + "mobile-application-development-004:h-移动应用开发:c01", + "mobile-application-development-005:p2:c01", + "mobile-application-development-005:p1:c01", + "mobile-application-development-008:p13:c01", + "mobile-application-development-008:p19:c01", + "mobile-application-development-005:p3:c01", + "mobile-application-development-008:p20:c01", + "mobile-application-development-008:p8:c01" + ] + }, + { + "case_id": "coverage-mobile_application_development-condition", + "topic_id": "coverage-mobile_application_development-condition", + "course_id": "mobile_application_development", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“GeoQuiz V”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "mobile-application-development-007:p1:c01", + "mobile-application-development-007:p5:c02", + "mobile-application-development-007:p3:c01", + "mobile-application-development-007:p4:c02", + "mobile-application-development-007:p4:c01", + "mobile-application-development-007:p3:c02", + "mobile-application-development-007:p2:c01", + "mobile-application-development-007:p2:c02", + "mobile-application-development-007:p5:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c02", + "mobile-application-development-002:p2:c01", + "mobile-application-development-008:p3:c01", + "mobile-application-development-008:p10:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c03" + ], + "duration_ms": 8.81, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.16666666666666666, + "unjudged_chunk_ids": [ + "mobile-application-development-007:p1:c01", + "mobile-application-development-007:p5:c02", + "mobile-application-development-007:p3:c01", + "mobile-application-development-007:p4:c02", + "mobile-application-development-007:p4:c01", + "mobile-application-development-007:p2:c01", + "mobile-application-development-007:p2:c02", + "mobile-application-development-007:p5:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c02", + "mobile-application-development-002:p2:c01", + "mobile-application-development-008:p3:c01", + "mobile-application-development-008:p10:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c03" + ] + }, + { + "case_id": "coverage-mobile_application_development-synthesis", + "topic_id": "coverage-mobile_application_development-synthesis", + "course_id": "mobile_application_development", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《课程设计要求及报告模板》的“课程设计要求及报告模板”与《Android 应用开发课程大作业及报告要求2026春季》的“Android 应用开发课程大作业及报告要求2026春季”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "mobile-application-development-002:p1:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c01", + "mobile-application-development-002:p2:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c02", + "mobile-application-development-003:h-课程设计要求及报告模板:c03", + "mobile-application-development-004:h-移动应用开发:c01", + "mobile-application-development-006:h-移动应用开发:c01", + "mobile-application-development-005:p1:c01", + "mobile-application-development-008:p1:c01", + "mobile-application-development-008:p7:c01", + "mobile-application-development-008:p3:c01", + "mobile-application-development-008:p13:c01", + "mobile-application-development-008:p19:c01", + "mobile-application-development-008:p5:c01", + "mobile-application-development-008:p20:c01", + "mobile-application-development-008:p4:c01", + "mobile-application-development-008:p8:c01", + "mobile-application-development-008:p2:c01" + ], + "duration_ms": 8.379, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "mobile-application-development-002:p2:c01", + "mobile-application-development-003:h-课程设计要求及报告模板:c02", + "mobile-application-development-003:h-课程设计要求及报告模板:c03", + "mobile-application-development-004:h-移动应用开发:c01", + "mobile-application-development-006:h-移动应用开发:c01", + "mobile-application-development-005:p1:c01", + "mobile-application-development-008:p1:c01", + "mobile-application-development-008:p7:c01", + "mobile-application-development-008:p3:c01", + "mobile-application-development-008:p13:c01", + "mobile-application-development-008:p19:c01", + "mobile-application-development-008:p5:c01", + "mobile-application-development-008:p20:c01", + "mobile-application-development-008:p4:c01", + "mobile-application-development-008:p8:c01", + "mobile-application-development-008:p2:c01" + ] + }, + { + "case_id": "coverage-network_application_architecture-anchor", + "topic_id": "coverage-network_application_architecture-anchor", + "course_id": "network_application_architecture", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《《网络应用开发》复习指南》中“《网络应用开发》复习指南”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "network-application-architecture-001:p2:c01", + "network-application-architecture-001:p1:c01" + ], + "duration_ms": 5.725, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "network-application-architecture-001:p2:c01" + ] + }, + { + "case_id": "coverage-network_application_architecture-condition", + "topic_id": "coverage-network_application_architecture-condition", + "course_id": "network_application_architecture", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“《网络应用开发》复习指南”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "network-application-architecture-001:p2:c01", + "network-application-architecture-001:p1:c01" + ], + "duration_ms": 3.936, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "network-application-architecture-001:p1:c01" + ] + }, + { + "case_id": "coverage-network_application_architecture-synthesis", + "topic_id": "coverage-network_application_architecture-synthesis", + "course_id": "network_application_architecture", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《《网络应用开发》复习指南》的“《网络应用开发》复习指南”与《《网络应用开发》复习指南》的“《网络应用开发》复习指南”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "network-application-architecture-001:p2:c01", + "network-application-architecture-001:p1:c01" + ], + "duration_ms": 3.862, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [] + }, + { + "case_id": "coverage-network_management-anchor", + "topic_id": "coverage-network_management-anchor", + "course_id": "network_management", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《实验大纲-2026》中“实验大纲-2026”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "network-management-005:h-实验大纲-2026:c05", + "network-management-005:h-实验大纲-2026:c01", + "network-management-005:h-实验大纲-2026:c02", + "network-management-005:h-实验大纲-2026:c04", + "network-management-005:h-实验大纲-2026:c03", + "network-management-002:p1:c01", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~综合题-5-8:c01", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~选择题-10-2:c01" + ], + "duration_ms": 14.928, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.2, + "unjudged_chunk_ids": [ + "network-management-005:h-实验大纲-2026:c05", + "network-management-005:h-实验大纲-2026:c01", + "network-management-005:h-实验大纲-2026:c02", + "network-management-005:h-实验大纲-2026:c04", + "network-management-002:p1:c01", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~综合题-5-8:c01", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~选择题-10-2:c01" + ] + }, + { + "case_id": "coverage-network_management-condition", + "topic_id": "coverage-network_management-condition", + "course_id": "network_management", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“复习题-2026”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "network-management-002:p1:c01", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~简答题-4-10:c01", + "network-management-001:h-网络管理考试~复习题涉及知识点:c01", + "network-management-005:h-实验大纲-2026:c02", + "network-management-005:h-实验大纲-2026:c03", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~选择题-10-2:c01", + "network-management-005:h-实验大纲-2026:c05" + ], + "duration_ms": 5.804, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "network-management-001:h-网络管理考试~考试题目-2026回忆版~简答题-4-10:c01", + "network-management-001:h-网络管理考试~复习题涉及知识点:c01", + "network-management-005:h-实验大纲-2026:c02", + "network-management-005:h-实验大纲-2026:c03", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~选择题-10-2:c01", + "network-management-005:h-实验大纲-2026:c05" + ] + }, + { + "case_id": "coverage-network_management-synthesis", + "topic_id": "coverage-network_management-synthesis", + "course_id": "network_management", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《实验大纲-2026》的“实验大纲-2026”与《README》的“综合题(5 8)”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "network-management-005:h-实验大纲-2026:c02", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~综合题-5-8:c01", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~简答题-4-10:c01", + "network-management-005:h-实验大纲-2026:c03", + "network-management-005:h-实验大纲-2026:c01", + "network-management-002:p1:c01", + "network-management-005:h-实验大纲-2026:c05", + "network-management-005:h-实验大纲-2026:c04", + "network-management-001:h-网络管理考试~题型:c01", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~选择题-10-2:c01" + ], + "duration_ms": 5.938, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "network-management-005:h-实验大纲-2026:c02", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~简答题-4-10:c01", + "network-management-005:h-实验大纲-2026:c01", + "network-management-002:p1:c01", + "network-management-005:h-实验大纲-2026:c05", + "network-management-005:h-实验大纲-2026:c04", + "network-management-001:h-网络管理考试~题型:c01", + "network-management-001:h-网络管理考试~考试题目-2026回忆版~选择题-10-2:c01" + ] + }, + { + "case_id": "coverage-next_generation_network_architecture-anchor", + "topic_id": "coverage-next_generation_network_architecture-anchor", + "course_id": "next_generation_network_architecture", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《天地一体化网络最终版2》中“天地一体化架构主要应用场景”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "next-generation-network-architecture-001:s18:c01", + "next-generation-network-architecture-001:s17:c01", + "next-generation-network-architecture-001:s16:c01", + "next-generation-network-architecture-001:s2:c01", + "next-generation-network-architecture-001:s14:c01", + "next-generation-network-architecture-001:s9:c01", + "next-generation-network-architecture-001:s8:c01", + "next-generation-network-architecture-001:s10:c01", + "next-generation-network-architecture-001:s3:c01", + "next-generation-network-architecture-001:s32:c01", + "next-generation-network-architecture-001:s13:c01", + "next-generation-network-architecture-001:s12:c01" + ], + "duration_ms": 20.286, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "next-generation-network-architecture-001:s17:c01", + "next-generation-network-architecture-001:s16:c01", + "next-generation-network-architecture-001:s2:c01", + "next-generation-network-architecture-001:s14:c01", + "next-generation-network-architecture-001:s9:c01", + "next-generation-network-architecture-001:s8:c01", + "next-generation-network-architecture-001:s10:c01", + "next-generation-network-architecture-001:s3:c01", + "next-generation-network-architecture-001:s32:c01", + "next-generation-network-architecture-001:s13:c01", + "next-generation-network-architecture-001:s12:c01" + ] + }, + { + "case_id": "coverage-next_generation_network_architecture-condition", + "topic_id": "coverage-next_generation_network_architecture-condition", + "course_id": "next_generation_network_architecture", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“网络安全问题”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "next-generation-network-architecture-001:s24:c01", + "next-generation-network-architecture-001:s20:c01", + "next-generation-network-architecture-001:s10:c01", + "next-generation-network-architecture-001:s30:c01", + "next-generation-network-architecture-001:s8:c01", + "next-generation-network-architecture-001:s25:c01", + "next-generation-network-architecture-001:s26:c01", + "next-generation-network-architecture-001:s9:c01", + "next-generation-network-architecture-001:s21:c01", + "next-generation-network-architecture-001:s23:c01", + "next-generation-network-architecture-001:s17:c01" + ], + "duration_ms": 6.546, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "next-generation-network-architecture-001:s20:c01", + "next-generation-network-architecture-001:s10:c01", + "next-generation-network-architecture-001:s30:c01", + "next-generation-network-architecture-001:s8:c01", + "next-generation-network-architecture-001:s25:c01", + "next-generation-network-architecture-001:s26:c01", + "next-generation-network-architecture-001:s9:c01", + "next-generation-network-architecture-001:s21:c01", + "next-generation-network-architecture-001:s23:c01", + "next-generation-network-architecture-001:s17:c01" + ] + }, + { + "case_id": "coverage-next_generation_network_architecture-synthesis", + "topic_id": "coverage-next_generation_network_architecture-synthesis", + "course_id": "next_generation_network_architecture", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《天地一体化网络最终版2》的“天地一体化架构主要应用场景”与《天地一体化网络最终版2》的“天地一体化网络研究报告”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "next-generation-network-architecture-001:s18:c01", + "next-generation-network-architecture-001:s17:c01", + "next-generation-network-architecture-001:s2:c01", + "next-generation-network-architecture-001:s16:c01", + "next-generation-network-architecture-001:s3:c01", + "next-generation-network-architecture-001:s10:c01", + "next-generation-network-architecture-001:s7:c01", + "next-generation-network-architecture-001:s9:c01", + "next-generation-network-architecture-001:s8:c01", + "next-generation-network-architecture-001:s4:c01", + "next-generation-network-architecture-001:s6:c01", + "next-generation-network-architecture-001:s14:c01", + "next-generation-network-architecture-001:s15:c01", + "next-generation-network-architecture-001:s11:c01", + "next-generation-network-architecture-001:s12:c01", + "next-generation-network-architecture-001:s13:c01", + "next-generation-network-architecture-001:s5:c01", + "next-generation-network-architecture-001:s1:c01", + "next-generation-network-architecture-001:s32:c01", + "next-generation-network-architecture-001:s31:c01" + ], + "duration_ms": 7.699, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.5, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "next-generation-network-architecture-001:s17:c01", + "next-generation-network-architecture-001:s2:c01", + "next-generation-network-architecture-001:s16:c01", + "next-generation-network-architecture-001:s3:c01", + "next-generation-network-architecture-001:s10:c01", + "next-generation-network-architecture-001:s7:c01", + "next-generation-network-architecture-001:s9:c01", + "next-generation-network-architecture-001:s4:c01", + "next-generation-network-architecture-001:s6:c01", + "next-generation-network-architecture-001:s14:c01", + "next-generation-network-architecture-001:s15:c01", + "next-generation-network-architecture-001:s11:c01", + "next-generation-network-architecture-001:s12:c01", + "next-generation-network-architecture-001:s13:c01", + "next-generation-network-architecture-001:s5:c01", + "next-generation-network-architecture-001:s1:c01", + "next-generation-network-architecture-001:s32:c01", + "next-generation-network-architecture-001:s31:c01" + ] + }, + { + "case_id": "coverage-operating_systems-anchor", + "topic_id": "coverage-operating_systems-anchor", + "course_id": "operating_systems", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《OS2018真题Ans》中“OS2018真题Ans”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "operating-systems-044:s8:c01", + "operating-systems-022:h-os2018真题ans:c03", + "operating-systems-044:s49:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-24-题-分-paging-的核心思想~2-测试题型:c01", + "operating-systems-022:h-os2018真题ans:c01", + "operating-systems-022:h-os2018真题ans:c02", + "operating-systems-022:h-os2018真题ans:c04", + "operating-systems-022:h-os2018真题ans:c05", + "operating-systems-041:s7:c01", + "operating-systems-001:h-第-12-题-多级反馈队列-mlfq~1-知识点~2-测试题型:c01", + "operating-systems-001:h-第-17-题-虚拟内存~1-知识点~2-测试题型:c01", + "operating-systems-038:s124:c01", + "operating-systems-003:p1:c01", + "operating-systems-043:s22:c01", + "operating-systems-038:s126:c01", + "operating-systems-046:s19:c01", + "operating-systems-040:s2:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-24-题-分-paging-的核心思想~1-知识点:c01", + "operating-systems-044:s37:c01", + "operating-systems-045:s30:c01" + ], + "duration_ms": 717.364, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.16666666666666666, + "unjudged_chunk_ids": [ + "operating-systems-044:s8:c01", + "operating-systems-022:h-os2018真题ans:c03", + "operating-systems-044:s49:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-24-题-分-paging-的核心思想~2-测试题型:c01", + "operating-systems-022:h-os2018真题ans:c01", + "operating-systems-022:h-os2018真题ans:c04", + "operating-systems-022:h-os2018真题ans:c05", + "operating-systems-041:s7:c01", + "operating-systems-001:h-第-12-题-多级反馈队列-mlfq~1-知识点~2-测试题型:c01", + "operating-systems-001:h-第-17-题-虚拟内存~1-知识点~2-测试题型:c01", + "operating-systems-038:s124:c01", + "operating-systems-003:p1:c01", + "operating-systems-043:s22:c01", + "operating-systems-038:s126:c01", + "operating-systems-046:s19:c01", + "operating-systems-040:s2:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-24-题-分-paging-的核心思想~1-知识点:c01", + "operating-systems-044:s37:c01", + "operating-systems-045:s30:c01" + ] + }, + { + "case_id": "coverage-operating_systems-condition", + "topic_id": "coverage-operating_systems-condition", + "course_id": "operating_systems", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“QT 与 Vulkan的关系”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "operating-systems-041:s24:c01", + "operating-systems-041:s24:c02", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-70-题-读者-写者问题~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-90-题-i-o-阻塞与非阻塞~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-30-题-面抖动-thrashing~2-测试题型:c01", + "operating-systems-013:p2:c01", + "operating-systems-041:s23:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-63-题-线程库~2-测试题型:c01", + "operating-systems-041:s22:c01", + "operating-systems-040:s6:c01", + "operating-systems-040:s1:c01", + "operating-systems-040:s2:c01", + "operating-systems-040:s3:c01", + "operating-systems-040:s4:c01", + "operating-systems-040:s5:c01", + "operating-systems-040:s7:c01", + "operating-systems-045:s20:c01", + "operating-systems-026:h-os上古大题范围:c01", + "operating-systems-043:s36:c01", + "operating-systems-003:p5:q-operating-systems-003-q46:c02" + ], + "duration_ms": 93.861, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "operating-systems-041:s24:c02", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-70-题-读者-写者问题~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-90-题-i-o-阻塞与非阻塞~2-测试题型:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-30-题-面抖动-thrashing~2-测试题型:c01", + "operating-systems-013:p2:c01", + "operating-systems-041:s23:c01", + "operating-systems-001:h-第-20-题-缺-异常-page-fault~第-63-题-线程库~2-测试题型:c01", + "operating-systems-041:s22:c01", + "operating-systems-040:s6:c01", + "operating-systems-040:s1:c01", + "operating-systems-040:s2:c01", + "operating-systems-040:s3:c01", + "operating-systems-040:s4:c01", + "operating-systems-040:s5:c01", + "operating-systems-040:s7:c01", + "operating-systems-045:s20:c01", + "operating-systems-026:h-os上古大题范围:c01", + "operating-systems-043:s36:c01", + "operating-systems-003:p5:q-operating-systems-003-q46:c02" + ] + }, + { + "case_id": "coverage-operating_systems-synthesis", + "topic_id": "coverage-operating_systems-synthesis", + "course_id": "operating_systems", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《OS2018真题Ans》的“OS2018真题Ans”与《OS2008EGB真题Que》的“OS2008EGB真题Que”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "operating-systems-009:p3:c01", + "operating-systems-022:h-os2018真题ans:c02", + "operating-systems-010:p5:c01", + "operating-systems-042:s4:c01", + "operating-systems-022:h-os2018真题ans:c01", + "operating-systems-009:p1:c01", + "operating-systems-039:s22:c01", + "operating-systems-022:h-os2018真题ans:c03", + "operating-systems-022:h-os2018真题ans:c04", + "operating-systems-022:h-os2018真题ans:c05", + "operating-systems-043:s24:c01", + "operating-systems-010:p4:c01", + "operating-systems-023:h-os2018真题que:c01", + "operating-systems-023:h-os2018真题que:c02", + "operating-systems-023:h-os2018真题que:c03", + "operating-systems-023:h-os2018真题que:c04", + "operating-systems-023:h-os2018真题que:c05", + "operating-systems-023:h-os2018真题que:c06", + "operating-systems-009:p2:c01", + "operating-systems-009:p4:c01" + ], + "duration_ms": 97.45, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.5, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "operating-systems-009:p3:c01", + "operating-systems-010:p5:c01", + "operating-systems-042:s4:c01", + "operating-systems-022:h-os2018真题ans:c01", + "operating-systems-009:p1:c01", + "operating-systems-039:s22:c01", + "operating-systems-022:h-os2018真题ans:c03", + "operating-systems-022:h-os2018真题ans:c04", + "operating-systems-022:h-os2018真题ans:c05", + "operating-systems-043:s24:c01", + "operating-systems-010:p4:c01", + "operating-systems-023:h-os2018真题que:c01", + "operating-systems-023:h-os2018真题que:c02", + "operating-systems-023:h-os2018真题que:c03", + "operating-systems-023:h-os2018真题que:c04", + "operating-systems-023:h-os2018真题que:c05", + "operating-systems-023:h-os2018真题que:c06", + "operating-systems-009:p2:c01", + "operating-systems-009:p4:c01" + ] + }, + { + "case_id": "coverage-probability_theory-anchor", + "topic_id": "coverage-probability_theory-anchor", + "course_id": "probability_theory", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《2020—2021学年第二学期《概率论与数理统计》A卷答案》中“2020—2021学年第二学期《概率论与数理统计》A卷答案”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "probability-theory-010:q-probability-theory-010-q4:c01", + "probability-theory-010:q-probability-theory-010-q10:c01", + "probability-theory-010:q-probability-theory-010-q3:c01", + "probability-theory-010:h-2020-2021学年第二学期-概率论与数理统计-a卷答案:c01", + "probability-theory-010:q-probability-theory-010-q11:c01", + "probability-theory-010:q-probability-theory-010-q16:c04", + "probability-theory-010:q-probability-theory-010-q5:c01", + "probability-theory-010:q-probability-theory-010-q4:c02", + "probability-theory-010:q-probability-theory-010-q12:c01", + "probability-theory-010:q-probability-theory-010-q8:c01", + "probability-theory-010:q-probability-theory-010-q4:c03", + "probability-theory-010:q-probability-theory-010-q9:c02", + "probability-theory-010:q-probability-theory-010-q16:c01", + "probability-theory-010:q-probability-theory-010-q13:c01", + "probability-theory-010:q-probability-theory-010-q16:c02", + "probability-theory-010:q-probability-theory-010-q1:c01", + "probability-theory-010:q-probability-theory-010-q16:c05", + "probability-theory-010:q-probability-theory-010-q7:c01", + "probability-theory-010:q-probability-theory-010-q9:c01", + "probability-theory-010:q-probability-theory-010-q6:c01" + ], + "duration_ms": 153.66, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.05263157894736842, + "unjudged_chunk_ids": [ + "probability-theory-010:q-probability-theory-010-q4:c01", + "probability-theory-010:q-probability-theory-010-q10:c01", + "probability-theory-010:q-probability-theory-010-q3:c01", + "probability-theory-010:h-2020-2021学年第二学期-概率论与数理统计-a卷答案:c01", + "probability-theory-010:q-probability-theory-010-q11:c01", + "probability-theory-010:q-probability-theory-010-q16:c04", + "probability-theory-010:q-probability-theory-010-q5:c01", + "probability-theory-010:q-probability-theory-010-q4:c02", + "probability-theory-010:q-probability-theory-010-q12:c01", + "probability-theory-010:q-probability-theory-010-q8:c01", + "probability-theory-010:q-probability-theory-010-q4:c03", + "probability-theory-010:q-probability-theory-010-q9:c02", + "probability-theory-010:q-probability-theory-010-q16:c01", + "probability-theory-010:q-probability-theory-010-q13:c01", + "probability-theory-010:q-probability-theory-010-q16:c02", + "probability-theory-010:q-probability-theory-010-q1:c01", + "probability-theory-010:q-probability-theory-010-q16:c05", + "probability-theory-010:q-probability-theory-010-q7:c01", + "probability-theory-010:q-probability-theory-010-q6:c01" + ] + }, + { + "case_id": "coverage-probability_theory-condition", + "topic_id": "coverage-probability_theory-condition", + "course_id": "probability_theory", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“2018春季A卷答案”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "probability-theory-025:p6:q-probability-theory-025-q20:c01", + "probability-theory-015:h-2018春季a卷答案:c01", + "probability-theory-015:q-probability-theory-015-q1:c02", + "probability-theory-015:q-probability-theory-015-q5:c01", + "probability-theory-015:q-probability-theory-015-q1:c01", + "probability-theory-015:q-probability-theory-015-q2:c01", + "probability-theory-015:q-probability-theory-015-q3:c01", + "probability-theory-015:q-probability-theory-015-q13:c01", + "probability-theory-015:h-2018春季a卷答案:c02", + "probability-theory-015:q-probability-theory-015-q10:c01", + "probability-theory-015:q-probability-theory-015-q11:c01", + "probability-theory-015:q-probability-theory-015-q12:c01", + "probability-theory-015:q-probability-theory-015-q14:c01", + "probability-theory-015:q-probability-theory-015-q14:c02", + "probability-theory-015:q-probability-theory-015-q4:c01", + "probability-theory-015:q-probability-theory-015-q6:c01", + "probability-theory-015:q-probability-theory-015-q7:c01", + "probability-theory-015:q-probability-theory-015-q8:c01", + "probability-theory-015:q-probability-theory-015-q9:c01", + "probability-theory-022:p5:q-probability-theory-022-q22:c01" + ], + "duration_ms": 42.971, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.07692307692307693, + "unjudged_chunk_ids": [ + "probability-theory-025:p6:q-probability-theory-025-q20:c01", + "probability-theory-015:h-2018春季a卷答案:c01", + "probability-theory-015:q-probability-theory-015-q1:c02", + "probability-theory-015:q-probability-theory-015-q5:c01", + "probability-theory-015:q-probability-theory-015-q1:c01", + "probability-theory-015:q-probability-theory-015-q2:c01", + "probability-theory-015:q-probability-theory-015-q3:c01", + "probability-theory-015:q-probability-theory-015-q13:c01", + "probability-theory-015:h-2018春季a卷答案:c02", + "probability-theory-015:q-probability-theory-015-q10:c01", + "probability-theory-015:q-probability-theory-015-q11:c01", + "probability-theory-015:q-probability-theory-015-q12:c01", + "probability-theory-015:q-probability-theory-015-q14:c02", + "probability-theory-015:q-probability-theory-015-q4:c01", + "probability-theory-015:q-probability-theory-015-q6:c01", + "probability-theory-015:q-probability-theory-015-q7:c01", + "probability-theory-015:q-probability-theory-015-q8:c01", + "probability-theory-015:q-probability-theory-015-q9:c01", + "probability-theory-022:p5:q-probability-theory-022-q22:c01" + ] + }, + { + "case_id": "coverage-probability_theory-synthesis", + "topic_id": "coverage-probability_theory-synthesis", + "course_id": "probability_theory", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《2020—2021学年第二学期《概率论与数理统计》A卷答案》的“2020—2021学年第二学期《概率论与数理统计》A卷答案”与《2023概率A(1)》的“2023概率A(1)”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "probability-theory-010:q-probability-theory-010-q1:c01", + "probability-theory-010:q-probability-theory-010-q10:c01", + "probability-theory-010:h-2020-2021学年第二学期-概率论与数理统计-a卷答案:c01", + "probability-theory-010:q-probability-theory-010-q16:c03", + "probability-theory-010:q-probability-theory-010-q8:c01", + "probability-theory-010:q-probability-theory-010-q3:c01", + "probability-theory-010:q-probability-theory-010-q17:c02", + "probability-theory-010:q-probability-theory-010-q16:c04", + "probability-theory-010:q-probability-theory-010-q4:c03", + "probability-theory-010:q-probability-theory-010-q5:c01", + "probability-theory-010:q-probability-theory-010-q11:c01", + "probability-theory-010:q-probability-theory-010-q4:c02", + "probability-theory-010:q-probability-theory-010-q16:c05", + "probability-theory-010:q-probability-theory-010-q16:c02", + "probability-theory-010:q-probability-theory-010-q16:c01", + "probability-theory-010:q-probability-theory-010-q4:c01", + "probability-theory-010:q-probability-theory-010-q9:c03", + "probability-theory-010:q-probability-theory-010-q17:c01", + "probability-theory-010:q-probability-theory-010-q7:c01", + "probability-theory-010:q-probability-theory-010-q9:c01" + ], + "duration_ms": 43.948, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.05, + "unjudged_chunk_ids": [ + "probability-theory-010:q-probability-theory-010-q1:c01", + "probability-theory-010:q-probability-theory-010-q10:c01", + "probability-theory-010:h-2020-2021学年第二学期-概率论与数理统计-a卷答案:c01", + "probability-theory-010:q-probability-theory-010-q16:c03", + "probability-theory-010:q-probability-theory-010-q8:c01", + "probability-theory-010:q-probability-theory-010-q3:c01", + "probability-theory-010:q-probability-theory-010-q17:c02", + "probability-theory-010:q-probability-theory-010-q16:c04", + "probability-theory-010:q-probability-theory-010-q4:c03", + "probability-theory-010:q-probability-theory-010-q5:c01", + "probability-theory-010:q-probability-theory-010-q11:c01", + "probability-theory-010:q-probability-theory-010-q4:c02", + "probability-theory-010:q-probability-theory-010-q16:c05", + "probability-theory-010:q-probability-theory-010-q16:c02", + "probability-theory-010:q-probability-theory-010-q16:c01", + "probability-theory-010:q-probability-theory-010-q4:c01", + "probability-theory-010:q-probability-theory-010-q9:c03", + "probability-theory-010:q-probability-theory-010-q17:c01", + "probability-theory-010:q-probability-theory-010-q7:c01" + ] + }, + { + "case_id": "coverage-signals_and_communication-anchor", + "topic_id": "coverage-signals_and_communication-anchor", + "course_id": "signals_and_communication", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《信号处理与通信基础-实验手册-v2-2025》中“信号处理与通信基础-实验手册-v2-2025”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c01", + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c03", + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c04", + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c02", + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c05", + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c06", + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c07", + "signals-and-communication-005:p1:c01", + "signals-and-communication-006:p1:c01", + "signals-and-communication-002:h-实验报告模板:c01", + "signals-and-communication-012:s5:c01", + "signals-and-communication-012:s6:c01", + "signals-and-communication-011:p1:c01", + "signals-and-communication-006:p7:c01", + "signals-and-communication-012:s8:c01", + "signals-and-communication-012:s11:c01", + "signals-and-communication-005:p46:c01", + "signals-and-communication-014:s3:c01", + "signals-and-communication-006:p99:c01", + "signals-and-communication-006:p104:c01" + ], + "duration_ms": 396.763, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c03", + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c04", + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c02", + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c05", + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c06", + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c07", + "signals-and-communication-005:p1:c01", + "signals-and-communication-006:p1:c01", + "signals-and-communication-002:h-实验报告模板:c01", + "signals-and-communication-012:s5:c01", + "signals-and-communication-012:s6:c01", + "signals-and-communication-011:p1:c01", + "signals-and-communication-006:p7:c01", + "signals-and-communication-012:s8:c01", + "signals-and-communication-012:s11:c01", + "signals-and-communication-005:p46:c01", + "signals-and-communication-014:s3:c01", + "signals-and-communication-006:p99:c01", + "signals-and-communication-006:p104:c01" + ] + }, + { + "case_id": "coverage-signals_and_communication-condition", + "topic_id": "coverage-signals_and_communication-condition", + "course_id": "signals_and_communication", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“通信基础-差错控制编码-2025F”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "signals-and-communication-007:p103:c01", + "signals-and-communication-007:p94:c01", + "signals-and-communication-007:p21:c01", + "signals-and-communication-007:p11:c01", + "signals-and-communication-007:p118:c01", + "signals-and-communication-007:p34:c01", + "signals-and-communication-007:p50:c01", + "signals-and-communication-007:p8:c01", + "signals-and-communication-007:p87:c01", + "signals-and-communication-007:p25:c01", + "signals-and-communication-007:p22:c01", + "signals-and-communication-007:p86:c01", + "signals-and-communication-007:p153:c01", + "signals-and-communication-007:p102:c01", + "signals-and-communication-007:p93:c01", + "signals-and-communication-007:p155:c01", + "signals-and-communication-007:p135:c01", + "signals-and-communication-007:p150:c01", + "signals-and-communication-007:p32:c01", + "signals-and-communication-007:p160:c01" + ], + "duration_ms": 86.287, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "signals-and-communication-007:p103:c01", + "signals-and-communication-007:p94:c01", + "signals-and-communication-007:p21:c01", + "signals-and-communication-007:p11:c01", + "signals-and-communication-007:p118:c01", + "signals-and-communication-007:p34:c01", + "signals-and-communication-007:p50:c01", + "signals-and-communication-007:p8:c01", + "signals-and-communication-007:p87:c01", + "signals-and-communication-007:p25:c01", + "signals-and-communication-007:p22:c01", + "signals-and-communication-007:p86:c01", + "signals-and-communication-007:p153:c01", + "signals-and-communication-007:p102:c01", + "signals-and-communication-007:p93:c01", + "signals-and-communication-007:p155:c01", + "signals-and-communication-007:p135:c01", + "signals-and-communication-007:p150:c01", + "signals-and-communication-007:p32:c01", + "signals-and-communication-007:p160:c01" + ] + }, + { + "case_id": "coverage-signals_and_communication-synthesis", + "topic_id": "coverage-signals_and_communication-synthesis", + "course_id": "signals_and_communication", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《信号处理与通信基础-实验手册-v2-2025》的“信号处理与通信基础-实验手册-v2-2025”与《第3章 离散傅里叶变换》的“【例3-5】已知x(n)=cos(nπ/6)是一个长度N=12的有限长序列,求它的N点DFT。”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "signals-and-communication-014:s62:c01", + "signals-and-communication-014:s59:c01", + "signals-and-communication-014:s31:c01", + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c03", + "signals-and-communication-014:s45:c01", + "signals-and-communication-014:s47:c01", + "signals-and-communication-014:s39:c01", + "signals-and-communication-014:s46:c01", + "signals-and-communication-014:s33:c01", + "signals-and-communication-014:s34:c01", + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c04", + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c01", + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c05", + "signals-and-communication-014:s43:c01", + "signals-and-communication-014:s36:c01", + "signals-and-communication-014:s28:c01", + "signals-and-communication-014:s40:c01", + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c06", + "signals-and-communication-014:s56:c01", + "signals-and-communication-014:s29:c01" + ], + "duration_ms": 98.207, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.08333333333333333, + "unjudged_chunk_ids": [ + "signals-and-communication-014:s62:c01", + "signals-and-communication-014:s59:c01", + "signals-and-communication-014:s31:c01", + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c03", + "signals-and-communication-014:s45:c01", + "signals-and-communication-014:s47:c01", + "signals-and-communication-014:s39:c01", + "signals-and-communication-014:s46:c01", + "signals-and-communication-014:s33:c01", + "signals-and-communication-014:s34:c01", + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c04", + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c05", + "signals-and-communication-014:s43:c01", + "signals-and-communication-014:s36:c01", + "signals-and-communication-014:s28:c01", + "signals-and-communication-014:s40:c01", + "signals-and-communication-001:h-信号处理与通信基础-实验手册-v2-2025:c06", + "signals-and-communication-014:s56:c01", + "signals-and-communication-014:s29:c01" + ] + }, + { + "case_id": "coverage-software_engineering-anchor", + "topic_id": "coverage-software_engineering-anchor", + "course_id": "software_engineering", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《华南理工大学软件工程概论考纲针对模拟题》中“4. 类模型(Class Model)”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题3-校园二手交易平台系统~一-核心考点-uml全流程建模-用例图-用例描述-活动图-类图~4.-类模型-class-model:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题3-校园二手交易平台系统~一-核心考点-uml全流程建模-用例图-用例描述-活动图-类图~4.-类模型-class-model:c02", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题1-公共设施报修管理系统-路面坑洼跟踪与修补~一-核心考点-uml建模-用例图-活动图-类图-用例描述~4.-类模型-class-model:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题1-公共设施报修管理系统-路面坑洼跟踪与修补~一-核心考点-uml建模-用例图-活动图-类图-用例描述~4.-类模型-class-model:c02", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题2-智能陪聊机器人-小伴-软件策划-ai童伴~一-核心考点-项目策划-需求分析-概要设计-质量保障~4.-质量保障措施和方法-具体可落地:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题3-校园二手交易平台系统~一-核心考点-uml全流程建模-用例图-用例描述-活动图-类图~自测检查点:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题4-智能社区垃圾分类监测项目~一-核心考点-软件工程全流程策划-项目定位-需求分析-概要设计-qa计划~自测检查点:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟练习题-1-在线图书共享与交换系统:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第五组-项目管理与度量指标:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题4-智能社区垃圾分类监测项目~一-核心考点-软件工程全流程策划-项目定位-需求分析-概要设计-qa计划~2.-需求分析-区分功能-非功能:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第一组-定义与生命周期:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第三组-系统设计与面向对象-solid:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~一-判断题-50道~第三组-系统设计与原则-u5-l8:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题4-智能社区垃圾分类监测项目~一-核心考点-软件工程全流程策划-项目定位-需求分析-概要设计-qa计划~3.-概要设计-模块化架构:c02", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~一-判断题-50道~第一组-软件基础与生命周期-l1-l2:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题4-智能社区垃圾分类监测项目~一-核心考点-软件工程全流程策划-项目定位-需求分析-概要设计-qa计划~4.-软件质量保障-qa-计划-可落地的具体措施:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题4-智能社区垃圾分类监测项目~一-核心考点-软件工程全流程策划-项目定位-需求分析-概要设计-qa计划~1.-项目基础信息:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题2-智能陪聊机器人-小伴-软件策划-ai童伴~一-核心考点-项目策划-需求分析-概要设计-质量保障~2.-需求分析-区分功能-非功能:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~一-判断题-50道~第二组-需求分析与-uml-l3:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题2-智能陪聊机器人-小伴-软件策划-ai童伴~一-核心考点-项目策划-需求分析-概要设计-质量保障~1.-项目基础信息:c01" + ], + "duration_ms": 1197.669, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题3-校园二手交易平台系统~一-核心考点-uml全流程建模-用例图-用例描述-活动图-类图~4.-类模型-class-model:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题1-公共设施报修管理系统-路面坑洼跟踪与修补~一-核心考点-uml建模-用例图-活动图-类图-用例描述~4.-类模型-class-model:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题1-公共设施报修管理系统-路面坑洼跟踪与修补~一-核心考点-uml建模-用例图-活动图-类图-用例描述~4.-类模型-class-model:c02", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题2-智能陪聊机器人-小伴-软件策划-ai童伴~一-核心考点-项目策划-需求分析-概要设计-质量保障~4.-质量保障措施和方法-具体可落地:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题3-校园二手交易平台系统~一-核心考点-uml全流程建模-用例图-用例描述-活动图-类图~自测检查点:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题4-智能社区垃圾分类监测项目~一-核心考点-软件工程全流程策划-项目定位-需求分析-概要设计-qa计划~自测检查点:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟练习题-1-在线图书共享与交换系统:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第五组-项目管理与度量指标:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题4-智能社区垃圾分类监测项目~一-核心考点-软件工程全流程策划-项目定位-需求分析-概要设计-qa计划~2.-需求分析-区分功能-非功能:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第一组-定义与生命周期:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第三组-系统设计与面向对象-solid:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~一-判断题-50道~第三组-系统设计与原则-u5-l8:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题4-智能社区垃圾分类监测项目~一-核心考点-软件工程全流程策划-项目定位-需求分析-概要设计-qa计划~3.-概要设计-模块化架构:c02", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~一-判断题-50道~第一组-软件基础与生命周期-l1-l2:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题4-智能社区垃圾分类监测项目~一-核心考点-软件工程全流程策划-项目定位-需求分析-概要设计-qa计划~4.-软件质量保障-qa-计划-可落地的具体措施:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题4-智能社区垃圾分类监测项目~一-核心考点-软件工程全流程策划-项目定位-需求分析-概要设计-qa计划~1.-项目基础信息:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题2-智能陪聊机器人-小伴-软件策划-ai童伴~一-核心考点-项目策划-需求分析-概要设计-质量保障~2.-需求分析-区分功能-非功能:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~一-判断题-50道~第二组-需求分析与-uml-l3:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题2-智能陪聊机器人-小伴-软件策划-ai童伴~一-核心考点-项目策划-需求分析-概要设计-质量保障~1.-项目基础信息:c01" + ] + }, + { + "case_id": "coverage-software_engineering-condition", + "topic_id": "coverage-software_engineering-condition", + "course_id": "software_engineering", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“COCOMOII软件项目管理中的成本估算方法”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "software-engineering-009:p1:c01", + "software-engineering-009:p1:c02", + "software-engineering-009:p3:c01", + "software-engineering-009:p3:c02", + "software-engineering-009:p2:c01", + "software-engineering-009:p2:c03", + "software-engineering-009:p3:c03", + "software-engineering-009:p2:c02", + "software-engineering-009:p1:c03", + "software-engineering-002:p93:c01", + "software-engineering-002:p86:c01", + "software-engineering-010:s4:c01", + "software-engineering-013:s36:c01", + "software-engineering-027:s6:c01", + "software-engineering-013:s37:c01", + "software-engineering-027:s5:c01", + "software-engineering-027:s4:c01", + "software-engineering-013:s2:c01", + "software-engineering-013:s1:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第五组-项目管理与度量指标:c01" + ], + "duration_ms": 167.389, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.25, + "unjudged_chunk_ids": [ + "software-engineering-009:p1:c01", + "software-engineering-009:p1:c02", + "software-engineering-009:p3:c01", + "software-engineering-009:p2:c01", + "software-engineering-009:p2:c03", + "software-engineering-009:p3:c03", + "software-engineering-009:p2:c02", + "software-engineering-009:p1:c03", + "software-engineering-002:p93:c01", + "software-engineering-002:p86:c01", + "software-engineering-010:s4:c01", + "software-engineering-013:s36:c01", + "software-engineering-027:s6:c01", + "software-engineering-013:s37:c01", + "software-engineering-027:s5:c01", + "software-engineering-027:s4:c01", + "software-engineering-013:s2:c01", + "software-engineering-013:s1:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第五组-项目管理与度量指标:c01" + ] + }, + { + "case_id": "coverage-software_engineering-synthesis", + "topic_id": "coverage-software_engineering-synthesis", + "course_id": "software_engineering", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《华南理工大学软件工程概论考纲针对模拟题》的“4. 类模型(Class Model)”与《华南理工大学《软件工程》样例含答案》的“华南理工大学《软件工程》样例含答案”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题3-校园二手交易平台系统~一-核心考点-uml全流程建模-用例图-用例描述-活动图-类图~4.-类模型-class-model:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题3-校园二手交易平台系统~一-核心考点-uml全流程建模-用例图-用例描述-活动图-类图~4.-类模型-class-model:c02", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题1-公共设施报修管理系统-路面坑洼跟踪与修补~一-核心考点-uml建模-用例图-活动图-类图-用例描述~4.-类模型-class-model:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题1-公共设施报修管理系统-路面坑洼跟踪与修补~一-核心考点-uml建模-用例图-活动图-类图-用例描述~4.-类模型-class-model:c02", + "software-engineering-036:h-软件工程核心考点精选100题-含答案:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~一-判断题-50道~第一组-软件基础与生命周期-l1-l2:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第二组-需求分析与-uml-绘图:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~一-判断题-50道~第三组-系统设计与原则-u5-l8:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~三-答案速查表~选择题答案:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第一组-定义与生命周期:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第三组-系统设计与面向对象-solid:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~三-答案速查表~判断题答案:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~一-判断题-50道~第四组-软件测试-l6:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~一-判断题-50道~第五组-维护与指标-l7-l9-l11:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~一-判断题-50道~第二组-需求分析与-uml-l3:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第四组-软件测试与维护:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第五组-项目管理与度量指标:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟练习题-1-在线图书共享与交换系统:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~通用学习建议-重点强调:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题4-智能社区垃圾分类监测项目~一-核心考点-软件工程全流程策划-项目定位-需求分析-概要设计-qa计划~3.-概要设计-模块化架构:c02" + ], + "duration_ms": 176.154, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.5, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题3-校园二手交易平台系统~一-核心考点-uml全流程建模-用例图-用例描述-活动图-类图~4.-类模型-class-model:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题1-公共设施报修管理系统-路面坑洼跟踪与修补~一-核心考点-uml建模-用例图-活动图-类图-用例描述~4.-类模型-class-model:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题1-公共设施报修管理系统-路面坑洼跟踪与修补~一-核心考点-uml建模-用例图-活动图-类图-用例描述~4.-类模型-class-model:c02", + "software-engineering-036:h-软件工程核心考点精选100题-含答案:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~一-判断题-50道~第一组-软件基础与生命周期-l1-l2:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第二组-需求分析与-uml-绘图:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~一-判断题-50道~第三组-系统设计与原则-u5-l8:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~三-答案速查表~选择题答案:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第一组-定义与生命周期:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第三组-系统设计与面向对象-solid:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~三-答案速查表~判断题答案:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~一-判断题-50道~第四组-软件测试-l6:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~一-判断题-50道~第五组-维护与指标-l7-l9-l11:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~一-判断题-50道~第二组-需求分析与-uml-l3:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第四组-软件测试与维护:c01", + "software-engineering-036:h-软件工程核心考点精选100题-含答案~二-选择题-50道~第五组-项目管理与度量指标:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟练习题-1-在线图书共享与交换系统:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~通用学习建议-重点强调:c01", + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题4-智能社区垃圾分类监测项目~一-核心考点-软件工程全流程策划-项目定位-需求分析-概要设计-qa计划~3.-概要设计-模块化架构:c02" + ] + }, + { + "case_id": "coverage-software_testing-anchor", + "topic_id": "coverage-software_testing-anchor", + "course_id": "software_testing", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《Unit6》中“二、网络攻击防范措施(针对每种攻击)”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "software-testing-044:h-unit6~第七章-网络安全性测试-考试重点~二-网络攻击防范措施-针对每种攻击:c01", + "software-testing-044:h-unit6~第七章-网络安全性测试-考试重点~二-网络攻击防范措施-针对每种攻击:c02", + "software-testing-037:s7:c01", + "software-testing-044:h-unit6~考试要点总结-第七章:c01", + "software-testing-044:h-unit6~第七章-网络安全性测试-考试重点~一-常见的网络攻击方法-ppt中详细列举:c01", + "software-testing-044:h-unit6~第七章-网络安全性测试-考试重点~一-常见的网络攻击方法-ppt中详细列举:c02", + "software-testing-035:s44:c01", + "software-testing-035:s55:c01", + "software-testing-035:s11:c01", + "software-testing-035:s105:c01", + "software-testing-035:s103:c01", + "software-testing-035:s102:c01", + "software-testing-059:h-简答题整理~什么是压力测试-请根据loadrunner描述压力测试的步骤:c01", + "software-testing-035:s25:c01", + "software-testing-055:h-二-ch7-单元测试-unit-testing~3.-单元测试的核心组件:c01", + "software-testing-044:h-unit6~第七章-网络安全性测试-考试重点~三-网络安全性测试的总体思路-ppt中的步骤总结:c01", + "software-testing-035:s27:c01", + "software-testing-030:s34:c01", + "software-testing-038:h-验收测试---学习笔记~2.-contents-of-acceptance-testing-验收测试的内容:c01", + "software-testing-035:s15:c01" + ], + "duration_ms": 1210.738, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "software-testing-044:h-unit6~第七章-网络安全性测试-考试重点~二-网络攻击防范措施-针对每种攻击:c02", + "software-testing-037:s7:c01", + "software-testing-044:h-unit6~考试要点总结-第七章:c01", + "software-testing-044:h-unit6~第七章-网络安全性测试-考试重点~一-常见的网络攻击方法-ppt中详细列举:c01", + "software-testing-044:h-unit6~第七章-网络安全性测试-考试重点~一-常见的网络攻击方法-ppt中详细列举:c02", + "software-testing-035:s44:c01", + "software-testing-035:s55:c01", + "software-testing-035:s11:c01", + "software-testing-035:s105:c01", + "software-testing-035:s103:c01", + "software-testing-035:s102:c01", + "software-testing-059:h-简答题整理~什么是压力测试-请根据loadrunner描述压力测试的步骤:c01", + "software-testing-035:s25:c01", + "software-testing-055:h-二-ch7-单元测试-unit-testing~3.-单元测试的核心组件:c01", + "software-testing-044:h-unit6~第七章-网络安全性测试-考试重点~三-网络安全性测试的总体思路-ppt中的步骤总结:c01", + "software-testing-035:s27:c01", + "software-testing-030:s34:c01", + "software-testing-038:h-验收测试---学习笔记~2.-contents-of-acceptance-testing-验收测试的内容:c01", + "software-testing-035:s15:c01" + ] + }, + { + "case_id": "coverage-software_testing-condition", + "topic_id": "coverage-software_testing-condition", + "course_id": "software_testing", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“二、 测试模型与方法”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "software-testing-058:h-概念整理~二-测试模型与方法:c01", + "software-testing-058:h-概念整理~二-测试模型与方法:c02", + "software-testing-049:h-三-控制流测试-control-flow-testing~1.-定义:c01", + "software-testing-038:h-软件过程中的测试---学习笔记~2.-spiral-model-螺旋模型:c01", + "software-testing-047:h-十一-最终压缩版记忆框架:c01", + "software-testing-034:s14:c01", + "software-testing-051:h-十-随机测试与错误推测~3.-特点:c01", + "software-testing-051:h-八-组合测试-combinational-testing~1.-定义:c01", + "software-testing-047:h-三-pie-模型:c01", + "software-testing-036:s93:c01", + "software-testing-035:s88:c01", + "software-testing-051:h-十一-场景测试-scenario-testing~2.-基本流与备选流:c01", + "software-testing-053:h-一-资料去冗余原则:c01", + "software-testing-049:h-八-控制流图-cfg~2.-常见结构:c01", + "software-testing-050:h-st-讲义-三-白盒测试:c08", + "software-testing-050:h-st-讲义-三-白盒测试:c17", + "software-testing-046:q-software-testing-046-q10:c01", + "software-testing-038:h-软件测试导论---学习笔记~5.-the-pie-model-pie模型:c01", + "software-testing-038:h-白盒测试-路径覆盖与基本路径测试---学习笔记~2.-path-coverage-路径覆盖~strengths-weaknesses-优缺点:c01", + "software-testing-051:h-十二-黑盒测试方法选择总结:c01" + ], + "duration_ms": 192.542, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "software-testing-058:h-概念整理~二-测试模型与方法:c02", + "software-testing-049:h-三-控制流测试-control-flow-testing~1.-定义:c01", + "software-testing-038:h-软件过程中的测试---学习笔记~2.-spiral-model-螺旋模型:c01", + "software-testing-047:h-十一-最终压缩版记忆框架:c01", + "software-testing-034:s14:c01", + "software-testing-051:h-十-随机测试与错误推测~3.-特点:c01", + "software-testing-051:h-八-组合测试-combinational-testing~1.-定义:c01", + "software-testing-047:h-三-pie-模型:c01", + "software-testing-036:s93:c01", + "software-testing-035:s88:c01", + "software-testing-051:h-十一-场景测试-scenario-testing~2.-基本流与备选流:c01", + "software-testing-053:h-一-资料去冗余原则:c01", + "software-testing-049:h-八-控制流图-cfg~2.-常见结构:c01", + "software-testing-050:h-st-讲义-三-白盒测试:c08", + "software-testing-050:h-st-讲义-三-白盒测试:c17", + "software-testing-046:q-software-testing-046-q10:c01", + "software-testing-038:h-软件测试导论---学习笔记~5.-the-pie-model-pie模型:c01", + "software-testing-038:h-白盒测试-路径覆盖与基本路径测试---学习笔记~2.-path-coverage-路径覆盖~strengths-weaknesses-优缺点:c01", + "software-testing-051:h-十二-黑盒测试方法选择总结:c01" + ] + }, + { + "case_id": "coverage-software_testing-synthesis", + "topic_id": "coverage-software_testing-synthesis", + "course_id": "software_testing", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《Unit6》的“二、网络攻击防范措施(针对每种攻击)”与《file_260526_170540_50834》的“🔬 Offut's 5 Sufficient Mutations / Offut的5种充分变异算子”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "software-testing-044:h-unit6~第七章-网络安全性测试-考试重点~二-网络攻击防范措施-针对每种攻击:c01", + "software-testing-044:h-unit6~第七章-网络安全性测试-考试重点~二-网络攻击防范措施-针对每种攻击:c02", + "software-testing-038:h-软件测试原则---学习笔记~3.-fault-insertion-mutation-testing-故障插入与变异测试~offut-s-5-sufficient-mutations-offut的5种充分变异算子:c01", + "software-testing-038:h-软件测试原则---学习笔记~3.-fault-insertion-mutation-testing-故障插入与变异测试~offut-s-5-sufficient-mutations-offut的5种充分变异算子:c02", + "software-testing-037:s7:c01", + "software-testing-044:h-unit6~考试要点总结-第七章:c01", + "software-testing-035:s105:c01", + "software-testing-044:h-unit6~第七章-网络安全性测试-考试重点~一-常见的网络攻击方法-ppt中详细列举:c01", + "software-testing-044:h-unit6~第七章-网络安全性测试-考试重点~一-常见的网络攻击方法-ppt中详细列举:c02", + "software-testing-035:s55:c01", + "software-testing-035:s44:c01", + "software-testing-035:s103:c01", + "software-testing-038:h-软件测试原则---学习笔记~summary-study-tips-总结与学习建议:c01", + "software-testing-035:s11:c01", + "software-testing-040:h-unit~题目-3-白盒覆盖分析-语句-分支-条件组合~题目:c01", + "software-testing-035:s102:c01", + "software-testing-035:s25:c01", + "software-testing-038:h-验收测试---学习笔记~2.-contents-of-acceptance-testing-验收测试的内容:c01", + "software-testing-044:h-unit6~第七章-网络安全性测试-考试重点~三-网络安全性测试的总体思路-ppt中的步骤总结:c01", + "software-testing-047:h-ch0-课程概览~2.-课程目标:c01" + ], + "duration_ms": 173.032, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "software-testing-044:h-unit6~第七章-网络安全性测试-考试重点~二-网络攻击防范措施-针对每种攻击:c02", + "software-testing-038:h-软件测试原则---学习笔记~3.-fault-insertion-mutation-testing-故障插入与变异测试~offut-s-5-sufficient-mutations-offut的5种充分变异算子:c02", + "software-testing-037:s7:c01", + "software-testing-044:h-unit6~考试要点总结-第七章:c01", + "software-testing-035:s105:c01", + "software-testing-044:h-unit6~第七章-网络安全性测试-考试重点~一-常见的网络攻击方法-ppt中详细列举:c01", + "software-testing-044:h-unit6~第七章-网络安全性测试-考试重点~一-常见的网络攻击方法-ppt中详细列举:c02", + "software-testing-035:s55:c01", + "software-testing-035:s44:c01", + "software-testing-035:s103:c01", + "software-testing-038:h-软件测试原则---学习笔记~summary-study-tips-总结与学习建议:c01", + "software-testing-035:s11:c01", + "software-testing-040:h-unit~题目-3-白盒覆盖分析-语句-分支-条件组合~题目:c01", + "software-testing-035:s102:c01", + "software-testing-035:s25:c01", + "software-testing-038:h-验收测试---学习笔记~2.-contents-of-acceptance-testing-验收测试的内容:c01", + "software-testing-044:h-unit6~第七章-网络安全性测试-考试重点~三-网络安全性测试的总体思路-ppt中的步骤总结:c01", + "software-testing-047:h-ch0-课程概览~2.-课程目标:c01" + ] + }, + { + "case_id": "coverage-swarm_intelligence-anchor", + "topic_id": "coverage-swarm_intelligence-anchor", + "course_id": "swarm_intelligence", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《rewards》中“rewards”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c08", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c12", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c02", + "swarm-intelligence-007:p87:c01", + "swarm-intelligence-007:p100:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c15", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c04", + "swarm-intelligence-008:p17:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c03", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c13", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c02", + "swarm-intelligence-007:p175:c01", + "swarm-intelligence-003:h-rewards:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c14", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c03", + "swarm-intelligence-007:p53:c01", + "swarm-intelligence-007:p168:c01", + "swarm-intelligence-007:p52:c01", + "swarm-intelligence-004:h-群体智能实验报告~粒子群优化算法的改进策略研究~正文:c01" + ], + "duration_ms": 400.091, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.07142857142857142, + "unjudged_chunk_ids": [ + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c08", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c12", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c02", + "swarm-intelligence-007:p87:c01", + "swarm-intelligence-007:p100:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c15", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c04", + "swarm-intelligence-008:p17:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c03", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c13", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c02", + "swarm-intelligence-007:p175:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c14", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c03", + "swarm-intelligence-007:p53:c01", + "swarm-intelligence-007:p168:c01", + "swarm-intelligence-007:p52:c01", + "swarm-intelligence-004:h-群体智能实验报告~粒子群优化算法的改进策略研究~正文:c01" + ] + }, + { + "case_id": "coverage-swarm_intelligence-condition", + "topic_id": "coverage-swarm_intelligence-condition", + "course_id": "swarm_intelligence", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“psoresults”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c02", + "swarm-intelligence-008:p47:c01", + "swarm-intelligence-007:p25:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c09", + "swarm-intelligence-008:p74:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c07", + "swarm-intelligence-004:h-群体智能实验报告~算法复述~实验分析:c01", + "swarm-intelligence-007:p97:c01", + "swarm-intelligence-007:p130:c01", + "swarm-intelligence-008:p48:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c13", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c02", + "swarm-intelligence-007:p6:c01", + "swarm-intelligence-007:p101:c01", + "swarm-intelligence-008:p45:c01", + "swarm-intelligence-008:p79:c01", + "swarm-intelligence-007:p158:c01", + "swarm-intelligence-007:p33:c01", + "swarm-intelligence-007:p87:c01", + "swarm-intelligence-007:p100:c01" + ], + "duration_ms": 51.752, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.0, + "unjudged_chunk_ids": [ + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c02", + "swarm-intelligence-008:p47:c01", + "swarm-intelligence-007:p25:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c09", + "swarm-intelligence-008:p74:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c07", + "swarm-intelligence-004:h-群体智能实验报告~算法复述~实验分析:c01", + "swarm-intelligence-007:p97:c01", + "swarm-intelligence-007:p130:c01", + "swarm-intelligence-008:p48:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c13", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c02", + "swarm-intelligence-007:p6:c01", + "swarm-intelligence-007:p101:c01", + "swarm-intelligence-008:p45:c01", + "swarm-intelligence-008:p79:c01", + "swarm-intelligence-007:p158:c01", + "swarm-intelligence-007:p33:c01", + "swarm-intelligence-007:p87:c01", + "swarm-intelligence-007:p100:c01" + ] + }, + { + "case_id": "coverage-swarm_intelligence-synthesis", + "topic_id": "coverage-swarm_intelligence-synthesis", + "course_id": "swarm_intelligence", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《rewards》的“rewards”与《群体智能大作业题目-2024下学期》的“群体智能大作业题目-2024下学期”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c13", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c11", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c09", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c15", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c06", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c14", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c04", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c12", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c03", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c05", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c02", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c08", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c07", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c10", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c02", + "swarm-intelligence-007:p46:c01", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c04", + "swarm-intelligence-008:p83:c01", + "swarm-intelligence-007:p151:c01" + ], + "duration_ms": 61.336, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.5, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c11", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c09", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c15", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c06", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c14", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c04", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c12", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c03", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c01", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c05", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c02", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c08", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c07", + "swarm-intelligence-001:h-群体智能大作业题目-2024下学期:c10", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c02", + "swarm-intelligence-007:p46:c01", + "swarm-intelligence-002:h-关于群体智能中强化学习的研究结果:c04", + "swarm-intelligence-008:p83:c01", + "swarm-intelligence-007:p151:c01" + ] + }, + { + "case_id": "coverage-university_physics_3_1-anchor", + "topic_id": "coverage-university_physics_3_1-anchor", + "course_id": "university_physics_3_1", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《2025级大学物理III(一)期末考试复习纲要(4学分)》中“2025级大学物理III(一)期末考试复习纲要(4学分)”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "university-physics-3-1-012:h-2025级大学物理iii-一-期末考试复习纲要-4学分:c01", + "university-physics-3-1-010:h-2023级大学物理-上-期末考试复习纲要-4学分:c01", + "university-physics-3-1-011:p2:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q25:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q10:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q14:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q3:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q3:c01", + "university-physics-3-1-009:h-2022级大学物理iii-一-期末考试试卷b卷-4学分:c01", + "university-physics-3-1-007:h-2020级大学物理iii-一-期末考试试卷b卷-4学分:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q1:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q1:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q30:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q5:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q4:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q7:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q5:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q20:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q6:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q21:c01" + ], + "duration_ms": 104.313, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "university-physics-3-1-010:h-2023级大学物理-上-期末考试复习纲要-4学分:c01", + "university-physics-3-1-011:p2:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q25:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q10:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q14:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q3:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q3:c01", + "university-physics-3-1-009:h-2022级大学物理iii-一-期末考试试卷b卷-4学分:c01", + "university-physics-3-1-007:h-2020级大学物理iii-一-期末考试试卷b卷-4学分:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q1:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q1:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q30:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q5:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q4:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q7:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q5:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q20:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q6:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q21:c01" + ] + }, + { + "case_id": "coverage-university_physics_3_1-condition", + "topic_id": "coverage-university_physics_3_1-condition", + "course_id": "university_physics_3_1", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“2023级大学物理(上)期末考试复习纲要(4学分)”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "university-physics-3-1-010:h-2023级大学物理-上-期末考试复习纲要-4学分:c01", + "university-physics-3-1-012:h-2025级大学物理iii-一-期末考试复习纲要-4学分:c01", + "university-physics-3-1-011:p2:c01", + "university-physics-3-1-002:h-大学物理期末总复习:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q35:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q38:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q17:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q18:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q27:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q30:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q29:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q28:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q28:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q32:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q35:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q6:c01", + "university-physics-3-1-009:h-2022级大学物理iii-一-期末考试试卷b卷-4学分:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q31:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q15:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q26:c01" + ], + "duration_ms": 30.384, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "university-physics-3-1-012:h-2025级大学物理iii-一-期末考试复习纲要-4学分:c01", + "university-physics-3-1-011:p2:c01", + "university-physics-3-1-002:h-大学物理期末总复习:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q35:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q38:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q17:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q18:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q27:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q30:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q29:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q28:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q28:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q32:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q35:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q6:c01", + "university-physics-3-1-009:h-2022级大学物理iii-一-期末考试试卷b卷-4学分:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q31:c01", + "university-physics-3-1-009:q-university-physics-3-1-009-q15:c01", + "university-physics-3-1-007:q-university-physics-3-1-007-q26:c01" + ] + }, + { + "case_id": "coverage-university_physics_3_1-synthesis", + "topic_id": "coverage-university_physics_3_1-synthesis", + "course_id": "university_physics_3_1", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《2025级大学物理III(一)期末考试复习纲要(4学分)》的“2025级大学物理III(一)期末考试复习纲要(4学分)”与《2013级大学物理(I)期末试卷解答(A卷)》的“2013级大学物理(I)期末试卷解答(A卷)”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "university-physics-3-1-012:h-2025级大学物理iii-一-期末考试复习纲要-4学分:c01", + "university-physics-3-1-010:h-2023级大学物理-上-期末考试复习纲要-4学分:c01", + "university-physics-3-1-006:h-2013级大学物理-i-期末试卷解答-a卷:c01", + "university-physics-3-1-006:q-university-physics-3-1-006-q1:c01", + "university-physics-3-1-004:h-2012级大学物理-i-期末试卷解答-a卷:c01", + "university-physics-3-1-006:q-university-physics-3-1-006-q3:c01", + "university-physics-3-1-006:q-university-physics-3-1-006-q8:c01", + "university-physics-3-1-006:q-university-physics-3-1-006-q7:c01", + "university-physics-3-1-006:q-university-physics-3-1-006-q2:c01", + "university-physics-3-1-006:q-university-physics-3-1-006-q5:c01", + "university-physics-3-1-006:q-university-physics-3-1-006-q4:c01", + "university-physics-3-1-006:q-university-physics-3-1-006-q6:c01", + "university-physics-3-1-004:q-university-physics-3-1-004-q1:c01", + "university-physics-3-1-008:q-university-physics-3-1-008-q1:c01", + "university-physics-3-1-008:h-2020级大学物理-i-期末试卷解答-b卷:c01", + "university-physics-3-1-004:q-university-physics-3-1-004-q8:c01", + "university-physics-3-1-004:q-university-physics-3-1-004-q5:c01", + "university-physics-3-1-004:q-university-physics-3-1-004-q2:c01", + "university-physics-3-1-004:q-university-physics-3-1-004-q5:c02", + "university-physics-3-1-008:q-university-physics-3-1-008-q8:c01" + ], + "duration_ms": 31.001, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.5, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "university-physics-3-1-010:h-2023级大学物理-上-期末考试复习纲要-4学分:c01", + "university-physics-3-1-006:h-2013级大学物理-i-期末试卷解答-a卷:c01", + "university-physics-3-1-006:q-university-physics-3-1-006-q1:c01", + "university-physics-3-1-004:h-2012级大学物理-i-期末试卷解答-a卷:c01", + "university-physics-3-1-006:q-university-physics-3-1-006-q3:c01", + "university-physics-3-1-006:q-university-physics-3-1-006-q7:c01", + "university-physics-3-1-006:q-university-physics-3-1-006-q2:c01", + "university-physics-3-1-006:q-university-physics-3-1-006-q5:c01", + "university-physics-3-1-006:q-university-physics-3-1-006-q4:c01", + "university-physics-3-1-006:q-university-physics-3-1-006-q6:c01", + "university-physics-3-1-004:q-university-physics-3-1-004-q1:c01", + "university-physics-3-1-008:q-university-physics-3-1-008-q1:c01", + "university-physics-3-1-008:h-2020级大学物理-i-期末试卷解答-b卷:c01", + "university-physics-3-1-004:q-university-physics-3-1-004-q8:c01", + "university-physics-3-1-004:q-university-physics-3-1-004-q5:c01", + "university-physics-3-1-004:q-university-physics-3-1-004-q2:c01", + "university-physics-3-1-004:q-university-physics-3-1-004-q5:c02", + "university-physics-3-1-008:q-university-physics-3-1-008-q8:c01" + ] + }, + { + "case_id": "coverage-university_physics_3_2-anchor", + "topic_id": "coverage-university_physics_3_2-anchor", + "course_id": "university_physics_3_2", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《2021级大学物理(二)期末试卷解答简版(B卷)》中“2021级大学物理(二)期末试卷解答简版(B卷)”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "university-physics-3-2-007:h-2021级大学物理-二-期末试卷解答简版-b卷:c01", + "university-physics-3-2-007:q-university-physics-3-2-007-q2:c01", + "university-physics-3-2-007:q-university-physics-3-2-007-q1:c01", + "university-physics-3-2-007:q-university-physics-3-2-007-q3:c02", + "university-physics-3-2-007:q-university-physics-3-2-007-q3:c01", + "university-physics-3-2-007:q-university-physics-3-2-007-q3:c03", + "university-physics-3-2-003:q-university-physics-3-2-003-q4:c01", + "university-physics-3-2-005:q-university-physics-3-2-005-q1:c02", + "university-physics-3-2-020:p2:q-university-physics-3-2-020-q12:c01", + "university-physics-3-2-005:h-2013级大学物理-ii-期末试卷解答-a卷:c01", + "university-physics-3-2-003:q-university-physics-3-2-003-q5:c01", + "university-physics-3-2-020:p1:q-university-physics-3-2-020-q3:c01", + "university-physics-3-2-005:q-university-physics-3-2-005-q2:c01", + "university-physics-3-2-014:p1:q-university-physics-3-2-014-q2:c01", + "university-physics-3-2-005:q-university-physics-3-2-005-q1:c01", + "university-physics-3-2-018:p1:q-university-physics-3-2-018-q2:c01", + "university-physics-3-2-020:p1:q-university-physics-3-2-020-q2:c01", + "university-physics-3-2-003:q-university-physics-3-2-003-q2:c01", + "university-physics-3-2-014:p2:q-university-physics-3-2-014-q5:c01", + "university-physics-3-2-014:p1:q-university-physics-3-2-014-q1:c01" + ], + "duration_ms": 150.869, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.2, + "unjudged_chunk_ids": [ + "university-physics-3-2-007:h-2021级大学物理-二-期末试卷解答简版-b卷:c01", + "university-physics-3-2-007:q-university-physics-3-2-007-q2:c01", + "university-physics-3-2-007:q-university-physics-3-2-007-q1:c01", + "university-physics-3-2-007:q-university-physics-3-2-007-q3:c02", + "university-physics-3-2-007:q-university-physics-3-2-007-q3:c03", + "university-physics-3-2-003:q-university-physics-3-2-003-q4:c01", + "university-physics-3-2-005:q-university-physics-3-2-005-q1:c02", + "university-physics-3-2-020:p2:q-university-physics-3-2-020-q12:c01", + "university-physics-3-2-005:h-2013级大学物理-ii-期末试卷解答-a卷:c01", + "university-physics-3-2-003:q-university-physics-3-2-003-q5:c01", + "university-physics-3-2-020:p1:q-university-physics-3-2-020-q3:c01", + "university-physics-3-2-005:q-university-physics-3-2-005-q2:c01", + "university-physics-3-2-014:p1:q-university-physics-3-2-014-q2:c01", + "university-physics-3-2-005:q-university-physics-3-2-005-q1:c01", + "university-physics-3-2-018:p1:q-university-physics-3-2-018-q2:c01", + "university-physics-3-2-020:p1:q-university-physics-3-2-020-q2:c01", + "university-physics-3-2-003:q-university-physics-3-2-003-q2:c01", + "university-physics-3-2-014:p2:q-university-physics-3-2-014-q5:c01", + "university-physics-3-2-014:p1:q-university-physics-3-2-014-q1:c01" + ] + }, + { + "case_id": "coverage-university_physics_3_2-condition", + "topic_id": "coverage-university_physics_3_2-condition", + "course_id": "university_physics_3_2", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“2006II”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "university-physics-3-2-011:p2:c01", + "university-physics-3-2-011:p3:c01", + "university-physics-3-2-009:p10:c01", + "university-physics-3-2-011:p1:c01", + "university-physics-3-2-011:p4:c01", + "university-physics-3-2-012:p1:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q10:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q11:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q12:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q13:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q14:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q1:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q2:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q3:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q4:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q5:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q6:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q7:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q8:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q9:c01" + ], + "duration_ms": 31.302, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "university-physics-3-2-011:p2:c01", + "university-physics-3-2-009:p10:c01", + "university-physics-3-2-011:p1:c01", + "university-physics-3-2-011:p4:c01", + "university-physics-3-2-012:p1:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q10:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q11:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q12:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q13:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q14:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q1:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q2:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q3:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q4:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q5:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q6:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q7:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q8:c01", + "university-physics-3-2-012:p1:q-university-physics-3-2-012-q9:c01" + ] + }, + { + "case_id": "coverage-university_physics_3_2-synthesis", + "topic_id": "coverage-university_physics_3_2-synthesis", + "course_id": "university_physics_3_2", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《2021级大学物理(二)期末试卷解答简版(B卷)》的“2021级大学物理(二)期末试卷解答简版(B卷)”与《2012级大学物理(2)期末试卷解答(A卷)》的“2012级大学物理(2)期末试卷解答(A卷)”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "university-physics-3-2-007:h-2021级大学物理-二-期末试卷解答简版-b卷:c01", + "university-physics-3-2-007:q-university-physics-3-2-007-q1:c01", + "university-physics-3-2-007:q-university-physics-3-2-007-q3:c02", + "university-physics-3-2-007:q-university-physics-3-2-007-q2:c01", + "university-physics-3-2-007:q-university-physics-3-2-007-q3:c01", + "university-physics-3-2-007:q-university-physics-3-2-007-q3:c03", + "university-physics-3-2-003:q-university-physics-3-2-003-q2:c01", + "university-physics-3-2-003:q-university-physics-3-2-003-q1:c01", + "university-physics-3-2-003:q-university-physics-3-2-003-q4:c01", + "university-physics-3-2-003:h-2012级大学物理-2-期末试卷解答-a卷:c01", + "university-physics-3-2-005:q-university-physics-3-2-005-q1:c02", + "university-physics-3-2-003:q-university-physics-3-2-003-q5:c01", + "university-physics-3-2-005:h-2013级大学物理-ii-期末试卷解答-a卷:c01", + "university-physics-3-2-003:q-university-physics-3-2-003-q6:c01", + "university-physics-3-2-003:q-university-physics-3-2-003-q3:c01", + "university-physics-3-2-018:p1:c01", + "university-physics-3-2-014:p1:q-university-physics-3-2-014-q2:c01", + "university-physics-3-2-005:q-university-physics-3-2-005-q1:c01", + "university-physics-3-2-018:p1:q-university-physics-3-2-018-q2:c01", + "university-physics-3-2-020:p1:q-university-physics-3-2-020-q2:c01" + ], + "duration_ms": 48.752, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.5, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.2, + "unjudged_chunk_ids": [ + "university-physics-3-2-007:h-2021级大学物理-二-期末试卷解答简版-b卷:c01", + "university-physics-3-2-007:q-university-physics-3-2-007-q1:c01", + "university-physics-3-2-007:q-university-physics-3-2-007-q3:c02", + "university-physics-3-2-007:q-university-physics-3-2-007-q2:c01", + "university-physics-3-2-007:q-university-physics-3-2-007-q3:c03", + "university-physics-3-2-003:q-university-physics-3-2-003-q2:c01", + "university-physics-3-2-003:q-university-physics-3-2-003-q1:c01", + "university-physics-3-2-003:h-2012级大学物理-2-期末试卷解答-a卷:c01", + "university-physics-3-2-005:q-university-physics-3-2-005-q1:c02", + "university-physics-3-2-003:q-university-physics-3-2-003-q5:c01", + "university-physics-3-2-005:h-2013级大学物理-ii-期末试卷解答-a卷:c01", + "university-physics-3-2-003:q-university-physics-3-2-003-q6:c01", + "university-physics-3-2-003:q-university-physics-3-2-003-q3:c01", + "university-physics-3-2-018:p1:c01", + "university-physics-3-2-014:p1:q-university-physics-3-2-014-q2:c01", + "university-physics-3-2-005:q-university-physics-3-2-005-q1:c01", + "university-physics-3-2-018:p1:q-university-physics-3-2-018-q2:c01", + "university-physics-3-2-020:p1:q-university-physics-3-2-020-q2:c01" + ] + }, + { + "case_id": "coverage-university_physics_lab_1-anchor", + "topic_id": "coverage-university_physics_lab_1-anchor", + "course_id": "university_physics_lab_1", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《用惠斯登电桥测电阻》中“用惠斯登电桥测电阻”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c02", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c03", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c01", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c07", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c05", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c04", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c06", + "university-physics-lab-1-005:h-实验报告模板-实验报告评分标准:c01", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c01", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c02", + "university-physics-lab-1-001:h-人体脉搏波测量:c04", + "university-physics-lab-1-001:h-人体脉搏波测量:c03", + "university-physics-lab-1-003:h-分光计的调整与使用:c01", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c01", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c03", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c03", + "university-physics-lab-1-001:h-人体脉搏波测量:c05", + "university-physics-lab-1-001:h-人体脉搏波测量:c07" + ], + "duration_ms": 57.479, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.0, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.14285714285714285, + "unjudged_chunk_ids": [ + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c02", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c03", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c01", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c07", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c05", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c04", + "university-physics-lab-1-005:h-实验报告模板-实验报告评分标准:c01", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c01", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c02", + "university-physics-lab-1-001:h-人体脉搏波测量:c04", + "university-physics-lab-1-001:h-人体脉搏波测量:c03", + "university-physics-lab-1-003:h-分光计的调整与使用:c01", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c01", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c03", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c03", + "university-physics-lab-1-001:h-人体脉搏波测量:c05", + "university-physics-lab-1-001:h-人体脉搏波测量:c07" + ] + }, + { + "case_id": "coverage-university_physics_lab_1-condition", + "topic_id": "coverage-university_physics_lab_1-condition", + "course_id": "university_physics_lab_1", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“人体脉搏波测量”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "university-physics-lab-1-001:h-人体脉搏波测量:c07", + "university-physics-lab-1-001:h-人体脉搏波测量:c03", + "university-physics-lab-1-001:h-人体脉搏波测量:c04", + "university-physics-lab-1-001:h-人体脉搏波测量:c05", + "university-physics-lab-1-001:h-人体脉搏波测量:c01", + "university-physics-lab-1-001:h-人体脉搏波测量:c06", + "university-physics-lab-1-001:h-人体脉搏波测量:c02", + "university-physics-lab-1-002:h-光的等厚干涉测量:c04", + "university-physics-lab-1-002:h-光的等厚干涉测量:c01", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c07", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c03", + "university-physics-lab-1-003:h-分光计的调整与使用:c03", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c01", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c02", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c02", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c02", + "university-physics-lab-1-003:h-分光计的调整与使用:c02", + "university-physics-lab-1-002:h-光的等厚干涉测量:c02", + "university-physics-lab-1-004:h-奥式黏度计测定液体动力黏度:c01" + ], + "duration_ms": 12.557, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "university-physics-lab-1-001:h-人体脉搏波测量:c07", + "university-physics-lab-1-001:h-人体脉搏波测量:c03", + "university-physics-lab-1-001:h-人体脉搏波测量:c05", + "university-physics-lab-1-001:h-人体脉搏波测量:c01", + "university-physics-lab-1-001:h-人体脉搏波测量:c06", + "university-physics-lab-1-001:h-人体脉搏波测量:c02", + "university-physics-lab-1-002:h-光的等厚干涉测量:c04", + "university-physics-lab-1-002:h-光的等厚干涉测量:c01", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c07", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c03", + "university-physics-lab-1-003:h-分光计的调整与使用:c03", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c01", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c02", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c02", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c02", + "university-physics-lab-1-003:h-分光计的调整与使用:c02", + "university-physics-lab-1-002:h-光的等厚干涉测量:c02", + "university-physics-lab-1-004:h-奥式黏度计测定液体动力黏度:c01" + ] + }, + { + "case_id": "coverage-university_physics_lab_1-synthesis", + "topic_id": "coverage-university_physics_lab_1-synthesis", + "course_id": "university_physics_lab_1", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《用惠斯登电桥测电阻》的“用惠斯登电桥测电阻”与《光的等厚干涉测量》的“光的等厚干涉测量”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "university-physics-lab-1-002:h-光的等厚干涉测量:c02", + "university-physics-lab-1-002:h-光的等厚干涉测量:c01", + "university-physics-lab-1-002:h-光的等厚干涉测量:c04", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c01", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c07", + "university-physics-lab-1-002:h-光的等厚干涉测量:c03", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c04", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c03", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c05", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c02", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c06", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c02", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c01", + "university-physics-lab-1-004:h-奥式黏度计测定液体动力黏度:c01", + "university-physics-lab-1-003:h-分光计的调整与使用:c01", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c02", + "university-physics-lab-1-001:h-人体脉搏波测量:c04", + "university-physics-lab-1-001:h-人体脉搏波测量:c07", + "university-physics-lab-1-001:h-人体脉搏波测量:c05", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c03" + ], + "duration_ms": 12.94, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.5, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "university-physics-lab-1-002:h-光的等厚干涉测量:c02", + "university-physics-lab-1-002:h-光的等厚干涉测量:c01", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c01", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c07", + "university-physics-lab-1-002:h-光的等厚干涉测量:c03", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c04", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c03", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c05", + "university-physics-lab-1-006:h-用惠斯登电桥测电阻:c02", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c02", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c01", + "university-physics-lab-1-004:h-奥式黏度计测定液体动力黏度:c01", + "university-physics-lab-1-003:h-分光计的调整与使用:c01", + "university-physics-lab-1-007:h-超声波在介质的传播~实验三-超声波探测及复摆测量重力加速度:c02", + "university-physics-lab-1-001:h-人体脉搏波测量:c04", + "university-physics-lab-1-001:h-人体脉搏波测量:c07", + "university-physics-lab-1-001:h-人体脉搏波测量:c05", + "university-physics-lab-1-008:h-非平衡电桥电压输出特性研究:c03" + ] + }, + { + "case_id": "coverage-university_physics_lab_2-anchor", + "topic_id": "coverage-university_physics_lab_2-anchor", + "course_id": "university_physics_lab_2", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《4.8 交流电桥综合设计性实验》中“4.8 交流电桥综合设计性实验”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c01", + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c02", + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c03", + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c04", + "university-physics-lab-2-040:h-4交流电桥:c01", + "university-physics-lab-2-074:p2:c02", + "university-physics-lab-2-074:p2:c01", + "university-physics-lab-2-079:h-设计性实验-自组望远镜与显微镜:c01", + "university-physics-lab-2-074:p1:c01", + "university-physics-lab-2-074:p3:c01", + "university-physics-lab-2-079:h-设计性实验-自组望远镜与显微镜:c02", + "university-physics-lab-2-079:h-设计性实验-自组望远镜与显微镜:c03", + "university-physics-lab-2-074:p1:c02", + "university-physics-lab-2-041:s13:c01", + "university-physics-lab-2-040:h-4交流电桥:c03", + "university-physics-lab-2-080:h-4.8-草:c01", + "university-physics-lab-2-041:s4:c01", + "university-physics-lab-2-041:s8:c01", + "university-physics-lab-2-041:s12:c01", + "university-physics-lab-2-040:h-4交流电桥:c02" + ], + "duration_ms": 516.568, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c01", + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c02", + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c04", + "university-physics-lab-2-040:h-4交流电桥:c01", + "university-physics-lab-2-074:p2:c02", + "university-physics-lab-2-074:p2:c01", + "university-physics-lab-2-079:h-设计性实验-自组望远镜与显微镜:c01", + "university-physics-lab-2-074:p1:c01", + "university-physics-lab-2-074:p3:c01", + "university-physics-lab-2-079:h-设计性实验-自组望远镜与显微镜:c02", + "university-physics-lab-2-079:h-设计性实验-自组望远镜与显微镜:c03", + "university-physics-lab-2-074:p1:c02", + "university-physics-lab-2-041:s13:c01", + "university-physics-lab-2-040:h-4交流电桥:c03", + "university-physics-lab-2-080:h-4.8-草:c01", + "university-physics-lab-2-041:s4:c01", + "university-physics-lab-2-041:s8:c01", + "university-physics-lab-2-041:s12:c01", + "university-physics-lab-2-040:h-4交流电桥:c02" + ] + }, + { + "case_id": "coverage-university_physics_lab_2-condition", + "topic_id": "coverage-university_physics_lab_2-condition", + "course_id": "university_physics_lab_2", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“自组望远镜测量凹透镜焦距施洋”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "university-physics-lab-2-078:p1:c01", + "university-physics-lab-2-078:p2:c01", + "university-physics-lab-2-078:p3:c01", + "university-physics-lab-2-078:p3:c02", + "university-physics-lab-2-078:p2:c02", + "university-physics-lab-2-079:h-设计性实验-自组望远镜与显微镜:c01", + "university-physics-lab-2-077:p1:c01", + "university-physics-lab-2-079:h-设计性实验-自组望远镜与显微镜:c02", + "university-physics-lab-2-077:p2:c01", + "university-physics-lab-2-077:p3:c01", + "university-physics-lab-2-079:h-设计性实验-自组望远镜与显微镜:c03", + "university-physics-lab-2-077:p4:c01", + "university-physics-lab-2-076:p1:c01", + "university-physics-lab-2-077:p1:c02", + "university-physics-lab-2-077:p2:c02", + "university-physics-lab-2-077:p4:c02", + "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c09", + "university-physics-lab-2-087:h-4.1-草:c02", + "university-physics-lab-2-074:p2:c01", + "university-physics-lab-2-038:h-3光栅特性及光波波长的测定:c03" + ], + "duration_ms": 84.026, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "university-physics-lab-2-078:p2:c01", + "university-physics-lab-2-078:p3:c01", + "university-physics-lab-2-078:p3:c02", + "university-physics-lab-2-078:p2:c02", + "university-physics-lab-2-079:h-设计性实验-自组望远镜与显微镜:c01", + "university-physics-lab-2-077:p1:c01", + "university-physics-lab-2-079:h-设计性实验-自组望远镜与显微镜:c02", + "university-physics-lab-2-077:p2:c01", + "university-physics-lab-2-077:p3:c01", + "university-physics-lab-2-079:h-设计性实验-自组望远镜与显微镜:c03", + "university-physics-lab-2-077:p4:c01", + "university-physics-lab-2-076:p1:c01", + "university-physics-lab-2-077:p1:c02", + "university-physics-lab-2-077:p2:c02", + "university-physics-lab-2-077:p4:c02", + "university-physics-lab-2-002:h-3.3-共振法测量材料的杨氏模量:c09", + "university-physics-lab-2-087:h-4.1-草:c02", + "university-physics-lab-2-074:p2:c01", + "university-physics-lab-2-038:h-3光栅特性及光波波长的测定:c03" + ] + }, + { + "case_id": "coverage-university_physics_lab_2-synthesis", + "topic_id": "coverage-university_physics_lab_2-synthesis", + "course_id": "university_physics_lab_2", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《4.8 交流电桥综合设计性实验》的“4.8 交流电桥综合设计性实验”与《4.14(定)》的“4.14(定)”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c01", + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c02", + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c03", + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c04", + "university-physics-lab-2-040:h-4交流电桥:c01", + "university-physics-lab-2-074:p2:c01", + "university-physics-lab-2-079:h-设计性实验-自组望远镜与显微镜:c02", + "university-physics-lab-2-074:p3:c01", + "university-physics-lab-2-074:p1:c01", + "university-physics-lab-2-079:h-设计性实验-自组望远镜与显微镜:c03", + "university-physics-lab-2-079:h-设计性实验-自组望远镜与显微镜:c01", + "university-physics-lab-2-074:p2:c02", + "university-physics-lab-2-074:p1:c02", + "university-physics-lab-2-080:h-4.8-草:c01", + "university-physics-lab-2-041:s12:c01", + "university-physics-lab-2-041:s4:c01", + "university-physics-lab-2-080:h-4.8-草:c03", + "university-physics-lab-2-026:h-液体动力粘度的测量-用拉脱法测定液体表面张力系数:c05", + "university-physics-lab-2-040:h-4交流电桥:c03", + "university-physics-lab-2-040:h-4交流电桥:c02" + ], + "duration_ms": 90.171, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 0.5, + "all_evidence_groups_at_5": 0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_20": 0, + "known_positive_mrr": 0.3333333333333333, + "unjudged_chunk_ids": [ + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c01", + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c02", + "university-physics-lab-2-015:h-4.8-交流电桥综合设计性实验:c04", + "university-physics-lab-2-040:h-4交流电桥:c01", + "university-physics-lab-2-074:p2:c01", + "university-physics-lab-2-079:h-设计性实验-自组望远镜与显微镜:c02", + "university-physics-lab-2-074:p3:c01", + "university-physics-lab-2-074:p1:c01", + "university-physics-lab-2-079:h-设计性实验-自组望远镜与显微镜:c03", + "university-physics-lab-2-079:h-设计性实验-自组望远镜与显微镜:c01", + "university-physics-lab-2-074:p2:c02", + "university-physics-lab-2-074:p1:c02", + "university-physics-lab-2-080:h-4.8-草:c01", + "university-physics-lab-2-041:s12:c01", + "university-physics-lab-2-041:s4:c01", + "university-physics-lab-2-080:h-4.8-草:c03", + "university-physics-lab-2-026:h-液体动力粘度的测量-用拉脱法测定液体表面张力系数:c05", + "university-physics-lab-2-040:h-4交流电桥:c03", + "university-physics-lab-2-040:h-4交流电桥:c02" + ] + }, + { + "case_id": "coverage-web_frontend_fundamentals-anchor", + "topic_id": "coverage-web_frontend_fundamentals-anchor", + "course_id": "web_frontend_fundamentals", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《Lecture 2 HTML and CSS Basics》中“更多关于 font-family”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "web-frontend-fundamentals-012:s40:c01", + "web-frontend-fundamentals-012:s17:c01", + "web-frontend-fundamentals-012:s25:c01", + "web-frontend-fundamentals-012:s21:c01", + "web-frontend-fundamentals-012:s39:c01", + "web-frontend-fundamentals-012:s38:c01", + "web-frontend-fundamentals-012:s29:c01", + "web-frontend-fundamentals-012:s48:c01", + "web-frontend-fundamentals-012:s34:c01", + "web-frontend-fundamentals-012:s7:c01", + "web-frontend-fundamentals-012:s44:c01", + "web-frontend-fundamentals-012:s35:c01", + "web-frontend-fundamentals-012:s11:c01", + "web-frontend-fundamentals-012:s42:c01", + "web-frontend-fundamentals-012:s14:c01", + "web-frontend-fundamentals-012:s5:c01", + "web-frontend-fundamentals-012:s41:c01", + "web-frontend-fundamentals-012:s41:c02", + "web-frontend-fundamentals-012:s4:c01", + "web-frontend-fundamentals-012:s33:c01" + ], + "duration_ms": 176.814, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "web-frontend-fundamentals-012:s17:c01", + "web-frontend-fundamentals-012:s25:c01", + "web-frontend-fundamentals-012:s21:c01", + "web-frontend-fundamentals-012:s39:c01", + "web-frontend-fundamentals-012:s38:c01", + "web-frontend-fundamentals-012:s29:c01", + "web-frontend-fundamentals-012:s48:c01", + "web-frontend-fundamentals-012:s34:c01", + "web-frontend-fundamentals-012:s7:c01", + "web-frontend-fundamentals-012:s44:c01", + "web-frontend-fundamentals-012:s35:c01", + "web-frontend-fundamentals-012:s11:c01", + "web-frontend-fundamentals-012:s42:c01", + "web-frontend-fundamentals-012:s14:c01", + "web-frontend-fundamentals-012:s5:c01", + "web-frontend-fundamentals-012:s41:c01", + "web-frontend-fundamentals-012:s41:c02", + "web-frontend-fundamentals-012:s4:c01", + "web-frontend-fundamentals-012:s33:c01" + ] + }, + { + "case_id": "coverage-web_frontend_fundamentals-condition", + "topic_id": "coverage-web_frontend_fundamentals-condition", + "course_id": "web_frontend_fundamentals", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“Hibernate”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "web-frontend-fundamentals-006:s4:c01", + "web-frontend-fundamentals-011:s55:c01", + "web-frontend-fundamentals-011:s57:c01", + "web-frontend-fundamentals-008:s9:c01", + "web-frontend-fundamentals-017:s18:c01", + "web-frontend-fundamentals-011:s54:c01", + "web-frontend-fundamentals-002:s3:c01", + "web-frontend-fundamentals-011:s56:c01", + "web-frontend-fundamentals-019:s17:c01", + "web-frontend-fundamentals-015:s34:c01", + "web-frontend-fundamentals-015:s40:c01", + "web-frontend-fundamentals-015:s41:c01", + "web-frontend-fundamentals-014:s28:c01", + "web-frontend-fundamentals-003:s18:c01", + "web-frontend-fundamentals-013:s51:c01", + "web-frontend-fundamentals-013:s52:c01", + "web-frontend-fundamentals-017:s19:c01", + "web-frontend-fundamentals-008:s8:c01", + "web-frontend-fundamentals-017:s23:c01", + "web-frontend-fundamentals-013:s8:c01" + ], + "duration_ms": 31.574, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "web-frontend-fundamentals-006:s4:c01", + "web-frontend-fundamentals-011:s57:c01", + "web-frontend-fundamentals-008:s9:c01", + "web-frontend-fundamentals-017:s18:c01", + "web-frontend-fundamentals-011:s54:c01", + "web-frontend-fundamentals-002:s3:c01", + "web-frontend-fundamentals-011:s56:c01", + "web-frontend-fundamentals-019:s17:c01", + "web-frontend-fundamentals-015:s34:c01", + "web-frontend-fundamentals-015:s40:c01", + "web-frontend-fundamentals-015:s41:c01", + "web-frontend-fundamentals-014:s28:c01", + "web-frontend-fundamentals-003:s18:c01", + "web-frontend-fundamentals-013:s51:c01", + "web-frontend-fundamentals-013:s52:c01", + "web-frontend-fundamentals-017:s19:c01", + "web-frontend-fundamentals-008:s8:c01", + "web-frontend-fundamentals-017:s23:c01", + "web-frontend-fundamentals-013:s8:c01" + ] + }, + { + "case_id": "coverage-web_frontend_fundamentals-synthesis", + "topic_id": "coverage-web_frontend_fundamentals-synthesis", + "course_id": "web_frontend_fundamentals", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《Lecture 2 HTML and CSS Basics》的“更多关于 font-family”与《Lecture 4 Page Sections and the CSS Box Model》的“选择器特征值”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "web-frontend-fundamentals-014:s18:c01", + "web-frontend-fundamentals-014:s19:c01", + "web-frontend-fundamentals-012:s40:c01", + "web-frontend-fundamentals-014:s5:c01", + "web-frontend-fundamentals-014:s14:c01", + "web-frontend-fundamentals-014:s7:c01", + "web-frontend-fundamentals-012:s17:c01", + "web-frontend-fundamentals-012:s25:c01", + "web-frontend-fundamentals-014:s37:c01", + "web-frontend-fundamentals-012:s21:c01", + "web-frontend-fundamentals-014:s15:c01", + "web-frontend-fundamentals-012:s35:c01", + "web-frontend-fundamentals-014:s3:c01", + "web-frontend-fundamentals-014:s28:c01", + "web-frontend-fundamentals-014:s10:c01", + "web-frontend-fundamentals-014:s21:c01", + "web-frontend-fundamentals-014:s2:c01", + "web-frontend-fundamentals-014:s27:c01", + "web-frontend-fundamentals-014:s33:c01", + "web-frontend-fundamentals-014:s16:c01" + ], + "duration_ms": 40.461, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "web-frontend-fundamentals-014:s18:c01", + "web-frontend-fundamentals-014:s5:c01", + "web-frontend-fundamentals-014:s14:c01", + "web-frontend-fundamentals-014:s7:c01", + "web-frontend-fundamentals-012:s17:c01", + "web-frontend-fundamentals-012:s25:c01", + "web-frontend-fundamentals-014:s37:c01", + "web-frontend-fundamentals-012:s21:c01", + "web-frontend-fundamentals-014:s15:c01", + "web-frontend-fundamentals-012:s35:c01", + "web-frontend-fundamentals-014:s3:c01", + "web-frontend-fundamentals-014:s28:c01", + "web-frontend-fundamentals-014:s10:c01", + "web-frontend-fundamentals-014:s21:c01", + "web-frontend-fundamentals-014:s2:c01", + "web-frontend-fundamentals-014:s27:c01", + "web-frontend-fundamentals-014:s33:c01", + "web-frontend-fundamentals-014:s16:c01" + ] + }, + { + "case_id": "coverage-xi_thought_overview-anchor", + "topic_id": "coverage-xi_thought_overview-anchor", + "course_id": "xi_thought_overview", + "scenario": "definition_or_location", + "split": "coverage", + "difficulty": "easy", + "query": "请根据《主题七:人才计划的广东实践》中“主题七:人才计划的广东实践”这一部分,指出资料给出的核心对象、定义或步骤。只说资料实际支持的内容。", + "top_chunk_ids": [ + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c02", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c01", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c03", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c05", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c04" + ], + "duration_ms": 20.583, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.5, + "unjudged_chunk_ids": [ + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c02", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c03", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c05", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c04" + ] + }, + { + "case_id": "coverage-xi_thought_overview-condition", + "topic_id": "coverage-xi_thought_overview-condition", + "course_id": "xi_thought_overview", + "scenario": "condition_or_error_analysis", + "split": "coverage", + "difficulty": "medium", + "query": "我把“主题七:人才计划的广东实践”中的条件、过程或适用范围混淆了。请按资料解释:哪些前提不能省略、遗漏后会导致什么判断错误?", + "top_chunk_ids": [ + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c02", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c01", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c03", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c05", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c04" + ], + "duration_ms": 7.049, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 0.2, + "unjudged_chunk_ids": [ + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c02", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c01", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c03", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c05" + ] + }, + { + "case_id": "coverage-xi_thought_overview-synthesis", + "topic_id": "coverage-xi_thought_overview-synthesis", + "course_id": "xi_thought_overview", + "scenario": "multi_evidence_synthesis", + "split": "coverage", + "difficulty": "hard", + "query": "比较《主题七:人才计划的广东实践》的“主题七:人才计划的广东实践”与《主题七:人才计划的广东实践》的“主题七:人才计划的广东实践”:它们解决的对象、前提或步骤有什么联系和区别?请分别给出证据,不要把两个主题强行等同。", + "top_chunk_ids": [ + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c02", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c03", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c01", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c05", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c04" + ], + "duration_ms": 6.648, + "scoring_status": "scored", + "known_evidence_coverage_at_5": 1.0, + "all_evidence_groups_at_5": 1, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_20": 1, + "known_positive_mrr": 1.0, + "unjudged_chunk_ids": [ + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c03", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c05", + "xi-thought-overview-001:h-主题七-人才计划的广东实践:c04" + ] + } + ], + "by_course_id": { + "algorithm_design_and_analysis": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.0, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.0, + "all_evidence_groups_at_20": 0.666667, + "known_positive_mrr": 0.136905 + }, + "artificial_intelligence_intro": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.333333, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.5 + }, + "circuit_and_electronics_lab": { + "queries": 2, + "scored_queries": 0, + "unscored_evidence_boundary_queries": 2 + }, + "compiler_principles": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 0.666667, + "all_evidence_groups_at_5": 0.333333, + "all_evidence_groups_at_20": 0.666667, + "known_positive_mrr": 0.666667 + }, + "computer_graphics": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_5": 0.333333, + "all_evidence_groups_at_20": 0.333333, + "known_positive_mrr": 0.133333 + }, + "computer_networks": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_5": 0.333333, + "all_evidence_groups_at_20": 0.333333, + "known_positive_mrr": 0.5 + }, + "computer_organization": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.0, + "known_evidence_coverage_at_20": 0.0, + "all_evidence_groups_at_5": 0.0, + "all_evidence_groups_at_20": 0.0, + "known_positive_mrr": 0.0 + }, + "computer_science_intro": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.333333, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.270833 + }, + "computing_methods": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.333333, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_5": 0.333333, + "all_evidence_groups_at_20": 0.333333, + "known_positive_mrr": 0.375 + }, + "cpp": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.833333, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.666667, + "all_evidence_groups_at_20": 0.666667, + "known_positive_mrr": 0.733333 + }, + "data_structure": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.833333, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.666667, + "all_evidence_groups_at_20": 0.666667, + "known_positive_mrr": 0.833333 + }, + "database": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.333333, + "all_evidence_groups_at_20": 0.666667, + "known_positive_mrr": 0.52381 + }, + "digital_logic": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.833333, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.666667, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.833333 + }, + "digital_system_creative_design": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.333333, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.333333, + "all_evidence_groups_at_20": 0.666667, + "known_positive_mrr": 0.243056 + }, + "discrete_mathematics": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.333333, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_5": 0.333333, + "all_evidence_groups_at_20": 0.333333, + "known_positive_mrr": 0.138889 + }, + "electrical_engineering": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.833333, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.666667, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.777778 + }, + "electrical_engineering_lab": { + "queries": 2, + "scored_queries": 0, + "unscored_evidence_boundary_queries": 2 + }, + "embedded_systems": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.0, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_5": 0.0, + "all_evidence_groups_at_20": 0.333333, + "known_positive_mrr": 0.048822 + }, + "engineering_math_analysis_1": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.333333, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.333333, + "all_evidence_groups_at_20": 0.666667, + "known_positive_mrr": 0.383333 + }, + "engineering_math_analysis_2": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.166667, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.156433 + }, + "english": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.833333 + }, + "ideology_morality_and_rule_of_law": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "information_security_intro": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.555556 + }, + "information_security_mathematics": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.833333, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.666667, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.361111 + }, + "intelligent_algorithms": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.333333, + "all_evidence_groups_at_20": 0.666667, + "known_positive_mrr": 0.708333 + }, + "linear_algebra": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.0, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.0, + "all_evidence_groups_at_20": 0.666667, + "known_positive_mrr": 0.094093 + }, + "machine_learning": { + "queries": 2, + "scored_queries": 0, + "unscored_evidence_boundary_queries": 2 + }, + "mao_zedong_thought_overview": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.666667, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.666667, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.714286 + }, + "marxist_basic_principles": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.333333, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.333333, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.370485 + }, + "mathematical_modeling": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.333333, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_5": 0.333333, + "all_evidence_groups_at_20": 0.333333, + "known_positive_mrr": 0.363636 + }, + "mobile_application_development": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.666667, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.666667, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.5 + }, + "network_application_architecture": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.833333 + }, + "network_management": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.566667 + }, + "next_generation_network_architecture": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.833333, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.666667, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "operating_systems": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.333333, + "all_evidence_groups_at_20": 0.666667, + "known_positive_mrr": 0.555556 + }, + "probability_theory": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.0, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.0, + "all_evidence_groups_at_20": 0.666667, + "known_positive_mrr": 0.059852 + }, + "signals_and_communication": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.333333, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_5": 0.333333, + "all_evidence_groups_at_20": 0.333333, + "known_positive_mrr": 0.361111 + }, + "software_engineering": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.833333, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.666667, + "all_evidence_groups_at_20": 0.666667, + "known_positive_mrr": 0.416667 + }, + "software_testing": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "swarm_intelligence": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.166667, + "known_evidence_coverage_at_20": 0.5, + "all_evidence_groups_at_5": 0.0, + "all_evidence_groups_at_20": 0.333333, + "known_positive_mrr": 0.357143 + }, + "university_physics_3_1": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.833333, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.666667, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 1.0 + }, + "university_physics_3_2": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.833333, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.666667, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.3 + }, + "university_physics_lab_1": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.5, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 0.333333, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.269841 + }, + "university_physics_lab_2": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.833333, + "known_evidence_coverage_at_20": 0.833333, + "all_evidence_groups_at_5": 0.666667, + "all_evidence_groups_at_20": 0.666667, + "known_positive_mrr": 0.555556 + }, + "web_frontend_fundamentals": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.666667 + }, + "xi_thought_overview": { + "queries": 3, + "scored_queries": 3, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 1.0, + "known_evidence_coverage_at_20": 1.0, + "all_evidence_groups_at_5": 1.0, + "all_evidence_groups_at_20": 1.0, + "known_positive_mrr": 0.566667 + } + }, + "by_scenario": { + "definition_or_location": { + "queries": 43, + "scored_queries": 43, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.627907, + "known_evidence_coverage_at_20": 0.906977, + "all_evidence_groups_at_5": 0.627907, + "all_evidence_groups_at_20": 0.906977, + "known_positive_mrr": 0.483542 + }, + "condition_or_error_analysis": { + "queries": 43, + "scored_queries": 43, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.627907, + "known_evidence_coverage_at_20": 0.837209, + "all_evidence_groups_at_5": 0.627907, + "all_evidence_groups_at_20": 0.837209, + "known_positive_mrr": 0.442239 + }, + "multi_evidence_synthesis": { + "queries": 43, + "scored_queries": 43, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.476744, + "known_evidence_coverage_at_20": 0.744186, + "all_evidence_groups_at_5": 0.232558, + "all_evidence_groups_at_20": 0.511628, + "known_positive_mrr": 0.557806 + }, + "evidence_boundary": { + "queries": 6, + "scored_queries": 0, + "unscored_evidence_boundary_queries": 6 + } + }, + "by_split": { + "coverage": { + "queries": 135, + "scored_queries": 129, + "unscored_evidence_boundary_queries": 6, + "known_evidence_coverage_at_5": 0.577519, + "known_evidence_coverage_at_20": 0.829457, + "all_evidence_groups_at_5": 0.496124, + "all_evidence_groups_at_20": 0.751938, + "known_positive_mrr": 0.494529 + } + }, + "by_difficulty": { + "easy": { + "queries": 43, + "scored_queries": 43, + "unscored_evidence_boundary_queries": 0, + "known_evidence_coverage_at_5": 0.627907, + "known_evidence_coverage_at_20": 0.906977, + "all_evidence_groups_at_5": 0.627907, + "all_evidence_groups_at_20": 0.906977, + "known_positive_mrr": 0.483542 + }, + "medium": { + "queries": 46, + "scored_queries": 43, + "unscored_evidence_boundary_queries": 3, + "known_evidence_coverage_at_5": 0.627907, + "known_evidence_coverage_at_20": 0.837209, + "all_evidence_groups_at_5": 0.627907, + "all_evidence_groups_at_20": 0.837209, + "known_positive_mrr": 0.442239 + }, + "hard": { + "queries": 46, + "scored_queries": 43, + "unscored_evidence_boundary_queries": 3, + "known_evidence_coverage_at_5": 0.476744, + "known_evidence_coverage_at_20": 0.744186, + "all_evidence_groups_at_5": 0.232558, + "all_evidence_groups_at_20": 0.511628, + "known_positive_mrr": 0.557806 + } + } +} diff --git a/apps/scut-senior/resources/evaluation/reviewed-v2/coverage-harness.json b/apps/scut-senior/resources/evaluation/reviewed-v2/coverage-harness.json new file mode 100644 index 00000000..d924ef72 --- /dev/null +++ b/apps/scut-senior/resources/evaluation/reviewed-v2/coverage-harness.json @@ -0,0 +1,5925 @@ +{ + "schema_version": "coverage-harness-v2", + "corpus_version": "corpus-c1513a68ccd7-b0_2_0-m1200-wworkflow-contract-v1-ooutline-none-v1-ebge-small-zh-v1.5", + "provenance": { + "review_date": "2026-09-12", + "method": "Deterministic selection of legible active-corpus passages; queries are authored templates bound to frozen source snapshots.", + "status": "coverage harness, not semantic answer-key certification" + }, + "annotation_scope": "Each positive group names one required evidence need. Unlisted chunks are unjudged. Difficulty describes retrieval/reasoning demand, not a claim that the source passage itself is error-free.", + "evidence": { + "algorithm-design-and-analysis-028:p2:c01": { + "chunk_id": "algorithm-design-and-analysis-028:p2:c01", + "course_id": "algorithm_design_and_analysis", + "source_id": "algorithm-design-and-analysis-028", + "source_title": "Algorthm 2023-2024 A", + "heading_path": [ + "Algorthm 2023-2024 A" + ], + "locator_type": "page", + "locator_start": 2, + "locator_end": 2, + "question_id": null, + "text": "South China University of Technology\nAcademic year 2023/2024\n2nd Year Undergraduate\n\nDesign and Analysis of Algorithms\n\n1st Assessment 1st Exam\nCalculations\n\n𝑓(𝑛)\n𝑔(𝑛) = lim\n\n8𝑛log 𝑛\n100𝑛log 𝑛−100𝑛= lim\n𝑛→∞\n\n8𝑛log 𝑛\n100𝑛(log 𝑛−1)\n\nlim\n𝑛→∞\n\n𝑛→∞\n\n8 log 𝑛\n100(log 𝑛−1) = lim\n𝑛→∞\n\n8\n\n=\n8\n100(1 −0) =\n8\n100 = 2\n25\n\n= lim\n\n100(1 −\n1\nlog 𝑛)\n\n𝑛→∞\n\nSince the limit is a positive finite constant 2\n\n25, 𝑓(𝑛) and 𝑔(𝑛) have the same asymptotic growth rate.\n\nTherefore, 𝑓(𝑛) = Θ(𝑔(𝑛)).\n\nd)We evaluate the limit:\n\n𝑓(𝑛)\n𝑔(𝑛) = lim\n\n𝑛\nlog2 𝑛\n\nlim\n𝑛→∞\n\n𝑛→∞\n\nThis is an indeterminate form ∞\n\n∞, so we can apply L’Hôpital’s rule. We assume log 𝑛 is ln 𝑛.\n\nApplying L’Hôpital’s rule once:\n\n𝑑\n𝑑𝑛(𝑛)\n\n1\n2 ln 𝑛⋅1\n𝑛\n\n𝑛\n2 ln 𝑛\n\nlim\n𝑛→∞\n\n𝑑\n𝑑𝑛(ln2 𝑛) = lim\n\n= lim\n\n𝑛→∞\n\n𝑛→∞\n\nThis is still an indeterminate form ∞\n\n∞, so we apply L’Hôpital’s rule again:\n\n𝑑\n𝑑𝑛(𝑛)\n\n1\n2 ⋅1\n𝑛\n\n𝑛\n\nlim\n𝑛→∞\n\n𝑑\n𝑑𝑛(2 ln 𝑛) = lim\n\n= lim\n\n2 = ∞\n\n𝑛→∞\n\n𝑛→∞\n\nSince the limit is ∞, 𝑓(𝑛) grows asymptotically faster than 𝑔(𝑛).\n\nTherefore, 𝑓(𝑛) = Ω(𝑔(𝑛)).\n\ne)We evaluate the limit:\n\n𝑓(𝑛)\n𝑔(𝑛) = lim\n\n𝑛log 𝑛+ 𝑛\n\nlim\n𝑛→∞\n\nlog 𝑛+ 𝑛\n\n𝑛→∞\n\nDivide both numerator and denominator by 𝑛:\n\n𝑛\n𝑛\nlog 𝑛\n\nlog 𝑛+1\n\n𝑛log 𝑛\n\n𝑛\n+ 𝑛\n\nlog 𝑛\n\n= lim\n\n𝑛\n+\n\n𝑛= lim\n\n𝑛\n+ 1\n\n𝑛→∞\n\n𝑛→∞", + "text_sha256": "9bb1fd76cd61c53fda2762decc2a0b45018e4186199341cb56e36ffaae191ef6", + "knowledge_path": "knowledge/algorithm_design_and_analysis/algorithm-design-and-analysis-028.md", + "knowledge_sha256": "290faf787b153e23f7d9fe769737fdb1e0574ff61ff2d232ec97070de3dcf8c1" + }, + "algorithm-design-and-analysis-003:p4:c01": { + "chunk_id": "algorithm-design-and-analysis-003:p4:c01", + "course_id": "algorithm_design_and_analysis", + "source_id": "algorithm-design-and-analysis-003", + "source_title": "DAL-2020-Exam Paper A", + "heading_path": [ + "DAL-2020-Exam Paper A" + ], + "locator_type": "page", + "locator_start": 4, + "locator_end": 4, + "question_id": null, + "text": "AB(1), BE(1), DE(1), CF(2), AD(3), EF(4), BD(5), CE(5),\n\nBC(6), and then select the first edge AB into MST and the A and\n\nB set change like below:\n\nA\nB =V-A\n\nStep 2 There are the edges could\n\nA, B\nA, B, E\nA, B, E,D\nA, B, E,D,F\nA, B, E,D,F,C\n\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\n\nC, D, E, F\nC, D, F\nC, F\nC\nΦ\n\nbe slected at this step and sort them\n\nBE(1), AD(3), BD(5), BC(6), and\n\nthen the edge BE(1) will be selected at this step, and the sets A\n\nand B will be changing like above.\n\nStep 3 there are these edges will be selected and sorting them\n\nbefore like this: ED(1), AD(3), EF(4), BD(5), CE(5), BC(6), and\n\nthe edge ED(1) will be selected at this step, and the sets A and B\n\nwill be changed like above.\n\nStep 4 there are these edges will be selected and sorting them\n\nbefore like this: EF(4), CE(5), BC(6), and the edge EF will be\n\nselected at this step and the sets A and B will be changing like\n\nabove.\n\nStep 5 there are these edges will be selected and sorting them\n\nbefore like this: CF(2), CE(5), BC(6), and the edge CF will be\n\nselected into MST at this step and the sets A and B will changing\n\nlike above.\n\nThe result likes the result of Kruskal's algorithm .", + "text_sha256": "c033d82f2bc62aa9a82279d157f1f540329973e6c85d18bcd94be87cc1eacc79", + "knowledge_path": "knowledge/algorithm_design_and_analysis/algorithm-design-and-analysis-003.md", + "knowledge_sha256": "35fd41666d96bc3fcaa005e636b2e35e3d43434b5315f9952468519ab96da2ae" + }, + "algorithm-design-and-analysis-005:p29:c01": { + "chunk_id": "algorithm-design-and-analysis-005:p29:c01", + "course_id": "algorithm_design_and_analysis", + "source_id": "algorithm-design-and-analysis-005", + "source_title": "1-sort", + "heading_path": [ + "1-sort" + ], + "locator_type": "page", + "locator_start": 29, + "locator_end": 29, + "question_id": null, + "text": "INSERTION-SORT (A, n) ⊳A[1 . . n]\ncost\ntimes\n1\nfor j ← 2 to n\nc1\n𝑛-1\n2\ndo key ← A[j ]\nc2\n𝑛−1\n𝑛−1\nc3\nc4\nc5\nc6\n\ni ← j – 1\n\n3\n4\n5\n6\n7\n\n𝑛\n\nwhile i > 0 and A[i] > key\n\n෍\n\n𝑡𝑗\n\nj=2\n\ndo A[i + 1] ←A[i]\ni ← i – 1\nA[i + 1] = key\nc7\n\n𝑛\n\n෍\n\n(𝑡𝑗−1)\n\nj=2\n\n𝑛\n\n෍\n\n(𝑡𝑗−1)\n\nj=2\n\n𝑛−1\n𝑇(𝑛) = c1 (𝑛– 1) + c2(𝑛– 1) + c3(𝑛– 1) + c4 σj=2\n\n𝑛\n(𝑡𝑗−1) +\nc6 σj=2\n\n𝑛\n𝑡𝑗+ c5 σj=2\n\n𝑛\n(𝑡𝑗−1) + c7(𝑛– 1)\n\nBest-case: The array is already sorted.\n\n\nAlways find that A[i ] ≤keyupon the first time the while loop test is run\n(when i = j −1).\n\n\nAll 𝑡𝑗are1.\n\n\nRunning time is\n\n𝑇(𝑛) = 𝑐1(𝑛−1)+ 𝑐2 (𝑛−1)+ 𝑐3 (𝑛− 1)+ 𝑐4 (𝑛− 1)+ c7 ( n −1)\n\n=(𝑐1 + 𝑐2 + 𝑐3 + 𝑐4 + 𝑐7 )𝑛− (𝑐1 +𝑐2 + 𝑐3 + 𝑐4 +𝑐7)\n\n\nCan express 𝑇(𝑛) as𝑎𝑛+𝑏for constants 𝑎and 𝑏(that depend on the\nstatement costs 𝑐𝑖) ⇒𝑇(𝑛)is a linear function of 𝑛. ⇒𝑇(𝑛)=Θ(𝑛)\n\n29", + "text_sha256": "7294bfee0c4cf86511641e2f5f1afe5d8833c18c394d637da1db8f308993083c", + "knowledge_path": "knowledge/algorithm_design_and_analysis/algorithm-design-and-analysis-005.md", + "knowledge_sha256": "d93f9526c819fc2a7d0c8789b01789321fea5e370fa9c1056737a1169f00df0f" + }, + "artificial-intelligence-intro-047:h-人工智能复习题-2024:c04": { + "chunk_id": "artificial-intelligence-intro-047:h-人工智能复习题-2024:c04", + "course_id": "artificial_intelligence_intro", + "source_id": "artificial-intelligence-intro-047", + "source_title": "人工智能复习题-2024", + "heading_path": [ + "人工智能复习题-2024" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "32. ( )以结构化的形式描述客观世界中概念、实体及其之间的关系,已经成为互联网知识驱动的智能应用的基础设施。\n\nA、神经网络 B、知识图谱 C、一阶谓词逻辑 D、产生式表示\n\n33. 在与或图中,只要解决某个子问题就可解决其父辈问题的节点集合是指( )\n\nA、终叶节点 B、或节点 C、与节点 D、后继节点\n\n34. 在一个神经网络里,知道每一个神经元的权重和偏差是最重要的一步。如果以某种方法知道了神经元准确的权重和偏差,就可以近似任何函数。实现这个的最佳办法是( )\n\nA、随机赋值,祈祷它们是正确的\n\nB、搜索所有权重和偏差的组合,直到得到最佳值\n\nC、赋予一个初始值,通过检查模型输出值和函数期望输出值的差值,然后迭代更新\n\n权重\n\nD、以上都不正确\n\n35. 下面哪个叙述是不正确的?( )\n\nA、k-means 聚类算法的初始值对聚类结果有很大影响\n\nB、DBSCAN 算法不需要输入聚类簇数k\n\nC、k-means 算法可以发现任意形状的聚类簇\n\nD、DBSCAN 算法可以发现任意形状的聚类簇\n\n36. 下列关于搜索的说法中错误的个数有( )个:\n\na) 状态空间图有三个要素:状态、连接、转移路线\n\nb) 状态空间图中不是所有的状态都合理\n\nc) 启发式搜索每一步都尽量选择最优的路线,在无穷次尝试中“碰”到答案\n\nd) 启发式搜索将人解决问题的“知识”告诉机器\n\nA、0 B、1 C、2 D、3\n\n37. 在不确定性推理中,对于初始证据,其值由用户给出,对于推理所得的证据,其值由( )得到。\n\nA. 不确定性的匹配算法计算得到\n\nB. 不确定性的阈值选择算法得到\n\nC. 不确定性的传递算法计算得到\n\nD. 不确定性的合成算法计算得到。\n\n38. 语义网络表达知识时,有向弧AKO链、ISA链是用来表达节点的知识 ( )\n\nA. 无悖性 B. 可扩充性 C. 继承性 D. 聚集关系\n\n39. 简单地将数据对象集划分成不重叠的子集,使得每个数据对象恰在一个子集中,这种聚类类型称作( )\n\nA.层次聚类 B.划分聚类 C.非互斥聚类 D.模糊聚类\n\n40. 下列数字哪个最模糊 ( )\n\nA. 0.8 B. 0.5 C. 0 D. 1\n\n41. 以下哪项关于决策树的说法是错误的 ( )\n\nA. 冗余属性不会对决策树的准确率造成不利的影响 B. 子树可能在决策树中重复多次 C. 决策树算法对于噪声的干扰非常敏感 D. 寻找最佳决策树是NP完全问题\n\n42. 下列描述( )是正确的\n\n(A)知识具有一定的随机性,可以用模糊数学来刻画。\n\n(B)高个子适合于打篮球体现了知识的不完全性。\n\n(C)莲花清瘟对新冠病毒有一定的功效,体现了知识的模糊性。", + "text_sha256": "583482f212ca8df3b5e2febd068273423b9784ad20e43cdfa7bee8980108f94a", + "knowledge_path": "knowledge/artificial_intelligence_intro/artificial-intelligence-intro-047.md", + "knowledge_sha256": "66915d7d07b77250048a059fe9fef7279ca1c1f7d5827570d5450700e05cc3b3" + }, + "artificial-intelligence-intro-039:h-人工智能导论-模拟卷一-基础巩固卷~一-选择题-每题-1-分-共-20-分:c01": { + "chunk_id": "artificial-intelligence-intro-039:h-人工智能导论-模拟卷一-基础巩固卷~一-选择题-每题-1-分-共-20-分:c01", + "course_id": "artificial_intelligence_intro", + "source_id": "artificial-intelligence-intro-039", + "source_title": "模拟卷一", + "heading_path": [ + "人工智能导论 · 模拟卷一(基础巩固卷)", + "一、选择题(每题 1 分,共 20 分)" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "1. 下列哪个不是人工智能的研究领域( )\n A. 机器证明 B. 模式识别 C. 人工生命 D. 编译原理\n\n2. 命题是可以判断真假的( )\n A. 祈使句 B. 疑问句 C. 感叹句 D. 陈述句\n\n3. A∨(A∧B)⇔A 称为( )\n A. 结合律 B. 分配律 C. 吸收律 D. 摩根律\n\n4. 主要研究计算机如何自动获取知识和技能、实现自我完善的学科叫( )\n A. 专家系统 B. 机器学习 C. 神经网络 D. 模式识别\n\n5. 若问题存在最优解,在单位耗散情况下,( )必然得到该最优解。\n A. 广度优先搜索 B. 深度优先搜索 C. 有界深度优先搜索 D. 启发式搜索\n\n6. 下列中哪组不能被合一( )\n A. P(a,b),P(x,y) B. P(f(x),b),P(y,z) C. P(f(x),y),P(y,f(b)) D. P(f(y),y,x),P(x,f(a),f(b))\n\n7. 在前馈神经网络中,BP 算法调整的是( )\n A. 输入数据大小 B. 神经元间连接有无 C. 同层神经元连接权重 D. 相邻层神经元连接权重\n\n8. 神经网络输出限定在 (0,1) 之间,应使用( )\n A. Sigmoid B. tanh C. ReLU D. Leaky ReLU\n\n9. 加法节点 C=A+B,A=3,B=4,C=7,若 C 处梯度为 2,则 A、B 处梯度为( )\n A. 1,1 B. 2,2 C. 3,4 D. 4,3\n\n10. 7×7 输入、3×3 卷积核、步幅 1、无填充,输出尺寸为( )\n A. 1×1 B. 3×3 C. 5×5 D. 7×7\n\n11. 机器学习的本质是( )\n A. 解释学习 B. 归纳学习 C. 类比学习 D. 机械学习\n\n12. 语义网络中 AKO、ISA 链表达节点的( )\n A. 无悖性 B. 可扩充性 C. 继承性 D. 聚集关系\n\n13. 下面哪个算法不是分类算法( )\n A. 决策树 B. 卷积神经网络 C. K-means D. 朴素贝叶斯\n\n14. 下面对人类智能和机器智能的描述不正确的是( )\n A. 人类能自我学习,机器多靠数据和规则驱动\n B. 人类有自适应,机器多是\"依葫芦画瓢\"\n C. 人类有直觉顿悟,机器很难具备\n D. 人类和机器都具备常识,都能常识推理\n\n15. 子句 ¬P∨Q、¬Q∨R、P 归结后得到( )\n A. Q B. R C. P∨R D. P∨Q∨R\n\n16. 训练一个 500 类分类网络,最后分类层输出维数应为( )\n A. 100 B. 2 C. 1 D. 500\n\n17. 下列数字哪个最模糊( )\n A. 0.8 B. 0.5 C. 0 D. 1", + "text_sha256": "839515cc9d588e99cbe4d07677b3c27b5ccfbcb7653045c093682e167e408696", + "knowledge_path": "knowledge/artificial_intelligence_intro/artificial-intelligence-intro-039.md", + "knowledge_sha256": "88a5385417760ad859ceab375f25f45b3f60c18631d6502b28fefc6b6aa90338" + }, + "artificial-intelligence-intro-040:h-人工智能导论-模拟卷三-全真冲刺卷~一-选择题-每题-1-分-共-20-分:c01": { + "chunk_id": "artificial-intelligence-intro-040:h-人工智能导论-模拟卷三-全真冲刺卷~一-选择题-每题-1-分-共-20-分:c01", + "course_id": "artificial_intelligence_intro", + "source_id": "artificial-intelligence-intro-040", + "source_title": "模拟卷三", + "heading_path": [ + "人工智能导论 · 模拟卷三(全真冲刺卷)", + "一、选择题(每题 1 分,共 20 分)" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "1. 下列推理方法中,属于谓词逻辑推理方法的是( )\n ①自然演绎推理 ②归结演绎推理 ③概率推理 ④贝叶斯网络推理\n A. ①② B. ①③ C. ②④ D. ③④\n\n2. \"东北人是高个子\"这个描述是( )\n A. 模糊的 B. 不完全的 C. 概率的 D. 必然的\n\n3. 在不确定性推理中,推理所得证据的值由( )得到。\n A. 匹配算法 B. 阈值选择算法 C. 传递算法 D. 合成算法\n\n4. 下列描述中正确的是( )\n A. 知识的随机性可用模糊数学刻画\n B. 高个子适合打篮球体现知识的不完全性\n C. 莲花清瘟对新冠有功效体现知识的模糊性\n D. 知识的随机性可用概率论刻画\n\n5. 关于 A* 算法,下列陈述**不正确**的是( )\n A. A* 结束前 OPEN 表必存在 f(n)≤f*(s) 的结点\n B. OPEN 表上任一 f(n)≤f*(s) 的结点最终都将被扩展\n C. A* 扩展的任一结点 n 有 f(n)≤f*(s)\n D. 启发信息越多,扩展的结点数越少\n\n6. 下列关于搜索的说法中错误的个数有( )个:\n a) 状态空间图三要素是状态、连接、转移路线\n b) 状态空间图中不是所有状态都合理\n c) 启发式搜索在无穷次尝试中\"碰\"到答案\n d) 启发式搜索将人的\"知识\"告诉机器\n A. 0 B. 1 C. 2 D. 3\n\n7. 下列对充分性度量 LS 和必要性度量 LN 取值设置正确的是( )\n A. LS=20, LN=1 B. LS=300, LN=0.001 C. LS=1, LN=20 D. LS=10, LN=300\n\n8. 决策树中,数据最重要的属性位于( )\n A. 根结点 B. 叶结点 C. 中间结点 D. 都不是\n\n9. 假设训练一个网络完成 500 种概念分类,最后分类层输出向量维数可能是( )\n A. 100 B. 2 C. 1 D. 500\n\n10. 简单地将数据对象集划分成不重叠子集、每个对象恰在一个子集中,这种聚类称作( )\n A. 层次聚类 B. 划分聚类 C. 非互斥聚类 D. 模糊聚类\n\n11. 在一个神经网络里求准确权重和偏差的最佳办法是( )\n A. 随机赋值 B. 穷举所有组合 C. 赋初值后按输出误差迭代更新权重 D. 以上都不对\n\n12. 设 U={1,…,10},\"大=0.2/4+0.4/5+0.6/6+0.8/7+1/8+1/9+1/10\",则下列正确的是( )\n A. 4 是大的数字 B. 8 是大的数字 C. 5 是大的数字 D. 6 完全是大的数字\n\n13. 卷积神经网络最擅长的领域是( )\n A. 图像识别 B. 数据库检索 C. 逻辑定理证明 D. 符号推理", + "text_sha256": "3a3aeb04c80b8e8c9aa401baa32227cdb433416730b8f359c18babbaf8d5a789", + "knowledge_path": "knowledge/artificial_intelligence_intro/artificial-intelligence-intro-040.md", + "knowledge_sha256": "84e151ef91713d7a53ad6e81cc90a6392ae3fa73da2f76732ef2ae3096eba14d" + }, + "compiler-principles-046:h-网站和笔记:c01": { + "chunk_id": "compiler-principles-046:h-网站和笔记:c01", + "course_id": "compiler_principles", + "source_id": "compiler-principles-046", + "source_title": "网站和笔记", + "heading_path": [ + "网站和笔记" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "```text\n1. 怎么求由正规式转化为NFA、DFA和最小化DFA\nhttps://zhuanlan.zhihu.com/p/37900383\n2. 怎么求FIRST集合FOLLOW集\nhttps://blog.csdn.net/qq_45913371/article/details/124968261?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167737891516800225538672%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167737891516800225538672&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-124968261-null-null.142^v73^wechat,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=FOLLOW%E9%9B%86&spm=1018.2226.3001.4187\n3. 同一个终结符的不同产生式的SELECT集的交集为空集,这样的文法才是LL(1)文法\n4. 求符号串的FIRST集,应该先观察第一个符号,如果第一个符号不能推导出空集,那么就直接用\nFIRST(第一个符号),否则从左往右继续观察,直到某个符号不能推导出空集,这时就将包括这个符号在内\n的前面所有符号的FIRST集并上并减去ε(lower-case epsilon)。如果所有符号都能推出空集,那么再把\nε加进去\n5. 需要满足LL(1)文法的语法分析方法包括 递归下降子程序法和预测分析法\n6. LR(k)分析通过活前缀来帮助确定句柄,这一部分内容包括活前缀和可归约前缀的识别,使用DFA\n7. 只要分析过程中符号栈里的符号串是个活前缀,就说明已经被分析的部分是正确的。\n8. 拓广文法就是增加一个对开始符号S的推导:S'->S,剩下的不变\n9. 构造好基于项目集规范族的DFA,推出ACTION和GOTO表就很容易了\n10. 当一个文法的LR(0)项目集规范族中的项目集不存在移进-归约冲突和归约-归约冲突时这个文法就是LR(0)\n文法。\n11. SLR(1)的改进版在于归约的时候还需要观察推导式左边的FOLLOW集是否包含\n比如A->r·,要看输入符号a是否在FOLLOW(A)中才决定是否归约,否则考虑同项目集中的移进\n12. SLR(1)不满足的情况之一:归约-归约冲突时∩FOLLOW != ∅,即不能找出要归约谁。\n13. 语法分析方法的比较主要针对LL(1)和LALR(1)两大主流:\n① 简单性:LL(1)更简单\n② 一般性:LALR(1)更一般,可以处理左递归\n③ 语义动作的插入:LL(1)更灵活,允许其出现在产生式右部任何地方\n④ 错误校正:LL(1)更好,因为LL(1)分析栈保存的是待匹配的语法符号,LALR(1)保存的是已经\n匹配过的\n⑤ 分析表大小:LL(1)更有优势\n综上:LL(1)一般情况都好。\n14. 错误分析和恢复分为3类:递归下降分析、LL分析、LR分析\n15. 词法分析的描述工具包括正规文法和正则表达式;语法分析的描述工具包括上下文无关文法\n16. 属性文法A = (G,V,F): G是一个上下文无关文法,V是属性的有穷集,F是关于属性的断言的有穷集\n17. 属性包括综合属性和继承属性:\n综合属性是内在属性,该属性值由子节点的属性值计算而来,用于自下而上传递信息\n继承属性自上而下,属性值由父节点或兄弟节点计算而来。\n词法分析器提供综合属性给终结符,终结符没有继承属性\n文法开始符也没有继承属性,其他的普通非终结符可以涵盖两种属性\n18. 中间代码有4种形式:逆波兰记号、三元式、四元式、树形表示\n逆波兰也叫后缀式,运算符写后面,对象写前面,简单地说就是把AST进行后序遍历得到的结果,\n\t易于计算机栈处理\n三元式:(op,arg1,arg2):运算符、对象1、对象2\n四元式:(op,arg1,arg2,result):result表示运算结果存储在哪个变量\n以上的参数列表都可以选择性空着,比如(=,t3,-,a)表示a=t3,第三个参数arg2不需要\n19. 自下而上语法制导翻译的考试(可能)主要内容包括简单赋值语句、布尔表达式、\n控制语句、简单说明语句\n20. 拉链和回填:布尔表达式有true和false的出口,一开始不能确定,要待后续翻译做完才可以确定(回填)\n21. 简单说明语句不产生中间代码,会有一个符号表(symbol table)来默默记录变量和属性\n事实上符号表会在词法和语法分析过程中不断填入,用于予以检查和产生中间代码、生成\n目标代码等不同的阶段。\n说明语句:变量、函数声明语句等\n22. 自上而下的语法制导翻译可以对应递归下降法和LL分析法两种方式\n23. 递归下降法很简单,我实验做过,就是在子程序里插入一段代码,来实现赋值、类型检查等语义动作\n24. LL(1)分析法是让产生式右部逐个文法符号与输入串匹配,每获得一个匹配就可以执行相应的语义动作\n衍生出一个概念:动作文法(Action Grammar)\n25. S-属性文法:所有属性都是综合属性,是L-属性文法的特例\nL-属性文法:对于每个产生式X_0->X_1X_2......X_n的每个语义规则中,每个属性要不是综合属性,要不\n对于X_i的属性a_j满足:\nX_i.a_j = f_{ij} (X_0.a1~ak,X_1.a1~ak,......,X_{i-1}.a1~ak)\n个人理解:Xi的某个叫aj的属性由表达式中他左边和父亲的每个X的各个属性确定(兄弟+父亲节点?)\n26. 目标程序运行的存储组织要解决的问题在于:把静态的程序和程序运行时的动态活动联系起来\n即运行中的程序信息如何进行存储和访问,其中存储组织表示编译阶段定义的各种量要在运行时分配\n存储空间。\n27. 存储空间结构在文件夹里有图,空间分配的话要考虑静态存储分配、\n栈式动态存储分配和堆式动态存储分配。这是一个可能的考点\n· 静态存储分配:FORTRAN语言,编译的时候就分配好了,适用于不允许递归过程或递归调用和可变体积的数据结构\n· 栈式动态分配:C、PASCAL,开辟栈区,调用一个过程的时候就分配数据空间在栈顶,工作结束时释放(先借后还)\n· 堆式动态分配:C++,需要的时候就开辟一片存储区借用一块,不用的时候再退还,可以自由申请,但容易\n出现碎片,不好充分利用空间。\n28. 参数:传值、传地址、传名\n29. 编译阶段的代码优化:中间代码优化(不依赖具体计算机)、目标代码优化(依赖具体计算机)\n优化本身又分为:局部优化、循环优化、全局优化等\n30. 中间代码优化可以分为:①删除多余运算(删除公共子表达式):比如前面有x=4*p,后面有\ny=4*p,中间p也没改变,则后面的优化成y=x\n②合并已知量和复写传播:x=4*p,p如果已知,比如=1,那么直接优化成x=4,后面如果不变,然后\n有语句y=4*p,那么一样直接令y=x=4。复写传播就是如果后面再有z=y,中间x、y不变,那就直接把\nx的值传递给z\n③删除无用赋值:有些变量的赋值从未被引用。。。\n31. 基本块概念,以及如何把一段程序分成若干基本块。。。基本块的DAG的构建算法:可能重点\n32. DAG的应用:前面3种都包括。\n33. 循环优化:流图。。。\n优化的内容:\n①代码外提:把循环不变运算提到循环前面,主要指那些循环时值不变的、循环外定值或者为常量的。。。\n②强度削弱:比如乘法换成加法。。。\n34. 代码生成的共同问题:寄存器分配算法和基本块的代码生成算法\n代码生成器:基于基本块,输入四元式,输出M机器的汇编\n在进入基本块的时候所有寄存器都是空闲的,离开出口时释放寄存器,有用的值存回内存,变量中间值尽量\n存在寄存器里。\n35. 待用信息链表法:待用信息:下次引用信息;定值、引用、活跃的概念\n36. 寄存器描述数组RVALUE、变量地址描述数组AVALUE、寄存器分配函数GETREG(返回一个寄存器)\n※其他有的没的\n26. 正则表达式转换为DFA还有分割法哦\n\n① 语法分析的五/六个阶段\nhttps://developer.aliyun.com/article/613610\n② 句型、短语、直接短语、句柄是怎么来的\nhttps://blog.csdn.net/IT_DREAM_ER/article/details/53612006\n③ 正规式、正规集和正则定义\nhttps://blog.csdn.net/starter_____/article/details/86659588\n④ 基本块的DAG化\nhttps://zhuanlan.zhihu.com/p/331795662\nhttps://www.cnblogs.com/xpwi/p/11073220.html\n\n```", + "text_sha256": "e7be8eecc387ea3f5a2d689833fb8a7c854b3da34b4efb947447c4180a420028", + "knowledge_path": "knowledge/compiler_principles/compiler-principles-046.md", + "knowledge_sha256": "ef67ab9a510048b61ea79df7141dd54c5c4f8f763e33ca6ee3b91309fb3303a5" + }, + "compiler-principles-011:q-compiler-principles-011-q15:c03": { + "chunk_id": "compiler-principles-011:q-compiler-principles-011-q15:c03", + "course_id": "compiler_principles", + "source_id": "compiler-principles-011", + "source_title": "2011年编译原理期末考试试卷A答案", + "heading_path": [ + "2011年编译原理期末考试试卷A答案" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": "compiler-principles-011-Q15", + "text": "| **步骤** | **状态栈** | **符号栈** | **输入串** | **ACTION** | **GOTO** |\n|---|---|---|---|---|---|\n| (1) | 0 | # | baab# | r3 | 2 |\n| (2) | 02 | #A | baab# | S5 | |\n| (3) | 025 | #Ab | aab# | S3 | |\n| (4) | 0253 | #Aba | ab# | r5 | 6 |\n| (5) | 02536 | #AbaB | ab# | S8 | |\n| (6) | 025368 | #AbaBa | b# | r2 | 7 |\n| (7) | 0257 | #AbA | b# | S9 | |\n| (8) | 02579 | #AbAb | # | r4 | 4 |\n| (9) | 024 | #AB | # | r1 | 1 |\n| (10) | 01 | #S | # | acc | |\n| | | | | | |\n| | | | | | |\n\n**六、把下面的语句翻译成四元式序列。** **(10分)**\n\n(只给出最后结果,设LABEL当前值为100)\n\n**while** **(A0)** **do**\n\n**begin**\n\n**X := X + 1 ;**\n\n**if** **X >** **1** **then** **C:=C+1** **else** **A:=A*2****;**\n\n**end;**\n\n100:\t\tj< ,\tA ,\tC ,\t102\n\n101:\t\tj ,\t- ,\t- ,\t0\n\n102:\t\tj> ,\t\tB ,\t\t0 ,\t104\n\n103:\t\tj ,\t- ,\t- ,\t\t0\n\n104:\t\t+ ,\t\tX ,\t1 ,\tT1\n\n105:\t\t:= ,\tT1 ,\t- ,\t\tX\n\n106:\t\tj >,\t\tX ,\t\t1,\t108\n\n107:\t\t\t\tj ,\t\t- ,\t\t- ,\t\t111\n\n108:\t\t\t\t+ ,\t\tC ,\t\t1,\t\tT2\n\n109:\t\t\t\t:= ,\t\tT2 ,\t- ,\t\tC\n\n110 j, -, -, 100\n\n111: *, A, 2, T3\n\n112: :=, T3, -, A\n\n113: j, -, -, 100\n\n114\n\nS.CHAIN=114\n\n**七、构造正规表达式( a | b )******* **b的最小化有穷自动机。** **(15分)**\n\n**解:**\n\n**( 1 )** **构造正规表达式( a | b )******* **b对应的NFA:**", + "text_sha256": "444c7aaf56190d2a4dbd00f71b5ae163b495bdc4d248f907d0cc49c60926e8d8", + "knowledge_path": "knowledge/compiler_principles/compiler-principles-011.md", + "knowledge_sha256": "832f4400e35848eba539080e28f69556b5e62c55cd848dbb16397b879b869ca1" + }, + "compiler-principles-003:h-编译复习提纲:c05": { + "chunk_id": "compiler-principles-003:h-编译复习提纲:c05", + "course_id": "compiler_principles", + "source_id": "compiler-principles-003", + "source_title": "编译复习提纲", + "heading_path": [ + "编译复习提纲" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "* 文法:一般形式为变量 = 表达式。例如,在 BNF 表示法中可以表示为 < 赋值语句 > → < 变量 > = < 表达式 >。\n\n* 语义:将右边表达式的值计算出来并赋给左边的变量。例如,“x = a + b” 的语义是计算 a 加上 b 的值,然后把这个值存入变量 x 中。\n\n* 翻译目标:生成能够实现赋值操作的中间代码或者目标代码。例如,对于三地址码中间代码,翻译成 “t1 = a + b;x = t1” 这样的形式。\n\n* **布尔表达式** :\n\n* 文法:可以由比较运算符、逻辑运算符(如与、或、非)等组成。例如,< 布尔表达式 > → < 布尔项 > ((OR | AND) < 布尔项 >)*。\n\n* 语义:计算表达式的真假值。例如,“a > b AND c == d” 表示先判断 a 是否大于 b,同时判断 c 是否等于 d,然后通过逻辑与运算得到最终的布尔值。\n\n* 翻译目标:生成能够正确计算布尔值的中间代码,可能会涉及到跳转指令来处理逻辑控制流程。例如,对于表达式 “a > b”,翻译成三地址码时可以是 “IF a > b GOTO L1”,其中 L1 是一个标号,用于后续的流程控制。\n\n* **IF 语句** :\n\n* 文法:一般形式为 IF(条件)THEN 语句 [ELSE 语句]。例如,在 BNF 表示法中可以表示为 → IF < 布尔表达式 > THEN < 语句 > [ELSE < 语句 >]。\n\n* 语义:如果条件为真,执行 THEN 后的语句;否则,如果存在 ELSE 分支,执行 ELSE 后的语句。例如,“IF x > 0 THEN y = 1 ELSE y = -1” 的语义是判断 x 是否大于 0,若是则 y 赋值为 1,否则 y 赋值为 - 1。\n\n* 翻译目标:生成能够实现条件判断和分支跳转的中间代码或者目标代码。例如,对于上面的例子,可以翻译成三地址码:“IF x > 0 GOTO L1;y = -1;GOTO L2;L1:y = 1;L2:...”,其中 L1 和 L2 是标号,用于控制程序的流程。\n\n* **WHILE 语句** :\n\n* 文法:一般形式为 WHILE(条件)DO 语句。例如,在 BNF 表示法中可以表示为 → WHILE < 布尔表达式 > DO < 语句 >。\n\n* 语义:当条件为真时,反复执行 DO 后的语句。例如,“WHILE x < 10 DO x = x +1”的语义是只要 x 小于 10,就一直执行 x 自增 1 的操作。", + "text_sha256": "079b6b1b874317d5268f8808704e022d5c4d2c8debff79a3bf1bf4ae55d5518a", + "knowledge_path": "knowledge/compiler_principles/compiler-principles-003.md", + "knowledge_sha256": "9bf43309c67150996f98ed81b323771652b21d381d8dd0ac908791da621679d6" + }, + "computer-graphics-009:p29:c01": { + "chunk_id": "computer-graphics-009:p29:c01", + "course_id": "computer_graphics", + "source_id": "computer-graphics-009", + "source_title": "7- Geometric representations (Chap 11-13)", + "heading_path": [ + "Polygonal face element (see below)" + ], + "locator_type": "page", + "locator_start": 29, + "locator_end": 29, + "question_id": null, + "text": "创建半边结构伪代码\n\nmap< pair, HalfEdge* > Edges;\n1.遍历网格模型的所有面F{\n2. 遍历F的每条边(u,v){\n//创建节点\n3. Edges[pair(u,v)] = new HalfEdge();\n4. Edges[pair(u,v)]→face = F;\n5. Edges[pair(u,v)]→vert = v;\n6. }\n\nv5\n\nv2\n\ne3,1 e3,2\ne4,1\ne5,1\n\nf2\nf3\ne1,1\n\ne7,1\n\nf1\n\ne4,2\n\nv4\n\ne6,1\n\nv3\n\ne2,1\n\nv1\n\n7.\n遍历F的每条边(u,v) {\n//完善节点信息\n8. Edges[pair(u,v)] →nextHalfEdge = next half-edge in F;\n9. if ( Edges.find(pair(v,u))!= Edges.end() ) {\n10. Edges[pair(u,v)] →oppoHalfEdge = Edges[pair(v,u)];\n11. Edges[pair(v,u)] →oppoHalfEdge = Edges[pair(u,v)];\n12 }\n13. }\n14. }\n\n29", + "text_sha256": "6baf3cdc20a20b5aded2e10fd5649e7b631664e221da128e8b02078f2469917c", + "knowledge_path": "knowledge/computer_graphics/computer-graphics-009.md", + "knowledge_sha256": "e8b0e3535420754a95bbaf5d6eb6795489a10af03b3615e3d39c2ab8cb2301ad" + }, + "computer-graphics-008:p53:c01": { + "chunk_id": "computer-graphics-008:p53:c01", + "course_id": "computer_graphics", + "source_id": "computer-graphics-008", + "source_title": "6- Hidden Surface Removal (chap 8)", + "heading_path": [ + "6- Hidden Surface Removal (chap 8)" + ], + "locator_type": "page", + "locator_start": 53, + "locator_end": 53, + "question_id": null, + "text": "二叉空间剖分树生成—伪代码\n\nBSP_Tree BSP_MakeTree(PolygonList)\nif PolygonList == NULL then BSPTree=NULL;\nelse {\n\nPartitionPolygon = SelectAndRemove(PolygonList);\nPositiveBranch = NegativeBranch = NULL;\nfor ( each polygon P in PolygonList) {\n\nif( P in the positive side of PartitionPolygon)\n\nAddPolygonToBSP(P, PositiveBranch);\nelse if (P in the negative side of PartitionPolygon )\n\nAddPolygonToBSP(P, NegativeBranch);\nelse {\n\nSubdividePolygon(P, PartitionPolygon, PosiP, NegaP);\nAddPolygonToBSP(PosiP, PositveBranch);\nAddPolygonToBSP(NegaP, NegativeBranch);\n}\n}\nCombineBSPTree(PositiveBranch, PartitionPolygon, NegativeBranch);\n}\n\n53", + "text_sha256": "ed19e907325ade9df8f785b1ce068299f7aa3bb8ca534267e321c33729cfc0a7", + "knowledge_path": "knowledge/computer_graphics/computer-graphics-008.md", + "knowledge_sha256": "63cfb3690ad7640f82633b7245b28f7ad49574a6dcd46304539c7b66238a08db" + }, + "computer-graphics-003:p49:c01": { + "chunk_id": "computer-graphics-003:p49:c01", + "course_id": "computer_graphics", + "source_id": "computer-graphics-003", + "source_title": "11 illumination models (chap 6)", + "heading_path": [ + "11 illumination models (chap 6)" + ], + "locator_type": "page", + "locator_start": 49, + "locator_end": 49, + "question_id": null, + "text": "附:Bui Tuong Phong\n\nVietnamese: Bùi Tường Phong, December 14, 1942–\n\n1975) was a Vietnamese-born computer graphics\nresearcher and pioneer\n\nPh.D. from the University of Utah in 1973.[1]\n\nPhong knew that he was terminally ill with leukemia(白\n\n血病) while he was a student. In 1975, after his tenure\nat the University of Utah, Phong joined Stanford as a\nprofessor. He died not long after finishing his\ndissertation.\n\nBui Tuong Phong, \"Illumination for Computer\n\nGenerated Pictures,\" Comm. ACM, Vol 18(6):311-317,\nJune 1975.\n\n49", + "text_sha256": "9c268721dffba2bc1d87f1ce8fdee465407e37f69d3937df5e877095399c6bec", + "knowledge_path": "knowledge/computer_graphics/computer-graphics-003.md", + "knowledge_sha256": "f2de2e176e4629ad33edb5cbaa4dbc2a6e4438459cb5cee3ce6803fda843a0e6" + }, + "computer-networks-050:h-术语和缩写大全:c01": { + "chunk_id": "computer-networks-050:h-术语和缩写大全:c01", + "course_id": "computer_networks", + "source_id": "computer-networks-050", + "source_title": "术语和缩写大全", + "heading_path": [ + "术语和缩写大全" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "第一章(标*的不是很必要的)\n\n1. internet:互联网,通用名词,是多个计算机互连而成的网络,协议任意\n\n2.Internet:因特网,专有名词,全球最大最开放的特定计算机网络,采用TCP/IP协议族,前身为美国的ARPANET。\n\n3.ISP:因特网服务提供者(Internet Service Provider),提供IP地址,中国的ISP有中国电信、移动、联通等。因特网可以基于ISP分为三层:国际性的主干网(完全互连)、区域性和国家性的第二层(大公司等),以及第三层的本地ISP(提供校园网、企业网等)。用户购买调制解调器和路由器可以自己成为ISP\n\n*4.RFC: 因特网技术文档Request For Comments;ISOC: 因特网协会\n\n5.RTT: 往返时间Round-Trip Time,网络信息双向交互一次所需的时间\n\n6.TCP/IP协议:IP协议位于网际层,TCP协议位于运输层,IP协议可以为各种网络应用提供服务,也可以互连不同的网络接口,通常用这两个协议指代整个协议大家族\n\n7.PDU: 协议数据单元Protocol Data Unit,指对等层次之间传送的数据包\n\n8.SDU: 服务数据单元,同一系统内,层与层之间交换的数据包。多个SDU可以合成为一个PDU;一个SDU也可以划分为几个PDU\n\n**第二章:物理层**\n\n1.UTP、STP:无屏蔽双绞线和屏蔽双绞线,可用于局域网\n\n*2.FCC:美国无线电频谱管理机构,联邦通讯委员会\n\n3.ISM: Industrial, Scientific, Medical, 提供无线电频谱的公用频段\n\n4.QAM: 正交振幅调制,包括QAM-16: 12种相位,每种相位有1~2种振幅可选,可以调制出16种码元,每种可以表示4个比特(2^4=16)\n\n5. 奈氏准则:为了避免码间串扰(失真),码元传输速率有上限,提出了理想低通信道和带通信道的最高码元传输速率\n\n6. 香农公式:c = W*log_2(1+S/N)\n\n7. RZ编码:归零编码;NRZ编码:不归零编码;NRZI编码:反向不归零编码\n\n8. SONET: 光纤传输系统的标准(题目)\n\n9. FHSS: 跳频扩频;DSSS:直列扩频\n\n10. FDM(包括OFDM)、WDM(DWDM)、TDM(包括STDM)、CDMA:都是复用技术。\n\n**第三章:数据链路层**\n\n1. 帧:数据在数据链路层的说法\n\n2. HDLC协议:对比特流组帧,使之不影响定界作用。\n\n3. MTU:最大传送单元,一个帧中数据部分的最大长度。\n\n4. BER:误码率Bit Error Rate,传输错误的比特占所传输比特总数的比率\n\n5.CRC:循环冗余校验码Cyclic Redundancy Check。", + "text_sha256": "0180bc56d0f68d477421a5fc6575f9ab7cd4d260d331b97222b08f69a2578283", + "knowledge_path": "knowledge/computer_networks/computer-networks-050.md", + "knowledge_sha256": "61a4354d1595b182eec6b824f2cfd4b372b18e6ce119da2f4673ea493573e60b" + }, + "computer-networks-010:p1:q-computer-networks-010-q3:c01": { + "chunk_id": "computer-networks-010:p1:q-computer-networks-010-q3:c01", + "course_id": "computer_networks", + "source_id": "computer-networks-010", + "source_title": "教学资源_试题", + "heading_path": [ + "教学资源_试题" + ], + "locator_type": "page", + "locator_start": 1, + "locator_end": 1, + "question_id": "computer-networks-010-Q3", + "text": "4. 本试卷共 五 大题,满分100 分,\n考试时间120 分钟。\n题 号\n一\n二\n三\n四\n五\n总分\n得 分\n评卷人\nI、 Fill the blank(14 Points,1 Point/Blank)\n\n1. The MAC Address of a host is 00-01-4A-83-72-1C, and its EUI-64 address is\n\n_____________________________________________.(2 Points)\n\n2. In order to reduce collision, Ethernet adopts ____________________\n\n________________________media access control (MAC) technology.\n\n_____________ ________\n\n3. Category 5 UTP can transmit data to ______________ meters away.\n\n( 密 封 线 内 不 答 题 )\n\n4. The work principle of Bridge is __________________________________\n\n________________________________________________________ (2 Points)\n\n5. List three video format you known_______________,________________\n\n_____________________.(2 Points)\n\n6. World Wide Web (WWW) is composed of _____________________________,\n\n______________________________,________________________.(2 Points)\n\n7. List three kind of dynamic assignment method of IP address: _____\n\n_____________,_____________________,___________________.(3 Points)\n\n8. IPv6 packet header has a field which is IPv4 packet header has not, the field is\n\n___________________________.\n\nII、 Decide true or false(10 Points,1 Point/subject,true√,false×)", + "text_sha256": "6ba5c73e340c063618745a4ad14f637ad1ec05501651537303a31972ec702f84", + "knowledge_path": "knowledge/computer_networks/computer-networks-010.md", + "knowledge_sha256": "9423e7b7d11f82296aaed2930375b221501b1f553080bf61d4b68b8a803d4c2f" + }, + "computer-networks-014:p1:c01": { + "chunk_id": "computer-networks-014:p1:c01", + "course_id": "computer_networks", + "source_id": "computer-networks-014", + "source_title": "计网", + "heading_path": [ + "计网" + ], + "locator_type": "page", + "locator_start": 1, + "locator_end": 1, + "question_id": null, + "text": "… … … … … … … … … … … … … … … … 密… … … … … … … … … … … … … … … … … … 封… … … … … … … … … … … … … … … 线… … … … … … … … … … … … … …\n\n姓名 学号\n 学院 专业 座位号\n\n诚信应考,考试作弊将带来严重后果!\n\n华南理工大学期末考试\n\n《计算机网络》试卷A\n\n注意事项:1. 考前请将密封线内填写清楚;\n\n2. 所有答案请直接答在试卷上;\n\n3.考试形式:闭卷;\n\n4. 本试卷共 五 大题,满分100 分,\n考试时间120 分钟。\n\n题 号\n一\n二\n三\n四\n五\n总分\n\n得 分\n\n评卷人\n\n一、 填空题(14 分,每空1 分)\n\n1. 局域网中,最常使用的传输介质是_____________________。\n\n2. 物理层提供的主要功能是:在两个网络设备之间提供__ ___________。\n\n_____________ ________\n\n3. 请列举三个传统的应用:电子邮件、______________和_________________。\n\n( 密 封 线 内 不 答 题 )\n\n4. 一台主机的\nMAC\n地址是\n00-01-4A-83-72-1C, 它对应的\nEUI-64 地址是:\n\n_____________________________________________。(本题2 分)。\n\n5. IPv6 分组可以由基本头、 和数据(传输层PDU)三部分组成。\n\n6. TCP 段头中有一个域叫窗口数,它的值由_______________决定。\n\n7. 一个通信系统采用了偶校验的海明纠错码(纠正一位错),原码字长8 位,现接收到一个\n\n码字为111001001111,发送方发送的原始码字应为:\n\n。(本题3 分)\n\n8. 请列举出POP3 和IMAP 的一个不同点:_________________________ _。\n\n9. 二层冗余拓扑消除了单点故障,但同时也带来了广播风暴、MAC 地址库不稳定等问题,\n\n可以使用 来消除冗余环带来的这些问题。\n\n10. 在使用OSPF (Open Shortest Path First)路由选择协议的局域网段中,假设有一条线\n\n路的带宽是10M,那么它对应的链路代价(度量)是____________________。\n\n二、 判断对错(10 分,每题1 分,对的画 √,错的画×)\n\nNo.\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n\nAnswer", + "text_sha256": "53a5ec2668a42285aa533ad3ceee2477cbe7b0b78a43da6d8045f1640e447fdb", + "knowledge_path": "knowledge/computer_networks/computer-networks-014.md", + "knowledge_sha256": "0f054f5c96b790e74b8c21adf3347851c71c69b48a3e07bba08fc923d238ab6b" + }, + "computer-organization-015:h-b:c02": { + "chunk_id": "computer-organization-015:h-b:c02", + "course_id": "computer_organization", + "source_id": "computer-organization-015", + "source_title": "B", + "heading_path": [ + "B" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "12 中断处理过程中,(A)项是由硬件完成。课本P242 图8.5\n\nA 关中断 B 开中断 C 保存CPU现场 D 恢复CPU现场\n\n13 IEEE1394是一种高速串行I/O标准接口。以下选项中,(D)项不属于IEEE1394的协议集。课本P266\n\nA 业务层 B 链路层 C 物理层 D 串行总线管理\n\n不懂 14 下面陈述中,( )项属于存储管理部件MMU的职能。\n\nA 分区式存储管理 B 交换技术 C 分页技术\n\n15 64位的安腾处理机设置了四类执行单元。下面陈述中,(D)项不属于安腾的执行单元。课本P302\n\nA 浮点执行单元 B 存储器执行单元\n\nC 转移执行单元 D 定点执行单元\n\n二、填空题(每小题2分,共20分)\n\n1 定点32位字长的字,采用2的补码形式表示时,一个字所能表示的整数范围是(-2^32+1 x ≥0时,即x为正小数,则\n\n1 > [ x ]补 = x ≥0\n\n因为正数的补码等于正数本身,所以\n\n1 > x 0.x1x2…xn ≥0 , x0 = 0\n\n当1 > x > - 1时,即x为负小数,根据补码定义有:\n\n2 > [ x ]补 = 2 + x > 1 (mod2)\n\n即 2 > x0.x1x2…xn > 1 ,xn= 1\n\n所以 正数: 符号位 x0 = 0\n\n负数: 符号位 x0 = 1{\n\n若 1 > x≥0 , x0 = 0,则 [ x ]补 = 2 x0 + x = x\n\n若 - 1 < x < 0, x0 = 1,则 [ x ]补 = 2 x0 + x = 2 + x\n\n0, 1> x ≥ 0\n\n所以有 [ x ]补 = 2 x0 + x ,x0 =\n\n1 , 0 > x > -1\n- 解:(1)用虚拟地址为1的页号15作为快表检索项,查得页号为15的页在主存中\n\n的起始地址为80000,故将80000与虚拟地址中的页内地址码0324相加,\n\n求得主存实地址码为80324。\n1. 主存实地址码 = 96000 + 0128 = 96128\n1. 虚拟地址3的页号为48,当用48作检索项在快表中检索时,没有检索到页号为48的页面,此时操作系统暂停用户作业程序的执行,转去执行查页表程序。如该页面在主存中,则将该页号及该页在主存中的起始地址写入主存;如该页面不存在,则操作系统要将该页面从外存调入主存,然后将页号及其在主存中的起始地址写入快表。\n\n五. 解:\n\n1)X=00 , D=20H ,有效地址E=20H\n\n2) X=10 , D=44H ,有效地址E=1122H+44H=1166H\n\n3) X=11 , D=22H ,有效地址E=1234H+22H=1256H\n\n4) X=01 , D=21H ,有效地址E=0037H+21H=0058H\n\n5)X=11 , D=23H ,有效地址 E=1234H+23H=1257H", + "text_sha256": "a21ed843d611448bb7ccd30e38c315ce5bf622702714ce74cba64553f65e45ad", + "knowledge_path": "knowledge/computer_organization/computer-organization-072.md", + "knowledge_sha256": "d901e831a995b09a695a02cb55236677ba7b8442959c38f8ed605a353205694e" + }, + "computer-science-intro-012:h-计算机科学概论:c01": { + "chunk_id": "computer-science-intro-012:h-计算机科学概论:c01", + "course_id": "computer_science_intro", + "source_id": "computer-science-intro-012", + "source_title": "计算机科学概论", + "heading_path": [ + "计算机科学概论" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "**Chapter 1(概念)**\n\nComputer system: Computer hardware, software, data which interact to solve the problem.\n\nHardware: The physical elements of a computing system (printer, circuit boards, wires, keyboard…)【物理】\n\nSoftware: The programs that provide the instructions for a computer to execute.【指令集合】\n\nAbstraction(抽象): A mental model that removes complex details.【心理模型】\n\n**Chapter 2(概念、进制转换)**\n\nIntegers(整数): A natural number, a negative of a natural number, zero\n\nRational Numbers(有理数): An integer or the quotient(商) of two integers.\n\nBase(基数): It determines the number of digits and the value of digit positions(使用的数字量和数位位置的值).\n\nPositional notation(位置记数法):(数字连续排列的表示系统,每个位置都有位值,数字为每个数字乘以位值的乘积之和)\n\n进制转换:Binary(二进制) Decimal(十进制) Octal(八进制) Hexadecimal(十六进制)\n\nIn base n = n进制(以n为基数)(XX 进制 places)[保留小数点后几位]\n\n十进制转二进制小数:0.XXX(X=0,1),小数×2,有一提出一,无一0补位。\n\n**Chapter 3(概念、补码、数据压缩)**\n\n多媒体压缩及压缩算法:\n1. 算法分为无损、有损两种\n1. 图像:二皆有之\n1. 音频:有损(MP3 AAC)\n1. 视频:有损(VP9 AV1)\n1. 文本:无损(UTF-8,ASCII)\n1. 三维模型:有损(STL OBJ)\n1. 总之就是文本和部分图片无损。\n\nCompression ratio(压缩比): (压缩数据的大小除以原始数据的大小).\n\nComplement(补码): Ten’s complement(十进制补码) Two’s complement(二进制补码)\n\ne.g.1-49表示1~49 50-99表示-50~-1 0表示0\n\ne.g.01111111表示127\n\n10000000表示-128", + "text_sha256": "a98f9aa31016f4ff3767bc555ed7492d6e82d51a8f779e3aa36fdf444620cb07", + "knowledge_path": "knowledge/computer_science_intro/computer-science-intro-012.md", + "knowledge_sha256": "b242184e22988472a087f052e1cf026dddf185c6f742509363ba8af6c92ea2bf" + }, + "computer-science-intro-003:p3:q-computer-science-intro-003-q9:c01": { + "chunk_id": "computer-science-intro-003:p3:q-computer-science-intro-003-q9:c01", + "course_id": "computer_science_intro", + "source_id": "computer-science-intro-003", + "source_title": "Final Exam A_2021V1", + "heading_path": [ + "Final Exam A_2021V1" + ], + "locator_type": "page", + "locator_start": 3, + "locator_end": 3, + "question_id": "computer-science-intro-003-Q9", + "text": "(10) Which of the following manages the fetch-execute cycle?\n\nA) control unit\nB) arithmetic/logic unit\n\nC) auxiliary storage device\nD) RAM\n\n(11) Which language is actually executed by the central processing unit of\n\na computer?\n\nA) high-level language\nB) assembly language\n\nC) machine language\nD) virtual language\n\n(12) Which of the following represents a set of unambiguous instructions\n\nfor solving a problem in a finite amount of time using a finite set of data?\n\nA) algorithm\nB) pseudocode\n\nC) program construct\nD) problem specification\n\n(13) Pseudocode uses a mixture of English and indentation to express the\n\nprocessing steps of an algorithm.\n\nA) True\nB) False\n\n(14) The code-coverage testing approach eliminates the need to test some\n\nof the code by covering it with a theoretical “black box.”\n\nA) True\nB) False", + "text_sha256": "aec3836c832ab91470a09f3116efbb3f01fd33bd2ea3e77e4b810b2314d8ff49", + "knowledge_path": "knowledge/computer_science_intro/computer-science-intro-003.md", + "knowledge_sha256": "705e3ee8d98dc7face92c22a8905e46e3db81369071c7749540b04b64b065f3c" + }, + "computer-science-intro-010:s14:c01": { + "chunk_id": "computer-science-intro-010:s14:c01", + "course_id": "computer_science_intro", + "source_id": "computer-science-intro-010", + "source_title": "第7章", + "heading_path": [ + "第7章", + "Summary of Methodology" + ], + "locator_type": "slide", + "locator_start": 14, + "locator_end": 14, + "question_id": null, + "text": "- \n- Analyze the Problem\n - Understand the problem!!\n - Develop a plan of attack\n- List the Main Tasks (becomes Main Module)\n - Restate problem as a list of tasks (modules)\n - Give each task a name\n- Write the Remaining Modules\n - Restate each abstract module as a list of tasks\n - Give each task a name\n- Re-sequence and Revise as Necessary\n - Process ends when all steps (modules) are concrete", + "text_sha256": "1c96e7327acf24f7fedd7d9e187e9a018a83a1cbe071506e10fd5ec4598462f8", + "knowledge_path": "knowledge/computer_science_intro/computer-science-intro-010.md", + "knowledge_sha256": "44356f383b2469469f9baa0ae777386f572d294b1bc3f527ffb246d1efd1608a" + }, + "computing-methods-002:p92:c01": { + "chunk_id": "computing-methods-002:p92:c01", + "course_id": "computing_methods", + "source_id": "computing-methods-002", + "source_title": "数值分析(电子版教材-仅供学生参考-勿对外分享)", + "heading_path": [ + "数值分析(电子版教材-仅供学生参考-勿对外分享)" + ], + "locator_type": "page", + "locator_start": 92, + "locator_end": 92, + "question_id": null, + "text": "5\n8\n4 数值积分\n\n量的函数F0(h)近似代替它,并设F\n\n倡与h 无关,且给定F\n\n倡与F0(h)的误差估计为\n\np k +…\n(4畅25)\n\n倡-F0(h)=a1h\n\np1+a2h\n\np2+… +akh\n\nF\n\n其中0<p1<p2<… <pk <…;ak≠0(k =1,2,…)是与h 无关的常数.\n\n从误差估计式(4畅25)可以看到,当h 适当小时,第一项a1h\n\np1的绝对值远比后\n\n面的项的绝对值大.而第一项中的h\n\np1是最主要的,它对误差的影响最大,通常称为\n\n倡与函数F0(h)的误差的阶.显然,当h 适当小时,误差的阶h\n\np1中的幂p1越大,\n\nF\n\n倡与函数F0(h)的误差的绝对值就会越小.能否从函数F0(h)出发构造一个新的\n\nF\n\n倡,使F\n\n倡与函数F0(h)的误差的\n\n倡与这个函数的误差的阶的幂比F\n\n函数近似代替F\n\n阶的幂更高一些?答案是肯定的.\n\n为了构造出一个新函数F2(h)近似代替F\n\n倡,使F\n\n倡与这个函数的误差的阶的\n\n倡与函数F0(h)的误差的阶的幂更高一些,可以采用下面的做法.\n\n幂比F\n\n首先把(4畅25)式中的h 用qh 代替,得\n\np k +…\n(4畅26)\n\nF\n\n倡-F0(qh)=a1(qh)\n\np1+a2(qh)\n\np2+… +ak(qh)\n\n其中q 为常数,并满足1-q\n\np1≠0.再用q\n\np1乘(4畅25)式两边,得\n\np k +…\n(4畅27)\n\nq\n\n倡-q\n\np1F0(h)=a1(qh)\n\np1+a2q\n\np2+… +akq\n\np1F\n\np1h\n\np1h\n\n(4畅26)式减(4畅27)式并整理后得\n\n(1-q\n\np1)F\n\n倡-[F0(qh)-q\n\np1F0(h)]\n\np k -q\n\np k +…\n(4畅28)\n\n=a2(q\n\np2-q\n\np1)h\n\np2+a3(q\n\np3-q\n\np1)h\n\np3+… +ak(q\n\np1)h\n\n用1-q\n\np1除(4畅28)式两边得\n\n倡-F0(qh)-q\n\np1F0(h)\n\nF\n\n1-q\n\np1\n\np k -q\n\n=a2(q\n\np2-q\n\np1\n+a3(q\n\np1)h\n\np3-q\n\np1\n+… +ak(q\n\np1)h\n\np1)h\n\np2\n\np3\n\np k\n\np1\n+…\n(4畅29)\n\n1-q\n\n1-q\n\n1-q\n\np k -q\n\n若记F1(h)=F0(qh)-q\n\np1F0(h)\n\n(1)\nk\n=ak(q\n\np1)\n\np1\n,k =2,3,…,则由(4畅29)式\n\np1\n和a\n\n1-q\n\n1-q\n\n有\n\np k +…\n(4畅30)\n\n倡-F1(h)=a\n\np2+a\n\np3+… +a\n\n(1)\n2\nh\n\n(1)\n3\nh\n\n(1)\nk\nh\n\nF\n\n(1)\nk\n是与h 无关的常数.\n\n其中a\n\n从(4畅30)式可以看到,若用函数F1(h)近似代替F", + "text_sha256": "1cd1b0e616fa2f502ac66a5e48a2e3f7aee61225f093cb5b65d439b7120aaac7", + "knowledge_path": "knowledge/computing_methods/computing-methods-002.md", + "knowledge_sha256": "cdebe5785ae13cf44bfcf068714738e21e95bf1910fcdb746279d30719229370" + }, + "computing-methods-018:h-数学系09级数值分析a:c02": { + "chunk_id": "computing-methods-018:h-数学系09级数值分析a:c02", + "course_id": "computing_methods", + "source_id": "computing-methods-018", + "source_title": "数学系09级数值分析A", + "heading_path": [ + "数学系09级数值分析A" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "**(A)**$\\left | {a}\\right |<\\sqrt {\\frac {1} {2}}$ **(B)**$\\left | {a}\\right |\\le \\sqrt {\\frac {1} {2}}$ **(C)**$\\left | {a}\\right |<1$ **(D)**$\\left | {a}\\right |\\le 1$\n\n**二.** **填空题(每小题3分,** **共15分)**\n\n**1.** **设有递推公式** **$\\left.\\begin{matrix}y_{0}=\\sqrt{3}\\\\y_{n}=2y_{n-1}-1,\\quadn=1,2,\\cdots\\end{matrix}\\right.$** **,如果取$y_0=\\sqrt{3}\\approx1.73$进行**\n\n**计算,则该计算过程是数值** **(填:稳定或不稳定)的.**\n\n**2.** **计算** **$P=(\\frac{1}{x-1})^5+3(\\frac{1}{x-1})^4-6(\\frac{1}{x-1})^3+2(\\frac{1}{x-1})^2+8(\\frac{1}{x-1})+1$** **时,**\n\n**为了减少乘除运算次数,应把它改写成:**\n\n**.**\n\n**3.** **设$b=\\begin{pmatrix}4,-3,0\\end{pmatrix}^T$,则** **$\\|\\mathbf{b}\\|_1$=** **,** **$\\|b\\|_2$** **.**\n\n**4.** **对迭代函数$\\varphi=x+\\lambda(x^2-5)$,使迭代公式** **$x_{k+1}=\\varphi(x_k)$** **($k=0,1,\\cdots$)**\n\n**局部收敛于$x^{*}=\\sqrt{5}$的$a$取值范围是** **.**\n\n**5.** **设$f(x)=x^{2}+3x-5$,则均差** $f\\left [ {0,1,2,3}\\right ]$**=** **.**\n\n**三. (12分)** **用直接三角分解法解下列线性方程组:**\n\n$$\n\\begin{bmatrix}1&0&2&0\\\\0&1&0&1\\\\1&2&4&3\\\\0&1&0&3\\end{bmatrix}\\begin{bmatrix}x_1\\\\x_2\\\\x_3\\\\x_4\\end{bmatrix}=\\begin{bmatrix}5\\\\3\\\\17\\\\7\\end{bmatrix}\n$$\n\n**四. (12分)** **试导出求$\\frac{1}{\\sqrt{3}}$的Newton迭代公式,** **使公式既无开方又无除法**", + "text_sha256": "fa9cb395b7c18f66f7eeb9c05697c05b4b17f91c7dafaec9eeeb8449883f1082", + "knowledge_path": "knowledge/computing_methods/computing-methods-018.md", + "knowledge_sha256": "d38998810ee52af4b546f6936146458b43a0ea5a04f5197c5f590d7bef3fcff4" + }, + "computing-methods-013:h-华南理工大学数值分析a:c02": { + "chunk_id": "computing-methods-013:h-华南理工大学数值分析a:c02", + "course_id": "computing_methods", + "source_id": "computing-methods-013", + "source_title": "华南理工大学数值分析A", + "heading_path": [ + "华南理工大学数值分析A" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "**一.填空题(每小题2分,** **共20分)**\n1. **已知自然数e=2.718281828459045…,取e≈2.71828,那么e具有的有效数字是____________.**\n1. $\\sqrt [3] {{x}^{}}$**的相对误差约是**${x}^{}$**的相对误差的_____** **倍.**\n1. **为了减少舍入误差的影响,** **数值计算时应将$10-\\sqrt{99}$改为___________.**\n1. **求方程$x^{2}-2x+1=0$根的牛顿迭代格式为______________** **,收敛阶为_____________.**\n1. **设$b=\\begin{pmatrix}0,-4,3\\end{pmatrix}^T$,则**${\\left ‖ {b}\\right ‖}_{\\infty }$**= ________,$\\|b\\|_2$_______.**\n1. **对于方程组**$\\left \\{ {\\begin {matrix} 2{x}_{1}-5{x}_{2}=1 \\\\ 10{x}_{1}-4{x}_{2}=3 \\end {matrix}}\\right$**,** **Guass-seidel迭代法的迭代矩阵是**${B}_{G}$**=______________.**\n1. **2个节点的Guass** **型求积公式代数精度为_________.**\n1. **设**$f(x)={x}^{3}+3x-1$**,则差商**$f\\left [ {0,1,2,3}\\right ]$**=__________.**\n1. **求解常微分方程初值问题的隐式欧拉方法的绝对稳定区间为_____________.**\n1. **设$\\{q_k(x)\\}_{k=0}^{\\infty}$为区间[0,1]上带权$\\rho=x$且首项系数为1的k次正交多项式序列,** **其中$q_0(x)=1$,** **则$q_1(x)=$_________.**\n\n**二.(10分)** **用直接三角分解方法解下列线形方程组**\n\n**$\\begin{pmatrix}2&1&5\\\\4&1&12\\\\-2&-4&5\\end{pmatrix}\\begin{pmatrix}x_1\\\\x_2\\\\x_3\\end{pmatrix}=\\begin{pmatrix}11\\\\27\\\\12\\end{pmatrix}$**\n\n**三. (12分)** **对于线性方程组**\n\n**$\\begin{pmatrix}-1&4&2\\\\2&3&10\\\\5&2&1\\end{pmatrix}\\begin{pmatrix}x_1\\\\x_2\\\\x_3\\end{pmatrix}=\\begin{pmatrix}20\\\\3\\\\12\\end{pmatrix}$**", + "text_sha256": "3ac8d0ba5e606401439dbc5aef02688e1c78950068996299bdf6a0285dcca842", + "knowledge_path": "knowledge/computing_methods/computing-methods-013.md", + "knowledge_sha256": "387f4165fd99302011c13d002182aacc2ae02e44d155be82b026de287595c1bc" + }, + "cpp-002:h-c-非应试笔记-全-开源:c01": { + "chunk_id": "cpp-002:h-c-非应试笔记-全-开源:c01", + "course_id": "cpp", + "source_id": "cpp-002", + "source_title": "C++非应试笔记(全:开源)", + "heading_path": [ + "C++非应试笔记(全:开源)" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "```cpp\n#include\nusing namespace std;\n//一、构造函数与初始化\n//1.构造函数与类同名 eg. stock::stock\n//其中有两种,第一种是只创建一个类\n//stock::stock()\n//{\n//ch=\" \";\n//a=0;\n//};\n//另一种是带值创建stock::stock(int a,...)\n//{\n// =a;\n//};\n//一般会默认是第一种,但如果写了第二种,第一种也要自己写\n// 注意,当在类里面写,不用写类名:: ,类外用\n//2.private与protected的区别:\n//private无法继承,protected皆可以继承\n// 3:复制构造函数【没什么用】\n// 类名(const 类名&);\n// 类名&operator=(const类名&);\n// 二者一起用\n// 在主函数可以在创建完现有类对象基础上eg:A Obj2=Obj1;来初始化新的对象\n// \n//二、运算符重载与友元\n//1.静态成员 static\n//把成员和函数变成全局!\n//所有成员公用这一个数据!改变了也是!!\n//注意只能在类内声明,必须在类外定义初始化\n//static int a;\n//int stock::a=0;\n//2.静态函数\n//只能使用静态成员作为参数\n//就是对静态成员作出修改的工具\n//需要类内定义\n//类外访问需要stock::函数名()来使用\n//注意:静态成员及函数都不是类的成份。\n//2.友元函数与友元类\n//可以无视private protected 等限制,多用来给private赋值改值\n//没有this指针\n//友元函数怎么用:\n//类内声明\n//friend 返回类型 函数名(类名* , 参数类型1,参数类型2...)//类名*是要调用private\n//类外定义(像普通函数一样定义就可以)\n//eg.void hanshu(student*a,int a)\n//{\n// a->id=...;(把private:id赋上值)\n//}\n//友元类怎么用:\n//类内声明\n//friend class 类名\n//类外定义(像普通的类就可以)\n//eg.\nclass A1\n{ \npublic:\n\tfriend class B;\nprivate:\n\tint x;\n};\nclass B\n{\n public: \n void set(int i)\n {\n Aobject.x=i;\n }//给A private对象x赋值\n private: \n A1 Aobject;//!!友元类一般会有个private,里面的数会与A的private一一代表\n};\n//3.运算符重载\n// 补充:类型转换函数:\n// X::operator 数据类型()\n// { return 改后的数据类型(数据成员名);}\n// eg: \n// int A; int B;\n// operator double()\n// {return double(A)/double(B);}\n// 注意:只为成员函数\n// \n// 注意: . .* :: ?: sizeof 五大不能重载\n// 用处:类成员运算必须用到重载运算符,因为类成员访问是类名.成员名\n// 第一种:当为一元运算或者左侧为类对象,用成员函数重载\n// eg:\nclass Person\n{\npublic:\n\t//成员函数重载运算符\n\t//Person operator+(Person& p)\n\t//{\n\t//\tPerson t;\n\t//\tt.m_a = m_a + p.m_a;\n\t//\tt.m_b = m_b + p.m_b;\n\t//\treturn t;\n\t//}\n\tint m_a;\n\tint m_b;\n};\n//全局函数重载运算符:\nPerson operator + (Person& p1, Person& p2)//加号运算符重载\n{\n\tPerson t;\n\tt.m_a = p1.m_a + p2.m_a;\n\tt.m_b = p1.m_b + p2.m_b;\n\treturn t;\n}\nPerson operator+(Person& p1, int a)\n{\n\tPerson t;\n\tt.m_a = p1.m_a + a;\n\tt.m_b = p1.m_b + a;\n\treturn t;\n}\nPerson & operator++(Person& p1)\n{\n\tPerson t;\n\tt.m_a = t.m_a + t.m_a;\n}\n//cout属于输出流类型ostream\nostream& operator<<(ostream& cout, Person& p)\n{\n\tcout << \"m_a=\" << p.m_a << \" m_b=\" << p.m_b;\n\treturn cout; //链式编程的思想\n}\nclass Man\n{\npublic:\n\tMan() {}\n\tMan(int age)\n\t{\n\t\tm_age = new int(age);\n\t}\n\t~Man()\n\t{\n\t\tif (m_age != NULL)\n\t\t{\n\t\t\tdelete m_age;\n\t\t\tm_age = NULL;\n\t\t}\n\t}\n\t//重载复制运算符 =\n\tMan& operator=(Man& m)\n\t{\n\t\tif (m_age != NULL)\n\t\t{\n\t\t\tdelete m_age;\n\t\t\tm_age = NULL;\n\t\t}\n\t\tm_age = new int(*m.m_age);\n\t\treturn *this;\n\t}\n\n\tint* m_age;\n};\nclass MyPrint\n{\npublic:\n\tvoid operator()(string t)\n\t{\n\t\tcout << t << endl;\n\t}\n};\nclass MyAdd\n{\npublic:\n\tint operator()(int a, int b)\n\t{\n\t\treturn a + b;\n\t}\n};\nvoid test1()\n{\n\t//+\n\tPerson p1;\n\tp1.m_a = 10; p1.m_b = 20;\n\tPerson p2;\n\tp2.m_a = 30; p2.m_b = 40;\n\n\tPerson p3 = p1 + p2;\n\t//本质是:p3 = p1.operator+(p2); 或 p3=operator(p1,p2);\n\tcout << \"p3.m_a=\" << p3.m_a << \" p3.m_b=\" << p3.m_b << endl;\n\t//运算符重载还能发生函数重载\n\tPerson p4 = p1 + 100;\n\tcout << \"p4.m_a=\" << p4.m_a << \" p4.m_b=\" << p4.m_b << endl;\n\tcout << endl;\n\n\t// << (左移运算符)\n\tcout << p1 << endl;\n\tcout << endl;\n\n\t//++\n\tclass Myint :public Person\n\t{\n\tpublic:\n\t\tMyint();\n\t};\n\n\tMyint myint;\n\tcout << myint.m_a << endl;//0\n\tcout << ++myint.m_a << endl;//1\n\tcout << ++(++myint.m_a) << endl;//3\n\tcout << myint.m_a++ << endl;//3\n\tcout << myint.m_a << endl;//4\n\tcout << endl;\n\n\t// =\n\tMan m1(18);\n\tMan m2(20);\n\tcout << *m1.m_age << endl;\n\tcout << *m2.m_age << endl;\n\tm2 = m1;\n\tcout << *m2.m_age << endl;\n\t//赋值运算符是从右往左运算:(把右值赋给左值)\n\tint a = 10, b = 20, c = 30;\n\ta = b = c;\n\tcout << \"a=\" << a << \" b=\" << b << \" c=\" << c << endl;//30 30 30\n\t//链式编程思想\n\tMan m3(28);\n\tm1 = m2 = m3;\n\tcout << \"m1=\" << *m1.m_age << \" m2=\" << *m2.m_age << \" m3=\" << *m3.m_age << endl;\n\tcout << endl;\n\t// > < 和上面同理\n\n\t//函数调用运算符 () 的重载\n\t//重载后的使用方式非常像函数的调用,也成为仿函数,没有固定写法,非常灵活\n\tMyPrint mp;\n\tmp(\"hello world\");//很像函数调用\n\tMyAdd ma;\n\tint ret = ma(10, 8);\n\tcout << \"ret=\" << ret << endl;\n\t//匿名函数对象\n\tcout << MyAdd()(100, 100) << endl;//MyAdd()为匿名对象\n}\nint main()\n{\n\ttest1();\n\treturn 0;\n}\n// !!总结:\n// 1:成员函数如果不改变数据成员的值可以在()那行后加const\n// 2:\n// 重载运算符只能用成员重载的有= () [] ->,其他都用友元就行\n//成员函数重载格式:\n// !1当需要复制构造函数或者修改对象值时重载()\n// class A \n// public: \n// A & operator=(A & Obj)//obj是A的一个对象\n// {\n// if (A的数据成员!= NULL)\n//\t\t{\n//\t\t\tdelete A的数据成员;\n//\t\t\tA的数据成员 = NULL;\n//\t\t}\n//\t\tA的数据成员 = new int (*Obj.数据成员);\n//\t\treturn *this;\n// }\n//!2()和【】在数组中的重载\nclass MyArray\n{\npublic:\n\t//重写赋值运算符重载函数\n\tMyArray& operator=(const MyArray& m);\n\tint *pArray;\n\tint mCapacity;\n\tint mSize;\n\t//要能当左右值\n\tint& operator[](int index);\n\n};\nMyArray& MyArray::operator=(const MyArray& m)\n{\n\tcout << \"赋值函数\" << endl;\n\t//1.释放原来的空间\n\tif (this->pArray != NULL)\n\t{\n\t\tdelete[]this->pArray;\n\t\tthis->pArray = NULL;\n\t}\n\tthis->mCapacity = m.mCapacity;\n\tthis->mSize = m.mSize;\n\t//2.申请空间,大小由m决定\n\tthis->pArray = new int[m.mCapacity];\n\t//3.拷贝数据\n\tcout << \"this->mSize:\" << this->mSize << endl;\n\tfor (int i = 0; i < this->mCapacity; i++)\n\t{\n\t\tthis->pArray[i] = m.pArray[i];\n\t}\n\n\treturn *this;\n}\n//要能当左右值\nint &MyArray:: operator[](int index)\n{\n\n if (this->mSize <=index)\n{\n\tthis->mSize++;\n}\n\nreturn this->pArray[index];\n}\n//!3()不常见,略\n// \n// 友元函数重载格式\n// 类内声明:\n// class A\n// friend A operator符号( const A& t1 const A& t2或者值 int &a)\n// !!当自增自减时候别用const,只引用就行,此外当前置自运算应:A&operator\n// 类外定义:同友元函数\n// A operator符号( const A& t1 ,const A& t2或者值 int &a)\n// {\n// \n// }即可\n// 对于重载,大部分都会在内部操作引用对象的成员,最后return想要的东西,最后在main里面用类名做运算\n// 这里写重载范例 - -- >> << \n//1:-\nclass C\n{\npublic:\n\tfriend C operator- (const C& c1, const C& c2);\n\tdouble Real;\n\tdouble Image;\n\tC();\n\tC(double r, double i) : Real(r), Image(i){}\n};\n C operator - ( const C & c1, const C & c2)\n{\n\tdouble r = c1.Real - c2.Real; double i = c1.Image - c2.Image;\n\treturn C(r, i);\n }\n//2:后置自减\nclass D\n {\n public:\n\t friend D operator-- (D & d1);\n\t double Real;\n\t D();\n\t D(double r) : Real(r){}\n };\n D operator -- (D& d1)\n {\n\t d1.Real--;\n\t return d1;\n }\n //3:输入输出流、\n class E\n {\n public:\n\t friend ostream& operator<<(ostream& output, E&);\n\t friend istream& operator>>(istream& input, E&);\n\t int& operator[](int i);\n\t E();\n\t E(int size)\n\t {\n\t\t if (size <= 0 || size > 100)\n\t\t {\n\t\t\t cout << \"The size of \" << size << \"is null !\\n\"; exit(0);\n\t\t }\n\t\t v = new int[size];\n\t\t len = size;\n\t }\n\t ~E() { delete[] v; len = 0; }\n private:\n\t int len;\n\t int* v;\n };\t \n\n int& E:: operator []( int i )\n { if (i >= 0 && i < len) return v[i];\n cout << \"The subscript \" << i << \"is outside !\\n\"; exit(0);\n }\n ostream& operator << (ostream& output, E& ary)\n {\n\t for (int i = 0; i < ary.len; i++) output << ary[i] << \" \";\n\t output << endl;\n\t return output;\n }\n istream& operator >> (istream& input, E& ary)\n {\n\t for (int i = 0; i < ary.len; i++) input >> ary[i];\n\t return input;\n }\n//三、类的包含与继承\n//1.类的包含\n//可以把旧的类以private成员形式,被大类调用,然后实现复合功能。\n//eg.\nclass Point\n{ \npublic:\nPoint(int xi=0, int yi=0) {x=xi; y =yi;}\nint GetX(){return x; }\nint GetY(){return y; }\nprivate:\nint x;\nint y;\n};\nclass Distance\n{\npublic:\n\tDistance(Point xp1, Point xp2);\n\tdouble GetDis() { return dist; }\nprivate:\n\tPoint p1, p2;\n\tdouble dist;\n};\t\nDistance::Distance(Point xp1, Point xp2) :p1(xp1), p2(xp2)\n{\n\tdouble x = double(p1.GetX() - p2.GetX());\n\tdouble y = double(p1.GetY() - p2.GetY());\n\tdist = sqrt(x * x + y * y);\n}\nint main()\n{\n\tPoint mp1(5, 10), mp2(20, 30);\n\tDistance mdist(mp1, mp2);\n\tcout << \"The distance is \" << mdist.GetDis() << endl;\n}\n//\n// 2.类的继承\n// 方式实现:class 子类 : 继承方式 父类 \n// { \n// \n// };\n// 子类 也称为 派生类\n// 父类 也称为 基类\n//可以减少重复的代码\n//*1父类private无论如何都不会被子类继承\n//public继承父类成员性质不变,pri和pro继承则父类的pub和pro变成该继承方式的派生类成员\n//!!子类访问父类函数:用子类对象名.父类函数即可\n//!!子类访问父类成员:直接用就行\n//!!!父类静态函数子类也直接用就行\n//!!子类继承父类的重载运算符\n// 为了不强制转换类型,需要在子类如此操作:\n//// 假设父类为person 子类为student 重载=符\n//// student& operator=(const student& s)\n//{\n//if (this != &s)\n//{\n//person: : operator=(s);\n//_grade = s._ grade;\n//}\n//return *this;\n// }\n// 当父子出现同名情况需要如此区分\n// eg:b.a b.A::a\n// b.func(); b.A::func();\n//构造函数执行顺序:基类构造函数-对象成员构造函数-派生类本身的构造函数\n// 3.虚继承\n// 为了解决父类被多个派生类调用反复构造而报错的问题\n// class A 父类,有B,C两个派生类\n// 则:class B :virtual public A\n// class C :virtual public A\n//虚基类只会初始化一次,因此在多级派生,虚基类初始化由最后一级派生类负责\n// 总结:1.不可滥用封装特性,不要把不相干的数据和函数封装到类中。\n// 2.√【规则1】:如果类A和类B毫不相关,不可以为了使B的功能更多一些\n//而让B继承A的功能和属性。\n//√【规则2】 : 若在逻辑上B是A的“一种”(is - a - kind - of), 则允许B\n//继承A的功能和属性。\n// \n// 四、虚函数与多态性\n// 1.类指针\n// ①基类指针指向派生类:只能访问派生类从基类继承的成员\n// class A\n//{\n// };\n//class B:public A\n// {\n// };\n// int main()\n// {\n// A* A_p; A_p可以用A_p->A函数名();来访问A的成员函数\n// (B*)A_p->B函数名(); 通过强制类型转换访问B的函数 \n// }\n//②派生类指针只有经过强制类型转换之后,才能引用基类对象\n//在class B 中,通过((A*)this)->A函数名(); 这样的结构可以访问A的函数\n// 当然,完全可以A::函数名();来实现访问A函数的功能\n//2.虚函数、动态联编\n// 虚函数需要在基类定义,除构造外的一切成员函数都可以,派生类中重载基类的虚函数要求函数名、返回类型\n// 参数个数、参数类型和顺序完全相同,且只需要基类前面写virtual\n// 用处是可以通过调用基类指针访问所有此类函数:简单地说,\n// 就是假如这个派生类没有特定的鬼东西,那就直接调用基类说明,\n// 有特殊的鬼东西,就自己写个同样的函数框架,内容改一改就行。\n// eg:\nclass Base\n{\npublic:\n\tBase(char xx) { x = xx; } \n\tvoid who() { cout << \"Base class: \" << x << \"n\"; }\nprotected:char x;\n};\nclass First_d : public Base\n{\npublic:\n\tFirst_d(char xx, char yy) :Base(xx) { y = yy; }\n\tvoid who() { cout << \"First derived class: \" << x << \", \" << y << \"n\"; }\nprotected:char y;\n};\nclass Second_d : public First_d\n{\npublic:\n\tSecond_d(char xx, char yy, char zz) : First_d(xx, yy) { z = zz; }\n\tvoid who() { cout << \"Second derived class: \" << x << \", \" << y << \", \" << z << \"n\"; }\nprotected:\tchar z;\n};\nint main()\n{\n\tBase B_obj('A'); First_d F_obj('T', 'O'); Second_d S_obj('E', 'N', 'D');\n\tBase* p;\n\tp = &B_obj; p->who();\n\tp = &F_obj; p->who();\n\tp = &S_obj; p->who();\n\tF_obj.who();//或者((First_d*)p)->who();\n\t((Second_d*)p)->who();//或者S_obj.who;\n}\n//这是输出结果为:\n//Base class: A\n//Base class :T\n//Base class :E\n//First derived class: T, 0\n//Second derived class : E, N, D\n\n//当virtual void who()时可以不加最后两行代码\n//输出结果为:\n//Base class: A\n//First derived class: T, 0\n//Second derived class : E, N, D\n// 因此析构函数整成virtual会很棒\n// 注意,析构函数只需要virtual~基类(){...};\n// 派生类中 ~派生类仍然适用\n// 当构造了一个A *Ap= new B;这种使用了new的对象\n// !!!且AB有继承关系\n// 使用虚析构用函数之后delete Ap即可delete B后 delete A\n\n//3.纯虚函数、抽象类\n//!!纯虚函数其实就是一种提醒或契约,它告诉派生类必须实现该函数,否则编译器会报错。\n//\n// ①抽象类是含有纯虚函数的基类 \n// 此外,抽象类不能建立对象,但可以使用指针,不能作为参数,但是可以通过引用传进去\n// ②纯虚函数同样定义在基类\n// virtual 类型 函数名(参数)=0;\n// ③如果继承的子类不把virtual去掉再重申一次,子类仍为抽象类!!\n\n// 抽象类引用\n// 首先,如果想要调用抽象类函数,必须引用,因为抽象类不能创建对象\n//例如:\nclass Number\n{\npublic: virtual void show() = 0;\n};\nvoid fun(Number& n)\n{\n\tn.show();\n//\tNumber::show(); 会报错!\n}\n//四、模板、输入输出流\n// 1.模板\n// 就是规范化写程序\n// ①函数模板 \ntemplate \nT Max(const T a, const T b)\n{\n\treturn a > b ? a : b;\n}\n//之后就可以Max( , )里面什么类型都可以比\ntemplate \nvoid SortBubble(T1* a, int size)\n{\n\tint i, work;\n\tElementType temp;\n\tfor (int pass = 1; pass < size; pass++)\n\t{\n\t\twork = 1;\n\t\tfor (i = 0; i < size - pass; i++)\n\t\t\tif (a[i] > a[i + 1])\n\t\t\t{\n\t\t\t\ttemp = a[i]; a[i] = a[i + 1]; a[i + 1] = temp; work = 0;\n\t\t\t}\n\t\tif (work) break;\n\t}\n}//例2:冒泡排序函数模板\n// !之后就用 Sort Bubble(数组名,数组大小)\n\n// ②重载函数模板\n// 因为就搞了个T,当比较两种不同类型时不能隐式转换,需要自己在后面写一个例子\n// 例如:\ntemplate \nT Max(const T a, const T b)\n{\n\treturn a > b ? a : b;\n}\nint Max(int a, char b)\n{\n\treturn a > b ? a : b;\n}\n//之后出现int char想干啥干啥,前后顺序无关 \n// !!注意:使用模板说明:\n// 匹配约定:\n//>寻找和使用最符合函数名和参数类型的函数, 若找到则调用它;\n//> 否则, 寻找一个函数模板, 将其实例化产生一个匹配的模板函数, 若找到\n// 则调用它;\n//> 否则, 寻找可以通过类型转换进行参数匹配的重载函数, 若找到则调用它\n//> 如果按以上步骤均未能找到匹配函数, 则调用错误。\n//> 如果调用有多于一个的匹配选择, 则调用匹配出现二义性。\n// \n// ②类模板:\n// 1.类模板的成员函数为函数模板\n// 2.类模板的半产物是模板类,就是把T换成了具体数据类型;\n// 同一个T可以用于多个模板,T可以是参数类型,返回类型,函数中的变量\n// 类模板作函数形参可以是类模板或类模板的引用;\n// 对应的实际参数是该类模板实例化的模板类对象;\n//① 函数f1成为类模板X实例化的每个模板类的友元函数:\n// template class X\n// { // ......\n//\tfriend void f10;\n// }\n//②对特定类型(如double), 使模板函数f2(X&)成为X\n//的友元:\n//\n//\t\ttemplate class X\n//\t{ // ......\n//\t\ttemplate friend void f2(X&);\n// }\n//③数函元友的类板模个每的化例实X板模类为成f3数函员成的类A:\n//template class X\n//{ // ......\n//\tfriend void A::f30;\n//}\n//④对特定类型(如double),使模板类B的成员函数\n//f4(X&)成为模板类X的友元\n//template class X\n//{ // ......\n//\ttemplate friend void B ::f4(X&);\n// }\n// ⑤Y类的每个成员函数成为类模板X实例化的每个模板类的友元函数\n// template class X\n//{ // ......\n//\tfriend class Y;\n//}\n//⑥对特定类型(如double),使模板类Z所有成员函数成为模板\n//类X的友元:\n//template class X\n//{ // ......\n//\ttemplate friend class Z;\n//}\n// ⑦一个用Array作参数的函数模板\n//\n//template < typename T >\n//void Tfun(const Array & x, int index)\n//{\n//\tcout << x.Entry(index) << endl;\n//}\n//\n//⑧调用函数模板\n//\n//Array DouAry(5);\n//\n//...\n//\n//Tfun(DouAry, 3);\n// \n// \n// \n//\n//template< typename T3 >\n//class Array\n//{\n//public:\n//\tArray(int s);\n//\tvirtual ~Array();\n//\tvirtual const T3& Entry(int index) const;\n//\tvirtual void Enter(int index, const T3&value);\n//protected:\n//\tint size;\n//\tT3* element;\n//\ttemplate Array::Array(int s)\n//\t{\n//\t\tif (s > 1) size = s; else size = 1;\n//\t\telement = new T3[size];\n//\t}\n//\ttemplate < typename T3 > Array < T3 > :: ~Array()\n//\t\t{ delete[] element; }\n//\ttemplate < typename T3 > const T3& Array ::Entry(int index) const\n//\t{\n//\t\treturn element[index];\n//\t}\n//\ttemplate < typename T3 > void Array ::Enter(int index, const T3&value)\n//\t{\n//\t\telement[index] = value;\n//\t}\n//};\n//int main()\n//{\n//\tArrayIntAry(5);\n//\tint i;\n//\tfor (i = 0; i < 5; i++) IntAry.Enter(i, i);\n//\tcout << \"Integer Array :\\n\";\n//\tfor (i = 0; i < 5; i++) cout << IntAry.Entry(i) << '\\t';\n//\tcout << endl;\n//\tArray DouAry(5);\n//\tfor (i = 0; i < 5; i++) DouAry.Enter(i, (i + 1) * 0.35);\n//\tcout << \"Double Array : \\n\";\n//\tfor (i = 0; i < 5; i++) cout << DouAry.Entry(i) << '\\t';\n//\tcout << endl;\n//}\n////eg2:\n//template//定义类模板\n//class A\n//{\n//public:\n//\tA(T x = 0) { t = x; total = total + 1; }\n//\t//静态数据成员为抽象类型T\n//static T total;\n//protected:\n//\tT t;\n//};\n//\ttemplate T A ::total;\n//\n//\tint main()\n//\t{\n//\t\tA a, b;\n//\t\tcout << \"Atotal=\" << A ::total << endl;\n//\t\tA x, y, z;\n//\t\tcout << \"Atotal=\" << A ::total << endl;\n//\t}\n// \n// 输出结果为Atotal=2\n// \t Atotal=3\n// \n// \n// 利用模板类写链表:\n#include \n\n\ttemplate \n\tclass Node {\n\tpublic:\n\t\tT data;\n\t\tNode* next;\n\n\t\tNode(T value) : data(value), next(nullptr) {}\n\t};\n\n\ttemplate \n\tclass LinkedList {\n\tprivate:\n\t\tNode* head;\n\t\tNode* tail;\n\tpublic:\n\t\tLinkedList() : head(nullptr), tail(nullptr) {}\n\n\t\tvoid insert(T value) {\n\t\t\tNode* newNode = new Node(value);\n\t\t\tif (head == nullptr) {\n\t\t\t\thead = tail = newNode;\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttail->next = newNode;\n\t\t\t\ttail = newNode;\n\t\t\t}\n\t\t}\n\n\t\tvoid display() {\n\t\t\tNode* current = head;\n\t\t\twhile (current != nullptr) {\n\t\t\t\tstd::cout << current->data << std::endl;\n\t\t\t\tcurrent = current->next;\n\t\t\t}\n\t\t}\n\t};\n\t//这样就生成了一个先输入长度,再输入内容的链表\n\tint main() {\n\t\tint length;\n\t\tstd::cin >> length;\n\n\t\tLinkedList myList;\n\n\t\tfor (int i = 0; i < length; ++i) {\n\t\t\tint value;\n\t\t\tstd::cin >> value;\n\t\t\tmyList.insert(value);\n\t\t}\n\n\t\tmyList.display();\n\n\t\treturn 0;\n\t}\n//五、输入流,输出流,文件流\n//1.C++的I/O流类库是把所有的输入输出功能封装在数量相对较少的几个流类中。\n// 自定义类则是通过重载机制使得流类对象能够对自定义类的对象进行输入输出操作。\n//2.流库(stream library)是用面向对象的设计建立的输入输出类库;\n//流库具有两个平行的基类:streambuf和ios类, 所有流类均以两者之一作为基类。\n//3.streambuf类提供对缓冲区的低级操作\n//①设置缓冲区\n//②对缓冲区指针操作\n//③向缓冲区存 / 取字符\n//4.ios 类及其派生类提供用户使用流类的接口\n// 支持对streambuf的缓冲区输入 / 输出的格式化或非格式化转换(函数参数即为一个例子)\n//5.头文件fstream 处理文件信息,包括建立文件,读/写文件的各种操作接口\n//注意:流的操作是流类的公有成员函数\n//(1) cin istream 类的对象,通常连向显示器, 可以重定向\n//\n//(2) cout ostream类的对象, 通常连向显示器, 可以重定向\n//\n//(3) cerr ostream类的对象, 连向显示器。不能重定向\n//cerr 对输出的错误信息不缓冲, 因而发送给它的任何内容都立即输出。\n//(4) clog ostream类的对象, 连向打印机。不能重定向\n//clog 输出的错误信息被缓冲, 当缓冲区满时才进行输出, 也可以通过刷新流的方式\n// (遇到操纵符endl或flush)强迫刷新缓冲区导致显示输出。\n//6.输入流操作\n//①read:无格式输入指定字节数\n// \t 格式:\n//istream& read(char* pch, int nCount);\n//②get:从流中提取字符,包括空格\n// \t 格式:\n//int get();\n//istream& get( char* pch, int nCount, char delim = n' );\n//③getline:从流中提取一行字符\n// 格式:\n//istream& getline( char* pch, int nCount, char delim = \"n' );\n//两个无格式化提取操作成员函数:\n//istream& istream::get(char*, int, char = \"\\n') ;\n//istream & istream::getline(char*, int, char = '\\n');\n//作用:从文本中提取指定个数的字符, 并在串数组末添加一个空字符\n//其中, 第一个参数指向接受字符数据的字符数组\n// 第二个参数指定字符数组最多可容纳的字符个数\n// 第三个参数用于指定一个终止符, 缺省为换行符\n//操作遇到终止符或提取到规定个数字符时, 提取终止\n//④ignore:提取并丢弃流中指定字符\n// \t 格式:\nistream& ignore( int nCount = 1, int delim = EOF ); //nCount指的是忽略字符数量,int delim =EOF不用管,\n//一般调用的时候就是cin.ignore()()中写忽略的数量就行。\n//⑤gcount:统计最后输入字符个数\n// 格式:int gcount()const;\n// ⑥eatwhite:忽略前导空格\n// 格式:void eatwhite();\n// \n// 7.输出流操作\n// ①put:无格式,插入一个字节\n// 格式:ostream& put( char ch );\n// ②write:从无格式,插入一序列\n// 格式:ostream& write( const char* pch, int nCount );\n//③flush:刷新输出流\n// 格式:ostream& flush();\n//8.应用实例:\n//输出:\n//cout << setw(10) << setfill(#') << setiosflags(ios :: right) << k << endl ;\n// 宽度 填充符 输入哪方对齐\n//cout << setw(10) << setbase(8) << setfill('*')<< resetiosflags(ios::right) << setiosflags(ios::left) << k << endl;\n// 进制 清除上一次的输出格式并重设 覆盖左侧的对齐指令\n// 清除左对齐标志位,置右对齐显示+(showpos)\t\n\n// ios::scientific//科学计数法\n//输入:\n// cin>>dec \n// oct \n// hex\n// 9.串流 istringstream ostringstream\n// 首先,string类的一个对象为iss读取\n// eg: string test(\" \")\n// string s1,s2;\n// double x,y;\n//istringstream input(test);\n// input>>s1>>s2>>x>>y;\n// \n// ostringstream Output;\n// double x,y;\n// Output<\n#include\nusing namespace std;\nint main()\n{\n\tchar str[] = \"\\tNew string\";\n\tofstream f2(\"d:\\\\testnew\", ios::app);\n\tif (!f2)\n\t{\n\t\tcout << \"cannot open testnew for ouput. \";\n\t\treturn 0;\n\t}\n\tf2 << str;\n\tf2.close(); //这样就在源文件末尾加了一个隔着四个字符长度的New string\n}\n// ios::trunc 删除现有内容\n// ios::nocreate 不存在文件则打开失败\n// ios::noreplace存在文件则打开失败\n// ios::binary二进制打开,默认文本方式\n// 这些操作可以都写在方式里,并用|隔开\n// 2:关闭文件\n#include\n#include\nusing namespace std;\nint main()\n{\n\tofstream ost;//创建输入流对象\n\tost.open(\"d:my1.dat \");\n\tost << 20 << endl << 30.5 << endl;\n\tost.close();\n\tifstream ist(\"d:\\\\my1.dat\");//创建输出流对象\n\tint n;\n\tdouble d;\n\tist >> n >> d; //从流中提取数据\n\tcout << n << endl << d << endl;\n}\n//3、文本文件\n//ifstream afin;//(内有两个数)\n//af>>a>>b;//(读文件,把数字分给a,b)\n// ofstream afout;\n// int c;\n// c=a+b;\n// afout<<\"c=\"<\n#include \nusing namespace std;\nint main()\n{\n\tchar ch;\n\tifstream f1(\"d:\\\\test\");\n\tif (!f1) { cout << \"cannot open 'test' for input.\"; return 0; }\n\tofstream f2(\"d:\\\\testnew\");\n\tif (!f2) {\n\t\tcout << \"cannot open testnew for ouput.\"; return 0;\n\t\twhile (f1 && f1.get(ch)) f2.put(ch);\n\t\tf1.close();\n\t\tf2.close();\n\t\tcout << \"It is over !\\n\";\n\t\t//虽然表面上看起来只复制了一个小char,其实txt可以视作一个大char,所以其实进行了文件的复制\n\t\t// 下面是文件的输入与输出访问实例\n//#include\n//#include \n//using namespace std;\n//int main()\n//{\n//\tchar fileName[30], name[30]; int number, score;\n//\tint n = 0, max, min, total = 0; double ave;\n//\tofstream outstuf; //建立输出文件流对象\n//\tcout << \"Please input the name of students file :\\n\";\n//\tcin >> fileName; //输入文件名\n//\toutstuf.open(fileName, ios::out);//连接文件,指定打开方式\n//\tif (!outstuf) //调用重载算符函数测试流\n//\t{\n//\t\tcerr << \"File could not be open.\" << endl; abort();\n//\t}\n//\toutstuf << \"学生成绩文件\\n\";//写入一行标题\n//\tcout << \"Input the number, name, and score : (Enter Ctrl-Z to end input)\\n? \";\n//\twhile (cin >> number >> name >> score)\n//\t{\n//\t\toutstuf << number << \" \" << name << \" \" << score << endl; //向流插入数据\n//\t\tcout << \"? \";\n//\t}\n//\toutstuf.close();\n//\n//\n//\tifstream instuf(\"d:\\\\students.txt\", ios::in);//打开文件\n//\tif (!instuf)\n//\t{\n//\t\tcerr << \"File could not be open.\" << endl; abort();\n//\t}\n//\tinstuf.getline(s, 80);//略去标题行\n//\twhile (instuf >> number >> name >> score)//提取并测试\n//\t{\n//\t\tcout << number << '\\t' << name << '\\t' << score << '\\n';\n//\t\tif (n == 0) { max = min = score; }//对变量置初值\n//\t\telse { if (score > max) max = score; if (score < min) min = score; }\n//\t\ttotal += score;\tn++;\t//统计\n//\t}\n//\tave = double(total) / n;\t//求平均值\n//\tcout << \"maximal is : \" << max << endl << \"minimal is : \" << min << endl\n//\t\t<< \"average is :\" << ave << endl;//屏幕显示\n//\tinstuf.close();\t\t//关闭文件\n//}\n// \n// \t\t 浏览文件:\n// \t\t void browseFile( char * fileName, int delLine )//文件名做参数\n\t\t//{\n\t\t//\tifstream inf(fileName, ios::in);\n\t\t//\tchar s[80];\n\t\t//\tfor (int i = 1; i <= delLine; i++)//不显示开始的指定行数\n\t\t//\t\tinf.getline(s, 80);\n\t\t//\twhile (!inf.eof())\n\t\t//\t{\n\t\t//\t\tinf.getline(s, 80);//按行读出文件\n\t\t//\t\tcout << s << endl;\n\t\t//\t}\n\t\t//\t\tinf.close();\n\t // }\n// 总结:1:能用char别用string,后者在文件操作可能报错\n// \t\t 2:文件操作一般作为一个void函数进行使用\n//\n//\n//11.二进制文件:\n// \t打开方式指定ios::binary,不对写入或者读出的数据做格式转换\n// \t\t ①输出:\n//1、包含头文件ofstream\n//2、创建输出流对象3、打开文件\n// ofstream ofs(\"person.txt\", ios::out | ios::binary);\n//Person p = { \"张三”,18};\n//4、写文件\n//ofs.write((const char*)&p, sizeof(p));//强制类型转换:必须,且接口名称为.write\n//5、关闭文件\n// ofs.close();\n// ②输入\n//1、包含头文件ifstream\n//2、创建输入流对象3、打开文件\n// ifstream ifs(\"person.txt\", ios::in | ios::binary);\n//Person p;\n//4、写文件\n//ifs.read((char*)&p, sizeof(p));//强制类型转换:必须,且接口名称为.read\n// \t\t cout<<\"姓名:\"<> time;\n f.store_time(time);\n cin >> quality;\n f.store_quality(quality);\n cout << \"Film--\" << endl;\n f.output();\n cout << endl;\n cin.ignore();\n\n DirectorCut d;\n getline(cin, title);\n d.store_title(title);\n getline(cin, director);\n d.store_director(director);\n cin >> time;\n d.store_time(time);\n cin >> quality;\n d.store_quality(quality);\n cin >> rev_time;\n d.store_rev_time(rev_time); // 修订时间\n cin.ignore();\n getline(cin, changes);\n d.store_changes(changes); // 影片变更内容\n cout << \"DirectorCut--\" << endl;\n d.output();\n cout << endl;\n\n ForeignFilm ff;\n getline(cin, title);\n ff.store_title(title);\n getline(cin, director);\n ff.store_director(director);\n cin >> time;\n ff.store_time(time);\n cin >> quality;\n ff.store_quality(quality);\n cin.ignore();\n getline(cin, language);\n ff.store_language(language);\n cout << \"ForeignFilm--\" << endl;\n ff.output();\n cout << endl;\n\n return 0;\n}\n\n输出\n\n必须使用的关键字\nclass \n样例输入 Copy\nRear Window\nAlfred Hitchcock\n112\n4\nJail Bait\nEd Wood\n70\n2\n72\nExtra footage not in original included\nJules and Jim\nFrancois Truffaut\n104\n4\nFrench\n样例输出 Copy\nFilm--\nTitle: Rear Window\nDirector: Alfred Hitchcock\nTime: 112 mins\nQuality: ****\n\nDirectorCut--\nTitle: Jail Bait\nDirector: Ed Wood\nTime: 70 mins\nQuality: **\nRevised time: 72 mins\nChanges: Extra footage not in original included\n\nForeignFilm--\nTitle: Jules and Jim\nDirector: Francois Truffaut\nTime: 104 mins\nQuality: ****\nLanguage: French\n提示\n不用循环输入\n\n题目描述\n对于之前题目:影片管理的类进行修改:\n\n1.提供一个多态的成员函数input,用于读取输入Film、DirectoCut和ForeignFilm的具体信息,输入的具体信息详见样例输入。\n\n2.根据输入的信息动态的创建Film类层次对象。(在read_input 函数中实现)\n\n3.将Film类层次中的input函数设计为虚函数,使其具有多态性,动态创建的对象通过input函数可以从我们的输入中得到正确数据。\n\n4.将Film类层次中的output函数设计为虚函数,使其具有多态性,动态创建的对象通过output函数可以将信息正确的输出。\n\n根据以下测试函数进行测试:\n\nint main()\n{\n int n = 5;\n Film* films[n];\n for(int i=0; i> class_name;\n cin.ignore(); //可以去除输入流中的换行符\n films[i] = read_input(class_name);\n cout << class_name << \"--\" << endl;\n films[i]->output();\n cout << endl;\n }\n}\n输入\n具体影片的信息,对于不同类型所输入信息是不同的。\nFilm 依次顺序\nInput class name:\nInput title:\nInput director:\nInput time:\nInput quality:\n\nDirectoCut类input依次顺序\nInput class name:\nInput title:\nInput director:\nInput time:\nInput quality:\nInput rev_time:\nInput changes:\n\nForeignFilm类input依次顺序\nInput class name:\nInput title:\nInput director:\nInput time:\nInput quality:\nInput language:\n\n输出\n输出类中的信息\n必须使用的关键字\nvirtual class \n样例输入 Copy\nDirectorCut\nA Passage To India\nDavid Lean\n197\n3\n180\nCave scene twice as long; more local color\nFilm\nMean Streets\nMartin Scorsese\n168\n4\nFilm\nThe Best Years of Our Lives\nWilliam Wyler\n172\n4\nForeignFilm\nDiva\nJean-Jacques Beineix\n123\n3\nFrench\nFilm\nOrlando\nSally Potter\n97\n3\n样例输出 Copy\nInput class name:\nInput title:\nInput director:\nInput time:\nInput quality:\nInput rev_time:\nInput changes:\nDirectorCut--\nTitle: A Passage To India\nDirector: David Lean\nTime: 197 mins\nQuality: ***\nRevised time: 180 mins\nChanges: Cave scene twice as long; more local color\n\nInput class name:\nInput title:\nInput director:\nInput time:\nInput quality:\nFilm--\nTitle: Mean Streets\nDirector: Martin Scorsese\nTime: 168 mins\nQuality: ****\n\nInput class name:\nInput title:\nInput director:\nInput time:\nInput quality:\nFilm--\nTitle: The Best Years of Our Lives\nDirector: William Wyler\nTime: 172 mins\nQuality: ****\n\nInput class name:\nInput title:\nInput director:\nInput time:\nInput quality:\nInput language:\nForeignFilm--\nTitle: Diva\nDirector: Jean-Jacques Beineix\nTime: 123 mins\nQuality: ***\nLanguage: French\n\nInput class name:\nInput title:\nInput director:\nInput time:\nInput quality:\nFilm--\nTitle: Orlando\nDirector: Sally Potter\nTime: 97 mins\nQuality: ***\n提示\ninput(){\ncout << \"Input title:\" <>操作符,复数的判等操作定义为:复数z1=a+bi等于z2=c+di,当且仅当a等于c且b等于d。复数求负的操作定义为:如果z=a+bi是一个复数, -z为-a-bi。为Complex类重载右移操作符>>以输出数据。\nclass Complex\n{ public:\n // TODO: 重载 ==\n // TODO: 重载 !=\n // TODO: 重载 -\n // TODO: 重载 >>\n\n private:\n double Real, Image ;\n};\n\n测试函数:\nint main()\n{\n double r, i;\n cin >> r >> i;\n Complex c1(r, i);\n Complex c;\n c = -c1;\n cout >> c << endl;\n cout << (c1 != c) << endl;\n cout << (c1 == c) << endl;\n}\n\n输入\n复数的实部和虚部\n输出\n详见测试函数\n必须使用的关键字\nclass operator \n样例输入 Copy\n2.1 3.4\n样例输出 Copy\n(-2.1 + -3.4i)\n1\n0\n提示\n不需要循环输入\n\n题目描述\n编写一个程序,已知某个学生数据,包括学号、姓名、平时作业成绩、期中考试成绩、期末考试成绩。设计成员函数求该学生的总成绩并显示,设计一个 disp 函数显示该学生的信息及成绩单。\n已给出了 main () 函数。成员函数 couscore的功能是求某学生的总成绩并显示,disp 函数功能是显示学生的姓名、学号和成绩单。\n要求按照 main () 函数及对应的输出完成 Student 类的设计,要求 Student 类中包含学号、姓名、平时作业成绩、期中考试成绩、期末考试成绩等数据成员,包含总成绩的静态数据成员,另外包含构造函数(参数为学号、姓名、平时作业成绩、期中考试成绩、期末考试成绩)、计算总成绩的成员函数 (couscore) 以及显示成绩的成员函数 (disp)。\n注:总成绩 = 平时作业成绩 * 20% + 期中考试成绩 * 30% + 期末考试成绩*50%\nint main() {\n int id;\n string name;\n double hw, midterm, final;\n char continue_input = 'y'; // 控制是否继续输入的标志\n\n while (continue_input == 'y') {\n cout << \"请输入学生学号: \";\n cin >> id;\n cout << \"请输入学生姓名: \";\n cin >> name;\n cout << \"请输入平时作业成绩: \";\n cin >> hw;\n cout << \"请输入期中考试成绩: \";\n cin >> midterm;\n cout << \"请输入期末考试成绩: \";\n cin >> final;\n\n Student student(id, name, hw, midterm, final);\n student.couscore();\n student.disp();\n\n cout << \"是否继续输入学生信息?(y/n): \";\n cin >> continue_input;\n }\n\n return 0;\n}\n输入\n输入多个学生的学号、姓名和各项成绩\n输出\n参考如下:\n见图片\n注意上面类的成员函数里,冒号使用的英文,且后面需要有一个空格;不对最后输出的所有double型数据做任何处理,比如保留几位小数。\n必须使用的关键字\nclass private public \n禁止使用的关键字\nscanf printf \n样例输入 Copy\n11\n小汪\n70\n75\n72\ny\n12\nxiaoxiao\n86\n90\n100\ny\n15\n毛毛\n99\n98\n99\nn\n样例输出 Copy\n请输入学生学号: 请输入学生姓名: 请输入平时作业成绩: 请输入期中考试成绩: 请输入期末考试成绩: 总成绩: 72.5\n学生姓名: 小汪\n学生学号: 11\n平时作业成绩: 70\n期中考试成绩: 75\n期末考试成绩: 72\n\n是否继续输入学生信息?(y/n): 请输入学生学号: 请输入学生姓名: 请输入平时作业成绩: 请输入期中考试成绩: 请输入期末考试成绩: 总成绩: 94.2\n学生姓名: xiaoxiao\n学生学号: 12\n平时作业成绩: 86\n期中考试成绩: 90\n期末考试成绩: 100\n\n是否继续输入学生信息?(y/n): 请输入学生学号: 请输入学生姓名: 请输入平时作业成绩: 请输入期中考试成绩: 请输入期末考试成绩: 总成绩: 98.7\n学生姓名: 毛毛\n学生学号: 15\n平时作业成绩: 99\n期中考试成绩: 98\n期末考试成绩: 99\n\n是否继续输入学生信息?(y/n): \n\n题目描述\n编写程序,在上一题的基础上,设计一个学生类student,包括学号、姓名和平时作业成绩、期中考试成绩、期末考试成绩,利用重载运算符“*”计算该学生各项成绩加权后的成绩,利用重载运算符“<<”输出该学生的成绩单。\n给出main函数,要求自己设计类和函数,实现功能:\n\nint main() {\n int id;\n string name;\n double hw, midterm, final;\n char continue_input = 'y'; // 控制是否继续输入的标志\n\n while (continue_input == 'y') {\n cout << \"请输入学生学号: \";\n cin >> id;\n cout << \"请输入学生姓名: \";\n cin >> name;\n cout << \"请输入平时作业成绩: \";\n cin >> hw;\n cout << \"请输入期中考试成绩: \";\n cin >> midterm;\n cout << \"请输入期末考试成绩: \";\n cin >> final;\n\n Student student(id, name, hw, midterm, final);\n\n // 调用重载的乘法运算符进行加权成绩的计算\n student.operator*();\n\n cout << \"学生信息及成绩单:\" << endl;\n cout << student << endl;\n\n cout << \"是否继续输入学生信息?(y/n): \";\n cin >> continue_input;\n }\n\n return 0;\n}\n输入\n多个学生姓名、各成绩。\n输出\n参考如下:\n\n必须使用的关键字\nclass operator* \n禁止使用的关键字\nscanf printf \n样例输入 Copy\n1\nxiaohuahua\n80\n90\n85\ny\n2\nnike\n95\n96\n98\nn\n样例输出 Copy\n请输入学生学号: 请输入学生姓名: 请输入平时作业成绩: 请输入期中考试成绩: 请输入期末考试成绩: 学生信息及成绩单:\n学生姓名: xiaohuahua\n学生学号: 1\n平时作业成绩加权: 16\n期中考试成绩加权: 27\n期末考试成绩加权: 42.5\n总成绩: 85.5\n\n是否继续输入学生信息?(y/n): 请输入学生学号: 请输入学生姓名: 请输入平时作业成绩: 请输入期中考试成绩: 请输入期末考试成绩: 学生信息及成绩单:\n学生姓名: nike\n学生学号: 2\n平时作业成绩加权: 19\n期中考试成绩加权: 28.8\n期末考试成绩加权: 49\n总成绩: 96.8\n\n是否继续输入学生信息?(y/n): \n\n题目描述\n\n在大学期间,学生的学分由实践学分和课程学分组成,担任校级组织、院级组织、班级的学生干部可以增加一定的实践学分。\n设计一个层次类实现计算学生的总学分并显示。首先定义一个Student的抽象类,提供有共同操作界面的纯虚函数,由此类派生出SchoolStuLeader类、FacultiesStuLeader类、ClassStuLeader类和RegStudent类。\n每一种类中学分计算方式如下: \n校级组织学生干部:实践学分 = (任职时长(天数) * 0.01 + 2)/ 5\n院级组织学生干部:实践学分 = (任职时长(天数) * 0.01 + 1)/ 5\n班级学生干部:实践学分 = (任职时长(天数) * 0.01 + 0.8)/ 5\n无任职学生:实践学分 = 课外实践时长(小时) * 0.005\n总学分 = 实践学分(其中任职时长和实践时长均键盘输入) + 课程学分(键盘输入)\n已知某个学生数据,包括学号、姓名、实践学分、课程学分。设计函数求该学生的总学分并显示,设计一个disp显示该学生的信息和总学分。定义以上所有类,在第二层类中提供全部函数的实现。在测试函数中使用基类指针实现不同派生类对象的操作。\nmain函数如下:\nint main() {\n Student* student;\n cout << \"请输入校级学生干部的信息,包括学号,名字,任职天数,课程学分:\" << endl;\n int id;\n string n;\n double days;\n double course;\n cin >> id >> n >> days >> course;\n student = new SchoolStuLeader(id, n, days, course);\n student->calculateCredits(); // 计算所获得的实践学分\n student->getTotalCredit(); // 计算总学分\n student->disp(); // 显示信息\n\n cout << \"请输入院级学生干部的信息,包括学号,名字,任职天数,课程学分:\" << endl;\n cin >> id >> n >> days >> course;\n student = new FacultiesStuLeader(id, n, days, course);\n student->calculateCredits();\n student->getTotalCredit();\n student->disp();\n\n cout << \"请输入班级学生干部的信息,包括学号,名字,任职天数,课程学分:\" << endl;\n cin >> id >> n >> days >> course;\n student = new ClassStuLeader(id, n, days, course);\n student->calculateCredits();\n student->getTotalCredit();\n student->disp();\n\n cout << \"请输入非学生干部的信息,包括学号,名字,课外实践时长,课程学分:\" << endl;\n double hours;\n cin >> id >> n >> hours >> course;\n\n student = new RegStudent(id, n, hours, course);\n student->calculateCredits();\n student->getTotalCredit();\n student->disp();\n\n return 0;\n\n}\n\n输入\n学号、名字、任职天数(实践时长)、课程学分\n输出\n学生的担任职务2、学号、姓名、总学分,参考如下\n\n必须使用的关键字\nclass public protected \n禁止使用的关键字\nprintf scanf \n样例输入 Copy\n1 LL 500 45\n2 HH 300 40\n3 KK 300 45\n4 LI 40 30\n样例输出 Copy\n请输入校级学生干部的信息,包括学号,名字,任职天数,课程学分:\n校级学生干部:\n学号:1,姓名:LL\n总学分:46.4\n请输入院级学生干部的信息,包括学号,名字,任职天数,课程学分:\n院级学生干部:\n学号:2,姓名:HH\n总学分:40.8\n请输入班级学生干部的信息,包括学号,名字,任职天数,课程学分:\n班级学生干部:\n学号:3,姓名:KK\n总学分:45.76\n请输入非学生干部的信息,包括学号,名字,课外实践时长,课程学分:\n普通学生:\n学号:4,姓名:LI\n总学分:30.2\n```", + "text_sha256": "a60167293cd792699161907266a10e21eb737fad34cc56e2d9e1672f5b60455b", + "knowledge_path": "knowledge/cpp/cpp-007.md", + "knowledge_sha256": "04931a40525326c6d3bda979be5ccbf5b300fde6e529baefde24c53b90dfa9fa" + }, + "cpp-008:h-a:c01": { + "chunk_id": "cpp-008:h-a:c01", + "course_id": "cpp", + "source_id": "cpp-008", + "source_title": "A", + "heading_path": [ + "A" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "```text\n#include\n#include\nusing namespace std;\nclass Film\n{\npublic:\n void store_title(const string& t) { title = t; }\n void store_director(const string& d) { director = d; }\n void store_time(int t) { time = t; }\n void store_quality(int q) { quality = q; }\n\n void output() const {\n cout << \"Title: \" << title << endl;\n cout << \"Director: \" << director << endl;\n cout << \"Time: \" << time << \" mins\" << endl;\n cout << \"Quality: \" ;\n for (int i = 0; i < quality; ++i)\n {\n cout << \"*\";\n }\n cout << endl;\n }\n\nprotected:\n\tstring title;\n\tstring director;\n\tint time;//影片播放时间(精确到分钟)\n\tint quality;//影片等级: 0-4\n\t\n};\nclass DirectorCut :public Film\n{\nprivate:\n\tint rev_time;\n\tstring changes;\npublic:\n void store_rev_time(int t) { rev_time = t; }\n void store_changes(const string& c) { changes = c; }\n\n void output() const {\n Film::output();\n cout << \"Revised time: \" << rev_time <<\" mins\"<< endl;\n cout << \"Changes: \" << changes << endl;\n }\n};\nclass ForeignFilm :public Film\n{\nprivate:\n\tstring language;\npublic:\n void store_language(const string& l) { language = l; }\n\n void output() const {\n Film::output();\n cout << \"Language: \" << language << endl;\n }\n};\nint main() {\n string title, director, changes, language;\n int time, quality, rev_time;\n\n Film f;\n getline(cin, title);\n f.store_title(title);\n getline(cin, director);\n f.store_director(director);\n cin >> time;\n f.store_time(time);\n cin >> quality;\n f.store_quality(quality);\n cout << \"Film--\" << endl;\n f.output();\n cout << endl;\n cin.ignore();\n\n DirectorCut d;\n getline(cin, title);\n d.store_title(title);\n getline(cin, director);\n d.store_director(director);\n cin >> time;\n d.store_time(time);\n cin >> quality;\n d.store_quality(quality);\n cin >> rev_time;\n d.store_rev_time(rev_time); // 修订时间\n cin.ignore();\n getline(cin, changes);\n d.store_changes(changes); // 影片变更内容\n cout << \"DirectorCut--\" << endl;\n d.output();\n cout << endl;\n\n ForeignFilm ff;\n getline(cin, title);\n ff.store_title(title);\n getline(cin, director);\n ff.store_director(director);\n cin >> time;\n ff.store_time(time);\n cin >> quality;\n ff.store_quality(quality);\n cin.ignore();\n getline(cin, language);\n ff.store_language(language);\n cout << \"ForeignFilm--\" << endl;\n ff.output();\n cout << endl;\n\n return 0;\n}\n```", + "text_sha256": "6d3c917d9cfc432717e221d4ebcf3dcf591f5272431171fe04ad6fc6b918675d", + "knowledge_path": "knowledge/cpp/cpp-008.md", + "knowledge_sha256": "01887636eae68964dfc1159405b60cd5db5e27ace37d3c58b9b89d21add130f1" + }, + "data-structure-023:h-作业及分析:c01": { + "chunk_id": "data-structure-023:h-作业及分析:c01", + "course_id": "data_structure", + "source_id": "data-structure-023", + "source_title": "作业及分析", + "heading_path": [ + "作业及分析" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "```text\nrecursive and non-recursive methods used in-order traversal binary trees:\n\n递归中序遍历:\n#include \nusing namespace std;\nstruct TreeNode//建立一棵树\n {\n int value;\n TreeNode* left;\n TreeNode* right;\n \n TreeNode(int val) : value(val), left(nullptr), right(nullptr) {}\n};\n\nvoid inOrderRecursive(TreeNode* node)//遍历 {\n if (node != nullptr) {\n inOrderRecursive(node->left);\n cout << node->value << \" \";\n inOrderRecursive(node->right);\n }\n}\n非递归方法:(学习一下)我们可以采用建立一个栈\n#include \n\nvoid inOrderIterative(TreeNode* root) //栈的二叉树中序遍历\n{\n stack s;\n TreeNode* current = root;\n\n while (!s.empty() || current != nullptr) {\n while (current != nullptr) {\n s.push(current);\n current = current->left;\n }\n \n current = s.top();\n s.pop();\n cout << current->value << \" \";\n current = current->right;\n }\n}\n\n我打算用数组建立一个平衡二叉树\n\nTreeNode* insertLevelOrder(int arr[], TreeNode* root, int i, int n) {\n if (i < n) {\n TreeNode* temp = new TreeNode(arr[i]);\n root = temp;\n\n root->left = insertLevelOrder(arr, root->left, 2 * i + 1, n);\n root->right = insertLevelOrder(arr, root->right, 2 * i + 2, n);\n }\n return root;\n}\n时间复杂度测量:(这里是一点不会,用GPT直接帮我全写了)\nWe'll use the chrono library to measure execution time.\ncpp\n#include \n\nint main() {\n int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; // Example dataset\n int n = sizeof(arr) / sizeof(arr[0]);\n TreeNode* root = insertLevelOrder(arr, nullptr, 0, n);\n\n // Measure recursive in-order traversal time\n auto start = chrono::high_resolution_clock::now();\n cout << \"Recursive In-Order Traversal: \";\n inOrderRecursive(root);\n auto end = chrono::high_resolution_clock::now();\n cout << \"\\nTime taken (Recursive): \" \n << chrono::duration_cast(end - start).count() << \" microseconds\\n\";\n\n // Measure non-recursive in-order traversal time\n start = chrono::high_resolution_clock::now();\n cout << \"Non-Recursive In-Order Traversal: \";\n inOrderIterative(root);\n end = chrono::high_resolution_clock::now();\n cout << \"\\nTime taken (Non-Recursive): \" \n << chrono::duration_cast(end - start).count() << \" microseconds\\n\";\n\n return 0;\n}\n\n综合起来整体代码如下:\n#include \n#include \n#include \n\nusing namespace std;\n\nstruct TreeNode {\n int value;\n TreeNode* left;\n TreeNode* right;\n \n TreeNode(int val) : value(val), left(nullptr), right(nullptr) {}\n};\n\nvoid inOrderRecursive(TreeNode* node) {\n if (node != nullptr) {\n inOrderRecursive(node->left);\n cout << node->value << \" \";\n inOrderRecursive(node->right);\n }\n}\n\nvoid inOrderIterative(TreeNode* root) {\n stack s;\n TreeNode* current = root;\n\n while (!s.empty() || current != nullptr) {\n while (current != nullptr) {\n s.push(current);\n current = current->left;\n }\n \n current = s.top();\n s.pop();\n cout << current->value << \" \";\n current = current->right;\n }\n}\n\nTreeNode* insertLevelOrder(int arr[], TreeNode* root, int i, int n) {\n if (i < n) {\n TreeNode* temp = new TreeNode(arr[i]);\n root = temp;\n\n root->left = insertLevelOrder(arr, root->left, 2 * i + 1, n);\n root->right = insertLevelOrder(arr, root->right, 2 * i + 2, n);\n }\n return root;\n}\n\nint main() {\n int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; // Example dataset\n int n = sizeof(arr) / sizeof(arr[0]);\n TreeNode* root = insertLevelOrder(arr, nullptr, 0, n);\n\n // Measure recursive in-order traversal time\n auto start = chrono::high_resolution_clock::now();\n cout << \"Recursive In-Order Traversal: \";\n inOrderRecursive(root);\n auto end = chrono::high_resolution_clock::now();\n cout << \"\\nTime taken (Recursive): \" \n << chrono::duration_cast(end - start).count() << \" microseconds\\n\";\n\n // Measure non-recursive in-order traversal time\n start = chrono::high_resolution_clock::now();\n cout << \"Non-Recursive In-Order Traversal: \";\n inOrderIterative(root);\n end = chrono::high_resolution_clock::now();\n cout << \"\\nTime taken (Non-Recursive): \" \n << chrono::duration_cast(end - start).count() << \" microseconds\\n\";\n\n return 0;\n}\n分析:\n\n递归:好处是代码简单逻辑清晰,坏处是占用栈内存大,可能溢出。\n非递归:好处是占用内存少,毕竟就一个栈,但是肉眼可见代码复杂度很高,逻辑要求不低。\n\n综上所述我认为:递归可以用于少量数据,毕竟十分简单易操作,而栈的方法可以用于冗大复杂结构二叉树计算。\n```", + "text_sha256": "7f7c4f22b9774e285e4d2fa975b1e3a7cda1807c71dab4002221b8687bef62f8", + "knowledge_path": "knowledge/data_structure/data-structure-023.md", + "knowledge_sha256": "e0416075bd589c1820d981092c74c4b15475f09388604bb4a4d30ceba0ee481f" + }, + "data-structure-026:h-测试结果:c01": { + "chunk_id": "data-structure-026:h-测试结果:c01", + "course_id": "data_structure", + "source_id": "data-structure-026", + "source_title": "测试结果", + "heading_path": [ + "测试结果" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "```text\nRecursive In-Order Traversal: 1023 511 1024 255 1025 512 1026 127 1027 513 1028 256 1029 514 1030 63 1031 515 1032 257 1033 516 1034 128 1035 517 1036 258 1037 518 1038 31 1039 519 1040 259 1041 520 1042 129 1043 521 1044 260 1045 522 1046 64 1047 523 1048 261 1049 524 1050 130 1051 525 1052 262 1053 526 1054 15 1055 527 1056 263 1057 528 1058 131 1059 529 1060 264 1061 530 1062 65 1063 531 1064 265 1065 532 1066 132 1067 533 1068 266 1069 534 1070 32 1071 535 1072 267 1073 536 1074 133 1075 537 1076 268 1077 538 1078 66 1079 539 1080 269 1081 540 1082 134 1083 541 1084 270 1085 542 1086 7 1087 543 1088 271 1089 544 1090 135 1091 545 1092 272 1093 546 1094 67 1095 547 1096 273 1097 548 1098 136 1099 549 1100 274 1101 550 1102 33 1103 551 1104 275 1105 552 1106 137 1107 553 1108 276 1109 554 1110 68 1111 555 1112 277 1113 556 1114 138 1115 557 1116 278 1117 558 1118 16 1119 559 1120 279 1121 560 1122 139 1123 561 1124 280 1125 562 1126 69 1127 563 1128 281 1129 564 1130 140 1131 565 1132 282 1133 566 1134 34 1135 567 1136 283 1137 568 1138 141 1139 569 1140 284 1141 570 1142 70 1143 571 1144 285 1145 572 1146 142 1147 573 1148 286 1149 574 1150 3 1151 575 1152 287 1153 576 1154 143 1155 577 1156 288 1157 578 1158 71 1159 579 1160 289 1161 580 1162 144 1163 581 1164 290 1165 582 1166 35 1167 583 1168 291 1169 584 1170 145 1171 585 1172 292 1173 586 1174 72 1175 587 1176 293 1177 588 1178 146 1179 589 1180 294 1181 590 1182 17 1183 591 1184 295 1185 592 1186 147 1187 593 1188 296 1189 594 1190 73 1191 595 1192 297 1193 596 1194 148 1195 597 1196 298 1197 598 1198 36 1199 599 1200 299 1201 600 1202 149 1203 601 1204 300 1205 602 1206 74 1207 603 1208 301 1209 604 1210 150 1211 605 1212 302 1213 606 1214 8 1215 607 1216 303 1217 608 1218 151 1219 609 1220 304 1221 610 1222 75 1223 611 1224 305 1225 612 1226 152 1227 613 1228 306 1229 614 1230 37 1231 615 1232 307 1233 616 1234 153 1235 617 1236 308 1237 618 1238 76 1239 619 1240 309 1241 620 1242 154 1243 621 1244 310 1245 622 1246 18 1247 623 1248 311 1249 624 1250 155 1251 625 1252 312 1253 626 1254 77 1255 627 1256 313 1257 628 1258 156 1259 629 1260 314 1261 630 1262 38 1263 631 1264 315 1265 632 1266 157 1267 633 1268 316 1269 634 1270 78 1271 635 1272 317 1273 636 1274 158 1275 637 1276 318 1277 638 1278 1 1279 639 1280 319 1281 640 1282 159 1283 641 1284 320 1285 642 1286 79 1287 643 1288 321 1289 644 1290 160 1291 645 1292 322 1293 646 1294 39 1295 647 1296 323 1297 648 1298 161 1299 649 1300 324 1301 650 1302 80 1303 651 1304 325 1305 652 1306 162 1307 653 1308 326 1309 654 1310 19 1311 655 1312 327 1313 656 1314 163 1315 657 1316 328 1317 658 1318 81 1319 659 1320 329 1321 660 1322 164 1323 661 1324 330 1325 662 1326 40 1327 663 1328 331 1329 664 1330 165 1331 665 1332 332 1333 666 1334 82 1335 667 1336 333 1337 668 1338 166 1339 669 1340 334 1341 670 1342 9 1343 671 1344 335 1345 672 1346 167 1347 673 1348 336 1349 674 1350 83 1351 675 1352 337 1353 676 1354 168 1355 677 1356 338 1357 678 1358 41 1359 679 1360 339 1361 680 1362 169 1363 681 1364 340 1365 682 1366 84 1367 683 1368 341 1369 684 1370 170 1371 685 1372 342 1373 686 1374 20 1375 687 1376 343 1377 688 1378 171 1379 689 1380 344 1381 690 1382 85 1383 691 1384 345 1385 692 1386 172 1387 693 1388 346 1389 694 1390 42 1391 695 1392 347 1393 696 1394 173 1395 697 1396 348 1397 698 1398 86 1399 699 1400 349 1401 700 1402 174 1403 701 1404 350 1405 702 1406 4 1407 703 1408 351 1409 704 1410 175 1411 705 1412 352 1413 706 1414 87 1415 707 1416 353 1417 708 1418 176 1419 709 1420 354 1421 710 1422 43 1423 711 1424 355 1425 712 1426 177 1427 713 1428 356 1429 714 1430 88 1431 715 1432 357 1433 716 1434 178 1435 717 1436 358 1437 718 1438 21 1439 719 1440 359 1441 720 1442 179 1443 721 1444 360 1445 722 1446 89 1447 723 1448 361 1449 724 1450 180 1451 725 1452 362 1453 726 1454 44 1455 727 1456 363 1457 728 1458 181 1459 729 1460 364 1461 730 1462 90 1463 731 1464 365 1465 732 1466 182 1467 733 1468 366 1469 734 1470 10 1471 735 1472 367 1473 736 1474 183 1475 737 1476 368 1477 738 1478 91 1479 739 1480 369 1481 740 1482 184 1483 741 1484 370 1485 742 1486 45 1487 743 1488 371 1489 744 1490 185 1491 745 1492 372 1493 746 1494 92 1495 747 1496 373 1497 748 1498 186 1499 749 1500 374 1501 750 1502 22 1503 751 1504 375 1505 752 1506 187 1507 753 1508 376 1509 754 1510 93 1511 755 1512 377 1513 756 1514 188 1515 757 1516 378 1517 758 1518 46 1519 759 1520 379 1521 760 1522 189 1523 761 1524 380 1525 762 1526 94 1527 763 1528 381 1529 764 1530 190 1531 765 1532 382 1533 766 1534 0 1535 767 1536 383 1537 768 1538 191 1539 769 1540 384 1541 770 1542 95 1543 771 1544 385 1545 772 1546 192 1547 773 1548 386 1549 774 1550 47 1551 775 1552 387 1553 776 1554 193 1555 777 1556 388 1557 778 1558 96 1559 779 1560 389 1561 780 1562 194 1563 781 1564 390 1565 782 1566 23 1567 783 1568 391 1569 784 1570 195 1571 785 1572 392 1573 786 1574 97 1575 787 1576 393 1577 788 1578 196 1579 789 1580 394 1581 790 1582 48 1583 791 1584 395 1585 792 1586 197 1587 793 1588 396 1589 794 1590 98 1591 795 1592 397 1593 796 1594 198 1595 797 1596 398 1597 798 1598 11 1599 799 1600 399 1601 800 1602 199 1603 801 1604 400 1605 802 1606 99 1607 803 1608 401 1609 804 1610 200 1611 805 1612 402 1613 806 1614 49 1615 807 1616 403 1617 808 1618 201 1619 809 1620 404 1621 810 1622 100 1623 811 1624 405 1625 812 1626 202 1627 813 1628 406 1629 814 1630 24 1631 815 1632 407 1633 816 1634 203 1635 817 1636 408 1637 818 1638 101 1639 819 1640 409 1641 820 1642 204 1643 821 1644 410 1645 822 1646 50 1647 823 1648 411 1649 824 1650 205 1651 825 1652 412 1653 826 1654 102 1655 827 1656 413 1657 828 1658 206 1659 829 1660 414 1661 830 1662 5 1663 831 1664 415 1665 832 1666 207 1667 833 1668 416 1669 834 1670 103 1671 835 1672 417 1673 836 1674 208 1675 837 1676 418 1677 838 1678 51 1679 839 1680 419 1681 840 1682 209 1683 841 1684 420 1685 842 1686 104 1687 843 1688 421 1689 844 1690 210 1691 845 1692 422 1693 846 1694 25 1695 847 1696 423 1697 848 1698 211 1699 849 1700 424 1701 850 1702 105 1703 851 1704 425 1705 852 1706 212 1707 853 1708 426 1709 854 1710 52 1711 855 1712 427 1713 856 1714 213 1715 857 1716 428 1717 858 1718 106 1719 859 1720 429 1721 860 1722 214 1723 861 1724 430 1725 862 1726 12 1727 863 1728 431 1729 864 1730 215 1731 865 1732 432 1733 866 1734 107 1735 867 1736 433 1737 868 1738 216 1739 869 1740 434 1741 870 1742 53 1743 871 1744 435 1745 872 1746 217 1747 873 1748 436 1749 874 1750 108 1751 875 1752 437 1753 876 1754 218 1755 877 1756 438 1757 878 1758 26 1759 879 1760 439 1761 880 1762 219 1763 881 1764 440 1765 882 1766 109 1767 883 1768 441 1769 884 1770 220 1771 885 1772 442 1773 886 1774 54 1775 887 1776 443 1777 888 1778 221 1779 889 1780 444 1781 890 1782 110 1783 891 1784 445 1785 892 1786 222 1787 893 1788 446 1789 894 1790 2 1791 895 1792 447 1793 896 1794 223 1795 897 1796 448 1797 898 1798 111 1799 899 1800 449 1801 900 1802 224 1803 901 1804 450 1805 902 1806 55 1807 903 1808 451 1809 904 1810 225 1811 905 1812 452 1813 906 1814 112 1815 907 1816 453 1817 908 1818 226 1819 909 1820 454 1821 910 1822 27 1823 911 1824 455 1825 912 1826 227 1827 913 1828 456 1829 914 1830 113 1831 915 1832 457 1833 916 1834 228 1835 917 1836 458 1837 918 1838 56 1839 919 1840 459 1841 920 1842 229 1843 921 1844 460 1845 922 1846 114 1847 923 1848 461 1849 924 1850 230 1851 925 1852 462 1853 926 1854 13 1855 927 1856 463 1857 928 1858 231 1859 929 1860 464 1861 930 1862 115 1863 931 1864 465 1865 932 1866 232 1867 933 1868 466 1869 934 1870 57 1871 935 1872 467 1873 936 1874 233 1875 937 1876 468 1877 938 1878 116 1879 939 1880 469 1881 940 1882 234 1883 941 1884 470 1885 942 1886 28 1887 943 1888 471 1889 944 1890 235 1891 945 1892 472 1893 946 1894 117 1895 947 1896 473 1897 948 1898 236 1899 949 1900 474 1901 950 1902 58 1903 951 1904 475 1905 952 1906 237 1907 953 1908 476 1909 954 1910 118 1911 955 1912 477 1913 956 1914 238 1915 957 1916 478 1917 958 1918 6 1919 959 1920 479 1921 960 1922 239 1923 961 1924 480 1925 962 1926 119 1927 963 1928 481 1929 964 1930 240 1931 965 1932 482 1933 966 1934 59 1935 967 1936 483 1937 968 1938 241 1939 969 1940 484 1941 970 1942 120 1943 971 1944 485 1945 972 1946 242 1947 973 1948 486 1949 974 1950 29 1951 975 1952 487 1953 976 1954 243 1955 977 1956 488 1957 978 1958 121 1959 979 1960 489 1961 980 1962 244 1963 981 1964 490 1965 982 1966 60 1967 983 1968 491 1969 984 1970 245 1971 985 1972 492 1973 986 1974 122 1975 987 1976 493 1977 988 1978 246 1979 989 1980 494 1981 990 1982 14 1983 991 1984 495 1985 992 1986 247 1987 993 1988 496 1989 994 1990 123 1991 995 1992 497 1993 996 1994 248 1995 997 1996 498 1997 998 1998 61 1999 999 499 1000 249 1001 500 1002 124 1003 501 1004 250 1005 502 1006 30 1007 503 1008 251 1009 504 1010 125 1011 505 1012 252 1013 506 1014 62 1015 507 1016 253 1017 508 1018 126 1019 509 1020 254 1021 510 1022\nTime taken (Recursive): 90465 microseconds\nNon-Recursive In-Order Traversal: 1023 511 1024 255 1025 512 1026 127 1027 513 1028 256 1029 514 1030 63 1031 515 1032 257 1033 516 1034 128 1035 517 1036 258 1037 518 1038 31 1039 519 1040 259 1041 520 1042 129 1043 521 1044 260 1045 522 1046 64 1047 523 1048 261 1049 524 1050 130 1051 525 1052 262 1053 526 1054 15 1055 527 1056 263 1057 528 1058 131 1059 529 1060 264 1061 530 1062 65 1063 531 1064 265 1065 532 1066 132 1067 533 1068 266 1069 534 1070 32 1071 535 1072 267 1073 536 1074 133 1075 537 1076 268 1077 538 1078 66 1079 539 1080 269 1081 540 1082 134 1083 541 1084 270 1085 542 1086 7 1087 543 1088 271 1089 544 1090 135 1091 545 1092 272 1093 546 1094 67 1095 547 1096 273 1097 548 1098 136 1099 549 1100 274 1101 550 1102 33 1103 551 1104 275 1105 552 1106 137 1107 553 1108 276 1109 554 1110 68 1111 555 1112 277 1113 556 1114 138 1115 557 1116 278 1117 558 1118 16 1119 559 1120 279 1121 560 1122 139 1123 561 1124 280 1125 562 1126 69 1127 563 1128 281 1129 564 1130 140 1131 565 1132 282 1133 566 1134 34 1135 567 1136 283 1137 568 1138 141 1139 569 1140 284 1141 570 1142 70 1143 571 1144 285 1145 572 1146 142 1147 573 1148 286 1149 574 1150 3 1151 575 1152 287 1153 576 1154 143 1155 577 1156 288 1157 578 1158 71 1159 579 1160 289 1161 580 1162 144 1163 581 1164 290 1165 582 1166 35 1167 583 1168 291 1169 584 1170 145 1171 585 1172 292 1173 586 1174 72 1175 587 1176 293 1177 588 1178 146 1179 589 1180 294 1181 590 1182 17 1183 591 1184 295 1185 592 1186 147 1187 593 1188 296 1189 594 1190 73 1191 595 1192 297 1193 596 1194 148 1195 597 1196 298 1197 598 1198 36 1199 599 1200 299 1201 600 1202 149 1203 601 1204 300 1205 602 1206 74 1207 603 1208 301 1209 604 1210 150 1211 605 1212 302 1213 606 1214 8 1215 607 1216 303 1217 608 1218 151 1219 609 1220 304 1221 610 1222 75 1223 611 1224 305 1225 612 1226 152 1227 613 1228 306 1229 614 1230 37 1231 615 1232 307 1233 616 1234 153 1235 617 1236 308 1237 618 1238 76 1239 619 1240 309 1241 620 1242 154 1243 621 1244 310 1245 622 1246 18 1247 623 1248 311 1249 624 1250 155 1251 625 1252 312 1253 626 1254 77 1255 627 1256 313 1257 628 1258 156 1259 629 1260 314 1261 630 1262 38 1263 631 1264 315 1265 632 1266 157 1267 633 1268 316 1269 634 1270 78 1271 635 1272 317 1273 636 1274 158 1275 637 1276 318 1277 638 1278 1 1279 639 1280 319 1281 640 1282 159 1283 641 1284 320 1285 642 1286 79 1287 643 1288 321 1289 644 1290 160 1291 645 1292 322 1293 646 1294 39 1295 647 1296 323 1297 648 1298 161 1299 649 1300 324 1301 650 1302 80 1303 651 1304 325 1305 652 1306 162 1307 653 1308 326 1309 654 1310 19 1311 655 1312 327 1313 656 1314 163 1315 657 1316 328 1317 658 1318 81 1319 659 1320 329 1321 660 1322 164 1323 661 1324 330 1325 662 1326 40 1327 663 1328 331 1329 664 1330 165 1331 665 1332 332 1333 666 1334 82 1335 667 1336 333 1337 668 1338 166 1339 669 1340 334 1341 670 1342 9 1343 671 1344 335 1345 672 1346 167 1347 673 1348 336 1349 674 1350 83 1351 675 1352 337 1353 676 1354 168 1355 677 1356 338 1357 678 1358 41 1359 679 1360 339 1361 680 1362 169 1363 681 1364 340 1365 682 1366 84 1367 683 1368 341 1369 684 1370 170 1371 685 1372 342 1373 686 1374 20 1375 687 1376 343 1377 688 1378 171 1379 689 1380 344 1381 690 1382 85 1383 691 1384 345 1385 692 1386 172 1387 693 1388 346 1389 694 1390 42 1391 695 1392 347 1393 696 1394 173 1395 697 1396 348 1397 698 1398 86 1399 699 1400 349 1401 700 1402 174 1403 701 1404 350 1405 702 1406 4 1407 703 1408 351 1409 704 1410 175 1411 705 1412 352 1413 706 1414 87 1415 707 1416 353 1417 708 1418 176 1419 709 1420 354 1421 710 1422 43 1423 711 1424 355 1425 712 1426 177 1427 713 1428 356 1429 714 1430 88 1431 715 1432 357 1433 716 1434 178 1435 717 1436 358 1437 718 1438 21 1439 719 1440 359 1441 720 1442 179 1443 721 1444 360 1445 722 1446 89 1447 723 1448 361 1449 724 1450 180 1451 725 1452 362 1453 726 1454 44 1455 727 1456 363 1457 728 1458 181 1459 729 1460 364 1461 730 1462 90 1463 731 1464 365 1465 732 1466 182 1467 733 1468 366 1469 734 1470 10 1471 735 1472 367 1473 736 1474 183 1475 737 1476 368 1477 738 1478 91 1479 739 1480 369 1481 740 1482 184 1483 741 1484 370 1485 742 1486 45 1487 743 1488 371 1489 744 1490 185 1491 745 1492 372 1493 746 1494 92 1495 747 1496 373 1497 748 1498 186 1499 749 1500 374 1501 750 1502 22 1503 751 1504 375 1505 752 1506 187 1507 753 1508 376 1509 754 1510 93 1511 755 1512 377 1513 756 1514 188 1515 757 1516 378 1517 758 1518 46 1519 759 1520 379 1521 760 1522 189 1523 761 1524 380 1525 762 1526 94 1527 763 1528 381 1529 764 1530 190 1531 765 1532 382 1533 766 1534 0 1535 767 1536 383 1537 768 1538 191 1539 769 1540 384 1541 770 1542 95 1543 771 1544 385 1545 772 1546 192 1547 773 1548 386 1549 774 1550 47 1551 775 1552 387 1553 776 1554 193 1555 777 1556 388 1557 778 1558 96 1559 779 1560 389 1561 780 1562 194 1563 781 1564 390 1565 782 1566 23 1567 783 1568 391 1569 784 1570 195 1571 785 1572 392 1573 786 1574 97 1575 787 1576 393 1577 788 1578 196 1579 789 1580 394 1581 790 1582 48 1583 791 1584 395 1585 792 1586 197 1587 793 1588 396 1589 794 1590 98 1591 795 1592 397 1593 796 1594 198 1595 797 1596 398 1597 798 1598 11 1599 799 1600 399 1601 800 1602 199 1603 801 1604 400 1605 802 1606 99 1607 803 1608 401 1609 804 1610 200 1611 805 1612 402 1613 806 1614 49 1615 807 1616 403 1617 808 1618 201 1619 809 1620 404 1621 810 1622 100 1623 811 1624 405 1625 812 1626 202 1627 813 1628 406 1629 814 1630 24 1631 815 1632 407 1633 816 1634 203 1635 817 1636 408 1637 818 1638 101 1639 819 1640 409 1641 820 1642 204 1643 821 1644 410 1645 822 1646 50 1647 823 1648 411 1649 824 1650 205 1651 825 1652 412 1653 826 1654 102 1655 827 1656 413 1657 828 1658 206 1659 829 1660 414 1661 830 1662 5 1663 831 1664 415 1665 832 1666 207 1667 833 1668 416 1669 834 1670 103 1671 835 1672 417 1673 836 1674 208 1675 837 1676 418 1677 838 1678 51 1679 839 1680 419 1681 840 1682 209 1683 841 1684 420 1685 842 1686 104 1687 843 1688 421 1689 844 1690 210 1691 845 1692 422 1693 846 1694 25 1695 847 1696 423 1697 848 1698 211 1699 849 1700 424 1701 850 1702 105 1703 851 1704 425 1705 852 1706 212 1707 853 1708 426 1709 854 1710 52 1711 855 1712 427 1713 856 1714 213 1715 857 1716 428 1717 858 1718 106 1719 859 1720 429 1721 860 1722 214 1723 861 1724 430 1725 862 1726 12 1727 863 1728 431 1729 864 1730 215 1731 865 1732 432 1733 866 1734 107 1735 867 1736 433 1737 868 1738 216 1739 869 1740 434 1741 870 1742 53 1743 871 1744 435 1745 872 1746 217 1747 873 1748 436 1749 874 1750 108 1751 875 1752 437 1753 876 1754 218 1755 877 1756 438 1757 878 1758 26 1759 879 1760 439 1761 880 1762 219 1763 881 1764 440 1765 882 1766 109 1767 883 1768 441 1769 884 1770 220 1771 885 1772 442 1773 886 1774 54 1775 887 1776 443 1777 888 1778 221 1779 889 1780 444 1781 890 1782 110 1783 891 1784 445 1785 892 1786 222 1787 893 1788 446 1789 894 1790 2 1791 895 1792 447 1793 896 1794 223 1795 897 1796 448 1797 898 1798 111 1799 899 1800 449 1801 900 1802 224 1803 901 1804 450 1805 902 1806 55 1807 903 1808 451 1809 904 1810 225 1811 905 1812 452 1813 906 1814 112 1815 907 1816 453 1817 908 1818 226 1819 909 1820 454 1821 910 1822 27 1823 911 1824 455 1825 912 1826 227 1827 913 1828 456 1829 914 1830 113 1831 915 1832 457 1833 916 1834 228 1835 917 1836 458 1837 918 1838 56 1839 919 1840 459 1841 920 1842 229 1843 921 1844 460 1845 922 1846 114 1847 923 1848 461 1849 924 1850 230 1851 925 1852 462 1853 926 1854 13 1855 927 1856 463 1857 928 1858 231 1859 929 1860 464 1861 930 1862 115 1863 931 1864 465 1865 932 1866 232 1867 933 1868 466 1869 934 1870 57 1871 935 1872 467 1873 936 1874 233 1875 937 1876 468 1877 938 1878 116 1879 939 1880 469 1881 940 1882 234 1883 941 1884 470 1885 942 1886 28 1887 943 1888 471 1889 944 1890 235 1891 945 1892 472 1893 946 1894 117 1895 947 1896 473 1897 948 1898 236 1899 949 1900 474 1901 950 1902 58 1903 951 1904 475 1905 952 1906 237 1907 953 1908 476 1909 954 1910 118 1911 955 1912 477 1913 956 1914 238 1915 957 1916 478 1917 958 1918 6 1919 959 1920 479 1921 960 1922 239 1923 961 1924 480 1925 962 1926 119 1927 963 1928 481 1929 964 1930 240 1931 965 1932 482 1933 966 1934 59 1935 967 1936 483 1937 968 1938 241 1939 969 1940 484 1941 970 1942 120 1943 971 1944 485 1945 972 1946 242 1947 973 1948 486 1949 974 1950 29 1951 975 1952 487 1953 976 1954 243 1955 977 1956 488 1957 978 1958 121 1959 979 1960 489 1961 980 1962 244 1963 981 1964 490 1965 982 1966 60 1967 983 1968 491 1969 984 1970 245 1971 985 1972 492 1973 986 1974 122 1975 987 1976 493 1977 988 1978 246 1979 989 1980 494 1981 990 1982 14 1983 991 1984 495 1985 992 1986 247 1987 993 1988 496 1989 994 1990 123 1991 995 1992 497 1993 996 1994 248 1995 997 1996 498 1997 998 1998 61 1999 999 499 1000 249 1001 500 1002 124 1003 501 1004 250 1005 502 1006 30 1007 503 1008 251 1009 504 1010 125 1011 505 1012 252 1013 506 1014 62 1015 507 1016 253 1017 508 1018 126 1019 509 1020 254 1021 510 1022\nTime taken (Non-Recursive): 81148 microseconds\nSummary:90465 81148\n```", + "text_sha256": "ee737d2898ab8533aa3706b30278a70cd37302ace4fc89c7adb29e0c08c1485d", + "knowledge_path": "knowledge/data_structure/data-structure-026.md", + "knowledge_sha256": "8ab23c21e67f044ded98ce1b3b794c5e986de664a9de384754f7addc4f798252" + }, + "data-structure-030:h-1:c01": { + "chunk_id": "data-structure-030:h-1:c01", + "course_id": "data_structure", + "source_id": "data-structure-030", + "source_title": "1", + "heading_path": [ + "1" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "```text\n\nDeep Residual Learning for Image Recognition\n\nKaiming He Xiangyu Zhang Shaoqing Ren Jian Sun\nMicrosoft Research\n{kahe, v-xiangz, v-shren, jiansun}@microsoft.com\n\nAbstract\nDeeper neural networks are more difficult to train. We present a residual learning framework to ease the training of networks that are substantially deeper than those used previously. We explicitly reformulate the layers as learn- ing residual functions with reference to the layer inputs, in- stead of learning unreferenced functions. We provide com- prehensive empirical evidence showing that these residual networks are easier to optimize, and can gain accuracy from considerably increased depth. On the ImageNet dataset we evaluate residual nets with a depth of up to 152 layers—8e deeper than VGG nets [41] but still having lower complex- ity. An ensemble of these residual nets achieves 3.57% error on the ImageNet test set. This result won the 1st place on the ILSVRC 2015 classification task. We also present analysis on CIFAR-10 with 100 and 1000 layers.\nThe depth of representations is of central importance for many visual recognition tasks. Solely due to our ex- tremely deep representations, we obtain a 28% relative im- provement on the COCO object detection dataset. Deep residual nets are foundations of our submissions to ILSVRC & COCO 2015 competitions1, where we also won the 1st places on the tasks of ImageNet detection, ImageNet local- ization, COCO detection, and COCO segmentation.\n\n1. Introduction\nDeep convolutional neural networks [22, 21] have led to a series of breakthroughs for image classification [21, 50, 40]. Deep networks naturally integrate low/mid/high- level features [50] and classifiers in an end-to-end multi- layer fashion, and the “levels” of features can be enriched by the number of stacked layers (depth). Recent evidence [41,44] reveals that network depth is of crucial importance, and the leading results [41, 44, 13, 16] on the challenging ImageNet dataset [36] all exploit “very deep” [41] models, with a depth of sixteen [41] to thirty [16]. Many other non- trivial visual recognition tasks [8, 12, 7, 32, 27] have also\n1 http://image-net.org/challenges/LSVRC/2015/ and http://mscoco.org/dataset/#detections-challenge2015.\n\n2\niter. (1e4)\nFigure 1. Training error (left) and test error (right) on CIFAR-10 with 20-layer and 56-layer “plain” networks. The deeper network has higher training error, and thus test error. Similar phenomena on ImageNet is presented in Fig. 4.\ngreatly benefited from very deep models.\nDriven by the significance of depth, a question arises: Is learning better networks as easy as stacking more layers?\nAn obstacle to answering this question was the notorious problem of vanishing/exploding gradients [1, 9], which hamper convergence from the beginning. This problem, however, has been largely addressed by normalized initial- ization [23,9,37,13] and intermediate normalization layers [16], which enable networks with tens of layers to start con- verging for stochastic gradient descent (SGD) with back- propagation [22].\nWhen deeper networks are able to start converging, a degradation problem has been exposed: with the network depth increasing, accuracy gets saturated (which might be unsurprising) and then degrades rapidly. Unexpectedly, such degradation is not caused by overfitting, and adding more layers to a suitably deep model leads to higher train- ing error, as reported in [11,42] and thoroughly verified by our experiments. Fig. 1 shows a typical example.\nThe degradation (of training accuracy) indicates that not all systems are similarly easy to optimize. Let us consider a shallower architecture and its deeper counterpart that adds more layers onto it. There exists a solution by construction to the deeper model: the added layers are identity mapping, and the other layers are copied from the learned shallower model. The existence of this constructed solution indicates that a deeper model should produce no higher training error than its shallower counterpart. But experiments show that our current solvers on hand are unable to find solutions that\n\nF(x)\n\nF(x)\tx \n\nweight layer\n\trelu\nweight layer\n+ x \t\n\nx\nidentity\nFigure 2. Residual learning: a building block.\nare comparably good or better than the constructed solution (or unable to do so infeasible time).\nIn this paper, we address the degradation problem by introducing a deep residual learning framework. In- stead of hoping each few stacked layers directly fit a desired underlying mapping, we explicitly let these lay- ers fit a residual mapping. Formally, denoting the desired underlying mapping as H(x), we let the stacked nonlinear layers fit another mapping of r(x) := H(x) xx. The orig- inal mapping is recast into r(x)+x. We hypothesize that it is easier to optimize the residual mapping than to optimize the original, unreferenced mapping. To the extreme, if an identity mapping were optimal, it would be easier to push the residual to zero than to fit an identity mapping by a stack of nonlinear layers.\nThe formulation of r(x)+ x can be realized by feedfor- ward neural networks with “shortcut connections” (Fig. 2). Shortcut connections [2, 34, 49] are those skipping one or more layers. In our case, the shortcut connections simply perform identity mapping, and their outputs are added to the outputs of the stacked layers (Fig. 2). Identity short- cut connections add neither extra parameter nor computa- tional complexity. The entire network can still be trained end-to-end by SGD with backpropagation, and can be eas- ily implemented using common libraries (e.g., Caffe [19]) without modifying the solvers.\nWe present comprehensive experiments on ImageNet [36] to show the degradation problem and evaluate our method. We show that: 1) Our extremely deep residual nets are easy to optimize, but the counterpart “plain” nets (that simply stack layers) exhibit higher training error when the depth increases; 2) Our deep residual nets can easily enjoy accuracy gains from greatly increased depth, producing re- sults substantially better than previous networks.\nSimilar phenomena are also shown on the CIFAR-10 set [20], suggesting that the optimization difficulties and the effects of our method are not just akin to a particular dataset. We present successfully trained models on this dataset with over 100 layers, and explore models with over 1000 layers.\nOn the ImageNet classification dataset [36], we obtain excellent results by extremely deep residual nets. Our 152- layer residual net is the deepest network ever presented on ImageNet, while still having lower complexity than VGG nets [41]. Our ensemble has 3.57% top-5 error on the\n\nImageNet test set, and won the 1st place in the ILSVRC 2015 classification competition. The extremely deep rep- resentations also have excellent generalization performance on other recognition tasks, and lead us to further win the 1st places on: ImageNet detection, ImageNet localization, COCO detection, and COCO segmentation in ILSVRC & COCO 2015 competitions. This strong evidence shows that the residual learning principle is generic, and we expect that it is applicable in other vision and non-vision problems.\n\n2. Related Work\nResidual Representations. In image recognition, VLAD [18] is a representation that encodes by the residual vectors with respect to a dictionary, and Fisher Vector [30] can be formulated as a probabilistic version [18] of VLAD. Both of them are powerful shallow representations for image re- trieval and classification [4, 48]. For vector quantization, encoding residual vectors [17] is shown to be more effec- tive than encoding original vectors.\nIn low-level vision and computer graphics, for solv- ing Partial Differential Equations (PDEs), the widely used Multigrid method [3] reformulates the system as subprob- lems at multiple scales, where each subproblem is respon- sible for the residual solution between a coarser and a finer scale. An alternative to Multigrid is hierarchical basis pre- conditioning [45, 46], which relies on variables that repre- sent residual vectors between two scales. It has been shown [3,45,46] that these solvers converge much faster than stan- dard solvers that are unaware of the residual nature of the solutions. These methods suggest that a good reformulation or preconditioning can simplify the optimization.\nShortcut Connections. Practices and theories that lead to shortcut connections [2,34,49] have been studied for a long time. An early practice of training multi-layer perceptrons (MLPs) is to add a linear layer connected from the network input to the output [34, 49]. In [44, 24], a few interme- diate layers are directly connected to auxiliary classifiers for addressing vanishing/exploding gradients. The papers of [39, 38, 31, 47] propose methods for centering layer re- sponses, gradients, and propagated errors, implemented by shortcut connections. In [44], an “inception” layer is com- posed of a shortcut branch and a few deeper branches.\nConcurrent with our work, “highway networks” [42,43] present shortcut connections with gating functions [15]. These gates are data-dependent and have parameters, in contrast to our identity shortcuts that are parameter-free. When a gated shortcut is “closed” (approaching zero), the layers in highway networks represent non-residual func- tions. On the contrary, our formulation always learns residual functions; our identity shortcuts are never closed, and all information is always passed through, with addi- tional residual functions to be learned. In addition, high-\n\nway networks have not demonstrated accuracy gains with extremely increased depth (e.g., over 100 layers).\n3. Deep Residual Learning\n3.1. Residual Learning\nLet us consider H(x) as an underlying mapping to be fit by a few stacked layers (not necessarily the entire net), with xdenoting the inputs to the first of these layers. If one hypothesizes that multiple nonlinear layers can asymptoti- cally approximate complicated functions2 , then it is equiv- alent to hypothesize that they can asymptotically approxi- mate the residual functions, i.e., H(x) xx (assuming that the input and output are of the same dimensions). So rather than expect stacked layers to approximate H(x), we explicitly let these layers approximate a residual function r(x) := H(x) x x. The original function thus becomes r(x)+x. Although both forms should be able to asymptot- ically approximate the desired functions (as hypothesized), the ease of learning might be different.\nThis reformulation is motivated by the counterintuitive phenomena about the degradation problem (Fig. 1, left). As we discussed in the introduction, if the added layers can be constructed as identity mappings, a deeper model should have training error no greater than its shallower counter- part. The degradation problem suggests that the solvers might have difficulties in approximating identity mappings by multiple nonlinear layers. With the residual learning re- formulation, if identity mappings are optimal, the solvers may simply drive the weights of the multiple nonlinear lay- ers toward zero to approach identity mappings.\nIn real cases, it is unlikely that identity mappings are op- timal, but our reformulation may help to precondition the problem. If the optimal function is closer to an identity mapping than to a zero mapping, it should be easier for the solver to find the perturbations with reference to an identity mapping, than to learn the function as a new one. We show by experiments (Fig.7) that the learned residual functions in general have small responses, suggesting that identity map- pings provide reasonable preconditioning.\n3.2. Identity Mapping by Shortcuts\nWe adopt residual learning to every few stacked layers. A building block is shown in Fig. 2. Formally, in this paper we consider a building block defined as:\ny = r(x, {Wi }) + x. (1)\nHere x and y are the input and output vectors of the lay- ers considered. The function r(x, {Wi }) represents the residual mapping to be learned. For the example in Fig. 2 that has two layers, r = W2 σ(W1x) in which σ denotes\n2This hypothesis, however, is still an open question. See [28].\n\nReLU [29] and the biases are omitted for simplifying no- tations. The operation r + x is performed by a shortcut connection and element-wise addition. We adopt the sec- ond nonlinearity after the addition (i.e., σ(y), see Fig.2).\nThe shortcut connections in Eqn.(1) introduce neither ex- tra parameter nor computation complexity. This is not only attractive in practice but also important in our comparisons between plain and residual networks. We can fairly com- pare plain/residual networks that simultaneously have the same number of parameters, depth, width, and computa- tional cost (except for the negligible element-wise addition). \tThe dimensions of x and r must be equal in Eqn.(1). If this is not the case (e.g., when changing the input/output channels), we can perform a linear projection Ws by the\nshortcut connections to match the dimensions:\ny = r(x, {Wi }) + Wsx. (2)\nWe can also use a square matrix Ws in Eqn.(1). But we will show by experiments that the identity mapping is sufficient for addressing the degradation problem and is economical, and thus Ws is only used when matching dimensions.\nThe form of the residual function r is flexible. Exper- iments in this paper involve a function r that has two or three layers (Fig. 5), while more layers are possible. But if r has only a single layer, Eqn.(1) is similar to a linear layer: y = W1x + x, for which we have not observed advantages. \tWe also note that although the above notations are about fully-connected layers for simplicity, they are applicable to convolutional layers. The function r(x, {Wi }) can repre- sent multiple convolutional layers. The element-wise addi- tion is performed on two feature maps, channel by channel.\n3.3. Network Architectures\nWe have tested various plain/residual nets, and have ob- served consistent phenomena. To provide instances fordis- cussion, we describe two models for ImageNet as follows.\nPlain Network. Our plain baselines (Fig. 3, middle) are mainly inspired by the philosophy of VGG nets [41] (Fig.3, left). The convolutional layers mostly have 3e3 filters and follow two simple design rules: (i) for the same output feature map size, the layers have the same number of fil- ters; and (ii) if the feature map size is halved, the num- ber of filters is doubled so as to preserve the time com- plexity per layer. We perform downsampling directly by convolutional layers that have a stride of 2. The network ends with a global average pooling layer and a 1000-way fully-connected layer with softmax. The total number of weighted layers is 34 in Fig. 3 (middle).\nIt is worth noticing that our model has fewer filters and lower complexity than VGG nets [41] (Fig.3, left). Our 34- layer baseline has 3.6 billion FLOPs (multiply-adds), which is only 18% of VGG-19 (19.6 billion FLOPs).\n\n34-layer plain\nimage\n\n3x3 conv, 64\n\n3x3 conv, 64\npool, /2\n\n3x3 conv, 128\n\n3x3 conv, 128\npool, /2\n\n3x3 conv, 256\n\n3x3 conv, 256\n\n3x3 conv, 256\n\n3x3 conv, 64\n\n3x3 conv, 64\n\t3x3 conv, 128, /2 \n\n3x3 conv, 128\n\t3x3 conv, 128 \n\n3x3 conv, 128\n\n3x3 conv, 128\n\n3x3 conv, 128\n\n3x3 conv, 128\n\n3x3 conv, 128\n\t3x3 conv, 256, /2 \n\n3x3 conv, 256\n\n3x3 conv, 256\n\n3x3 conv, 256\n\n3x3 conv, 256\n\n3x3 conv, 256\n\n3x3 conv, 256\n\n3x3 conv, 256\n\n3x3 conv, 256\n\n3x3 conv, 256\n\n3x3 conv, 256\n\n3x3 conv, 256\n\n3x3 conv, 512, /2\n\n3x3 conv, 512\n\n3x3 conv, 512\n\n3x3 conv, 512\n\n3x3 conv, 512\navg pool\n\nFigure 3. Example network architectures for ImageNet. Left: the VGG-19 model [41] (19.6 billion FLOPs) as a reference. Mid- dle: a plain network with 34 parameter layers (3.6 billion FLOPs). Right: a residual network with 34 parameter layers (3.6 billion FLOPs). The dotted shortcuts increase dimensions. Table 1shows more details and other variants.\n\nResidual Network. Based on the above plain network, we insert shortcut connections (Fig. 3, right) which turn the network into its counterpart residual version. The identity shortcuts (Eqn.(1)) can be directly used when the input and output are of the same dimensions (solid line shortcuts in Fig.3). When the dimensions increase (dotted line shortcuts in Fig. 3), we consider two options: (A) The shortcut still performs identity mapping, with extra zero entries padded for increasing dimensions. This option introduces no extra parameter; (B) The projection shortcut in Eqn.(2) is used to match dimensions (done by 1e1 convolutions). For both options, when the shortcuts go across feature maps of two sizes,they are performed with a stride of 2.\n3.4. Implementation\nOur implementation for ImageNet follows the practice in [21, 41]. The image is resized with its shorter side ran- domly sampled in [256, 480] for scale augmentation [41]. A 224e224 crop is randomly sampled from an image or its horizontal flip, with the per-pixel mean subtracted [21]. The standard color augmentation in [21] is used. We adopt batch normalization (BN) [16] right after each convolution and before activation, following [16]. We initialize the weights as in [13] and train all plain/residual nets from scratch. We use SGD with a mini-batch size of 256. The learning rate starts from 0.1 and is divided by 10 when the error plateaus, and the models are trained for up to 60 e 104 iterations. We use a weight decay of 0.0001 and a momentum of 0.9. We do not use dropout [14], following the practice in [16].\nIn testing, for comparison studies we adopt the standard 10-crop testing [21]. For best results, we adopt the fully- convolutional form as in [41, 13], and average the scores at multiple scales (images are resized such that the shorter side is in {224, 256, 384, 480, 640}).\n4. Experiments\n4.1. ImageNet Classification\nWe evaluate our method on the ImageNet 2012 classifi- cation dataset [36] that consists of 1000 classes. The models are trained on the 1.28 million training images, and evalu- ated on the 50k validation images. We also obtain a final result on the 100k test images, reported by the test server. We evaluate both top-1 and top-5 error rates.\nPlain Networks. We first evaluate 18-layer and 34-layer plain nets. The 34-layer plain net is in Fig. 3 (middle). The 18-layer plain net is of a similar form. See Table 1 for de- tailed architectures.\nThe results in Table 2show that the deeper 34-layer plain net has higher validation error than the shallower 18-layer plain net. To reveal the reasons, in Fig. 4 (left) we com- pare their training/validation errors during the training pro- cedure. We have observed the degradation problem - the\n\nlayer name\toutput size\t\t18-layer\t34-layer\t50-layer\t101-layer\t152-layer\nconv1\t112e112\t\t7e7, 64, stride 2\nconv2 x\t56e56\t\t3e3 max pool, stride 2\n\t\t[\t3e3, 64 ] e2\t[ ] e3\tl i\t1e1, 64 3e3, 64 1e1, 256\t」\nle3\tl i\t1e1, 64 3e3, 64 1e1, 256\t」\nle3\tl i\t1e1, 64 3e3, 64 1e1, 256\t」\nle3\nconv3 x\t28e28\t[\t3e3, 128 ] e2\t[ ] e4\tl i\t1e1, 128 3e3, 128 1e1, 512\t」\nle4\tl i\t1e1, 128 3e3, 128 1e1, 512\t」\nle4\tl i\t1e1, 128 3e3, 128 1e1, 512\t」\nle8\nconv4 x\t14e14\t[\t3e3, 256 ] e2\t[ ] e6\tl\ni\t1e1, 256 3e3, 256 1e1, 1024\t」\nle6\tl\ni\t1e1, 256 3e3, 256 1e1, 1024\t」 l\te23\tl\ni\t1e1, 256 3e3, 256 1e1, 1024\t」 l\te36\nconv5 x\t7e7\t[\t3e3, 512 ] e2\t[ ] e3\tl\ni\t1e1, 512 3e3, 512 1e1, 2048\t」\nle3\tl i\t1e1, 512 3e3, 512 1e1, 2048\t」\nle3\tl i\t1e1, 512 3e3, 512 1e1, 2048\t」\nle3\n\t1e1\t\taverage pool, 1000-d fc, softmax\nFLOPs\t1.8e109\t3.6e109\t3.8e109\t7.6e109\t11.3e109\nTable 1. Architectures for ImageNet. Building blocks are shown in brackets (see also Fig. 5), with the numbers of blocks stacked. Down- sampling is performed by conv3 1, conv4 1, and conv5 1 with a stride of 2.\n\n20\niter. (1e4)\n\n20\niter. (1e4)\n\nFigure 4. Training on ImageNet. Thin curves denote training error, and bold curves denote validation error of the center crops. Left: plain networks of 18 and 34 layers. Right: ResNets of 18 and 34 layers. In this plot, the residual networks have no extra parameter compared to their plain counterparts.\n\n\tplain\tResNet\n18 layers 34 layers\t27.94\n28.54\t27.88\n25.03\nTable 2. Top-1 error (%, 10-crop testing) on ImageNet validation. Here the ResNets have no extra parameter compared to their plain counterparts. Fig. 4 shows the training procedures.\n\n34-layer plain net has higher training error throughout the whole training procedure, even though the solution space of the 18-layer plain network is a subspace of that of the 34-layer one.\nWe argue that this optimization difficulty is unlikely to becausedby vanishing gradients. These plain networks are trained with BN [16], which ensures forward propagated signals to have non-zero variances. We also verify that the backward propagated gradients exhibit healthy norms with BN. So neither forward nor backward signals vanish. In fact, the 34-layer plain net is still able to achieve compet- itive accuracy (Table 3), suggesting that the solver works to some extent. We conjecture that the deep plain nets may have exponentially low convergence rates, which impact the\n\nreducing of the training error3 . The reason for such opti- mization difficulties will be studied in the future.\nResidual Networks. Next we evaluate 18-layer and 34- layer residual nets (ResNets). The baseline architectures are the same as the above plain nets, expect that a shortcut connection is added to each pair of 3e3 filters as in Fig.3 (right). In the first comparison (Table 2 and Fig. 4 right), we use identity mapping for all shortcuts and zero-padding for increasing dimensions (option A). So they have no extra parameter compared to the plain counterparts.\nWe have three major observations from Table 2 and Fig. 4. First, the situation is reversed with residual learn- ing – the 34-layer ResNet is better than the 18-layer ResNet (by 2.8%). More importantly, the 34-layer ResNet exhibits considerably lower training error and is generalizable to the validation data. This indicates that the degradation problem is well addressed in this setting and we manage to obtain accuracy gains from increased depth.\nSecond, compared to its plain counterpart, the 34-layer\n3We have experimented with more training iterations (3×) and still ob- served the degradation problem, suggesting that this problem cannot be feasibly addressed by simply using more iterations.\n\nmodel\ttop-1 err.\ttop-5 err.\nVGG-16 [41]\t28.07\t9.33\nGoogLeNet [44]\t-\t9.15\nPReLU-net [13]\t24.27\t7.38\nplain-34\t28.54\t10.02\nResNet-34 A\t25.03\t7.76\nResNet-34 B\t24.52\t7.46\nResNet-34 C\t24.19\t7.40\nResNet-50\t22.85\t6.71\nResNet-101\t21.75\t6.05\nResNet-152\t21.43\t5.71\nTable 3. Error rates (%, 10-crop testing) on ImageNet validation. VGG-16 is based on our test. ResNet-50/101/152 are of option B that only uses projections for increasing dimensions.\n\nmethod\ttop-1 err.\ttop-5 err.\nVGG [41] (ILSVRC’14)\t-\t8.43+\nGoogLeNet [44] (ILSVRC’14)\t-\t7.89\nVGG [41] (v5)\t24.4\t7.1\nPReLU-net [13]\t21.59\t5.71\nBN-inception [16]\t21.99\t5.81\nResNet-34 B\t21.84\t5.71\nResNet-34 C\t21.53\t5.60\nResNet-50\t20.74\t5.25\nResNet-101\t19.87\t4.60\nResNet-152\t19.38\t4.49\nTable 4. Error rates (%) of single-model results on the ImageNet validation set (except + reported on the test set).\n\nmethod\ttop-5 err. (test)\nVGG [41] (ILSVRC’14)\nGoogLeNet [44] (ILSVRC’14)\t7.32\n6.66\nVGG [41] (v5)\nPReLU-net [13]\nBN-inception [16]\t6.8\n4.94\n4.82\nResNet (ILSVRC’15)\t3.57\nTable 5. Error rates (%) of ensembles. The top-5 error is on the test set of ImageNet and reported by the test server.\n\nResNet reduces the top-1 error by 3.5% (Table 2), resulting from the successfully reduced training error (Fig. 4right vs. left). This comparison verifies the effectiveness of residual learning on extremely deep systems.\nLast, we also note that the 18-layer plain/residual nets are comparably accurate (Table 2), but the 18-layer ResNet converges faster (Fig. 4right vs. left). When the net is “not overly deep” (18 layers here), the current SGD solver is still able to find good solutions to the plain net. In this case, the ResNet eases the optimization by providing faster conver- gence at the early stage.\nIdentity vS. Projection Shortcuts. We have shown that\n\n256-d\n\nrelu\n\nFigure 5. A deeper residual function 丰 for ImageNet. Left: a building block (on 56k56 feature maps) as in Fig.3 for ResNet- 34. Right: a “bottleneck” building block for ResNet-50/101/152.\n\nparameter-free, identity shortcuts help with training. Next we investigate projection shortcuts (Eqn.(2)). In Table3 we compare three options: (A) zero-padding shortcuts are used for increasing dimensions, and all shortcuts are parameter- free (the same as Table 2 and Fig. 4 right); (B) projec- tion shortcuts are used for increasing dimensions, and other shortcuts are identity; and (C) all shortcuts are projections.\nTable 3shows that all three options are considerably bet- ter than the plain counterpart. B is slightly better than A. We argue that this is because the zero-padded dimensions in A indeed have no residual learning. C is marginally better than B, and we attribute this to the extra parameters introduced by many (thirteen) projection shortcuts. But the small dif- ferences among A/B/C indicate that projection shortcuts are not essential for addressing the degradation problem. So we do not use option C in the rest of this paper, to reduce mem- ory/time complexity and model sizes. Identity shortcuts are particularly important for not increasing the complexity of the bottleneck architectures that are introduced below.\nDeeper Bottleneck Architectures. Next we describe our deeper nets for ImageNet. Because of concerns on the train- ing time that we can afford, we modify the building block as a bottleneck design4 . For each residual function r, we use a stack of 3 layers instead of 2 (Fig. 5). The three layers are 1e1, 3e3, and 1e1 convolutions, where the 1e1 layers are responsible for reducing and then increasing (restoring) dimensions, leaving the 3e3 layer a bottleneck with smaller input/output dimensions. Fig. 5 shows an example, where both designs have similar time complexity.\nThe parameter-free identity shortcuts are particularly im- portant for the bottleneck architectures. If the identity short- cut in Fig. 5 (right) is replaced with projection, one can show that the time complexity and model size are doubled, as the shortcut is connected to the two high-dimensional ends. So identity shortcuts lead to more efficient models for the bottleneck designs.\n50-layer ResNet: We replace each 2-layer block in the\n4Deeper non-bottleneck ResNets (e.g., Fig. 5 left) also gain accuracy from increased depth (as shown on CIFAR-10), but are not as economical as the bottleneck ResNets. So the usage of bottleneck designs is mainly due to practical considerations. We further note that the degradation problem of plain nets is also witnessed for the bottleneck designs.\n\n34-layer net with this 3-layer bottleneck block, resulting in a 50-layer ResNet (Table 1). We use option B for increasing dimensions. This model has 3.8 billion FLOPs.\n101-layer and 152-layer ResNets: We construct 101- layer and 152-layer ResNets by using more 3-layer blocks (Table 1). Remarkably, although the depth is significantly increased, the 152-layer ResNet (11.3 billion FLOPs) still has lower complexity than VGG-16/19 nets (15.3/19.6 bil- lion FLOPs).\nThe 50/101/152-layer ResNets are more accurate than the 34-layer ones by considerable margins (Table 3 and 4). We do not observe the degradation problem and thus en- joy significant accuracy gains from considerably increased depth. The benefits of depth are witnessed for all evaluation metrics (Table 3 and 4).\nComparisons with State-of-the-art Methods. In Table 4 we compare with the previous best single-model results. Our baseline 34-layer ResNets have achieved very compet- itive accuracy. Our 152-layer ResNet has a single-model top-5 validation error of 4.49%. This single-model result outperforms all previous ensemble results (Table 5). We combine six models of different depth to form an ensemble (only with two 152-layer ones at the time of submitting). This leads to 3.57% top-5 error on the test set (Table 5).\nThis entry won the 1st place in ILSVRC 2015.\n4.2. CIFAR-10 and Analysis\nWe conducted more studies on the CIFAR-10 dataset [20], which consists of 50k training images and 10k test- ing images in 10 classes. We present experiments trained on the training set and evaluated on the test set. Our focus is on the behaviors of extremely deep networks, but not on pushing the state-of-the-art results, so we intentionally use simple architectures as follows.\nThe plain/residual architectures follow the form in Fig. 3 (middle/right). The network inputs are 32e32 images, with the per-pixel mean subtracted. The first layer is 3e3 convo- lutions. Then we use a stack of 6nlayers with 3e3 convo- lutions on the feature maps of sizes {32, 16, 8} respectively, with 2n layers for each feature map size. The numbers of filters are {16, 32, 64} respectively. The subsampling is per- formed by convolutions with a stride of 2. The network ends with a global average pooling, a 10-way fully-connected layer, and softmax. There are totally 6n+2 stacked weighted layers. The following table summarizes the architecture:\n\noutput map size\t32k32\t16k16\t8k8\n# layers\n# filters\t1+2F\n16\t2F\n32\t2F\n64\nWhen shortcut connections are used, they are connected to the pairs of 3e3 layers (totally 3n shortcuts). On this dataset we use identity shortcuts in all cases (i.e., option A),\n\nmethod\terror (%)\nMaxout [10]\nNIN [25]\nDSN [24]\t9.38\n8.81\n8.22\n\t# layers\t# params\t\nFitNet [35]\nHighway [42,43] Highway [42,43]\t19\n19\n32\t2.5M\n2.3M\n1.25M\t8.39\n7.54 (7.72士0.16) 8.80\nResNet\nResNet\nResNet\nResNet\nResNet\nResNet\t20\n32\n44\n56\n110\n1202\t0.27M\n0.46M\n0.66M\n0.85M\n1.7M\n19.4M\t8.75\n7.51\n7.17\n6.97\n6.43 (6.61士0.16) 7.93\nTable 6. Classification error on the CIFAR-10 test set. All meth- ods are with data augmentation. For ResNet-110, we run it 5 times and show “best (mean干std)” as in [43].\n\nso our residual models have exactly the same depth, width, and number of parameters as the plain counterparts.\nWe use a weight decay of 0.0001 and momentum of 0.9, and adopt the weight initialization in [13] and BN [16] but with no dropout. These models are trained with a mini- batch size of 128 on two GPUs. We start with a learning rate of 0.1, divide it by 10 at 32k and 48k iterations, and terminate training at 64k iterations, which is determined on a 45k/5k train/val split. We follow the simple data augmen- tation in [24] for training: 4 pixels are padded on each side, and a 32e32 crop is randomly sampled from the padded image or its horizontal flip. For testing, we only evaluate the single view of the original 32e32 image.\nWe compare n = {3, 5, 7, 9}, leading to 20, 32, 44, and 56-layer networks. Fig. 6 (left) shows the behaviors of the plain nets. The deep plain nets suffer from increased depth, and exhibit higher training error when going deeper. This phenomenon is similar to that on ImageNet (Fig. 4, left) and on MNIST (see [42]), suggesting that such an optimization difficultyis a fundamental problem.\nFig. 6 (middle) shows the behaviors of ResNets. Also similar to the ImageNet cases (Fig. 4, right), our ResNets manage to overcome the optimization difficulty and demon- strate accuracy gains when the depth increases.\nWe further explore n = 18 that leads to a 110-layer ResNet. In this case, we find that the initial learning rate of 0. 1 is slightly too large to start converging5 . So we use 0.01 to warm up the training until the training error is below 80% (about 400 iterations), and thengo back to 0.1 and con- tinue training. The rest of the learning schedule is as done previously. This 110-layer network converges well (Fig. 6, middle). It has fewer parameters than other deep and thin\n5With an initial learning rate of 0.1, it starts converging (<90% error) after several epochs, but still reaches similar accuracy.\n\n\t ResNet-20 ResNet-32 ResNet-44 ResNet-56 \t ResNet-110\n\t\n\t20-layer\n110-layer\n\t\n\n2\n\n4 5 6\n\niter. (1e4) iter. (1e4) iter. (1e4)\nFigure 6. Training on CIFAR-10. Dashed lines denote training error, and bold lines denote testing error. Left: plain networks. The error of plain-110 is higher than 60% and not displayed. Middle: ResNets. Right: ResNets with 110 and 1202 layers.\n\n3\n2\n\n1\n0 20 40 60 80 100\nlayer index (original)\n\n\t plain-20\n\t plain-56\n\t ResNet-20 \t ResNet-56 \t ResNet-110\n\n0 20 40 60 80 100\nlayer index (sorted by magnitude)\nFigure 7. Standard deviations (std) of layer responses on CIFAR- 10. The responses are the outputs of each 3k3 layer, after BN and before nonlinearity. Top: the layers are shown in their original order. Bottom: the responses are ranked in descending order.\n\nnetworks such as FitNet [35] and Highway [42] (Table 6), yet is among the state-of-the-art results (6.43%, Table 6). Analysis of Layer Responses. Fig. 7 shows the standard deviations (std) of the layer responses. The responses are the outputs of each 3e3 layer, after BN and before other nonlinearity (ReLU/addition). For ResNets, this analy- sis reveals the response strength of the residual functions.\nFig. 7 shows that ResNets have generally smaller responses than their plain counterparts. These results support our ba- sic motivation (Sec.3.1) that the residual functions might be generally closer to zero than the non-residual functions. We also notice that the deeper ResNet has smaller magni- tudes of responses, as evidenced by the comparisons among ResNet-20, 56, and 110 in Fig. 7. When there are more layers, an individual layer of ResNets tends to modify the signal less.\nExploring Over 1000 layers. We explore an aggressively deep model of over 1000 layers. We set n = 200 that leads to a 1202-layer network, which is trained as described above. Our method shows no optimization difficulty, and this 103 -layer network is able to achieve training error <0.1% (Fig. 6, right). Its test error is still fairly good (7.93%, Table 6).\nBut there are still open problems on such aggressively deep models. The testing result of this 1202-layer network is worse than that of our 110-layer network, although both\n\ntraining data\t07+12\t07++12\ntest data\tVOC 07 test\tVOC 12 test\nVGG-16\t73.2\t70.4\nResNet-101\t76.4\t73.8\nTable 7. Object detection mAP (%) on the PASCAL VOC 2007/2012 test sets using baseline Faster R-CNN. See also Ta- ble 10 and 11for better results.\n\nmetric\tmAP@.5\tmAP@[.5, .95]\nVGG-16\nResNet-101\t41.5\n48.4\t21.2\n27.2\nTable 8. Object detection mAP (%) on the COCO validation set using baseline Faster R-CNN. See also Table9for better results.\n\nhave similar training error. We argue that this is because of overfitting. The 1202-layer network may be unnecessarily large (19.4M) for this small dataset. Strong regularization such as maxout [10] or dropout [14] is applied to obtain the best results ([10, 25, 24, 35]) on this dataset. In this paper, we use no maxout/dropout and just simply impose regular- ization via deep and thin architectures by design, without distracting from the focus on the difficulties of optimiza- tion. But combining with stronger regularization may im- prove results, which we will study in the future.\n4.3. Object Detection on PASCAL and MS COCO\nOur method has good generalization performance on other recognition tasks. Table 7 and 8 show the object de- tection baseline results on PASCAL VOC 2007 and 2012 [5] and COCO [26]. We adopt Faster R-CNN [32] as the de- tection method. Here we are interested in the improvements of replacing VGG-16 [41] with ResNet-101. The detection implementation (see appendix) of using both models is the same, so the gains can only be attributed to better networks. Most remarkably, on the challenging COCO dataset we ob- tain a 6.0% increase in COCO’s standard metric (mAP@[.5, .95]), which is a 28% relative improvement. This gain is solely due to the learned representations.\nBased on deep residual nets, we won the 1st places in several tracks in ILSVRC & COCO 2015 competitions: Im- ageNet detection, ImageNet localization, COCO detection, and COCO segmentation. The details are in the appendix.\n\nReferences\n[1] Y. Bengio, P. Simard, and P. Frasconi. Learning long-term dependen- cies with gradient descent is difficult. IEEE Transactions on Neural Networks, 5(2):157–166, 1994.\n[2] C. M. Bishop. Neural networks for pattern recognition. Oxford university press, 1995.\n[3] W. L. Briggs, S. F. McCormick, et al. A Multigrid Tutorial. Siam, 2000.\n[4] K. Chatfield, V. Lempitsky, A. Vedaldi, and A. Zisserman. The devil is in the details: an evaluation of recent feature encoding methods. In BMVC, 2011.\n[5] M. Everingham, L. Van Gool, C. K. Williams, J. Winn, and A. Zis- serman. The Pascal Visual Object Classes (VOC) Challenge. IJCV, pages 303–338, 2010.\n[6] S. Gidaris and N. Komodakis. Object detection via a multi-region & semantic segmentation-aware cnn model. In ICCV, 2015.\n[7] R. Girshick. Fast R-CNN. In ICCV, 2015.\n[8] R. Girshick, J. Donahue, T. Darrell, and J. Malik. Rich feature hier- archies for accurate object detection and semantic segmentation. In CVPR, 2014.\n[9] X. Glorot and Y. Bengio. Understanding the difficulty of training deep feedforward neural networks. In AISTATS, 2010.\n[10] I. J. Goodfellow, D. Warde-Farley, M. Mirza, A. Courville, and Y. Bengio. Maxout networks. arXiv:1302.4389, 2013.\n[11] K. He and J. Sun. Convolutional neural networks at constrained time cost. In CVPR, 2015.\n[12] K. He,X. Zhang, S. Ren, and J. Sun. Spatial pyramid pooling in deep convolutional networks for visual recognition. In ECCV, 2014.\n[13] K. He, X. Zhang, S. Ren, and J. Sun. Delving deep into rectifiers: Surpassing human-level performance on imagenet classification. In ICCV, 2015.\n[14] G. E. Hinton, N. Srivastava, A. Krizhevsky, I. Sutskever, and R. R. Salakhutdinov. Improving neural networks by preventing co- adaptation of feature detectors. arXiv:1207.0580, 2012.\n[15] S. Hochreiter and J. Schmidhuber. Long short-term memory. Neural computation, 9(8):1735–1780, 1997.\n[16] S. Ioffe and C. Szegedy. Batch normalization: Accelerating deep network training by reducing internal covariate shift. In ICML, 2015.\n[17] H. Jegou,M. Douze, and C. Schmid. Product quantization for nearest neighbor search. TPAMI, 33, 2011.\n[18] H. Jegou, F. Perronnin, M. Douze, J. Sanchez, P. Perez, and C. Schmid. Aggregating local image descriptors into compact codes. TPAMI, 2012.\n[19] Y. Jia, E. Shelhamer, J. Donahue, S. Karayev, J. Long, R. Girshick, S. Guadarrama, and T. Darrell. Caffe: Convolutional architecture for fast feature embedding. arXiv:1408.5093, 2014.\n[20] A. Krizhevsky. Learning multiple layers of features from tiny im- ages. Tech Report, 2009.\n[21] A. Krizhevsky, I. Sutskever, and G. Hinton. Imagenet classification with deep convolutional neural networks. In NIPS, 2012.\n[22] Y. LeCun, B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard, and L. D. Jackel. Backpropagation applied to hand- written zip code recognition. Neural computation, 1989.\n[23] Y. LeCun,L. Bottou,G. B. Orr, and K.-R. Mller. Efficient backprop.\nIn Neural Networks: Tricks of the Trade, pages 9–50. Springer, 1998.\n[24] C.-Y. Lee, S. Xie, P. Gallagher, Z. Zhang, and Z. Tu. Deeply- supervised nets. arXiv:1409.5185, 2014.\n[25] M. Lin,Q. Chen, and S. Yan. Network in network. arXiv:1312.4400, 2013.\n[26] T.-Y. Lin, M. Maire, S. Belongie, J. Hays, P. Perona, D. Ramanan, P. Dollr, and C. L. Zitnick. Microsoft COCO: Common objects in context. In ECCV. 2014.\n[27] J. Long, E. Shelhamer, and T. Darrell. Fully convolutional networks for semantic segmentation. In CVPR, 2015.\n\n[28] G. Montfar, R. Pascanu, K. Cho, and Y. Bengio. On the number of linear regions of deep neural networks. In NIPS, 2014.\n[29] V. Nair and G. E. Hinton. Rectified linear units improve restricted boltzmann machines. In ICML, 2010.\n[30] F. Perronnin and C. Dance. Fisher kernels on visual vocabularies for image categorization. In CVPR, 2007.\n[31] T. Raiko, H. Valpola, and Y. LeCun. Deep learning made easier by linear transformations in perceptrons. In AISTATS, 2012.\n[32] S. Ren, K. He, R. Girshick, and J. Sun. Faster R-CNN: Towards real-time object detection with region proposal networks. In NIPS, 2015.\n[33] S. Ren, K. He, R. Girshick, X. Zhang, and J. Sun. Object detection networks on convolutional feature maps. arXiv:1504.06066, 2015.\n[34] B. D. Ripley. Pattern recognition and neural networks. Cambridge university press, 1996.\n[35] A. Romero, N. Ballas, S. E. Kahou, A. Chassang, C. Gatta, and Y. Bengio. Fitnets: Hints forthin deep nets. In ICLR, 2015.\n[36] O. Russakovsky, J. Deng, H. Su, J. Krause, S. Satheesh, S. Ma, Z. Huang, A. Karpathy, A. Khosla, M. Bernstein, et al. Imagenet large scale visual recognition challenge. arXiv:1409.0575, 2014.\n[37] A. M. Saxe, J. L. McClelland, and S. Ganguli. Exact solutions to the nonlinear dynamics of learning in deep linear neural networks. arXiv:1312.6120, 2013.\n[38] N. N. Schraudolph. Accelerated gradient descent by factor-centering decomposition. Technical report, 1998.\n[39] N. N. Schraudolph. Centering neural network gradient factors. In Neural Networks: Tricks of the Trade, pages 207–226. Springer, 1998.\n[40] P. Sermanet, D. Eigen, X. Zhang, M. Mathieu, R. Fergus, and Y. Le- Cun. Overfeat: Integrated recognition, localization and detection using convolutional networks. In ICLR, 2014.\n[41] K. Simonyan and A. Zisserman. Very deep convolutional networks for large-scale image recognition. In ICLR, 2015.\n[42] R. K. Srivastava, K. Greff, and J. Schmidhuber. Highway networks. arXiv:1505.00387, 2015.\n[43] R. K. Srivastava, K. Greff, and J. Schmidhuber. Training very deep networks. 1507.06228, 2015.\n[44] C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed, D. Anguelov, D. Er- han, V. Vanhoucke, and A. Rabinovich. Going deeper with convolu- tions. In CVPR, 2015.\n[45] R. Szeliski. Fast surface interpolation using hierarchical basis func- tions. TPAMI, 1990.\n[46] R. Szeliski. Locally adapted hierarchical basis preconditioning. In SIGGRAPH, 2006.\n[47] T. Vatanen, T. Raiko, H. Valpola, and Y. LeCun. Pushing stochas- tic gradient towards second-order methods–backpropagation learn- ing with transformations in nonlinearities. In Neural Information Processing, 2013.\n[48] A. Vedaldi and B. Fulkerson. VLFeat: An open and portable library of computer vision algorithms, 2008.\n[49] W. Venables and B. Ripley. Modern applied statistics with s-plus. 1999.\n[50] M. D. Zeiler and R. Fergus. Visualizing and understanding convolu- tional neural networks. In ECCV, 2014.\n\nA. Object Detection Baselines\nIn this section we introduce our detection method based on the baseline Faster R-CNN [32] system. The models are initialized by the ImageNet classification models, and then fine-tuned on the object detection data. We have experi- mented with ResNet-50/101 at the time of the ILSVRC & COCO 2015 detection competitions.\nUnlike VGG-16 used in [32], our ResNet has no hidden fc layers. We adopt the idea of “Networks on Conv fea- ture maps” (NoC) [33] to address this issue. We compute the full-image shared conv feature maps using those lay- ers whose strides on the image are no greater than 16 pixels (i.e., conv1, conv2 x, conv3 x, and conv4 x, totally 91 conv layers in ResNet-101; Table 1). We consider these layers as analogous to the 13 conv layers in VGG-16, and by doing so, both ResNet and VGG-16 have conv feature maps of the same total stride (16 pixels). These layers are shared by a region proposal network (RPN, generating 300 proposals) [32] and a Fast R-CNN detection network [7]. RoI pool- ing [7] is performed before conv5 1. On this RoI-pooled feature, all layers of conv5 x and up are adopted for each region, playing the roles of VGG-16’s fc layers. The final classification layer is replaced by two sibling layers (classi- fication and box regression [7]).\nFor the usage of BN layers, after pre-training, we com- pute the BN statistics (means and variances) for each layer on the ImageNet training set. Then the BN layers are fixed during fine-tuning for object detection. As such, the BN layers become linear activations with constant offsets and scales,and BN statistics are not updated by fine-tuning. We fix the BN layers mainly for reducing memory consumption in Faster R-CNN training.\nPASCAL VOC\nFollowing [7, 32], for the PASCAL VOC 2007 test set, we use the 5k trainval images in VOC 2007 and 16k train- val images in VOC 2012 for training (“07+12”). For the PASCAL VOC 2012 test set, we use the 10k trainval+test images in VOC 2007 and 16k trainval images in VOC 2012 for training (“07++12”). The hyper-parameters for train- ing Faster R-CNN are the same as in [32]. Table 7 shows the results. ResNet-101 improves the mAP by >3% over VGG-16. This gain is solely because of the improved fea- tures learned by ResNet.\nMS COCO\nThe MS COCO dataset [26] involves 80 object cate- gories. We evaluate the PASCAL VOC metric (mAP @ IoU = 0.5) and the standard COCO metric (mAP @ IoU = .5:.05:.95). We use the 80k images on the train set for train- ing and the 40k images on the val set for evaluation. Our detection system for COCO is similar to that for PASCAL VOC. We train the COCO models with an 8-GPU imple- mentation, and thus the RPN step has a mini-batch size of\n\n8 images (i.e., 1 per GPU) and the Fast R-CNN step has a mini-batch size of 16 images. The RPN step and Fast R- CNN step are both trained for 240k iterations with a learn- ing rate of 0.001 and then for 80k iterations with 0.0001.\nTable 8 shows the results on the MS COCO validation set. ResNet-101 has a 6% increase of mAP@[.5, .95] over VGG-16, which is a 28% relative improvement, solely con- tributed by the features learned by the better network. Re- markably, the mAP@[.5, .95]’s absolute increase (6.0%) is nearly as big as mAP@.5’s (6.9%). This suggests that a deeper network can improve both recognition and localiza- tion.\nB. Object Detection Improvements\nFor completeness, we report the improvements made for the competitions. These improvements are based on deep features and thus should benefit from residual learning.\nMS COCO\nBox refinement. Our box refinement partially follows the it- erative localization in [6]. In Faster R-CNN, the final output is a regressed box that is different from its proposal box. So for inference, we pool a new feature from the regressed box and obtain a new classification score and a new regressed box. We combine these 300 new predictions with the orig- inal 300 predictions. Non-maximum suppression (NMS) is applied on the union set of predicted boxes using an IoU threshold of 0.3 [8], followed by box voting [6]. Box re- finement improves mAP by about 2 points (Table 9).\nGlobal context. We combine global context in the Fast R-CNN step. Given the full-image conv feature map, we pool a feature by global Spatial Pyramid Pooling [12] (with a “single-level” pyramid) which can be implemented as “RoI” pooling using the entire image’s bounding box as the RoI. This pooled feature is fed into the post-RoI layers to obtain a global context feature. This global feature is con- catenated with the original per-region feature, followed by the sibling classification and box regression layers. This new structure is trained end-to-end. Global context im- proves mAP@.5 by about 1 point (Table 9).\nMulti-scale testing. In the above, all results are obtained by single-scale training/testing as in [32], where the image’s shorter side is s = 600 pixels. Multi-scale training/testing has been developed in [12, 7] by selecting a scale from a feature pyramid, and in [33] by using maxout layers. In our current implementation, we have performed multi-scale testing following [33]; we have not performed multi-scale training because of limited time. In addition, we have per- formed multi-scale testing only for the Fast R-CNN step (but not yet for the RPN step). With a trained model, we compute conv feature maps on an image pyramid, where the image’s shorter sides are s ∈ {200, 400, 600, 800, 1000}.\n\ntraining data\tCOCO train\tCOCO trainval\ntest data\tCOCO val\tCOCO test-dev\nmAP\t@.5\t@[.5, .95]\t@.5\t@[.5, .95]\nbaseline Faster R-CNN (VGG-16)\nbaseline Faster R-CNN (ResNet-101) +box refinement\n+context\n+multi-scale testing\t41.5\n48.4\n49.9\n51.1\n53.8\t21.2\n27.2\n29.9\n30.0\n32.5\t\n\n53.3\n55.7\t\n\n32.2\n34.9\nensemble\t\t\t59.0\t37.4\nTable 9. Object detection improvements on MS COCO using Faster R-CNN and ResNet-101.\n\nsystem\tnet\tdata\tmAP\tareo\tbike\tbird\tboat\tbottle\tbus\tcar\tcat\tchair\tcow\ttable\tdog\thorse\tmbike person plant\tsheep\tsofa\ttrain\ttv\nbaseline\tVGG-16\t07+12\t73.2\t76.5\t79.0\t70.9\t65.5\t52.1\t83.1\t84.7\t86.4\t52.0\t81.9\t65.7\t84.8\t84.6\t77.5 76.7 38.8\t73.6\t73.9\t83.0\t72.6\nbaseline\tResNet-101\t07+12\t76.4\t79.8\t80.7\t76.2\t68.3\t55.9\t85.1\t85.3\t89.8\t56.7\t87.8\t69.4\t88.3\t88.9\t80.9 78.4 41.7\t78.6\t79.8\t85.3\t72.0\nbaseline+++\tResNet-101\tCOCO+07+12\t85.6\t90.0\t89.6\t87.8\t80.8\t76.1\t89.9\t89.9\t89.6\t75.5\t90.0\t80.7\t89.6\t90.3\t89.1 88.7 65.4\t88.1\t85.6\t89.0\t86.8\nTable 10. Detection results on the PASCAL VOC 2007 test set. The baseline is the Faster R-CNN system. The system “baseline+++” include box refinement, context, and multi-scale testing in Table 9.\n\nsystem\tnet\tdata\tmAP\tareo\tbike\tbird\tboat\tbottle\tbus\tcar\tcat\tchair\tcow\ttable\tdog\thorse\tmbike person plant\tsheep\tsofa\ttrain\ttv\nbaseline\tVGG-16\t07++12\t70.4\t84.9\t79.8\t74.3\t53.9\t49.8\t77.5\t75.9\t88.5\t45.6\t77.1\t55.3\t86.9\t81.7\t80.9 79.6 40.1\t72.6\t60.9\t81.2\t61.5\nbaseline\tResNet-101\t07++12\t73.8\t86.5\t81.6\t77.2\t58.0\t51.0\t78.6\t76.6\t93.2\t48.6\t80.4\t59.0\t92.1\t85.3\t84.8 80.7 48.1\t77.3\t66.5\t84.7\t65.6\nbaseline+++\tResNet-101\tCOCO+07++12\t83.8\t92.1\t88.4\t84.8\t75.9\t71.4\t86.3\t87.8\t94.2\t66.8\t89.4\t69.2\t93.9\t91.9\t90.9 89.6 67.9\t88.2\t76.8\t90.3\t80.0\nTable 11. Detection results on the PASCAL VOC 2012 test set (http://host.robots.ox.ac.uk:8080/leaderboard/ displaylb.php?challengeid=11&compid=4). The baseline is the Faster R-CNN system. The system “baseline+++” include box refinement, context, and multi-scale testing in Table 9.\n\nWe select two adjacent scales from the pyramid following [33]. RoI pooling and subsequent layers are performed on the feature maps of these two scales [33], which are merged by maxout as in [33]. Multi-scale testing improves the mAP by over 2 points (Table 9).\nUsing validation data. Next we use the 80k+40k trainval set for training and the 20k test-dev set for evaluation. The test- dev set has no publicly available ground truth and the result is reported by the evaluation server. Under this setting, the results are an mAP@.5 of 55.7% and an mAP@[.5, .95] of 34.9% (Table 9). This is our single-model result.\nEnsemble. In Faster R-CNN, the system is designed to learn region proposals and also object classifiers, so an ensemble can be used to boost both tasks. We use an ensemble for proposing regions, and the union set of proposals are pro- cessed by an ensemble of per-region classifiers. Table 9 shows our result based on an ensemble of 3 networks. The mAP is 59.0% and 37.4% on the test-dev set. This result won the 1st place in the detection task in COCO 2015.\nPASCAL VOC\nWe revisit the PASCAL VOC dataset based on the above model. With the single model on the COCO dataset (55.7% mAP@.5 in Table 9), we fine-tune this model on the PAS- CAL VOC sets. The improvements of box refinement, con- text, and multi-scale testing are also adopted. By doing so\n\n\tval2\ttest\nGoogLeNet [44] (ILSVRC’14)\t-\t43.9\nour single model (ILSVRC’15)\t60.5\t58.8\nour ensemble (ILSVRC’15)\t63.6\t62.1\nTable 12. Our results (mAP, %) on the ImageNet detection dataset. Our detection system is Faster R-CNN [32] with the improvements in Table 9, using ResNet-101.\n\nwe achieve 85.6% mAP on PASCAL VOC 2007 (Table 10) and 83.8% on PASCAL VOC 2012 (Table 11)6 . The result on PASCAL VOC 2012 is 10 points higher than the previ- ous state-of-the-art result [6].\nImageNet Detection\nThe ImageNet Detection (DET) task involves 200 object categories. The accuracy is evaluated by mAP@.5. Our object detection algorithm for ImageNet DET is the same as that for MS COCO in Table 9. The networks are pre- trained on the 1000-class ImageNet classification set, and are fine-tuned on the DET data. We split the validation set into two parts (val1/val2) following [8]. We fine-tune the detection models using the DET training set and the val1 set. The val2 set is used for validation. We do not use other ILSVRC 2015 data. Our single model with ResNet-101 has\n6 http://host.robots.ox.ac.uk:8080/anonymous/3OJ4OJ.html, submitted on 2015-11-26.\n\nLOC\nmethod\tLOC\nnetwork\ttesting\tLOC error on GT CLS\tclassification network\ttop-5 LOC error on predicted CLS\nVGG’s [41] RPN\nRPN\tVGG-16\nResNet-101 ResNet-101\t1-crop 1-crop dense\t33.1 [41] 13.3\n11.7\t\t\nRPN\nRPN+RCNN RPN+RCNN\tResNet-101\nResNet-101\nensemble\tdense dense dense\t\tResNet-101\nResNet-101\nensemble\t14.4\n10.6\n8.9\nTable 13. Localization error (%) on the ImageNet validation. In the column of “LOC error on GT class” ([41]), the ground truth class is used. In the “testing” column, “1-crop” denotes testing on a center crop of 224k224 pixels, “dense” denotes dense (fully convolutional) and multi-scale testing.\n\n58.8% mAP and our ensemble of 3 models has 62.1% mAP on the DET test set (Table 12). This result won the 1st place in the ImageNet detection task in ILSVRC 2015, surpassing the second place by 8.5 points (absolute).\nC. ImageNet Localization\nThe ImageNet Localization (LOC) task [36] requires to classify and localize the objects. Following [40, 41], we assume that the image-level classifiers are first adopted for predicting the class labels of an image, and the localiza- tion algorithm only accounts for predicting bounding boxes based on the predicted classes. We adopt the “per-class re- gression” (PCR) strategy [40,41], learning a bounding box regressor for each class. We pre-train the networks for Im- ageNet classification and then fine-tune them for localiza- tion. We train networks on the provided 1000-class Ima- geNet training set.\nOur localization algorithm is based on the RPN frame- work of [32] with a few modifications. Unlike the way in [32] that is category-agnostic, our RPN for localization is designed in a per-class form. This RPN ends with two sib- ling 1e1 convolutional layers for binary classification (cls) and box regression (reg), as in [32]. The cls and reg layers are both in a per-class from, in contrast to [32]. Specifi- cally, the clslayer has a 1000-d output, and each dimension is binary logistic regression for predicting being or not be- ing an object class; the reg layer has a 1000e4-d output consisting of box regressors for 1000 classes. As in [32], our bounding box regression is with reference to multiple translation-invariant “anchor” boxes at each position.\nAs in our ImageNet classification training (Sec. 3.4), we randomly sample 224e224 crops for data augmentation. We use a mini-batch size of 256 images for fine-tuning. To avoid negative samples being dominate, 8 anchors are ran- domly sampled for each image, where the sampled positive and negative anchors have a ratio of 1:1 [32]. For testing, the network is applied on the image fully-convolutionally.\nTable 13 compares the localization results. Following [41], we first perform “oracle” testing using the ground truth class as the classification prediction. VGG’s paper [41] re-\n\nmethod\ttop-5 localization err\n\tval\ttest\nOverFeat [40] (ILSVRC’13) GoogLeNet [44] (ILSVRC’14) VGG [41] (ILSVRC’14)\t30.0\n-\n26.9\t29.9\n26.7\n25.3\nours (ILSVRC’15)\t8.9\t9.0\nTable 14. Comparisons of localization error (%) on the ImageNet dataset with state-of-the-art methods.\nports a center-crop error of 33.1% (Table 13) using ground truth classes. Under the same setting, our RPN method us- ing ResNet-101 net significantly reduces the center-crop er- ror to 13.3%. This comparison demonstrates the excellent performance of our framework. With dense (fully convolu- tional) and multi-scale testing, our ResNet-101 has an error of 11.7% using ground truth classes. Using ResNet-101 for predicting classes (4.6% top-5 classification error, Table 4), the top-5 localization error is 14.4%.\nThe above results are only based on the proposal network (RPN) in Faster R-CNN [32]. One may use the detection network (Fast R-CNN [7]) in Faster R-CNN to improve the results. But we notice that on this dataset, one image usually contains a single dominate object, and the proposal regions highly overlap with each other and thus have very similar RoI-pooled features. As a result, the image-centric training of Fast R-CNN [7] generates samples of small variations, which may not be desired for stochastic training. Motivated by this, in our current experiment we use the original R- CNN [8] that is RoI-centric, in place of Fast R-CNN.\nOur R-CNN implementation is as follows. We apply the per-class RPN trained as above on the training images to predict bounding boxes for the ground truth class. These predicted boxes play a role of class-dependent proposals. For each training image, the highest scored 200 proposals are extracted as training samples to train an R-CNN classi- fier. The image region is cropped from a proposal, warped to 224e224 pixels, and fed into the classification network as in R-CNN [8]. The outputs of this network consist of two sibling fc layers for cls and reg, also in a per-class form. This R-CNN network is fine-tuned on the training set us- ing a mini-batch size of 256 in the RoI-centric fashion. For testing, the RPN generates the highest scored 200 proposals for each predicted class, and the R-CNN network is used to update these proposals’ scores andbox positions.\nThis method reduces the top-5 localization error to 10.6% (Table 13). This is our single-model result on the validation set. Using an ensemble of networks for both clas- sification and localization, we achieve a top-5 localization error of 9.0% on the test set. This number significantly out- performs the ILSVRC 14 results (Table 14), showing a 64% relative reduction of error. This result won the 1st place in the ImageNet localization task in ILSVRC 2015.\n```", + "text_sha256": "1133d20c32c270c17cc51afa3f1418105bc35531f91d650cc96e454eacb4242f", + "knowledge_path": "knowledge/data_structure/data-structure-030.md", + "knowledge_sha256": "068fec924553c561450e066c1141f1036ebddd3b2dee52f18d805cfd5e6d3f5f" + }, + "database-006:h-数据库选填要点_oz:c02": { + "chunk_id": "database-006:h-数据库选填要点_oz:c02", + "course_id": "database", + "source_id": "database-006", + "source_title": "数据库选填要点_oz", + "heading_path": [ + "数据库选填要点_oz" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "3.E-R图集成的冲突解决方法:\n- 属性冲突(属性域冲突、属性取值单位冲突)、命名冲突→行政手段解决\n- 结构冲突(同一对象不同抽象→两个准则变换、同一对象不同属性构成→取E-R图中属性并集,再适当设计属性次序、实体联系呈现不同类型→应用语义对实体联系的类型进行综合或调整)\n\n4.建立索引的一般原则:经常在查询条件/聚集函数/连接条件中出现\n\n第九章:\n\n1.查询处理的四个阶段:\n- 查询分析:语法错误检查\n- 查询检查:数据库对象有效,安全性,完整性检查\n- 查询优化:代数优化、物理优化\n- 查询执行\n\n关系代数等价变化规则(略)\n\n2.一般原则:①选择运算尽可能先做②投影运算和选择运算同步进行③选择和笛卡尔积共同合为连接运算…\n\n第十章:\n\n1.事务的概念:数据库操作序列,全做或全不做,不可分割。恢复/并发控制的基本单位\n\n2.ACID特性:\n- 原子性:全做或全不做\n- 一致性:执行结果一致,全做或全不做\n- 隔离性:不能被其他事物干扰\n- 持续性:事务提交对数据改变是永久的\n\n3.数据库系统故障种类→产生原因→恢复方法:\n- 事务故障→事务内部故障→利用日志文件撤销UNDO(事务撤销)\n- 系统故障→系统停止运转(硬件错误、操作系统故障、DBMS代码错误…)→重新启动,UNDO撤销未完成事务,REDO重做已完成事务\n- 介质故障→硬件外存故障→重装数据库,REDO重做已完成事务\n\n4.数据转储分类:(前缀)静态/动态/海量/增量+数据转储\n\n5.利用日志文件(以记录为单位,数据库为单位)进行数据库恢复的两个原则:\n- 登记的次序严格按并发事务执行的时间次序\n- 必须先写日志文件,后写数据库\n\n6.检查点:不过检查点-不要重做,过检查点不过系统故障时间点-重做,过系统故障时间点-撤销(从最后一个检查点开始,记录此时所有正在执行事务ACTIVE-LIST,正向扫描日志文件,UNDO-LIST移到REDO-LIST,UNDO REDO进行操作)\n\n第十一章:\n\n1.事务并发带来的三种数据不一致性:\n- 丢失修改:多个事务读入同一数据【一二三级封锁】\n- 读脏数据:前者撤销,后来事务读取不一致【二三级封锁】\n- 不可重复读:前者读完后者更新,前者无法再现前一次读取结果【三级封锁】\n\n2.三级封锁协议:\n\n修改之前必须加X锁,读取之前必须加S锁,事务结束再释放\n\n3.死锁诊断:超时法、等待图法 死锁解除:代价最小事务UNDO\n\n4.(冲突)可串行化调度:不同事务对统一数据的读写操作和写写操作,保证以上冲突操作次序不变\n\n5.两端锁协议:所有事务必须分两个阶段对数据项加锁和解锁\n- 获得封锁(扩展阶段)②释放封锁(收缩阶段) 要读写就必须获得封锁,写完不再申请封锁。若遵守,任何并发调度策略都是可串行化的,保证并发调度的正确性", + "text_sha256": "f077c8f4108dcd8597c16cfa259f9feea859abb616200fc61d0e9e665002b20f", + "knowledge_path": "knowledge/database/database-006.md", + "knowledge_sha256": "d8e97ce4e13e9a99c838993b5508db8da062c67be060ce4531adef1c08454394" + }, + "database-001:h-2012-数据库系统概论-a试卷:c01": { + "chunk_id": "database-001:h-2012-数据库系统概论-a试卷:c01", + "course_id": "database", + "source_id": "database-001", + "source_title": "2012《数据库系统概论》A试卷", + "heading_path": [ + "2012《数据库系统概论》A试卷" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "**诚信应考,考试作弊将带来严重后果!**\n\n**华南理工大学期末考试**\n\n**《数据库系统概论》A试卷答题纸**\n\n**注意事项:1.** **考前请将密封线内各项信息填写清楚;**\n\n**2.** **所有答案请直接答在答题纸;**\n\n**3.考试形式:闭卷;**\n\n**4.** **本试卷共 五 大题,满分100分,考试时间120分钟**。\n\n| **题 号** | **一** | **二** | **三** | **四** | **五** | **总分** |\n|---|---|---|---|---|---|---|\n| **得 分** | | | | | | |\n| **评卷人** | | | | | | |\n\n**一、单项选择题(共30分)**\n\n| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |\n|---|---|---|---|---|---|---|---|---|---|\n| | | | | | | | | | |\n| 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |\n| | | | | | | | | | |\n| 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |\n| | | | | | | | | | |\n\n**二、判断题(共10分)**\n\n| 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 |\n|---|---|---|---|---|---|---|---|---|---|\n| | | | | | | | | | |\n\n**三、简答题(共10分)**\n\n**四、SQL语言应用(共35分,每题5分,请将答案填在答题纸上)**\n\n**五、综合题(本题15分,请将答案填在答题纸上)**\n\n**《数据库系统概论》A试卷**\n\n**一、单项选择题(共30分,每题1分)**", + "text_sha256": "60778e63a7696a1bb1c6dde78b2145c5acea0f513e83fb69ddae0b4a34c717e8", + "knowledge_path": "knowledge/database/database-001.md", + "knowledge_sha256": "b7fca9f7ede4f6ae43a0770f68c803678003f7382d362d143ac1ff2515afebb3" + }, + "database-005:s41:c01": { + "chunk_id": "database-005:s41:c01", + "course_id": "database", + "source_id": "database-005", + "source_title": "期末复习总结", + "heading_path": [ + "期末复习总结" + ], + "locator_type": "slide", + "locator_start": 41, + "locator_end": 41, + "question_id": null, + "text": "- 考点3:了解代数优化、物理优化的概念\n- 知识点详解:\n- 代数优化(逻辑优化):不涉及底层存取路径,只对关系代数表达式进行等价变换,目的是找到一个计算量最小的等价表达式。核心是改变操作的顺序和组合。\n- 物理优化(非代数优化):涉及底层的存取路径和操作算法的选择,目的是为给定的查询选择一个最有效的执行计划。核心是选择最优的存取路径和操作算法。\n- 【真题】 物理优化策略是要选择高效合理的操作算法或存取路径,求得优化的查询计划。 (此为判断题,原题为判断题形式,这里转为概念说明)\n- 答案:√ (正确)\n- 解析:该描述准确定义了物理优化的核心任务,即在逻辑优化(代数优化)的基础上,选择具体的实现方式,如是使用索引扫描还是全表扫描,是使用嵌套循环连接还是排序合并连接等。\n- 考点4:了解关系代数等价变换规则,代数优化的一般原则\n- 知识点详解:代数优化的核心原则是:(1)选择运算应尽可能早地执行:这可以大大减少需要处理的元组数量,是最重要、最基本的优化准则。(2)投影运算应尽可能早地执行:这可以减少中间结果的属性(列数),从而减小存储和后续计算的开销。(3)将投影和选择运算同时进行,以避免重复扫描关系。(4)将选择同其后的笛卡尔积结合成连接运算。(5)找出公共子表达式,只计算一次。\n- 【真题 】 关于查询优化不正确的说法有( )\n- A. 选择运算应尽可能先做B. 在执行连接操作前对关系适当进行预处理 C. 将投影运算与其前面或后面的双目运算结合 D. 投影运算应尽可能先做\n- 【答案】D【解析】:虽然投影运算也应尽早做,但“尽可能先做”的描述不如选择运算(A选项)那么绝对和重要。选择运算是筛选行,投影是筛选列。通常,最优先考虑的是选择运算,因为它对数据量的缩减效果最显著。D选项的说法“尽可能先做”在某些情况下可能破坏对后续运算有用的属性,所以不是一个绝对正确的策略,相较于A选项的普适性,D的说法“不正确”。\n- 第九章 数据库查询优化", + "text_sha256": "c1e1e32a78aecc343500216ed3e0b0618b8eaa878f2d4657bf522dc769bcbc18", + "knowledge_path": "knowledge/database/database-005.md", + "knowledge_sha256": "f6701e8a9ba22f3fea331ccd0154b306486fb2a8c852645d5227a35577619055" + }, + "digital-logic-001:h-数字逻辑作业:c02": { + "chunk_id": "digital-logic-001:h-数字逻辑作业:c02", + "course_id": "digital_logic", + "source_id": "digital-logic-001", + "source_title": "数字逻辑作业", + "heading_path": [ + "数字逻辑作业" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "6.分别用摩尔逻辑和米里逻辑设计”101”信号检测\n\n摩尔逻辑设计:\n\n摩尔逻辑使用状态机来实现序列检测。对于序列”101”,可以设计一个具有三个状态的状态机:S0(初始状态),S1(检测到\"1\"),S2(检测到\"101\")。\n\nS0:初始状态。如果输入是1,转移到S1。\n\nS1:如果输入是0,转移到S2;如果输入是1,保持在S1。\n\nS2:如果输入是1,输出1并回到S0;如果输入是0,回到S1。\n\n米里逻辑设计:\n\n米里逻辑与摩尔逻辑类似,但输出不仅依赖于当前状态,还依赖于输入。\n\nS0:初始状态。如果输入是1,转移到S1。\n\nS1:如果输入是0,转移到S2;如果输入是1,保持在S1。\n\nS2:如果输入是1,输出1并回到S0;如果输入是0,回到S1。\n\n在米里逻辑中,输出条件可以直接在状态转移中指定,而不需要额外的输出逻辑。\n\n7.首先,需要确定函数的最小项。\n\n函数L=AB+BC+AC 的最小项是:\n\nAB 对应于最小项 m5​(A=1, B=1, C=0)\n\nBC 对应于最小项 m6​(A=0, B=1, C=1)\n\nAC 对应于最小项 m7​(A=1, B=0, C=1)\n\n接下来,可以设计PLA的AND阵列和OR阵列。\n\nAND阵列:\n\n每个AND门对应一个最小项,输入为变量A、B和C的某种组合。对于的函数,需要三个AND门,每个门对应一个最小项。\n\nOR阵列:\n\nOR阵列将所有AND门的输出组合起来,形成最终的输出L。\n\n下面是PLA的简化表示:\n\n输入 | AND | OR | 输出\n\n-------------------------\n\nA B C | m5 | m6 | m7 | L\n\n------------------------\n\n0 0 0 | 0 | 0 | 0 | 0\n\n0 0 1 | 0 | 0 | 0 | 0\n\n0 1 0 | 0 | 0 | 0 | 0\n\n0 1 1 | 0 | 1 | 0 | 1\n\n1 0 0 | 0 | 0 | 1 | 1\n\n1 0 1 | 1 | 0 | 0 | 1\n\n1 1 0 | 1 | 0 | 0 | 1\n\n1 1 1 | 0 | 0 | 0 | 0\n\n根据这个真值表来配置AND阵列和OR阵列的连接。每个AND门的输出对应于一个最小项,而OR门则将这些最小项组合起来形成最终的输出。\n\n可编程逻辑器件的特点及开发语言。\n\n8.可编程逻辑器件(如FPGA和CPLD)具有可重构性、灵活性和并行处理能力。它们通常使用硬件描述语言(HDL)进行开发,如VHDL和Verilog。\n\n9.\n\nVerilog是一种硬件描述语言,用于模拟和综合数字系统。它的特点是:", + "text_sha256": "4751e92be3748c29b99bfafbd2eb00a6a99e752ab29b036a7ecc8003c06937cd", + "knowledge_path": "knowledge/digital_logic/digital-logic-001.md", + "knowledge_sha256": "8d2a33214968e0060f1d28d84019c6abb511b7e648be27196d01f7d3faff2215" + }, + "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c02": { + "chunk_id": "digital-logic-008:h-计算机学院数字逻辑2024级复习大纲:c02", + "course_id": "digital_logic", + "source_id": "digital-logic-008", + "source_title": "计算机学院数字逻辑2024级复习大纲", + "heading_path": [ + "计算机学院数字逻辑2024级复习大纲" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "(b)会根据状态转移图,状态编码(如何状态编码不做要求)和并会利用D触发器建立出时序逻辑电路图。\n\n(4)了解常用同步时序逻辑电路的功能和特点:寄存器,只读存储器。\n\n(5)掌握时序逻辑构件:计数器(主要器件:74LS163,74LS161,74LS193)\n\n(a)什么是同步/异步置位、什么是同步/异步清零。\n\n(b)会设计任意进制模数的计数器。\n\n(c)会分析计数器电路功能(计数器计数)。\n\n(6)可编程逻辑阵列\n\n(1)可编程逻辑构件。了解PLA、PAL、GAL、FPGA、CPLD的概念和特点。\n\n(2)会用PLA实现逻辑函数,难度不超出书中 P204页 例6.14。\n\n6.可编程逻辑语言\n\n可编程逻辑系列器件的特点、应用及开发过程。\n\n**复习内容参考(仅供参考):**\n- **数制与编码**\n\n**1.考点:**\n\n(1)几种常用的计数体制,十进制、二进制、十六进制、八进制。\n\n(2)不同数制之间的相互转换。\n\n(3)编码形式。\n\n什么是余3码,什么是格雷码,了解编码的形式就好。\n\n**二.逻辑代数**\n\n**1.考点:**\n\n(1)逻辑代数是分析和设计逻辑电路的工具。应熟记基本公式与基本规则。\n\n表1 逻辑代数的基本公式\n\n**$A.1=AA.0=0A+0=AA+1=1AA=0A+A=1AB=BAA+B=B+AA(BC)=(AB)CA(B+C)=AB+ACA+B=C+(A+B)CAB=ABA(A+B)=AA·A̅B=AB(A+B)(A̅+C)=(A+B)(A̅+C)A̅=AAB+AC=AB+AC$**\n\n逻辑代数的基本规则:\n\n**a.代入规则** 对于任何一个逻辑等式,以某个逻辑变量或逻辑函数同时取代等式两端任何一个逻辑变量后,等式依然成立。 例如,在反演律中用BC去代替等式中的B,则新的等式仍成立:\n\nb. **对偶规则**\n\n将一个逻辑函数L进行下列变换: ·→+,+ →· 0 → 1,1 → 0 所得新函数表达式叫做L的对偶式.。\n\n对偶规则的基本内容是:如果两个逻辑函数表达式相等,那么它们的对偶式也一定相等。\n\n基本公式中的公式l和公式2就互为对偶 式。", + "text_sha256": "86e6f790402d1aca9f0fd273c8f43e084f4c7328fd01d83b878e7c54a23b5652", + "knowledge_path": "knowledge/digital_logic/digital-logic-008.md", + "knowledge_sha256": "78bc956ebf5e9f17b40524e90f8beb2a25e74f47462d0927258b74d3c6265590" + }, + "digital-logic-003:q-digital-logic-003-q2:c01": { + "chunk_id": "digital-logic-003:q-digital-logic-003-q2:c01", + "course_id": "digital_logic", + "source_id": "digital-logic-003", + "source_title": "2012级计算机学院数字逻辑试卷 B卷题目", + "heading_path": [ + "2012级计算机学院数字逻辑试卷 B卷题目" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": "digital-logic-003-Q2", + "text": "3.在下列电路中,不是典型组合电路的是( )。\n\nA.译码器 B.全加器 C.计数器 D.数据选择器\n\n4.设B1、B0为四选一数据选择器的地址码,X0~X3为数据输入,Y为数据输出,则输出Y与Xi和Bi之间的逻辑表达式为( )\n\nA. $\\overline {{B}_{1}}{B}_{0}{X}_{0}+\\overline {{B}_{1}}\\overline {{B}_{0}}{X}_{1}+{B}_{1}{B}_{0}{X}_{2}+{B}_{1}\\overline {{B}_{0}}{X}_{3}$\n\nB.${B}_{1}{B}_{0}{X}_{0}+{B}_{1}\\overline {{B}_{0}}{X}_{1}+\\overline {{B}_{1}}{B}_{0}{X}_{2}+\\overline {{B}_{1}}\\overline {{B}_{0}}{X}_{3}$\n\nC. $\\overline {{B}_{1}}\\overline {{B}_{0}}{X}_{0}+\\overline {{B}_{1}}{B}_{0}{X}_{1}+{B}_{1}\\overline {{B}_{0}}{X}_{2}+{B}_{1}{B}_{0}{X}_{3}$\n\nD. ${B}_{1}\\overline {{B}_{0}}{X}_{0}+{B}_{1}{B}_{0}{X}_{1}+\\overline {{B}_{1}}\\overline {{B}_{0}}{X}_{2}+\\overline {{B}_{1}}{B}_{0}{X}_{3}$", + "text_sha256": "a7391f01e475ab911feacdd0afdb6cd6e53ad00632beb0725ade291f75dccdd3", + "knowledge_path": "knowledge/digital_logic/digital-logic-003.md", + "knowledge_sha256": "dc85b59b4a8de543115761c67e3b63856092d4afc4614af6bd5c15cd8452d698" + }, + "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c11": { + "chunk_id": "digital-system-creative-design-003:h-mindspore口罩检测-yolov3:c11", + "course_id": "digital_system_creative_design", + "source_id": "digital-system-creative-design-003", + "source_title": "Mindspore口罩检测(yolov3)", + "heading_path": [ + "Mindspore口罩检测(yolov3)" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "range(num_classes): class_boxes = np.reshape(boxes, [-1, 4])[np.reshape(mask[:, c], [-1])] class_box_scores = np.reshape(box_scores[:, c], [-1])[np.reshape(mask[:, c], [-1])] nms_index = apply_nms(class_boxes, class_box_scores, config.nms_threshold, max_boxes) #nms_index = apply_nms(class_boxes, class_box_scores, 0.5, max_boxes) class_boxes = class_boxes[nms_index] class_box_scores = class_box_scores[nms_index] classes = np.ones_like(class_box_scores, 'int32') * c boxes_.append(class_boxes) scores_.append(class_box_scores) classes_.append(classes) boxes = np.concatenate(boxes_, axis=0) classes = np.concatenate(classes_, axis=0) scores = np.concatenate(scores_, axis=0) return boxes, classes, scores #加载训练模型并利用验证网络YoloWithEval进行验证 def yolo_eval(cfg): \"\"\"Yolov3 evaluation.\"\"\" ds = create_yolo_dataset(cfg.mindrecord_file, batch_size=1, is_training=False) config = ConfigYOLOV3ResNet18() net = yolov3_resnet18(config) eval_net = YoloWithEval(net, config) print(\"Load Checkpoint!\") param_dict = load_checkpoint(cfg.ckpt_path) load_param_into_net(net, param_dict)", + "text_sha256": "b5e94eb3c314826a2ea0af40fd58a805c4ea848789bb7714725b29ea732e107e", + "knowledge_path": "knowledge/digital_system_creative_design/digital-system-creative-design-003.md", + "knowledge_sha256": "3ffa56a74ef50f96041824d48490865c0ef0ea3b2d2357ed68c5fe9278a876d7" + }, + "digital-system-creative-design-004:p4:c02": { + "chunk_id": "digital-system-creative-design-004:p4:c02", + "course_id": "digital_system_creative_design", + "source_id": "digital-system-creative-design-004", + "source_title": "Mindspore口罩检测(yolov3)", + "heading_path": [ + "定义训练网络" + ], + "locator_type": "page", + "locator_start": 4, + "locator_end": 4, + "question_id": null, + "text": "23\n\ndef main(args_opt):\n\n24\n\ncontext.set_context(mode=context.GRAPH_MODE, device_target=\"Ascend\", device_\n\n25\n\nif args_opt.distribute:\n\n26\n\ndevice_num = args_opt.device_num\n\n27\n\ncontext.reset_auto_parallel_context()\n\n28\n\ncontext.set_auto_parallel_context(parallel_mode=ParallelMode.DATA_PARALL\n\n29\n\ndevice_num=device_num)\n\n30\n\ninit()\n\n31\n\nrank = args_opt.device_id % device_num\n\n32\n\nelse:\n\n33\n\nrank = 0\n\n34\n\ndevice_num = 1\n\n35\n\n36\n\nloss_scale = float(args_opt.loss_scale)\n\n37\n\n38\n\n# When create MindDataset, using the fitst mindrecord file, such as yolo.min\n\n39\n\ndataset = create_yolo_dataset(args_opt.mindrecord_file, #利用mindrecord格\n\n40\n\nbatch_size=args_opt.batch_size, device_num=dev\n\n41\n\ndataset_size = dataset.get_dataset_size()\n\n42\n\nprint('The epoch size: ', dataset_size)\n\n43\n\nprint(\"Create dataset done!\")\n\n44\n\n45\n\nnet = yolov3_resnet18(ConfigYOLOV3ResNet18())\n\n46\n\nnet = YoloWithLossCell(net, ConfigYOLOV3ResNet18()) #声明由ResNet-18作为主\n\n47\n\ninit_net_param(net, \"XavierUniform\") #初始化网络参数\n\n48\n\n49\n\n# checkpoint\n\n50\n\nckpt_config = CheckpointConfig(save_checkpoint_steps=dataset_size * args_opt\n\n51\n\nkeep_checkpoint_max=args_opt.keep_checkpoint_m\n\n52", + "text_sha256": "c8376bba2fc01ef4a5be7ec6a1dfb64705aeadf27b91fbaac71c083b3690cb2d", + "knowledge_path": "knowledge/digital_system_creative_design/digital-system-creative-design-004.md", + "knowledge_sha256": "7aef9a8feb37a4b9b5e503c9787ea5d436c512d8bb5aa2bb665117e0a04d7ebb" + }, + "digital-system-creative-design-005:p1:c01": { + "chunk_id": "digital-system-creative-design-005:p1:c01", + "course_id": "digital_system_creative_design", + "source_id": "digital-system-creative-design-005", + "source_title": "昇腾MindSpore作业描述参考", + "heading_path": [ + "昇腾MindSpore作业描述参考" + ], + "locator_type": "page", + "locator_start": 1, + "locator_end": 1, + "question_id": null, + "text": "昇腾MindSpore 实例开发报告\n\n1.华为昇腾AI 芯片\n\n如今飞速发展的深度神经网络对芯片算力的需求日益严苛,为了适应算力提速及针\n对深度神经网络进行特殊优化的要求,华为昇腾AI芯片的出现正是为了解决上述问题。\n昇腾芯片具有强大的算力及在在硬件体系结构上对于深度神经网络进行了特殊的优化。\n它的其中几个特性如下:\n架构:\n华为昇腾AI 芯片采用自研华为达芬奇架构。达芬奇架构基于ARM 架构,是华为自研的\n面向AI 计算特征的全新计算架构,本质上是为了适应AI 领域的常见应用和算法。因\n此其应用更具有针对性也更为高效。\n计算单元:\n计算单元是AI Core 中提供强大算力的核心单元,相当于AI Core 的主力军。AI Core 计\n算单元主要包含矩阵计算单元、向量计算单元、标量计算单元和累加器。华为昇腾AI 芯\n片集成丰富的计算单元,提高AI 计算完备度和效率,进而扩展该芯片的适用性。\n可扩展性:\n华为昇腾AI 芯片由于采用了模块化的设计,可以很方便地通过叠加模块的方法提高后\n续芯片的计算力。各个模块间通过基于 CHI 协议的片上环形总线相连, 实现模块间的\n数据连接通路并保证数据的共享和一致性。\n2.MindSpore AI 计算框架\n\nMindSpore 是端边云全场景按需协同的华为自研AI 计算框架,提供全场景统一API,\n为全场景AI 的模型开发、模型运行、模型部署提供端到端能力。MindSpore 采用端-边\n-云按需协作分布式架构、微分原生编程新范式以及AI Native 新执行模式,实现更好\n的资源效率、安全可信。\n特性:\n开发门槛大大降低:\n相比于TensorFlow、PyTorch 等流行深度学习框架,MindSpore 最大的特点就是开发\n门槛大大降低,提高开发效率,这样可以显著减少模型开发时间。MindSpore 带来了简\n单的开发体验,灵活的调试模式,充分发挥硬件潜能,全场景快速部署。\n具体架构:\nMindSpore 框架架构总体分为MindSpore 前端表示层、MindSpore 计算图引擎和\nMindSpore 后端运行时三层。\n· MindSpore 前端表示层(MindExpression,简称ME)\n该部分包含Python API、MindSpore IR(Intermediate representation,简称IR)、\n计算图高级别优化(Graph High Level Optimization,简称GHLO)三部分。\no Python API 向用户提供统一的模型训练、推理、导出接口,以及统一的数据处理、增\n强、格式转换接口。\no GHLO 包含硬件无关的优化(如死代码消除等)、自动并行和自动微分等功能。", + "text_sha256": "3a28cf41d0a2c7847a0289f5cbb0920c877161f7b4a6433dec4ba6bac4963434", + "knowledge_path": "knowledge/digital_system_creative_design/digital-system-creative-design-005.md", + "knowledge_sha256": "dedd5d980d5c650dd1cbcac889d4071fcd15a8df8dab8f069d8fe50dcb3f150b" + }, + "discrete-mathematics-005:p5:q-discrete-mathematics-005-q4:c01": { + "chunk_id": "discrete-mathematics-005:p5:q-discrete-mathematics-005-q4:c01", + "course_id": "discrete_mathematics", + "source_id": "discrete-mathematics-005", + "source_title": "机试", + "heading_path": [ + "机试" + ], + "locator_type": "page", + "locator_start": 5, + "locator_end": 5, + "question_id": "discrete-mathematics-005-Q4", + "text": "A)\n\n若g和f是满射,则gof是满射;\n\nB)\n\n若gof是满射,则g和f都是满射;\n\nC)\n\n若gof是单射,则g和f都是单射;\n\nD)\n\n若gof是双射,则f是单射,g是满射。\n\nA\nB\nC\nD\n\n分值:3分,得分:0分\n\n18.\n\n设X= {1, 2, 3}, Y = {a, b, c},下列关系中 为从X 到Y 的函数。\n\nA)\n\n{<1, a>, <2, a>, <3, c>}\n\nB)\n\n{<1, c>, <2, a>, <3, b>}\n\nC)\n\n{<1, c>, <1, b>, <3, a>}\n\nD)\n\n{<1, b>, <2, b>, <3, b>}\n\nA\nB\nC\nD\n\n分值:3分,得分:3分\n\n19.\n\n设A = {a, b, c, d}, R = IA∪{ , , , }为A上的等价关系,下面哪些是正确的?\n\nA)\n\na 与 b 等价\n\nB)\n\na 与 c 等价\n\nC)\n\nb 与 c 等价\n\nD)\n\nb 与 d 等价\n\nA\nB\nC\nD\n\n分值:3分,得分:3分\n\n20.\nA)\n\n下列函数, 是满射。\n\n;\n\nB)\n\n(\n除以3的余数);\n\nC)\n\n;\n\nD)\n\n。\n\nA\nB\nC\nD\n\n分值:3分,得分:3分\n\n21.\nA)\n\n对于以下函数:(R为实数集合,N为自然数集合)是双射的函数有_____________\n\nf: R→R, f(x) = x2 – x.\n\nB)\n\nf: R→R, f(x) = x3\n\nC)\n\nf: N→N, f(x) = x + 5\n\nD)\n\nf: R→R+, f(x) = 2x, R+ = {x| xÎR 且 x> 0}\n\nE)\n\nf: N→N, f(x) = 2x\n\nF)\n\nf: N→N, f(x) = | x |\n\nA\nB\nC\nD\nE\nF", + "text_sha256": "0084a9467b5ee42db7e07dd0afe28a72e58acc2d9c19349e203efec8f79984d4", + "knowledge_path": "knowledge/discrete_mathematics/discrete-mathematics-005.md", + "knowledge_sha256": "64ab488822023ce15d4958513e3314ebef80c77332d0e33330665dff8b1a803b" + }, + "discrete-mathematics-007:q-discrete-mathematics-007-q9:c04": { + "chunk_id": "discrete-mathematics-007:q-discrete-mathematics-007-q9:c04", + "course_id": "discrete_mathematics", + "source_id": "discrete-mathematics-007", + "source_title": "离散数学试卷(中文)答案", + "heading_path": [ + "离散数学试卷(中文)答案" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": "discrete-mathematics-007-Q9", + "text": "假设n=k时,n=m+1成立,往证n=k+1时n=m+1成立,\n\n由n=k时结论成立可知,此时m=k-1;\n\n假设新增加顶点nk+1通过边w1,w2分别与原来的k个顶点中的两个顶点nt,np连接,又由命题1)可知顶点nt,np间存在唯一的通路,不妨设为L;那么顶点np存在两条到达顶点的nk+1通路,它们分别是np—w2—nk+1和np—L—nt—w1—nk+1—nk+1;这与命题1)中任何两个顶点间存在唯一的通路矛盾,因此nk+1只能与原来的k个顶点中的一个顶点存在两条以下的边。而如果顶点nk+1与原来的k个顶点间不存在连接的边,则任何定点nt与nk+1之间不存在通路,也与命题1)矛盾。因此nk+1只能与原来的k个顶点中的一个顶点存在且仅存在一条边。这样,当n=k+1时,m=k-1+1 = k; 结论成立。\n\n再证 2)![formula-object](assets/discrete-mathematics-007/image-052.png)1)\n\n当n=1,2时, 如果n=m+1,则顶点间存在唯一的通路,结论成立;\n\n假设n=k时, 如果n=m+1,顶点间存在唯一的通路成立,\n\n往证n=k+1时,如果n=m+1,则顶点间存在唯一的通路,\n\n由于n=k时,n=m+1,则此时m=k-1,而n=k+1时 m=k;因此在增加一个顶点nk+1之后只增加了一条边,假设顶点nk+1与顶点nt之间通过边W连接,由于其它的顶点与顶点nt之间存在唯一的通路,那么其它的顶点和顶点nk+1之间都存在一条通过顶点nt、边W的通路。假设某个顶点np与nk+1之间存在两条通路,由于np顶点nt之间的通路是唯一的,因此np必须通过nt和nk+1之间的另外一条边到达nk+1,这与顶点nk+1只由一条边与原来的k个顶点相连矛盾。所以n=k+1时,如果n=m+1,则顶点间存在唯一的通路成立。\n\n通过以上的结论可知1)![formula-object](assets/discrete-mathematics-007/image-053.png)2)", + "text_sha256": "0090043ffb4981f9087ce0d5fbaa9f637028bb529c9898bb310fd9d95cceb169", + "knowledge_path": "knowledge/discrete_mathematics/discrete-mathematics-007.md", + "knowledge_sha256": "4fca964feafa8ba4ccbde491970c612fc14291d5a8bceddcf503cfdd0f1f225f" + }, + "discrete-mathematics-005:p3:q-discrete-mathematics-005-q4:c01": { + "chunk_id": "discrete-mathematics-005:p3:q-discrete-mathematics-005-q4:c01", + "course_id": "discrete_mathematics", + "source_id": "discrete-mathematics-005", + "source_title": "机试", + "heading_path": [ + "机试" + ], + "locator_type": "page", + "locator_start": 3, + "locator_end": 3, + "question_id": "discrete-mathematics-005-Q4", + "text": "A)\n\n自反性、对称性、传递性;\n\nB)\n\n反自反性、反对称性;\n\nC)\n\n反自反性、反对称性、传递性;\n\nD)\n\n自反性。\n\nA\nB\nC\nD\n\n分值:3分,得分:3分\n\n设A={1,2,3,4},P(A)(A 的幂集)上规定二元关系如下R={(s,t)|s,tÎP(A)Ù(|s|=|t|)}则P\n(A)/ R =\n\n9.\n\nA)\n\nA;\n\nB)\n\nP(A) ;\n\n{{Æ},{{1}},{{1,2}},{{1,2,3}},{{1,2,3,4}}};\n\nC)\n\n{{Æ},{{1},{2},{3},{4}},{{1,2},{1,3},{1,4},{2,3},{2,4},{3,4}},{{1,2,3},\n\nD)\n\n{1,2,4},{1,3,4},{2,3,4}},{ A}}\n\nA\nB\nC\nD\n\n分值:3分,得分:3分\n\n10.\n\n下列函数,既不是单射也不是满射的一般函数是 。\n\nA)\n\n;\n\nB)\n\n(\n除以3的余数);\n\nC)\n\n;\n\nD)\n\n。\n\nA\nB\nC\nD\n\n分值:3分,得分:3分\n\n11.\nA)\n\n设A = {1, 2, 3},则A上的二元关系有( ) 个\n\n23\n\nB)\n\n32\n\nC)\n\n23x3\n\nD)\n\n32x2\n\nA\nB\nC\nD\n\n分值:3分,得分:3分\n\n二.多项选择题\n\n共11题,每题3分,共33分\n\n12.\n\n设A, B, C是任意集合,判断下列断言为真的是 。\n\n若 A Í B, 且 B Í C,则A Í C\n\nA)\n\n若 A Í B, 且 B Î C,则A Í C\n\nB)\n\n若 A Î B, 且 B Î C,则A Î C\n\nC)", + "text_sha256": "d7ecd5725df67ac1bddbdbb7f08b32048959f3de098d69efc9f64e169fb7618a", + "knowledge_path": "knowledge/discrete_mathematics/discrete-mathematics-005.md", + "knowledge_sha256": "64ab488822023ce15d4958513e3314ebef80c77332d0e33330665dff8b1a803b" + }, + "electrical-engineering-009:h-电路与电子技术-复习大纲:c01": { + "chunk_id": "electrical-engineering-009:h-电路与电子技术-复习大纲:c01", + "course_id": "electrical_engineering", + "source_id": "electrical-engineering-009", + "source_title": "电路与电子技术 复习大纲", + "heading_path": [ + "电路与电子技术 复习大纲" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "**电路与电子技术 复习大纲**\n\n**一、电路原理**\n\n1.电路的基本概念与基本定律\n\n要求:了解电路模型的概念;理解电压、电流参考方向的概念,掌握功率平衡的概念与功率的计算;理解电阻、电容、电感、独立电源和受控电源等电路元件的工作特性;掌握电位的概念与计算;掌握基尔霍夫定律。\n\n重点:电压、电流的参考方向设定;功率计算,负载、电源的判断;电阻、电感与电容的电压-电流关系,储能公式的计算;电压源和电流源的电压-电流关系;基尔霍夫定律;电位的计算。\n\n2. 电路的基本定律和分析方法\n\n要求:了解支路电流法,了解实际电源的两种模型的等效变换,掌握用叠加原理和戴维南定理分析电路的方法,掌握结点电压法。了解受控源模型。\n\n重点:电阻串并联化简;电源的等效变换;叠加原理;戴维南定理;结点电压法。\n\n3. 电路的暂态分析\n\n要求:理解电路的暂态、换路定理和时间常数的基本概念,掌握一阶电路暂态分析的三要素法。\n\n重点:换路定理;一阶线性电路暂态过程的三要素分析法(初始值、稳态值、时间常数的计算)。\n\n4. 正弦交流电路\n\n要求:理解正弦交流电的三要素、相位差、有效值及相量表示法。理解电路基本定律的相量形式、复阻抗和相量图,掌握用相量法计算简单正弦交流电路的方法。理解和掌握有功功率、无功功率、视在功率、功率因数的概念和计算,了解提高功率因数的方法及其经济意义。了解正弦交流电路串联谐振和并联谐振的条件及特征。\n\n重点:正弦量的有效值和相量表示;正弦交流电相位差;正弦稳态电路的相量模型;用相量法、相量图计算简单的正弦交流电路。\n\n**(二)“模拟电子技术”模块**\n\n1. 半导体器件\n\n要求:了解二极管、稳压管和三极管的基本构造、工作原理和特性曲线,理解主要参数的意义;理解PN结的单向导电性,三极管的电流分配和电流放大作用;会分析含有二极管的电路;三极管三个工作状态的判别。\n\n重点:会分析含有二极管的电路;三极管三个工作状态的判别。\n\n2.基本放大电路\n\n要求:理解共射极、共集电极单管放大电路静态工作点的作用和简化小信号模型的分析方法。了解多级放大的概念及多级放大电路的输入阻抗、输出阻抗和放大倍数的计算。了解差动放大电路的工作原理。\n\n重点:固定偏置放大电路、分压式偏置电路、射极输出器等基本放大电路的静态分析和动态分析。\n\n3. 集成运放电路\n\n要求:了解集成运算放大器的基本概念、电压传输特性。掌握理想运算放大器的基本分析方法。 理解用集成运算放大器组成的比例、加、减、积分和微分运算电路的工作原理。\n\n重点:集成运算放大器的电压传输特性;集成运算放大器组成的比例、加、减运算电路的分析计算;电压比较器。\n\n4.电子电路中的反馈\n\n要求:理解反馈的概念,了解反馈类型和负反馈对放大电路性能的影响。\n\n重点:反馈类型的判别和负反馈对放大电路性能的影响。\n\n5.直流稳压电源", + "text_sha256": "06bccc463a4da9f4763b501a046ec9d95292d7fc696c5fafea62d8676f6c3cf9", + "knowledge_path": "knowledge/electrical_engineering/electrical-engineering-009.md", + "knowledge_sha256": "89394c70c7b87e9bd48f8c0841b1aba776098ebce9eaa59365782fa0c8542575" + }, + "electrical-engineering-008:p2:c01": { + "chunk_id": "electrical-engineering-008:p2:c01", + "course_id": "electrical_engineering", + "source_id": "electrical-engineering-008", + "source_title": "电工与电子技术II 复习大纲 修改", + "heading_path": [ + "电工与电子技术II 复习大纲 修改" + ], + "locator_type": "page", + "locator_start": 2, + "locator_end": 2, + "question_id": null, + "text": "(二)“电气控制”模块\n\n1. 磁路与铁心线圈电路\n\n要求:了解磁路的基本概念;了解交流铁心线圈电路的基本电磁关系。了解变压器的基\n\n本结构、工作原理、额定值的意义、外特性及电压、电流、阻抗变换的功能。\n\n重点:变压器的电压、电流、阻抗变换的功能。\n\n2. 异步电动机\n\n教学要求:了解三相异步电动机的基本结构、工作原理、机械特性;理解三相异步电动\n\n机铭牌数据的意义;掌握起动和反转的方法,了解调速方法及其发展。\n\n重点:三相异步电动机的工作原理、电磁转矩和机械特性;三相异步电动机的起动和反\n\n转的方法;三相异步电动机铭牌数据。\n\n难点:三相异步电动机的转矩和机械特性。\n\n4. 继电接触控制系统\n\n要求:了解常用控制电器(断路器、组合开关、按钮、行程开关、交流接触器、热继电\n\n器、中间继电器、时间继电器);了解继电接触器控制系统的基本控制电路(直接起动、正\n\n反转、顺序控制、时间控制等电路)。\n\n重点:交流接触器、热继电器等常用控制电器的工作原理与使用;三相异步电动机直接\n\n起动控制、正反转控制、顺序控制等电路的设计;\n\n难点:控制电路中“自锁”、“互锁”环节的作用和使用;\n\n(三)“模拟电子技术”模块\n\n1. 半导体器件\n\n要求:了解二极管、稳压管和三极管的基本构造、工作原理和特性曲线,理解主要参数\n\n的意义;理解PN 结的单向导电性,三极管的电流分配和电流放大作用;会分析含有二极管\n\n的电路;三极管三个工作状态的判别。\n\n重点:会分析含有二极管的电路;三极管三个工作状态的判别。\n\n2. 三极管和基本放大电路\n\n要求:理解共射极、共集电极单管放大电路静态工作点的作用和简化小信号模型的分析\n\n方法。了解多级放大的概念及多级放大电路的输入阻抗、输出阻抗和放大倍数的计算。了解\n\n差动放大电路的工作原理。\n\n重点:固定偏置放大电路、分压式偏置电路、射极输出器等基本放大电路的静态分析和\n\n动态分析。\n\n难点:放大电路的简化小信号模型的分析方法;\n\n3. 集成运放电路\n\n要求:了解集成运算放大器的基本概念、电压传输特性。掌握理想运算放大器的基本分\n\n析方法。理解用集成运算放大器组成的比例、加、减、积分和微分运算电路的工作原理。\n\n重点:集成运算放大器组成的比例、加、减运算电路的工作原理。\n\n难点:集成运算放大器的电压传输特性;多级线性运算电路的分析。", + "text_sha256": "c329bdeecba011b7b1af8896deda1959de200c7ad45fe180906b426f5073fd27", + "knowledge_path": "knowledge/electrical_engineering/electrical-engineering-008.md", + "knowledge_sha256": "5ed86f920aa2021d69997d375592206a2d00efe2be7ba714aa542886b54b307b" + }, + "electrical-engineering-003:p4:c01": { + "chunk_id": "electrical-engineering-003:p4:c01", + "course_id": "electrical_engineering", + "source_id": "electrical-engineering-003", + "source_title": "2020电工学a卷", + "heading_path": [ + "NI#" + ], + "locator_type": "page", + "locator_start": 4, + "locator_end": 4, + "question_id": null, + "text": "S.BMn 11 7, *i, 5u, $i. (10+)\n\nIks2\n\n2kS2\n\n4 2mA\n2k2\n\n6. *hMA Mtn R12BiR, –R\nNA,\nB1UC=\n500_f.A2RBHR,=10002.\n3TiARRV, AS 20V, R:\n(1)ĦAS,Ht,S,iF. İAAK A,\n* V,%A;\n(2)*S,BH,S,WAHMAAKA, AK\nV, ;\n(3)F*S, S,\nt,\nH\nhKA, H\nK#V,HRK. (KAMAEHR,\nARI\nFAE)\n\nu,\n\n12\n\nE,\n, #2U.#14\n\n1.2##MA,\nB,C IAKMA 13Brk,\nt#o\n#AR (OMDAARS} \"o\").(8)\n\nB\n\nB\n\n13\n\n(\nTR)", + "text_sha256": "93dbafe3baaee2579879cf00048c8add28af518a6bdb0f59165f6c5a5500a254", + "knowledge_path": "knowledge/electrical_engineering/electrical-engineering-003.md", + "knowledge_sha256": "48f1c200ed3d8c1041f1e1e4764e9ee7bfd11d1ff09267fb7b0f4ab62679d110" + }, + "embedded-systems-018:p8:q-embedded-systems-018-q39:c01": { + "chunk_id": "embedded-systems-018:p8:q-embedded-systems-018-q39:c01", + "course_id": "embedded_systems", + "source_id": "embedded-systems-018", + "source_title": "嵌入式期末真题回忆版有答案", + "heading_path": [ + "嵌入式期末真题回忆版有答案" + ], + "locator_type": "page", + "locator_start": 8, + "locator_end": 8, + "question_id": "embedded-systems-018-Q39", + "text": "嵌入式期末真题回忆版复原(答案与解析版)\n\nUART4 初始化代码:\n\nvoid UART4_Init(void)\n\n{\n\nGPIO_InitTypeDef GPIO_InitStructure;\n\nUSART_InitTypeDef USART_InitStructure;\n\nRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);\n\nRCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4, ENABLE);\n\nGPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;\n\nGPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;\n\nGPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;\n\nGPIO_Init(GPIOC, &GPIO_InitStructure);\n\nGPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;\n\nGPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;\n\nGPIO_Init(GPIOC, &GPIO_InitStructure);\n\nUSART_InitStructure.USART_BaudRate = 115200;\n\nUSART_InitStructure.USART_WordLength = USART_WordLength_8b;\n\nUSART_InitStructure.USART_StopBits = USART_StopBits_1;\n\nUSART_InitStructure.USART_Parity = USART_Parity_No;\n\nUSART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;\n\nUSART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;\n\nUSART_Init(UART4, &USART_InitStructure);\n\nUSART_Cmd(UART4, ENABLE);\n\n}\n\n解. UART4 挂在 APB1 总线上,所以要使能 RCC_APB1Periph_UART4。PC10 配置为复用推挽输出\n\n作为 TX,PC11 配置为浮空输入作为 RX。串口参数应与串口助手保持一致,如 115200 波特率、8 位\n\n数据位、1 位停止位、无校验、无硬件流控。\n\n— 由回忆版整理,答案以课堂与教材要求为准 —", + "text_sha256": "cf20b4890480ad2e31756e0b7799203050b203174d82dad554376a70f6c6e82f", + "knowledge_path": "knowledge/embedded_systems/embedded-systems-018.md", + "knowledge_sha256": "b0a305a92fc6c0807a52691e4424127417d1774a288f99fa3c3abf7a972c0181" + }, + "embedded-systems-017:p4:q-embedded-systems-017-q39:c01": { + "chunk_id": "embedded-systems-017:p4:q-embedded-systems-017-q39:c01", + "course_id": "embedded_systems", + "source_id": "embedded-systems-017", + "source_title": "嵌入式期末真题回忆版无答案", + "heading_path": [ + "嵌入式期末真题回忆版无答案" + ], + "locator_type": "page", + "locator_start": 4, + "locator_end": 4, + "question_id": "embedded-systems-017-Q39", + "text": "嵌入式期末真题回忆版复原(仅题目版)\n\n查询方式代码:\n\nwhile (1)\n\n{\n\nif (TIM_GetFlagStatus(TIMx, TIM_FLAG_Update) != RESET)\n\n{\n\nTIM_ClearFlag(TIMx, TIM_FLAG_Update);\n\nSend_Width();\n\n}\n\n}\n\n中断方式代码:\n\nvoid TIMx_IRQHandler(void)\n\n{\n\nif (TIM_GetITStatus(TIMx, TIM_IT_Update) != RESET)\n\n{\n\nTIM_ClearITPendingBit(TIMx, TIM_IT_Update);\n\nSend_Width();\n\n}\n\n}\n\nUART4 初始化代码:\n\nvoid UART4_Init(void)\n\n{\n\nGPIO_InitTypeDef GPIO_InitStructure;\n\nUSART_InitTypeDef USART_InitStructure;\n\nRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);\n\nRCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4, ENABLE);\n\nGPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;\n\nGPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;\n\nGPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;\n\nGPIO_Init(GPIOC, &GPIO_InitStructure);\n\nGPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;\n\nGPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;\n\nGPIO_Init(GPIOC, &GPIO_InitStructure);\n\nUSART_InitStructure.USART_BaudRate = 115200;\n\nUSART_InitStructure.USART_WordLength = USART_WordLength_8b;\n\nUSART_InitStructure.USART_StopBits = USART_StopBits_1;\n\nUSART_InitStructure.USART_Parity = USART_Parity_No;\n\nUSART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;", + "text_sha256": "27c2a4eb2ab23c77aaf80c2b8773844b0bc43dd5287a72beb1e7ac5f2ea50952", + "knowledge_path": "knowledge/embedded_systems/embedded-systems-017.md", + "knowledge_sha256": "87dc6068ca0c20f89e7930d2e18e28fb3f7658af976b9ae9815dc130587f5a49" + }, + "embedded-systems-019:h-作业内容-2025:c01": { + "chunk_id": "embedded-systems-019:h-作业内容-2025:c01", + "course_id": "embedded_systems", + "source_id": "embedded-systems-019", + "source_title": "作业内容-2025", + "heading_path": [ + "作业内容-2025" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "1. 汇编部分:\n\n(1)运行以下程序后:\n\nMOV r0, #10\n\nMOV r1, #3\n\nADD r0, r0, r1\n\nMOV r2,#10h\n\nADD r2, r2, r1\n\nADD r3, r1, #2\n\nAND r4, r1, r0\n\nSUB r5, r0, r1\n\nCMP r0,r1\n\nMRS r6,CPSR\n\nCMP r1,r0\n\nMRS r7,CPSR\n\nMUL r8, r0, r1\n\nMVN r9,#0x88000000\n\nMOV r10,#0x12800000\n\nr0= r1= r2= r3=\n\nr4= r5= r6= r7=\n\nr8= r9= r10=\n\n(2)运行以下程序后:\n\nMOV R0,#0x100\n\nMOV R1,#0x100\n\nLDR R2,=0x66122345\n\nSTR R2,[R0]\n\nLDRB R3,[R0,#2]\n\nLDRB R4,[R0]\n\nLDRB R5,[R1,#2]!\n\nLDRB R6,[R1]\n\nLDRB R7,[R0],#2\n\nLDRB R8,[R0]\n\nLDRH R9,0x100\n\n小端模式:\n\nr0= r1= r2= r3=\n\nr4= r5= r6= r7=\n\nr8= r9=\n\n大端模式:\n\nr0= r1= r2= r3=\n\nr4= r5= r6= r7=\n\nr8= r9=\n1. 编程题 (可利用proteus仿真实现)\n\n(1)编写程序控制2个LED全亮和2个LED全灭的代码,包括初始化代码和运行代码,2个引脚可以考虑选择PA0和PA1。\n\n(2)利用外部中断实现按钮控制灯亮灭程序,按键接PA8,按键按下时PA8为低电平;LED接PB1,当PB1为高电平时,LED灯亮;按键没有按下时,熄灭LED。\n\n(3)编写程序使用USART1串口,实现可接收任意字节的串口通信程序,并可把接收到的数据显示在串口终端上。\n\n(4)编写利用STM32通用定时器精确延时10ms的主要代码。\n\n(5)编写程序:使用STM32芯片采用查询和中断两种方式采集ADC1通道5中的外部电压。计算当STM32芯片ADC的数字值为819时,对应的模拟电压是多少,写出计算过程。\n\n(6)编写程序利用STM32 DMA实现对ADC通道5外部电压的采集。", + "text_sha256": "4ace7b5eb4751abe4f9b1deb382cb3b324e4f4f2032e7889b4557f4d2bf3bced", + "knowledge_path": "knowledge/embedded_systems/embedded-systems-019.md", + "knowledge_sha256": "f8bb5b0517cfb502342d0658d2b45a48697742c2571a3f3832d7fb4d7520764e" + }, + "engineering-mathematical-analysis-1-021:p2:q-engineering-mathematical-analysis-1-021-q7:c01": { + "chunk_id": "engineering-mathematical-analysis-1-021:p2:q-engineering-mathematical-analysis-1-021-q7:c01", + "course_id": "engineering_math_analysis_1", + "source_id": "engineering-mathematical-analysis-1-021", + "source_title": "2022A解答", + "heading_path": [ + "2022A解答" + ], + "locator_type": "page", + "locator_start": 2, + "locator_end": 2, + "question_id": "engineering-mathematical-analysis-1-021-Q7", + "text": "1\n2\nlim\n= lim\narcsin\n\n解:\n\n\n\n2\n\n0\n2\n2\n\nx\n\n\n\n\n\nf u du\ntf x\nt\ndt\n\n\n\n\nx\n\n0\n2\n2\n4\n4\n0\n0\n\nx\nt\nu\nx\nx\n\n\n\nx\nx\n\n2\n\nx\n\n\n\n\n……4 分\n\nf u du\n\n0\n4\n0\n1\n=\nlim\n2\n\nx\n\n\nx\n\n\n\n\n\n\n2\n2\n\n3\n2\n0\n0\n2\n0\n1\n1\n=\nlim\nlim\n2\n4\n4\nx\nx\nf x\nx\nf x\nf\n\nx\nx\n\n\n\n\n\n……6 分\n\n\n1\n1\n0\n4\n4\nf \n\n\n……8 分\n\n2.\n求不定积分\n2\n1\nx\ndx\n\n\n.\n\n2\n2\n=\n1\n=\n1\n2\n1\n\nx\nI\nx\ndx x x\nx\ndx\nx\n\n\n\n\n\n\n\n\n解:\n2\n2\n\n2\n2\n\n2\n1+1\n=\n1\n1\n\nx\nx x\ndx\nx\n\n\n\n\n\n\n……4 分\n\n2\n1\n=\n1\n=\n1\nln\n1\n1\nx x\nI\ndx x x\nI\nx\nx\nx\n\n\n\n\n\n\n\n\n……6 分\n\n2\n2\n2\n\n所以,\n2\n2\n2\n1\n1\n=\n1\n=\n1\nln\n1 +\n2\n2\nI\nx\ndx\nx x\nx\nx\nC\n\n\n\n\n\n……8 分\n\n另解:令\nsec ,\n0, 2\nx\nt t\n\n\n\n\n\n\n\n\n\n,则\n\n2\n=\n1\n= tan\nsec\nI\nx\ndx\ntd\nt\n\n\n\n……4 分\n\n\n\n3\n2\n= tan\nsec\nsec\n= tan\nsec\nsec\ntan\n1\nt\nt\ntdt\nt\nt\nt\nt\ndt\n\n\n\n\n\n\n\n\n\n= tan\nsec\nI\nsec\n= tan\nsec\nln sec\ntan\nI\nt\nt\ntdt\nt\nt\nt\nt\n\n\n\n\n\n\n\n……6 分\n\n所以,\n1\nI=\ntan\nsec\nln sec\ntan\n+\n2\nt\nt\nt\nt\nC\n\n\n\n\n\n\n\n\n2\n2\n1\n1\n=\n1\nln\n1 +\n2\n2\nx x\nx\nx\nC\n\n\n\n……8 分", + "text_sha256": "e340926a8d118f78591d35ba5de676840fe7334265d8f5993a5bc24b63e84b07", + "knowledge_path": "knowledge/engineering_math_analysis_1/engineering-mathematical-analysis-1-021.md", + "knowledge_sha256": "cd7c4f65c8e4969eaa2dc52a16e7e2764254fbc4512f78b69e527ec4353aed5b" + }, + "engineering-mathematical-analysis-1-011:p7:q-engineering-mathematical-analysis-1-011-q18:c01": { + "chunk_id": "engineering-mathematical-analysis-1-011:p7:q-engineering-mathematical-analysis-1-011-q18:c01", + "course_id": "engineering_math_analysis_1", + "source_id": "engineering-mathematical-analysis-1-011", + "source_title": "2017软件工科数学分析上A卷及答案", + "heading_path": [ + "2017软件工科数学分析上A卷及答案" + ], + "locator_type": "page", + "locator_start": 7, + "locator_end": 7, + "question_id": "engineering-mathematical-analysis-1-011-Q18", + "text": "四、证明题(2 小题,每小题10 分,共20 分)\n\n1. 设f(x) 在[a, b] 上满⾜李普希兹条件:|f(x) −f(y)| ⩽L|x −y|(∀x, y ∈[a, b]),其中L 为常数。\n\n证明:f(x) 在[a, b] 上⼀致连续。\n\n证明:∀ε > 0, ∃δ = ε\n\nL,使得当x1, x2 ∈[a, b] 且满⾜|x1 −x2| < δ 时,\n\n|f(x1) −f(x2)| ⩽L|x1 −x2| < Lδ = ε.\n\n因此,f(x) 在[a, b] ⼀致连续。\n\n2. 设函数f(x) 在[−1, 1] 上有三阶连续导数,且f(−1) = 0, f(1) = 1, f ′(0) = 0,证明:⾄少存在\nξ ∈(−1, 1), 使得f ′′′(ξ) = 3。\n\n解:考虑f(x) 在x = 0 处带Lagrange 余项的三阶Taylor 公式。存在ξ1 ∈(−1, 0) 使得\n\nf(−1) = f(0) + f ′(0)(−1) + f ′′(0)\n\n2!\n(−1)2 + f ′′′(ξ1)\n\n3!\n(−1)3.\n\n即,\n\n0 = f(0) + f ′′(0)\n2!\n−1\n\n6f ′′′(ξ1).\n\n同理,存在ξ2 ∈(0, 1) 使得\n\nf(1) = f(0) + f ′(0)1 + f ′′(0)\n\n2!\n12 + f ′′′(ξ2)\n3!\n13.\n\n即,\n\n1 = f(0) + f ′′(0)\n2!\n+ 1\n\n6f ′′′(ξ2).\n\n因此,\n\nf ′′′(ξ1) + f ′′′(ξ2)\n\n2\n= 3.\n\n由于f ′′′(x) 在[−1, 1] 连续,由介值定理,存在ξ ∈(ξ1, ξ2) ⊂(−1, 1),使得\n\nf ′′′(ξ) = f ′′′(ξ1) + f ′′′(ξ2)\n\n2\n= 3.\n\n《⼯科数学分析》试卷\n第5 页共6 页", + "text_sha256": "68dbabad269166f924bab3e4235c3ff22674400beb30d50525ed28b16c56938b", + "knowledge_path": "knowledge/engineering_math_analysis_1/engineering-mathematical-analysis-1-011.md", + "knowledge_sha256": "f865e5f78ee4722a9015b5fdc15e40eb4c2b5b175f2792ef899f781f006088bc" + }, + "engineering-mathematical-analysis-1-015:p2:q-engineering-mathematical-analysis-1-015-q11:c01": { + "chunk_id": "engineering-mathematical-analysis-1-015:p2:q-engineering-mathematical-analysis-1-015-q11:c01", + "course_id": "engineering_math_analysis_1", + "source_id": "engineering-mathematical-analysis-1-015", + "source_title": "2018软件工科数学分析上B卷及答案", + "heading_path": [ + "2018软件工科数学分析上B卷及答案" + ], + "locator_type": "page", + "locator_start": 2, + "locator_end": 2, + "question_id": "engineering-mathematical-analysis-1-015-Q11", + "text": "2.\n求不定积分\nsin\n1 cos\nx\nx dx\nx\n\n\n\n。\n\n2\n2\nsin\nsin\n1 cos\n2cos\n2cos\n2\n2\n\nx\nx\nx\nx\ndx\ndx\ndx\nx\nx\nx\n\n\n\n\n\n\n\n………….4 分\n\n解:\n\ntan\ntan\n2\n2\nx\nx\nxd\ndx\n\n\n\n\n………….6 分\n\nx\nx\nx\nx\ndx\ndx\n\n\n\n\ntan\ntan\ntan\n2\n2\n2\n\n\n\n\n\n\nx\nx\nC\n\ntan 2\n\n\n\n\n\n…………8 分\n\n2\n\n2\n2\n0\n0\na\nx dx\na\nx\na\n\n3.\n计算定积分\n\n\n\n\n\n\n。\n\n解:令\n2\ntan ,\nsec\nx\na\nt dx\na\ntdt\n\n\n…………2 分\n\n\n\n\n\n\n\n\n…………5 分\n\n2\n2\n2\n4\n2\n2\n0\n0 tan\nsec\na\nx dx\nI\na\nt\ntdt\nx\na\n\n\n\n\n\n2\n4\n0 tan\nsec\na\ntd\nt\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n2\n2\n4\n4\n0\n0\ntan\nsec\nsec\n1\ntan\na\nt\nt\nt\nt dt\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n…………6 分\n\n2\n2\n4\n4\n0\n0\n2\nsec\ntan\nsec\na\ntdt\nt\ntdt\n\n\n\n\n\n\n\n2\n2\n4\n0\n2\nln sec\ntan\na\na\nt\nt\nI\n\n2\n2\n\na\nx dx\na\nI\n\n所以,\n\n\n\n\n\n\n\n\n\n\n\n\n\n…………8 分\n\n2\n2\n0\n2\nln 1\n2\n2\n\nx\na\n\n《\n工科数学分析(一))》试卷第2 页共5 页", + "text_sha256": "240932b0c0747d0f215faeb441efed059a4273add428adce54902430cd6ae7a0", + "knowledge_path": "knowledge/engineering_math_analysis_1/engineering-mathematical-analysis-1-015.md", + "knowledge_sha256": "bd3eaa6e949f3d33b810332ac033cdcd1e189dbaf91436a7d6691f7fd8ab2671" + }, + "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q6:c01": { + "chunk_id": "engineering-mathematical-analysis-2-017:q-engineering-mathematical-analysis-2-017-q6:c01", + "course_id": "engineering_math_analysis_2", + "source_id": "engineering-mathematical-analysis-2-017", + "source_title": "2013级软件 工科数学分析下A附解答", + "heading_path": [ + "2013级软件 工科数学分析下A附解答" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": "engineering-mathematical-analysis-2-017-Q6", + "text": "五、**应用题**(本题10分)\n\n7. 在第一象限内作椭球面$\\frac{x^2}{a^2}+\\frac{y^2}{b^2}+\\frac{z^2}{c^2}=1$的切平面,使切平面与三个坐标面所围成的四面体的体积最小,求切点的坐标。\n\n解:设$\\left ( {{x}_{0},{y}_{0},{z}_{0}}\\right )$为椭球面上在第一象限的一点,过此点的切平面方程为\n\n$$\n\\frac {2{x}_{0}} {{a}^{2}}\\left ( {x-{x}_{0}}\\right )+\\frac {2{y}_{0}} {{b}^{2}}\\left ( {y-{y}_{0}}\\right )+\\frac {2{z}_{0}} {{c}^{2}}\\left ( {z-{z}_{0}}\\right )=0\n$$\n\n化成截距式方程\n\n$$\n\\frac {x} {\\frac {{a}^{2}} {{x}_{0}}}+\\frac {y} {\\frac {{b}^{2}} {{y}_{0}}}+\\frac {z} {\\frac {{c}^{2}} {{z}_{0}}}=\\frac {{x}_{0}^{2}} {{a}^{2}}+\\frac {{y}_{0}^{2}} {{b}^{2}}+\\frac {{z}_{0}^{2}} {{c}^{2}}=1\n$$\n\n此切平面与坐标面围成四面体的体积为$V=\\frac {1} {6}\\frac {{\\left ( {abc}\\right )}^{2}} {{x}_{0}{y}_{0}{z}_{0}}$ 3分\n\n要求$V=\\frac {1} {6}\\frac {{\\left ( {abc}\\right )}^{2}} {xyz}$满足条件$\\frac {{x}^{2}} {{a}^{2}}+\\frac {{y}^{2}} {{b}^{2}}+\\frac {{z}^{2}} {{c}^{2}}=1\\left ( {x>0,y>0,z>0}\\right )$的最小值,只需求$f\\left ( {x,y,z}\\right )=xyz$满足条件$\\frac {{x}^{2}} {{a}^{2}}+\\frac {{y}^{2}} {{b}^{2}}+\\frac {{z}^{2}} {{c}^{2}}=1\\left ( {x>0,y>0,z>0}\\right )$的最大值。\n\n由拉格朗日乘数法,只需求以下函数的驻点\n\n$F\\left ( {x,y,z,\\lambda }\\right )=xyz+\\lambda \\left ( {\\frac {{x}^{2}} {{a}^{2}}+\\frac {{y}^{2}} {{b}^{2}}+\\frac {{z}^{2}} {{c}^{2}}-1}\\right )$ 6分", + "text_sha256": "b193f8ab5b86a10aca5ad8b6fe447a35b9882abecf37bb7c5aa55637a57d3ef2", + "knowledge_path": "knowledge/engineering_math_analysis_2/engineering-mathematical-analysis-2-017.md", + "knowledge_sha256": "5fe3b49d3842d2e0d0c8f4047fa8fafa31f250ccbec43c9dc37fa0198f5d0f6d" + }, + "engineering-mathematical-analysis-2-035:p2:q-engineering-mathematical-analysis-2-035-q3:c01": { + "chunk_id": "engineering-mathematical-analysis-2-035:p2:q-engineering-mathematical-analysis-2-035-q3:c01", + "course_id": "engineering_math_analysis_2", + "source_id": "engineering-mathematical-analysis-2-035", + "source_title": "2019级 工科数学分析(二)A答案", + "heading_path": [ + "2019级 工科数学分析(二)A答案" + ], + "locator_type": "page", + "locator_start": 2, + "locator_end": 2, + "question_id": "engineering-mathematical-analysis-2-035-Q3", + "text": "2 ,\nz\nz\nx\ny x\n\n\n\n\n\n2\n2\n\n2,设\n2\n2\n2\n2\n(\n+\n)\nz\nf x\ny\nx y\n=\n,\n,其中f 为任意阶可微函数,求\n\n。\n\n解:因为\n'\n2\n'\n1\n2\n2\n2\nz\nxf\nxy f\nx\n=\n+\n\n\n,所以………………………………..……………………..…………3 分\n\n\n=\n+\n+\n+\n+\n+\n\n=\n+\n+\n+\n+\n\n2\n'\n2\n''\n2\n2\n''\n2\n'\n2\n2\n''\n2\n4\n''\n1\n11\n12\n2\n21\n22\n2\n\nz\nf\nx f\nx y f\ny f\nx y f\nx y f\nx\n\n2\n4\n4\n2\n4\n4\n\n………………………..…………6 分\n\n'\n2\n'\n2\n''\n2\n2\n''\n2\n4\n''\n1\n2\n11\n12\n22\n\n2\n2\n4\n8\n4\n\nf\ny f\nx f\nx y f\nx y f\n\n\n\n\n\n\n=\n=\n+\n+\n+\n+\n\n\n\n\n\n\n\n\n2\n''\n3\n''\n'\n3\n''\n3\n3\n''\n11\n12\n2\n21\n22\n\nz\nz\nxyf\nx yf\nxyf\nxy f\nx y f\ny x\ny\nx\n\n4\n4\n4\n4\n4\n\n……………………..…………9 分\n\n(\n)\n\n=\n+\n+\n+\n+\n\n''\n2\n2\n''\n3\n3\n''\n'\n11\n12\n22\n2\n\n4\n4\n4\n4\n\nxyf\nxy x\ny\nf\nx y f\nxyf\n\n3,计算\n(\n)\n+\nx\ny z dxdydz\n\n+\n\n,其中是曲面\n2\n2\nz\nx\ny\n=\n+\n与\n2\n2\n1\nz\nx\ny\n=\n−\n−\n所围成的区域.\n\n\n\n解:利用球坐标系:\nsin\ncos ,\nsin\nsin ,\ncos\nx\ny\nz\n\n\n\n\n\n\n\n\n=\n=\n=\n。……..………….………3 分\n\n则两个边界曲面的方程分别为:\n,\n1\n4\n\n\n\n=\n= ,\n\n故可表示为\n'\n:0\n2 ,0\n0\n1\n4\n\n\n\n\n\n\n\n\n\n\n\n,\n。\n\n(\n)\n\n\n\n+\n\nx\ny z dxdydz\n\n+\n\n\n\n(\n)\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n+\n\n\n\n2\n\n=\n\nsin\ncos\nsin\nsin\ncos\nsin\n\n+\n\nd d d\n\n\n\n'\n\n\n\n\n2\n/4\n1\n\n(\n)\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n+\n\n2\n\n+\nsin\n=\n\nd\nd\nd\n\nsin\ncos\nsin\nsi\n\nn\ncos\n\n0\n0\n\n0\n\n……..………….………7 分\n\n\n\n\n\n/4\n1\n/4\n1\n/4\n1\n2\n3\n2\n3\n3\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsin\nsin\ncos\nsin\n=0\n+0\n+2", + "text_sha256": "1b265d3463e24761caeb8c95675bf3df6fb00881a17371d5ef2107c9852f6b00", + "knowledge_path": "knowledge/engineering_math_analysis_2/engineering-mathematical-analysis-2-035.md", + "knowledge_sha256": "173395d7bbe125d51cf83e8162e905c69288bda64741974c416e9154d9051baa" + }, + "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c01": { + "chunk_id": "engineering-mathematical-analysis-2-016:h-2013级软件-工科数学分析下a:c01", + "course_id": "engineering_math_analysis_2", + "source_id": "engineering-mathematical-analysis-2-016", + "source_title": "2013级软件 工科数学分析下A", + "heading_path": [ + "2013级软件 工科数学分析下A" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "**诚信应考,考试作弊将带来严重后果!**\n\n**华南理工大学本科生期末考试**\n\n**《工科数学分析》2013—2014学年第二学期期末考试试卷(A)卷**\n\n**注意事项:1.** **开考前请将密封线内各项信息填写清楚;**\n\n**2.** **所有答案请直接答在试卷上(或答题纸上);**\n\n**3.考试形式:闭卷;**\n\n**4.** **本试卷共** **5个 大题,满分100分,**\t**考试时间120分钟**。\n\n| **题 号** | **一** | **二** | **三** | **四** | **五** | **总分** |\n|---|---|---|---|---|---|---|\n| **得 分** | | | | | | |\n\n**一、单项选择题**(每小题3分,共15分)\n\n1.若$Y_1,Y_2$是非齐次线性方程$y''+ay'+by=f(x)$的两个特解,则下面结论中正确的是( )\n\n| A | $y_1+y_2$是非齐次线性方程的解 | B | $y_1-y_2$是非齐次线性方程的解 |\n|---|---|---|---|\n| C | $y_1+y_2$是$y''+ay'+by=0$的解 | D | $y_1-y_2$是$y''+ay'+by=0$的解 |\n\n2.设$z=f(x,y)$可微,且$f(x,x^2)=\\frac{1}{2},f_x(x,y)|_{y=x^2}=\\frac{1}{x}$,则$f_y(x,y)|_{y=x^2}=$( )\n\n| A | $-\\frac{1}{x^{2}}$ | B | $\\frac{1}{x^{2}}$ | C | $\\frac{1}{2x^{2}}$ | D | $-\\frac{1}{2x^{2}}$ |\n|---|---|---|---|---|---|---|---|\n\n3.设$C:x^{2}+y^{2}=a^{2},$取逆时针方向,则$\\oint_C\\frac{(x+y)dx-(x-y)dy}{x^2+y^2}=$( )\n\n| A | $-2\\pi$ | B | $2\\pi$ | C | $0$ | D | $-\\pi$ |\n|---|---|---|---|---|---|---|---|\n\n4.幂级数$\\sum_{n=1}^\\infty(-1)^{n-1}\\frac{(x-1)^n}{n}$的收敛域是 ( )", + "text_sha256": "4b7d9afe5b5a03489ea4ae45101ccdbdc97748e7a12f7fbfac2f8a4abe0f0dd9", + "knowledge_path": "knowledge/engineering_math_analysis_2/engineering-mathematical-analysis-2-016.md", + "knowledge_sha256": "c27e0947f9ba60a42aa5af4fdad06c01ef98f87257f726fbf0d85cfde8896cc0" + }, + "english-008:h-英语复习:c01": { + "chunk_id": "english-008:h-英语复习:c01", + "course_id": "english", + "source_id": "english-008", + "source_title": "英语复习", + "heading_path": [ + "英语复习" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "Acknowledges the\n\nAggregate demand\n\nAllocation and\n\nAppendix ,\n\nArbitrary power\n\nAnalogous to\n\nTo(adjacent)\n\nAttain standard\n\nBias against\n\nBulk(in)\n\nCite further\n\nWith(Coincide)\n\nConfine to\n\nComprehensive healthcare\n\nOf(comprises)\n\nCommodity prices\n\nConformity with\n\nContradiction between\n\nConverted ships\n\nDistorts consumers\n\nDomain .public\n\nDeny(nor)\n\nAt(the disposal)\n\nEliminate toxins\n\nEmpirical data\n\nErosion of\n\nEstates people\n\nExceed the\n\nExplicit and\n\nExtract sufficient\n\nFormat(in)\n\nFluctuations should\n\nGrade(make the)\n\nIdeology is\n\nImplicit learning\n\nIncentive payment\n\nIncidence of\n\nIncorporate audible\n\nInhibitions which\n\nInfrastructure refers\n\nInstructions in\n\nIntervals which\n\nIntegrity will\n\nIntrinsic interest\n\nIntervention ,\n\nLevy placed\n\nTowards(inclination)\n\nManipulation(Market)\n\nMinimum wages\n\nMinistry of\n\nNorm(became the)\n\noffset against\n\nAt(odds)\n\nOngoing process\n\nWith(Overlap)\n\nPreceding discussion\n\nPresumption of\n\nParadigm(war)\n\nPriority over\n\nQuotation(密西西比)\n\nRevision of\n\nRefined ,\n\nScope to\n\nSimulation results\n\nSomewhat\n\nSubsidiary of\n\nSuccessive nights\n\nTension between\n\nTransformation towards\n\nTriggered by\n\nthereby\n\nUnderlying asset\n\nUtility bills\n\nOf(violation)", + "text_sha256": "af8f5c3edc1533bb025b0dbbbd546f337e0fb4980e99da46603efcdb251ceda1", + "knowledge_path": "knowledge/english/english-008.md", + "knowledge_sha256": "f7046f2c3be01cf821bda2bd546e56e67e6fa71da2ece0fa0ed1a1439cf93283" + }, + "english-007:h-英语作文竞赛:c02": { + "chunk_id": "english-007:h-英语作文竞赛:c02", + "course_id": "english", + "source_id": "english-007", + "source_title": "英语作文竞赛", + "heading_path": [ + "英语作文竞赛" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "On one hand, the concept of involution captures the idea of recessive competition, where individuals feel tired to others' ambitions ,which pushes them constantly to struggle forward.At the same time , they also don't want to be surpassed by others. So they begin to strive when alone, pretending to be not that competitive. Undeniably, this mindset creates a culture of overwork, stress and anxiety for the sake of people's ambition to meet social expectations and achieve success at all costs. The pressure to keep up with the fast pace of development can be suffocating, leading many individuals to experience burn-out.\n\nOn the other hand, in response to this phenomenon, some individuals have embraced the idea of lying flat as a form of passive resistance against the relentless pursuit of success and the need to constantly compete. Lying flat advocates believe in rejecting the ratr race and choosing a more relaxed and minimalist lifestyle that prioritizes personal well-being and contentment over external achievements. By opting out of fierce competition, they aim to find peace and fulfillment in simplicity and self-acceptance.", + "text_sha256": "cc32763c07b3dfb288e00b6993bbbb6e3156d3f4c5201cfec8331d42cb05e2d5", + "knowledge_path": "knowledge/english/english-007.md", + "knowledge_sha256": "9c90a380f9e8b10723033b6ace68cc19b6904bd15099155534a9d7add8b3360e" + }, + "english-006:h-英语summary:c01": { + "chunk_id": "english-006:h-英语summary:c01", + "course_id": "english", + "source_id": "english-006", + "source_title": "英语SUMMARY", + "heading_path": [ + "英语SUMMARY" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "Unit 7,text A\n\nThe passage illustrates that children need physical education more than before .And it can be divided into three parts.\n\nIn the first part,the passage says about nowadays most students’ attitudes to PE are negative. It also says that physical exercises have two advantages . It can help you to own a healthy body and mind ,and it can also help you take up good exercises’ habits, which can influence you to be healthier than others even when you are an adult.\n\nIn the second part , it use three steps to prove its opinion is right. At the beginning, it tells physical exercises’ two advantages more specifically. Then the author emphasizes the schools’ terrible behaviors which stray away students’ ideas to doing physical exercises. And he hopes Belize’s children will doing more physical exercises so that they can make a name for themselves ,and also the country.At the end of this part, the author shows some kind of exercises, and illustrates the importance of doing more physical exercises again.", + "text_sha256": "10bc6f072e58b7544ba9101d7e13fc237d59686524961f2b0173e22a802bba6c", + "knowledge_path": "knowledge/english/english-006.md", + "knowledge_sha256": "36901fe184edd33bdd2aaae25375489e361f4f74ddbfff56ce7947fdd9bc3f35" + }, + "ideology-morality-and-rule-of-law-002:h-思政题目2024级回忆:c01": { + "chunk_id": "ideology-morality-and-rule-of-law-002:h-思政题目2024级回忆:c01", + "course_id": "ideology_morality_and_rule_of_law", + "source_id": "ideology-morality-and-rule-of-law-002", + "source_title": "思政题目2024级回忆", + "heading_path": [ + "思政题目2024级回忆" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "名词解释:世界观,社会公德,国家安全\n\n答案:P20,P167,P94\n\n辨析题:\n\n1、分析以下观点:“人生就在于满足感官的需求和快乐”\n\n2、19岁小明往游戏里充值了2万元,小明的父亲可以向游戏公司要回这2万元吗\n\n分析题:\n1. 爱国主义的基本内涵\n\n答案:P79\n1. 社会主义核心价值观和社会主义核心价值体系之间的关系\n\n答案:P110\n\n材料题:\n\n材料内容:来广州打工后成为广东省高级人民法院一名保安的许霆,来到广州市天河区黄埔大道某银行的ATM取款机取款。结果取出1000元后,他发现银行卡账户里只被扣了1元。经过反复操作多次,许霆先后取款171笔,合计17.5万元。\n1. 辨析许某的行为是否违反道德和法律\n1. 根据法律和道德的知识,分析法律和道德之间的联系和区别", + "text_sha256": "05fa0082242fcc889387a2b79c44a17ac4eb3b31d3913fff13fe16ae38197cec", + "knowledge_path": "knowledge/ideology_morality_and_rule_of_law/ideology-morality-and-rule-of-law-002.md", + "knowledge_sha256": "687a7ee31f35578585bfce7ffdadfa7055afebe968f37634fa686b873f99e882" + }, + "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q3:c01": { + "chunk_id": "ideology-morality-and-rule-of-law-001:q-ideology-morality-and-rule-of-law-001-q3:c01", + "course_id": "ideology_morality_and_rule_of_law", + "source_id": "ideology-morality-and-rule-of-law-001", + "source_title": "思政2023级试卷赖怡芳老师", + "heading_path": [ + "思政2023级试卷赖怡芳老师" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": "ideology-morality-and-rule-of-law-001-Q3", + "text": "1. 法律适用(P197)\n- **案例分析题(共2题,每小题15分,共30分)**(老师上课讲的)\n\n1.12岁的小明在母亲陪同下去公园玩耍,遇到在妻子陪同下的间歇性精神病人李强。小明戏弄李强,导致李强精神受到刺激而精神病发并殴打小明,小明受伤被送院治疗,支付了一笔医疗费。请问:小明的医疗费应当由谁来承担,请说明理由。\n\n2.张某拾得王某的母羊一只。张某拾得母羊后在自家小院里精心喂养母羊,不久后母羊产下一只小羊。王某知道后要求张某退还母羊和小羊。张某拒不退还。请问:王某是否有权要求张某归还母羊及小羊?为什么?\n- **简答题(共2题,每小题15分,共30分)**", + "text_sha256": "5feb9c77ae535a1d522f6e23e59932dc5f6eaf7f2eafdc5d416a02f4408411f0", + "knowledge_path": "knowledge/ideology_morality_and_rule_of_law/ideology-morality-and-rule-of-law-001.md", + "knowledge_sha256": "a8c0dc57a09cefb386ebb20d3057dcb92c388cbe0b0649239ff2156630c3b27c" + }, + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c02": { + "chunk_id": "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c02", + "course_id": "information_security_intro", + "source_id": "information-security-intro-003", + "source_title": "《信安导论》复习提纲 v1 (精简版)", + "heading_path": [ + "《信安导论》复习提纲 v1 (精简版)" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "2.4 公开密钥密码\n- 公钥密码提出的标志:1976年的Diffie-Hellman密钥交换算法(p33)\n- 公开密钥密码与对称密钥密码的不同:不是基于代替和置换,而是基于数学函数;非对称/双密钥; 六要素;支持不可抵赖性(不可否认性)(p32)\n- 公开密钥密码与对称密钥密码相比,其优缺点:\n - 优点:解决了密钥分发到的难题,密钥管理简单容易,便于实现数字签名。\n - 缺点:计算开销大、加密和解密速度慢、要求密钥位数更多、密文长度往往大于明文长度。\n- 公钥密码通信的安全性保障:私钥的保密性\n- 公钥密码体系的特点:公、私钥成对生成,公钥和算法对外公开,私钥保密。\n- 公钥密码体系的应用场合:(1)加密信息(机密性);(2)身份认证(可认证性);\n- 公钥密码的核心思想:单向陷门函数的三个条件、单向性、陷门性、陷门信息(p33);\n- Diffie-Hellman密钥交换算法:原根、离散对数、算法过程(p34)\n- 公开密钥算法数学基础:欧拉函数的概念、欧拉定理的使用、算法时间复杂度的表示方式(p35)\n- RSA密码算法:大整数因子分解问题、分组密码、密钥生成步骤、辗转相除法求逆元(p35-36)\n- 椭圆曲线密码体制(Elliptic Curve Cryptosystems,ECC)相比RSA的优势(p37)\n\n2.5 消息认证\n- 认证的目的:(1)验证收发双方;(2)验证消息的完整性;(p38)\n- 认证的手段:消息认证、数字签名、实体认证、摘要函数(Hash 函数)(p38)\n- 消息认证的目的:证明消息的信源、信宿真实性;消息内容没有受到篡改、消息序号和时间性正确。\n- 消息认证的手段:消息加密;消息认证码(MAC); (p38)\n- 主要的消息摘要算法:MD5, SHA-1, SHA-256等\n- 散列函数的健壮性:弱无碰撞、强无碰撞、单向性(p40-41)\n- 散列函数的安全长度:生日悖论、生日攻击、消息摘要长度下限…(p41)\n- 数字签名作用:防止抵赖\n- 数字签名原理:用私钥对散列值进行加密,用公钥做验证。(p45)\n\n第四章\n\n4.1\n- 身份认证的依据:三个方面:用户所知道的、所拥有的、所具有的…(p57)\n- 身份认证的技术:口令认证、密码学认证、生物特征认证,各自的优缺点(p57)\n- (补充)基于令牌的认证:用户持有的用于进行认证的一种物品,比如:银行卡(磁条卡、智能卡,……)、电子身份证;\n- 单因子认证与双因子认证;", + "text_sha256": "dd66a6cc5737ebf4659d10057e6768a7d1f12b55732632f91014ceffafd20dbb", + "knowledge_path": "knowledge/information_security_intro/information-security-intro-003.md", + "knowledge_sha256": "53e103a7b7817114cb6fac75e27dd055993866ff06e46998bdc756a2aa578d59" + }, + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c03": { + "chunk_id": "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c03", + "course_id": "information_security_intro", + "source_id": "information-security-intro-003", + "source_title": "《信安导论》复习提纲 v1 (精简版)", + "heading_path": [ + "《信安导论》复习提纲 v1 (精简版)" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "4.2 认证协议\n- 基于挑战-应答方式的认证协议基本原理(p58)\n- Needham-Schroeder认证协议:理解认证过程;\n- Kerberos认证协议:基于对称密钥系统为C/S应用提供的第三方认证服务;由AS和TGS构成;理解其认证过程(三阶段、六步骤)。(p59)\n- Windows系统安全认证:主域控制器的作用、交互过程不在网络上传递口令及其散列值(哈希值)。\n- Needham-Schroeder公钥认证协议:协议交互过程;(p62)\n- 公钥交换存在的问题: 双方直接交换公钥容易受到中间人攻击,由此提出了基于数字证书、利用PKI解决公钥交换的问题。(见ppt)\n- 数字证书的结构(X.509 v3)(p62 图4.4);\n- 数字证书的可信性验证方法: 获取证书、生成摘要、与CA签名比较……\n- 基于CA数字证书的认证协议:数字证书的概念、主要内容,身份认证过程(图4.5);(p62-63)\n\n4.3 PKI\n- 公钥基础设施(PKI)的组成结构及各个组件的功能(图4.6, p63-64)\n- PKI涉及的标准: 证书格式遵循X.509,访问协议遵循LDAP . (p64-66)\n- 根证书、证书链的概念(p64)\n- 用户查询证书库的目的:获取公钥、验证证书有效性(p64)\n- PKI的密钥备份与恢复功能(p64)\n- 证书申请撤销的原因(p64)\n- PKI的典型功能(p66)\n\n第五章\n\n5.1\n- 访问控制的基本组成元素: 主体、客体、访问控制策略(p67)\n- 主要的三种访问控制模型(p68)\n- 自主访问控制模型(DAC Model)的原理、权限的三种存储方式(ACL/ACCL/ACM), 优缺点; (p68-70)\n- 强制访问控制模型(MAC Model)的原理,优缺点(p70)\n- Bell-LaPadula (BLP)模型与Biba模型的比较(p70)\n- 基于角色的访问控制模型(RBAC Model)原理,优缺点;\n- 制定访问控制策略需遵守的三个原则(p72)\n\n5.3 Windows 系统的安全管理\n- Windows系统的访问控制的构成(两大组件)(p74)\n- 访问令牌和安全描述符的主要功能(p74-76)\n\n第六章", + "text_sha256": "6ac93338c0434ffec37700b42b806b56f22ed7d8c16dcaa37662d148bd798f16", + "knowledge_path": "knowledge/information_security_intro/information-security-intro-003.md", + "knowledge_sha256": "53e103a7b7817114cb6fac75e27dd055993866ff06e46998bdc756a2aa578d59" + }, + "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c01": { + "chunk_id": "information-security-intro-003:h-信安导论-复习提纲-v1-精简版:c01", + "course_id": "information_security_intro", + "source_id": "information-security-intro-003", + "source_title": "《信安导论》复习提纲 v1 (精简版)", + "heading_path": [ + "《信安导论》复习提纲 v1 (精简版)" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "复习提纲\n\n第一章\n\n1.1\n- 信息安全的ISO定义、信息安全的目的(p1)。\n- 信息安全的几个要素的涵义,具体包括:机密性、完整性、可用性、可控性、不可否认性。(p2)\n- 信息保障的三要素:人、技术和管理。(p2)\n- 信息保障的四个方面:保护、检测、反应和恢复。(p2)\n\n1.2\n- 信息安全威胁的基本类型:信息泄露、伪造、完整性破坏、业务否决或拒绝服务、未经授权访问(p3~4)\n\n1.3\n- 社会工程学攻击的概念 (教材p9)\n\n1.4\n- 信息安全的三个基本目标 ,CIA三元组,DAD三元组(教材p9)\n- 信息系统的三个基本要素:人、信息、系统(p10)\n- 信息系统的五个安全层次:物理安全、运行安全、数据安全、内容安全、管理安全(p10-11)\n\n第二章\n\n2.1\n- 密码学(Cryptography)的作用:是信息安全的核心基础。\n- 密码学的构成:(1)密码编码学;(2)密码分析学;\n- 密码编码学、密码分析学的定义(p15,2.1.1)\n- 现代密码学的理论基础:香农在1949年发表的《秘密体制的通信理论》使密码学真正成为了一门科学。(p15)\n- 加密通信模型(p16\t,图2.1)\n- 密码体制的五要素:M、C、K、E、D(p16)\n- 依据密码体制的特点及出现的时间,可以将密码大致划分为三个类别:古典替换密码、对称密钥密码和公开密钥密码。\n- 古典替换密码主要包括:单表代替密码、多表代替密码等。(p17)\n- 对称密钥密码通常分为两类:分组密码(Block Cipher)和序列密码(Stream Cipher,流密码)\n\n2.2 古典替换密码\n- 移位密码原理,凯撒密码是一种移位密码。\n- 乘数密码原理.\n- 仿射密码原理\n- 多表替代密码原理\n\n2.3 对称密钥密码\n- DES加密算法主要特点:分组长度,有效密钥长度,运算轮数…\n- 分组密码的工作模式:ECB模式,CBC模式,……(p27,2.3.3)\n- 三重DES基本原理(p30)\n- AES加密算法主要特点:分组长度、密钥长度、计算轮数…(p31)\n- (补充)对称密钥体制的加密过程中,混淆(confusion)和扩散(diffusion)两种操作的作用(参见ppt).", + "text_sha256": "cfc988858d12a92d7c6c8239b0f6ba9962c72bdc22811b63009d217e9e54bc3a", + "knowledge_path": "knowledge/information_security_intro/information-security-intro-003.md", + "knowledge_sha256": "53e103a7b7817114cb6fac75e27dd055993866ff06e46998bdc756a2aa578d59" + }, + "information-security-mathematics-007:q-information-security-mathematics-007-q3:c01": { + "chunk_id": "information-security-mathematics-007:q-information-security-mathematics-007-q3:c01", + "course_id": "information_security_mathematics", + "source_id": "information-security-mathematics-007", + "source_title": "信息安全数学基础期末试卷", + "heading_path": [ + "信息安全数学基础期末试卷" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": "information-security-mathematics-007-Q3", + "text": "(1) *F*对于运算“+”和运算“ · ”都构成群,运算“ · ”对于“+”满足分配律。\n\n(2) *F*对于运算 “+”构成交换群,单位元是*e*;*F*\\{*e*}对于运算“ · ”构成交换群,运算“ · ”对于“+”满足分配律。\n\n(3) *F*对于运算 “+”和 “ · ”构成交换环,运算“+”的单位元是*e*,运算“+”对于“ · ”满足分配律。\n\n(4) *F*对于运算“+”构成交换群,单位元是*e*;*F*\\{*e*}对于运算“ · ”构成交换环,运算“+”对于“ · ”满足分配律。\n\n**二.** 填空题(将正确答案填在 上):(每题2分,共20分)\n\n**1.**设*a*=1520,*b*=162,根据欧几里得除法,对整数*c*=-100,存在唯一一对整数*q*= ,*r*= ,使得*a*=*bq* + *r*,*c*  *r* < *b*+*c*。\n\n**2.**如果整数*a*,*b*满足(*a*, *b*)=1,那么(*a*+*b*, *a*-*b*)= 。\n\n**3.** *n*=1764的欧拉函数值 **(*n*)=______________。\n\n**4.**模11的平方剩余是 ,模11的平方非剩余是 。\n\n**5.**[12, 15, 21, 35]的最小公倍数是 。\n\n**6.** 模10的最小非负完全剩余系是 ,最小非负简化剩余系是 。\n\n**7.** 一次同余式234*x* ≡ 72(mod 198)的解数是 。\n\n**8.** *Q*为有理数集合,定义*Q*上的运算⊙为:对任意*a*,*b*Î*Q*,*a*⊙*b*=(*a*+*b*)-*a*×*b*。*Q*关于运算⊙的单位元为 ,4关于运算⊙的逆元是 。\n\n**9.** *F*13 *=*Z*/13*Z* \\{0}={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}关于运算:(*a*, *b*) (*a*×*b*)mod13构成群。则元素5生成的循环子群为 ,元素5的阶为____________。\n\n**10.** 设 *m* 是一个正整数,*a*是满足 的整数,则存在整数*a*¢,1≤*a*¢<*m* ,使得*aa*¢≡1 (mod *m*)。", + "text_sha256": "f01ad6ae25a2c025f825dac84f0e6c9f5d3b76a49023b3465b49ac08ea40db01", + "knowledge_path": "knowledge/information_security_mathematics/information-security-mathematics-007.md", + "knowledge_sha256": "27a9e85e00f55d62befa82db269208d363856d6fa383c94091a1dcbcc0b1f5df" + }, + "information-security-mathematics-006:p1:c01": { + "chunk_id": "information-security-mathematics-006:p1:c01", + "course_id": "information_security_mathematics", + "source_id": "information-security-mathematics-006", + "source_title": "信息安全数学基础2025回忆版", + "heading_path": [ + "信息安全数学基础2025回忆版" + ], + "locator_type": "page", + "locator_start": 1, + "locator_end": 1, + "question_id": null, + "text": "… … … … … … … … … … … … … … … … 密… … … … … … … … … … … … … … … … … … 封… … … … … … … … … … … … … … … 线… … … … … … … … … … … … … …\n\n姓名 学号\n 学院 专业 座位号\n\n诚信应考,考试作弊将带来严重后果!\n\n华南理工大学期末考试\n\n2025 级《信息安全数学基础》试卷回忆版\n\n注意事项:1. 考前请将密封线内填写清楚;\n 2. 所有答案请直接答在试卷上;\n 3.考试形式:闭卷;不许使用计算器;\n\n4. 本试卷共四大题,满分100 分,考试时间120 分钟。\n\n5. 作者:GuMianQAQ,夹带私货来了。\n题 号\n一\n二\n三\n四\n总分\n得 分\n评卷人\n\n一.选择题(在每小题的备选答案中只有一个正确答案,将正确答案序号填入下\n\n列叙述中的括号内,选错或多选不给分):\n\n1.设S = 1,2,3,4,5,6,7,8,9,10,下面定义的*为S 上的运算的是\n\n_____________ ________\n\nA. x ∗𝑦= [𝑥, 𝑦] B. x ∗𝑦= x −y C. x ∗𝑦= (𝑥, 𝑦) D. x ∗𝑦= x + y, x, y ∈𝑆\n\n( 密 封 线 内 不 答 题 )\n\n2.设a=17,b=6,根据欧几里得除法,对整数c=-100,存在唯一一对整\n\n数q= ,r= ,使得a=bq + r,c  r < b+c。\n\n3. 今天为星期二,这天后的22023天为星期几\n\n4. 下面以2 为基的拟素数为\n\nA.29 B.67 C.59 D.341\n\n5.设 a=23×32×54×116 ,b=22×36×74×113,使得a' | a,b' | b,a' ×b'=[a,\n\nb],(a',b' )=1 的a',b' 分别为( )。\n\n(1) 54 ×116 ,22×36×74, (2) 23×54 ,36×74×113,\n\n(3) 23×54 ×116 ,36×74, (4) 23×54 ×116 ,36×74×113\n\n二. 填空题(将正确答案填在 上):(每题2 分,共20 分)\n\n1.模29 下7 的逆元为\n\n2. (665, 399)= 。\n\n3. n=155232 的欧拉函数值 (n)=______________。", + "text_sha256": "60d863f41fe7ce8858086b0b7efd1846eaf4d9c3245238cba9c8399c0aa47378", + "knowledge_path": "knowledge/information_security_mathematics/information-security-mathematics-006.md", + "knowledge_sha256": "2ca26bc4fb9fb1592936d6116073f777fc845adaf14f20e7d20e60c90c6ee6cc" + }, + "information-security-mathematics-009:q-information-security-mathematics-009-q17:c01": { + "chunk_id": "information-security-mathematics-009:q-information-security-mathematics-009-q17:c01", + "course_id": "information_security_mathematics", + "source_id": "information-security-mathematics-009", + "source_title": "信息安全数学基础试卷-B", + "heading_path": [ + "信息安全数学基础试卷-B" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": "information-security-mathematics-009-Q17", + "text": "7.Wilson定理:设*p*是一个素数,则 。\n\n8.20××年1月18日是星期三,第220××0118天是星期 。\n\n9.(中国剩余定理) 设*m*1, …, *m**k*是*k*个两两互素的正整数,则对任意的整数*b*1, …, *b**k* 同余式组 *x*  *b*1 (mod *m*1)\n\n… … … …\n\n*x*  *b**k* (mod *m**k*)\n\n有唯一解。令*m*=*m*1…*m**k*,*m*=*m**i**M**i*,*i*=1,…,*k*,则同余式组的解为:\n\n,\n\n其中 。\n\n10.正整数*n*有标准因数分解式为 $n={p}_{1}^{{\\alpha }_{1}}\\cdots {p}_{k}^{{\\alpha }_{k}}$,则*n*的欧拉函数\n\n** (*n*)= 。\n\n三.证明题 (写出详细证明过程):(每题7分,共28分)", + "text_sha256": "b756bbd34c01979024747513f4ad74f5ccf2e385e870b8995096f308785cbec3", + "knowledge_path": "knowledge/information_security_mathematics/information-security-mathematics-009.md", + "knowledge_sha256": "97b5c0c34b18f4eceebcc58607ca36201b25fb89256c4bce3cbe7a5bfc92b81c" + }, + "intelligent-algorithms-001:h-cvrp:c01": { + "chunk_id": "intelligent-algorithms-001:h-cvrp:c01", + "course_id": "intelligent_algorithms", + "source_id": "intelligent-algorithms-001", + "source_title": "CVRP", + "heading_path": [ + "CVRP" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "```cpp\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nusing namespace std;\n\nstruct Node {\n int x, y;\n};\n\nvector nodes;\nvector demand;\nint capacity;\nint dimension;\nint depot;\nint best_value;\n\nint get_distance(int i, int j) {\n double dx = nodes[i].x - nodes[j].x;\n double dy = nodes[i].y - nodes[j].y;\n return (int)(sqrt(dx*dx + dy*dy));\n}\n\nvoid read_input(const string &filename) {\n ifstream file;\n file.open(filename);\n string line;\n while (getline(file, line)) {\n if (line.find(\"DIMENSION\") != string::npos) {\n istringstream iss(line);\n string tmp;\n iss >> tmp >> tmp >> dimension;\n }\n else if (!best_value && line.find(\"COMMENT\") != string::npos) {\n //std::cout << \"aaa\" << '\\n';\n istringstream iss(line);\n string tmp;\n iss >> tmp >> tmp >> tmp >> tmp >> tmp >> tmp >> tmp >> tmp >> tmp >> tmp >> tmp >> tmp;\n //std::cout << tmp << '\\n';\n int i = 0;\n while(tmp[i] >= '0' && tmp[i] <= '9')\n {\n best_value = best_value * 10 + (tmp[i] - '0');\n i++;\n }\n \n }\n else if (line.find(\"CAPACITY\") != string::npos) {\n istringstream iss(line);\n string tmp;\n iss >> tmp >> tmp >> capacity;\n }\n else if (line.find(\"NODE_COORD_SECTION\") != string::npos) {\n nodes.resize(dimension);\n for (int i = 0; i < dimension; ++i) {\n while (getline(file, line) && line.empty());\n istringstream iss(line);\n int s, x, y;\n iss >> s >> x >> y;\n nodes[s-1].x = x;\n nodes[s-1].y = y;\n }\n } else if (line.find(\"DEMAND_SECTION\") != string::npos) {\n demand.resize(dimension);\n for (int i = 0; i < dimension; ++i) {\n while (getline(file, line) && line.empty());\n istringstream iss(line);\n int s, d;\n iss >> s >> d;\n demand[s-1] = d;\n }\n } else if (line.find(\"DEPOT_SECTION\") != string::npos) {\n while (getline(file, line) && line.empty());\n istringstream iss(line);\n int s;\n iss >> s;\n if (s < 1 || s > dimension) {\n cerr << \"Error: Depot number \" << s << \" is out of range [1, \" << dimension << \"]\" << endl;\n exit(1);\n }\n depot = s - 1;\n }\n }\n // 验证 nodes 和 demand 的大小\n if (nodes.size() != dimension || demand.size() != dimension) {\n cerr << \"Error: nodes.size() = \" << nodes.size() \n << \", demand.size() = \" << demand.size() \n << \", but dimension is \" << dimension << endl;\n exit(1);\n }\n}\n\nint main() {\n srand(time(0));\n int T = 25;\n int MAX_GBL = 9999999;\n int SUM_GBL = 0;\n //std::cout << best_value << '\\n';\n while(T--)\n {\n read_input(\"C:/Users/24441/Desktop/A/A-n34-k5.vrp\");//请在这里输入文件名,建议直接复制文件路径\n std::cout << 25-T << '\\n';\n //std::cout << capacity << '\\n';\n // for(auto i : nodes)\n // {\n // std::cout << i.x << i.y << '\\n';\n // }\n\n const double alpha = 1.0;\n const double beta = 5.0;\n const double rho = 0.3;\n const double Q = 50.0;\n const int max_iterations = 300;\n const int num_ants = 50;\n const double initial_tau = 1.0;\n\n vector> tau(dimension, vector(dimension, initial_tau));\n double global_best_length = 1e18;\n vector> global_best_routes;\n\n for (int iter = 0; iter < max_iterations; ++iter) {\n vector>> all_ant_routes(num_ants);\n\n for (int ant = 0; ant < num_ants; ++ant) {\n vector visited(dimension, false);\n visited[depot] = true;\n for (int i = 0; i < dimension; ++i)\n if (demand[i] == 0) visited[i] = true;\n\n vector> routes;\n int current_node = depot;\n int current_cap = capacity;\n vector current_route;\n\n while (true) {\n vector candidates;\n for (int i = 0; i < dimension; ++i)\n if (!visited[i] && demand[i] <= current_cap)\n candidates.push_back(i);\n\n if (candidates.empty()) {\n if (!current_route.empty()) {\n routes.push_back(current_route);\n current_route.clear();\n current_cap = capacity;\n current_node = depot;\n } else break;\n } else {\n vector probs;\n double sum = 0.0;\n for (int j : candidates) {\n double pheromone = tau[current_node][j];\n double eta = 1.0 / get_distance(current_node, j);\n double p = pow(pheromone, alpha) * pow(eta, beta);\n sum += p;\n probs.push_back(p);\n }\n\n if (sum == 0) {\n int selected = candidates[rand() % candidates.size()];\n current_route.push_back(selected);\n visited[selected] = true;\n current_cap -= demand[selected];\n current_node = selected;\n } else {\n for (double &p : probs) p /= sum;\n double r = (double)rand() / RAND_MAX;\n double s = 0.0;\n int selected = candidates.back();\n for (int i = 0; i < (int)candidates.size(); ++i) {\n s += probs[i];\n if (r <= s) {\n selected = candidates[i];\n break;\n }\n }\n current_route.push_back(selected);\n visited[selected] = true;\n current_cap -= demand[selected];\n current_node = selected;\n }\n }\n\n bool all_visited = true;\n for (int i = 0; i < dimension; ++i)\n if (!visited[i] && demand[i] > 0) {\n all_visited = false;\n break;\n }\n if (all_visited) {\n if (!current_route.empty()) routes.push_back(current_route);\n break;\n }\n }\n all_ant_routes[ant] = routes;\n }\n\n double iter_best = 1e18;\n vector> iter_routes;\n for (auto &routes : all_ant_routes) {\n double len = 0;\n for (auto &route : routes) {\n if (route.empty()) continue;\n int prev = depot;\n for (int node : route) {\n len += get_distance(prev, node);\n prev = node;\n }\n len += get_distance(prev, depot);\n }\n if (len < iter_best) {\n iter_best = len;\n iter_routes = routes;\n }\n }\n\n if (iter_best < global_best_length) {\n global_best_length = iter_best;\n global_best_routes = iter_routes;\n }\n\n for (int i = 0; i < dimension; ++i)\n for (int j = 0; j < dimension; ++j)\n tau[i][j] *= (1 - rho);\n\n for (auto &route : iter_routes) {\n if (route.empty()) continue;\n int prev = depot;\n for (int node : route) {\n tau[prev][node] += Q / iter_best;\n tau[node][prev] += Q / iter_best;\n prev = node;\n }\n tau[prev][depot] += Q / iter_best;\n tau[depot][prev] += Q / iter_best;\n }\n }\n\n int route_num = 1;\n for (auto &route : global_best_routes) {\n std::cout << \"Route #\" << route_num++ << \": \";\n for (size_t i = 0; i < route.size(); ++i) {\n if (i > 0) cout << \" \";\n std::cout << (route[i] + 1);\n }\n std::cout << endl;\n }\n std::cout << \"Cost \" << global_best_length << endl;\n\n MAX_GBL = MAX_GBL < global_best_length ? MAX_GBL : global_best_length;\n SUM_GBL += global_best_length;\n }\n\n best_value *= 25;\n //std::cout << \"aaa\" << SUM_GBL << \"bbb\" << best_value << '\\n';\n std::cout << \"\\n\\n\";\n std::cout << MAX_GBL << '\\n' << (SUM_GBL - best_value)*100.0/best_value << '\\n';\n\n return 0;\n}\n```", + "text_sha256": "29e775cae7baaf44126b894798d6c239dd87aab51b4c7652e43552e19579c69f", + "knowledge_path": "knowledge/intelligent_algorithms/intelligent-algorithms-001.md", + "knowledge_sha256": "cc1cb48c011628c60bb8b544d8578ed4e96ab6dbed88ea97a74617138d5f3c26" + }, + "intelligent-algorithms-022:h-de算法适合应用场景~相比ga-它不能做离散优化问题-但优势是参数少-可以在精度和速度中较为平衡-3.-差分进化pr-1-.pdf-page-16-rect-123-84-783-394-3.-差分进化pr-1-p.16:c01": { + "chunk_id": "intelligent-algorithms-022:h-de算法适合应用场景~相比ga-它不能做离散优化问题-但优势是参数少-可以在精度和速度中较为平衡-3.-差分进化pr-1-.pdf-page-16-rect-123-84-783-394-3.-差分进化pr-1-p.16:c01", + "course_id": "intelligent_algorithms", + "source_id": "intelligent-algorithms-022", + "source_title": "差分进化DE", + "heading_path": [ + "DE算法适合应用场景", + "相比GA,它不能做离散优化问题,但优势是参数少,可以在精度和速度中较为平衡。![[3. 差分进化pr(1).pdf#page=16&rect=123,84,783,394|3. 差分进化pr(1), p.16]]" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "``` python\nimport random\n\n# 问题参数\nc = 15 # 背包容量\nw = [7, 3, 12, 5, 14] # 物品重量\nv = [10, 4, 15, 6, 9] # 物品价值\nn = len(w) # 物品数量\n\n# DE算法参数\npopulation_size = 50 # 种群大小\nF = 0.5 # 变异因子\nCR = 0.7 # 交叉概率\ngenerations = 100 # 迭代次数\n\n# 初始化种群\ndef initialize_population():\n population = []\n for _ in range(population_size):\n individual = [random.randint(0, 1) for _ in range(n)]\n # 确保初始个体合法\n while not is_feasible(individual):\n individual = [random.randint(0, 1) for _ in range(n)]\n population.append(individual)\n return population\n\n# 判断解是否合法\ndef is_feasible(individual):\n total_weight = sum(w[i] * individual[i] for i in range(n))\n return total_weight <= c\n\n# 计算目标函数值(适应度)\ndef calculate_fitness(individual):\n return sum(v[i] * individual[i] for i in range(n))\n\n# 变异操作\ndef mutation(population):\n mutated_population = []\n for i in range(population_size):\n # 随机选择三个不同的个体\n indices = [j for j in range(population_size) if j != i]\n a, b, c = random.sample(indices, 3)\n # 生成变异个体\n mutated_individual = []\n for j in range(n):\n if random.random() < 0.5:\n mutated_gene = population[a][j] + F * (population[b][j] - population[c][j])\n # 保持基因在[0, 1]范围内\n mutated_gene = 1 if mutated_gene > 1 else 0 if mutated_gene < 0 else mutated_gene\n else:\n mutated_gene = population[i][j]\n mutated_individual.append(round(mutated_gene))\n # 修复不合法解\n while not is_feasible(mutated_individual):\n selected = [j for j in range(n) if mutated_individual[j] == 1]\n if not selected:\n break\n remove = random.choice(selected)\n mutated_individual[remove] = 0\n mutated_population.append(mutated_individual)\n return mutated_population\n\n# 交叉操作\ndef crossover(population, mutated_population):\n crossed_population = []\n for i in range(population_size):\n crossed_individual = []\n for j in range(n):\n if random.random() < CR:\n crossed_individual.append(mutated_population[i][j])\n else:\n crossed_individual.append(population[i][j])\n # 修复不合法解\n while not is_feasible(crossed_individual):\n selected = [j for j in range(n) if crossed_individual[j] == 1]\n if not selected:\n break\n remove = random.choice(selected)\n crossed_individual[remove] = 0\n crossed_population.append(crossed_individual)\n return crossed_population\n\n# 选择操作\ndef selection(population, crossed_population):\n new_population = []\n for i in range(population_size):\n # 计算适应度\n fitness_original = calculate_fitness(population[i])\n fitness_crossed = calculate_fitness(crossed_population[i])\n # 选择适应度更高的个体\n if fitness_crossed > fitness_original:\n new_population.append(crossed_population[i])\n else:\n new_population.append(population[i])\n return new_population\n\n# 差分进化算法主循环\ndef differential_evolution():\n population = initialize_population()\n best_individual = None\n best_fitness = 0\n\n for generation in range(generations):\n # 变异和交叉操作\n mutated_population = mutation(population)\n crossed_population = crossover(population, mutated_population)\n # 选择操作\n population = selection(population, crossed_population)\n # 更新全局最优解\n for individual in population:\n fitness = calculate_fitness(individual)\n if fitness > best_fitness:\n best_fitness = fitness\n best_individual = individual\n\n return best_individual, best_fitness\n\n# 执行算法\nbest_solution, best_value = differential_evolution()\n\n# 输出结果\nprint(\"最优解为:\", best_solution)\nprint(\"最大价值为:\", best_value)\n```", + "text_sha256": "4ec705e365ea41a41b9a2ce456029b28b806630d7e1a426f21eeeca30c679c05", + "knowledge_path": "knowledge/intelligent_algorithms/intelligent-algorithms-022.md", + "knowledge_sha256": "68f6f13dd0b6a305649d17df56e31c2f4e21432e0b2795531428dec8d3023ef7" + }, + "intelligent-algorithms-025:h-sa算法适合应用场景~在解空间复杂-存在多个局部最优解的情况下表现出色~优点~全局搜索能力-能够跳出局部最优-具有较强的全局优化能力~参数选择敏感-算法的性能对参数-如初始温度-降温系数等-的选择较为敏感:c01": { + "chunk_id": "intelligent-algorithms-025:h-sa算法适合应用场景~在解空间复杂-存在多个局部最优解的情况下表现出色~优点~全局搜索能力-能够跳出局部最优-具有较强的全局优化能力~参数选择敏感-算法的性能对参数-如初始温度-降温系数等-的选择较为敏感:c01", + "course_id": "intelligent_algorithms", + "source_id": "intelligent-algorithms-025", + "source_title": "模拟退火SA", + "heading_path": [ + "SA算法适合应用场景", + "在解空间复杂、存在多个局部最优解的情况下表现出色", + "**优点**", + "-**全局搜索能力**:能够跳出局部最优,具有较强的全局优化能力。", + "- **参数选择敏感**:算法的性能对参数(如初始温度、降温系数等)的选择较为敏感。" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "``` python\nimport random\nimport math\n\n# 问题参数\nc = 15 # 背包容量\nw = [7, 3, 12, 5, 14] # 物品重量\nv = [10, 4, 15, 6, 9] # 物品价值\nn = len(w) # 物品数量\n\n# SA算法参数\nT0 = 1000 # 初始温度\nTk = 1e-5 # 结束温度\nL = 100 # 每个温度下的迭代次数\nalpha = 0.95 # 降温系数\n\n# 初始化解\ndef initial_solution():\n x = [0] * n\n while True:\n for i in range(n):\n x[i] = random.randint(0, 1)\n if is_feasible(x):\n return x\n\n# 判断解是否合法\ndef is_feasible(x):\n total_weight = sum(w[i] * x[i] for i in range(n))\n return total_weight <= c\n\n# 计算目标函数值\ndef calculate_value(x):\n return sum(v[i] * x[i] for i in range(n))\n\n# 生成邻近解\ndef generate_neighbor(x):\n neighbor = x.copy()\n # 随机选择两个不同的物品,交换它们的选取状态\n i, j = random.sample(range(n), 2)\n neighbor[i] = 1 - neighbor[i]\n neighbor[j] = 1 - neighbor[j]\n # 如果邻近解不合法,尝试修复\n if not is_feasible(neighbor):\n # 找到重量超过的部分,尝试移除一些物品\n while not is_feasible(neighbor):\n # 随机选择一个选中的物品并移除\n selected = [k for k in range(n) if neighbor[k] == 1]\n if not selected:\n break\n remove = random.choice(selected)\n neighbor[remove] = 0\n return neighbor\n\n# SA算法主循环\ndef simulated_annealing():\n x_current = initial_solution()\n x_best = x_current.copy()\n value_best = calculate_value(x_best)\n T = T0\n k = 0\n while T > Tk:\n for _ in range(L):\n x_neighbor = generate_neighbor(x_current)\n value_current = calculate_value(x_current)\n value_neighbor = calculate_value(x_neighbor)\n if value_neighbor >= value_current:\n x_current = x_neighbor\n if calculate_value(x_current) > value_best:\n x_best = x_current.copy()\n value_best = calculate_value(x_best)\n else:\n # 根据Metropolis准则接受较差解\n delta = value_neighbor - value_current\n if random.random() < math.exp(delta / T):\n x_current = x_neighbor\n # 降温\n T *= alpha\n k += 1\n return x_best, value_best\n\n# 执行算法\nbest_solution, best_value = simulated_annealing()\n\n# 输出结果\nprint(\"最优解为:\", best_solution)\nprint(\"最大价值为:\", best_value)\n```", + "text_sha256": "7610180647b66a7c61cf527989c03368deda7439419c97b4cbd052e37973b257", + "knowledge_path": "knowledge/intelligent_algorithms/intelligent-algorithms-025.md", + "knowledge_sha256": "09a6fecde81fd671377265932d6573128a0fce4c17ae0ac0dcf95d701732a174" + }, + "linear-algebra-015:p3:q-linear-algebra-015-q9:c01": { + "chunk_id": "linear-algebra-015:p3:q-linear-algebra-015-q9:c01", + "course_id": "linear_algebra", + "source_id": "linear-algebra-015", + "source_title": "2020-2021年度线代解几期末卷A答案", + "heading_path": [ + "2020-2021年度线代解几期末卷A答案" + ], + "locator_type": "page", + "locator_start": 3, + "locator_end": 3, + "question_id": "linear-algebra-015-Q9", + "text": "六、 (15 分)\n\n\n\n\n\n= \n\n\n\n\n\n\n\n\n\n\n= \n\n\n\n\n\n\n0 1 1\n1 0 1\n1 1 0\nA\n\nx\nX\nx\nb\nx\n\n2\n, = 0\n\n1\n\n→\n(\n)\n1\nT\nT\nf X\nX AX\nb X\n=\n+\n+\n,其中:\n\n解:①\n\n2\n\n1\n\n3\n\n\n\n\n\n\n\n\n−\n−\n−\n= −\n−=\n−\n=\n−\n−\n\n1\n1\n1\n1\n2\n+1\n0\n1\n1\nE\nA\n\n② 求A 特征值\n(\n)(\n)\n\n2\n\n→\n1\n2\n3\n2,\n1\n\n\n\n=\n=\n= −\n\n3\n\n1\n1\n1\n2,\n1 ;\n1,\n1 ,\n0\n1\n0\n1\n\n\n\n\n\n\n−\n−\n\n\n\n\n\n\n\n\n\n\n=\n=\n=\n= −\n=\n=\n\n\n\n\n\n\n\n\n\n\n\n求特征值对应的特征向量\n1\n1\n2\n3\n2\n3\n\n−\n−\n\n\n\n\n\n\n\n\n=\n=\n=\n−\n=\n−\n\n\n\n\n\n\n\n\n\n1\n1\n,\n1\n1 ,\n1\n,\n2\n0\n2\n\n将\n2\n3\n,\n正交化→\n(\n)\n(\n)\n\n\n\n\n\n\n\n\n\n3\n2\n2\n2\n3\n3\n2\n2\n2\n\n1\n1\n1\n1\n1\n1\n1 ,\n1 ,\n1\n3\n2\n6\n1\n0\n2\n\n\n\n−\n−\n\n\n\n\n\n\n\n\n\n\n=\n=\n=\n−\n\n\n\n\n\n\n\n\n\n\n\n将\n1\n2\n3\n,\n,\n单位化得:\n1\n2\n3\n\n−\n\n\n\n\n=\n= \n\n\n\n\n\n\n−\n−\n\n−\n\n\n\n\n=\n=\n−\n\n\n−\n\n\n\n1\n1\n1\n3\n2\n6\n1\n1\n1\n1\n2\n3\n3\n2\n6\n1\n2\n3\n6\n0\n,\n,\nG\n\n\n满足:\n1\n2\n0\n0\n0\n1\n0\n0\n0\n1\n\n→\n(\n)\n\nT\nG AG\nG AG\n\n对应标准型为:\n2\n2\n2\n1\n2\n3\n=\n2\nT\nT\nT\nX AX Y G AGY\ny\ny\ny\n=\n−\n−\n\n③\n(\n)\n(\n)\n1\nT\nT\nT\nX\nGY\nf X\nf GY\nY G AGY\nb GY\n=\n→\n=\n=\n+\n+\n\n2\n2\n\n2\n2\n2\n2\n1\n2\n3\n1\n2\n1\n2\n3\n3\n2\n9\n2\n3\n2\n1\n2\n0\n4\n2\n8\ny\ny\ny\ny\ny\ny\ny\ny\n\n\n\n\n=\n−\n−\n+\n−\n+ =\n+\n−\n+\n−\n+\n=\n\n\n\n\n\n\n\n\n\n\n\n\n\n2\n2\n\n\n\n\n\n+\n+\n\n\n\n\n\n\n\n\n+\n−\n=\n\n2\n3\n2\n4\n1\n9 8\n9 8\n9 16\n\ny\ny\ny\n\n2\n1\n2\n3\n\n→\n\n\n\n−\n\n\n\n\n\n\n,-\n,0 处的单叶双曲面。\n\n旋转曲面图形为开口在y1 轴上,中心在\n3\n2\n4\n2", + "text_sha256": "b7cef706e65ac69c027902d3b7aba211c98442ceae241c2fbcef0d28c925e729", + "knowledge_path": "knowledge/linear_algebra/linear-algebra-015.md", + "knowledge_sha256": "a3e45062665cf1a282e60e24b861e2ab8611b06473b243affa460493f125c849" + }, + "linear-algebra-013:p2:q-linear-algebra-013-q9:c01": { + "chunk_id": "linear-algebra-013:p2:q-linear-algebra-013-q9:c01", + "course_id": "linear_algebra", + "source_id": "linear-algebra-013", + "source_title": "2019-2020年度线性代数期末卷A答案", + "heading_path": [ + "2019-2020年度线性代数期末卷A答案" + ], + "locator_type": "page", + "locator_start": 2, + "locator_end": 2, + "question_id": "linear-algebra-013-Q9", + "text": "五、(15 分)\n\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\na\na\n\na\nA\n\n3\n2\n1\n1\n3\n0\n0\n1\n2\n2\n6\n3\n\n\n\n0\n1\n2\n2\n6\n3\n0\n1\n2\n2\n6\n3\n\n5\n4\n3\n3\n2\n0\n1\n2\n2\n5\n2\n5\n\nb\nb\na\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n\na\na\n\n0\n0\n0\n0\n0\n3\n3\n0\n1\n2\n2\n6\n3\n+4\n0\n1\n2\n2\n6\n3\n0\n0\n0\n0\n1\n0\n\na\n\n(\n分)\n\nb\n\n0\n0\n0\n0\n1\n5\n5\n0\n0\n0\n0\n0\n1\n\nb\na\na\n\n(\n\n1\n1\n( ),\n+3\na\nr A\nr A\n\n\n\n)当\n时,\n方程组无解 (\n分)\n\n\n\n\n\n\n\n\n\n\na\nb\nr A\nr A\n\n1,\n1\n( )\n2,\n\n当\n时,\n方程组有无穷多解\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nx\nk\nk\nk\nx\nk\nk\nk\nx\nx\nx\nx\nx\nA\nx\nk\nx\nx\nx\nx\nx\nk\nx\nk\n\n5\n2\n1\n1\n1\n1\n1\n1\n2\n2\n6\n3\n1\n0\n1\n2\n2\n6\n3\n2\n2\n6\n3\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n\n1\n1\n2\n3\n\n2\n1\n2\n3\n1\n2\n3\n4\n5\n3\n1\n2\n3\n4\n5\n4\n2\n\n\n\n5\n3\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nx\nx\nx\nx\nx\n\n1\n1\n5\n2\n2\n2\n6\n3\n,\n+4\n1\n0\n0\n0\n0\n1\n0\n0\n0\n0\n1\n0\n\n1\n\n2\n\nk\nk\nk\nk k\n\n通解:\n1\n2\n3\n1\n2\n\n其中,\n是任意常数\n(\n分)\n\n3\n\n4\n\n5\n\n\n\n\n\n\n\n\n\n\na\nb\nr A\nr A\n\n1,\n1\n( )\n3,\n\n当\n时,\n方程组有无穷多解", + "text_sha256": "e244d973a24d6a1d9d6ceda220f4a60f7266a1802fb0a7706362afccc2e528de", + "knowledge_path": "knowledge/linear_algebra/linear-algebra-013.md", + "knowledge_sha256": "bedce26dbb87998167aa94a809b4391cfdc467720762e256f1856304e55ecbcb" + }, + "linear-algebra-021:p3:q-linear-algebra-021-q14:c01": { + "chunk_id": "linear-algebra-021:p3:q-linear-algebra-021-q14:c01", + "course_id": "linear_algebra", + "source_id": "linear-algebra-021", + "source_title": "2021-2022年度线代解几期末卷B答案", + "heading_path": [ + "2021-2022年度线代解几期末卷B答案" + ], + "locator_type": "page", + "locator_start": 3, + "locator_end": 3, + "question_id": "linear-algebra-021-Q14", + "text": "七、(15 分)\n\n𝟏\n−𝟐\n𝟐\n−𝟐\n−𝟐\n𝟒\n𝟐\n𝟒\n−𝟐\n\n解:记二次型𝒇(𝒙𝟏, 𝒙𝟐, 𝒙𝟑) = 𝑿′𝑨𝑿, 则其矩阵𝑨= (\n\n)\n\n𝝀−𝟏\n𝟐\n−𝟐\n𝟐\n𝝀+ 𝟐\n−𝟒\n−𝟐\n−𝟒\n𝝀+ 𝟐\n\n|=(𝝀−𝟐)𝟐(𝝀+ 𝟕)\n\n|𝝀𝑬−𝑨| = |\n\n故A 的特征值为𝝀𝟏= 𝟐(二重),𝝀𝟐=−𝟕 3′\n\n𝟏\n𝟐\n−𝟐\n𝟐\n𝟒\n−𝟒\n−𝟐\n−𝟒\n𝟒\n\n𝟏\n𝟐\n−𝟐\n𝟎\n𝟎\n𝟎\n𝟎\n𝟎\n𝟎\n\n)\n\n当𝝀= 𝟐,𝟐𝑬−𝑨= (\n\n) →(\n\n故𝒙𝟏= −𝟐𝒙𝟐+ 𝟐𝒙𝟑, 其中𝒙𝟐, 𝒙𝟑为自由未知量,\n\n从而(𝟐𝑬−𝑨)𝑿= 𝟎有一个基础解系:𝜶𝟏= (−𝟐, 𝟏, 𝟎)′, 𝜶𝟐= (𝟐, 𝟎, 𝟏)′\n\n(𝜶𝟐,𝜷𝟏)\n\n𝟐\n\n𝟒\n\n𝟓, 𝟏)′\n\n对𝛂𝟏, 𝛂𝟐作施密特正交化得:𝜷𝟏= 𝛂𝟏, 𝜷𝟐= 𝛂𝟐−\n\n(𝜷𝟏,𝜷𝟏) 𝜷𝟏= (\n\n𝟓,\n\n′\n\n𝟐\n\n𝟏\n\n𝟐\n\n𝟒\n\n𝟏\n\n𝟑√𝟓)′ 5’\n\n对𝛃𝟏, 𝛃𝟐作单位化得:𝛄𝟏= (−\n\n𝟓√𝟓,\n\n𝟓√𝟓, 𝟎)\n\n, 𝛄𝟐= (\n\n𝟏𝟓√𝟓,\n\n𝟏𝟓√𝟓,\n\n𝟏\n\n−𝟖\n𝟐\n−𝟐\n𝟐\n−𝟓\n−𝟒\n−𝟐\n−𝟒\n−𝟓\n\n𝟏\n−\n\n𝟐\n𝟎\n𝟎\n𝟏\n𝟏\n𝟎\n𝟎\n𝟎\n\n当𝝀= −𝟕, −𝟕𝑬−𝑨= (\n\n)\n\n) →(\n\n𝟏\n\n故{𝒙𝟏=\n\n𝟐𝒙𝟐\n𝒙𝟑= −𝒙𝟐\n\n, 其中𝒙𝟐为自由未知量,\n\n从而(−𝟕𝑬−𝑨)𝑿= 𝟎有一个基础解系:𝜶𝟑= (𝟏, 𝟐, −𝟐)′\n\n′\n\n𝟏\n\n𝟐\n\n𝟐\n\n3’\n\n对𝜶𝟑作单位化得:𝛄𝟑= (\n\n𝟑,\n\n𝟑, −\n\n𝟑)\n\n𝟐\n\n𝟐\n\n𝟏\n\n−\n\n𝟓√𝟓\n\n𝟏𝟓√𝟓\n\n𝟑\n𝟏\n\n,则P 为正交矩阵,令X=PY,\n\n𝟒\n\n𝟐\n\n令𝐏= (𝛄𝟏, 𝛄𝟐, 𝛄𝟑) =\n\n𝟓√𝟓\n\n𝟏𝟓√𝟓\n\n𝟑\n𝟎\n\n𝟏\n\n𝟐\n\n𝟑√𝟓\n−\n\n(\n\n𝟑)\n\n可得二次型的标准形:\n\n𝟐 2’\n(2)r(f)=3, 正惯性指数为2,负惯性指数为1. 2′\n\n𝟐+ 𝟐𝒚𝟐\n\n𝟐−𝟕𝒚𝟑\n\n𝐟(𝐗) = 𝟐𝒚𝟏", + "text_sha256": "9d2223fe7f4f77c20316407258f00b9dce29eddeab150ca13eedea2213fa9b40", + "knowledge_path": "knowledge/linear_algebra/linear-algebra-021.md", + "knowledge_sha256": "edaba6360c3660b787dab514c588e6ecf260da626f954856add1d7ce1edb9e03" + }, + "mao-zedong-thought-overview-002:h-演讲大纲:c01": { + "chunk_id": "mao-zedong-thought-overview-002:h-演讲大纲:c01", + "course_id": "mao_zedong_thought_overview", + "source_id": "mao-zedong-thought-overview-002", + "source_title": "演讲大纲", + "heading_path": [ + "演讲大纲" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "**优化版 15 分钟演讲思路**\n\n**一、引言(2分钟)**\n- 开场白:引用 “路漫漫其修远兮,吾将上下而求索”,强调自我革命的长期性和探索性。\n- 提出问题:为什么中国共产党能长期保持活力?自我革命如何成为党执政的“密码”?\n- 过渡:中国的治理模式有其 独特国情,相比西方模式,它更能确保 长期稳定与持续改革。\n\n**二、党的自我革命历史沿革及其国情特点(10分钟)**\n\n**1. 建党初期(1921-1949):农村包围城市与生存之战**\n- 自我革命体现:八七会议、古田会议、遵义会议,使党摆脱旧有模式,确立人民军队的基本原则。\n- 结合国情分析:\n - 为什么不是“苏联模式”或“西方革命模式”?\n - 苏联模式:依靠城市工人起义,中国没有这样的产业工人基础。\n - 西方式民主斗争:国民党已掌握政权,无法进行和平演变。\n - 对比美国:\n - 美国早期独立战争是由富裕精英推动,而中国革命则是 自下而上的农民运动,符合当时中国社会状况。\n\n参考民国:军队要把握自己手中:袁世凯窃取革命果实\n- 当代价值:\n - 坚持实事求是、因地制宜,比如新型城镇化 和 乡村振兴战略,延续了“农村包围城市”的思维。\n\n**2. 党的政权巩固与曲折探索(1949-1976):制度建设与极左教训**\n- 自我革命体现:\n - 土地改革、社会主义改造确立制度基础。\n - 反思“大跃进”与“文化大革命”中的错误,并最终在1976年拨乱反正。\n- 结合国情分析:\n - 为什么中国不能直接实行资本主义?\n - 1950年代,中国 缺乏工业基础,如果实行自由市场经济,只会被国际资本吞噬。\n - 为什么中国没有采取西方式民主?\n - 美国是自下而上的“仰视监督”,中国是自上而下的“俯视考核”,后者在经济发展初期更具效率。\n- 当代价值:\n - 文革教训推动了改革开放,同时也促使当代党加强党内监督,如全面从严治党、反腐败斗争。\n\n**3. 改革开放与市场经济建设(1978-2002):思想解放与经济突破**\n- 自我革命体现:\n - 真理标准问题大讨论破除了教条主义束缚,恢复党的纪律检查机关加强党内监督。\n - 1992年确立社会主义市场经济体制,实现经济腾飞。\n- 结合国情分析:\n - 为什么中国不是资本主义国家?\n - 与美国对比:\n - 美国“市场决定一切”,中国采用 政府调控 + 市场经济 的混合模式,保证 社会稳定 和 共同富裕。\n - 与苏联对比:\n - 苏联80年代激进私有化导致经济崩溃,而中国的渐进式改革让国家 稳步增长。\n- 当代价值:\n - 中国经济改革的核心经验:政府既要支持市场,也要调控市场,避免资本主义放任自流的问题。", + "text_sha256": "e3690a3334c6b2bac1e0742f3c5c3a7d20a46bbdf2047b0e71fa29e85d83d68c", + "knowledge_path": "knowledge/mao_zedong_thought_overview/mao-zedong-thought-overview-002.md", + "knowledge_sha256": "7219c410c979f1227ae4becb7eece04a7bdb7e26099f400ccf57118645916785" + }, + "mao-zedong-thought-overview-001:s18:c01": { + "chunk_id": "mao-zedong-thought-overview-001:s18:c01", + "course_id": "mao_zedong_thought_overview", + "source_id": "mao-zedong-thought-overview-001", + "source_title": "党的自我革命历史沿革及当代价值", + "heading_path": [ + "党的自我革命历史沿革及当代价值" + ], + "locator_type": "slide", + "locator_start": 18, + "locator_end": 18, + "question_id": null, + "text": "- 历史意义\n- 01\n- 02\n- “大跃进”虽有失误,但在探索独立工业体系方面积累经验,推动工业化进程。经济调整使国民经济恢复增长,工业与农业协调发展,为后续经济发展奠定基础。\n- 这一时期的中国尝试了一些不同的政治经济政策,从大跃进到调整后的经济恢复,显示了中国在探索适合自己国情的社会主义道路中不断摸索。虽然很多政策遭遇失败,但这种探索使得中国逐步找到了更符合国情的发展模式,尤其是在1960年代的经济复苏过程中。\n- 中苏关系的破裂标志着中国走上了一条更加独立的外交路线,不再依赖苏联的支持。虽然这导致了中苏之间的长时间对立,但也为中国的独立自主发展提供了空间。中苏关系恶化迫使中国发展自身的力量,摆脱外部干扰,并在接下来的几年中更加强调与其他发展中国家的合作。\n- 反右运动的实施以及对知识分子的迫害,使得中国的思想文化环境变得更加封闭,言论自由受到了更大的压制。知识分子和社会人士的声讨和反思被压制,国家的思想文化发展受到了严重阻碍。", + "text_sha256": "b7501fb10f82816c7084212ea0d926c578256ad2ef8a6f2f22b2c2b640d85168", + "knowledge_path": "knowledge/mao_zedong_thought_overview/mao-zedong-thought-overview-001.md", + "knowledge_sha256": "f45c07ec82bccd435b5b966ab29030d8bfedb0520ace75625d8b275c3fdc1b3c" + }, + "mao-zedong-thought-overview-002:h-演讲大纲:c02": { + "chunk_id": "mao-zedong-thought-overview-002:h-演讲大纲:c02", + "course_id": "mao_zedong_thought_overview", + "source_id": "mao-zedong-thought-overview-002", + "source_title": "演讲大纲", + "heading_path": [ + "演讲大纲" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "**4. 进入新时代(2002-至今):全面从严治党与现代化治理**\n- 自我革命体现:\n - “反腐败斗争” 让党保持纯洁,“国家监察体制改革” 加强对权力的制约。\n - 2021年提出“自我革命是跳出历史周期率的第二个答案”,解决长期执政的难题。\n- 结合国情分析:\n\n参考苏联70年:党自身腐化,领导人没有切实提出自我革新。\n - 为什么要强调党的政治建设?\n - 与美国对比:美国党派斗争激烈,政党轮替导致政策反复(如奥巴马医改 vs 特朗普废除)。\n - 中国通过 长期执政 + 自我革新,确保政策稳定性。\n - 经济结构调整的必要性:\n - 讨论中提到的:房地产退潮 → 人工智能等新兴产业兴起,短期有震荡,但长期有利于国家发展。\n- 当代价值:\n - 长期治理+自我革命,保证中国共产党始终保持活力,并带领国家持续前进。\n- **结语(3分钟)**\n - 中国共产党百年历程,是一部波澜壮阔的自我革命史。从建党初期的战略调整与党内整顿,到新中国成立后的探索与反思,再到改革开放以来的破旧立新,党始终以刀刃向内的勇气,不断自我革新、自我完善。党的 自我革命精神 是其长久执政的关键。\n - 在革命时期,党通过古田会议、遵义会议等关键节点,确立了正确的领导路线和组织原则,奠定了长期执政的思想与组织基础。新中国成立后,党在探索社会主义建设道路中历经挫折,但也积累了宝贵经验。改革开放以来,真理标准问题大讨论冲破思想桎梏,恢复党的纪律检查机关加强党内监督,建立社会主义市场经济体制突破传统观念,推动中国经济快速发展。政策制定必须结合中国国情,不能简单照搬西方模式。\n - 进入新时代,党的自我革命进入新阶段。从“反腐倡廉建设”到“全面从严治党”,从国家监察体制改革到“以党的政治建设为统领”,党以更高标准、更严要求,不断深化自我革命,确保党始终成为中国特色社会主义事业的坚强领导核心。在新时代,党仍需面对 改革阵痛,但正是这种 亡羊补牢的魄力,让中国始终走在正确的道路上。\n - 党的自我革命,是党永葆生机活力的关键所在,为党在长期执政条件下保持先进性和纯洁性提供了有力保障,为国家治理体系和治理能力现代化注入强大动力,为实现中华民族伟大复兴的中国梦筑牢根基。“路在脚下,未来在手”,鼓励大家理解党的自我革命,并以长远眼光看待中国的发展。", + "text_sha256": "1df865ecd9a17d62cf2e5b0d9b8fce0a93e28546e022106e3953d292177848b0", + "knowledge_path": "knowledge/mao_zedong_thought_overview/mao-zedong-thought-overview-002.md", + "knowledge_sha256": "7219c410c979f1227ae4becb7eece04a7bdb7e26099f400ccf57118645916785" + }, + "marxist-basic-principles-002:s16:c01": { + "chunk_id": "marxist-basic-principles-002:s16:c01", + "course_id": "marxist_basic_principles", + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "heading_path": [ + "科技发展与社会变革:生产力与生产关系视角" + ], + "locator_type": "slide", + "locator_start": 16, + "locator_end": 16, + "question_id": null, + "text": "![image](assets/marxist-basic-principles-002/image-032.jpg)\n- 生产关系重构\n- 1.技术飞跃:新生产力对旧秩序的冲击\n- 生产力维度:\n- 传感器/算法替代人类驾驶(L5级自动驾驶效率提升300%)\n- 车联网实现万亿级数据交换(每秒处理8TB道路信息)\n- 矛盾显现:\n- 现有交通法规基于人类驾驶逻辑(如“方向盘后必须有人”),保险体系仍要求“驾驶员责任认定”。\n- 案例:2023年加州自动驾驶测试车因法律滞后被迫安装无用方向盘\n- 2. 生产关系的滞后与挣扎\n- 制度性矛盾:\n- 劳动市场:300万卡车司机工会抗议自动驾驶货车(美加边境封锁事件)\n- 产权困境:个人车辆所有权vs未来\"出行即服务\"(特斯拉已试行订阅制)\n- 数据归属:谁拥有自动驾驶采集的街道数据?(旧金山起诉Waymo案)\n- 3. 社会矛盾推动制度创新\n- 适应性变革:\n- 德国《自动驾驶法》首创“数字驾驶员”法律身份,中国设立\"智能交通先行区\"进行法规沙盒测试\n- 新型保险产品:\"算法责任险\"保费与OTA更新挂钩\n- 深层变革信号:\n- 城市规划从\"以车为本\"转向\"以流为本\"(取消红灯/停车位)\n- 劳动力市场出现\"人机协作认证\"(如自动驾驶系统监管员)", + "text_sha256": "040709c21029ed9ee7e5cb826bc9e1f7275b1ce619fb088467971fbde14307bc", + "knowledge_path": "knowledge/marxist_basic_principles/marxist-basic-principles-002.md", + "knowledge_sha256": "92d7fdfac083aae48d728d6ae725f8669aa5bd092cecd9b5a64e42ad001127d5" + }, + "marxist-basic-principles-001:h-演讲观点:c01": { + "chunk_id": "marxist-basic-principles-001:h-演讲观点:c01", + "course_id": "marxist_basic_principles", + "source_id": "marxist-basic-principles-001", + "source_title": "演讲观点", + "heading_path": [ + "演讲观点" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "三个引述关系:\n\n理论必须适应于实际\n\n过去\n\n现在\n\n不远的将来\n\n1,3,5,6:生产力的进步\n\n2,4,7,8:生产关系的重塑\n\n我们思考一下,金融 量子 生物科技 社会政策 如果只从生产力生产关系角度去思考,会不会难以解释其跳脱性呢?\n\n这个环,只是从各个大方向选取了部分,究竟是如何联系的呢?\n\n我认为\n\n生产力与生产关系的互动并非简单线性,而是通过社会结构(文化、教育、阶层等)形成多层次、多向度的动态网络。其中,社会结构既是生产关系变革的结果,也是新生产关系形成的条件,同时构成生产力发展的外部环境。\n\n我说的话什么意思?\n\n考虑到大家的知识储备不一,让我们从马克思主义原理的教材获取底层逻辑知识,再进行自我思想革新\n\n至13页后:\n\n学习完了教材逻辑,我们现在回顾一下我刚刚的个人观点:**每个生产力显然会互置于生产关系,但生产关系的改变后续还会带动社会结构的改变,而社会结构的改变显然也是会带动其他的生产关系的变革,同时也会影响到生产力的发展**\n\n实际上,生产力与生产关系显然是直接互动的关系;**但是我们后续研究到生产关系的相互作用,其实还有社会结构作为中介。**\n\n**社会关系的作用是什么?我觉得社会关系是传导矛盾的“缓冲层”与“催化剂”,是技术冲击的缓冲垫,也是制度变革的起爆剂。**\n\n![image](assets/marxist-basic-principles-001/image-001.png)\n\n缓冲层:社会生产力此时的片面发展导致的社会矛盾被缓冲\n\n催化剂\n\n生产力与生产关系通过社会结构中介,形成“技术进步→制度调整→社会变迁→再创新”的螺旋上升循环。在这一过程中,需警惕“技术决定论”陷阱(忽视制度与文化弹性),同时避免“制度万能论”(低估技术革命的颠覆性)。唯有承认三者的交织性与不确定性,才能更精准地引导技术造福人类社会。\n\n![image](assets/marxist-basic-principles-001/image-002.png)\n\n![image](assets/marxist-basic-principles-001/image-003.png)\n\n回到马克思的预言——‘蒸汽磨产生工业资本家的社会’。今天,‘数据磨’正在锻造算法时代的社会形态。自动驾驶的每一次事故争议、每一条新法规,都是生产力与生产关系碰撞的火花。当我们凝视方向盘消失的汽车时,看到的不仅是技术奇迹,更是人类文明在矛盾中螺旋上升的永恒铁律。", + "text_sha256": "a2bbfb031b579f96e60c8b3737033dc8039db8935582869345825c695aa3f2ec", + "knowledge_path": "knowledge/marxist_basic_principles/marxist-basic-principles-001.md", + "knowledge_sha256": "3ee6465447001c4b12b1e019c0293224d38ee6d4bcc83ee399570e0a184b2d1e" + }, + "marxist-basic-principles-002:s17:c01": { + "chunk_id": "marxist-basic-principles-002:s17:c01", + "course_id": "marxist_basic_principles", + "source_id": "marxist-basic-principles-002", + "source_title": "科技发展与社会变革:生产力与生产关系视角", + "heading_path": [ + "科技发展与社会变革:生产力与生产关系视角" + ], + "locator_type": "slide", + "locator_start": 17, + "locator_end": 17, + "question_id": null, + "text": "![image](assets/marxist-basic-principles-002/image-033.jpg)\n- 启示\n- 自动驾驶的普及像一面镜子,照出了技术进步与社会规则之间的深刻裂痕。当汽车不再需要人类驾驶时,我们突然发现:工厂能三个月造出自动驾驶卡车,但社会需要三十年才能消化被淘汰的三百万司机;算法每秒处理百万条道路数据,但法律还在争论事故责任该由车主还是程序员承担;科技公司掌握着每辆车的行驶轨迹,但普通人对自己产生的数据毫无话语权。这不仅是机器替代人的问题,更暴露了工业时代建立的产权制度、职业体系、法律框架在数字浪潮前的全面过时。就像两百年前蒸汽机冲垮了马车时代,今天的数据洪流正在重塑\"谁拥有资源、如何分配价值\"的根本规则——只不过这次变革的赌注更大:如果我们不能及时建立数据时代的\"交通规则\",那么掌握算法的巨头可能成为新时代的\"道路领主\",而普通人将在自己创造的数据高速公路上失去方向。正是这些不断堆积的矛盾,逼迫着人类拆解旧制度的齿轮,锻造新社会的轴承,在阵痛中完成文明升级。历史从来不是直线前进,而是在生产力与生产关系的碰撞中,迸发出改变世界的火花。", + "text_sha256": "6207aa3675e9d6296a1d484db9dec4088cf8b3fe1e8deafff355f437eabeccca", + "knowledge_path": "knowledge/marxist_basic_principles/marxist-basic-principles-002.md", + "knowledge_sha256": "92d7fdfac083aae48d728d6ae725f8669aa5bd092cecd9b5a64e42ad001127d5" + }, + "mathematical-modeling-051:h-2000a_art-model-data:c01": { + "chunk_id": "mathematical-modeling-051:h-2000a_art-model-data:c01", + "course_id": "mathematical_modeling", + "source_id": "mathematical-modeling-051", + "source_title": "2000A_art-model-data", + "heading_path": [ + "2000A_art-model-data" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "```text\nArt-model-data\n1.aggcacggaaaaacgggaataacggaggaggacttggcacggcattacacggaggacgaggtaaaggaggcttgtctacggccggaagtgaagggggatatgaccgcttgg\n2.cggaggacaaacgggatggcggtattggaggtggcggactgttcggggaattattcggtttaaacgggacaaggaaggcggctggaacaaccggacggtggcagcaaagga\n3.gggacggatacggattctggccacggacggaaaggaggacacggcggacatacacggcggcaacggacggaacggaggaaggagggcggcaatcggtacggaggcggcgga\n4.atggataacggaaacaaaccagacaaacttcggtagaaatacagaagcttagatgcatatgttttttaaataaaatttgtattattatggtatcataaaaaaaggttgcga\n5.cggctggcggacaacggactggcggattccaaaaacggaggaggcggacggaggctacaccaccgtttcggcggaaaggcggagggctggcaggaggctcattacggggag\n6.atggaaaattttcggaaaggcggcaggcaggaggcaaaggcggaaaggaaggaaacggcggatatttcggaagtggatattaggagggcggaataaaggaacggcggcaca\n7.atgggattattgaatggcggaggaagatccggaataaaatatggcggaaagaacttgttttcggaaatggaaaaaggactaggaatcggcggcaggaaggatatggaggcg\n8.atggccgatcggcttaggctggaaggaacaaataggcggaattaaggaaggcgttctcgcttttcgacaaggaggcggaccataggaggcggattaggaacggttatgagg\n9.atggcggaaaaaggaaatgtttggcatcggcgggctccggcaactggaggttcggccatggaggcgaaaatcgtgggcggcggcagcgctggccggagtttgaggagcgcg\n10.tggccgcggaggggcccgtcgggcgcggatttctacaagggcttcctgttaaggaggtggcatccaggcgtcgcacgctcggcgcggcaggaggcacgcgggaaaaaacg\n\n11.gttagatttaacgttttttatggaatttatggaattataaatttaaaaatttatattttttaggtaagtaatccaacgtttttattactttttaaaattaaatatttatt\n12.gtttaattactttatcatttaatttaggttttaattttaaatttaatttaggtaagatgaatttggttttttttaaggtagttatttaattatcgttaaggaaagttaaa\n13.gtattacaggcagaccttatttaggttattattattatttggattttttttttttttttttttaagttaaccgaattattttctttaaagacgttacttaatgtcaatgc\n14.gttagtcttttttagattaaattattagattatgcagtttttttacataagaaaatttttttttcggagttcatattctaatctgtctttattaaatcttagagatatta\n15.gtattatatttttttatttttattattttagaatataatttgaggtatgtgtttaaaaaaaatttttttttttttttttttttttttttttttaaaatttataaatttaa\n16.gttatttttaaatttaattttaattttaaaatacaaaatttttactttctaaaattggtctctggatcgataatgtaaacttattgaatctatagaattacattattgat\n17.gtatgtctatttcacggaagaatgcaccactatatgatttgaaattatctatggctaaaaaccctcagtaaaatcaatccctaaacccttaaaaaacggcggcctatccc\n18.gttaattatttattccttacgggcaattaattatttattacggttttatttacaattttttttttttgtcctatagagaaattacttacaaaacgttattttacatactt\n19.gttacattatttattattatccgttatcgataattttttacctcttttttcgctgagtttttattcttactttttttcttctttatataggatctcatttaatatcttaa\n20.gtatttaactctctttactttttttttcactctctacattttcatcttctaaaactgtttgatttaaacttttgtttctttaaggattttttttacttatcctctgttat\n\n21.tttagctcagtccagctagctagtttacaatttcgacaccagtttcgcaccatcttaaatttcgatccgtaccgtaatttagcttagatttggatttaaaggatttagattga\n22.tttagtacagtagctcagtccaagaacgatgtttaccgtaacgtacgtaccgtacgctaccgttaccggattccggaaagccgattaaggaccgatcgaaaggg \n23.cgggcggatttaggccgacggggacccgggattcgggacccgaggaaattcccggattaaggtttagcttcccgggatttagggcccggatggctgggaccc\n24.tttagctagctactttagctatttttagtagctagccagcctttaaggctagctttagctagcattgttctttattgggacccaagttcgacttttacgatttagttttgaccgt\n25.gaccaaaggtgggctttagggacccgatgctttagtcgcagctggaccagttccccagggtattaggcaaaagctgacgggcaattgcaatttaggcttaggcca\n26.gatttactttagcatttttagctgacgttagcaagcattagctttagccaatttcgcatttgccagtttcgcagctcagttttaacgcgggatctttagcttcaagctttttac \n27.ggattcggatttacccggggattggcggaacgggacctttaggtcgggacccattaggagtaaatgccaaaggacgctggtttagccagtccgttaaggcttag\n28.tccttagatttcagttactatatttgacttacagtctttgagatttcccttacgattttgacttaaaatttagacgttagggcttatcagttatggattaatttagcttattttcga\n29.ggccaattccggtaggaaggtgatggcccgggggttcccgggaggatttaggctgacgggccggccatttcggtttagggagggccgggacgcgttagggc\n30.cgctaagcagctcaagctcagtcagtcacgtttgccaagtcagtaatttgccaaagttaaccgttagctgacgctgaacgctaaacagtattagctgatgactcgta\n31.ttaaggacttaggctttagcagttactttagtttagttccaagctacgtttacgggaccagatgctagctagcaatttattatccgtattaggcttaccgtaggtttagcgt\n32.gctaccgggcagtctttaacgtagctaccgtttagtttgggcccagccttgcggtgtttcggattaaattcgttgtcagtcgctcttgggtttagtcattcccaaaagg\n33.cagttagctgaatcgtttagccatttgacgtaaacatgattttacgtacgtaaattttagccctgacgtttagctaggaatttatgctgacgtagcgatcgactttagcac\n34.cggttagggcaaaggttggatttcgacccagggggaaagcccgggacccgaacccagggctttagcgtaggctgacgctaggcttaggttggaacccggaaa\n35.gcggaagggcgtaggtttgggatgcttagccgtaggctagctttcgacacgatcgattcgcaccacaggataaaagttaagggaccggtaagtcgcggtagcc\n36.ctagctacgaacgctttaggcgcccccgggagtagtcgttaccgttagtatagcagtcgcagtcgcaattcgcaaaagtccccagctttagccccagagtcgacg\n37.gggatgctgacgctggttagctttaggcttagcgtagctttagggccccagtctgcaggaaatgcccaaaggaggcccaccgggtagatgccasagtgcaccgt\n38.aacttttagggcatttccagttttacgggttattttcccagttaaactttgcaccattttacgtgttacgatttacgtataatttgaccttattttggacactttagtttgggttac\n39.ttagggccaagtcccgaggcaaggaattctgatccaagtccaatcacgtacagtccaagtcaccgtttgcagctaccgtttaccgtacgttgcaagtcaaatccat\n40.ccattagggtttatttacctgtttattttttcccgagaccttaggtttaccgtactttttaacggtttacctttgaaatttttggactagcttaccctggatttaacggccagttt\n\n```", + "text_sha256": "9497c29c064a860eb0ba1eb066edf16272bf97a2e0af22bc1e55f0b020e1c72d", + "knowledge_path": "knowledge/mathematical_modeling/mathematical-modeling-051.md", + "knowledge_sha256": "8af3ff0f1a84a5f4f91279fb55867ff7c5d6f4f2a8057a4116ffe2412932d65b" + }, + "mathematical-modeling-001:p106:c01": { + "chunk_id": "mathematical-modeling-001:p106:c01", + "course_id": "mathematical_modeling", + "source_id": "mathematical-modeling-001", + "source_title": "数模大全", + "heading_path": [ + "数模大全" + ], + "locator_type": "page", + "locator_start": 106, + "locator_end": 106, + "question_id": null, + "text": "m=5 8 8 3 4 0 15 16 22 30 0 16 12;\nc=0 700 400 450 0 0 0 600 300 500 0 500 400;\nd=49;\nenddata\nmin=@sum(operate:c*y);\n@for(operate(i,j):x(j)-x(i)+y(i,j)>t(i,j));\nn=@size(events);\nx(n)-x(1)\n1. 给定拓扑图,对图中的PC和路由器进行ipv6地址规划(一般与实验网络拓扑一致)\n2. 写出所有路由器的配置命令(思科或者华为路由器风格),并配置动态路由协议(OSPF/RIP) \n3. PC11能够ping通R1,但是ping不通PC22,请给出你故障分析的流程,并给出可能的原因。\n4. 解决问题后你会如何结合SNMP,NETCONF特点对上述问题进行预防和快速响应。\n5. 给定MIB-2 TCP组的源代码,画出TCP组的子树\n", + "text_sha256": "9bc8b59a29f2cbf700dc312c62e3f25309a2031bb9c0b2cb297db888cff4c9ab", + "knowledge_path": "knowledge/network_management/network-management-001.md", + "knowledge_sha256": "e33cd0af63f3fb1e7b5ccf66ea959994b32fa64e2b11abcda1646cee82406d1a" + }, + "next-generation-network-architecture-001:s18:c01": { + "chunk_id": "next-generation-network-architecture-001:s18:c01", + "course_id": "next_generation_network_architecture", + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "heading_path": [ + "天地一体化网络最终版2", + "天地一体化架构主要应用场景" + ], + "locator_type": "slide", + "locator_start": 18, + "locator_end": 18, + "question_id": null, + "text": "- 2、空天地一体化内容分发网络\n- 相比于传统以连接为中心的网络,以信息为中心的网络(ICN)采用发布和订阅的模式,可以实现更有效的内容感知路由策略。ICN两个重要的特点是网内缓存以及命名路由。在无线侧,基于无线边缘缓存的内容共享技术被提出,其通过用户对流行内容的偏好程度进行分析,将流行程度高的内容提前缓存在距离请求用户更近的边缘无线节点。当终端用户发起请求时,若请求的内容已经提前存在于边缘缓存节点,可以直接从边缘缓存的无线节点获取而无须通过核心网获取内容。因此,系统可以减少流行程度高的内容通过回程链路的重复性传输,进一步降低传输时延,提高用户服务质量,降低网络负载的压力。深入了解", + "text_sha256": "106d785cbff47727c0ce003862828cceb5283440980df3814dd0902c173be17b", + "knowledge_path": "knowledge/next_generation_network_architecture/next-generation-network-architecture-001.md", + "knowledge_sha256": "e6f8594f06687398ade0ba59940c1b20ca98b5adca27ca6e88de65bcf289c493" + }, + "next-generation-network-architecture-001:s24:c01": { + "chunk_id": "next-generation-network-architecture-001:s24:c01", + "course_id": "next_generation_network_architecture", + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "heading_path": [ + "天地一体化网络最终版2", + "网络安全问题" + ], + "locator_type": "slide", + "locator_start": 24, + "locator_end": 24, + "question_id": null, + "text": "- 1. 复杂的安全威胁:天地一体化网络面临通信信号的拦截、网络设施的物理攻击、以及针对网络协议和软件的网络攻击等多重威胁,需要构建多层次的网络安全防护体系以保障数据传输的安全和稳定。\n- 2. 数据保护:为防止敏感信息泄露,需要强大的加密技术和访问控制机制,但同时需保证加密措施不会对网络性能产生过大影响。\n![image](assets/next-generation-network-architecture-001/image-032.jpg)\n- 参考文献:\n- 蒋长林,李清等.天地一体化网络关键技术研究综述[J].软件学报 ISSN 1000-9825,2024,35(1):266−287", + "text_sha256": "b7f1d3495027dc26ab058f78b6c7d5433ff607ddfc69eb3872c4335e4494eabc", + "knowledge_path": "knowledge/next_generation_network_architecture/next-generation-network-architecture-001.md", + "knowledge_sha256": "e6f8594f06687398ade0ba59940c1b20ca98b5adca27ca6e88de65bcf289c493" + }, + "next-generation-network-architecture-001:s8:c01": { + "chunk_id": "next-generation-network-architecture-001:s8:c01", + "course_id": "next_generation_network_architecture", + "source_id": "next-generation-network-architecture-001", + "source_title": "天地一体化网络最终版2", + "heading_path": [ + "天地一体化网络最终版2", + "天地一体化网络研究报告" + ], + "locator_type": "slide", + "locator_start": 8, + "locator_end": 8, + "question_id": null, + "text": "![image](assets/next-generation-network-architecture-001/image-011.png)\n![image](assets/next-generation-network-architecture-001/image-012.jpg)\n- 天地一体化网络目前发展及实际案例\n- 边缘计算:天地一体化网络在边缘计算领域的作用主要体现在提供更广泛的网络覆盖、低延迟的数据传输、强大的计算和存储能力,以及更加安全和可靠的通信支持。这些特点使得天地一体化网络能够更好地满足边缘计算的需求,推动边缘计算技术的发展和应用。主要体现在传感器数据处理、边缘智能化、网络安全这几个方面。相关案例包括:5G边缘计算、卫星边缘计算、航空边缘计算。\n- 总的来说,天地一体化网络在边缘计算领域的应用与发展将为各种行业带来更多可能性,加速数字化转型进程,提升生产效率和服务质量。", + "text_sha256": "41676d1bbe01cf5a253b6161d29e5ea474eec77202257e31ee75d46b484517b5", + "knowledge_path": "knowledge/next_generation_network_architecture/next-generation-network-architecture-001.md", + "knowledge_sha256": "e6f8594f06687398ade0ba59940c1b20ca98b5adca27ca6e88de65bcf289c493" + }, + "operating-systems-022:h-os2018真题ans:c02": { + "chunk_id": "operating-systems-022:h-os2018真题ans:c02", + "course_id": "operating_systems", + "source_id": "operating-systems-022", + "source_title": "OS2018真题Ans", + "heading_path": [ + "OS2018真题Ans" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "⑥ i-node for /usr/ast/workspace\n\n⑦ directory for /usr/ast/workspace\n\n⑧ i-node for /usr/ast/workspace/mp1.tar\n\nIn total, 8 disk reads are required.\n- 综合题(共50分)\n - 解:\n1. 用户空间的大小为32×1KB=32KB,所以需要15位逻辑地址。\n1. 内存空间的大小为16KB,所以需要14为物理地址。\n1. 页表如下:\n\n| 页号 | 块号 |\n|---|---|\n| 0
1
2
3 | 5
10
4
7 |\n\n- (2652)10=(000,1010,0101,1100)2,后10位为页内偏移量(offset),前5位00010为虚页号2,查页表知,该页装入到内存第4页,故实页号为0100,与后10位页内偏移量拼接形成物理地址为:(01,0010,0101,1100)2=(125C)16=(4700)10\n - (1340)10=(000,0101,0011,1100)2,后10位为页内偏移量(offset),前5位00001为虚页号1,查页表知,该页装入到内存第10页,故实页号为1010,与后10位页内偏移量拼接形成物理地址为:(10,1001,0011,1100)2=(293C)16=(10556)10\n - 解:将隧道的两个方向标记为A和B;\n1. 设置信号量AB和BA,分别表示轮到哪个方向的行人过隧道,初值都为1;\n\n设置mutex用来实现两个方向的行人对隧道的互斥使用。\n\n**A方向的行人:**\t\t\t\t\t\t\t**B方向的行人:**\n\nP(AB);\t\t\t\t\t\t\t\t\tP(BA);\n\nP(mutex);\t\t\t\t\t\t\t\tP(mutex);\n\n通过隧道;\t\t\t\t\t\t\t\t通过隧道;\n\nV(mutex);\t\t\t\t\t\t\t\tV(mutex);\n\nV(BA);\t\t\t\t\t\t\t\t\tV(AB);\n\n用变量countA和conutB表示A和B方向上已经在隧道中的行人数目,初值为0;\n\n再设置三个互斥信号量,初值都为1:\n- SA实现对countA互斥修改\n- SB实现对countB变量的互斥修改\n- mutex用来实现两个方向的行人对隧道的互斥使用\n\n**A方向的行人:**\n\nP(SA);\n\nIf(countA=0) then P(mutex);\n\ncountA=countA+1;\n\nV(SA);\n\n通过隧道;\n\nP(SA);\n\ncountA=countA-1;\n\nIf(countA=0) then V(mutex);\n\nV(SA);\n\n**B方向的行人:**\n\nP(SB);\n\nIf(countB=0) then P(mutex);\n\ncountB=countB+1;", + "text_sha256": "3de3806dcc1470266278d8c5f4a33f2762cb6b6f1e18bbc8d539b00bce6a3495", + "knowledge_path": "knowledge/operating_systems/operating-systems-022.md", + "knowledge_sha256": "9871a3a982db7a0a78a5db8530a950d73999b7772fd200c5c1592abd5ec23bf8" + }, + "operating-systems-041:s24:c01": { + "chunk_id": "operating-systems-041:s24:c01", + "course_id": "operating_systems", + "source_id": "operating-systems-041", + "source_title": "Linux_GUI_Technology_Review", + "heading_path": [ + "Linux_GUI_Technology_Review", + "QT 与 Vulkan的关系" + ], + "locator_type": "slide", + "locator_start": 24, + "locator_end": 24, + "question_id": null, + "text": "- [App Code]\n- │\n- ▼\n- [Qt Widgets / Qt Quick / QML]\n- │\n- ▼\n- [Qt RHI (Rendering Hardware Interface)]\n- ├── OpenGL backend\n- ├── Vulkan backend\n- ├── Metal backend (macOS)\n- └── Direct3D backend (Windows)\n- │\n- ▼\n- [GPU Driver → GPU Hardware]\n- Qt Vulkan 支持架构:\n- +-------------------------------------------------------------------------------+\n- | Qt GUI 层 \t\t\t |\n- | QWidget / QWindow / QQuickWindow / QML SceneGraph |\n- +--------------------------------------------------------------------------------+\n- | QVulkanWindow / QVulkanInstance |\n- +--------------------------------------------------------------------------------+\n- | Vulkan API |\n- | vkCreateInstance, vkQueueSubmit, vkCmdDraw... |\n- +--------------------------------------------------------------------------------+\n- | GPU 驱动 & 硬件 |\n- +--------------------------------------------------------------------------------+\n- Vulkan 是底层渲染标准;\n- Qt 是上层 GUI 框架;", + "text_sha256": "430323fcdf1c66fa16f5c69057403a1de514668a4697091280572d6711507ae8", + "knowledge_path": "knowledge/operating_systems/operating-systems-041.md", + "knowledge_sha256": "b4135afe75e0624956d38b45165365ea037fcdaff053cbd1f39a74217d21398c" + }, + "operating-systems-010:p3:c01": { + "chunk_id": "operating-systems-010:p3:c01", + "course_id": "operating_systems", + "source_id": "operating-systems-010", + "source_title": "OS2008EGB真题Que", + "heading_path": [ + "OS2008EGB真题Que" + ], + "locator_type": "page", + "locator_start": 3, + "locator_end": 3, + "question_id": null, + "text": "四、综合题(共50 分)\n\n1.\n(12 分)There are 32 pages in the user space of virtual storage. Each page is\n1K bytes size. And the computer has 16K bytes main memory.\n(1) How many bits are needed to describe logical address space?\n(2) How many bits are needed to describe physical address space?\n(3) Assume one instance that the page 0, 1, 2, 3 was respectively loaded into\n\nframe page 5, 10, 4, 7, please calculate the physical address of the logical\naddress 2,652 and 1,340(Decimal).\n\n2.\n(14 分) One tunnel, which is very narrow, allows only one passenger to pass\nonce, Please using semaphores to realize the following situation:\n\nThe passengers at one direction must pass the tunnel continuously.\nAnother direction’s visitors can start to go through tunnel when no\npassengers want to pass the tunnel from the opposite direction.\n\n3.\n(12 分)Basing on the Banker’s Algorithm,if exists the following allocation:\n\nProcess\nAllocation\nNeed\nAvailable\n\nA\nB\nC\nD\nA\nB\nC\nD\nA\nB\nC\nD\n\nP1\nP2\nP3\nP4\nP5\n\n0\n1\n1\n0\n0\n\n0\n0\n3\n3\n0\n\n3\n0\n5\n3\n1\n\n2\n0\n4\n2\n4\n\n0\n1\n2\n0\n0\n\n0\n7\n3\n6\n6\n\n1\n5\n5\n5\n5\n\n2\n0\n6\n2\n6\n\n1\n6\n2\n2\n\nPlease answer:\n\n(1) Is state safe?\n(2) If P3 Requests Resources (1,2,2,2),should system meet the demand\n\nand allocate them to it?", + "text_sha256": "3bdd50f5292a7a548e1e8b7a6348d168b7a62f4b325c5f4b18338a31a864411a", + "knowledge_path": "knowledge/operating_systems/operating-systems-010.md", + "knowledge_sha256": "0612b8b752d47630fddd0402be9e3b188930c15e30a6f2c5f03bd4dbb945afb2" + }, + "probability-theory-010:q-probability-theory-010-q9:c01": { + "chunk_id": "probability-theory-010:q-probability-theory-010-q9:c01", + "course_id": "probability_theory", + "source_id": "probability-theory-010", + "source_title": "2020—2021学年第二学期《概率论与数理统计》A卷答案", + "heading_path": [ + "2020—2021学年第二学期《概率论与数理统计》A卷答案" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": "probability-theory-010-Q9", + "text": "10. D\n\n由分布函数和概率密度的性质可得\n\n${F}_{\\mathrm {1}}^{\\mathrm {'}}\\mathrm {(}x\\mathrm {)=}{f}_{\\mathrm {1}}\\mathrm {(}x\\mathrm {),}{ F}_{\\mathrm {2}}^{\\mathrm {'}}\\mathrm {(}x\\mathrm {)=}{f}_{\\mathrm {2}}\\mathrm {(}x\\mathrm {)}$,\n\n${f}_{\\mathrm {1}}\\mathrm {(}x\\mathrm {)}{F}_{\\mathrm {2}}\\mathrm {(}x\\mathrm {)+}{f}_{\\mathrm {2}}\\mathrm {(}x\\mathrm {)}{F}_{\\mathrm {1}}\\mathrm {(}x\\mathrm {)\\ge 0(-\\infty <}x\\mathrm {<+\\infty )}$.\n\n从而有\n\n$$\n\\int _{\\mathrm {-\\infty }} ^{\\mathrm {+\\infty }} \\mathrm {}\\left [ {{f}_{\\mathrm {1}}\\mathrm {(}x\\mathrm {)}{F}_{\\mathrm {2}}\\mathrm {(}x\\mathrm {)+}{f}_{\\mathrm {2}}\\mathrm {(}x\\mathrm {)}{F}_{\\mathrm {1}}\\mathrm {(}x\\mathrm {)}}\\right ]\\mathrm {d}x\\mathrm {=}\\int _{\\mathrm {-\\infty }} ^{\\mathrm {+\\infty }} \\mathrm {}\\mathrm { d}\\left [ {{F}_{\\mathrm {1}}\\mathrm {(}x\\mathrm {)}{F}_{\\mathrm {2}}\\mathrm {(}x\\mathrm {)}}\\right ]\n$$\n\n$$\n\\mathrm {=}{\\left [ {{F}_{\\mathrm {1}}\\mathrm {(}x\\mathrm {)}{F}_{\\mathrm {2}}\\mathrm {(}x\\mathrm {)}}\\right ]}_{\\mathrm {-\\infty }}^{\\mathrm {+\\infty }}\\mathrm {=}{F}_{\\mathrm {1}}\\mathrm {(+\\infty )}{F}_{\\mathrm {2}}\\mathrm {(+\\infty )-}{F}_{\\mathrm {1}}\\mathrm {(-\\infty )}{F}_{\\mathrm {2}}\\mathrm {(-\\infty )=1}\\mathrm {}\n$$", + "text_sha256": "aff0fa88ba98d76857db3b0594d492b1b3f33a0ae143f806758ab994d15a0825", + "knowledge_path": "knowledge/probability/probability-theory-010.md", + "knowledge_sha256": "6a92793ba00d6735e0e35c3c0d332db5cf283c735cb66f4058de2496b9605f79" + }, + "probability-theory-015:q-probability-theory-015-q14:c01": { + "chunk_id": "probability-theory-015:q-probability-theory-015-q14:c01", + "course_id": "probability_theory", + "source_id": "probability-theory-015", + "source_title": "2018春季A卷答案", + "heading_path": [ + "2018春季A卷答案" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": "probability-theory-015-Q14", + "text": "(1)求$\\theta$的最大似然估计$\\hat{\\Theta}_L$;\n\n(2)证明$\\hat{\\Theta}_L$是$\\theta$的无偏估计,且$\\hat{\\Theta}_L$是$\\theta$的相合估计(一致估计)。\n\n**解:**(1)似然函数:$L=\\prod _{i=1} ^{n} \\frac {1} {2\\theta }{e}^{-\\frac {|{x}_{i}|} {\\theta }}$,$L=\\frac {1} {{\\left ( {2\\theta }\\right )}^{n}}{e}^{-\\sum _{i=1} ^{n} \\frac {|{x}_{i}|} {\\theta }}$,(3分)$lnL=-nln(2\\theta )-\\frac {1} {\\theta }\\sum _{i=1} ^{n} \\left | {{x}_{i}}\\right |$ (1分)\n\n$\\frac {d} {d\\theta }\\left ( {lnL}\\right )=-\\frac {n} {\\theta }+\\frac {1} {{\\theta }^{2}}\\sum _{i=1} ^{n} \\left | {{x}_{i}}\\right |$,令$-\\frac {n} {\\hat {\\theta }}+\\frac {1} {{\\hat {\\theta }}^{2}}\\sum _{i=1} ^{n} \\left | {{x}_{i}}\\right |=0$,(1分)\n\n得\n\n$\\hat{\\theta}_L=\\frac{1}{n}\\sum_{i=1}^{n}|X_i|$ (1分)\n\n(2)$E\\left | {X}\\right |=\\int \\frac {1} {\\theta }{xe}^{-\\frac {x} {\\theta }}dx=-\\left ( {{xe}^{-\\frac {x} {\\theta }}}\\right ){|}_{0}^{+\\infty }+\\int {e}^{-\\frac {x} {\\theta }}dx=-\\left ( {{\\theta e}^{-\\frac {x} {\\theta }}}\\right ){|}_{0}^{+\\infty }=\\theta$ (2分)\n\n$EX=\\int \\frac {1} {2\\theta }{xe}^{-\\frac {|x|} {\\theta }}dx=0$,", + "text_sha256": "152abd1c9d2f5c72d0fb54e4212f3d7466e82c11d17765b61c0dbb42f7e46257", + "knowledge_path": "knowledge/probability/probability-theory-015.md", + "knowledge_sha256": "7103c020e4e1f3cd1f471ae5edb58da91a01e736e2ab8452221e59cee657fe2b" + }, + "probability-theory-024:p1:c01": { + "chunk_id": "probability-theory-024:p1:c01", + "course_id": "probability_theory", + "source_id": "probability-theory-024", + "source_title": "2023概率A(1)", + "heading_path": [ + "2023概率A(1)" + ], + "locator_type": "page", + "locator_start": 1, + "locator_end": 1, + "question_id": null, + "text": "2023A\n\n一、选择题(共12 题,每题3 分,共36 分)\n\n1. 设0, 1, 0, 1, 1 为来自总体为二项分布\n\n\n1,\nB\np 的样本观测值,则p 的矩估计为(\n)。\n\n3\n\n1\n\n2\n\n4\n\n(A)\n\n5\n(B)\n\n5\n(C)\n\n5\n(D)\n\n5\n\n2. 设随机变量X 与Y 相互独立, 且分别服从参数为1 与参数为4 的指数分布, 则P{X2f,无混叠)\n\nFs1 = 200;\n\nn1 = 0:1/Fs1:T;\n\nx1 = sin(2*pi*f*n1);\n\nsubplot(2,1,1);\n\nplot(t, x_cont, 'k'); hold on;\n\nstem(n1, x1, 'r', 'filled');\n\ntitle('Fs = 200 Hz,无混叠');\n\nxlabel('时间 (s)'); ylabel('幅度');\n\n% 情况B:Fs = 120 Hz(<2f,出现混叠)\n\nFs2 = 120;\n\nn2 = 0:1/Fs2:T;\n\nx2 = sin(2*pi*f*n2);\n\nsubplot(2,1,2);\n\nplot(t, x_cont, 'k'); hold on;\n\nstem(n2, x2, 'b', 'filled');", + "text_sha256": "a56294103f8d6c72d3453e74bbfd1520dcdff00f9acea43b5a43e60b60a43263", + "knowledge_path": "knowledge/signals_and_communication/signals-and-communication-001.md", + "knowledge_sha256": "a077a553413de586175e0dd1ce7a3434f7fa799c796cebcb04c19bc48330f080" + }, + "signals-and-communication-007:p140:c01": { + "chunk_id": "signals-and-communication-007:p140:c01", + "course_id": "signals_and_communication", + "source_id": "signals-and-communication-007", + "source_title": "通信基础-差错控制编码-2025F", + "heading_path": [ + "通信基础-差错控制编码-2025F" + ], + "locator_type": "page", + "locator_start": 140, + "locator_end": 140, + "question_id": null, + "text": "n 循环码(续)\n\n第8章 差错控制编码\n\n系统码结构循环码的生成矩阵\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nn k\nn\nk\nk\nk\nn k\nn\nk\nk\nk\n\n\n\n\n\n\n\n\n\n\n\n\n1\n1\n1\n1\n2\n2\n2\n2\n\nX\nA\nX\nP\nX\nX\nP\nX\n\nX\nA\nX\nP\nX\nX\nP\nX\nG X\n\n\n\n\n......\n......\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nn k\nn k\n\n\n\n\n1\n1\n1\n1\n\nX\nA\nX\nP X\nX\nP X\n\nn k\nn k\n\n\n\n\nX\nA\nX\nP\nX\nX\nP\nX\n\n0\n0\n0\n\np\np\np\np\n\n1\n0\n...\n0\n0\n...\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nk\nn k\nk\nn k\nk\nk\n\n\n\n\n\n\n\n\n1,\n1\n1,\n2\n1,1\n1,0\n\np\n\np\np\np\n\n0\n1\n...\n0\n0\n\n...\n\nk\nn k\n\nk\nn k\nk\nk\n\n\n\n\n2,\n1\n\n\n\n\n\n\n2,\n2\n2,1\n2,0\n\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n\nG\n\n\n\np\np\np\np\n\n0\n0\n...\n1\n0\n...\n\nn k\nn k\n\n1,\n1\n1,\n2\n1,1\n1,0\n\n\n\n\np\np\np\np\n\n0\n0\n...\n0\n1\n...\n\nn k\nn k\n\n0,\n1\n0,\n2\n0,1\n0,0\n\n\n\n\n\n\n\nI\nP\n\n|\n\n\n\nk\nk n k\n\n,\n\n\n\n\n\nk\n\n140\n\nT\nk n k\nn\n\n相应地其监督矩阵为:\n\nH\nP\nI\n\n|\n\n,\n\n", + "text_sha256": "51d1a65bef15563edf9ee50b76e5076d7df21182b71220ace6b6799d3b2234b1", + "knowledge_path": "knowledge/signals_and_communication/signals-and-communication-007.md", + "knowledge_sha256": "f7c525dee458c28ed4eef1ee5b3cae76b15cbc30f7311e7d1e2151246666db43" + }, + "signals-and-communication-014:s58:c01": { + "chunk_id": "signals-and-communication-014:s58:c01", + "course_id": "signals_and_communication", + "source_id": "signals-and-communication-014", + "source_title": "第3章 离散傅里叶变换", + "heading_path": [ + "第3章 离散傅里叶变换", + "【例3-5】已知x(n)=cos(nπ/6)是一个长度N=12的有限长序列,求它的N点DFT。" + ], + "locator_type": "slide", + "locator_start": 58, + "locator_end": 58, + "question_id": null, + "text": "- 3.6 MATLAB应用实例\n- 【例题3-14】信号的Fourier分解与合成\n- MATLAB代码如下:\n- clear all;N = 256; dt = 0.05; % data numbers and sampling intervel,sampling frequence is 20Hz\n- n=0:N-1;t=n*dt; % 序号序列和时间序列\n- x1=sin(2*pi*t);x2=0.5*sin(2*pi*5*t);x=sin(2*pi*t)+0.5*sin(2*pi*5*t); %signals add\n- m=floor(N/2)+1; %down for integer\n- a=zeros(1,m);b=zeros(1,m);\n- for k=0:m-1\n- for ii=0:N-1\n- a(k+1)=a(k+1)+2/N*x(ii+1)*cos(2*pi*k*ii/N);%matlab's array index must be increase from 1\n- b(k+1)=b(k+1)+2/N*x(ii+1)*sin(2*pi*k*ii/N);\n- end\n- c(k+1)=sqrt(a(k+1).^2+b(k+1).^2);\n- end\n- if(mod(N,2)~=1)a(m)=a(m)/2;end\n- for ii=0:N-1\n- xx(ii+1)=a(1)/2;\n- for k=1:m-1;\n- xx(ii+1)=xx(ii+1)+a(k+1)*cos(2*pi*k*ii/N)+b(k+1)*sin(2*pi*k* ii/N);\n- end\n- end\n- DFT\n- IDFT", + "text_sha256": "e06c3300180e1a3343239ad0124b71afa1cde78e0ee9326612179199302526a3", + "knowledge_path": "knowledge/signals_and_communication/signals-and-communication-014.md", + "knowledge_sha256": "e2ddca205a0bfcdad880022d97100262d46689fe2fdfa4a947bb5127a6f05db7" + }, + "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题3-校园二手交易平台系统~一-核心考点-uml全流程建模-用例图-用例描述-活动图-类图~4.-类模型-class-model:c02": { + "chunk_id": "software-engineering-036:h-复习整理-四道系统设计模拟题~模拟题3-校园二手交易平台系统~一-核心考点-uml全流程建模-用例图-用例描述-活动图-类图~4.-类模型-class-model:c02", + "course_id": "software_engineering", + "source_id": "software-engineering-036", + "source_title": "华南理工大学软件工程概论考纲针对模拟题", + "heading_path": [ + "复习整理:四道系统设计模拟题", + "模拟题3:校园二手交易平台系统", + "一、核心考点:UML全流程建模(用例图+用例描述+活动图+类图)", + "4. 类模型(Class Model)" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "```\n┌──────────────────────┐\n│ Account │ 泛化(实线空心三角)\n├──────────────────────┤ ──────────────┐\n│ - 账号ID: String │ │\n│ - 密码: String │ ▼\n│ - 身份认证状态: Bool │ ┌──────────────────────┐\n└──────────────────────┘ │ User │\n ├──────────────────────┤\n │ - 姓名: String │\n │ - 学号: String │\n │ - 联系方式: String │\n └─────┬────────────────┘\n │ 关联(1:N)\n ▼\n┌──────────────────────┐ ┌──────────────────────┐\n│ Order │ │ Item │\n├──────────────────────┤ ├──────────────────────┤\n│ - 订单号: String │◄─┤ - 物品ID: String │\n│ - 交易时间: Date │ │ - 标题: String │\n│ - 状态: String │ │ - 价格: Float │\n└─────┬────────────────┘ │ - 图片: String │\n │ │ - 状态: String │\n │ 关联(1:N) └──────────────────────┘\n ▼\n┌──────────────────────┐\n│ Comment │\n├──────────────────────┤\n│ - 评价ID: String │\n│ - 评分: Int │\n│ - 内容: String │\n└──────────────────────┘\n```", + "text_sha256": "9e515c9e24ab576a67905890acd351a3681f86918e0106a063466d27b4709304", + "knowledge_path": "knowledge/software_engineering/software-engineering-036.md", + "knowledge_sha256": "69e5135ead1ea4c77adaa15cf164d41adfcb9bab3bd1e59ce38bab982c62c342" + }, + "software-engineering-009:p3:c02": { + "chunk_id": "software-engineering-009:p3:c02", + "course_id": "software_engineering", + "source_id": "software-engineering-009", + "source_title": "COCOMOII_软件项目管理中的成本估算方法", + "heading_path": [ + "COCOMOII_软件项目管理中的成本估算方法" + ], + "locator_type": "page", + "locator_start": 3, + "locator_end": 3, + "question_id": null, + "text": "注注] 性!\n\n6\n\u0001\n\n虽然= 出/Μ\n= # 3 知/Ε 和他的同事们在∀# + ! ∃!\nΕ 中引入\n\n%,\n\n] , !\u0001\n\n脱,+\n\n⎯些坐旦且兰丝兰竺兰三坐竺里巴6;\n\n,\n但仍然不可能\n做到非常准确\n\n,\n以期提高它的精确度\n\n了贝叶斯分析\n\n%,\n软件再工程和代码自动转换也是模型额外考虑的\n\n。不过∀# ∀#∃# %%确实有了很大提高\n\n,\n\n它改变了∀# ∀# ∃!\n?% 中软件源代码规模计算困难\n\n,\n\n。使用自动化翻译软件更改的项目通常有更高的\n\n地方\n\n,\n与估算的项目对\n\n一味从经验和类似项目中得到数据\n\n代码更改百分比∋以了)\n\n,\n但是相应的工作量却少得多\n\n。\n\n,\n今天的∀# ∀# ∃#\n\n∀# ∀# ∃!\nΕ 使用自动化翻译的代码百分比∋; 乃和劳动\n\n。应用实践表明\n\n象联系不大的问题\n\nΕ 模型己经有了相当的正确性\n\n,\n其估算的软件开发成\n\n≅)\n\n生产率∋戌即Θ,\n\n,\n来计算这种情况对总工作量于叭了的\n\n,\n进度相差不到Ν\u0002 ⊥\n\n本与实际成本相差不到 ! ⊥\n\n,\n很\n\n6\n\n影响\n\nδ ,\nδ δ\n; 8 Δ\nΕ\n, 月心乙Β,\n七Τ —\n\n。\n\n好地满足了项目决策和管理的需要\n\n「\n\n5\n9∃一\n\n⎯‘ “ ‘“\n\nεφ\n\nε\n\n’ ‘\n\n十\n\n‘”\n\n,\n\n县纵\n\n,\n要\n\n软件企业能力成熟度的提高不是一缴而就的\n\n,\n就必须从项目\n\n做到过程持续改进和有效的项目控制\n\nΝ\n应用的注意事项\n\n。\n∀# ∀#∃# 模型给项目管理水平的提高\n带来了契机\n\n计划开始\n\n∋%)∀, + β ∃# 模型中规模度因子和工作量调整因\n\n,\n它的输入要求项目管理者细致地划分工\n\n,\n都是通过以前的项目统计和专家法评估得\n\n子的计算\n\n,\n提供给项\n\n,\n输出则给出成本和进度要求\n\n作任务结构\n\n。但∀# ∀# ∃# 是一个公开\n\n,\n具有一定的经验性\n\n到的\n\n。其易用性也广为人们所赞\n赏\n\n目双方共同的度量标准\n\n、灵活的模型\n\n,\n工作量乘数的大小甚至因子本身都\n\n的\n\n,\n\n。随着软件工程研究实践的深入和理论的发展\n\n,\n可以根据项目经验作适当地调整\n\n。\n\n不是一成不变\n\n∀# ∀#∃# 模型在不断演化\n\n。从∀# ∀#∃!\nΕ 的变化可\n\n∀# ∀# ∃#\nΕ 中从三个模型得到评估值Α 后\n\n,\n使用表Ν\n\n、功能点\n\n、能力成熟度模型\n\n,\n它吸收了对象点\n\n以看出\n\n计算相应的输出范围∋乐观值\n\n、悲观值),\n\n,\n增加了模型的灵活性\n\n、可\n\n等其它软件工程研究成果\n\n表Ν\n期望值输出范围\n\n、可操作性\n\n,\n表现出强大的生命力\n\n。\n\n扩展性\n\n模型\n乐观值\n悲观值\n\n∗\n\n参考文献\n\n, Φ Ι\n\n应用构图\n! \u0001! Α\n\n,#Α\n\n6\n软件工程经济学【∃】\n\nΞ5%\n=ϑ 叮=,\n\n∗中国铁道出版社", + "text_sha256": "b77aa2b315c01d92fef607cb0464d871b4c52343fb50d71694115a9d4142a6a7", + "knowledge_path": "knowledge/software_engineering/software-engineering-009.md", + "knowledge_sha256": "7f9778771f1a2456f6e2de2180963c98055367cd593deee934e09ef9e53ead93" + }, + "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c12": { + "chunk_id": "software-engineering-035:h-华南理工大学-软件工程-样例含答案:c12", + "course_id": "software_engineering", + "source_id": "software-engineering-035", + "source_title": "华南理工大学《软件工程》样例含答案", + "heading_path": [ + "华南理工大学《软件工程》样例含答案" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "1.软件生存周期是从软件开始开发到开发结束的整个时期。(× )\n\n2.系统流程图是一个典型的描述逻辑系统的传统工具。( × )\n\n3.数据流图和数据字典共同构成系统的逻辑模型。( √ )\n\n4.扇出是一个模块直接调用的模块数目,一般推荐的扇出为3或4。( √ )\n\n5.耦合用于衡量一个模块内部的各个元素彼此结合的紧密程度。( ×)\n\n6.程序运行过程中出现错误叫做容错。 ( × )\n\n7.软件测试的目的是证明程序没有错误。 ( × )\n\n8.白盒测试法是将程序看成一个透明的盒子,不需要了解程序的内部结构和处理过程。\n\n( × )\n\n五、问答题\n\n1.什么是软件生存周期。\n\n答:一个软件从定义到开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件生存周期就是从提出软件产品开始,直到该软件产品被淘汰的全过程。\n\n2.在需求分析阶段,建立目标系统的逻辑模型的具体做法是什么。\n\n答:系统流程图是描述物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘系统里的每个部件(程序、文件、数据库、表格、人工过程等)。系统流程图表达的是部件的信息流程,而不表示对信息进行加工处理的控制过程。\n\n3.为什么数据流图要分层?\n\n答:这了表达数据处理过程的数据加工情况,用一个数据流图是不够的。为表达稍为复杂的实际问题,需要按照问题的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。\n\n4.软件的质量反应为哪些方面的问题?\n\n答:软件需求是度量软件质量的基础,不符合需求的软件就不具备质量。\n\n在各种标准中定义了一些开发准则,用来指导软件人员用工程化的方法来开发软件。\n\n如果不遵守这些开发准则,软件质量就得不到保证。\n\n往往会有一些隐含的需求没有明确地提出来。如果软件只满足那些精确定义了的需求而没有满足这些隐含的需求,软件质量也不能保证。\n\n软件质量是各种特性的复杂组合。它随着应用的不同而不同,随着用户提出的质量要求不同而不同。\n\n**软件工程期末试卷(六)**\n\n软件工程导论试题\n\n一.选择\n\n1、瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和( C)。 A、详细计划 B、可行性分析\n\nC、 运行阶段 D、 测试与排错 2、从结构化的瀑布模型看,在它的生命周期中的八个阶段中,下面的几个选项中哪个环节出错,对软件的影响最大(C )。 A、详细设计阶段 B、概要设计阶段", + "text_sha256": "5d4c6ab38fe9598bb4ae637c8d87e33cbf7d5245ce3e1871a87b518f616d7007", + "knowledge_path": "knowledge/software_engineering/software-engineering-035.md", + "knowledge_sha256": "fb3271615d0a814bdc6b6acd3c3832b67780c696ecccda5af92704c1ea3c010c" + }, + "software-testing-044:h-unit6~第七章-网络安全性测试-考试重点~二-网络攻击防范措施-针对每种攻击:c01": { + "chunk_id": "software-testing-044:h-unit6~第七章-网络安全性测试-考试重点~二-网络攻击防范措施-针对每种攻击:c01", + "course_id": "software_testing", + "source_id": "software-testing-044", + "source_title": "Unit6", + "heading_path": [ + "Unit6", + "✅ **第七章:网络安全性测试(考试重点)**", + "二、网络攻击防范措施(针对每种攻击)" + ], + "locator_type": "heading", + "locator_start": null, + "locator_end": null, + "question_id": null, + "text": "| 攻击类型 | 防范措施(PPT中明确给出) |\n| ----------- | ----------------------------------------------------------------------------------------------------------------------------------- |\n| **直接对象引用** | 统一权限控制框架;对每个资源访问进行鉴权;避免使用可预测的ID(如使用UUID) |\n| **恶意代码上传** | ①白名单检查扩展名(只允许`jpg,gif`等);②过滤特殊字符(`../`、`\\0`空字节);③上传目录设置为不可执行脚本;④对文件名重命名(如时间戳+随机数) |\n| **SQL注入** | ①输入验证(数字强转、字符串转义);②使用参数化查询(JSP的`PreparedStatement`、ASP.NET的`SqlParameterCollection`);③最小权限原则(不用`sa`或`dba`);④禁用敏感存储过程(`xp_cmdshell`) |\n| **XSS** | ①输入过滤(去除`
悬挂点位置
(mm)
252015105-5-10-15-20-25