Zum Inhalt
HALOWERK

Agentenwerk

oss openolat question bank answer fixture review

Executes a question-bank assessment against answer fixtures you supply — an answer plus the score it should produce — using the native OpenOLAT QTI engine rather than a reimplementation of the scoring rules. Each fixture comes back with expected and actual score, and the discrepancy count says at a glance whether the bank behaves as its author believed. This is the regression test for a question bank before it goes in front of learners, where a mis-scoring item is expensive and hard to undo.

POST https://agent.halowerk.com/v1/oss-openolat-question-bank-answer-fixture-review

Eingaben

Felder des veröffentlichten Eingabeschemas
FeldTypPflichtBeschreibung
bank_idstringJa
maximum_scorestringJa
cut_valueSiehe SchemaJa
score_tolerancestringJa
itemsarrayJa
assetsarrayJa
fixturesarrayJa
Vollständiges Eingabeschema anzeigen
{
  "type": "object",
  "properties": {
    "bank_id": {
      "type": "string",
      "pattern": "^[A-Za-z_][A-Za-z0-9_.-]{0,63}$"
    },
    "maximum_score": {
      "type": "string",
      "pattern": "^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,9})?$"
    },
    "cut_value": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,9})?$"
        },
        {
          "type": "null"
        }
      ]
    },
    "score_tolerance": {
      "type": "string",
      "pattern": "^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,9})?$"
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "item_id": {
            "type": "string",
            "pattern": "^[A-Za-z_][A-Za-z0-9_.-]{0,63}$"
          },
          "xml": {
            "type": "string",
            "minLength": 1,
            "maxLength": 131072
          }
        },
        "required": [
          "item_id",
          "xml"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 16
    },
    "assets": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_./-]{0,127}$"
          },
          "media_type": {
            "enum": [
              "image/png",
              "image/jpeg",
              "image/gif",
              "image/webp"
            ]
          },
          "content_base64": {
            "type": "string",
            "minLength": 4,
            "maxLength": 174764
          }
        },
        "required": [
          "name",
          "media_type",
          "content_base64"
        ],
        "additionalProperties": false
      },
      "minItems": 0,
      "maxItems": 32
    },
    "fixtures": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "fixture_id": {
            "type": "string",
            "pattern": "^[A-Za-z_][A-Za-z0-9_.-]{0,63}$"
          },
          "events": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "item_id": {
                  "type": "string",
                  "pattern": "^[A-Za-z_][A-Za-z0-9_.-]{0,63}$"
                },
                "responses": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "response_id": {
                        "type": "string",
                        "pattern": "^[A-Za-z_][A-Za-z0-9_.-]{0,63}$"
                      },
                      "values": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "minLength": 0,
                          "maxLength": 4096
                        },
                        "minItems": 0,
                        "maxItems": 64
                      }
                    },
                    "required": [
                      "response_id",
                      "values"
                    ],
                    "additionalProperties": false
                  },
                  "minItems": 0,
                  "maxItems": 32
                },
                "persist_and_reopen": {
                  "type": "boolean"
                }
              },
              "required": [
                "item_id",
                "responses",
                "persist_and_reopen"
              ],
              "additionalProperties": false
            },
            "minItems": 0,
            "maxItems": 64
          },
          "expected": {
            "type": "object",
            "properties": {
              "test_score": {
                "anyOf": [
                  {
                    "type": "string",
                    "pattern": "^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,9})?$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "passed": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "item_id": {
                      "type": "string",
                      "pattern": "^[A-Za-z_][A-Za-z0-9_.-]{0,63}$"
                    },
                    "score": {
                      "anyOf": [
                        {
                          "type": "string",
                          "pattern": "^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,9})?$"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "attempts": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 64
                    },
                    "response_valid": {
                      "type": "boolean"
                    },
                    "unbound_response_ids": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "pattern": "^[A-Za-z_][A-Za-z0-9_.-]{0,63}$"
                      },
                      "minItems": 0,
                      "maxItems": 32,
                      "uniqueItems": true
                    },
                    "invalid_response_ids": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "pattern": "^[A-Za-z_][A-Za-z0-9_.-]{0,63}$"
                      },
                      "minItems": 0,
                      "maxItems": 32,
                      "uniqueItems": true
                    }
                  },
                  "required": [
                    "item_id",
                    "score",
                    "attempts",
                    "response_valid",
                    "unbound_response_ids",
                    "invalid_response_ids"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "maxItems": 16
              }
            },
            "required": [
              "test_score",
              "passed",
              "items"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "fixture_id",
          "events",
          "expected"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 16
    }
  },
  "required": [
    "bank_id",
    "maximum_score",
    "cut_value",
    "score_tolerance",
    "items",
    "assets",
    "fixtures"
  ],
  "additionalProperties": false
}

Originalschema öffnen

Veröffentlichtes Eingabebeispiel

{
  "bank_id": "supplied_bank",
  "maximum_score": "8",
  "cut_value": "6",
  "score_tolerance": "0",
  "items": [
    {
      "item_id": "single",
      "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><assessmentItem xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\" identifier=\"single\" title=\"single\" adaptive=\"false\" timeDependent=\"false\"><responseDeclaration identifier=\"RESPONSE\" cardinality=\"single\" baseType=\"identifier\"><correctResponse><value>A</value></correctResponse></responseDeclaration><outcomeDeclaration identifier=\"SCORE\" cardinality=\"single\" baseType=\"float\"><defaultValue><value>0</value></defaultValue></outcomeDeclaration><itemBody><p><img src=\"media/diagram.png\" alt=\"Synthetic one-pixel fixture\"/></p><choiceInteraction responseIdentifier=\"RESPONSE\" shuffle=\"false\" maxChoices=\"1\"><simpleChoice identifier=\"A\">Alpha</simpleChoice><simpleChoice identifier=\"B\">Beta</simpleChoice><simpleChoice identifier=\"C\">Gamma</simpleChoice></choiceInteraction></itemBody><responseProcessing template=\"http://www.imsglobal.org/question/qti_v2p1/rptemplates/match_correct\"/></assessmentItem>"
    },
    {
      "item_id": "multiple",
      "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><assessmentItem xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\" identifier=\"multiple\" title=\"multiple\" adaptive=\"false\" timeDependent=\"false\"><responseDeclaration identifier=\"RESPONSE\" cardinality=\"multiple\" baseType=\"identifier\"><correctResponse><value>A</value><value>B</value></correctResponse><mapping defaultValue=\"-2\" lowerBound=\"0\" upperBound=\"3\"><mapEntry mapKey=\"A\" mappedValue=\"2\"/><mapEntry mapKey=\"B\" mappedValue=\"1\"/><mapEntry mapKey=\"C\" mappedValue=\"-1\"/></mapping></responseDeclaration><outcomeDeclaration identifier=\"SCORE\" cardinality=\"single\" baseType=\"float\"><defaultValue><value>0</value></defaultValue></outcomeDeclaration><itemBody><choiceInteraction responseIdentifier=\"RESPONSE\" shuffle=\"false\" maxChoices=\"3\"><simpleChoice identifier=\"A\">Alpha</simpleChoice><simpleChoice identifier=\"B\">Beta</simpleChoice><simpleChoice identifier=\"C\">Gamma</simpleChoice></choiceInteraction></itemBody><responseProcessing template=\"http://www.imsglobal.org/question/qti_v2p1/rptemplates/map_response\"/></assessmentItem>"
    },
    {
      "item_id": "numeric",
      "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><assessmentItem xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\" identifier=\"numeric\" title=\"numeric\" adaptive=\"false\" timeDependent=\"false\"><responseDeclaration identifier=\"RESPONSE\" cardinality=\"single\" baseType=\"float\"><correctResponse><value>42</value></correctResponse></responseDeclaration><outcomeDeclaration identifier=\"SCORE\" cardinality=\"single\" baseType=\"float\"><defaultValue><value>0</value></defaultValue></outcomeDeclaration><itemBody><p>Answer: <textEntryInteraction responseIdentifier=\"RESPONSE\"/></p></itemBody><responseProcessing template=\"http://www.imsglobal.org/question/qti_v2p1/rptemplates/match_correct\"/></assessmentItem>"
    },
    {
      "item_id": "text",
      "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><assessmentItem xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\" identifier=\"text\" title=\"text\" adaptive=\"false\" timeDependent=\"false\"><responseDeclaration identifier=\"RESPONSE\" cardinality=\"single\" baseType=\"string\"><correctResponse><value>Grüße</value></correctResponse></responseDeclaration><outcomeDeclaration identifier=\"SCORE\" cardinality=\"single\" baseType=\"float\"><defaultValue><value>0</value></defaultValue></outcomeDeclaration><itemBody><p>Answer: <textEntryInteraction responseIdentifier=\"RESPONSE\"/></p></itemBody><responseProcessing><responseCondition><responseIf><stringMatch caseSensitive=\"false\" substring=\"false\"><variable identifier=\"RESPONSE\"/><baseValue baseType=\"string\">Grüße</baseValue></stringMatch><setOutcomeValue identifier=\"SCORE\"><baseValue baseType=\"float\">2</baseValue></setOutcomeValue></responseIf><responseElse><setOutcomeValue identifier=\"SCORE\"><baseValue baseType=\"float\">0</baseValue></setOutcomeValue></responseElse></responseCondition></responseProcessing></assessmentItem>"
    },
    {
      "item_id": "ordered",
      "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><assessmentItem xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\" identifier=\"ordered\" title=\"ordered\" adaptive=\"false\" timeDependent=\"false\"><responseDeclaration identifier=\"RESPONSE\" cardinality=\"ordered\" baseType=\"identifier\"><correctResponse><value>A</value><value>B</value><value>C</value></correctResponse></responseDeclaration><outcomeDeclaration identifier=\"SCORE\" cardinality=\"single\" baseType=\"float\"><defaultValue><value>0</value></defaultValue></outcomeDeclaration><itemBody><orderInteraction responseIdentifier=\"RESPONSE\" shuffle=\"false\"><simpleChoice identifier=\"A\">Alpha</simpleChoice><simpleChoice identifier=\"B\">Beta</simpleChoice><simpleChoice identifier=\"C\">Gamma</simpleChoice></orderInteraction></itemBody><responseProcessing template=\"http://www.imsglobal.org/question/qti_v2p1/rptemplates/match_correct\"/></assessmentItem>"
    }
  ],
  "assets": [
    {
      "name": "media/diagram.png",
      "media_type": "image/png",
      "content_base64": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4//8/AAX+Av4N70a4AAAAAElFTkSuQmCC"
    }
  ],
  "fixtures": [
    {
      "fixture_id": "correct",
      "events": [
        {
          "item_id": "single",
          "responses": [
            {
              "response_id": "RESPONSE",
              "values": [
                "A"
              ]
            }
          ],
          "persist_and_reopen": false
        },
        {
          "item_id": "multiple",
          "responses": [
            {
              "response_id": "RESPONSE",
              "values": [
                "A",
                "B"
              ]
            }
          ],
          "persist_and_reopen": true
        },
        {
          "item_id": "numeric",
          "responses": [
            {
              "response_id": "RESPONSE",
              "values": [
                "42.0"
              ]
            }
          ],
          "persist_and_reopen": false
        },
        {
          "item_id": "text",
          "responses": [
            {
              "response_id": "RESPONSE",
              "values": [
                "GRÜßE"
              ]
            }
          ],
          "persist_and_reopen": false
        },
        {
          "item_id": "ordered",
          "responses": [
            {
              "response_id": "RESPONSE",
              "values": [
                "A",
                "B",
                "C"
              ]
            }
          ],
          "persist_and_reopen": false
        }
      ],
      "expected": {
        "test_score": "8",
        "passed": true,
        "items": [
          {
            "item_id": "single",
            "score": "1",
            "attempts": 1,
            "response_valid": true,
            "unbound_response_ids": [],
            "invalid_response_ids": []
          },
          {
            "item_id": "multiple",
            "score": "3",
            "attempts": 1,
            "response_valid": true,
            "unbound_response_ids": [],
            "invalid_response_ids": []
          },
          {
            "item_id": "numeric",
            "score": "1",
            "attempts": 1,
            "response_valid": true,
            "unbound_response_ids": [],
            "invalid_response_ids": []
          },
          {
            "item_id": "text",
            "score": "2",
            "attempts": 1,
            "response_valid": true,
            "unbound_response_ids": [],
            "invalid_response_ids": []
          },
          {
            "item_id": "ordered",
            "score": "1",
            "attempts": 1,
            "response_valid": true,
            "unbound_response_ids": [],
            "invalid_response_ids": []
          }
        ]
      }
    },
    {
      "fixture_id": "expected_discrepancies",
      "events": [
        {
          "item_id": "single",
          "responses": [
            {
              "response_id": "RESPONSE",
              "values": [
                "A"
              ]
            }
          ],
          "persist_and_reopen": false
        },
        {
          "item_id": "multiple",
          "responses": [
            {
              "response_id": "RESPONSE",
              "values": [
                "A",
                "C"
              ]
            }
          ],
          "persist_and_reopen": true
        },
        {
          "item_id": "numeric",
          "responses": [
            {
              "response_id": "RESPONSE",
              "values": [
                "41"
              ]
            }
          ],
          "persist_and_reopen": false
        },
        {
          "item_id": "text",
          "responses": [
            {
              "response_id": "RESPONSE",
              "values": [
                "grüße"
              ]
            }
          ],
          "persist_and_reopen": false
        },
        {
          "item_id": "ordered",
          "responses": [
            {
              "response_id": "RESPONSE",
              "values": [
                "C",
                "B",
                "A"
              ]
            }
          ],
          "persist_and_reopen": false
        }
      ],
      "expected": {
        "test_score": "5",
        "passed": true,
        "items": [
          {
            "item_id": "single",
            "score": "1",
            "attempts": 1,
            "response_valid": true,
            "unbound_response_ids": [],
            "invalid_response_ids": []
          },
          {
            "item_id": "multiple",
            "score": "1",
            "attempts": 1,
            "response_valid": true,
            "unbound_response_ids": [],
            "invalid_response_ids": []
          },
          {
            "item_id": "numeric",
            "score": "1",
            "attempts": 1,
            "response_valid": true,
            "unbound_response_ids": [],
            "invalid_response_ids": []
          },
          {
            "item_id": "text",
            "score": "2",
            "attempts": 1,
            "response_valid": true,
            "unbound_response_ids": [],
            "invalid_response_ids": []
          },
          {
            "item_id": "ordered",
            "score": "0",
            "attempts": 1,
            "response_valid": true,
            "unbound_response_ids": [],
            "invalid_response_ids": []
          }
        ]
      }
    }
  ]
}

Ergebnis & Dokumentation

Maschinenlesbare Dokumentation dieses Hubs

Quelle dieser Seite: der veröffentlichte HALOWERK-Katalog. Stand: 2026-11-01, 15:19 UTC.

Weitere Endpunkte dieses Hubs

Alle Endpunkte dieses Hubs →