tools:pruefung-regelschule
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Nächste Überarbeitung | Vorherige Überarbeitung | ||
| tools:pruefung-regelschule [17/05/2026 11:24] – angelegt Eric Weber | tools:pruefung-regelschule [17/05/2026 11:37] (aktuell) – Eric Weber | ||
|---|---|---|---|
| Zeile 28: | Zeile 28: | ||
| </ | </ | ||
| </ | </ | ||
| + | |||
| < | < | ||
| - | # | + | # |
| - | # | + | # |
| - | .mpt-card{background: | + | .mpt-card{background: |
| - | .mpt-btn{background: | + | .mpt-btn{background: |
| - | .mpt-btn: | + | .mpt-btn: |
| .mpt-btn: | .mpt-btn: | ||
| .mpt-hidden{display: | .mpt-hidden{display: | ||
| - | .mpt-progress{height: | + | .mpt-progress{height: |
| .mpt-progress-fill{height: | .mpt-progress-fill{height: | ||
| - | .mpt-mc-opt{width: | + | .mpt-mc-opt{width: |
| - | .mpt-mc-opt: | + | .mpt-mc-opt: |
| - | .mpt-mc-opt.correct{border-color: | + | .mpt-mc-opt.correct{border-color: |
| - | .mpt-mc-opt.wrong{border-color: | + | .mpt-mc-opt.wrong{border-color: |
| .mpt-mc-opt: | .mpt-mc-opt: | ||
| - | .mpt-chat-area{display: | ||
| - | .mpt-bubble-ai{padding: | ||
| - | .mpt-bubble-user{padding: | ||
| - | .mpt-sugg{display: | ||
| - | .mpt-sugg: | ||
| .mpt-stat-num{font-size: | .mpt-stat-num{font-size: | ||
| - | .mpt-stat-label{font-size: | + | .mpt-stat-label{font-size: |
| - | .mpt-spinner{width:16px;height:16px;border:2px solid var(--color-border-tertiary);border-top-color:currentColor;border-radius:50%;animation:mpt-spin 0.7s linear infinite;display:inline-block;vertical-align:middle} | + | .mpt-textarea{width:100%;padding:10px 12px;border:0.5px solid rgba(0,0,0,0.25);border-radius: |
| - | @keyframes mpt-spin{to{transform:rotate(360deg)}} | + | .mpt-check-item{display: |
| - | .mpt-theme-pill{display:inline-flex; | + | .mpt-check-item: |
| - | .mpt-mode-card{cursor:pointer; | + | .mpt-check-box{width: |
| - | .mpt-mode-card:hover{border-color: | + | .mpt-check-box.checked{background:#eaf3de;border-color:# |
| + | .mpt-phase-label{font-size: | ||
| </ | </ | ||
| <div id=" | <div id=" | ||
| - | <h2 style=" | ||
| <div id=" | <div id=" | ||
| <div style=" | <div style=" | ||
| - | <div style=" | + | <div style=" |
| - | <i class=" | + | |
| - | | + | |
| <div> | <div> | ||
| - | <p style=" | + | <p style=" |
| <p style=" | <p style=" | ||
| </ | </ | ||
| </ | </ | ||
| - | |||
| <div style=" | <div style=" | ||
| - | <div style=" | + | <div style=" |
| - | | + | <div style=" |
| - | | + | <div style=" |
| - | | + | |
| - | <div style=" | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | <div style=" | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| </ | </ | ||
| - | + | | |
| - | | + | |
| <div style=" | <div style=" | ||
| - | <button onclick=" | + | <button onclick=" |
| - | <i class=" | + | <span style=" |
| < | < | ||
| </ | </ | ||
| - | <button onclick=" | + | <button onclick=" |
| - | <i class=" | + | <span style=" |
| < | < | ||
| </ | </ | ||
| - | <button onclick=" | + | <button onclick=" |
| - | <i class=" | + | <span style=" |
| < | < | ||
| </ | </ | ||
| - | <button onclick=" | + | <button onclick=" |
| - | <i class=" | + | <span style=" |
| < | < | ||
| </ | </ | ||
| Zeile 109: | Zeile 92: | ||
| <div id=" | <div id=" | ||
| - | <button class=" | + | <button class=" |
| <div id=" | <div id=" | ||
| - | <p style=" | + | <p style=" |
| <div style=" | <div style=" | ||
| - | <div class=" | + | <div class=" |
| - | <div id=" | + | <div id=" |
| <p style=" | <p style=" | ||
| - | <p style=" | + | <p style=" |
| </ | </ | ||
| - | <div class=" | + | <div class=" |
| - | <div id=" | + | <div id=" |
| <p style=" | <p style=" | ||
| - | <p style=" | + | <p style=" |
| </ | </ | ||
| </ | </ | ||
| Zeile 128: | Zeile 111: | ||
| <div id=" | <div id=" | ||
| <div style=" | <div style=" | ||
| - | <button class=" | + | <button class=" |
| - | <span id=" | + | <span id=" |
| </ | </ | ||
| <div class=" | <div class=" | ||
| <div class=" | <div class=" | ||
| - | | + | <div id=" |
| - | <span class=" | + | <p id=" |
| - | </ | + | <div id=" |
| - | <div id=" | + | <div id=" |
| - | | + | |
| - | <p id=" | + | |
| - | <div id=" | + | |
| - | <div id=" | + | |
| - | | + | |
| </ | </ | ||
| <div style=" | <div style=" | ||
| - | <button id=" | + | <button id=" |
| </ | </ | ||
| </ | </ | ||
| Zeile 150: | Zeile 128: | ||
| <div id=" | <div id=" | ||
| <div style=" | <div style=" | ||
| - | <button class=" | + | <button class=" |
| <div id=" | <div id=" | ||
| </ | </ | ||
| - | < | + | <div id=" |
| - | <p style=" | + | |
| - | <p id=" | + | |
| - | | + | |
| - | <div id=" | + | |
| - | <div id=" | + | |
| - | <div style=" | + | |
| - | <input id=" | + | |
| - | <button id=" | + | |
| - | </ | + | |
| - | <p style=" | + | |
| </ | </ | ||
| <div id=" | <div id=" | ||
| <div style=" | <div style=" | ||
| - | <div id=" | + | <div id=" |
| <p style=" | <p style=" | ||
| - | <p id=" | + | <p id=" |
| </ | </ | ||
| <div style=" | <div style=" | ||
| - | <div style=" | + | <div style=" |
| - | | + | <div style=" |
| - | | + | <div style=" |
| - | <div style=" | + | |
| - | | + | |
| - | | + | |
| - | <div style=" | + | |
| - | | + | |
| - | | + | |
| </ | </ | ||
| <div style=" | <div style=" | ||
| - | <button id=" | + | <button id=" |
| - | <button class=" | + | <button class=" |
| </ | </ | ||
| </ | </ | ||
| Zeile 191: | Zeile 153: | ||
| < | < | ||
| - | const T = { | + | const THEMES={ |
| - | markt: | + | markt: |
| - | scenario:' | + | politik: |
| - | talkPrompt:' | + | romantik: |
| - | suggs: | + | film: |
| - | politik: | + | |
| - | scenario:' | + | |
| - | talkPrompt:' | + | |
| - | suggs: | + | |
| - | romantik: | + | |
| - | scenario:' | + | |
| - | talkPrompt:' | + | |
| - | suggs: | + | |
| - | film: | + | |
| - | scenario:' | + | |
| - | talkPrompt:' | + | |
| - | suggs: | + | |
| }; | }; | ||
| - | const SYS_MC=`Du bist Musik-Prüfungstrainer für Klasse 10 (Realschulabschluss). Erstelle Multiple-Choice-Fragen. | + | const MC={ |
| - | Gib NUR valides JSON zurück, kein Markdown, keine Erklärung. | + | |
| - | Format: {" | + | |
| - | Regeln: genau 5 Fragen, 4 Optionen, correct=Index 0-3, auf Deutsch, Niveau Klasse 10. | + | |
| - | KEINE Fragen zu: Vorwärts, Moorsoldaten, | + | |
| - | Nutze stattdessen andere Beispiele aus der Musikgeschichte. Distraktoren sollen plausibel sein.`; | + | |
| - | + | ||
| - | const SYS_TALK=`Du bist ein geduldiger Musiklehrer, | + | |
| - | Verhalte dich wie ein echter Prüfer: stelle offene Fragen, gib nach jeder Antwort kurzes Feedback (was gut war, was fehlt), hake nach. | + | |
| - | Antworte auf Deutsch. Maximal 4-5 Sätze pro Antwort. Nach 7 Gesprächszügen: | + | |
| - | Keine direkten Aufgaben oder Lieder aus dem Unterrichtsmaterial – übertrage die Denkstruktur auf neue Kontexte.`; | + | |
| - | + | ||
| - | const FALLBACK={ | + | |
| markt:[ | markt:[ | ||
| - | {q:' | + | {q:' |
| - | {q:' | + | {q:' |
| - | {q:' | + | {q:' |
| - | {q:' | + | {q:' |
| - | {q:'Welcher Effekt | + | {q:'Welche Schwierigkeit |
| ], | ], | ||
| politik:[ | politik:[ | ||
| - | {q:' | + | {q:' |
| - | {q:' | + | {q:' |
| - | {q:' | + | {q:' |
| - | {q:' | + | {q:' |
| - | {q:' | + | {q:' |
| ], | ], | ||
| romantik:[ | romantik:[ | ||
| - | {q:' | + | {q:' |
| - | {q:' | + | {q:' |
| - | {q:' | + | {q:' |
| - | {q:' | + | {q:' |
| - | {q:'Welches Merkmal kennzeichnet ein Virtuosenkonzert | + | {q:'Was unterscheidet das Virtuosenkonzert |
| ], | ], | ||
| film:[ | film:[ | ||
| - | {q:' | + | {q:' |
| - | {q:' | + | {q:' |
| - | {q:' | + | {q:' |
| - | {q:' | + | {q:' |
| - | {q:' | + | {q:' |
| ] | ] | ||
| }; | }; | ||
| - | const st={theme:null,qs:[],qi:0,answered:false,tot:0,cor:0,sTot:0,sCor:0,history:[],turns:0}; | + | const TALK={ |
| + | markt:{ | ||
| + | scenario:' | ||
| + | steps:[ | ||
| + | {phase:' | ||
| + | | ||
| + | {phase:' | ||
| + | | ||
| + | {phase:' | ||
| + | | ||
| + | ] | ||
| + | }, | ||
| + | politik:{ | ||
| + | scenario:' | ||
| + | steps:[ | ||
| + | {phase:' | ||
| + | | ||
| + | {phase:' | ||
| + | | ||
| + | {phase:' | ||
| + | | ||
| + | ] | ||
| + | }, | ||
| + | romantik: | ||
| + | scenario:' | ||
| + | steps:[ | ||
| + | {phase:' | ||
| + | | ||
| + | {phase:' | ||
| + | | ||
| + | {phase:' | ||
| + | | ||
| + | ] | ||
| + | }, | ||
| + | film:{ | ||
| + | scenario:' | ||
| + | steps:[ | ||
| + | {phase:' | ||
| + | | ||
| + | {phase:' | ||
| + | | ||
| + | {phase:' | ||
| + | | ||
| + | ] | ||
| + | } | ||
| + | }; | ||
| - | function show(id){[' | + | const st={theme: |
| - | function pill(el,theme){const | + | function show(id){[' |
| - | + | function pill(el,t){const | |
| - | function colorBtn(el, | + | |
| const A={ | const A={ | ||
| home(){show(' | home(){show(' | ||
| - | theme(t){st.theme=t; | + | theme(t){ |
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| toMode(){show(' | toMode(){show(' | ||
| - | | + | startMC(){ |
| - | renderQ(){const q=st.qs[st.qi]; | + | const qs=[...MC[st.theme]].sort(()=> |
| - | pick(i){if(st.answered)return; | + | st.qs=qs; |
| + | const th=THEMES[st.theme]; | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | show(' | ||
| + | | ||
| + | renderQ(){ | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | pick(i){ | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| next(){st.qi++; | next(){st.qi++; | ||
| - | showRes(){const pct=st.sTot> | + | showRes(){ |
| - | | + | |
| - | startTalk(){st.history=[];st.turns=0;const th=T[st.theme]; | + | |
| - | async talkCall(msg,init){if(!init){const b=document.createElement(' | + | |
| - | | + | |
| - | | + | |
| + | | ||
| + | | ||
| + | | ||
| + | }, | ||
| + | startTalk(){ | ||
| + | | ||
| + | | ||
| + | show(' | ||
| + | }, | ||
| + | renderTalkStep(){ | ||
| + | const data=st.talkData;const step=data.steps[st.talkStep]; | ||
| + | const th=THEMES[st.theme]; | ||
| + | const container=document.getElementById(' | ||
| + | container.innerHTML=''; | ||
| + | |||
| + | const scenarioEl=document.createElement('div'); | ||
| + | scenarioEl.className='mpt-card';scenarioEl.style.marginBottom=' | ||
| + | scenarioEl.innerHTML=`< | ||
| + | | ||
| + | |||
| + | | ||
| + | stepEl.className=' | ||
| + | stepEl.innerHTML=` | ||
| + | <p class=" | ||
| + | <p style=" | ||
| + | <p style=" | ||
| + | < | ||
| + | <div style=" | ||
| + | <button onclick="A.showSolution()" style=" | ||
| + | </ | ||
| + | <div id=" | ||
| + | <div style=" | ||
| + | <p class="mpt-phase-label"> | ||
| + | ${step.solution.map((s, | ||
| + | | ||
| + | <div class="mpt-check-box" | ||
| + | <span>${s}</ | ||
| + | </ | ||
| + | </ | ||
| + | <div style=" | ||
| + | ${st.talkStep< | ||
| + | ? | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | </ | ||
| + | container.appendChild(stepEl); | ||
| + | |||
| + | | ||
| + | prog.innerHTML=`<div style=" | ||
| + | container.appendChild(prog); | ||
| + | |||
| + | const checkboxes=container.querySelectorAll('.mpt-check-box'); | ||
| + | checkboxes.forEach(cb=>{cb.style.color=' | ||
| + | | ||
| + | | ||
| + | | ||
| + | if(cb.classList.contains(' | ||
| + | else{cb.classList.add('checked');cb.style.color='#27500a'} | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | nextTalkStep(){st.talkStep++;A.renderTalkStep()} | ||
| }; | }; | ||
| A.home(); | A.home(); | ||
| </ | </ | ||
| + | <div style=" | ||
| + | Made with <a href=" | ||
| + | by <a href=" | ||
| + | </ | ||
| </ | </ | ||
| </ | </ | ||
tools/pruefung-regelschule.1779009844.txt.gz · Zuletzt geändert: von Eric Weber
